aboutsummaryrefslogtreecommitdiff
path: root/src/main_qmladaptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main_qmladaptor.cpp')
-rw-r--r--src/main_qmladaptor.cpp50
1 files changed, 45 insertions, 5 deletions
diff --git a/src/main_qmladaptor.cpp b/src/main_qmladaptor.cpp
index 5fcce5f..c1d3f14 100644
--- a/src/main_qmladaptor.cpp
+++ b/src/main_qmladaptor.cpp
@@ -49,12 +49,19 @@ void MainQMLAdaptor::onRwaHostSelected(QString host_uuid) {
Q_ASSERT(_host != nullptr);
qDebug() << "RWAHost was selected!" << _host->uuid() << "aka" << _host->alias();
-}
-void MainQMLAdaptor::setRWAHostModel(QList<QObject*> rwa_hosts) {
+ // Find item via 'objectName'
+ QObject *sidebar_drawer = _engine->rootObjects().takeFirst()->findChild<QObject*>("sidebar_drawer");
+ if (sidebar_drawer) {
+ sidebar_drawer->setProperty("rwaHostIsSelected", true);
+ } else {
+ qWarning() << "Unable to find 'sidebar_drawer' Item!";
+ }
+}
- _rwaHostModel = &rwa_hosts;
- emit rwaHostModelChanged(rwa_hosts);
+void MainQMLAdaptor::setRWAHostModel(QList<QObject*> *rwa_hosts) {
+ _rwaHostModel = rwa_hosts;
+ emit rwaHostModelChanged(*rwa_hosts);
}
void MainQMLAdaptor::addRWAHost(RWAHost *rwa_host) {
@@ -69,6 +76,10 @@ QList<QObject*> MainQMLAdaptor::getRWAHostModel() {
void MainQMLAdaptor::get_web_app_hosts_response(QJsonDocument *doc) {
Q_ASSERT(doc != nullptr);
+ delete _rwaHostModel;
+ setRWAHostModel(new QList<QObject*>);
+ bool atLeastOneHostAvailable = false;
+
// Get the QJsonObject
QJsonObject jObject = doc->object();
QVariantMap mainMap = jObject.toVariantMap();
@@ -90,7 +101,6 @@ void MainQMLAdaptor::get_web_app_hosts_response(QJsonDocument *doc) {
"service lacks a necessary value. (host_url or host_uuid)");
qCritical().noquote() << tr("An error occured while adding a new host:")
<< reason;
- //emit step1Failed(reason);
return;
}
@@ -104,6 +114,7 @@ void MainQMLAdaptor::get_web_app_hosts_response(QJsonDocument *doc) {
// Now built RWAHost object.
RWAHost *rwa_host = new RWAHost(host_uuid, host_alias, host_url);
addRWAHost(rwa_host);
+ atLeastOneHostAvailable = true;
qInfo().noquote() << QString(tr("Successfully added new RWAHost '%0'")).arg(rwa_host->alias());
}
@@ -124,6 +135,35 @@ void MainQMLAdaptor::get_web_app_hosts_response(QJsonDocument *doc) {
return;
}
+
+ if (!atLeastOneHostAvailable) {
+ main_content_replace("scenes/Scene_no_server_available.qml");
+ //addRWAHost(new RWAHost("-","Kein Server verfügbar!","-"));
+ }
+}
+
+void MainQMLAdaptor::main_content_push(QString scene) {
+ // Find item via 'objectName'
+ QObject *main_content = _engine->rootObjects().takeFirst()->findChild<QObject*>("main_content");
+ Q_ASSERT(main_content != nullptr);
+ QMetaObject::invokeMethod(main_content, "push", Q_ARG(QString, scene));
+}
+
+void MainQMLAdaptor::main_content_pop(QString scene) {
+ // Find item via 'objectName'
+ QObject *main_content = _engine->rootObjects().takeFirst()->findChild<QObject*>("main_content");
+ Q_ASSERT(main_content != nullptr);
+ QMetaObject::invokeMethod(main_content, "pop", Q_ARG(QString, scene));
+}
+
+void MainQMLAdaptor::main_content_replace(QString scene) {
+ // Find item via 'objectName'
+ QObject *window = _engine->rootObjects().takeFirst();
+ Q_ASSERT(window != nullptr);
+
+ QVariant arg = QVariant::fromValue(scene);
+ if(!QMetaObject::invokeMethod(window, "main_content_replace", Q_ARG(QVariant, arg)))
+ qDebug() << "Failed to invoke push";
}
bool MainQMLAdaptor::setConnectButtonEnabled(bool enabled) {