summaryrefslogtreecommitdiffstats
path: root/subsurface-mobile-helper.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-06 13:44:13 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-06 13:44:13 -0800
commitb76d3fa25f616bd01c290a7340274fd14d6ad4d7 (patch)
tree136bcc8013084927c32f922a5b06862151461f4e /subsurface-mobile-helper.cpp
parentab66f6fc981b8b962165ca9ca1f9fd0aa73b1ff2 (diff)
downloadsubsurface-b76d3fa25f616bd01c290a7340274fd14d6ad4d7.tar.gz
Better file names for Subsurface-mobile related sources
They aren't Android specific - they are for the QML UI mobile app which should run on iOS as well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-mobile-helper.cpp')
-rw-r--r--subsurface-mobile-helper.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/subsurface-mobile-helper.cpp b/subsurface-mobile-helper.cpp
new file mode 100644
index 000000000..e982760f8
--- /dev/null
+++ b/subsurface-mobile-helper.cpp
@@ -0,0 +1,77 @@
+/* qt-gui.cpp */
+/* Qt UI implementation */
+#include "dive.h"
+#include "display.h"
+#include "helpers.h"
+
+#include <QApplication>
+#include <QDesktopWidget>
+#include <QNetworkProxy>
+#include <QLibraryInfo>
+
+#include "qt-gui.h"
+
+#include <QQuickWindow>
+#include <QQmlApplicationEngine>
+#include <QQmlContext>
+#include <QSortFilterProxyModel>
+#include "qt-mobile/qmlmanager.h"
+#include "qt-models/divelistmodel.h"
+#include "qt-mobile/qmlprofile.h"
+
+QObject *qqWindowObject = NULL;
+
+void init_ui()
+{
+ init_qt_late();
+}
+
+void run_ui()
+{
+ qmlRegisterType<QMLManager>("org.subsurfacedivelog.mobile", 1, 0, "QMLManager");
+ qmlRegisterType<QMLProfile>("org.subsurfacedivelog.mobile", 1, 0, "QMLProfile");
+ QQmlApplicationEngine engine;
+ DiveListModel diveListModel;
+ QSortFilterProxyModel *sortModel = new QSortFilterProxyModel(0);
+ sortModel->setSourceModel(&diveListModel);
+ sortModel->setDynamicSortFilter(true);
+ sortModel->setSortRole(DiveListModel::DiveDateRole);
+ sortModel->sort(0, Qt::DescendingOrder);
+ QQmlContext *ctxt = engine.rootContext();
+ ctxt->setContextProperty("diveModel", sortModel);
+ engine.load(QUrl(QStringLiteral("qrc:///qml/main.qml")));
+ 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);
+#endif
+ qml_window->show();
+ qApp->exec();
+}
+
+void exit_ui()
+{
+ delete qApp;
+ free((void *)existing_filename);
+ free((void *)default_dive_computer_vendor);
+ free((void *)default_dive_computer_product);
+ free((void *)default_dive_computer_device);
+}
+
+double get_screen_dpi()
+{
+ QDesktopWidget *mydesk = qApp->desktop();
+ return mydesk->physicalDpiX();
+}
+
+bool haveFilesOnCommandLine()
+{
+ return false;
+}