Commit 709a126f authored by dogmaphobic's avatar dogmaphobic

Allow users to change base UI font point size.

parent 654a4d6b
...@@ -37,7 +37,8 @@ FactMetaData* QGroundControlQmlGlobal::_distanceUnitsMetaData = ...@@ -37,7 +37,8 @@ FactMetaData* QGroundControlQmlGlobal::_distanceUnitsMetaData =
SettingsFact* QGroundControlQmlGlobal::_speedUnitsFact = NULL; SettingsFact* QGroundControlQmlGlobal::_speedUnitsFact = NULL;
FactMetaData* QGroundControlQmlGlobal::_speedUnitsMetaData = NULL; FactMetaData* QGroundControlQmlGlobal::_speedUnitsMetaData = NULL;
const char* QGroundControlQmlGlobal::_virtualTabletJoystickKey = "VirtualTabletJoystick"; const char* QGroundControlQmlGlobal::_virtualTabletJoystickKey = "VirtualTabletJoystick";
const char* QGroundControlQmlGlobal::_baseFontPointSizeKey = "BaseFontPointSize";
QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app) QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app)
: QGCTool(app) : QGCTool(app)
...@@ -48,9 +49,11 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app) ...@@ -48,9 +49,11 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app)
, _multiVehicleManager(NULL) , _multiVehicleManager(NULL)
, _mapEngineManager(NULL) , _mapEngineManager(NULL)
, _virtualTabletJoystick(false) , _virtualTabletJoystick(false)
, _baseFontPointSize(0.0)
{ {
QSettings settings; QSettings settings;
_virtualTabletJoystick = settings.value(_virtualTabletJoystickKey, false). toBool(); _virtualTabletJoystick = settings.value(_virtualTabletJoystickKey, false).toBool();
_baseFontPointSize = settings.value(_baseFontPointSizeKey, 0.0).toDouble();
// We clear the parent on this object since we run into shutdown problems caused by hybrid qml app. Instead we let it leak on shutdown. // We clear the parent on this object since we run into shutdown problems caused by hybrid qml app. Instead we let it leak on shutdown.
setParent(NULL); setParent(NULL);
...@@ -207,6 +210,16 @@ void QGroundControlQmlGlobal::setVirtualTabletJoystick(bool enabled) ...@@ -207,6 +210,16 @@ void QGroundControlQmlGlobal::setVirtualTabletJoystick(bool enabled)
} }
} }
void QGroundControlQmlGlobal::setBaseFontPointSize(qreal size)
{
if (size >= 6.0 && size <= 48.0) {
QSettings settings;
settings.setValue(_baseFontPointSizeKey, size);
_baseFontPointSize = size;
emit baseFontPointSizeChanged(size);
}
}
bool QGroundControlQmlGlobal::experimentalSurvey(void) const bool QGroundControlQmlGlobal::experimentalSurvey(void) const
{ {
QSettings settings; QSettings settings;
......
...@@ -86,6 +86,7 @@ public: ...@@ -86,6 +86,7 @@ public:
Q_PROPERTY(bool isSaveLogPrompt READ isSaveLogPrompt WRITE setIsSaveLogPrompt NOTIFY isSaveLogPromptChanged) Q_PROPERTY(bool isSaveLogPrompt READ isSaveLogPrompt WRITE setIsSaveLogPrompt NOTIFY isSaveLogPromptChanged)
Q_PROPERTY(bool isSaveLogPromptNotArmed READ isSaveLogPromptNotArmed WRITE setIsSaveLogPromptNotArmed NOTIFY isSaveLogPromptNotArmedChanged) Q_PROPERTY(bool isSaveLogPromptNotArmed READ isSaveLogPromptNotArmed WRITE setIsSaveLogPromptNotArmed NOTIFY isSaveLogPromptNotArmedChanged)
Q_PROPERTY(bool virtualTabletJoystick READ virtualTabletJoystick WRITE setVirtualTabletJoystick NOTIFY virtualTabletJoystickChanged) Q_PROPERTY(bool virtualTabletJoystick READ virtualTabletJoystick WRITE setVirtualTabletJoystick NOTIFY virtualTabletJoystickChanged)
Q_PROPERTY(qreal baseFontPointSize READ baseFontPointSize WRITE setBaseFontPointSize NOTIFY baseFontPointSizeChanged)
// MavLink Protocol // MavLink Protocol
Q_PROPERTY(bool isMultiplexingEnabled READ isMultiplexingEnabled WRITE setIsMultiplexingEnabled NOTIFY isMultiplexingEnabledChanged) Q_PROPERTY(bool isMultiplexingEnabled READ isMultiplexingEnabled WRITE setIsMultiplexingEnabled NOTIFY isMultiplexingEnabledChanged)
...@@ -151,6 +152,7 @@ public: ...@@ -151,6 +152,7 @@ public:
bool isSaveLogPrompt () { return _app->promptFlightDataSave(); } bool isSaveLogPrompt () { return _app->promptFlightDataSave(); }
bool isSaveLogPromptNotArmed () { return _app->promptFlightDataSaveNotArmed(); } bool isSaveLogPromptNotArmed () { return _app->promptFlightDataSaveNotArmed(); }
bool virtualTabletJoystick () { return _virtualTabletJoystick; } bool virtualTabletJoystick () { return _virtualTabletJoystick; }
qreal baseFontPointSize () { return _baseFontPointSize; }
bool isMultiplexingEnabled () { return _toolbox->mavlinkProtocol()->multiplexingEnabled(); } bool isMultiplexingEnabled () { return _toolbox->mavlinkProtocol()->multiplexingEnabled(); }
bool isVersionCheckEnabled () { return _toolbox->mavlinkProtocol()->versionCheckEnabled(); } bool isVersionCheckEnabled () { return _toolbox->mavlinkProtocol()->versionCheckEnabled(); }
...@@ -170,6 +172,7 @@ public: ...@@ -170,6 +172,7 @@ public:
void setIsSaveLogPrompt (bool prompt); void setIsSaveLogPrompt (bool prompt);
void setIsSaveLogPromptNotArmed (bool prompt); void setIsSaveLogPromptNotArmed (bool prompt);
void setVirtualTabletJoystick (bool enabled); void setVirtualTabletJoystick (bool enabled);
void setBaseFontPointSize (qreal size);
void setIsMultiplexingEnabled (bool enable); void setIsMultiplexingEnabled (bool enable);
void setIsVersionCheckEnabled (bool enable); void setIsVersionCheckEnabled (bool enable);
...@@ -191,6 +194,7 @@ signals: ...@@ -191,6 +194,7 @@ signals:
void isSaveLogPromptChanged (bool prompt); void isSaveLogPromptChanged (bool prompt);
void isSaveLogPromptNotArmedChanged (bool prompt); void isSaveLogPromptNotArmedChanged (bool prompt);
void virtualTabletJoystickChanged (bool enabled); void virtualTabletJoystickChanged (bool enabled);
void baseFontPointSizeChanged (qreal size);
void isMultiplexingEnabledChanged (bool enabled); void isMultiplexingEnabledChanged (bool enabled);
void isVersionCheckEnabledChanged (bool enabled); void isVersionCheckEnabledChanged (bool enabled);
void mavlinkSystemIDChanged (int id); void mavlinkSystemIDChanged (int id);
...@@ -207,10 +211,10 @@ private: ...@@ -207,10 +211,10 @@ private:
QGCMapEngineManager* _mapEngineManager; QGCMapEngineManager* _mapEngineManager;
QGCPositionManager* _qgcPositionManager; QGCPositionManager* _qgcPositionManager;
bool _virtualTabletJoystick; bool _virtualTabletJoystick;
qreal _baseFontPointSize;
QGeoCoordinate _flightMapPosition; QGeoCoordinate _flightMapPosition;
double _flightMapZoom; double _flightMapZoom;
// These are static so they are available to C++ code as well as Qml // These are static so they are available to C++ code as well as Qml
static SettingsFact* _offlineEditingFirmwareTypeFact; static SettingsFact* _offlineEditingFirmwareTypeFact;
...@@ -221,6 +225,7 @@ private: ...@@ -221,6 +225,7 @@ private:
static FactMetaData* _speedUnitsMetaData; static FactMetaData* _speedUnitsMetaData;
static const char* _virtualTabletJoystickKey; static const char* _virtualTabletJoystickKey;
static const char* _baseFontPointSizeKey;
}; };
#endif #endif
...@@ -4,6 +4,7 @@ import QtQuick 2.4 ...@@ -4,6 +4,7 @@ import QtQuick 2.4
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtQuick.Window 2.2 import QtQuick.Window 2.2
import QGroundControl 1.0
import QGroundControl.ScreenToolsController 1.0 import QGroundControl.ScreenToolsController 1.0
Item { Item {
...@@ -35,6 +36,17 @@ Item { ...@@ -35,6 +36,17 @@ Item {
readonly property string normalFontFamily: "opensans" readonly property string normalFontFamily: "opensans"
readonly property string demiboldFontFamily: "opensans-demibold" readonly property string demiboldFontFamily: "opensans-demibold"
/* This mostly works but for some reason, reflowWidths() in SetupView doesn't change size.
I've disabled (in release builds) until I figure out why. Changes require a restart for now.
*/
Connections {
target: QGroundControl
onBaseFontPointSizeChanged: {
if(ScreenToolsController.isDebug)
setBasePointSize(QGroundControl.baseFontPointSize)
}
}
function mouseX() { function mouseX() {
return ScreenToolsController.mouseX() return ScreenToolsController.mouseX()
} }
...@@ -43,48 +55,61 @@ Item { ...@@ -43,48 +55,61 @@ Item {
return ScreenToolsController.mouseY() return ScreenToolsController.mouseY()
} }
function setBasePointSize(pointSize) {
_textMeasure.font.pointSize = pointSize
defaultFontPointSize = pointSize
defaultFontPixelHeight = _textMeasure.fontHeight
defaultFontPixelWidth = _textMeasure.fontWidth
smallFontPointSize = defaultFontPointSize * _screenTools.smallFontPointRatio
mediumFontPointSize = defaultFontPointSize * _screenTools.mediumFontPointRatio
largeFontPointSize = defaultFontPointSize * _screenTools.largeFontPointRatio
}
Text { Text {
id: _defaultFont id: _defaultFont
text: "X" text: "X"
property real fontHeight: contentHeight
} }
Text { Text {
id: _textMeasure id: _textMeasure
text: "X" text: "X"
font.family: normalFontFamily font.family: normalFontFamily
font.pointSize: { property real fontWidth: contentWidth
if(ScreenToolsController.isMobile) { property real fontHeight: contentHeight
// Small Devices Component.onCompleted: {
if((Screen.width / Screen.pixelDensity) < 120) { var baseSize = QGroundControl.baseFontPointSize;
return 11; //-- If this is the first time (not saved in settings)
// iOS if(baseSize < 6 || baseSize > 48) {
} else if(ScreenToolsController.isiOS) { //-- Init base size base on the platform
return 13; if(ScreenToolsController.isMobile) {
// Android // Small Devices
if((Screen.width / Screen.pixelDensity) < 120)
baseSize = 11;
// iOS
else if(ScreenToolsController.isiOS)
baseSize = 13;
// Android
else
baseSize = 14;
} else { } else {
return 14; //-- Mac OS
if(ScreenToolsController.isMacOS)
baseSize = _defaultFont.font.pointSize;
//-- Linux
else if(ScreenToolsController.isLinux)
baseSize = _defaultFont.font.pointSize - 3.25;
//-- Windows
else
baseSize = _defaultFont.font.pointSize;
} }
QGroundControl.baseFontPointSize = baseSize
//-- Release build doesn't get signal
if(!ScreenToolsController.isDebug)
_screenTools.setBasePointSize(baseSize);
} else { } else {
//-- Mac OS //-- Set size saved in settings
if(ScreenToolsController.isMacOS) _screenTools.setBasePointSize(baseSize);
return _defaultFont.font.pointSize - 1
//-- Linux
if(ScreenToolsController.isLinux)
return _defaultFont.font.pointSize - 3.25
else
return _defaultFont.font.pointSize
} }
} }
property real fontWidth: contentWidth
property real fontHeight: contentHeight
Component.onCompleted: {
defaultFontPointSize = _textMeasure.font.pointSize
defaultFontPixelHeight = _textMeasure.fontHeight
defaultFontPixelWidth = _textMeasure.fontWidth
smallFontPointSize = defaultFontPointSize * _screenTools.smallFontPointRatio
mediumFontPointSize = defaultFontPointSize * _screenTools.mediumFontPointRatio
largeFontPointSize = defaultFontPointSize * _screenTools.largeFontPointRatio
}
} }
} }
...@@ -238,16 +238,22 @@ Rectangle { ...@@ -238,16 +238,22 @@ Rectangle {
Connections { Connections {
target: componentRepeater target: componentRepeater
onModelChanged: buttonColumn.reflowWidths() onModelChanged: buttonColumn.reflowWidths()
} }
// I don't know why this does not work
Connections {
target: QGroundControl
onBaseFontPointSizeChanged: buttonColumn.reflowWidths()
}
function reflowWidths() { function reflowWidths() {
for (var i=0; i<children.length; i++) { buttonColumn._maxButtonWidth = 0
_maxButtonWidth = Math.max(_maxButtonWidth, children[i].width) for (var i = 0; i < children.length; i++) {
buttonColumn._maxButtonWidth = Math.max(buttonColumn._maxButtonWidth, children[i].width)
} }
for (var i=0; i<children.length; i++) { for (var j = 0; j < children.length; j++) {
children[i].width = _maxButtonWidth children[j].width = buttonColumn._maxButtonWidth
} }
} }
......
...@@ -71,6 +71,70 @@ Rectangle { ...@@ -71,6 +71,70 @@ Rectangle {
width: parent.width width: parent.width
} }
//-----------------------------------------------------------------
//-- Base UI Font Point Size
Row {
spacing: ScreenTools.defaultFontPixelWidth
QGCLabel {
width: _firstLabelWidth
text: qsTr("Base UI font size:")
anchors.verticalCenter: parent.verticalCenter
}
Row {
anchors.verticalCenter: parent.verticalCenter
Rectangle {
width: baseFontEdit.height
height: width
color: qgcPal.button
QGCLabel {
text: "-"
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
if(ScreenTools.defaultFontPointSize > 6)
QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize - 1
}
}
}
QGCTextField {
id: baseFontEdit
width: _editFieldWidth - (height * 2)
text: QGroundControl.baseFontPointSize
showUnits: true
unitsLabel: "pt"
maximumLength: 6
validator: DoubleValidator {bottom: 6.0; top: 48.0; decimals: 2;}
onEditingFinished: {
var point = parseFloat(text)
if(point >= 6.0 && point <= 48.0)
QGroundControl.baseFontPointSize = point;
}
}
Rectangle {
width: baseFontEdit.height
height: width
color: qgcPal.button
QGCLabel {
text: "+"
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
if(ScreenTools.defaultFontPointSize < 49)
QGroundControl.baseFontPointSize = QGroundControl.baseFontPointSize + 1
}
}
}
}
QGCLabel {
anchors.verticalCenter: parent.verticalCenter
text: qsTr("(requires reboot to take affect)")
}
}
//----------------------------------------------------------------- //-----------------------------------------------------------------
//-- Units //-- Units
......
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