diff --git a/src/QmlControls/QGCComboBox.qml b/src/QmlControls/QGCComboBox.qml index b46a8c377982f503c073b13d4476c6f5943d1b95..433d25a71c446a20de0c94c9e84ebadac49bc512 100644 --- a/src/QmlControls/QGCComboBox.qml +++ b/src/QmlControls/QGCComboBox.qml @@ -21,6 +21,8 @@ T.ComboBox { id: control padding: ScreenTools.comboBoxPadding spacing: ScreenTools.defaultFontPixelWidth + font.pointSize: ScreenTools.defaultFontPointSize + font.family: ScreenTools.normalFontFamily implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding + padding) implicitHeight: Math.max(background ? background.implicitHeight : 0, @@ -37,13 +39,13 @@ T.ComboBox { property real _popupWidth: sizeToContents ? _largestTextWidth + leftPadding + rightPadding : control.width TextMetrics { - id: textMetrics + id: textMetrics + font: control.font } onModelChanged: { if (sizeToContents) { _largestTextWidth = 0 - textMetrics.font = control.font for (var i = 0; i < model.length; i++){ textMetrics.text = model[i] _largestTextWidth = Math.max(textMetrics.width, _largestTextWidth) @@ -59,8 +61,9 @@ T.ComboBox { property string _text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData TextMetrics { - id: popupItemMetrics - text: _text + id: popupItemMetrics + font: control.font + text: _text } contentItem: Text { diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 45bda3fe69569c8fe2a6428fa2169f1fabc9cd34..d45108a2a8f2246fc63f7988a3dbc5bc8eebe722 100644 --- a/src/QmlControls/ScreenTools.qml +++ b/src/QmlControls/ScreenTools.qml @@ -31,6 +31,7 @@ Item { //-- The point and pixel font size values are computed at runtime property real defaultFontPointSize: 10 + property real platformFontPointSize: 10 /// You can use this property to position ui elements in a screen resolution independent manner. Using fixed positioning values should not /// be done. All positioning should be done using anchors or a ratio of the defaultFontPixelHeight and defaultFontPixelWidth values. This way @@ -105,8 +106,7 @@ Item { Connections { target: QGroundControl.settingsManager.appSettings.appFontPointSize onValueChanged: { - if(ScreenToolsController.isDebug) - _setBasePointSize(QGroundControl.settingsManager.appSettings.appFontPointSize.value) + _setBasePointSize(QGroundControl.settingsManager.appSettings.appFontPointSize.value) } } @@ -158,40 +158,36 @@ Item { property real fontWidth: contentWidth property real fontHeight: contentHeight Component.onCompleted: { - var _appFontPointSizeFact = QGroundControl.settingsManager.appSettings.appFontPointSize - var baseSize = _appFontPointSizeFact.value - //-- If this is the first time (not saved in settings) - if(baseSize < _appFontPointSizeFact.min || baseSize > _appFontPointSizeFact.max) { - //-- Init base size base on the platform - if(ScreenToolsController.isMobile) { - //-- Check iOS really tiny screens (iPhone 4s/5/5s) - if(ScreenToolsController.isiOS) { - if(ScreenToolsController.isiOS && Screen.width < 570) { - // For iPhone 4s size we don't fit with additional tweaks to fit screen, - // we will just drop point size to make things fit. Correct size not yet determined. - baseSize = 12; // This will be lowered in a future pull - } else { - baseSize = 14; - } - } else if((Screen.width / realPixelDensity) < 120) { - baseSize = 11; - // Other Android + //-- First, compute platform, default size + if(ScreenToolsController.isMobile) { + //-- Check iOS really tiny screens (iPhone 4s/5/5s) + if(ScreenToolsController.isiOS) { + if(ScreenToolsController.isiOS && Screen.width < 570) { + // For iPhone 4s size we don't fit with additional tweaks to fit screen, + // we will just drop point size to make things fit. Correct size not yet determined. + platformFontPointSize = 12; // This will be lowered in a future pull } else { - baseSize = 14; + platformFontPointSize = 14; } + } else if((Screen.width / realPixelDensity) < 120) { + platformFontPointSize = 11; + // Other Android } else { - baseSize = _defaultFont.font.pointSize; + platformFontPointSize = 14; } - _appFontPointSizeFact._setIgnoreQGCRebootRequired(true) - _appFontPointSizeFact.value = baseSize - _appFontPointSizeFact._setIgnoreQGCRebootRequired(false) - //-- Release build doesn't get signal - if(!ScreenToolsController.isDebug) - _screenTools._setBasePointSize(baseSize); } else { - //-- Set size saved in settings - _screenTools._setBasePointSize(baseSize); + platformFontPointSize = _defaultFont.font.pointSize; + } + //-- See if we are using a custom size + var _appFontPointSizeFact = QGroundControl.settingsManager.appSettings.appFontPointSize + var baseSize = _appFontPointSizeFact.value + //-- Sanity check + if(baseSize < _appFontPointSizeFact.min || baseSize > _appFontPointSizeFact.max) { + baseSize = platformFontPointSize; + _appFontPointSizeFact.value = baseSize } + //-- Set size saved in settings + _screenTools._setBasePointSize(baseSize); } } } diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index 660b4530a7eeb199cf3a38d3dbd6debc15d5b0a8..18eae1e6aa1bff620c031d7ccf3d0f764ca6663f 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -146,8 +146,7 @@ "units": "pt", "min": 6, "max": 48, - "defaultValue": 0, - "qgcRebootRequired": true + "defaultValue": 0 }, { "name": "indoorPalette", diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index 4baed9de61e67f8c2a6d3c742ef809127e19a41b..1d1e04643220eb79a2337d487b6f031ba7564944 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -36,7 +36,7 @@ Rectangle { property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 - property real _comboFieldWidth: ScreenTools.defaultFontPixelWidth * 28 + property real _comboFieldWidth: ScreenTools.defaultFontPixelWidth * 30 property real _valueFieldWidth: ScreenTools.defaultFontPixelWidth * 10 property string _mapProvider: QGroundControl.settingsManager.flightMapSettings.mapProvider.value property string _mapType: QGroundControl.settingsManager.flightMapSettings.mapType.value @@ -197,8 +197,8 @@ Rectangle { } QGCLabel { - text: qsTr("Stream GCS Position") - visible: _followTarget.visible + text: qsTr("Stream GCS Position") + visible: _followTarget.visible } FactComboBox { Layout.preferredWidth: _comboFieldWidth @@ -206,6 +206,54 @@ Rectangle { indexModel: false visible: _followTarget.visible } + QGCLabel { + text: qsTr("UI Scaling") + visible: _appFontPointSize.visible + Layout.alignment: Qt.AlignVCenter + } + Item { + width: _comboFieldWidth + height: baseFontEdit.height * 1.5 + visible: _appFontPointSize.visible + Layout.alignment: Qt.AlignVCenter + Row { + spacing: ScreenTools.defaultFontPixelWidth + anchors.verticalCenter: parent.verticalCenter + QGCButton { + width: height + height: baseFontEdit.height * 1.5 + text: "-" + anchors.verticalCenter: parent.verticalCenter + onClicked: { + if (_appFontPointSize.value > _appFontPointSize.min) { + _appFontPointSize.value = _appFontPointSize.value - 1 + } + } + } + QGCLabel { + id: baseFontEdit + width: ScreenTools.defaultFontPixelWidth * 6 + text: (QGroundControl.settingsManager.appSettings.appFontPointSize.value / ScreenTools.platformFontPointSize * 100).toFixed(0) + "%" + horizontalAlignment: Text.AlignHCenter + anchors.verticalCenter: parent.verticalCenter + } + Text { + + } + + QGCButton { + width: height + height: baseFontEdit.height * 1.5 + text: "+" + anchors.verticalCenter: parent.verticalCenter + onClicked: { + if (_appFontPointSize.value < _appFontPointSize.max) { + _appFontPointSize.value = _appFontPointSize.value + 1 + } + } + } + } + } } } @@ -215,6 +263,7 @@ Rectangle { anchors.left: parent.left anchors.right: parent.right anchors.top: comboGridItem.bottom + anchors.topMargin: ScreenTools.defaultFontPixelHeight height: miscCol.height ColumnLayout { @@ -222,41 +271,6 @@ Rectangle { anchors.horizontalCenter: parent.horizontalCenter spacing: _margins - RowLayout { - Layout.fillWidth: false - Layout.alignment: Qt.AlignHCenter - visible: _appFontPointSize.visible - - QGCLabel { - text: qsTr("Font Size:") - } - QGCButton { - Layout.preferredWidth: height - Layout.preferredHeight: baseFontEdit.height - text: "-" - onClicked: { - if (_appFontPointSize.value > _appFontPointSize.min) { - _appFontPointSize.value = _appFontPointSize.value - 1 - } - } - } - FactTextField { - id: baseFontEdit - Layout.preferredWidth: _valueFieldWidth - fact: QGroundControl.settingsManager.appSettings.appFontPointSize - } - QGCButton { - Layout.preferredWidth: height - Layout.preferredHeight: baseFontEdit.height - text: "+" - onClicked: { - if (_appFontPointSize.value < _appFontPointSize.max) { - _appFontPointSize.value = _appFontPointSize.value + 1 - } - } - } - } - FactCheckBox { text: qsTr("Use Vehicle Pairing") fact: _usePairing