QML UI: Load dives from cloud

Load dives from the Subsurface cloud service using the user's saved
credentials. This will display the dives in the same way as loading
them from a local file.

Signed-off-by: Grace Karanja <gracie.karanja89@gmail.com>
This commit is contained in:
Grace Karanja 2015-07-10 11:31:24 +03:00 committed by Dirk Hohndel
parent f01ec470e7
commit 866d67c5e7
3 changed files with 28 additions and 52 deletions

View file

@ -9,16 +9,6 @@ ApplicationWindow {
title: qsTr("Subsurface") title: qsTr("Subsurface")
width: 500; width: 500;
FileDialog {
id: fileOpen
selectExisting: true
selectMultiple: true
onAccepted: {
manager.setFilename(fileUrl)
}
}
QMLManager { QMLManager {
id: manager id: manager
} }
@ -48,10 +38,10 @@ ApplicationWindow {
} }
Button { Button {
id: openFile id: loadDivesButton
text: "Open File" text: "Load Dives"
onClicked: { onClicked: {
fileOpen.open(); manager.loadDives();
} }
} }
} }

View file

@ -5,6 +5,7 @@
#include "qt-models/divelistmodel.h" #include "qt-models/divelistmodel.h"
#include "divelist.h" #include "divelist.h"
#include "pref.h" #include "pref.h"
#include "qthelper.h"
QMLManager::QMLManager() QMLManager::QMLManager()
{ {
@ -13,22 +14,10 @@ QMLManager::QMLManager()
setCloudPassword(prefs.cloud_storage_password); setCloudPassword(prefs.cloud_storage_password);
} }
QMLManager::~QMLManager() QMLManager::~QMLManager()
{ {
} }
QString QMLManager::filename()
{
return m_fileName;
}
void QMLManager::setFilename(const QString &f)
{
m_fileName = f;
loadFile();
}
void QMLManager::savePreferences() void QMLManager::savePreferences()
{ {
QSettings s; QSettings s;
@ -38,6 +27,29 @@ void QMLManager::savePreferences()
s.sync(); s.sync();
} }
void QMLManager::loadDives()
{
QString url;
if (getCloudURL(url)) {
//TODO: Show error in QML
return;
}
QByteArray fileNamePrt = QFile::encodeName(url);
int error = parse_file(fileNamePrt.data());
if (!error) {
set_filename(fileNamePrt.data(), true);
}
process_dives(false, false);
int i;
struct dive *d;
for_each_dive(i, d)
DiveListModel::instance()->addDive(d);
}
QString QMLManager::cloudPassword() const QString QMLManager::cloudPassword() const
{ {
return m_cloudPassword; return m_cloudPassword;
@ -59,19 +71,3 @@ void QMLManager::setCloudUserName(const QString &cloudUserName)
m_cloudUserName = cloudUserName; m_cloudUserName = cloudUserName;
emit cloudUserNameChanged(); emit cloudUserNameChanged();
} }
void QMLManager::loadFile()
{
QUrl url(m_fileName);
QString strippedFileName = url.toLocalFile();
parse_file(strippedFileName.toUtf8().data());
process_dives(false, false);
int i;
struct dive *d;
for_each_dive(i, d) {
DiveListModel::instance()->addDive(d);
}
}

View file

@ -7,18 +7,12 @@
class QMLManager : public QObject class QMLManager : public QObject
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
Q_PROPERTY(QString cloudUserName READ cloudUserName WRITE setCloudUserName NOTIFY cloudUserNameChanged) Q_PROPERTY(QString cloudUserName READ cloudUserName WRITE setCloudUserName NOTIFY cloudUserNameChanged)
Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged) Q_PROPERTY(QString cloudPassword READ cloudPassword WRITE setCloudPassword NOTIFY cloudPasswordChanged)
public: public:
QMLManager(); QMLManager();
~QMLManager(); ~QMLManager();
QString filename();
void getFile();
QString cloudUserName() const; QString cloudUserName() const;
void setCloudUserName(const QString &cloudUserName); void setCloudUserName(const QString &cloudUserName);
@ -26,17 +20,13 @@ public:
void setCloudPassword(const QString &cloudPassword); void setCloudPassword(const QString &cloudPassword);
public slots: public slots:
void setFilename(const QString &f);
void savePreferences(); void savePreferences();
void loadDives();
private: private:
QString m_fileName;
QString m_cloudUserName; QString m_cloudUserName;
QString m_cloudPassword; QString m_cloudPassword;
void loadFile();
signals: signals:
void filenameChanged();
void cloudUserNameChanged(); void cloudUserNameChanged();
void cloudPasswordChanged(); void cloudPasswordChanged();
}; };