From e1359ace86cd76c1073d29563eddecd9afda1b50 Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 15:23:56 +0200 Subject: [PATCH 1/6] refactor platform dependant code --- main.cpp | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/main.cpp b/main.cpp index 38db1c5d..73a149a7 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,6 +78,19 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt int main(int argc, char *argv[]) { + // 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 + + Monero::Utils::onStartup(); // // Enable high DPI scaling on windows & linux //#if !defined(Q_OS_ANDROID) && QT_VERSION >= 0x050600 @@ -92,9 +110,9 @@ int main(int argc, char *argv[]) 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); @@ -169,7 +187,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 +194,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,25 +204,11 @@ 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); From 400c385a5c309ce468c746c1e52e66e0d380f276 Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 15:26:54 +0200 Subject: [PATCH 2/6] add minimal cmdline parser --- main.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 73a149a7..3f656042 100644 --- a/main.cpp +++ b/main.cpp @@ -90,6 +90,8 @@ int main(int argc, char *argv[]) bool isWindows = true; #endif + // disable "QApplication: invalid style override passed" warning + if (isDesktop) putenv((char*)"QT_STYLE_OVERRIDE=fusion"); Monero::Utils::onStartup(); // // Enable high DPI scaling on windows & linux @@ -104,8 +106,6 @@ int main(int argc, char *argv[]) MainApp app(argc, argv); - qDebug() << "app startd"; - app.setApplicationName("monero-gui"); app.setOrganizationDomain("getmonero.org"); app.setOrganizationName("monero-project"); @@ -117,6 +117,12 @@ int main(int argc, char *argv[]) filter *eventFilter = new filter; app.installEventFilter(eventFilter); + QCommandLineParser parser; + parser.addHelpOption(); + parser.process(app); + + qDebug() << "app startd"; + // registering types for QML qmlRegisterType("moneroComponents.Clipboard", 1, 0, "Clipboard"); From ffeecb62340fa1032274432648005ad2c79a5462 Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 15:29:17 +0200 Subject: [PATCH 3/6] move monero stuff after app constructor + cmdline parser --- main.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index 3f656042..cb55ab29 100644 --- a/main.cpp +++ b/main.cpp @@ -93,17 +93,12 @@ int main(int argc, char *argv[]) // disable "QApplication: invalid style override passed" warning if (isDesktop) putenv((char*)"QT_STYLE_OVERRIDE=fusion"); - Monero::Utils::onStartup(); // // 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); app.setApplicationName("monero-gui"); @@ -121,6 +116,12 @@ int main(int argc, char *argv[]) parser.addHelpOption(); parser.process(app); + Monero::Utils::onStartup(); + + // Log settings + Monero::Wallet::init(argv[0], "monero-wallet-gui"); +// qInstallMessageHandler(messageHandler); + qDebug() << "app startd"; // registering types for QML From 1b07cdad1ccd81aa0f64c2024036aa900cb0d860 Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 15:33:23 +0200 Subject: [PATCH 4/6] move screen defs earlier in main function & fix width and height --- main.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/main.cpp b/main.cpp index cb55ab29..a2b576a5 100644 --- a/main.cpp +++ b/main.cpp @@ -124,6 +124,20 @@ int main(int argc, char *argv[]) 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"); @@ -221,17 +235,6 @@ int main(int argc, char *argv[]) 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 @@ -240,9 +243,6 @@ 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()) { QString moneroAccountsDir = moneroAccountsRootDir.at(0) + "/Monero/wallets"; From 74233bf459e668a5e720dbd3a9eed2991c2bc17b Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 15:36:08 +0200 Subject: [PATCH 5/6] force -platform xcb on linux --- main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main.cpp b/main.cpp index a2b576a5..6dbef3f2 100644 --- a/main.cpp +++ b/main.cpp @@ -92,6 +92,10 @@ int main(int argc, char *argv[]) // 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 From 59a4afef3c65caa5f804f32e41bbe6a52e881a1d Mon Sep 17 00:00:00 2001 From: pazos Date: Wed, 25 Apr 2018 17:11:19 +0200 Subject: [PATCH 6/6] consistency in if/else statements and MACROS --- main.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/main.cpp b/main.cpp index 6dbef3f2..14097164 100644 --- a/main.cpp +++ b/main.cpp @@ -79,7 +79,7 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt int main(int argc, char *argv[]) { // platform dependant settings -#if ! defined(Q_OS_ANDROID) && ! defined(Q_OS_IOS) +#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) bool isDesktop = true; #elif defined(Q_OS_ANDROID) bool isAndroid = true; @@ -229,7 +229,7 @@ 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 -#if defined (Q_OS_WIN) || defined(Q_OS_IOS) +#if defined(Q_OS_WIN) || defined(Q_OS_IOS) QStringList moneroAccountsRootDir = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation); #else QStringList moneroAccountsRootDir = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); @@ -248,7 +248,8 @@ int main(int argc, char *argv[]) #endif - if (!moneroAccountsRootDir.empty()) { + if (!moneroAccountsRootDir.empty()) + { QString moneroAccountsDir = moneroAccountsRootDir.at(0) + "/Monero/wallets"; engine.rootContext()->setContextProperty("moneroAccountsDir", moneroAccountsDir); } @@ -256,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()); @@ -288,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)));