Unverified Commit c4b864aa authored by Gus Grubba's avatar Gus Grubba Committed by GitHub

Merge pull request #8256 from mavlink/pr-ui-scaling

UI Scaling
parents 0b5aba44 da62ead1
...@@ -21,6 +21,8 @@ T.ComboBox { ...@@ -21,6 +21,8 @@ T.ComboBox {
id: control id: control
padding: ScreenTools.comboBoxPadding padding: ScreenTools.comboBoxPadding
spacing: ScreenTools.defaultFontPixelWidth spacing: ScreenTools.defaultFontPixelWidth
font.pointSize: ScreenTools.defaultFontPointSize
font.family: ScreenTools.normalFontFamily
implicitWidth: Math.max(background ? background.implicitWidth : 0, implicitWidth: Math.max(background ? background.implicitWidth : 0,
contentItem.implicitWidth + leftPadding + rightPadding + padding) contentItem.implicitWidth + leftPadding + rightPadding + padding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, implicitHeight: Math.max(background ? background.implicitHeight : 0,
...@@ -38,12 +40,12 @@ T.ComboBox { ...@@ -38,12 +40,12 @@ T.ComboBox {
TextMetrics { TextMetrics {
id: textMetrics id: textMetrics
font: control.font
} }
onModelChanged: { onModelChanged: {
if (sizeToContents) { if (sizeToContents) {
_largestTextWidth = 0 _largestTextWidth = 0
textMetrics.font = control.font
for (var i = 0; i < model.length; i++){ for (var i = 0; i < model.length; i++){
textMetrics.text = model[i] textMetrics.text = model[i]
_largestTextWidth = Math.max(textMetrics.width, _largestTextWidth) _largestTextWidth = Math.max(textMetrics.width, _largestTextWidth)
...@@ -60,6 +62,7 @@ T.ComboBox { ...@@ -60,6 +62,7 @@ T.ComboBox {
TextMetrics { TextMetrics {
id: popupItemMetrics id: popupItemMetrics
font: control.font
text: _text text: _text
} }
......
...@@ -31,6 +31,7 @@ Item { ...@@ -31,6 +31,7 @@ Item {
//-- The point and pixel font size values are computed at runtime //-- The point and pixel font size values are computed at runtime
property real defaultFontPointSize: 10 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 /// 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 /// be done. All positioning should be done using anchors or a ratio of the defaultFontPixelHeight and defaultFontPixelWidth values. This way
...@@ -105,7 +106,6 @@ Item { ...@@ -105,7 +106,6 @@ Item {
Connections { Connections {
target: QGroundControl.settingsManager.appSettings.appFontPointSize target: QGroundControl.settingsManager.appSettings.appFontPointSize
onValueChanged: { onValueChanged: {
if(ScreenToolsController.isDebug)
_setBasePointSize(QGroundControl.settingsManager.appSettings.appFontPointSize.value) _setBasePointSize(QGroundControl.settingsManager.appSettings.appFontPointSize.value)
} }
} }
...@@ -158,40 +158,36 @@ Item { ...@@ -158,40 +158,36 @@ Item {
property real fontWidth: contentWidth property real fontWidth: contentWidth
property real fontHeight: contentHeight property real fontHeight: contentHeight
Component.onCompleted: { Component.onCompleted: {
var _appFontPointSizeFact = QGroundControl.settingsManager.appSettings.appFontPointSize //-- First, compute platform, default size
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) { if(ScreenToolsController.isMobile) {
//-- Check iOS really tiny screens (iPhone 4s/5/5s) //-- Check iOS really tiny screens (iPhone 4s/5/5s)
if(ScreenToolsController.isiOS) { if(ScreenToolsController.isiOS) {
if(ScreenToolsController.isiOS && Screen.width < 570) { if(ScreenToolsController.isiOS && Screen.width < 570) {
// For iPhone 4s size we don't fit with additional tweaks to fit screen, // 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. // 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 platformFontPointSize = 12; // This will be lowered in a future pull
} else { } else {
baseSize = 14; platformFontPointSize = 14;
} }
} else if((Screen.width / realPixelDensity) < 120) { } else if((Screen.width / realPixelDensity) < 120) {
baseSize = 11; platformFontPointSize = 11;
// Other Android // Other Android
} else { } else {
baseSize = 14; platformFontPointSize = 14;
} }
} else { } else {
baseSize = _defaultFont.font.pointSize; platformFontPointSize = _defaultFont.font.pointSize;
} }
_appFontPointSizeFact._setIgnoreQGCRebootRequired(true) //-- 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 _appFontPointSizeFact.value = baseSize
_appFontPointSizeFact._setIgnoreQGCRebootRequired(false) }
//-- Release build doesn't get signal
if(!ScreenToolsController.isDebug)
_screenTools._setBasePointSize(baseSize);
} else {
//-- Set size saved in settings //-- Set size saved in settings
_screenTools._setBasePointSize(baseSize); _screenTools._setBasePointSize(baseSize);
} }
} }
}
} }
...@@ -146,8 +146,7 @@ ...@@ -146,8 +146,7 @@
"units": "pt", "units": "pt",
"min": 6, "min": 6,
"max": 48, "max": 48,
"defaultValue": 0, "defaultValue": 0
"qgcRebootRequired": true
}, },
{ {
"name": "indoorPalette", "name": "indoorPalette",
......
...@@ -36,7 +36,7 @@ Rectangle { ...@@ -36,7 +36,7 @@ Rectangle {
property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor property Fact _userBrandImageIndoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageIndoor
property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor property Fact _userBrandImageOutdoor: QGroundControl.settingsManager.brandImageSettings.userBrandImageOutdoor
property real _labelWidth: ScreenTools.defaultFontPixelWidth * 20 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 real _valueFieldWidth: ScreenTools.defaultFontPixelWidth * 10
property string _mapProvider: QGroundControl.settingsManager.flightMapSettings.mapProvider.value property string _mapProvider: QGroundControl.settingsManager.flightMapSettings.mapProvider.value
property string _mapType: QGroundControl.settingsManager.flightMapSettings.mapType.value property string _mapType: QGroundControl.settingsManager.flightMapSettings.mapType.value
...@@ -206,49 +206,46 @@ Rectangle { ...@@ -206,49 +206,46 @@ Rectangle {
indexModel: false indexModel: false
visible: _followTarget.visible visible: _followTarget.visible
} }
QGCLabel {
text: qsTr("UI Scaling")
visible: _appFontPointSize.visible
Layout.alignment: Qt.AlignVCenter
} }
}
Item { Item {
id: miscColItem width: _comboFieldWidth
anchors.margins: _margins height: baseFontEdit.height * 1.5
anchors.left: parent.left
anchors.right: parent.right
anchors.top: comboGridItem.bottom
height: miscCol.height
ColumnLayout {
id: miscCol
anchors.horizontalCenter: parent.horizontalCenter
spacing: _margins
RowLayout {
Layout.fillWidth: false
Layout.alignment: Qt.AlignHCenter
visible: _appFontPointSize.visible visible: _appFontPointSize.visible
Layout.alignment: Qt.AlignVCenter
QGCLabel { Row {
text: qsTr("Font Size:") spacing: ScreenTools.defaultFontPixelWidth
} anchors.verticalCenter: parent.verticalCenter
QGCButton { QGCButton {
Layout.preferredWidth: height width: height
Layout.preferredHeight: baseFontEdit.height height: baseFontEdit.height * 1.5
text: "-" text: "-"
anchors.verticalCenter: parent.verticalCenter
onClicked: { onClicked: {
if (_appFontPointSize.value > _appFontPointSize.min) { if (_appFontPointSize.value > _appFontPointSize.min) {
_appFontPointSize.value = _appFontPointSize.value - 1 _appFontPointSize.value = _appFontPointSize.value - 1
} }
} }
} }
FactTextField { QGCLabel {
id: baseFontEdit id: baseFontEdit
Layout.preferredWidth: _valueFieldWidth width: ScreenTools.defaultFontPixelWidth * 6
fact: QGroundControl.settingsManager.appSettings.appFontPointSize text: (QGroundControl.settingsManager.appSettings.appFontPointSize.value / ScreenTools.platformFontPointSize * 100).toFixed(0) + "%"
horizontalAlignment: Text.AlignHCenter
anchors.verticalCenter: parent.verticalCenter
} }
Text {
}
QGCButton { QGCButton {
Layout.preferredWidth: height width: height
Layout.preferredHeight: baseFontEdit.height height: baseFontEdit.height * 1.5
text: "+" text: "+"
anchors.verticalCenter: parent.verticalCenter
onClicked: { onClicked: {
if (_appFontPointSize.value < _appFontPointSize.max) { if (_appFontPointSize.value < _appFontPointSize.max) {
_appFontPointSize.value = _appFontPointSize.value + 1 _appFontPointSize.value = _appFontPointSize.value + 1
...@@ -256,6 +253,23 @@ Rectangle { ...@@ -256,6 +253,23 @@ Rectangle {
} }
} }
} }
}
}
}
Item {
id: miscColItem
anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: comboGridItem.bottom
anchors.topMargin: ScreenTools.defaultFontPixelHeight
height: miscCol.height
ColumnLayout {
id: miscCol
anchors.horizontalCenter: parent.horizontalCenter
spacing: _margins
FactCheckBox { FactCheckBox {
text: qsTr("Use Vehicle Pairing") text: qsTr("Use Vehicle Pairing")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment