mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
mobile/divelist: copy & paste the roles-code from DiveListModel
To act as a drop-in replacement (at least as much as possible), move the roles from the old DiveListModel to the common base model of mobile and desktop. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
35b33b8c6a
commit
c5d17c3d4d
2 changed files with 66 additions and 0 deletions
|
@ -1,6 +1,9 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
#include "qt-models/divetripmodel.h"
|
#include "qt-models/divetripmodel.h"
|
||||||
#include "core/divefilter.h"
|
#include "core/divefilter.h"
|
||||||
|
#ifdef SUBSURFACE_MOBILE
|
||||||
|
#include "qt-models/mobilelistmodel.h"
|
||||||
|
#endif
|
||||||
#include "core/gettextfromc.h"
|
#include "core/gettextfromc.h"
|
||||||
#include "core/metrics.h"
|
#include "core/metrics.h"
|
||||||
#include "core/selection.h"
|
#include "core/selection.h"
|
||||||
|
@ -13,6 +16,7 @@
|
||||||
#include "commands/command.h"
|
#include "commands/command.h"
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QDateTime>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -56,6 +60,13 @@ static QVariant dive_table_alignment(int column)
|
||||||
|
|
||||||
QVariant DiveTripModelBase::tripData(const dive_trip *trip, int column, int role)
|
QVariant DiveTripModelBase::tripData(const dive_trip *trip, int column, int role)
|
||||||
{
|
{
|
||||||
|
#ifdef SUBSURFACE_MOBILE
|
||||||
|
// Special roles for mobile
|
||||||
|
switch(role) {
|
||||||
|
case MobileListModel::TripIdRole: return QString::number(trip->id);
|
||||||
|
case MobileListModel::TripNrDivesRole: return trip->dives.nr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (role == TRIP_ROLE)
|
if (role == TRIP_ROLE)
|
||||||
return QVariant::fromValue(const_cast<dive_trip *>(trip)); // Not nice: casting away a const
|
return QVariant::fromValue(const_cast<dive_trip *>(trip)); // Not nice: casting away a const
|
||||||
|
@ -138,6 +149,50 @@ static QString displayWeight(const struct dive *d, bool units)
|
||||||
|
|
||||||
QVariant DiveTripModelBase::diveData(const struct dive *d, int column, int role)
|
QVariant DiveTripModelBase::diveData(const struct dive *d, int column, int role)
|
||||||
{
|
{
|
||||||
|
#ifdef SUBSURFACE_MOBILE
|
||||||
|
// Special roles for mobile
|
||||||
|
switch (role) {
|
||||||
|
case MobileListModel::DiveDateRole: return (qlonglong)d->when;
|
||||||
|
// We have to return a QString as trip-id, because that will be used as section
|
||||||
|
// variable in the QtQuick list view. That has to be a string because it will try
|
||||||
|
// to do locale-aware sorting. And amazingly this can't be changed.
|
||||||
|
case MobileListModel::DateTimeRole: {
|
||||||
|
QDateTime localTime = QDateTime::fromMSecsSinceEpoch(1000 * d->when, Qt::UTC);
|
||||||
|
localTime.setTimeSpec(Qt::UTC);
|
||||||
|
return QStringLiteral("%1 %2").arg(localTime.date().toString(prefs.date_format_short),
|
||||||
|
localTime.time().toString(prefs.time_format));
|
||||||
|
}
|
||||||
|
case MobileListModel::IdRole: return d->id;
|
||||||
|
case MobileListModel::NumberRole: return d->number;
|
||||||
|
case MobileListModel::LocationRole: return get_dive_location(d);
|
||||||
|
case MobileListModel::DepthRole: return get_depth_string(d->dc.maxdepth.mm, true, true);
|
||||||
|
case MobileListModel::DurationRole: return get_dive_duration_string(d->duration.seconds, gettextFromC::tr("h"), gettextFromC::tr("min"));
|
||||||
|
case MobileListModel::DepthDurationRole: return QStringLiteral("%1 / %2").arg(get_depth_string(d->dc.maxdepth.mm, true, true),
|
||||||
|
get_dive_duration_string(d->duration.seconds, gettextFromC::tr("h"), gettextFromC::tr("min")));
|
||||||
|
case MobileListModel::RatingRole: return d->rating;
|
||||||
|
case MobileListModel::VizRole: return d->visibility;
|
||||||
|
case MobileListModel::SuitRole: return d->suit;
|
||||||
|
case MobileListModel::AirTempRole: return get_temperature_string(d->airtemp, true);
|
||||||
|
case MobileListModel::WaterTempRole: return get_temperature_string(d->watertemp, true);
|
||||||
|
case MobileListModel::SacRole: return formatSac(d);
|
||||||
|
case MobileListModel::SumWeightRole: return get_weight_string(weight_t { total_weight(d) }, true);
|
||||||
|
case MobileListModel::DiveMasterRole: return d->divemaster ? d->divemaster : QString();
|
||||||
|
case MobileListModel::BuddyRole: return d->buddy ? d->buddy : QString();
|
||||||
|
case MobileListModel::NotesRole: return formatNotes(d);
|
||||||
|
case MobileListModel::GpsRole: return d->dive_site ? printGPSCoords(&d->dive_site->location) : QString();
|
||||||
|
case MobileListModel::GpsDecimalRole: return format_gps_decimal(d);
|
||||||
|
case MobileListModel::NoDiveRole: return d->duration.seconds == 0 && d->dc.duration.seconds == 0;
|
||||||
|
case MobileListModel::DiveSiteRole: return QVariant::fromValue(d->dive_site);
|
||||||
|
case MobileListModel::CylinderRole: return formatGetCylinder(d).join(", ");
|
||||||
|
case MobileListModel::GetCylinderRole: return formatGetCylinder(d);
|
||||||
|
case MobileListModel::CylinderListRole: return getFullCylinderList();
|
||||||
|
case MobileListModel::SingleWeightRole: return d->weightsystems.nr <= 1;
|
||||||
|
case MobileListModel::StartPressureRole: return getStartPressure(d);
|
||||||
|
case MobileListModel::EndPressureRole: return getEndPressure(d);
|
||||||
|
case MobileListModel::FirstGasRole: return getFirstGas(d);
|
||||||
|
case MobileListModel::SelectedRole: return d->selected;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
switch (role) {
|
switch (role) {
|
||||||
case Qt::TextAlignmentRole:
|
case Qt::TextAlignmentRole:
|
||||||
return dive_table_alignment(column);
|
return dive_table_alignment(column);
|
||||||
|
|
|
@ -91,4 +91,15 @@ private slots:
|
||||||
void changed(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles);
|
void changed(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Helper functions - these are actually defined in DiveObjectHelper.cpp. Why declare them here?
|
||||||
|
QString formatSac(const dive *d);
|
||||||
|
QString formatNotes(const dive *d);
|
||||||
|
QString format_gps_decimal(const dive *d);
|
||||||
|
QStringList formatGetCylinder(const dive *d);
|
||||||
|
QStringList getStartPressure(const dive *d);
|
||||||
|
QStringList getEndPressure(const dive *d);
|
||||||
|
QStringList getFirstGas(const dive *d);
|
||||||
|
QStringList getFullCylinderList();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue