From 9f211eca4f7ea600b959639fe4b26d12d89d0c2d Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 17 Oct 2015 13:48:17 -0700 Subject: [PATCH] More UI changes for tablet --- .../PX4/AirframeComponent.qml | 20 +- .../PX4/FlightModesComponent.qml | 18 +- src/AutoPilotPlugins/PX4/PowerComponent.qml | 5 - src/AutoPilotPlugins/PX4/RadioComponent.qml | 19 +- src/AutoPilotPlugins/PX4/SafetyComponent.qml | 7 - src/AutoPilotPlugins/PX4/SensorsComponent.qml | 7 - src/QGCApplication.cc | 6 +- src/QGCMessageBox.h | 3 +- src/QmlControls/ParameterEditor.qml | 6 +- src/VehicleSetup/FirmwareUpgrade.qml | 4 +- src/VehicleSetup/JoystickConfig.qml | 4 +- src/VehicleSetup/SetupView.qml | 244 ++++++++++-------- src/VehicleSetup/VehicleSummary.qml | 7 +- src/ui/toolbar/MainToolBar.qml | 9 + src/ui/toolbar/MainToolBarController.cc | 5 + src/ui/toolbar/MainToolBarController.h | 1 + 16 files changed, 173 insertions(+), 192 deletions(-) diff --git a/src/AutoPilotPlugins/PX4/AirframeComponent.qml b/src/AutoPilotPlugins/PX4/AirframeComponent.qml index b2c3a5a6f..f14ed8f69 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponent.qml +++ b/src/AutoPilotPlugins/PX4/AirframeComponent.qml @@ -96,30 +96,18 @@ QGCView { readonly property real spacerHeight: ScreenTools.defaultFontPixelHeight - QGCLabel { - id: header - width: parent.width - font.pixelSize: ScreenTools.largeFontPixelSize - text: "AIRFRAME CONFIG" - } - - Item { - id: headingSpacer - anchors.top: header.bottom - height: parent.spacerHeight - width: 20 - } - Item { id: helpApplyRow - anchors.top: headingSpacer.bottom - width: parent.width + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right height: Math.max(helpText.contentHeight, applyButton.height) QGCLabel { id: helpText width: parent.width - applyButton.width - 5 text: "Please select your airframe type. Click 'Apply and Restart' to reboot the autopilot. Please re-connect then manually." + font.pixelSize: ScreenTools.mediumFontPixelSize wrapMode: Text.WordWrap } diff --git a/src/AutoPilotPlugins/PX4/FlightModesComponent.qml b/src/AutoPilotPlugins/PX4/FlightModesComponent.qml index 7dd4a04cb..5178b1ca6 100644 --- a/src/AutoPilotPlugins/PX4/FlightModesComponent.qml +++ b/src/AutoPilotPlugins/PX4/FlightModesComponent.qml @@ -42,7 +42,7 @@ QGCView { // User visible strings - readonly property string title: "FLIGHT MODES CONFIG" + readonly property string title: "FLIGHT MODES" property string topHelpText: "Assign Flight Modes to radio control channels and adjust the thresholds for triggering them. " + @@ -216,23 +216,8 @@ QGCView { id: scrollItem width: scroll.viewport.width - QGCLabel { - id: header - width: parent.width - font.pixelSize: ScreenTools.largeFontPixelSize - text: title - } - - Item { - id: headingSpacer - anchors.top: header.bottom - height: ScreenTools.defaultFontPixelHeight - width: 20 - } - Item { id: helpApplyRow - anchors.top: headingSpacer.bottom width: parent.width height: Math.max(helpText.contentHeight, applyButton.height) @@ -242,6 +227,7 @@ QGCView { anchors.left: parent.left anchors.right: applyButton.left text: topHelpText + font.pixelSize: ScreenTools.mediumFontPixelSize wrapMode: Text.WordWrap } diff --git a/src/AutoPilotPlugins/PX4/PowerComponent.qml b/src/AutoPilotPlugins/PX4/PowerComponent.qml index 241ee2538..c2fe07239 100644 --- a/src/AutoPilotPlugins/PX4/PowerComponent.qml +++ b/src/AutoPilotPlugins/PX4/PowerComponent.qml @@ -115,11 +115,6 @@ QGCView { anchors.right: parent.right spacing: ScreenTools.defaultFontPixelHeight - QGCLabel { - text: "POWER CONFIG" - font.pixelSize: ScreenTools.largeFontPixelSize - } - QGCLabel { text: "Battery" font.pixelSize: ScreenTools.mediumFontPixelSize diff --git a/src/AutoPilotPlugins/PX4/RadioComponent.qml b/src/AutoPilotPlugins/PX4/RadioComponent.qml index aa88b2d2b..e59449ec6 100644 --- a/src/AutoPilotPlugins/PX4/RadioComponent.qml +++ b/src/AutoPilotPlugins/PX4/RadioComponent.qml @@ -42,7 +42,7 @@ QGCView { QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled } - readonly property string dialogTitle: "Radio Config" + readonly property string dialogTitle: "Radio" readonly property real labelToMonitorMargin: defaultTextWidth * 3 property bool controllerCompleted: false property bool controllerAndViewReady: false @@ -269,23 +269,10 @@ QGCView { // Main view Qml starts here - QGCLabel { - id: header - font.pixelSize: ScreenTools.largeFontPixelSize - text: "RADIO CONFIG" - } - - Item { - id: spacer - anchors.top: header.bottom - width: parent.width - height: 10 - } - // Left side column Column { id: leftColumn - anchors.top: spacer.bottom + anchors.top: parent.top anchors.left: parent.left anchors.right: columnSpacer.left spacing: 10 @@ -504,7 +491,7 @@ QGCView { // Right side column Column { id: rightColumn - anchors.top: spacer.bottom + anchors.top: parent.top anchors.right: parent.right width: defaultTextWidth * 35 spacing: 10 diff --git a/src/AutoPilotPlugins/PX4/SafetyComponent.qml b/src/AutoPilotPlugins/PX4/SafetyComponent.qml index 89a27a513..9c6ca9601 100644 --- a/src/AutoPilotPlugins/PX4/SafetyComponent.qml +++ b/src/AutoPilotPlugins/PX4/SafetyComponent.qml @@ -56,13 +56,6 @@ QGCView { Column { anchors.fill: parent - QGCLabel { - text: "SAFETY CONFIG" - font.pixelSize: ScreenTools.largeFontPixelSize - } - - Item { height: 20; width: 10 } // spacer - //----------------------------------------------------------------- //-- Return Home Triggers diff --git a/src/AutoPilotPlugins/PX4/SensorsComponent.qml b/src/AutoPilotPlugins/PX4/SensorsComponent.qml index ddf214c72..c08e7acb7 100644 --- a/src/AutoPilotPlugins/PX4/SensorsComponent.qml +++ b/src/AutoPilotPlugins/PX4/SensorsComponent.qml @@ -278,13 +278,6 @@ QGCView { Column { anchors.fill: parent - QGCLabel { - text: "SENSORS CONFIG" - font.pixelSize: ScreenTools.largeFontPixelSize - } - - Item { height: ScreenTools.defaultFontPixelHeight; width: 10 } // spacer - Row { readonly property int buttonWidth: ScreenTools.defaultFontPixelWidth * 15 diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index ec577fb27..e3e6fba53 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -296,8 +296,9 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) QSettings::setDefaultFormat(QSettings::IniFormat); QSettings settings; + qDebug() << "Settings location" << settings.fileName() << settings.isWritable(); + #ifdef UNITTEST_BUILD - qDebug() << "Settings location" << settings.fileName(); Q_ASSERT(settings.isWritable()); #endif // The setting will delete all settings on this boot @@ -316,7 +317,6 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) // Initialize Video Streaming initializeVideoStreaming(argc, argv); - } QGCApplication::~QGCApplication() @@ -421,6 +421,8 @@ void QGCApplication::_initCommon(void) } qDebug() << "Saved files location" << savedFilesLocation; settings.setValue(_savedFilesLocationKey, savedFilesLocation); + + settings.sync(); } bool QGCApplication::_initForNormalAppBoot(void) diff --git a/src/QGCMessageBox.h b/src/QGCMessageBox.h index 646fdc854..e74295f72 100644 --- a/src/QGCMessageBox.h +++ b/src/QGCMessageBox.h @@ -107,10 +107,11 @@ private: } } + qDebug() << "QGCMessageBox (unit testing)" << title << text; + #ifdef QT_DEBUG #ifndef __mobile__ if (qgcApp()->runningUnitTests()) { - qDebug() << "QGCMessageBox (unit testing)" << title << text; return UnitTest::_messageBox(icon, title, text, buttons, defaultButton); } else #endif diff --git a/src/QmlControls/ParameterEditor.qml b/src/QmlControls/ParameterEditor.qml index 64378485f..2e04d8274 100644 --- a/src/QmlControls/ParameterEditor.qml +++ b/src/QmlControls/ParameterEditor.qml @@ -212,6 +212,8 @@ QGCView { width: defaultTextWidth * 25 height: parent.height + Component.onCompleted: flickableItem.flickableDirection = Flickable.VerticalFlick + Column { Repeater { model: controller.componentIds @@ -317,8 +319,8 @@ QGCView { QGCLabel { id: titleText - font.pixelSize: ScreenTools.largeFontPixelSize - text: "PARAMETER EDITOR" + font.pixelSize: ScreenTools.mediumFontPixelSize + text: "PARAMETERS" } QGCButton { diff --git a/src/VehicleSetup/FirmwareUpgrade.qml b/src/VehicleSetup/FirmwareUpgrade.qml index 864a48bf9..131605548 100644 --- a/src/VehicleSetup/FirmwareUpgrade.qml +++ b/src/VehicleSetup/FirmwareUpgrade.qml @@ -38,7 +38,7 @@ QGCView { viewPanel: panel // User visible strings - readonly property string title: "FIRMWARE UPDATE" + readonly property string title: "FIRMWARE" readonly property string highlightPrefix: "" readonly property string highlightSuffix: "" readonly property string welcomeText: "QGroundControl can upgrade the firmware on Pixhawk devices, 3DR Radios and PX4 Flow Smart Cameras." @@ -392,7 +392,7 @@ QGCView { QGCLabel { id: titleLabel text: title - font.pixelSize: ScreenTools.largeFontPixelSize + font.pixelSize: ScreenTools.mediumFontPixelSize } ProgressBar { diff --git a/src/VehicleSetup/JoystickConfig.qml b/src/VehicleSetup/JoystickConfig.qml index 80cfd128c..fdba90d6c 100644 --- a/src/VehicleSetup/JoystickConfig.qml +++ b/src/VehicleSetup/JoystickConfig.qml @@ -149,8 +149,8 @@ QGCView { QGCLabel { id: header - font.pixelSize: ScreenTools.largeFontPixelSize - text: "JOYSTICK CONFIG" + font.pixelSize: ScreenTools.mediumFontPixelSize + text: "JOYSTICK" } Item { diff --git a/src/VehicleSetup/SetupView.qml b/src/VehicleSetup/SetupView.qml index 09ab45f64..cc039b6bd 100644 --- a/src/VehicleSetup/SetupView.qml +++ b/src/VehicleSetup/SetupView.qml @@ -34,29 +34,25 @@ import QGroundControl.Controls 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.MultiVehicleManager 1.0 -Rectangle { - id: topLevel - color: palette.window - z: zOrder // zOrder comes from the Loader in MainWindow.qml +Item { + z: zOrder // zOrder comes from the Loader in MainWindow.qml - QGCPalette { id: palette; colorGroupEnabled: true } + QGCPalette { id: qgcPal; colorGroupEnabled: true } ExclusiveGroup { id: setupButtonGroup } - QGCLabel { id: _textMeasure; text: "X"; visible: false } + readonly property real _defaultTextHeight: ScreenTools.defaultFontPixelHeight + readonly property real _defaultTextWidth: ScreenTools.defaultFontPixelWidth + readonly property real _margin: _defaultTextHeight / 2 + readonly property real _buttonWidth: _defaultTextWidth * 15 + readonly property string _armedVehicleText: "This operation cannot be performed while vehicle is armed." - readonly property real defaultTextHeight: _textMeasure.contentHeight - readonly property real defaultTextWidth: _textMeasure.contentWidth - readonly property real buttonWidth: defaultTextWidth * 15 - - property string messagePanelText: "missing message panel text" - readonly property string armedVehicleText: "This operation cannot be performed while vehicle is armed." - - property bool fullParameterVehicleAvailable: multiVehicleManager.parameterReadyVehicleAvailable && !multiVehicleManager.activeVehicle.missingParameters + property string _messagePanelText: "missing message panel text" + property bool _fullParameterVehicleAvailable: multiVehicleManager.parameterReadyVehicleAvailable && !multiVehicleManager.activeVehicle.missingParameters function showSummaryPanel() { - if (fullParameterVehicleAvailable) { + if (_fullParameterVehicleAvailable) { panelLoader.source = "VehicleSummary.qml"; } else if (multiVehicleManager.parameterReadyVehicleAvailable) { panelLoader.sourceComponent = missingParametersVehicleSummaryComponent @@ -69,7 +65,7 @@ Rectangle { { if (!ScreenTools.isMobile) { if (multiVehicleManager.activeVehicleAvailable && multiVehicleManager.activeVehicle.armed) { - messagePanelText = armedVehicleText + _messagePanelText = _armedVehicleText panelLoader.sourceComponent = messagePanelComponent } else { panelLoader.source = "FirmwareUpgrade.qml"; @@ -80,7 +76,7 @@ Rectangle { function showJoystickPanel() { if (multiVehicleManager.activeVehicleAvailable && multiVehicleManager.activeVehicle.armed) { - messagePanelText = armedVehicleText + _messagePanelText = _armedVehicleText panelLoader.sourceComponent = messagePanelComponent } else { panelLoader.source = "JoystickConfig.qml"; @@ -95,11 +91,11 @@ Rectangle { function showVehicleComponentPanel(vehicleComponent) { if (multiVehicleManager.activeVehicle.armed) { - messagePanelText = armedVehicleText + _messagePanelText = _armedVehicleText panelLoader.sourceComponent = messagePanelComponent } else { if (vehicleComponent.prerequisiteSetup != "") { - messagePanelText = vehicleComponent.prerequisiteSetup + " setup must be completed prior to " + vehicleComponent.name + " setup." + _messagePanelText = vehicleComponent.prerequisiteSetup + " setup must be completed prior to " + vehicleComponent.name + " setup." panelLoader.sourceComponent = messagePanelComponent } else { panelLoader.source = vehicleComponent.setupSource @@ -122,20 +118,20 @@ Rectangle { id: disconnectedVehicleSummaryComponent Rectangle { - color: palette.windowShade + color: qgcPal.windowShade QGCLabel { - anchors.margins: defaultTextWidth * 2 + anchors.margins: _defaultTextWidth * 2 anchors.fill: parent verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap font.pixelSize: ScreenTools.mediumFontPixelSize text: "Welcome to QGroundControl. " + - "QGroundControl supports any mavlink enabled vehicle. " + - "If you are using the PX4 Flight Stack, you also get full support for setting up and calibrating your vehicle. "+ - "Otherwise you will only get support for flying a vehicle which has been setup and calibrated using other means. " + - "Use the Connect button above to connect to your vehicle." + "QGroundControl supports any mavlink enabled vehicle. " + + "If you are using the PX4 Flight Stack, you also get full support for setting up and calibrating your vehicle. "+ + "Otherwise you will only get support for flying a vehicle which has been setup and calibrated using other means. " + + "Use the Connect button above to connect to your vehicle." onLinkActivated: Qt.openUrlExternally(link) } @@ -146,17 +142,17 @@ Rectangle { id: missingParametersVehicleSummaryComponent Rectangle { - color: palette.windowShade + color: qgcPal.windowShade QGCLabel { - anchors.margins: defaultTextWidth * 2 + anchors.margins: _defaultTextWidth * 2 anchors.fill: parent verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap font.pixelSize: ScreenTools.mediumFontPixelSize text: "You are currently connected to a vehicle, but that vehicle did not return back the full parameter list. " + - "Because of this the full set of vehicle setup options are not available." + "Because of this the full set of vehicle setup options are not available." onLinkActivated: Qt.openUrlExternally(link) } @@ -168,98 +164,126 @@ Rectangle { Item { QGCLabel { - anchors.margins: defaultTextWidth * 2 + anchors.margins: _defaultTextWidth * 2 anchors.fill: parent verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter wrapMode: Text.WordWrap font.pixelSize: ScreenTools.mediumFontPixelSize - text: messagePanelText + text: _messagePanelText } } } - Flickable { - id: buttonFlickable - width: buttonWidth - height: parent.height - contentWidth: buttonWidth - contentHeight: buttonColumn.height - flickableDirection: Flickable.VerticalFlick - - Column { - id: buttonColumn - width: buttonWidth - - SubMenuButton { - id: summaryButton - width: buttonWidth - imageResource: "/qmlimages/VehicleSummaryIcon.png" - setupIndicator: false - exclusiveGroup: setupButtonGroup - text: "SUMMARY" - - onClicked: showSummaryPanel() - } - - SubMenuButton { - id: firmwareButton - width: buttonWidth - imageResource: "/qmlimages/FirmwareUpgradeIcon.png" - setupIndicator: false - exclusiveGroup: setupButtonGroup - visible: !ScreenTools.isMobile - text: "FIRMWARE" - - onClicked: showFirmwarePanel() - } - - SubMenuButton { - id: joystickButton - width: buttonWidth - setupIndicator: true - setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false - exclusiveGroup: setupButtonGroup - visible: fullParameterVehicleAvailable && joystickManager.joysticks.length != 0 - text: "JOYSTICK" - - onClicked: showJoystickPanel() - } - - Repeater { - model: fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0 - - SubMenuButton { - width: buttonWidth - imageResource: modelData.iconResource - setupIndicator: modelData.requiresSetup - setupComplete: modelData.setupComplete - exclusiveGroup: setupButtonGroup - text: modelData.name.toUpperCase() - - onClicked: showVehicleComponentPanel(modelData) - } - } - - SubMenuButton { - width: buttonWidth - setupIndicator: false - exclusiveGroup: setupButtonGroup - visible: multiVehicleManager.parameterReadyVehicleAvailable - text: "PARAMETERS" + Rectangle { + //anchors.margins: _defaultTextHeight * 2 + anchors.fill: parent + color: qgcPal.window + opacity: 0.8 + + QGCLabel { + id: title + anchors.topMargin: _margin + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + horizontalAlignment: Text.AlignHCenter + font.pixelSize: ScreenTools.largeFontPixelSize + text: "Vehicle Setup" + } - onClicked: showParametersPanel() + Rectangle { + anchors.topMargin: _margin + anchors.top: title.bottom + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + color: qgcPal.windowShade + + Flickable { + id: buttonFlickable + width: _buttonWidth + height: parent.height + contentWidth: _buttonWidth + contentHeight: buttonColumn.height + flickableDirection: Flickable.VerticalFlick + + Column { + id: buttonColumn + width: _buttonWidth + spacing: _defaultTextHeight / 2 + + SubMenuButton { + id: summaryButton + width: _buttonWidth + imageResource: "/qmlimages/VehicleSummaryIcon.png" + setupIndicator: false + exclusiveGroup: setupButtonGroup + text: "SUMMARY" + + onClicked: showSummaryPanel() + } + + SubMenuButton { + id: firmwareButton + width: _buttonWidth + imageResource: "/qmlimages/FirmwareUpgradeIcon.png" + setupIndicator: false + exclusiveGroup: setupButtonGroup + visible: !ScreenTools.isMobile + text: "FIRMWARE" + + onClicked: showFirmwarePanel() + } + + SubMenuButton { + id: joystickButton + width: _buttonWidth + setupIndicator: true + setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false + exclusiveGroup: setupButtonGroup + visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0 + text: "JOYSTICK" + + onClicked: showJoystickPanel() + } + + Repeater { + model: _fullParameterVehicleAvailable ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0 + + SubMenuButton { + width: _buttonWidth + imageResource: modelData.iconResource + setupIndicator: modelData.requiresSetup + setupComplete: modelData.setupComplete + exclusiveGroup: setupButtonGroup + text: modelData.name.toUpperCase() + + onClicked: showVehicleComponentPanel(modelData) + } + } + + SubMenuButton { + width: _buttonWidth + setupIndicator: false + exclusiveGroup: setupButtonGroup + visible: multiVehicleManager.parameterReadyVehicleAvailable + text: "PARAMETERS" + + onClicked: showParametersPanel() + } + } // Column + } // Flickable + + Loader { + id: panelLoader + anchors.leftMargin: _defaultTextWidth + anchors.rightMargin: _defaultTextWidth + anchors.left: buttonFlickable.right + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom } - } // Column - } // Flickable - - Loader { - id: panelLoader - anchors.leftMargin: defaultTextWidth - anchors.rightMargin: defaultTextWidth - anchors.left: buttonFlickable.right - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom + } } } diff --git a/src/VehicleSetup/VehicleSummary.qml b/src/VehicleSetup/VehicleSummary.qml index fb918799a..9e37fb461 100644 --- a/src/VehicleSetup/VehicleSummary.qml +++ b/src/VehicleSetup/VehicleSummary.qml @@ -43,16 +43,11 @@ Rectangle { anchors.fill: parent spacing: ScreenTools.defaultFontPixelHeight - QGCLabel { - text: "VEHICLE SUMMARY" - font.pixelSize: ScreenTools.largeFontPixelSize - } - QGCLabel { width: parent.width wrapMode: Text.WordWrap color: setupComplete ? qgcPal.text : qgcPal.warningText - font.pixelSize: setupComplete ? ScreenTools.defaultFontPixelSize : ScreenTools.mediumFontPixelSize + font.pixelSize: ScreenTools.mediumFontPixelSize text: setupComplete ? "Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." : "WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left." diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index 21a95a011..83987c50f 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -193,6 +193,15 @@ Item { _controller.onPlanView(); } } + + MenuSeparator { } + + + MenuItem { + text: "QGroundControl Settings" + + onTriggered: controller.showSettings() + } } // Menu Component { diff --git a/src/ui/toolbar/MainToolBarController.cc b/src/ui/toolbar/MainToolBarController.cc index 3ae149475..dc8242f91 100644 --- a/src/ui/toolbar/MainToolBarController.cc +++ b/src/ui/toolbar/MainToolBarController.cc @@ -339,3 +339,8 @@ void MainToolBarController::onToolBarMessageClosed(void) _toolbarMessageVisible = false; _delayedShowToolBarMessage(); } + +void MainToolBarController::showSettings(void) +{ + MainWindow::instance()->showSettings(); +} diff --git a/src/ui/toolbar/MainToolBarController.h b/src/ui/toolbar/MainToolBarController.h index 43d296632..eaf5d14a8 100644 --- a/src/ui/toolbar/MainToolBarController.h +++ b/src/ui/toolbar/MainToolBarController.h @@ -57,6 +57,7 @@ public: Q_INVOKABLE void onDisconnect(QString conf); Q_INVOKABLE void onEnterMessageArea(int x, int y); Q_INVOKABLE void onToolBarMessageClosed(void); + Q_INVOKABLE void showSettings(void); Q_PROPERTY(double height MEMBER _toolbarHeight NOTIFY heightChanged) Q_PROPERTY(QStringList configList MEMBER _linkConfigurations NOTIFY configListChanged) -- 2.22.0