add support for start date offset

This commit is contained in:
Leopixelo
2026-06-08 15:13:13 +02:00
parent 0e26233dbf
commit 2acbe443ec
6 changed files with 60 additions and 6 deletions
+6
View File
@@ -80,6 +80,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
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());
ui->lineStartDate->setText(settings.value("Main/StartDate", "2025-01-01T00:00:00.000000").toString());
ui->lineRemoteHost->setText(settings.value("Remote/Host", "api.savvycan.com").toString());
ui->lineRemotePort->setText(settings.value("Remote/Port", "8883").toString()); //default port for SSL enabled MQTT
ui->lineRemoteUser->setText(settings.value("Remote/User", "Anonymous").toString());
@@ -127,6 +128,7 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
}
}
ui->cbUseStartDate->setChecked(settings.value("Main/UseStartDate", false).toBool());
ui->cbCSVAbsTime->setChecked(settings.value("Main/CSVAbsTime", false).toBool());
ui->comboSendingBus->setCurrentIndex(settings.value("Playback/SendingBus", 4).toInt());
ui->cbUseFiltered->setChecked(settings.value("Main/UseFiltered", false).toBool());
@@ -172,10 +174,12 @@ MainSettingsDialog::MainSettingsDialog(QWidget *parent) :
connect(ui->rbMicros, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->rbSysClock, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->rbMillis, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->cbUseStartDate, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->cbCSVAbsTime, 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()));
connect(ui->lineStartDate, SIGNAL(editingFinished()), this, SLOT(updateSettings()));
connect(ui->cbUseOpenGL, SIGNAL(toggled(bool)), this, SLOT(updateSettings()));
connect(ui->lineRemoteHost, SIGNAL(editingFinished()), this, SLOT(updateSettings()));
connect(ui->lineRemotePort, SIGNAL(editingFinished()), this, SLOT(updateSettings()));
@@ -244,11 +248,13 @@ void MainSettingsDialog::updateSettings()
settings.setValue("Main/TimeSeconds", ui->rbSeconds->isChecked());
settings.setValue("Main/TimeMillis", ui->rbMillis->isChecked());
settings.setValue("Main/TimeClock", ui->rbSysClock->isChecked());
settings.setValue("Main/UseStartDate", ui->cbUseStartDate->isChecked());
settings.setValue("Main/CSVAbsTime", ui->cbCSVAbsTime->isChecked());
settings.setValue("Playback/SendingBus", ui->comboSendingBus->currentIndex());
settings.setValue("Main/UseFiltered", ui->cbUseFiltered->isChecked());
settings.setValue("Main/UseOpenGL", ui->cbUseOpenGL->isChecked());
settings.setValue("Main/TimeFormat", ui->lineClockFormat->text());
settings.setValue("Main/StartDate", ui->lineStartDate->text());
settings.setValue("Main/FontSize", ui->spinFontSize->value());
settings.setValue("Remote/Host", ui->lineRemoteHost->text());
settings.setValue("Remote/Port", ui->lineRemotePort->text());
+9 -1
View File
@@ -430,11 +430,19 @@ void MainWindow::readUpdateableSettings()
tempBool = settings.value("Main/TimeSeconds", false).toBool();
if (tempBool) ts = TS_SECONDS;
tempBool = settings.value("Main/TimeClock", false).toBool();
if (tempBool) ts = TS_CLOCK;
if (tempBool) {
if (settings.value("Main/UseStartDate", false).toBool()) {
ts = TS_START_DATE;
} else {
ts = TS_CLOCK;
}
}
tempBool = settings.value("Main/TimeMillis", false).toBool();
if (tempBool) ts = TS_MILLIS;
model->setTimeStyle(ts);
Utility::startDate = QDateTime::fromString(settings.value("Main/StartDate", "2025-01-01T00:00:00.000000").toString(), Qt::ISODateWithMs);
useFiltered = settings.value("Main/UseFiltered", false).toBool();
model->setTimeFormat(settings.value("Main/TimeFormat", "MMM-dd HH:mm:ss.zzz").toString());
ignoreDBCColors = settings.value("Main/IgnoreDBCColors", false).toBool();
+14 -4
View File
@@ -40,7 +40,7 @@ GraphingWindow::GraphingWindow(const QVector<CANFrame> *frames, QWidget *parent)
if (Utility::timeStyle == TS_SECONDS) ui->graphingView->xAxis->setNumberPrecision(6);
else ui->graphingView->xAxis->setNumberPrecision(0);
if (Utility::timeStyle == TS_CLOCK)
if (Utility::timeStyle == TS_CLOCK || Utility::timeStyle == TS_START_DATE)
{
QSharedPointer timeTicker = QSharedPointer<QCPAxisTickerTime>::create();
timeTicker->setTimeFormat("%h:%m:%s.%z");
@@ -291,7 +291,7 @@ void GraphingWindow::plottableDoubleClick(QCPAbstractPlottable* plottable, int d
coord /= 1000000;
else if (Utility::timeStyle == TS_MILLIS)
coord /= 1000;
else if (Utility::timeStyle == TS_CLOCK) // coord is given in seconds but with an offset of one hour
else if (Utility::timeStyle == TS_CLOCK || Utility::timeStyle == TS_START_DATE) // coord is given in seconds but with an offset of one hour
coord -= 3600;
id = plottable->property("id").toInt();
@@ -330,7 +330,7 @@ void GraphingWindow::gotCenterTimeID(uint32_t ID, double timestamp)
timestamp *= 1000000;
else if (Utility::timeStyle == TS_MILLIS)
timestamp *= 1000;
else if (Utility::timeStyle == TS_CLOCK)
else if (Utility::timeStyle == TS_CLOCK || Utility::timeStyle == TS_START_DATE)
timestamp += 3600; // offset of one hour needed
ui->graphingView->xAxis->setRange(timestamp - offset, timestamp + offset);
ui->graphingView->replot();
@@ -349,7 +349,7 @@ void GraphingWindow::gotPlaybackTimestamp(double timestamp)
timestamp *= 1000000;
else if (Utility::timeStyle == TS_MILLIS)
timestamp *= 1000;
else if (Utility::timeStyle == TS_CLOCK)
else if (Utility::timeStyle == TS_CLOCK || Utility::timeStyle == TS_START_DATE)
timestamp += 3600; // offset of one hour needed
playbackLine->point1->setCoords(timestamp, 0);
@@ -1375,6 +1375,11 @@ void GraphingWindow::appendToGraph(GraphParams &params, CANFrame &frame, QVector
QDateTime dt = QDateTime::fromMSecsSinceEpoch((frame.timeStamp().microSeconds() / 1000) - params.xbias);
xVal = (dt.time().msec()/1000.0 + dt.time().second() + dt.time().minute() * 60 + dt.time().hour() * 3600);
}
else if (Utility::timeStyle == TS_START_DATE)
{
QDateTime dt = Utility::startDate.addMSecs(frame.timeStamp().microSeconds() / 1000 - params.xbias);
xVal = (dt.time().second() + dt.time().minute() * 60 + dt.time().hour() * 3600);
}
else
{
xVal = (frame.timeStamp().microSeconds() - params.xbias);
@@ -1531,6 +1536,11 @@ void GraphingWindow::createGraph(GraphParams &params, bool createGraphParam, boo
QDateTime dt = QDateTime::fromMSecsSinceEpoch((frameCache[k].timeStamp().microSeconds() / 1000) - params.xbias);
x = (dt.time().msecsSinceStartOfDay() / 1000.0);
}
else if (Utility::timeStyle == TS_START_DATE)
{
QDateTime dt = Utility::startDate.addMSecs(frameCache[k].timeStamp().microSeconds() / 1000 - params.xbias);
x = (dt.time().msecsSinceStartOfDay() / 1000.0);
}
else
{
x = frameCache[k].timeStamp().microSeconds();
+22
View File
@@ -230,6 +230,27 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QLabel" name="label_13">
<property name="text">
<string>Start Date:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineStartDate"/>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="cbUseStartDate">
<property name="text">
<string>Use start date</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCSVAbsTime">
<property name="text">
@@ -515,6 +536,7 @@
<tabstop>rbMicros</tabstop>
<tabstop>rbSysClock</tabstop>
<tabstop>lineClockFormat</tabstop>
<tabstop>lineStartDate</tabstop>
<tabstop>spinFontSize</tabstop>
<tabstop>cbFlowUseTimestamp</tabstop>
<tabstop>cbFlowAutoRef</tabstop>
+2
View File
@@ -2,5 +2,7 @@
bool Utility::decimalMode = false;
QString Utility::timeFormat = "MMM-dd HH:mm:ss.zzz";
QDateTime Utility::startDate = QDateTime::fromString("2025-01-01T00:00:00.000000", Qt::ISODateWithMs);
bool Utility::useStartDate = false;
TimeStyle Utility::timeStyle = TS_MICROS;
QString Utility::fullyQualifiedNameSeperator = "::";
+7 -1
View File
@@ -20,7 +20,8 @@ enum TimeStyle
TS_SECONDS,
TS_MICROS,
TS_MILLIS,
TS_CLOCK
TS_CLOCK,
TS_START_DATE,
};
@@ -68,6 +69,8 @@ public:
static bool decimalMode;
static TimeStyle timeStyle;
static QString timeFormat;
static QDateTime startDate;
static bool useStartDate;
static QString fullyQualifiedNameSeperator;
@@ -221,6 +224,9 @@ public:
case TS_CLOCK:
return QDateTime::fromMSecsSinceEpoch(timestamp / 1000);
break;
case TS_START_DATE:
return startDate.addMSecs(timestamp / 1000);
break;
case TS_MILLIS:
return (double)timestamp / 1000.0;
break;