aboutsummaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2019-11-11 21:31:56 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-03-09 12:41:11 -0700
commit89f84578570112dc82cc194c3b0daedd5e660bc5 (patch)
treef13202e0a4c9635ee8e020c9ae5be7a2bdb381c6 /qt-models
parentc5d17c3d4ddd61a3d0938b3290d002fe6b7622d0 (diff)
downloadsubsurface-89f84578570112dc82cc194c3b0daedd5e660bc5.tar.gz
mobile/divelist: implement trip title and short date for mobile
We pass this through to the underlying data function. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/divetripmodel.cpp38
-rw-r--r--qt-models/divetripmodel.h2
-rw-r--r--qt-models/mobilelistmodel.h2
3 files changed, 42 insertions, 0 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index 98868ee40..6c1a7218a 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -58,6 +58,42 @@ static QVariant dive_table_alignment(int column)
return QVariant();
}
+QString DiveTripModelBase::tripShortDate(const dive_trip *trip)
+{
+ if (!trip)
+ return QString();
+ QDateTime firstTime = QDateTime::fromMSecsSinceEpoch(1000*trip_date(trip), Qt::UTC);
+ QString firstMonth = firstTime.toString("MMM");
+ return QStringLiteral("%1\n'%2").arg(firstMonth,firstTime.toString("yy"));
+}
+
+QString DiveTripModelBase::tripTitle(const dive_trip *trip)
+{
+ if (!trip)
+ return QString();
+ QString numDives = tr("(%n dive(s))", "", trip->dives.nr);
+ int shown = trip_shown_dives(trip);
+ QString shownDives = shown != trip->dives.nr ? QStringLiteral(" ") + tr("(%L1 shown)").arg(shown) : QString();
+ QString title(trip->location);
+
+ if (title.isEmpty()) {
+ // so use the date range
+ QDateTime firstTime = QDateTime::fromMSecsSinceEpoch(1000*trip_date(trip), Qt::UTC);
+ QString firstMonth = firstTime.toString("MMM");
+ QString firstYear = firstTime.toString("yyyy");
+ QDateTime lastTime = QDateTime::fromMSecsSinceEpoch(1000*trip->dives.dives[0]->when, Qt::UTC);
+ QString lastMonth = lastTime.toString("MMM");
+ QString lastYear = lastTime.toString("yyyy");
+ if (lastMonth == firstMonth && lastYear == firstYear)
+ title = firstMonth + " " + firstYear;
+ else if (lastMonth != firstMonth && lastYear == firstYear)
+ title = firstMonth + "-" + lastMonth + " " + firstYear;
+ else
+ title = firstMonth + " " + firstYear + " - " + lastMonth + " " + lastYear;
+ }
+ return QStringLiteral("%1 %2%3").arg(title, numDives, shownDives);
+}
+
QVariant DiveTripModelBase::tripData(const dive_trip *trip, int column, int role)
{
#ifdef SUBSURFACE_MOBILE
@@ -65,6 +101,8 @@ QVariant DiveTripModelBase::tripData(const dive_trip *trip, int column, int role
switch(role) {
case MobileListModel::TripIdRole: return QString::number(trip->id);
case MobileListModel::TripNrDivesRole: return trip->dives.nr;
+ case MobileListModel::TripShortDateRole: return tripShortDate(trip);
+ case MobileListModel::TripTitleRole: return tripTitle(trip);
}
#endif
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index a10bacc15..c5def254a 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -94,6 +94,8 @@ protected:
// Access trip and dive data
static QVariant diveData(const struct dive *d, int column, int role);
static QVariant tripData(const dive_trip *trip, int column, int role);
+ static QString tripTitle(const dive_trip *trip);
+ static QString tripShortDate(const dive_trip *trip);
void currentChanged();
virtual dive *diveOrNull(const QModelIndex &index) const = 0; // Returns a dive if this index represents a dive, null otherwise
diff --git a/qt-models/mobilelistmodel.h b/qt-models/mobilelistmodel.h
index 66c520cf7..01bec8670 100644
--- a/qt-models/mobilelistmodel.h
+++ b/qt-models/mobilelistmodel.h
@@ -12,6 +12,8 @@ public:
DiveDateRole,
TripIdRole,
TripNrDivesRole,
+ TripShortDateRole,
+ TripTitleRole,
DateTimeRole,
IdRole,
NumberRole,