From 7a0d8b491f5024565bb94d8581c96065b1f93170 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Thu, 23 Jan 2020 15:52:30 -0400 Subject: [PATCH] Change user facing UI from "Font Size" to "UI Scaling". --- src/QmlControls/ScreenTools.qml | 56 ++++++++-------- src/Settings/App.SettingsGroup.json | 3 +- src/ui/preferences/GeneralSettings.qml | 90 +++++++++++++++----------- 3 files changed, 79 insertions(+), 70 deletions(-) diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 45bda3fe6..d45108a2a 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 660b4530a..18eae1e6a 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 4baed9de6..1d1e04643 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 -- 2.22.0