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

OP-1245 Added functionality to save settings as xml file.

This commit is contained in:
m_thread 2014-03-09 13:15:17 +01:00
parent 171abbb111
commit 41865d5e78
3 changed files with 64 additions and 4 deletions

View File

@ -187,7 +187,10 @@ Rectangle {
ComboBox {
enabled: !logManager.disableControls && logManager.boardConnected
model: logManager.logStatuses
currentIndex: logSettings.getLoggingEnabled()
currentIndex: logSettings.loggingEnabled
onCurrentIndexChanged: {
logManager.setLoggingEnabled(currentIndex);
}
}
}

View File

@ -386,7 +386,39 @@ void FlightLogManager::loadSettings()
{}
void FlightLogManager::saveSettings()
{}
{
QString xmlFilter = tr("XML file %1").arg("(*.xml)");
QString fileName = QFileDialog::getSaveFileName(NULL, tr("Save Log Settings"),
QString("OP-FlightLogSettings"), QString("%1").arg(xmlFilter));
if (!fileName.isEmpty()) {
if (!fileName.endsWith(".xml")) {
fileName.append(".xml");
}
QFile xmlFile(fileName);
if (xmlFile.open(QFile::WriteOnly | QFile::Truncate)) {
QXmlStreamWriter xmlWriter(&xmlFile);
xmlWriter.setAutoFormatting(true);
xmlWriter.setAutoFormattingIndent(4);
xmlWriter.writeStartDocument("1.0", true);
xmlWriter.writeComment("This file was created by the flight log settings function in OpenPilot GCS.");
xmlWriter.writeStartElement("settings");
xmlWriter.writeAttribute("enabled", QString::number(m_loggingEnabled));
foreach(UAVOLogSettingsWrapper * wrapper, m_uavoEntries) {
xmlWriter.writeStartElement("setting");
xmlWriter.writeAttribute("name", wrapper->name());
xmlWriter.writeAttribute("level", QString::number(wrapper->setting()));
xmlWriter.writeAttribute("period", QString::number(wrapper->period()));
xmlWriter.writeEndElement();
}
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
xmlFile.flush();
xmlFile.close();
}
}
}
void FlightLogManager::resetSettings()
{

View File

@ -43,7 +43,9 @@
#include "uavtalk/telemetrymanager.h"
class UAVOLogSettingsWrapper : public QObject {
Q_OBJECT Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_OBJECT
Q_PROPERTY(UAVObject *object READ object NOTIFY objectChanged)
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)
@ -69,6 +71,11 @@ public:
return m_period;
}
UAVObject *object() const
{
return m_object;
}
public slots:
void setSetting(int setting)
{
@ -89,7 +96,8 @@ public slots:
signals:
void settingChanged(int setting);
void nameChanged(QString name);
void periodChanged(int period);
void periodChanged(int period);
void objectChanged(UAVObject * arg);
private:
UAVObject *m_object;
@ -141,6 +149,7 @@ class FlightLogManager : public QObject {
Q_PROPERTY(QQmlListProperty<UAVOLogSettingsWrapper> uavoEntries READ uavoEntries NOTIFY uavoEntriesChanged)
Q_PROPERTY(QStringList logSettings READ logSettings NOTIFY logSettingsChanged)
Q_PROPERTY(QStringList logStatuses READ logStatuses NOTIFY logStatusesChanged)
Q_PROPERTY(int loggingEnabled READ loggingEnabled WRITE setLoggingEnabled NOTIFY loggingEnabledChanged)
public:
@ -199,6 +208,11 @@ public:
return m_flightLogSettings;
}
int loggingEnabled() const
{
return m_loggingEnabled;
}
signals:
void logEntriesChanged();
void flightEntriesChanged();
@ -211,6 +225,8 @@ signals:
void logStatusesChanged(QStringList arg);
void loggingEnabledChanged(int arg);
public slots:
void clearAllLogs();
void retrieveLogs(int flightToRetrieve = -1);
@ -254,6 +270,14 @@ public slots:
}
}
void setLoggingEnabled(int arg)
{
if (m_loggingEnabled != arg) {
m_loggingEnabled = arg;
emit loggingEnabledChanged(arg);
}
}
private slots:
void updateFlightEntries(quint16 currentFlight);
void setupUAVOWrappers();
@ -286,6 +310,7 @@ private:
bool m_cancelDownload;
bool m_adjustExportedTimestamps;
bool m_boardConnected;
int m_loggingEnabled;
};
#endif // FLIGHTLOGMANAGER_H