diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.qml b/src/AutoPilotPlugins/PX4/PowerComponent.qml index 592812b2fedd59f841d4124ab19f6580fa792c0d..5b75d31350ae6bb092ad9ad077484ba21d5ad135 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponent.qml +++ b/src/AutoPilotPlugins/PX4/PowerComponent.qml @@ -197,12 +197,10 @@ Rectangle { text: "Battery Max:" color: palette.text width: 80 - font.pointSize: screenTools.dpiAdjustedPointSize(12); } QGCLabel { text: (battNumCells.value * battHighVolt.value).toFixed(1) + ' V' color: palette.text - font.pointSize: screenTools.dpiAdjustedPointSize(12); } } Row { @@ -211,12 +209,10 @@ Rectangle { text: "Battery Min:" color: palette.text width: 80 - font.pointSize: screenTools.dpiAdjustedPointSize(12); } QGCLabel { text: (battNumCells.value * battLowVolt.value).toFixed(1) + ' V' color: palette.text - font.pointSize: screenTools.dpiAdjustedPointSize(12); } } } diff --git a/src/QmlControls/QGCButton.qml b/src/QmlControls/QGCButton.qml index 19a76ffe31eedfa7a1b5c14ef4488228502ab687..8a5a386d992cea14101f81b962f8e4aa028b4b61 100644 --- a/src/QmlControls/QGCButton.qml +++ b/src/QmlControls/QGCButton.qml @@ -103,10 +103,13 @@ Button { } Text { - id: text - renderType: Text.NativeRendering + id: text + renderType: Text.NativeRendering + text: control.text + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize + anchors.verticalCenter: parent.verticalCenter - text: control.text + color: __showHighlight ? control.__qgcPal.buttonHighlightText : (primary ? control.__qgcPal.primaryButtonText : control.__qgcPal.buttonText) diff --git a/src/QmlControls/QGCCheckBox.qml b/src/QmlControls/QGCCheckBox.qml index 356c4ddf0056b51c965b860ec953ef39c14d8c82..4ce79c923b5a9b815a17e46762bb41a2a2ba01ce 100644 --- a/src/QmlControls/QGCCheckBox.qml +++ b/src/QmlControls/QGCCheckBox.qml @@ -25,9 +25,12 @@ CheckBox { opacity: 0.6 } Text { - id: text - text: control.text + id: text + text: control.text + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize + anchors.centerIn: parent + color: control.__qgcPal.text } } diff --git a/src/QmlControls/QGCComboBox.qml b/src/QmlControls/QGCComboBox.qml index a8f3555c3545579d00078a8da14b7351380ab58a..7624bef5a1afdf52c7c4180d4995ee03d46d8046 100644 --- a/src/QmlControls/QGCComboBox.qml +++ b/src/QmlControls/QGCComboBox.qml @@ -11,6 +11,7 @@ ComboBox { property bool __showHighlight: pressed | hovered style: ComboBoxStyle { + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize textColor: __showHighlight ? control.__qgcPal.buttonHighlightText : control.__qgcPal.buttonText diff --git a/src/QmlControls/QGCLabel.qml b/src/QmlControls/QGCLabel.qml index 2afa5cda90cc9e8d88f4287a46ba11252ad09d30..bb09625686bf239fac53136cfec0f53adbf4ed85 100644 --- a/src/QmlControls/QGCLabel.qml +++ b/src/QmlControls/QGCLabel.qml @@ -5,8 +5,10 @@ import QtQuick.Controls.Styles 1.2 import QGroundControl.Palette 1.0 Text { - property var __palette: QGCPalette { colorGroupEnabled: enabled } + QGCPalette { id: __qgcPal; colorGroupEnabled: enabled } + property bool enabled: true - color: __palette.text + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize + color: __qgcPal.text } diff --git a/src/QmlControls/QGCRadioButton.qml b/src/QmlControls/QGCRadioButton.qml index f1f9b8656f2c4dcfa286f743829f7e848924b83a..ac23c53d79b9c2bdac6db93ebeb4c5fdccffb69e 100644 --- a/src/QmlControls/QGCRadioButton.qml +++ b/src/QmlControls/QGCRadioButton.qml @@ -25,9 +25,12 @@ RadioButton { opacity: 0.6 } Text { - id: text - text: control.text + id: text + text: control.text + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize + anchors.centerIn: parent + color: control.__qgcPal.text } } diff --git a/src/QmlControls/QGCTextField.qml b/src/QmlControls/QGCTextField.qml index 0b5dec2fcf13e069fb61ac61f9fb94c965ccdbd6..cc10fedcb08e8d63e642f7fdaa0eafafac1776ee 100644 --- a/src/QmlControls/QGCTextField.qml +++ b/src/QmlControls/QGCTextField.qml @@ -49,6 +49,8 @@ TextField { width: unitsLabelWidthGenerator.width text: control.unitsLabel + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize + color: control.textColor visible: control.showUnits } diff --git a/src/QmlControls/QGCToolBarButton.qml b/src/QmlControls/QGCToolBarButton.qml index 0bfa181400d566c7d8115951b9773bd49b698e02..e4b5ff1573703c4b1d2bb1a45da30e49940d7399 100644 --- a/src/QmlControls/QGCToolBarButton.qml +++ b/src/QmlControls/QGCToolBarButton.qml @@ -53,6 +53,7 @@ QGCButton { } label: Label { text: button.text + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter color: showHighlight ? __qgcPal.buttonHighlightText : (button.checked ? __qgcPal.primaryButtonText : __qgcPal.buttonText) diff --git a/src/QmlControls/ScreenTools.cc b/src/QmlControls/ScreenTools.cc index dde82a1e74eacf55ad4a6291959b80c0f9899164..b7077342575f0f7fddad26ddf64c7b7c7fc7cb8d 100644 --- a/src/QmlControls/ScreenTools.cc +++ b/src/QmlControls/ScreenTools.cc @@ -27,26 +27,45 @@ #include "ScreenTools.h" #include "MainWindow.h" +#include +#include + +bool ScreenTools::_dpiFactorSet = false; +double ScreenTools::_dotsPerInch = 96.0; +double ScreenTools::_dpiFactor = 72.0 / 96.0; + ScreenTools::ScreenTools() - : _dotsPerInch(96.0) - , _dpiFactor( 72.0 / 96.0) { - // Get screen DPI to manage font sizes on different platforms - QScreen *srn = QGuiApplication::primaryScreen(); - if(srn && srn->logicalDotsPerInch() > 50.0) { - _dotsPerInch = (double)srn->logicalDotsPerInch(); // Font point sizes are based on Mac 72dpi - _dpiFactor = 72.0 / _dotsPerInch; - } else { - qWarning() << "System not reporting logical DPI, which is used to compute the appropriate font size. The default being used is 96dpi. If the text within buttons and UI elements are too big or too small, that's the reason."; - } connect(MainWindow::instance(), &MainWindow::repaintCanvas, this, &ScreenTools::_updateCanvas); } qreal ScreenTools::dpiAdjustedPointSize(qreal pointSize) { + return dpiAdjustedPointSize_s(pointSize); +} + +qreal ScreenTools::dpiAdjustedPointSize_s(qreal pointSize) +{ + _setDpiFactor(); return pointSize * _dpiFactor; } +void ScreenTools::_setDpiFactor(void) +{ + if (!_dpiFactorSet) { + _dpiFactorSet = true; + + // Get screen DPI to manage font sizes on different platforms + QScreen *srn = QGuiApplication::primaryScreen(); + if(srn && srn->logicalDotsPerInch() > 50.0) { + _dotsPerInch = (double)srn->logicalDotsPerInch(); // Font point sizes are based on Mac 72dpi + _dpiFactor = 72.0 / _dotsPerInch; + } else { + qWarning() << "System not reporting logical DPI, which is used to compute the appropriate font size. The default being used is 96dpi. If the text within buttons and UI elements are too big or too small, that's the reason."; + } + } +} + void ScreenTools::_updateCanvas() { emit repaintRequestedChanged(); diff --git a/src/QmlControls/ScreenTools.h b/src/QmlControls/ScreenTools.h index 8365b9313f34fc395222d724fb569aa1d4a603bf..0f376f3357b02ebf4bbece0ec55cd2d8a689d42d 100644 --- a/src/QmlControls/ScreenTools.h +++ b/src/QmlControls/ScreenTools.h @@ -116,6 +116,9 @@ public: */ Q_INVOKABLE qreal dpiAdjustedPointSize(qreal pointSize); + /// Static version of dpiAdjustedPointSize of use in C++ code + static qreal dpiAdjustedPointSize_s(qreal pointSize); + double screenDPI () { return _dotsPerInch; } double dpiFactor () { return _dpiFactor; } int mouseX () { return QCursor::pos().x(); } @@ -129,9 +132,11 @@ private slots: void _updateCanvas(); private: - double _dotsPerInch; - double _dpiFactor; - + static void _setDpiFactor(void); + + static bool _dpiFactorSet; + static double _dotsPerInch; + static double _dpiFactor; }; #endif diff --git a/src/QmlControls/SubMenuButton.qml b/src/QmlControls/SubMenuButton.qml index 5282d3d6a4fe3bdc6036fb440d871a6048804799..f77168f10018904ae8f33eab30730e49bc65c470 100644 --- a/src/QmlControls/SubMenuButton.qml +++ b/src/QmlControls/SubMenuButton.qml @@ -39,7 +39,7 @@ Button { horizontalAlignment: TextEdit.AlignHCenter text: control.text - font.pixelSize: 12 + font.pointSize: __qgcPal.dpiAdjustedDefaultFontPointSize color: __showHighlight ? __qgcPal.buttonHighlightText : __qgcPal.buttonText Rectangle { diff --git a/src/QmlControls/VehicleRotationCal.qml b/src/QmlControls/VehicleRotationCal.qml index 847b5069aaf3bbfff10de1ee2a459c20f16f775d..47b172998d30ba7c34a032acb7d3adea920d213d 100644 --- a/src/QmlControls/VehicleRotationCal.qml +++ b/src/QmlControls/VehicleRotationCal.qml @@ -30,7 +30,7 @@ import QGroundControl.ScreenTools 1.0 Rectangle { property var __qgcPal: QGCPalette { colorGroupEnabled: enabled } - property ScreenTools screenTools: ScreenTools { } + property ScreenTools __screenTools: ScreenTools { } // Indicates whether calibration is valid for this control property bool calValid: false @@ -63,23 +63,23 @@ Rectangle { smooth: true } - Label { + QGCLabel { width: parent.width height: parent.height horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignBottom - font.pointSize: screenTools.dpiAdjustedPointSize(25); + font.pointSize: __screenTools.dpiAdjustedPointSize(25); font.bold: true color: "black" text: parent.calText } - Label { + QGCLabel { width: parent.width height: parent.height horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignBottom - font.pointSize: screenTools.dpiAdjustedPointSize(25); + font.pointSize: __screenTools.dpiAdjustedPointSize(25); color: calInProgress ? "yellow" : "white" text: parent.calText diff --git a/src/VehicleSetup/FirmwareUpgrade.qml b/src/VehicleSetup/FirmwareUpgrade.qml index 3315f46f631f2835dcbda12f30721b648a4fe16d..7906ce6222ffad5cd01437ddf3ecd521aecf81af 100644 --- a/src/VehicleSetup/FirmwareUpgrade.qml +++ b/src/VehicleSetup/FirmwareUpgrade.qml @@ -114,11 +114,15 @@ Rectangle { TextArea { id: statusTextArea - width: parent.width - height: 300 - readOnly: true - frameVisible: false - text: qsTr("Please disconnect all connections and unplug board from USB before selecting Upgrade.") + + width: parent.width + height: 300 + readOnly: true + frameVisible: false + font.pointSize: qgcPal.dpiAdjustedDefaultFontPointSize + + text: qsTr("Please disconnect all connections and unplug board from USB before selecting Upgrade.") + style: TextAreaStyle { textColor: qgcPal.text backgroundColor: qgcPal.windowShade diff --git a/src/VehicleSetup/VehicleSummary.qml b/src/VehicleSetup/VehicleSummary.qml index a7a81c4cc64843ec43b107e42cee181c1f32b70d..0c09791086b3ffa93489f7cf34ba18ff33924794 100644 --- a/src/VehicleSetup/VehicleSummary.qml +++ b/src/VehicleSetup/VehicleSummary.qml @@ -90,11 +90,10 @@ Rectangle { color: qgcPal.windowShadeDark // Title text - Text { + QGCLabel { anchors.fill: parent color: qgcPal.buttonText - font.pixelSize: 12 text: modelData.name.toUpperCase() verticalAlignment: TextEdit.AlignVCenter diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index b52ac3c2de56de90540a7b0f0b3652e59d2acfbe..61dafd1404c59d23e7c397a89facb0fe4091586e 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -238,7 +238,7 @@ Rectangle { anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right width: messages.width - messageIcon.width - Text { + QGCLabel { id: messageText text: (mainToolBar.messageCount > 0) ? mainToolBar.messageCount : '' font.pointSize: screenTools.dpiAdjustedPointSize(14); @@ -326,7 +326,7 @@ Rectangle { smooth: true } - Text { + QGCLabel { id: satelitteText text: (mainToolBar.satelliteCount > 0) ? mainToolBar.satelliteCount : '' font.pointSize: screenTools.dpiAdjustedPointSize(14); @@ -361,7 +361,7 @@ Rectangle { smooth: true } - Text { + QGCLabel { id: batteryText text: mainToolBar.batteryVoltage.toFixed(1) + ' V'; font.pointSize: screenTools.dpiAdjustedPointSize(14); @@ -389,7 +389,7 @@ Rectangle { border.color: "#00000000" border.width: 0 - Text { + QGCLabel { id: armedStatusText text: (mainToolBar.systemArmed) ? qsTr("ARMED") : qsTr("DISARMED") font.pointSize: screenTools.dpiAdjustedPointSize(12); @@ -408,7 +408,7 @@ Rectangle { border.color: "#00000000" border.width: 0 - Text { + QGCLabel { id: stateStatusText text: mainToolBar.currentState font.pointSize: screenTools.dpiAdjustedPointSize(12); @@ -429,7 +429,7 @@ Rectangle { border.color: "#00000000" border.width: 0 - Text { + QGCLabel { id: modeStatusText text: mainToolBar.currentMode font.pointSize: screenTools.dpiAdjustedPointSize(12); @@ -450,7 +450,7 @@ Rectangle { border.color: "#00000000" border.width: 0 - Text { + QGCLabel { id: connectionStatusText text: qsTr("CONNECTION LOST") font.pointSize: screenTools.dpiAdjustedPointSize(14);