1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-18 08:54:15 +01:00

OP-1245 Added separate spinbox for period when throttled or periodically is chosen.

Added empty placeholder methods for some functions.
This commit is contained in:
m_thread 2014-03-08 17:28:46 +01:00
parent cbe4eea01e
commit d25eb01583
3 changed files with 113 additions and 11 deletions

View File

@ -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()
}
}
}

View File

@ -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<ExtendedDebugLogEntry> *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()

View File

@ -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)
{