The iSpindel monitor, detail and chart screens try to use the polynomial calibration data to show the SG. Fallback to already logged data if this fails.

Sat, 22 Jun 2024 11:28:14 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 22 Jun 2024 11:28:14 +0200
changeset 537
48de0f61e5ea
parent 536
3d327db12cef
child 538
19cbd065765e

The iSpindel monitor, detail and chart screens try to use the polynomial calibration data to show the SG. Fallback to already logged data if this fails.

src/ChartiSpindel.cpp file | annotate | diff | comparison | revisions
src/DetailiSpindel.cpp file | annotate | diff | comparison | revisions
src/MoniSpindels.cpp file | annotate | diff | comparison | revisions
translations/bmsapp_en.ts file | annotate | diff | comparison | revisions
translations/bmsapp_nl.ts file | annotate | diff | comparison | revisions
--- a/src/ChartiSpindel.cpp	Fri Jun 14 08:45:35 2024 +0200
+++ b/src/ChartiSpindel.cpp	Sat Jun 22 11:28:14 2024 +0200
@@ -23,10 +23,11 @@
 ChartiSpindel::ChartiSpindel(QString code, QString name, QWidget *parent) : QDialog(parent)
 {
     QSqlQuery query;
-    double timestamp;
+    double timestamp, poly[4], plato, angle;
     double sg_min = 1.2, sg_max = 0.8, mg, sg;
     double temp_min = 100, temp_max = 0, temp;
     double batt_min = 4.5, batt_max = 3.0, batt;
+    bool polyvalid = false;
 
     qDebug() << "ChartiSpindel:" << code << name;
 
@@ -48,6 +49,33 @@
     buttonBox->setStandardButtons(QDialogButtonBox::Ok);
     buttonBox->addButton(saveButton,QDialogButtonBox::ActionRole);
 
+    /*
+     * Try to load the polynomial calibration data.
+     * This only succeeds for the current brew.
+     * For historical brews we need another way to load the correct record.
+     */
+    query.prepare("SELECT calibrate FROM mon_ispindels WHERE beercode=:beercode AND beername=:beername");
+    query.bindValue(":beercode", code);
+    query.bindValue(":beername", name);
+    query.exec();
+    if (query.next()) {
+	QJsonParseError parseError;
+	const auto& json = query.value("calibrate").toString();
+	if (!json.trimmed().isEmpty()) {
+	    const auto& formattedJson = QString("%1").arg(json);
+	    QJsonDocument jsonResponse = QJsonDocument::fromJson(formattedJson.toUtf8(),  &parseError);
+	    QJsonObject jsonObj = jsonResponse.object();
+	    QJsonArray polyData = jsonObj.value("polyData").toArray();
+	    if (polyData.size() == 4) {
+		for (int i = 0; i < polyData.size(); i++) {
+		    poly[i] = polyData.at(i).toDouble();
+		}
+		polyvalid = true;
+	    }
+	}
+    }
+//    qDebug() << "polyvalid" << polyvalid;
+
     temperature = new QLineSeries();
     density = new QLineSeries();
     battery = new QLineSeries();
@@ -57,8 +85,14 @@
     query.exec();
     while (query.next()) {
         timestamp = query.value("datetime").toDateTime().toSecsSinceEpoch() * 1000;
-
-	mg = query.value("sg").toDouble();
+	if (polyvalid) {
+	    angle = query.value("angle").toDouble();
+	    plato = (poly[0] * pow(angle, 3)) + (poly[1] * pow(angle, 2)) + (poly[2] * angle) + poly[3];
+	    mg = Utils::plato_to_sg(plato);
+//	    qDebug() << "sg" << query.value("sg").toDouble() << "mg" << mg;
+	} else {
+	    mg = query.value("sg").toDouble();
+	}
 	temp = query.value("temperature").toDouble();
 	if (ceil(temp) > temp_max)
 	    temp_max = ceil(temp);
--- a/src/DetailiSpindel.cpp	Fri Jun 14 08:45:35 2024 +0200
+++ b/src/DetailiSpindel.cpp	Sat Jun 22 11:28:14 2024 +0200
@@ -64,6 +64,7 @@
 void DetailiSpindel::refreshTable()
 {
     QSqlQuery query;
+    double angle, plato, sg, poly[4];
 
     query.prepare("SELECT * FROM mon_ispindels WHERE record = :recno");
     query.bindValue(":recno", this->recno);
@@ -87,30 +88,50 @@
 	ui->systemEdit->setText(_node+"/"+_alias);
 	ui->codePick->setItemText(0, _alias.toUpper()+" - "+_alias);
 	ui->alarmLED->setChecked(alarm);
+	ui->lastEdit->setText(query.value("lastseen").toDateTime().toString("dd MMM  HH:mm:ss"));
+	ui->codeEdit->setText(_beercode+" - "+_beername);
+	ui->powerLED->setChecked(mode);
+	ui->modeEdit->show();
+	ui->modeEdit->setCurrentIndex(mode ? 1:0);
 
 	if (online) {
 	    ui->statusEdit->setText(tr("Online"));
 	    ui->statusEdit->setStyleSheet("");
-            ui->codeEdit->setText(_beercode+" - "+_beername);
 	    ui->thermoMeter->setNominal(query.value("yeast_lo").toDouble());
 	    ui->thermoMeter->setCritical(query.value("yeast_hi").toDouble());
-
-	    ui->powerLED->setChecked(mode);
-	    ui->modeEdit->show();
+	    ui->modeEdit->setEnabled(true);
 	    if (mode) {
-		ui->modeEdit->setCurrentIndex(1);
 		ui->codePick->hide();
 	    } else {
-		ui->modeEdit->setCurrentIndex(0);
 		ui->codePick->show();
 	    }
 
+	    plato = query.value("gravity").toDouble();
+	    angle = query.value("angle").toDouble();
+	    /*
+	     * Try to use the calibrate poly to recalcultate the density.
+	     */
+	    QJsonParseError parseError;
+	    const auto& json = query.value("calibrate").toString();
+	    if (!json.trimmed().isEmpty()) {
+		const auto& formattedJson = QString("%1").arg(json);
+		QJsonDocument jsonResponse = QJsonDocument::fromJson(formattedJson.toUtf8(),  &parseError);
+		QJsonObject jsonObj = jsonResponse.object();
+		QJsonArray polyData = jsonObj.value("polyData").toArray();
+		if (polyData.size() == 4) {
+		    for (int i = 0; i < polyData.size(); i++) {
+		    	poly[i] = polyData.at(i).toDouble();
+		    }
+		    /* New plato from current polynomial */
+		    plato = (poly[0] * pow(angle, 3)) + (poly[1] * pow(angle, 2)) + (poly[2] * angle) + poly[3];
+		}
+	    }
+	    sg = Utils::plato_to_sg(plato);
+
 	    ui->voltEdit->setText(QString("%1").arg(query.value("battery").toDouble(), 4, 'f', 3, '0'));
-	    ui->tiltEdit->setText(QString("%1").arg(query.value("angle").toDouble(), 6, 'f', 5, '0'));
-	    ui->platoEdit->setText(QString("%1").arg(query.value("gravity").toDouble(), 4, 'f', 3, '0'));
-            double sg = Utils::plato_to_sg(query.value("gravity").toDouble());
+	    ui->tiltEdit->setText(QString("%1").arg(angle, 6, 'f', 5, '0'));
+	    ui->platoEdit->setText(QString("%1").arg(plato, 4, 'f', 3, '0'));
 	    ui->sgEdit->setText(QString("%1").arg(sg, 5, 'f', 4, '0'));
-	    ui->lastEdit->setText(query.value("lastseen").toDateTime().toString("dd MMM  HH:mm:ss"));
 
 	    if (query.value("gravity").toDouble()) {
 		double o_plato = query.value("og_gravity").toDouble();
@@ -158,10 +179,9 @@
 	    /* Offline */
 	    ui->statusEdit->setText(tr("Offline"));
 	    ui->statusEdit->setStyleSheet("background-color: red");
-	    ui->powerLED->setChecked(false);
 	    ui->alarmLED->setChecked(true);
 	    ui->codePick->hide();
-	    ui->modeEdit->hide();
+	    ui->modeEdit->setEnabled(false);
 	    ui->thermoBox->hide();
 	    ui->logButton->hide();
 	}
--- a/src/MoniSpindels.cpp	Fri Jun 14 08:45:35 2024 +0200
+++ b/src/MoniSpindels.cpp	Sat Jun 22 11:28:14 2024 +0200
@@ -74,8 +74,9 @@
 void MoniSpindels::refreshTable()
 {
     QTableWidgetItem *item;
+    double	plato, poly[4];
 
-    QSqlQuery query("SELECT record,alias,node,online,mode,temperature,gravity,beercode,beername FROM mon_ispindels ORDER BY alias");
+    QSqlQuery query("SELECT record,alias,node,online,mode,temperature,gravity,angle,calibrate,beercode,beername FROM mon_ispindels ORDER BY alias");
     const QStringList labels({tr("Unit"), tr("Node"), tr("Status"), tr("Beer"), tr("Temperature"), tr("SG"), tr("Cal"), tr("Details")});
 
     this->tableiSpindels->setColumnCount(8);
@@ -114,10 +115,31 @@
 	}
 
 	if (query.value("online").toInt()) {
+	    /*
+	     * Try to use the calibrate poly to recalcultate the SG.
+	     */
+	    plato = query.value("gravity").toDouble();
+	    QJsonParseError parseError;
+            const auto& json = query.value("calibrate").toString();
+	    if (!json.trimmed().isEmpty()) {
+            	const auto& formattedJson = QString("%1").arg(json);
+            	QJsonDocument jsonResponse = QJsonDocument::fromJson(formattedJson.toUtf8(),  &parseError);
+		QJsonObject jsonObj = jsonResponse.object();
+                QJsonArray polyData = jsonObj.value("polyData").toArray();
+		if (polyData.size() == 4) {
+		    for (int i = 0; i < polyData.size(); i++) {
+		    	poly[i] = polyData.at(i).toDouble();
+		    }
+		    double angle = query.value("angle").toDouble();
+		    /* New plato from current polynomial */
+		    plato = (poly[0] * pow(angle, 3)) + (poly[1] * pow(angle, 2)) + (poly[2] * angle) + poly[3];
+		}
+	    }
+
 	    item = new QTableWidgetItem(QString("%1°C").arg(query.value("temperature").toDouble(), 4, 'f', 3, '0'));
 	    item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
 	    this->tableiSpindels->setItem(i, 4, item);
-	    double sg = Utils::plato_to_sg(query.value("gravity").toDouble());
+	    double sg = Utils::plato_to_sg(plato);
 	    item = new QTableWidgetItem(QString("%1").arg(sg, 5, 'f', 4, '0'));
 	    item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
 	    this->tableiSpindels->setItem(i, 5, item);
--- a/translations/bmsapp_en.ts	Fri Jun 14 08:45:35 2024 +0200
+++ b/translations/bmsapp_en.ts	Sat Jun 22 11:28:14 2024 +0200
@@ -299,79 +299,79 @@
 <context>
     <name>ChartiSpindel</name>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="34"/>
+        <location filename="../src/ChartiSpindel.cpp" line="35"/>
         <source>BMSapp - iSpindel </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="39"/>
+        <location filename="../src/ChartiSpindel.cpp" line="40"/>
         <source>Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="88"/>
+        <location filename="../src/ChartiSpindel.cpp" line="122"/>
         <source>Temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="90"/>
+        <location filename="../src/ChartiSpindel.cpp" line="124"/>
         <source>SG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="94"/>
+        <location filename="../src/ChartiSpindel.cpp" line="128"/>
         <source>Battery</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="106"/>
+        <location filename="../src/ChartiSpindel.cpp" line="140"/>
         <source>Date</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="117"/>
+        <location filename="../src/ChartiSpindel.cpp" line="151"/>
         <source>Temperature °C</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="135"/>
+        <location filename="../src/ChartiSpindel.cpp" line="169"/>
         <source>Battery volt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="177"/>
-        <source>Save Image</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/ChartiSpindel.cpp" line="177"/>
-        <source>Image (*.png)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/ChartiSpindel.cpp" line="179"/>
-        <source>Save File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/ChartiSpindel.cpp" line="179"/>
-        <source>No image file selected.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/ChartiSpindel.cpp" line="209"/>
-        <source>%1
-Temperature %2°C</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../src/ChartiSpindel.cpp" line="211"/>
+        <source>Save Image</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ChartiSpindel.cpp" line="211"/>
+        <source>Image (*.png)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ChartiSpindel.cpp" line="213"/>
+        <source>Save File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ChartiSpindel.cpp" line="213"/>
+        <source>No image file selected.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ChartiSpindel.cpp" line="243"/>
+        <source>%1
+Temperature %2°C</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/ChartiSpindel.cpp" line="245"/>
         <source>%1
 Density %2 SG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="220"/>
+        <location filename="../src/ChartiSpindel.cpp" line="254"/>
         <source>%1
 Battery %2 volt
 Capacity %3%</source>
@@ -1143,12 +1143,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/DetailiSpindel.cpp" line="92"/>
+        <location filename="../src/DetailiSpindel.cpp" line="98"/>
         <source>Online</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/DetailiSpindel.cpp" line="159"/>
+        <location filename="../src/DetailiSpindel.cpp" line="180"/>
         <source>Offline</source>
         <translation type="unfinished"></translation>
     </message>
@@ -10359,49 +10359,49 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Unit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Node</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Status</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Beer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>SG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
-        <location filename="../src/MoniSpindels.cpp" line="145"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
+        <location filename="../src/MoniSpindels.cpp" line="167"/>
         <source>Details</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
-        <location filename="../src/MoniSpindels.cpp" line="133"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
+        <location filename="../src/MoniSpindels.cpp" line="155"/>
         <source>Cal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="154"/>
+        <location filename="../src/MoniSpindels.cpp" line="176"/>
         <source>Total items: %1</source>
         <translation type="unfinished"></translation>
     </message>
--- a/translations/bmsapp_nl.ts	Fri Jun 14 08:45:35 2024 +0200
+++ b/translations/bmsapp_nl.ts	Sat Jun 22 11:28:14 2024 +0200
@@ -359,7 +359,7 @@
 <context>
     <name>ChartiSpindel</name>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="34"/>
+        <location filename="../src/ChartiSpindel.cpp" line="35"/>
         <source>BMSapp - iSpindel </source>
         <translation>BMSapp - iSpindel </translation>
     </message>
@@ -368,76 +368,76 @@
         <translation type="vanished">Temp °C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="39"/>
+        <location filename="../src/ChartiSpindel.cpp" line="40"/>
         <source>Save</source>
         <translation>Bewaar</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="88"/>
+        <location filename="../src/ChartiSpindel.cpp" line="122"/>
         <source>Temperature</source>
         <translation>Temperatuur</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="90"/>
+        <location filename="../src/ChartiSpindel.cpp" line="124"/>
         <source>SG</source>
         <translation>SG</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="94"/>
+        <location filename="../src/ChartiSpindel.cpp" line="128"/>
         <source>Battery</source>
         <translation>Batterij</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="106"/>
+        <location filename="../src/ChartiSpindel.cpp" line="140"/>
         <source>Date</source>
         <translation>Datum</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="117"/>
+        <location filename="../src/ChartiSpindel.cpp" line="151"/>
         <source>Temperature °C</source>
         <translation>Temperatuur °C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="135"/>
+        <location filename="../src/ChartiSpindel.cpp" line="169"/>
         <source>Battery volt</source>
         <translation>Batterij volt</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="177"/>
+        <location filename="../src/ChartiSpindel.cpp" line="211"/>
         <source>Save Image</source>
         <translation>Opslaan plaatje</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="177"/>
+        <location filename="../src/ChartiSpindel.cpp" line="211"/>
         <source>Image (*.png)</source>
         <translation>Plaatje (*.png)</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="179"/>
+        <location filename="../src/ChartiSpindel.cpp" line="213"/>
         <source>Save File</source>
         <translation>Bestand opslaan</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="179"/>
+        <location filename="../src/ChartiSpindel.cpp" line="213"/>
         <source>No image file selected.</source>
         <translation>Geen plaatjes bestand gekozen.</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="209"/>
+        <location filename="../src/ChartiSpindel.cpp" line="243"/>
         <source>%1
 Temperature %2°C</source>
         <translation>%1
 Temperatuur %2°C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="211"/>
+        <location filename="../src/ChartiSpindel.cpp" line="245"/>
         <source>%1
 Density %2 SG</source>
         <translation>%1
 Dichtheid %2 SG</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="220"/>
+        <location filename="../src/ChartiSpindel.cpp" line="254"/>
         <source>%1
 Battery %2 volt
 Capacity %3%</source>
@@ -1257,12 +1257,12 @@
         <translation>BMSapp - Detail iSpindel</translation>
     </message>
     <message>
-        <location filename="../src/DetailiSpindel.cpp" line="92"/>
+        <location filename="../src/DetailiSpindel.cpp" line="98"/>
         <source>Online</source>
         <translation>Online</translation>
     </message>
     <message>
-        <location filename="../src/DetailiSpindel.cpp" line="159"/>
+        <location filename="../src/DetailiSpindel.cpp" line="180"/>
         <source>Offline</source>
         <translation>Offline</translation>
     </message>
@@ -11559,49 +11559,49 @@
         <translation>Terug</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Unit</source>
         <translation>Eenheid</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Node</source>
         <translation>Systeem</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Status</source>
         <translation>Status</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Beer</source>
         <translation>Bier</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>Temperature</source>
         <translation>Temperatuur</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
         <source>SG</source>
         <translation>SG</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
-        <location filename="../src/MoniSpindels.cpp" line="145"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
+        <location filename="../src/MoniSpindels.cpp" line="167"/>
         <source>Details</source>
         <translation>Details</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="79"/>
-        <location filename="../src/MoniSpindels.cpp" line="133"/>
+        <location filename="../src/MoniSpindels.cpp" line="80"/>
+        <location filename="../src/MoniSpindels.cpp" line="155"/>
         <source>Cal</source>
         <translation>Cal</translation>
     </message>
     <message>
-        <location filename="../src/MoniSpindels.cpp" line="154"/>
+        <location filename="../src/MoniSpindels.cpp" line="176"/>
         <source>Total items: %1</source>
         <translation>Totaal items: %1</translation>
     </message>

mercurial