diff --git a/main.cpp b/main.cpp index 38db1c5d..14097164 100644 --- a/main.cpp +++ b/main.cpp @@ -65,6 +65,11 @@ #include "QrCodeScanner.h" #endif +bool isIOS = false; +bool isAndroid = false; +bool isWindows = false; +bool isDesktop = false; + void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { // Send all message types to logger @@ -73,32 +78,70 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt int main(int argc, char *argv[]) { - Monero::Utils::onStartup(); + // platform dependant settings +#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) + bool isDesktop = true; +#elif defined(Q_OS_ANDROID) + bool isAndroid = true; +#elif defined(Q_OS_IOS) + bool isIOS = true; +#endif +#ifdef Q_OS_WIN + bool isWindows = true; +#endif + + // disable "QApplication: invalid style override passed" warning + if (isDesktop) putenv((char*)"QT_STYLE_OVERRIDE=fusion"); +#ifdef Q_OS_LINUX + // force platform xcb + if (isDesktop) putenv((char*)"QT_QPA_PLATFORM=xcb"); +#endif + // // Enable high DPI scaling on windows & linux //#if !defined(Q_OS_ANDROID) && QT_VERSION >= 0x050600 // QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // qDebug() << "High DPI auto scaling - enabled"; //#endif - // Log settings - Monero::Wallet::init(argv[0], "monero-wallet-gui"); -// qInstallMessageHandler(messageHandler); - MainApp app(argc, argv); - qDebug() << "app startd"; - app.setApplicationName("monero-gui"); app.setOrganizationDomain("getmonero.org"); app.setOrganizationName("monero-project"); - #if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) - app.setWindowIcon(QIcon(":/images/appicon.ico")); - #endif +#if defined(Q_OS_LINUX) + if (isDesktop) app.setWindowIcon(QIcon(":/images/appicon.ico")); +#endif filter *eventFilter = new filter; app.installEventFilter(eventFilter); + QCommandLineParser parser; + parser.addHelpOption(); + parser.process(app); + + Monero::Utils::onStartup(); + + // Log settings + Monero::Wallet::init(argv[0], "monero-wallet-gui"); +// qInstallMessageHandler(messageHandler); + + qDebug() << "app startd"; + + // screen settings + // Mobile is designed on 128dpi + qreal ref_dpi = 128; + QRect geo = QApplication::desktop()->availableGeometry(); + QRect rect = QGuiApplication::primaryScreen()->geometry(); + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); + qreal physicalDpi = QGuiApplication::primaryScreen()->physicalDotsPerInch(); + qreal calculated_ratio = physicalDpi/ref_dpi; + + qWarning().nospace() << "Qt:" << QT_VERSION_STR << " | screen: " << rect.width() + << "x" << rect.height() << " - dpi: " << dpi << " - ratio:" + << calculated_ratio; + + // registering types for QML qmlRegisterType("moneroComponents.Clipboard", 1, 0, "Clipboard"); @@ -169,7 +212,6 @@ int main(int argc, char *argv[]) engine.rootContext()->setContextProperty("translationManager", TranslationManager::instance()); engine.addImageProvider(QLatin1String("qrcode"), new QRCodeImageProvider()); - const QStringList arguments = QCoreApplication::arguments(); engine.rootContext()->setContextProperty("mainApp", &app); @@ -177,6 +219,7 @@ int main(int argc, char *argv[]) // Exclude daemon manager from IOS #ifndef Q_OS_IOS + const QStringList arguments = QCoreApplication::arguments(); DaemonManager * daemonManager = DaemonManager::instance(&arguments); engine.rootContext()->setContextProperty("daemonManager", daemonManager); #endif @@ -186,41 +229,16 @@ int main(int argc, char *argv[]) // to save the wallet file (.keys, .bin), they have to be user-accessible for // backups - I reckon we save that in My Documents\Monero Accounts\ on // Windows, ~/Monero Accounts/ on nix / osx - bool isWindows = false; - bool isIOS = false; - bool isMac = false; - bool isAndroid = false; -#ifdef Q_OS_WIN - isWindows = true; +#if defined(Q_OS_WIN) || defined(Q_OS_IOS) QStringList moneroAccountsRootDir = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation); -#elif defined(Q_OS_IOS) - isIOS = true; - QStringList moneroAccountsRootDir = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation); -#elif defined(Q_OS_UNIX) +#else QStringList moneroAccountsRootDir = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); #endif -#ifdef Q_OS_MAC - isMac = true; -#endif -#ifdef Q_OS_ANDROID - isAndroid = true; -#endif engine.rootContext()->setContextProperty("isWindows", isWindows); engine.rootContext()->setContextProperty("isIOS", isIOS); engine.rootContext()->setContextProperty("isAndroid", isAndroid); - // screen settings - // Mobile is designed on 128dpi - qreal ref_dpi = 128; - QRect geo = QApplication::desktop()->availableGeometry(); - QRect rect = QGuiApplication::primaryScreen()->geometry(); - qreal height = qMax(rect.width(), rect.height()); - qreal width = qMin(rect.width(), rect.height()); - qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInch(); - qreal physicalDpi = QGuiApplication::primaryScreen()->physicalDotsPerInch(); - qreal calculated_ratio = physicalDpi/ref_dpi; - engine.rootContext()->setContextProperty("screenWidth", geo.width()); engine.rootContext()->setContextProperty("screenHeight", geo.height()); #ifdef Q_OS_ANDROID @@ -229,11 +247,9 @@ int main(int argc, char *argv[]) engine.rootContext()->setContextProperty("scaleRatio", 1); #endif - qWarning().nospace() << "Qt:" << QT_VERSION_STR << " | screen: " << width - << "x" << height << " - dpi: " << dpi << " - ratio:" - << calculated_ratio; - if (!moneroAccountsRootDir.empty()) { + if (!moneroAccountsRootDir.empty()) + { QString moneroAccountsDir = moneroAccountsRootDir.at(0) + "/Monero/wallets"; engine.rootContext()->setContextProperty("moneroAccountsDir", moneroAccountsDir); } @@ -241,12 +257,10 @@ int main(int argc, char *argv[]) // Get default account name QString accountName = qgetenv("USER"); // mac/linux - if (accountName.isEmpty()){ + if (accountName.isEmpty()) accountName = qgetenv("USERNAME"); // Windows - } - if (accountName.isEmpty()) { + if (accountName.isEmpty()) accountName = "My monero Account"; - } engine.rootContext()->setContextProperty("defaultAccountName", accountName); engine.rootContext()->setContextProperty("applicationDirectory", QApplication::applicationDirPath()); @@ -273,14 +287,15 @@ int main(int argc, char *argv[]) #ifdef WITH_SCANNER QObject *qmlCamera = rootObject->findChild("qrCameraQML"); - if( qmlCamera ){ + if (qmlCamera) + { qDebug() << "QrCodeScanner : object found"; QCamera *camera_ = qvariant_cast(qmlCamera->property("mediaObject")); QObject *qmlFinder = rootObject->findChild("QrFinder"); qobject_cast(qmlFinder)->setSource(camera_); - } else { - qDebug() << "QrCodeScanner : something went wrong !"; } + else + qDebug() << "QrCodeScanner : something went wrong !"; #endif QObject::connect(eventFilter, SIGNAL(sequencePressed(QVariant,QVariant)), rootObject, SLOT(sequencePressed(QVariant,QVariant)));