diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index c32d35dd0850186bee6b9b84a1e2e001952cb3a0..f10fe697f9a471f5057c9ee2f3bf482708fd5ce0 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -154,6 +154,9 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) , _styleIsDark(true) , _fakeMobile(false) , _useNewMissionEditor(false) +#ifdef QT_DEBUG + , _testHighDPI(false) +#endif { Q_ASSERT(_app == NULL); _app = this; @@ -172,6 +175,9 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) { "--clear-settings", &fClearSettingsOptions, QString() }, { "--full-logging", &fullLogging, QString() }, { "--fake-mobile", &_fakeMobile, QString() }, +#ifdef QT_DEBUG + { "--test-high-dpi", &_testHighDPI, QString() }, +#endif // Add additional command line option flags here }; diff --git a/src/QGCApplication.h b/src/QGCApplication.h index 7097e7d67c6440be3206446e9fe2e48a04faeaea..5e37a55cfce2ac5d26bb4de4e3b2d73a397f195d 100644 --- a/src/QGCApplication.h +++ b/src/QGCApplication.h @@ -109,6 +109,10 @@ public: bool useNewMissionEditor(void) { return _useNewMissionEditor; } void setUseNewMissionEditor(bool use); +#ifdef QT_DEBUG + bool testHighDPI(void) { return _testHighDPI; } +#endif + public slots: /// You can connect to this slot to show an information message box from a different thread. void informationMessageBoxOnMainThread(const QString& title, const QString& msg); @@ -179,6 +183,10 @@ private: bool _fakeMobile; ///< true: Fake ui into displaying mobile interface bool _useNewMissionEditor; ///< true: Use new Mission Editor + +#ifdef QT_DEBUG + bool _testHighDPI; ///< true: double fonts sizes for simulating high dpi devices +#endif /// Unit Test have access to creating and destroying singletons friend class UnitTest; diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 5f6d59b4bf5978648c5d02e30c697968d2c4be18..c8b5682a1259df2099c555b74857a4f977c29b81 100644 --- a/src/QmlControls/ScreenTools.qml +++ b/src/QmlControls/ScreenTools.qml @@ -8,9 +8,9 @@ import QGroundControl.ScreenToolsController 1.0 Item { signal repaintRequested - readonly property real defaultFontPixelSize: _textMeasure.contentHeight * ScreenToolsController.defaultFontPixelSizeRatio + readonly property real defaultFontPixelSize: _textMeasure.fontHeight * ScreenToolsController.defaultFontPixelSizeRatio readonly property real defaultFontPixelHeight: defaultFontPixelSize - readonly property real defaultFontPixelWidth: _textMeasure.contentWidth + readonly property real defaultFontPixelWidth: _textMeasure.fontWidth readonly property real smallFontPixelSize: defaultFontPixelSize * ScreenToolsController.smallFontPixelSizeRatio readonly property real mediumFontPixelSize: defaultFontPixelSize * ScreenToolsController.mediumFontPixelSizeRatio readonly property real largeFontPixelSize: defaultFontPixelSize * ScreenToolsController.largeFontPixelSizeRatio @@ -28,8 +28,11 @@ Item { } Text { - id: _textMeasure - text: "X" + id: _textMeasure + text: "X" + + property real fontWidth: contentWidth * (ScreenToolsController.testHighDPI ? 2 : 1) + property real fontHeight: contentHeight * (ScreenToolsController.testHighDPI ? 2 : 1) } Connections { diff --git a/src/QmlControls/ScreenToolsController.cc b/src/QmlControls/ScreenToolsController.cc index dcf88ca2fdaca1a3ce5c480389f9ccad6f1c95a4..3e5244cbcc9d759798d86891ff3d307588436f15 100644 --- a/src/QmlControls/ScreenToolsController.cc +++ b/src/QmlControls/ScreenToolsController.cc @@ -59,6 +59,14 @@ double ScreenToolsController::getQmlDefaultFontPixelSize(void) qmlWidgetHolder.setSource(QUrl::fromUserInput("qrc:/qml/ScreenToolsFontQuery.qml")); } + + double qmlDefaultFontPixelSize = _qmlDefaultFontPixelSize; + +#ifdef QT_DEBUG + if (qgcApp()->testHighDPI()) { + qmlDefaultFontPixelSize *= 2; + } +#endif - return _qmlDefaultFontPixelSize; + return qmlDefaultFontPixelSize; } diff --git a/src/QmlControls/ScreenToolsController.h b/src/QmlControls/ScreenToolsController.h index aada76ff268cb5a98000dec06ddb0f31247c3455..c4ad0c913ca4e6615c264ed64b107abdc9c87980 100644 --- a/src/QmlControls/ScreenToolsController.h +++ b/src/QmlControls/ScreenToolsController.h @@ -47,9 +47,10 @@ class ScreenToolsController : public QQuickItem public: ScreenToolsController(); - Q_PROPERTY(bool isAndroid READ isAndroid CONSTANT) - Q_PROPERTY(bool isiOS READ isiOS CONSTANT) - Q_PROPERTY(bool isMobile READ isMobile CONSTANT) + Q_PROPERTY(bool isAndroid READ isAndroid CONSTANT) + Q_PROPERTY(bool isiOS READ isiOS CONSTANT) + Q_PROPERTY(bool isMobile READ isMobile CONSTANT) + Q_PROPERTY(bool testHighDPI READ testHighDPI CONSTANT) //! Used to trigger a \c Canvas element repaint. /*! @@ -112,6 +113,12 @@ public: bool isiOS () { return false; } bool isMobile () { return qgcApp()->fakeMobile(); } #endif + +#ifdef QT_DEBUG + bool testHighDPI(void) { return qgcApp()->testHighDPI(); } +#else + bool testHighDPI(void) { return false; } +#endif signals: void repaintRequested(void);