Added the ability to save all frame details within the details screen

to file.
This commit is contained in:
Collin Kidder
2016-01-03 18:37:58 -05:00
parent e2903c9058
commit 1e04e5fb31
3 changed files with 113 additions and 42 deletions
+59 -3
View File
@@ -13,8 +13,10 @@ FrameInfoWindow::FrameInfoWindow(const QVector<CANFrame> *frames, QWidget *paren
modelFrames = frames; modelFrames = frames;
connect(ui->listFrameID, SIGNAL(currentTextChanged(QString)), this, SLOT(updateDetailsWindow(QString))); connect(ui->listFrameID, &QListWidget::currentTextChanged, this, &FrameInfoWindow::updateDetailsWindow);
connect(MainWindow::getReference(), SIGNAL(framesUpdated(int)), this, SLOT(updatedFrames(int))); connect(MainWindow::getReference(), &MainWindow::framesUpdated, this, &FrameInfoWindow::updatedFrames);
connect(ui->btnSave, &QAbstractButton::clicked, this, &FrameInfoWindow::saveDetails);
} }
void FrameInfoWindow::showEvent(QShowEvent* event) void FrameInfoWindow::showEvent(QShowEvent* event)
@@ -230,7 +232,9 @@ void FrameInfoWindow::updateDetailsWindow(QString newID)
} }
} }
avgInterval = avgInterval / (frameCache.count() - 1); if (frameCache.count() > 1)
avgInterval = avgInterval / (frameCache.count() - 1);
else avgInterval = 0;
tempItem = new QTreeWidgetItem(); tempItem = new QTreeWidgetItem();
@@ -317,3 +321,55 @@ void FrameInfoWindow::refreshIDList()
ui->listFrameID->sortItems(); ui->listFrameID->sortItems();
ui->lblFrameID->setText(tr("Frame IDs: (") + QString::number(ui->listFrameID->count()) + tr(" unique ids)")); ui->lblFrameID->setText(tr("Frame IDs: (") + QString::number(ui->listFrameID->count()) + tr(" unique ids)"));
} }
void FrameInfoWindow::saveDetails()
{
QString filename;
QFileDialog dialog(this);
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".txt";
if (dialog.selectedNameFilter() == filters[0])
{
QFile *outFile = new QFile(filename);
if (!outFile->open(QIODevice::WriteOnly | QIODevice::Text))
{
delete outFile;
return;
}
//go through all IDs, recalculate the data, and then save it to file
for (int i = 0; i < ui->listFrameID->count(); i++)
{
updateDetailsWindow(ui->listFrameID->item(i)->text());
dumpNode(ui->treeDetails->invisibleRootItem(), outFile, 0);
outFile->write("\n\n");
}
outFile->close();
delete outFile;
}
}
}
void FrameInfoWindow::dumpNode(QTreeWidgetItem* item, QFile *file, int indent)
{
for (int i = 0; i < indent; i++) file->write("\t");
file->write(item->text(0).toUtf8());
file->write("\n");
for( int i = 0; i < item->childCount(); ++i )
dumpNode( item->child(i), file, indent + 1 );
}
+4
View File
@@ -2,7 +2,9 @@
#define FRAMEINFOWINDOW_H #define FRAMEINFOWINDOW_H
#include <QDialog> #include <QDialog>
#include <QFile>
#include <QListWidget> #include <QListWidget>
#include <QTreeWidget>
#include "can_structs.h" #include "can_structs.h"
namespace Ui { namespace Ui {
@@ -21,6 +23,7 @@ public:
private slots: private slots:
void updateDetailsWindow(QString); void updateDetailsWindow(QString);
void updatedFrames(int); void updatedFrames(int);
void saveDetails();
private: private:
Ui::FrameInfoWindow *ui; Ui::FrameInfoWindow *ui;
@@ -33,6 +36,7 @@ private:
void closeEvent(QCloseEvent *event); void closeEvent(QCloseEvent *event);
void readSettings(); void readSettings();
void writeSettings(); void writeSettings();
void dumpNode(QTreeWidgetItem* item, QFile *file, int indent);
}; };
#endif // FRAMEINFOWINDOW_H #endif // FRAMEINFOWINDOW_H
+50 -39
View File
@@ -13,53 +13,64 @@
<property name="windowTitle"> <property name="windowTitle">
<string>Detailed Frame Information</string> <string>Detailed Frame Information</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>
<widget class="QLabel" name="lblFrameID"> <layout class="QVBoxLayout" name="verticalLayout_3">
<property name="text"> <item>
<string>Frame IDs:</string> <widget class="QLabel" name="lblFrameID">
</property> <property name="text">
</widget> <string>Frame IDs:</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="listFrameID">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>120</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<widget class="QListWidget" name="listFrameID"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="sizePolicy"> <item>
<sizepolicy hsizetype="Fixed" vsizetype="Expanding"> <widget class="QLabel" name="label_2">
<horstretch>0</horstretch> <property name="text">
<verstretch>0</verstretch> <string>Details:</string>
</sizepolicy> </property>
</property> </widget>
<property name="minimumSize"> </item>
<size> <item>
<width>120</width> <widget class="QTreeWidget" name="treeDetails">
<height>0</height> <column>
</size> <property name="text">
</property> <string notr="true">1</string>
</widget> </property>
</column>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout"> <widget class="QPushButton" name="btnSave">
<item> <property name="text">
<widget class="QLabel" name="label_2"> <string>Save details to file</string>
<property name="text"> </property>
<string>Details:</string> </widget>
</property>
</widget>
</item>
<item>
<widget class="QTreeWidget" name="treeDetails">
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</widget> </widget>