diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2017-05-26 17:53:25 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-05-27 11:07:20 -0700 |
commit | 38e24512b74dcfb0f473fe0c8003c66e99354409 (patch) | |
tree | da874a08a20503079978a32a9a2fe2ee92c06213 /qt-models/diveimportedmodel.cpp | |
parent | 7858376727ee467ae59a18d84d40e3148ea3e38b (diff) | |
download | subsurface-38e24512b74dcfb0f473fe0c8003c66e99354409.tar.gz |
QML UI: add the Downloaded Dive Model
Still to do:
- select the dives to save
- record the downloaded dives
but download is already working. :)
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/diveimportedmodel.cpp')
-rw-r--r-- | qt-models/diveimportedmodel.cpp | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/qt-models/diveimportedmodel.cpp b/qt-models/diveimportedmodel.cpp index 08c36e7e6..781cd72c6 100644 --- a/qt-models/diveimportedmodel.cpp +++ b/qt-models/diveimportedmodel.cpp @@ -7,6 +7,8 @@ DiveImportedModel::DiveImportedModel(QObject *o) : QAbstractTableModel(o), checkStates(nullptr), diveTable(nullptr) { + // Defaults to downloadTable, can be changed later. + diveTable = &downloadTable; } int DiveImportedModel::columnCount(const QModelIndex &model) const @@ -25,8 +27,16 @@ QVariant DiveImportedModel::headerData(int section, Qt::Orientation orientation, { if (orientation == Qt::Vertical) return QVariant(); + + // widgets access the model via index.column(), qml via role. + int column = section; + if (role == DateTime || role == Duration || role == Depth) { + column = role - DateTime; + role = Qt::DisplayRole; + } + if (role == Qt::DisplayRole) { - switch (section) { + switch (column) { case 0: return QVariant(tr("Date/time")); case 1: @@ -40,7 +50,7 @@ QVariant DiveImportedModel::headerData(int section, Qt::Orientation orientation, void DiveImportedModel::setDiveTable(struct dive_table* table) { - diveTable = table; + diveTable = table; } QVariant DiveImportedModel::data(const QModelIndex &index, int role) const @@ -54,8 +64,16 @@ QVariant DiveImportedModel::data(const QModelIndex &index, int role) const struct dive *d = get_dive_from_table(index.row() + firstIndex, diveTable); if (!d) return QVariant(); + + // widgets access the model via index.column(), qml via role. + int column = index.column(); + if (role == DateTime || role == Duration || role == Depth) { + column = role - DateTime; + role = Qt::DisplayRole; + } + if (role == Qt::DisplayRole) { - switch (index.column()) { + switch (column) { case 0: return QVariant(get_short_dive_date_string(d->when)); case 1: @@ -119,3 +137,16 @@ void DiveImportedModel::setImportedDivesIndexes(int first, int last) memset(checkStates, true, last - first + 1); endInsertRows(); } + +void DiveImportedModel::repopulate() +{ + setImportedDivesIndexes(0, diveTable->nr-1); +} + +QHash<int, QByteArray> DiveImportedModel::roleNames() const { + static QHash<int, QByteArray> roles = { + { DateTime, "datetime"}, + { Depth, "depth"}, + { Duration, "duration"}}; + return roles; +} |