Browse Source

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

UI Scaling
QGC4.4
Gus Grubba 5 years ago committed by GitHub
parent
commit
c4b864aa99
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      src/QmlControls/QGCComboBox.qml
  2. 32
      src/QmlControls/ScreenTools.qml
  3. 3
      src/Settings/App.SettingsGroup.json
  4. 72
      src/ui/preferences/GeneralSettings.qml

5
src/QmlControls/QGCComboBox.qml

@ -21,6 +21,8 @@ T.ComboBox { @@ -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,
@ -38,12 +40,12 @@ T.ComboBox { @@ -38,12 +40,12 @@ T.ComboBox {
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)
@ -60,6 +62,7 @@ T.ComboBox { @@ -60,6 +62,7 @@ T.ComboBox {
TextMetrics {
id: popupItemMetrics
font: control.font
text: _text
}

32
src/QmlControls/ScreenTools.qml

@ -31,6 +31,7 @@ Item { @@ -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,7 +106,6 @@ Item { @@ -105,7 +106,6 @@ Item {
Connections {
target: QGroundControl.settingsManager.appSettings.appFontPointSize
onValueChanged: {
if(ScreenToolsController.isDebug)
_setBasePointSize(QGroundControl.settingsManager.appSettings.appFontPointSize.value)
}
}
@ -158,40 +158,36 @@ Item { @@ -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
//-- 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.
baseSize = 12; // This will be lowered in a future pull
platformFontPointSize = 12; // This will be lowered in a future pull
} else {
baseSize = 14;
platformFontPointSize = 14;
}
} else if((Screen.width / realPixelDensity) < 120) {
baseSize = 11;
platformFontPointSize = 11;
// Other Android
} else {
baseSize = 14;
platformFontPointSize = 14;
}
} 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._setIgnoreQGCRebootRequired(false)
//-- Release build doesn't get signal
if(!ScreenToolsController.isDebug)
_screenTools._setBasePointSize(baseSize);
} else {
}
//-- Set size saved in settings
_screenTools._setBasePointSize(baseSize);
}
}
}
}

3
src/Settings/App.SettingsGroup.json

@ -146,8 +146,7 @@ @@ -146,8 +146,7 @@
"units": "pt",
"min": 6,
"max": 48,
"defaultValue": 0,
"qgcRebootRequired": true
"defaultValue": 0
},
{
"name": "indoorPalette",

72
src/ui/preferences/GeneralSettings.qml

@ -36,7 +36,7 @@ Rectangle { @@ -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
@ -206,49 +206,46 @@ Rectangle { @@ -206,49 +206,46 @@ Rectangle {
indexModel: false
visible: _followTarget.visible
}
QGCLabel {
text: qsTr("UI Scaling")
visible: _appFontPointSize.visible
Layout.alignment: Qt.AlignVCenter
}
}
Item {
id: miscColItem
anchors.margins: _margins
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
width: _comboFieldWidth
height: baseFontEdit.height * 1.5
visible: _appFontPointSize.visible
QGCLabel {
text: qsTr("Font Size:")
}
Layout.alignment: Qt.AlignVCenter
Row {
spacing: ScreenTools.defaultFontPixelWidth
anchors.verticalCenter: parent.verticalCenter
QGCButton {
Layout.preferredWidth: height
Layout.preferredHeight: baseFontEdit.height
width: height
height: baseFontEdit.height * 1.5
text: "-"
anchors.verticalCenter: parent.verticalCenter
onClicked: {
if (_appFontPointSize.value > _appFontPointSize.min) {
_appFontPointSize.value = _appFontPointSize.value - 1
}
}
}
FactTextField {
QGCLabel {
id: baseFontEdit
Layout.preferredWidth: _valueFieldWidth
fact: QGroundControl.settingsManager.appSettings.appFontPointSize
width: ScreenTools.defaultFontPixelWidth * 6
text: (QGroundControl.settingsManager.appSettings.appFontPointSize.value / ScreenTools.platformFontPointSize * 100).toFixed(0) + "%"
horizontalAlignment: Text.AlignHCenter
anchors.verticalCenter: parent.verticalCenter
}
Text {
}
QGCButton {
Layout.preferredWidth: height
Layout.preferredHeight: baseFontEdit.height
width: height
height: baseFontEdit.height * 1.5
text: "+"
anchors.verticalCenter: parent.verticalCenter
onClicked: {
if (_appFontPointSize.value < _appFontPointSize.max) {
_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 {
text: qsTr("Use Vehicle Pairing")

Loading…
Cancel
Save