diff --git a/mobile-widgets/qml/DiveList.qml b/mobile-widgets/qml/DiveList.qml index a2cb1e40c..b2c99a02b 100644 --- a/mobile-widgets/qml/DiveList.qml +++ b/mobile-widgets/qml/DiveList.qml @@ -353,8 +353,7 @@ Kirigami.ScrollablePage { } Controls.Label { text: { - var trip = diveListView.model.tripIdToObject(section); - diveListView.model.tripShortDate(trip); + diveListView.model.tripShortDate(section) } color: subsurfaceTheme.primaryTextColor font.pointSize: subsurfaceTheme.smallPointSize @@ -379,8 +378,7 @@ Kirigami.ScrollablePage { Controls.Label { id: sectionText text: { - var trip = diveListView.model.tripIdToObject(section); - diveListView.model.tripTitle(trip); + diveListView.model.tripTitle(section) } wrapMode: Text.WrapAtWordBoundaryOrAnywhere visible: text !== "" diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index 4b0058b43..779e695ab 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -79,26 +79,26 @@ void DiveListSortModel::reload() // In QtQuick ListView, section headings can only be strings. To identify dives // that belong to the same trip, a string containing the trip-id is passed in. // To format the trip heading, the string is then converted back with this function. -QVariant DiveListSortModel::tripIdToObject(const QString &s) +static dive_trip *tripIdToObject(const QString &s) { if (s.isEmpty()) - return QVariant(); + return nullptr; int id = s.toInt(); dive_trip **trip = std::find_if(&trip_table.trips[0], &trip_table.trips[trip_table.nr], [id] (const dive_trip *t) { return t->id == id; }); if (trip == &trip_table.trips[trip_table.nr]) { fprintf(stderr, "Warning: unknown trip id passed through QML: %d\n", id); - return QVariant(); + return nullptr; } - return QVariant::fromValue(*trip); + return *trip; } // the trip title is designed to be location (# dives) // or, if there is no location name date range (# dives) // where the date range is given as "month year" or "month-month year" or "month year - month year" -QString DiveListSortModel::tripTitle(const QVariant &tripIn) +QString DiveListSortModel::tripTitle(const QString §ion) { - dive_trip *dt = tripIn.value(); + const dive_trip *dt = tripIdToObject(section); if (!dt) return QString(); QString numDives = tr("(%n dive(s))", "", dt->dives.nr); @@ -124,9 +124,9 @@ QString DiveListSortModel::tripTitle(const QVariant &tripIn) return QStringLiteral("%1 %2%3").arg(title, numDives, shownDives); } -QString DiveListSortModel::tripShortDate(const QVariant &tripIn) +QString DiveListSortModel::tripShortDate(const QString §ion) { - dive_trip *dt = tripIn.value(); + const dive_trip *dt = tripIdToObject(section); if (!dt) return QString(); QDateTime firstTime = QDateTime::fromMSecsSinceEpoch(1000*trip_date(dt), Qt::UTC); diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h index c355aceaf..d6eb07463 100644 --- a/qt-models/divelistmodel.h +++ b/qt-models/divelistmodel.h @@ -14,9 +14,8 @@ public: DiveListSortModel(QObject *parent = 0); void setSourceModel(QAbstractItemModel *sourceModel); Q_INVOKABLE void reload(); - Q_INVOKABLE QVariant tripIdToObject(const QString &s); - Q_INVOKABLE QString tripTitle(const QVariant &trip); - Q_INVOKABLE QString tripShortDate(const QVariant &trip); + Q_INVOKABLE QString tripTitle(const QString &trip); + Q_INVOKABLE QString tripShortDate(const QString &trip); public slots: int getIdxForId(int id); void setFilter(QString f);