aboutsummaryrefslogtreecommitdiffstats
path: root/mobile-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-08-13 09:35:18 +0200
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-09-14 13:20:59 +0200
commitfeb11f6f5f8c22bec4e06b507e33c4169403d498 (patch)
treeadb20619ed73b3388ca5a2f69750afba4c83a72b /mobile-widgets
parent0026aa395599489c09be3b7892b96923c670b7cf (diff)
downloadsubsurface-feb11f6f5f8c22bec4e06b507e33c4169403d498.tar.gz
Mobile: use value semantics for DiveObjectHelper in qmlmanager.cpp
Instead of creating a pointer-to-DiveObjectHelper in commitChanges, use a normal object. Thus, we don't have to think about ownership issues with respect to this object. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'mobile-widgets')
-rw-r--r--mobile-widgets/qmlmanager.cpp52
-rw-r--r--mobile-widgets/qmlmanager.h8
2 files changed, 30 insertions, 30 deletions
diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp
index 040c957e1..bb29a63bc 100644
--- a/mobile-widgets/qmlmanager.cpp
+++ b/mobile-widgets/qmlmanager.cpp
@@ -845,9 +845,9 @@ void QMLManager::setupDivesite(struct dive *d, struct dive_site *ds, double lat,
}
}
-bool QMLManager::checkDate(DiveObjectHelper *myDive, struct dive * d, QString date)
+bool QMLManager::checkDate(const DiveObjectHelper &myDive, struct dive * d, QString date)
{
- QString oldDate = myDive->date() + " " + myDive->time();
+ QString oldDate = myDive.date() + " " + myDive.time();
if (date != oldDate) {
QDateTime newDate;
// what a pain - Qt will not parse dates if the day of the week is incorrect
@@ -950,12 +950,12 @@ parsed:
return false;
}
-bool QMLManager::checkLocation(DiveObjectHelper *myDive, struct dive *d, QString location, QString gps)
+bool QMLManager::checkLocation(const DiveObjectHelper &myDive, struct dive *d, QString location, QString gps)
{
bool diveChanged = false;
struct dive_site *ds = get_dive_site_for_dive(d);
- qDebug() << "checkLocation" << location << "gps" << gps << "dive had" << myDive->location() << "gps" << myDive->gas();
- if (myDive->location() != location) {
+ qDebug() << "checkLocation" << location << "gps" << gps << "dive had" << myDive.location() << "gps" << myDive.gas();
+ if (myDive.location() != location) {
diveChanged = true;
ds = get_dive_site_by_name(qPrintable(location), &dive_site_table);
if (!ds && !location.isEmpty())
@@ -968,12 +968,12 @@ bool QMLManager::checkLocation(DiveObjectHelper *myDive, struct dive *d, QString
// now make sure that the GPS coordinates match - if the user changed the name but not
// the GPS coordinates, this still does the right thing as the now new dive site will
// have no coordinates, so the coordinates from the edit screen will get added
- if (myDive->gps() != gps) {
+ if (myDive.gps() != gps) {
double lat, lon;
if (parseGpsText(gps, &lat, &lon)) {
qDebug() << "parsed GPS, using it";
// there are valid GPS coordinates - just use them
- setupDivesite(d, ds, lat, lon, qPrintable(myDive->location()));
+ setupDivesite(d, ds, lat, lon, qPrintable(myDive.location()));
diveChanged = true;
} else if (gps == GPS_CURRENT_POS) {
qDebug() << "gps was our default text for no GPS";
@@ -982,7 +982,7 @@ bool QMLManager::checkLocation(DiveObjectHelper *myDive, struct dive *d, QString
if (gpsString != GPS_CURRENT_POS) {
qDebug() << "but now I got a valid location" << gpsString;
if (parseGpsText(qPrintable(gpsString), &lat, &lon)) {
- setupDivesite(d, ds, lat, lon, qPrintable(myDive->location()));
+ setupDivesite(d, ds, lat, lon, qPrintable(myDive.location()));
diveChanged = true;
}
} else {
@@ -996,9 +996,9 @@ bool QMLManager::checkLocation(DiveObjectHelper *myDive, struct dive *d, QString
return diveChanged;
}
-bool QMLManager::checkDuration(DiveObjectHelper *myDive, struct dive *d, QString duration)
+bool QMLManager::checkDuration(const DiveObjectHelper &myDive, struct dive *d, QString duration)
{
- if (myDive->duration() != duration) {
+ if (myDive.duration() != duration) {
int h = 0, m = 0, s = 0;
QRegExp r1(QStringLiteral("(\\d*)\\s*%1[\\s,:]*(\\d*)\\s*%2[\\s,:]*(\\d*)\\s*%3").arg(tr("h")).arg(tr("min")).arg(tr("sec")), Qt::CaseInsensitive);
QRegExp r2(QStringLiteral("(\\d*)\\s*%1[\\s,:]*(\\d*)\\s*%2").arg(tr("h")).arg(tr("min")), Qt::CaseInsensitive);
@@ -1035,9 +1035,9 @@ bool QMLManager::checkDuration(DiveObjectHelper *myDive, struct dive *d, QString
return false;
}
-bool QMLManager::checkDepth(DiveObjectHelper *myDive, dive *d, QString depth)
+bool QMLManager::checkDepth(const DiveObjectHelper &myDive, dive *d, QString depth)
{
- if (myDive->depth() != depth) {
+ if (myDive.depth() != depth) {
int depthValue = parseLengthToMm(depth);
// the QML code should stop negative depth, but massively huge depth can make
// the profile extremely slow or even run out of memory and crash, so keep
@@ -1066,7 +1066,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
return;
}
- DiveObjectHelper *myDive = new DiveObjectHelper(d);
+ DiveObjectHelper myDive(d);
// notes comes back as rich text - let's convert this into plain text
QTextDocument doc;
@@ -1084,15 +1084,15 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
diveChanged |= checkDepth(myDive, d, depth);
- if (myDive->airTemp() != airtemp) {
+ if (myDive.airTemp() != airtemp) {
diveChanged = true;
d->airtemp.mkelvin = parseTemperatureToMkelvin(airtemp);
}
- if (myDive->waterTemp() != watertemp) {
+ if (myDive.waterTemp() != watertemp) {
diveChanged = true;
d->watertemp.mkelvin = parseTemperatureToMkelvin(watertemp);
}
- if (myDive->sumWeight() != weight) {
+ if (myDive.sumWeight() != weight) {
diveChanged = true;
// not sure what we'd do if there was more than one weight system
// defined - for now just ignore that case
@@ -1104,7 +1104,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
}
}
// start and end pressures for first cylinder only
- if (myDive->startPressure() != startpressure || myDive->endPressure() != endpressure) {
+ if (myDive.startPressure() != startpressure || myDive.endPressure() != endpressure) {
diveChanged = true;
for ( int i = 0, j = 0 ; j < startpressure.length() && j < endpressure.length() ; i++ ) {
if (state != "add" && !is_cylinder_used(d, i))
@@ -1119,7 +1119,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
}
}
// gasmix for first cylinder
- if (myDive->firstGas() != gasmix) {
+ if (myDive.firstGas() != gasmix) {
for ( int i = 0, j = 0 ; j < gasmix.length() ; i++ ) {
if (state != "add" && !is_cylinder_used(d, i))
continue;
@@ -1138,7 +1138,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
}
}
// info for first cylinder
- if (myDive->getCylinder() != usedCylinder) {
+ if (myDive.getCylinder() != usedCylinder) {
diveChanged = true;
unsigned long i;
int size = 0, wp = 0, j = 0, k = 0;
@@ -1164,12 +1164,12 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
k++;
}
}
- if (myDive->suit() != suit) {
+ if (myDive.suit() != suit) {
diveChanged = true;
free(d->suit);
d->suit = copy_qstring(suit);
}
- if (myDive->buddy() != buddy) {
+ if (myDive.buddy() != buddy) {
if (buddy.contains(",")){
buddy = buddy.replace(QRegExp("\\s*,\\s*"), ", ");
}
@@ -1177,7 +1177,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
free(d->buddy);
d->buddy = copy_qstring(buddy);
}
- if (myDive->divemaster() != diveMaster) {
+ if (myDive.divemaster() != diveMaster) {
if (diveMaster.contains(",")){
diveMaster = diveMaster.replace(QRegExp("\\s*,\\s*"), ", ");
}
@@ -1185,15 +1185,15 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
free(d->divemaster);
d->divemaster = copy_qstring(diveMaster);
}
- if (myDive->rating() != rating) {
+ if (myDive.rating() != rating) {
diveChanged = true;
d->rating = rating;
}
- if (myDive->visibility() != visibility) {
+ if (myDive.visibility() != visibility) {
diveChanged = true;
d->visibility = visibility;
}
- if (myDive->notes() != notes) {
+ if (myDive.notes() != notes) {
diveChanged = true;
free(d->notes);
d->notes = copy_qstring(notes);
@@ -1212,7 +1212,7 @@ void QMLManager::commitChanges(QString diveId, QString date, QString location, Q
if (newIdx != oldIdx) {
DiveListModel::instance()->removeDive(modelIdx);
modelIdx += (newIdx - oldIdx);
- DiveListModel::instance()->insertDive(modelIdx, myDive);
+ DiveListModel::instance()->insertDive(modelIdx, &myDive);
diveChanged = true; // because we already modified things
}
}
diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h
index 12dbf6f8a..8984f9dc2 100644
--- a/mobile-widgets/qmlmanager.h
+++ b/mobile-widgets/qmlmanager.h
@@ -228,10 +228,10 @@ private:
qreal m_lastDevicePixelRatio;
QElapsedTimer timer;
bool alreadySaving;
- bool checkDate(DiveObjectHelper *myDive, struct dive * d, QString date);
- bool checkLocation(DiveObjectHelper *myDive, struct dive *d, QString location, QString gps);
- bool checkDuration(DiveObjectHelper *myDive, struct dive *d, QString duration);
- bool checkDepth(DiveObjectHelper *myDive, struct dive *d, QString depth);
+ bool checkDate(const DiveObjectHelper &myDive, struct dive *d, QString date);
+ bool checkLocation(const DiveObjectHelper &myDive, struct dive *d, QString location, QString gps);
+ bool checkDuration(const DiveObjectHelper &myDive, struct dive *d, QString duration);
+ bool checkDepth(const DiveObjectHelper &myDive, struct dive *d, QString depth);
bool currentGitLocalOnly;
Q_INVOKABLE DCDeviceData *m_device_data;
QString m_progressMessage;