From 2d01f695e2c7c197c1fd5364daf137630c3bfa62 Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Wed, 12 Jul 2017 20:02:20 -0400 Subject: [PATCH] Added ability to change time format string for when you're in System Clock mode. Fixed code so that editing settings in the settings dialog will now immediately take effect in the program. --- canframemodel.cpp | 10 +++++++++- canframemodel.h | 2 ++ mainsettingsdialog.cpp | 4 ++++ mainsettingsdialog.h | 3 +++ mainwindow.cpp | 4 +++- mainwindow.h | 2 +- ui/mainsettingsdialog.ui | 16 +++++++++++++++- 7 files changed, 37 insertions(+), 4 deletions(-) diff --git a/canframemodel.cpp b/canframemodel.cpp index 93aff03..959dc5b 100644 --- a/canframemodel.cpp +++ b/canframemodel.cpp @@ -69,6 +69,7 @@ CANFrameModel::CANFrameModel(QObject *parent) timeOffset = 0; needFilterRefresh = false; lastUpdateNumFrames = 0; + timeFormat = "MMM-dd HH:mm:ss.zzz"; } void CANFrameModel::setHexMode(bool mode) @@ -114,6 +115,13 @@ void CANFrameModel::setInterpetMode(bool mode) } } +void CANFrameModel::setTimeFormat(QString format) +{ + timeFormat = format; + beginResetModel(); //reset model to show new time format + endResetModel(); +} + void CANFrameModel::normalizeTiming() { mutex.lock(); @@ -252,7 +260,7 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const if (!timeSeconds) return QString::number(thisFrame.timestamp); else return QString::number((double)thisFrame.timestamp / 1000000.0, 'f', 6); } - else return QDateTime::fromMSecsSinceEpoch(thisFrame.timestamp / 1000).toString("MMM-dd HH:mm:ss.zzz"); + else return QDateTime::fromMSecsSinceEpoch(thisFrame.timestamp / 1000).toString(timeFormat); break; case 1: //id return Utility::formatNumber(thisFrame.ID); diff --git a/canframemodel.h b/canframemodel.h index a934eff..42fd66b 100644 --- a/canframemodel.h +++ b/canframemodel.h @@ -36,6 +36,7 @@ public: void setFilterState(unsigned int ID, bool state); void setAllFilters(bool state); void setSecondsMode(bool); + void setTimeFormat(QString); void loadFilterFile(QString filename); void saveFilterFile(QString filename); void normalizeTiming(); @@ -62,6 +63,7 @@ private: QMutex mutex; bool interpretFrames; //should we use the dbcHandler? bool overwriteDups; //should we display all frames or only the newest for each ID? + QString timeFormat; bool useHexMode; bool timeSeconds; bool useSystemTime; diff --git a/mainsettingsdialog.cpp b/mainsettingsdialog.cpp index caa242a..7e2745b 100644 --- a/mainsettingsdialog.cpp +++ b/mainsettingsdialog.cpp @@ -26,6 +26,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : ui->cbRestorePositions->setChecked(settings->value("Main/SaveRestorePositions", true).toBool()); ui->cbValidate->setChecked(settings->value("Main/ValidateComm", true).toBool()); ui->spinPlaybackSpeed->setValue(settings->value("Playback/DefSpeed", 5).toInt()); + ui->lineClockFormat->setText(settings->value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString()); bool secondsMode = settings->value("Main/TimeSeconds", false).toBool(); bool clockMode = settings->value("Main/TimeClock", false).toBool(); @@ -69,6 +70,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) : connect(ui->rbSysClock, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); connect(ui->comboSendingBus, SIGNAL(currentIndexChanged(int)), this, SLOT(updateSettings())); connect(ui->cbUseFiltered, SIGNAL(toggled(bool)), this, SLOT(updateSettings())); + connect(ui->lineClockFormat, SIGNAL(editingFinished()), this, SLOT(updateSettings())); } MainSettingsDialog::~MainSettingsDialog() @@ -98,6 +100,8 @@ void MainSettingsDialog::updateSettings() settings->setValue("Main/TimeClock", ui->rbSysClock->isChecked()); settings->setValue("Playback/SendingBus", ui->comboSendingBus->currentIndex()); settings->setValue("Main/UseFiltered", ui->cbUseFiltered->isChecked()); + settings->setValue("Main/TimeFormat", ui->lineClockFormat->text()); settings->sync(); + emit updatedSettings(); } diff --git a/mainsettingsdialog.h b/mainsettingsdialog.h index d350d00..62c24c9 100644 --- a/mainsettingsdialog.h +++ b/mainsettingsdialog.h @@ -16,6 +16,9 @@ public: explicit MainSettingsDialog(QWidget *parent = 0); ~MainSettingsDialog(); +signals: + void updatedSettings(); + private slots: void updateSettings(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 667c87a..ceca5fc 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -270,6 +270,8 @@ void MainWindow::readUpdateableSettings() useSystemClock = settings.value("Main/TimeClock", false).toBool(); model->setSysTimeMode(useSystemClock); useFiltered = settings.value("Main/UseFiltered", false).toBool(); + model->setTimeFormat(settings.value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString()); + } void MainWindow::writeSettings() @@ -673,7 +675,7 @@ void MainWindow::showSettingsDialog() if (!settingsDialog) { settingsDialog = new MainSettingsDialog(); - connect(settingsDialog, SIGNAL(finished(int)), this, SLOT(updateSettings())); + connect (settingsDialog, SIGNAL(updatedSettings()), this, SLOT(readUpdateableSettings())); } settingsDialog->show(); } diff --git a/mainwindow.h b/mainwindow.h index a75c9c6..6f79c09 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -97,6 +97,7 @@ private slots: public slots: void gotFrames(int); void updateSettings(); + void readUpdateableSettings(); void gotCenterTimeID(int32_t ID, double timestamp); void updateConnectionSettings(QString connectionType, QString port, int speed0, int speed1); @@ -168,7 +169,6 @@ private: void killEmAll(); void killWindow(QDialog *win); void readSettings(); - void readUpdateableSettings(); void writeSettings(); }; diff --git a/ui/mainsettingsdialog.ui b/ui/mainsettingsdialog.ui index b1f38d9..6399632 100644 --- a/ui/mainsettingsdialog.ui +++ b/ui/mainsettingsdialog.ui @@ -7,7 +7,7 @@ 0 0 400 - 687 + 691 @@ -92,6 +92,20 @@ + + + + + + Time Format String: + + + + + + + +