QML UI: add downloaded dives to dive list

This already takes into account which of those dives were selected.
Right now all we have is select all or none - this needs actual support
in the UI, but once that's there, it will just work (famous last words).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2017-05-28 11:48:30 -07:00
parent 84b1b63d46
commit 3f0d21046e
5 changed files with 31 additions and 5 deletions

View file

@ -123,11 +123,11 @@ Kirigami.Page {
text: qsTr("Accept") text: qsTr("Accept")
enabled: false enabled: false
onClicked: { onClicked: {
manager.appendTextToLog("Save downloaded dives") manager.appendTextToLog("Save downloaded dives that were selected")
for (var i = 0; i < importModel.rowCount(); i++) { importModel.recordDives()
// figure out which ones are selected manager.saveChangesLocal()
// save the selected dive to the diveTable diveModel.clear()
} diveModel.addAllDives()
stackView.pop(); stackView.pop();
} }
} }

View file

@ -143,6 +143,17 @@ void DiveImportedModel::repopulate()
setImportedDivesIndexes(0, diveTable->nr-1); setImportedDivesIndexes(0, diveTable->nr-1);
} }
void DiveImportedModel::recordDives()
{
for (int i = 0; i < rowCount(); i++) {
if (diveTable->dives[i] && checkStates[i]) {
record_dive(diveTable->dives[i]);
diveTable->dives[i] = NULL;
}
}
diveTable->nr = 0;
}
QHash<int, QByteArray> DiveImportedModel::roleNames() const { QHash<int, QByteArray> DiveImportedModel::roleNames() const {
static QHash<int, QByteArray> roles = { static QHash<int, QByteArray> roles = {
{ DateTime, "datetime"}, { DateTime, "datetime"},

View file

@ -21,6 +21,7 @@ public:
void clearTable(); void clearTable();
QHash<int, QByteArray> roleNames() const; QHash<int, QByteArray> roleNames() const;
Q_INVOKABLE void repopulate(); Q_INVOKABLE void repopulate();
Q_INVOKABLE void recordDives();
public public
slots: slots:
void changeSelected(QModelIndex clickedIndex); void changeSelected(QModelIndex clickedIndex);

View file

@ -25,6 +25,18 @@ int DiveListSortModel::getIdxForId(int id)
return -1; return -1;
} }
void DiveListSortModel::clear()
{
DiveListModel *mySourceModel = qobject_cast<DiveListModel *>(sourceModel());
mySourceModel->clear();
}
void DiveListSortModel::addAllDives()
{
DiveListModel *mySourceModel = qobject_cast<DiveListModel *>(sourceModel());
mySourceModel->addAllDives();
}
DiveListModel *DiveListModel::m_instance = NULL; DiveListModel *DiveListModel::m_instance = NULL;
DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent)

View file

@ -14,6 +14,8 @@ class DiveListSortModel : public QSortFilterProxyModel
Q_OBJECT Q_OBJECT
public: public:
DiveListSortModel(QObject *parent = 0); DiveListSortModel(QObject *parent = 0);
Q_INVOKABLE void addAllDives();
Q_INVOKABLE void clear();
public slots: public slots:
int getDiveId(int idx); int getDiveId(int idx);
int getIdxForId(int id); int getIdxForId(int id);