summaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Grace Karanja <gracie.karanja89@gmail.com>2015-07-17 18:28:01 +0300
committerGravatar Grace Karanja <gracie.karanja89@gmail.com>2015-07-17 19:12:39 +0300
commitdf1a1f7034c6c332f7f71a64ab45955c089cd56b (patch)
tree0e52c44cdf4231a4d82e1ff91ae81dfd48e40706 /qt-mobile
parentaae27629c4b6f524911f869694da27dcd2533adb (diff)
downloadsubsurface-df1a1f7034c6c332f7f71a64ab45955c089cd56b.tar.gz
QML UI: Implement saving of dives
This implements saving of some dive details to the cloud service. When the user closes an open dives, any changed details will be cached, and when they click on the 'Save Changes' button is pressed, the changes will be saved to the cloud. Signed-off-by: Grace Karanja <gracie.karanja89@gmail.com>
Diffstat (limited to 'qt-mobile')
-rw-r--r--qt-mobile/DiveList.qml11
-rw-r--r--qt-mobile/main.qml8
-rw-r--r--qt-mobile/qmlmanager.cpp48
-rw-r--r--qt-mobile/qmlmanager.h2
4 files changed, 67 insertions, 2 deletions
diff --git a/qt-mobile/DiveList.qml b/qt-mobile/DiveList.qml
index 40507e26a..0f358081d 100644
--- a/qt-mobile/DiveList.qml
+++ b/qt-mobile/DiveList.qml
@@ -109,7 +109,16 @@ Rectangle {
opacity: dive.detailsOpacity
text: "Close"
- onClicked: dive.state = '';
+ onClicked: {
+ manager.commitChanges(
+ id,
+ txtSuit.text,
+ txtBuddy.text,
+ txtDiveMaster.text,
+ txtNotes.text
+ )
+ dive.state = '';
+ }
}
states: State {
diff --git a/qt-mobile/main.qml b/qt-mobile/main.qml
index dac37e09b..d64c27760 100644
--- a/qt-mobile/main.qml
+++ b/qt-mobile/main.qml
@@ -54,6 +54,14 @@ ApplicationWindow {
manager.loadDives();
}
}
+
+ Button {
+ id: saveChanges
+ text: "Save Changes"
+ onClicked: {
+ manager.saveChanges();
+ }
+ }
}
}
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp
index 118465a2d..a1c64191b 100644
--- a/qt-mobile/qmlmanager.cpp
+++ b/qt-mobile/qmlmanager.cpp
@@ -66,7 +66,53 @@ void QMLManager::loadDives()
struct dive *d;
for_each_dive(i, d)
- DiveListModel::instance()->addDive(d);
+ DiveListModel::instance()->addDive(d);
+}
+
+void QMLManager::commitChanges(QString diveId, QString suit, QString buddy, QString diveMaster, QString notes)
+{
+ struct dive *d = get_dive_by_uniq_id(diveId.toInt());
+ bool diveChanged = false;
+
+ if (d->suit != suit.toUtf8().data()) {
+ diveChanged = true;
+ free(d->suit);
+ d->suit = strdup(suit.toUtf8().data());
+ }
+ if (d->buddy != buddy.toUtf8().data()) {
+ diveChanged = true;
+ free(d->buddy);
+ d->buddy = strdup(buddy.toUtf8().data());
+ }
+ if (d->divemaster != diveMaster.toUtf8().data()) {
+ diveChanged = true;
+ free(d->divemaster);
+ d->divemaster = strdup(diveMaster.toUtf8().data());
+ }
+ if (d->notes != notes.toUtf8().data()) {
+ diveChanged = true;
+ free(d->notes);
+ d->notes = strdup(notes.toUtf8().data());
+ }
+}
+
+void QMLManager::saveChanges()
+{
+ showMessage("Saving dives.");
+ QString fileName;
+ if (getCloudURL(fileName)) {
+ showMessage(get_error_string());
+ return;
+ }
+
+ if (save_dives(fileName.toUtf8().data())) {
+ showMessage(get_error_string());
+ return;
+ }
+
+ showMessage("Dives saved.");
+ set_filename(fileName.toUtf8().data(), true);
+ mark_divelist_changed(false);
}
QString QMLManager::cloudPassword() const
diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h
index 558249e4e..2f5ac2894 100644
--- a/qt-mobile/qmlmanager.h
+++ b/qt-mobile/qmlmanager.h
@@ -22,6 +22,8 @@ public:
public slots:
void savePreferences();
void loadDives();
+ void commitChanges(QString diveId, QString suit, QString buddy, QString diveMaster, QString notes);
+ void saveChanges();
private:
QString m_cloudUserName;
QString m_cloudPassword;