diff options
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divetripmodel.cpp | 38 | ||||
-rw-r--r-- | qt-models/divetripmodel.h | 2 | ||||
-rw-r--r-- | qt-models/mobilelistmodel.h | 2 |
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, |