diff options
Diffstat (limited to 'qt-models')
-rw-r--r-- | qt-models/divelocationmodel.cpp | 18 | ||||
-rw-r--r-- | qt-models/divelocationmodel.h | 9 |
2 files changed, 17 insertions, 10 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp index ba9dede0d..4411f5d98 100644 --- a/qt-models/divelocationmodel.cpp +++ b/qt-models/divelocationmodel.cpp @@ -32,20 +32,15 @@ int LocationInformationModel::rowCount(const QModelIndex&) const return dive_site_table.nr; } -QVariant LocationInformationModel::data(const QModelIndex &index, int role) const +QVariant LocationInformationModel::getDiveSiteData(const struct dive_site *ds, int column, int role) { - if (!index.isValid()) - return QVariant(); - - struct dive_site *ds = get_dive_site(index.row()); - if (!ds) return QVariant(); switch(role) { case Qt::EditRole: case Qt::DisplayRole : - switch(index.column()) { + switch(column) { case UUID: return ds->uuid; case NAME: return ds->name; case LATITUDE: return ds->latitude.udeg; @@ -70,6 +65,15 @@ QVariant LocationInformationModel::data(const QModelIndex &index, int role) cons return QVariant(); } +QVariant LocationInformationModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + struct dive_site *ds = get_dive_site(index.row()); + return getDiveSiteData(ds, index.column(), role); +} + void LocationInformationModel::update() { beginResetModel(); diff --git a/qt-models/divelocationmodel.h b/qt-models/divelocationmodel.h index 47164d2d4..8dbc8f3e6 100644 --- a/qt-models/divelocationmodel.h +++ b/qt-models/divelocationmodel.h @@ -8,18 +8,21 @@ #include "core/units.h" #include "ssrfsortfilterproxymodel.h" -class QLineEdit; - #define RECENTLY_ADDED_DIVESITE 1 bool filter_same_gps_cb (QAbstractItemModel *m, int sourceRow, const QModelIndex& parent); + class LocationInformationModel : public QAbstractTableModel { Q_OBJECT public: - LocationInformationModel(QObject *obj = 0); + // Common columns, roles and accessor function for all dive-site models. + // Thus, different views can connect to different models. enum Columns { UUID, NAME, LATITUDE, LONGITUDE, COORDS, DESCRIPTION, NOTES, TAXONOMY_1, TAXONOMY_2, TAXONOMY_3, COLUMNS}; enum Roles { UUID_ROLE = Qt::UserRole + 1 }; + static QVariant getDiveSiteData(const struct dive_site *ds, int column, int role); + + LocationInformationModel(QObject *obj = 0); static LocationInformationModel *instance(); int columnCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &parent = QModelIndex()) const; |