summaryrefslogtreecommitdiffstats
path: root/qt-models
diff options
context:
space:
mode:
Diffstat (limited to 'qt-models')
-rw-r--r--qt-models/divetripmodel.cpp533
-rw-r--r--qt-models/divetripmodel.h57
2 files changed, 200 insertions, 390 deletions
diff --git a/qt-models/divetripmodel.cpp b/qt-models/divetripmodel.cpp
index 94f4b6b51..ff96669a7 100644
--- a/qt-models/divetripmodel.cpp
+++ b/qt-models/divetripmodel.cpp
@@ -9,7 +9,7 @@
#include <QIcon>
#include <QDebug>
-static int nitrox_sort_value(struct dive *dive)
+static int nitrox_sort_value(const struct dive *dive)
{
int o2, he, o2max;
get_dive_gas(dive, &o2, &he, &o2max);
@@ -18,7 +18,6 @@ static int nitrox_sort_value(struct dive *dive)
static QVariant dive_table_alignment(int column)
{
- QVariant retVal;
switch (column) {
case DiveTripModel::DEPTH:
case DiveTripModel::DURATION:
@@ -28,9 +27,8 @@ static QVariant dive_table_alignment(int column)
case DiveTripModel::OTU:
case DiveTripModel::MAXCNS:
// Right align numeric columns
- retVal = int(Qt::AlignRight | Qt::AlignVCenter);
- break;
- // NR needs to be left aligned becase its the indent marker for trips too
+ return int(Qt::AlignRight | Qt::AlignVCenter);
+ // NR needs to be left aligned because its the indent marker for trips too
case DiveTripModel::NR:
case DiveTripModel::DATE:
case DiveTripModel::RATING:
@@ -42,21 +40,19 @@ static QVariant dive_table_alignment(int column)
case DiveTripModel::COUNTRY:
case DiveTripModel::BUDDIES:
case DiveTripModel::LOCATION:
- retVal = int(Qt::AlignLeft | Qt::AlignVCenter);
- break;
+ return int(Qt::AlignLeft | Qt::AlignVCenter);
}
- return retVal;
+ return QVariant();
}
-QVariant TripItem::data(int column, int role) const
+QVariant DiveTripModel::tripData(const dive_trip *trip, int column, int role)
{
- QVariant ret;
bool oneDayTrip=true;
- if (role == DiveTripModel::TRIP_ROLE)
- return QVariant::fromValue<void *>(trip);
+ if (role == TRIP_ROLE)
+ return QVariant::fromValue<void *>((void *)trip); // Not nice: casting away a const
- if (role == DiveTripModel::SORT_ROLE)
+ if (role == SORT_ROLE)
return (qulonglong)trip->when;
if (role == Qt::DisplayRole) {
@@ -74,14 +70,13 @@ QVariant TripItem::data(int column, int role) const
if (countShown < trip->nrdives)
shownText = tr("(%1 shown)").arg(countShown);
if (!empty_string(trip->location))
- ret = QString(trip->location) + ", " + get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + " "+ shownText;
+ return QString(trip->location) + ", " + get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + " "+ shownText;
else
- ret = get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + shownText;
- break;
+ return get_trip_date_string(trip->when, trip->nrdives, oneDayTrip) + shownText;
}
}
- return ret;
+ return QVariant();
}
static const QString icon_names[4] = {
@@ -91,148 +86,162 @@ static const QString icon_names[4] = {
QStringLiteral(":photo-in-out-icon")
};
-QVariant DiveItem::data(int column, int role) const
+static int countPhotos(const struct dive *d)
+{ // Determine whether dive has pictures, and whether they were taken during or before/after dive.
+ const int bufperiod = 120; // A 2-min buffer period. Photos within 2 min of dive are assumed as
+ int diveTotaltime = dive_endtime(d) - d->when; // taken during the dive, not before/after.
+ int pic_offset, icon_index = 0;
+ FOR_EACH_PICTURE (d) { // Step through each of the pictures for this dive:
+ pic_offset = picture->offset.seconds;
+ if ((pic_offset < -bufperiod) | (pic_offset > diveTotaltime+bufperiod)) {
+ icon_index |= 0x02; // If picture is before/after the dive
+ } // then set the appropriate bit ...
+ else {
+ icon_index |= 0x01; // else set the bit for picture during the dive
+ }
+ }
+ return icon_index; // return value: 0=no pictures; 1=pictures during dive;
+} // 2=pictures before/after; 3=pictures during as well as before/after
+
+static QString displayDuration(const struct dive *d)
{
- QVariant retVal;
+ if (prefs.units.show_units_table)
+ return get_dive_duration_string(d->duration.seconds, gettextFromC::tr("h"), gettextFromC::tr("min"), "", ":", d->dc.divemode == FREEDIVE);
+ else
+ return get_dive_duration_string(d->duration.seconds, "", "", "", ":", d->dc.divemode == FREEDIVE);
+}
+static QString displayTemperature(const struct dive *d, bool units)
+{
+ if (!d->watertemp.mkelvin)
+ return QString();
+ return get_temperature_string(d->watertemp, units);
+}
+
+static QString displaySac(const struct dive *d, bool units)
+{
+ if (!d->sac)
+ return QString();
+ QString s = get_volume_string(d->sac, units);
+ return units ? s + gettextFromC::tr("/min") : s;
+}
+
+static QString displayWeight(const struct dive *d, bool units)
+{
+ QString s = weight_string(total_weight(d));
+ if (!units)
+ return s;
+ else if (get_units()->weight == units::KG)
+ return s + gettextFromC::tr("kg");
+ else
+ return s + gettextFromC::tr("lbs");
+}
+
+QVariant DiveTripModel::diveData(const struct dive *d, int column, int role)
+{
switch (role) {
case Qt::TextAlignmentRole:
- retVal = dive_table_alignment(column);
- break;
- case DiveTripModel::SORT_ROLE:
+ return dive_table_alignment(column);
+ case SORT_ROLE:
switch (column) {
case NR:
- retVal = (qlonglong)d->when;
- break;
+ return (qlonglong)d->when;
case DATE:
- retVal = (qlonglong)d->when;
- break;
+ return (qlonglong)d->when;
case RATING:
- retVal = d->rating;
- break;
+ return d->rating;
case DEPTH:
- retVal = d->maxdepth.mm;
- break;
+ return d->maxdepth.mm;
case DURATION:
- retVal = d->duration.seconds;
- break;
+ return d->duration.seconds;
case TEMPERATURE:
- retVal = d->watertemp.mkelvin;
- break;
+ return d->watertemp.mkelvin;
case TOTALWEIGHT:
- retVal = total_weight(d);
- break;
+ return total_weight(d);
case SUIT:
- retVal = QString(d->suit);
- break;
+ return QString(d->suit);
case CYLINDER:
- retVal = QString(d->cylinder[0].type.description);
- break;
+ return QString(d->cylinder[0].type.description);
case GAS:
- retVal = nitrox_sort_value(d);
- break;
+ return nitrox_sort_value(d);
case SAC:
- retVal = d->sac;
- break;
+ return d->sac;
case OTU:
- retVal = d->otu;
- break;
+ return d->otu;
case MAXCNS:
- retVal = d->maxcns;
- break;
+ return d->maxcns;
case TAGS:
- retVal = displayTags();
- break;
+ return get_taglist_string(d->tag_list);
case PHOTOS:
- retVal = countPhotos();
- break;
+ return countPhotos(d);
case COUNTRY:
- retVal = QString(get_dive_country(d));
- break;
+ return QString(get_dive_country(d));
case BUDDIES:
- retVal = QString(d->buddy);
- break;
+ return QString(d->buddy);
case LOCATION:
- retVal = QString(get_dive_location(d));
- break;
+ return QString(get_dive_location(d));
}
break;
case Qt::DisplayRole:
switch (column) {
case NR:
- retVal = d->number;
- break;
+ return d->number;
case DATE:
- retVal = displayDate();
- break;
+ return get_dive_date_string(d->when);
case DEPTH:
- retVal = prefs.units.show_units_table ? displayDepthWithUnit() : displayDepth();
- break;
+ return get_depth_string(d->maxdepth, prefs.units.show_units_table);
case DURATION:
- retVal = displayDuration();
- break;
+ return displayDuration(d);
case TEMPERATURE:
- retVal = prefs.units.show_units_table ? retVal = displayTemperatureWithUnit() : displayTemperature();
- break;
+ return displayTemperature(d, prefs.units.show_units_table);
case TOTALWEIGHT:
- retVal = prefs.units.show_units_table ? retVal = displayWeightWithUnit() : displayWeight();
- break;
+ return displayWeight(d, prefs.units.show_units_table);
case SUIT:
- retVal = QString(d->suit);
- break;
+ return QString(d->suit);
case CYLINDER:
- retVal = QString(d->cylinder[0].type.description);
- break;
+ return QString(d->cylinder[0].type.description);
case SAC:
- retVal = prefs.units.show_units_table ? retVal = displaySacWithUnit() : displaySac();
- break;
+ return displaySac(d, prefs.units.show_units_table);
case OTU:
- retVal = d->otu;
- break;
+ return d->otu;
case MAXCNS:
if (prefs.units.show_units_table)
- retVal = QString("%1%").arg(d->maxcns);
+ return QString("%1%").arg(d->maxcns);
else
- retVal = d->maxcns;
- break;
+ return d->maxcns;
case TAGS:
- retVal = displayTags();
- break;
+ return get_taglist_string(d->tag_list);
case PHOTOS:
break;
case COUNTRY:
- retVal = QString(get_dive_country(d));
- break;
+ return QString(get_dive_country(d));
case BUDDIES:
- retVal = QString(d->buddy);
- break;
+ return QString(d->buddy);
case LOCATION:
- retVal = QString(get_dive_location(d));
- break;
+ return QString(get_dive_location(d));
case GAS:
- const char *gas_string = get_dive_gas_string(d);
- retVal = QString(gas_string);
- free((void*)gas_string);
- break;
+ char *gas_string = get_dive_gas_string(d);
+ QString ret(gas_string);
+ free(gas_string);
+ return ret;
}
break;
case Qt::DecorationRole:
switch (column) {
//TODO: ADD A FLAG
case COUNTRY:
- retVal = QVariant();
- break;
+ return QVariant();
case LOCATION:
if (dive_has_gps_location(d)) {
IconMetrics im = defaultIconMetrics();
- retVal = QIcon(":globe-icon").pixmap(im.sz_small, im.sz_small);
+ return QIcon(":globe-icon").pixmap(im.sz_small, im.sz_small);
}
break;
case PHOTOS:
if (d->picture_list)
{
IconMetrics im = defaultIconMetrics();
- retVal = QIcon(icon_names[countPhotos()]).pixmap(im.sz_small, im.sz_small);
+ return QIcon(icon_names[countPhotos(d)]).pixmap(im.sz_small, im.sz_small);
} // If there are photos, show one of the three photo icons: fish= photos during dive;
break; // sun=photos before/after dive; sun+fish=photos during dive as well as before/after
}
@@ -240,188 +249,55 @@ QVariant DiveItem::data(int column, int role) const
case Qt::ToolTipRole:
switch (column) {
case NR:
- retVal = tr("#");
- break;
+ return tr("#");
case DATE:
- retVal = tr("Date");
- break;
+ return tr("Date");
case RATING:
- retVal = tr("Rating");
- break;
+ return tr("Rating");
case DEPTH:
- retVal = tr("Depth(%1)").arg((get_units()->length == units::METERS) ? tr("m") : tr("ft"));
- break;
+ return tr("Depth(%1)").arg((get_units()->length == units::METERS) ? tr("m") : tr("ft"));
case DURATION:
- retVal = tr("Duration");
- break;
+ return tr("Duration");
case TEMPERATURE:
- retVal = tr("Temp.(%1%2)").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F");
- break;
+ return tr("Temp.(%1%2)").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F");
case TOTALWEIGHT:
- retVal = tr("Weight(%1)").arg((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
- break;
+ return tr("Weight(%1)").arg((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
case SUIT:
- retVal = tr("Suit");
- break;
+ return tr("Suit");
case CYLINDER:
- retVal = tr("Cylinder");
- break;
+ return tr("Cylinder");
case GAS:
- retVal = tr("Gas");
- break;
+ return tr("Gas");
case SAC:
const char *unit;
get_volume_units(0, NULL, &unit);
- retVal = tr("SAC(%1)").arg(QString(unit).append(tr("/min")));
- break;
+ return tr("SAC(%1)").arg(QString(unit).append(tr("/min")));
case OTU:
- retVal = tr("OTU");
- break;
+ return tr("OTU");
case MAXCNS:
- retVal = tr("Max. CNS");
- break;
+ return tr("Max. CNS");
case TAGS:
- retVal = tr("Tags");
- break;
+ return tr("Tags");
case PHOTOS:
- retVal = tr("Media before/during/after dive");
- break;
+ return tr("Media before/during/after dive");
case COUNTRY:
- retVal = tr("Country");
- break;
+ return tr("Country");
case BUDDIES:
- retVal = tr("Buddy");
- break;
+ return tr("Buddy");
case LOCATION:
- retVal = tr("Location");
- break;
+ return tr("Location");
}
break;
- case DiveTripModel::STAR_ROLE:
- retVal = d->rating;
- break;
- case DiveTripModel::DIVE_ROLE:
- retVal = QVariant::fromValue<void *>(d);
- break;
- case DiveTripModel::DIVE_IDX:
- retVal = get_divenr(d);
- break;
- case DiveTripModel::SELECTED_ROLE:
- retVal = d->selected;
- break;
- }
- return retVal;
-}
-
-bool DiveItem::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- if (role != Qt::EditRole)
- return false;
- if (index.column() != NR)
- return false;
-
- int v = value.toInt();
- if (v == 0)
- return false;
-
- int i;
- struct dive *dive;
- for_each_dive (i, dive) {
- if (dive->number == v)
- return false;
- }
- d->number = value.toInt();
- mark_divelist_changed(true);
- return true;
-}
-
-QString DiveItem::displayDate() const
-{
- return get_dive_date_string(d->when);
-}
-
-QString DiveItem::displayDepth() const
-{
- return get_depth_string(d->maxdepth);
-}
-
-QString DiveItem::displayDepthWithUnit() const
-{
- return get_depth_string(d->maxdepth, true);
-}
-
-int DiveItem::countPhotos() const
-{ // Determine whether dive has pictures, and whether they were taken during or before/after dive.
- const int bufperiod = 120; // A 2-min buffer period. Photos within 2 min of dive are assumed as
- int diveTotaltime = dive_endtime(d) - d->when; // taken during the dive, not before/after.
- int pic_offset, icon_index = 0;
- FOR_EACH_PICTURE (d) { // Step through each of the pictures for this dive:
- pic_offset = picture->offset.seconds;
- if ((pic_offset < -bufperiod) | (pic_offset > diveTotaltime+bufperiod)) {
- icon_index |= 0x02; // If picture is before/after the dive
- } // then set the appropriate bit ...
- else {
- icon_index |= 0x01; // else set the bit for picture during the dive
- }
+ case STAR_ROLE:
+ return d->rating;
+ case DIVE_ROLE:
+ return QVariant::fromValue<void *>((void *)d); // Not nice: casting away a const
+ case DIVE_IDX:
+ return get_divenr(d);
+ case SELECTED_ROLE:
+ return d->selected;
}
- return icon_index; // return value: 0=no pictures; 1=pictures during dive;
-} // 2=pictures before/after; 3=pictures during as well as before/after
-
-QString DiveItem::displayDuration() const
-{
- if (prefs.units.show_units_table)
- return get_dive_duration_string(d->duration.seconds, tr("h"), tr("min"), "", ":", d->dc.divemode == FREEDIVE);
- else
- return get_dive_duration_string(d->duration.seconds, "", "", "", ":", d->dc.divemode == FREEDIVE);
-}
-
-QString DiveItem::displayTemperature() const
-{
- if (!d->watertemp.mkelvin)
- return QString();
- return get_temperature_string(d->watertemp, false);
-}
-
-QString DiveItem::displayTemperatureWithUnit() const
-{
- if (!d->watertemp.mkelvin)
- return QString();
- return get_temperature_string(d->watertemp, true);
-}
-
-QString DiveItem::displaySac() const
-{
- if (!d->sac)
- return QString();
- return get_volume_string(d->sac, false);
-}
-
-QString DiveItem::displaySacWithUnit() const
-{
- if (!d->sac)
- return QString();
- return get_volume_string(d->sac, true).append(tr("/min"));
-}
-
-QString DiveItem::displayWeight() const
-{
- return weight_string(weight());
-}
-
-QString DiveItem::displayWeightWithUnit() const
-{
- return weight_string(weight()) + ((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
-}
-
-QString DiveItem::displayTags() const
-{
- return get_taglist_string(d->tag_list);
-}
-
-int DiveItem::weight() const
-{
- weight_t tw = { total_weight(d) };
- return tw.grams;
+ return QVariant();
}
DiveTripModel *DiveTripModel::instance()
@@ -508,135 +384,97 @@ Qt::ItemFlags DiveTripModel::flags(const QModelIndex &index) const
QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- QVariant ret;
if (orientation == Qt::Vertical)
- return ret;
+ return QVariant();
switch (role) {
case Qt::TextAlignmentRole:
- ret = dive_table_alignment(section);
- break;
+ return dive_table_alignment(section);
case Qt::FontRole:
- ret = defaultModelFont();
- break;
+ return defaultModelFont();
case Qt::DisplayRole:
switch (section) {
case NR:
- ret = tr("#");
- break;
+ return tr("#");
case DATE:
- ret = tr("Date");
- break;
+ return tr("Date");
case RATING:
- ret = tr("Rating");
- break;
+ return tr("Rating");
case DEPTH:
- ret = tr("Depth");
- break;
+ return tr("Depth");
case DURATION:
- ret = tr("Duration");
- break;
+ return tr("Duration");
case TEMPERATURE:
- ret = tr("Temp.");
- break;
+ return tr("Temp.");
case TOTALWEIGHT:
- ret = tr("Weight");
- break;
+ return tr("Weight");
case SUIT:
- ret = tr("Suit");
- break;
+ return tr("Suit");
case CYLINDER:
- ret = tr("Cylinder");
- break;
+ return tr("Cylinder");
case GAS:
- ret = tr("Gas");
- break;
+ return tr("Gas");
case SAC:
- ret = tr("SAC");
- break;
+ return tr("SAC");
case OTU:
- ret = tr("OTU");
- break;
+ return tr("OTU");
case MAXCNS:
- ret = tr("Max CNS");
- break;
+ return tr("Max CNS");
case TAGS:
- ret = tr("Tags");
- break;
+ return tr("Tags");
case PHOTOS:
- ret = tr("Media");
- break;
+ return tr("Media");
case COUNTRY:
- ret = tr("Country");
- break;
+ return tr("Country");
case BUDDIES:
- ret = tr("Buddy");
- break;
+ return tr("Buddy");
case LOCATION:
- ret = tr("Location");
- break;
+ return tr("Location");
}
break;
case Qt::ToolTipRole:
switch (section) {
case NR:
- ret = tr("#");
- break;
+ return tr("#");
case DATE:
- ret = tr("Date");
- break;
+ return tr("Date");
case RATING:
- ret = tr("Rating");
- break;
+ return tr("Rating");
case DEPTH:
- ret = tr("Depth(%1)").arg((get_units()->length == units::METERS) ? tr("m") : tr("ft"));
- break;
+ return tr("Depth(%1)").arg((get_units()->length == units::METERS) ? tr("m") : tr("ft"));
case DURATION:
- ret = tr("Duration");
- break;
+ return tr("Duration");
case TEMPERATURE:
- ret = tr("Temp.(%1%2)").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F");
- break;
+ return tr("Temp.(%1%2)").arg(UTF8_DEGREE).arg((get_units()->temperature == units::CELSIUS) ? "C" : "F");
case TOTALWEIGHT:
- ret = tr("Weight(%1)").arg((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
- break;
+ return tr("Weight(%1)").arg((get_units()->weight == units::KG) ? tr("kg") : tr("lbs"));
case SUIT:
- ret = tr("Suit");
- break;
+ return tr("Suit");
case CYLINDER:
- ret = tr("Cylinder");
- break;
+ return tr("Cylinder");
case GAS:
- ret = tr("Gas");
- break;
+ return tr("Gas");
case SAC:
const char *unit;
get_volume_units(0, NULL, &unit);
- ret = tr("SAC(%1)").arg(QString(unit).append(tr("/min")));
- break;
+ return tr("SAC(%1)").arg(QString(unit).append(tr("/min")));
case OTU:
- ret = tr("OTU");
- break;
+ return tr("OTU");
case MAXCNS:
- ret = tr("Max CNS");
- break;
+ return tr("Max CNS");
case TAGS:
- ret = tr("Tags");
- break;
+ return tr("Tags");
case PHOTOS:
- ret = tr("Media before/during/after dive");
- break;
+ return tr("Media before/during/after dive");
case BUDDIES:
- ret = tr("Buddy");
- break;
+ return tr("Buddy");
case LOCATION:
- ret = tr("Location");
- break;
+ return tr("Location");
}
break;
}
- return ret;
+ return QVariant();
}
DiveTripModel::Item::Item(dive_trip *t, const QVector<dive *> &divesIn) : trip(t),
@@ -834,17 +672,38 @@ QVariant DiveTripModel::data(const QModelIndex &index, int role) const
auto entry = tripOrDive(index);
if (entry.first)
- return TripItem(entry.first).data(index.column(), role);
+ return tripData(entry.first, index.column(), role);
else if (entry.second)
- return DiveItem(entry.second).data(index.column(), role);
+ return diveData(entry.second, index.column(), role);
else
return QVariant();
}
bool DiveTripModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
+ // We only support setting of data for dives and there, only the number.
dive *d = diveOrNull(index);
- return d ? DiveItem(d).setData(index, value, role) : false;
+ if (!d)
+ return false;
+ if (role != Qt::EditRole)
+ return false;
+ if (index.column() != NR)
+ return false;
+
+ int v = value.toInt();
+ if (v == 0)
+ return false;
+
+ // Only accept numbers that are not already in use by other dives.
+ int i;
+ struct dive *dive;
+ for_each_dive (i, dive) {
+ if (dive->number == v)
+ return false;
+ }
+ d->number = v;
+ mark_divelist_changed(true);
+ return true;
}
int DiveTripModel::findTripIdx(const dive_trip *trip) const
diff --git a/qt-models/divetripmodel.h b/qt-models/divetripmodel.h
index fb3c3395d..d75926f9e 100644
--- a/qt-models/divetripmodel.h
+++ b/qt-models/divetripmodel.h
@@ -4,59 +4,6 @@
#include "core/dive.h"
#include <QAbstractItemModel>
-#include <QCoreApplication> // For Q_DECLARE_TR_FUNCTIONS
-
-struct DiveItem {
- Q_DECLARE_TR_FUNCTIONS(TripItem) // Is that TripItem on purpose?
-public:
- enum Column {
- NR,
- DATE,
- RATING,
- DEPTH,
- DURATION,
- TEMPERATURE,
- TOTALWEIGHT,
- SUIT,
- CYLINDER,
- GAS,
- SAC,
- OTU,
- MAXCNS,
- TAGS,
- PHOTOS,
- BUDDIES,
- COUNTRY,
- LOCATION,
- COLUMNS
- };
-
- QVariant data(int column, int role) const;
- dive *d;
- DiveItem(dive *dIn) : d(dIn) {} // Trivial constructor
- bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
- QString displayDate() const;
- QString displayDuration() const;
- QString displayDepth() const;
- QString displayDepthWithUnit() const;
- QString displayTemperature() const;
- QString displayTemperatureWithUnit() const;
- QString displayWeight() const;
- QString displayWeightWithUnit() const;
- QString displaySac() const;
- QString displaySacWithUnit() const;
- QString displayTags() const;
- int countPhotos() const;
- int weight() const;
-};
-
-struct TripItem {
- Q_DECLARE_TR_FUNCTIONS(TripItem)
-public:
- QVariant data(int column, int role) const;
- dive_trip_t *trip;
- TripItem(dive_trip_t *tIn) : trip(tIn) {} // Trivial constructor
-};
class DiveTripModel : public QAbstractItemModel {
Q_OBJECT
@@ -165,6 +112,10 @@ private:
int findDiveInTrip(int tripIdx, const dive *d) const; // Find dive inside trip. Second parameter is index of trip
int findInsertionIndex(timestamp_t when) const; // Where to insert item with timestamp "when"
+ // 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);
+
// Select or deselect dives
void changeDiveSelection(dive_trip *trip, const QVector<dive *> &dives, bool select);