mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
QML UI: implement a message area to show information to the user
This is just a quick first stab to do this, but it at least allows us to share some information with the user. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
16759715e6
commit
15de7f0b71
4 changed files with 49 additions and 3 deletions
|
@ -45,9 +45,14 @@ void run_ui()
|
||||||
QQmlContext *ctxt = engine.rootContext();
|
QQmlContext *ctxt = engine.rootContext();
|
||||||
ctxt->setContextProperty("diveModel", &diveListModel);
|
ctxt->setContextProperty("diveModel", &diveListModel);
|
||||||
engine.load(QUrl(QStringLiteral("qrc:///qml/main.qml")));
|
engine.load(QUrl(QStringLiteral("qrc:///qml/main.qml")));
|
||||||
QObject *mainWindow = engine.rootObjects().value(0);
|
qqWindowObject = engine.rootObjects().value(0);
|
||||||
QQuickWindow *qml_window = qobject_cast<QQuickWindow *>(mainWindow);
|
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"));
|
qml_window->setIcon(QIcon(":/subsurface-mobile-icon"));
|
||||||
|
qqWindowObject->setProperty("messageText", QVariant("Subsurface mobile startup"));
|
||||||
#if !defined(Q_OS_ANDROID)
|
#if !defined(Q_OS_ANDROID)
|
||||||
qml_window->setHeight(1200);
|
qml_window->setHeight(1200);
|
||||||
qml_window->setWidth(800);
|
qml_window->setWidth(800);
|
||||||
|
|
5
qt-gui.h
5
qt-gui.h
|
@ -9,4 +9,9 @@ void init_ui();
|
||||||
void run_ui();
|
void run_ui();
|
||||||
void exit_ui();
|
void exit_ui();
|
||||||
|
|
||||||
|
#if defined(SUBSURFACE_MOBILE)
|
||||||
|
#include <QQuickWindow>
|
||||||
|
extern QObject *qqWindowObject;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // QT_GUI_H
|
#endif // QT_GUI_H
|
||||||
|
|
|
@ -8,6 +8,7 @@ import org.subsurfacedivelog.mobile 1.0
|
||||||
ApplicationWindow {
|
ApplicationWindow {
|
||||||
title: qsTr("Subsurface mobile")
|
title: qsTr("Subsurface mobile")
|
||||||
property bool fullscreen: true
|
property bool fullscreen: true
|
||||||
|
property alias messageText: message.text
|
||||||
visible: true
|
visible: true
|
||||||
|
|
||||||
StackView {
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
#include "qmlmanager.h"
|
#include "qmlmanager.h"
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
#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"
|
#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()
|
QMLManager::QMLManager()
|
||||||
{
|
{
|
||||||
|
@ -25,20 +33,33 @@ void QMLManager::savePreferences()
|
||||||
s.setValue("email", cloudUserName());
|
s.setValue("email", cloudUserName());
|
||||||
s.setValue("password", cloudPassword());
|
s.setValue("password", cloudPassword());
|
||||||
s.sync();
|
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()
|
void QMLManager::loadDives()
|
||||||
{
|
{
|
||||||
QString url;
|
QString url;
|
||||||
if (getCloudURL(url)) {
|
if (getCloudURL(url)) {
|
||||||
//TODO: Show error in QML
|
showMessage(get_error_string());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
showMessage("got email / password");
|
||||||
|
|
||||||
QByteArray fileNamePrt = QFile::encodeName(url);
|
QByteArray fileNamePrt = QFile::encodeName(url);
|
||||||
int error = parse_file(fileNamePrt.data());
|
int error = parse_file(fileNamePrt.data());
|
||||||
if (!error) {
|
if (!error) {
|
||||||
|
report_error("filename is now %s", fileNamePrt.data());
|
||||||
|
showMessage(get_error_string());
|
||||||
set_filename(fileNamePrt.data(), true);
|
set_filename(fileNamePrt.data(), true);
|
||||||
|
} else {
|
||||||
|
showMessage(get_error_string());
|
||||||
}
|
}
|
||||||
process_dives(false, false);
|
process_dives(false, false);
|
||||||
int i;
|
int i;
|
||||||
|
|
Loading…
Add table
Reference in a new issue