From c5549a287bfe13007bb63cb6f612529aa905cec6 Mon Sep 17 00:00:00 2001 From: m_thread Date: Wed, 26 Feb 2014 12:36:53 +0100 Subject: [PATCH] OP-1244 Added csv export implementation. --- .../plugins/flightlog/flightlogmanager.cpp | 24 ++++++++++++++++++- .../src/plugins/flightlog/flightlogmanager.h | 2 ++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp index 10cc04f3c..f0c3e6f74 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.cpp @@ -241,6 +241,17 @@ void FlightLogManager::exportToOPL(QString fileName) void FlightLogManager::exportToCSV(QString fileName) { + QFile csvFile(fileName); + if (csvFile.open(QFile::ReadWrite)) { + QTextStream csvStream(&csvFile); + + csvStream << "Flight" << '\t' << "Flight Time" << '\t' << "Entry" << '\t' << "Data" << '\n'; + foreach (ExtendedDebugLogEntry *entry , m_logEntries) { + entry->toCSV(&csvStream); + } + csvFile.flush(); + csvFile.close(); + } } void FlightLogManager::exportToXML(QString fileName) @@ -254,7 +265,7 @@ void FlightLogManager::exportToXML(QString fileName) xmlWriter.writeStartDocument("1.0", true); xmlWriter.writeStartElement("logs"); - xmlWriter.writeComment("This file was created by the export function in OpenPilot GCS."); + xmlWriter.writeComment("This file was created by the flight log export in OpenPilot GCS."); foreach (ExtendedDebugLogEntry *entry , m_logEntries) { entry->toXML(&xmlWriter); } @@ -367,6 +378,17 @@ void ExtendedDebugLogEntry::toXML(QXmlStreamWriter *xmlWriter) xmlWriter->writeEndElement(); //entry } +void ExtendedDebugLogEntry::toCSV(QTextStream *csvStream) +{ + QString data; + if (getType() == DebugLogEntry::TYPE_TEXT) { + data = QString((const char *)getData().Data); + } else if (getType() == DebugLogEntry::TYPE_UAVOBJECT) { + data = m_object->toString().replace("\n", "").replace("\t", ""); + } + *csvStream << QString::number(getFlight()) << '\t' << QString::number(getFlightTime()) << '\t' << QString::number(getEntry()) << '\t' << data << '\n'; +} + void ExtendedDebugLogEntry::setData(const DebugLogEntry::DataFields &data, UAVObjectManager *objectManager) { DebugLogEntry::setData(data); diff --git a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h index 30b230169..cd00ec9e6 100644 --- a/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h +++ b/ground/openpilotgcs/src/plugins/flightlog/flightlogmanager.h @@ -33,6 +33,7 @@ #include #include #include +#include #include "uavobjectmanager.h" #include "debuglogentry.h" @@ -48,6 +49,7 @@ public: QString getLogString(); void toXML(QXmlStreamWriter *xmlWriter); + void toCSV(QTextStream *csvStream); UAVDataObject *uavObject() { return m_object;