diff options
-rw-r--r-- | qt-gui.cpp | 9 | ||||
-rw-r--r-- | qt-gui.h | 5 | ||||
-rw-r--r-- | qt-mobile/main.qml | 15 | ||||
-rw-r--r-- | qt-mobile/qmlmanager.cpp | 23 |
4 files changed, 49 insertions, 3 deletions
diff --git a/qt-gui.cpp b/qt-gui.cpp index 1bd0e65ac..175e9c27d 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -45,9 +45,14 @@ void run_ui() QQmlContext *ctxt = engine.rootContext(); ctxt->setContextProperty("diveModel", &diveListModel); engine.load(QUrl(QStringLiteral("qrc:///qml/main.qml"))); - QObject *mainWindow = engine.rootObjects().value(0); - QQuickWindow *qml_window = qobject_cast<QQuickWindow *>(mainWindow); + qqWindowObject = engine.rootObjects().value(0); + if (!qqWindowObject) { + fprintf(stderr, "can't create window object\n"); + exit(1); + } + QQuickWindow *qml_window = qobject_cast<QQuickWindow *>(qqWindowObject); qml_window->setIcon(QIcon(":/subsurface-mobile-icon")); + qqWindowObject->setProperty("messageText", QVariant("Subsurface mobile startup")); #if !defined(Q_OS_ANDROID) qml_window->setHeight(1200); qml_window->setWidth(800); @@ -9,4 +9,9 @@ void init_ui(); void run_ui(); void exit_ui(); +#if defined(SUBSURFACE_MOBILE) +#include <QQuickWindow> +extern QObject *qqWindowObject; +#endif + #endif // QT_GUI_H diff --git a/qt-mobile/main.qml b/qt-mobile/main.qml index ffe83d19b..dac37e09b 100644 --- a/qt-mobile/main.qml +++ b/qt-mobile/main.qml @@ -8,6 +8,7 @@ import org.subsurfacedivelog.mobile 1.0 ApplicationWindow { title: qsTr("Subsurface mobile") property bool fullscreen: true + property alias messageText: message.text visible: true StackView { @@ -68,6 +69,20 @@ ApplicationWindow { } } + Rectangle { + id: messageArea + height: childrenRect.height + Layout.fillWidth: true + + Text { + id: message + color: "#000000" + text: "" + styleColor: "#ff0000" + font.pointSize: 10 + } + } + } } } diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp index 5ccd4cde7..118465a2d 100644 --- a/qt-mobile/qmlmanager.cpp +++ b/qt-mobile/qmlmanager.cpp @@ -1,11 +1,19 @@ #include "qmlmanager.h" #include <QUrl> #include <QSettings> +#include <QDebug> #include "qt-models/divelistmodel.h" #include "divelist.h" #include "pref.h" #include "qthelper.h" +#include "qt-gui.h" + +static void showMessage(const char *errorString) +{ + if (!qqWindowObject->setProperty("messageText", QVariant(errorString))) + qDebug() << "couldn't set property messageText to" << errorString; +} QMLManager::QMLManager() { @@ -25,20 +33,33 @@ void QMLManager::savePreferences() s.setValue("email", cloudUserName()); s.setValue("password", cloudPassword()); s.sync(); + if (!same_string(prefs.cloud_storage_email, qPrintable(cloudUserName()))) { + free(prefs.cloud_storage_email); + prefs.cloud_storage_email = strdup(qPrintable(cloudUserName())); + } + if (!same_string(prefs.cloud_storage_password, qPrintable(cloudPassword()))) { + free(prefs.cloud_storage_password); + prefs.cloud_storage_password = strdup(qPrintable(cloudPassword())); + } } void QMLManager::loadDives() { QString url; if (getCloudURL(url)) { - //TODO: Show error in QML + showMessage(get_error_string()); return; } + showMessage("got email / password"); QByteArray fileNamePrt = QFile::encodeName(url); int error = parse_file(fileNamePrt.data()); if (!error) { + report_error("filename is now %s", fileNamePrt.data()); + showMessage(get_error_string()); set_filename(fileNamePrt.data(), true); + } else { + showMessage(get_error_string()); } process_dives(false, false); int i; |