From d25eb01583b98ec02bfa7596d983c7679ebe83ed Mon Sep 17 00:00:00 2001 From: m_thread Date: Sat, 8 Mar 2014 17:28:46 +0100 Subject: [PATCH] OP-1245 Added separate spinbox for period when throttled or periodically is chosen. Added empty placeholder methods for some functions. --- .../src/plugins/flightlog/FlightLogDialog.qml | 57 ++++++++++++++++++- .../plugins/flightlog/flightlogmanager.cpp | 35 +++++++++++- .../src/plugins/flightlog/flightlogmanager.h | 32 +++++++++-- 3 files changed, 113 insertions(+), 11 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/flightlog/FlightLogDialog.qml b/ground/openpilotgcs/src/plugins/flightlog/FlightLogDialog.qml index aeabd5e24..47cf5317d 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/FlightLogDialog.qml +++ b/ground/openpilotgcs/src/plugins/flightlog/FlightLogDialog.qml @@ -227,6 +227,47 @@ Rectangle { } } + Component { + id: spinnerEditableDelegate + Item { + + Text { + width: parent.width + anchors.left: parent.left + anchors.verticalCenter: parent.verticalCenter + elide: styleData.elideMode + text: styleData.value !== undefined && (logManager.uavoEntries[styleData.row].setting > 1) ? + parseInt(logManager.uavoEntries[styleData.row].period) + " ms" : "-" + color: styleData.textColor + //visible: !styleData.selected && (logManager.uavoEntries[styleData.row].setting <= 1) + enabled: (logManager.uavoEntries[styleData.row].setting > 1) + } + Loader { + id: loaderEditor + anchors.fill: parent + Connections { + target: loaderEditor.item + onValueChanged: { + logManager.uavoEntries[styleData.row].period = loaderEditor.item.value + } + } + sourceComponent: styleData.selected && (logManager.uavoEntries[styleData.row].setting > 1) ? editor : null + Component { + id: editor + SpinBox { + id: spinner + decimals: 0 + minimumValue: 0 + maximumValue: 1000 * 60 * 60 //1h + suffix: "ms" + stepSize: 10 + value: styleData.value + } + } + } + } + } + TableView { id: settingsTable Layout.fillWidth: true @@ -243,7 +284,7 @@ Rectangle { TableViewColumn { role: "name"; title: qsTr("UAVObject"); - width: 200; + width: 250; delegate: Text { verticalAlignment: Text.AlignVCenter @@ -256,9 +297,16 @@ Rectangle { TableViewColumn { role: "setting"; title: qsTr("Settings"); - width: 200; + width: 160; delegate: comboEditableDelegate } + + TableViewColumn { + role: "period"; + title: qsTr("Period"); + width: 120; + delegate: spinnerEditableDelegate + } } RowLayout { Layout.fillWidth: true @@ -268,16 +316,19 @@ Rectangle { enabled: !logManager.disableControls && logManager.boardConnected text: qsTr("Load...") activeFocusOnPress: true + onClicked: logManager.loadSettings() } Button { enabled: !logManager.disableControls && logManager.boardConnected text: qsTr("Save...") activeFocusOnPress: true + onClicked: logManager.saveSettings() } Button { enabled: !logManager.disableControls && logManager.boardConnected text: qsTr("Reset") activeFocusOnPress: true + onClicked: logManager.resetSettings() } Rectangle { Layout.fillWidth: true @@ -286,11 +337,13 @@ Rectangle { enabled: !logManager.disableControls && logManager.boardConnected text: qsTr("Apply to board") activeFocusOnPress: true + onClicked: logManager.applySettingsToBoard() } Button { enabled: !logManager.disableControls && logManager.boardConnected text: qsTr("Save to board") activeFocusOnPress: true + onClicked: logManager.saveSettingsToBoard() } } } diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp index 0823f4f94..b836d4813 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp @@ -80,6 +80,9 @@ FlightLogManager::~FlightLogManager() while (!m_logEntries.isEmpty()) { delete m_logEntries.takeFirst(); } + while (!m_uavoEntries.isEmpty()) { + delete m_uavoEntries.takeFirst(); + } } void addLogEntries(QQmlListProperty *list, ExtendedDebugLogEntry *entry) @@ -377,6 +380,33 @@ void FlightLogManager::cancelExportLogs() m_cancelDownload = true; } +void FlightLogManager::loadSettings() +{ + +} + +void FlightLogManager::saveSettings() +{ + +} + +void FlightLogManager::resetSettings() +{ + foreach (UAVOLogSettingsWrapper *wrapper, m_uavoEntries) { + wrapper->setSetting(UAVOLogSettingsWrapper::DISABLED); + } +} + +void FlightLogManager::applySettingsToBoard() +{ + +} + +void FlightLogManager::saveSettingsToBoard() +{ + +} + void FlightLogManager::updateFlightEntries(quint16 currentFlight) { Q_UNUSED(currentFlight); @@ -408,8 +438,7 @@ void FlightLogManager::setupUAVOWrappers() void FlightLogManager::setupLogSettings() { - m_logSettings << tr("Disabled") << tr("When updated") << tr("Every 10ms") << tr("Every 50ms") << tr("Every 100ms") - << tr("Every 500ms") << tr("Every second") << tr("Every 5s") << tr("Every 10s") << tr("Every 30s") << tr("Every minute"); + m_logSettings << tr("Disabled") << tr("When updated") << tr("Throttled") << tr("Periodically"); } void FlightLogManager::setupLogStatuses() @@ -495,7 +524,7 @@ UAVOLogSettingsWrapper::UAVOLogSettingsWrapper() : QObject() {} UAVOLogSettingsWrapper::UAVOLogSettingsWrapper(UAVObject *object) : QObject(), - m_object(object), m_setting(DISABLED) + m_object(object), m_setting(DISABLED), m_period(0) {} UAVOLogSettingsWrapper::~UAVOLogSettingsWrapper() diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h index 9589341d8..0a747fab1 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h @@ -46,10 +46,10 @@ class UAVOLogSettingsWrapper : public QObject { Q_OBJECT Q_PROPERTY(QString name READ name NOTIFY nameChanged) Q_PROPERTY(int setting READ setting WRITE setSetting NOTIFY settingChanged) + Q_PROPERTY(int period READ period WRITE setPeriod NOTIFY periodChanged) public: - enum UAVLogSetting {DISABLED = 0, ON_CHANGE, EVERY_10MS, EVERY_50MS, EVERY_100MS, - EVERY_500MS, EVERY_1S, EVERY_5S, EVERY_10S, EVERY_30S, EVERY_1M}; + enum UAVLogSetting {DISABLED = 0, ON_CHANGE, THROTTLED, PERIODICALLY}; explicit UAVOLogSettingsWrapper(); explicit UAVOLogSettingsWrapper(UAVObject* object); @@ -65,22 +65,37 @@ public: return m_setting; } + int period() const + { + return m_period; + } + public slots: void setSetting(int setting) { - if (m_setting != (int)setting) { - m_setting = (int)setting; - emit settingChanged((int)setting); + if (m_setting != setting) { + m_setting = setting; + emit settingChanged(setting); + } + } + + void setPeriod(int arg) + { + if (m_period != arg) { + m_period = arg; + emit periodChanged(arg); } } signals: void settingChanged(int setting); - void nameChanged(); + void nameChanged(QString name); + void periodChanged(int period); private: UAVObject *m_object; int m_setting; + int m_period; }; class ExtendedDebugLogEntry : public DebugLogEntry { @@ -203,6 +218,11 @@ public slots: void retrieveLogs(int flightToRetrieve = -1); void exportLogs(); void cancelExportLogs(); + void loadSettings(); + void saveSettings(); + void resetSettings(); + void applySettingsToBoard(); + void saveSettingsToBoard(); void setDisableControls(bool arg) {