aboutsummaryrefslogtreecommitdiffstats
path: root/subsurface-helper.cpp
AgeCommit message (Collapse)Author
2021-01-19mobile/UI: remember the system default font sizeGravatar Dirk Hohndel
We need to do this before the preferences are loaded, or the system default size is lost. Given that our other sizes are all relative to this value, that would be a problem. With this we can now ensure that we always have the right font size for smaller, regular, and larger theme settings. Also removes some obsolete commented out code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19cleanup: create separate UI entry points for desktop and mobileGravatar Dirk Hohndel
This doesn't really change anything, but makes the code easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/Android: ensure the onePlus font has point sizeGravatar Dirk Hohndel
Otherwise this throws off the calculation of the gridUnit on onePlus devices. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/statistics: export ChartListModel to QMLGravatar Berthold Stoeger
For QML, the roles have to be associated dynamically with name. Moreover, the model has to be registered as a QML type to make it accessible from QML. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: add a skeleton StatsManager classGravatar Berthold Stoeger
In analogy to "QMLManager", add a "StatsManager" class, which manages the statistics module on mobile. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: convert chart to QQuickItemGravatar Berthold Stoeger
It turns out that the wrong base class was used for the chart. QQuickWidget can only be used on desktop, not in a mobile UI. Therefore, turn this into a QQuickItem and move the container QQuickWidget into desktop-only code. Currently, this code is insane: The chart is rendered onto a QGraphicsScene (as it was before), which is then rendered into a QImage, which is transformed into a QSGTexture, which is then projected onto the device. This is performed on every mouse move event, since these events in general change the position of the info-box. The plan is to slowly convert elements such as the info-box into QQuickItems. Browsing the QtQuick documentation, this will not be much fun. Also note that the rendering currently tears, flickers and has antialiasing artifacts, most likely owing to integer (QImage) to floating point (QGraphicsScene, QQuickItem) conversion problems. The data flow is QGraphicsScene (float) -> QImage (int) -> QQuickItem (float). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-17mobile: more build hackeryGravatar Dirk Hohndel
So while the documentation explicitly says that you need to have the getInstance()registerTypes() call, that clearly is not supported if you build kirigami as a library. Even the required include file doesn't exist in the install-root. So let's try some other way to make this work. Heck if I know what the correct way of doing this might be. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: add yet another import path to find Kirigami QML moduleGravatar Dirk Hohndel
This needs some careful testing across the different OSs we are trying to support. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile/Android: register the Kirigami pluginGravatar Dirk Hohndel
According to the Kirigami documentation, this is only required on Android. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: use 3rdparty build of KirigamiGravatar Dirk Hohndel
This should allow us to use the kirigami version that was built as 3rdparty component. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-20android: avoid crash with failed font loadGravatar Dirk Hohndel
Check that we found font families before accessing them. But the larger issue is likely that bundling the font failed. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-25cleanup: move application flags to core/subsurfacehelper.hGravatar Berthold Stoeger
These flags are not dive-related, therefore move their declaration to the appropriate header file. Likewise, move their definition from parse-xml.c to subsurfacehelper.c Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-31cleanup: don't compile subsurface-helper.cpp for testsGravatar Berthold Stoeger
It is unclear why the subsurface-helper.cpp file was linked with the tests. In any case, it led to comlicated ifdef-ery, so let's remove that for now and readd later if the need arises. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: replace REGISTER_TYPE macro by templateGravatar Berthold Stoeger
Arguably easier to read. By using the qWarning("...") instead of the qWarning() << "..." version, we can remove the <QDebug> include. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: move initialization of QMLInterfaceGravatar Berthold Stoeger
QMLInterface was initialized in the register_qml_types function. Therein, it was in an if branch that tested whether the passed-in engine argument was not NULL. However, on mobile this could never be NULL. Let's just move the initialization out of that function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: move initialization of ThemeInterfaceGravatar Berthold Stoeger
The ThemeInterface was initialized and connected to QML in the register_qml_types() function. However, it is not a type. Move the initialization to a place where we create the other global QML objects. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: fold ThemeInterface::setup() into constructorGravatar Berthold Stoeger
There appears to be no reason for two-phase initialization. Let's keep things simple: let the constructor produce a functioning object. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30coding style: rename themeInterface to ThemeInterfaceGravatar Berthold Stoeger
As per coding style, class names are PascalCase. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: make members of ThemeInterface non-staticGravatar Berthold Stoeger
We have a singleton class ThemeInterface, which means that it is global and exists only once. It's members are static, i.e. also global. A message from the department of redundancy department? In any case, that makes no sense. Let's just make these members local to the class. I would even rip out the whole singleton thing, since the object is not accessed anywhere outside from QML. Let's keep it for now. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-10mobile: remove no longer used DiveListModelGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-10mobile/divelist: implement model that shows all dives in trip-orderGravatar Berthold Stoeger
MobileSwipeModel is probably not an ideal name, but all I could come up with. One of the main complications here is that our list is reversed with respect to the source model. We should change that one day. Probably by moving the sorting down to the core-model. Since looking up the source row is somewhat expensive, the lookup is cached for a single entry because accesses come in bursts for a single dive. This should be a good compromise and avoids keeping track of a full row-to-dive array. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-10mobile/divelist: create memory management class for modelsGravatar Berthold Stoeger
Since we want to add a second model, but not have to manage two models everywhere, create a class MobileModels that contains both of the models. When calling reset() on that class, it will reset both of the models, etc. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-10mobile/divelist: switch to the correct modelGravatar Berthold Stoeger
This obviously breaks everything, but now we can start fixing things. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-09mobile/divelist: set up the new model for the dive listGravatar Dirk Hohndel
And remove the reference to the collapsed model. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-02-11mobile UI: add second environment variable for heightGravatar Dirk Hohndel
This is intended for testing on the desktop; this way a developer can reproduce the screen size (in grid units) that a user might experience. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-02-08mobile/summary: create DiveSummaryModelGravatar Berthold Stoeger
Instead of passing the dive summary via a completely unstructured QStringList to QML, implement a dynamic model. For potential reuse on desktop (though somewhat unlikely) the model has two interfaces, one for QtWidgets and one for QML. The former is based on columns, whereas the later is based on roles. The number of columns is set dynamically. The roles currently support access to two columns. If more columns should be accessed from QML, more roles have to be added manually. This commit only creates the model and hooks it into QMLs global context, but does not yet change the QML page. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-01-28themeinterface: move registration to themeinterfaceGravatar jan Iversen
Move setup call and registration from subsurface-helper to themeInterface, in order to keep the registration where the code are. Signed-off-by: jan Iversen <jan@casacondor.com>
2020-01-26mobile: register themeInterfaceGravatar jan Iversen
Register themeInterface with a temporary name, which allows it to be integrated in subsurfaceTheme (main.qml). Once all of subsurfaceTheme (main.qml) is available in themeInterface, the name will be changed. Signed-off-by: jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-01-25dive-planner: removed unused QML interfaceGravatar jan Iversen
Remove Q_PROPERTY and signals from plannershared, since they are no longer used (transferred to qmlinterface). Unregister object plannershared, since it is no longer used in QML. Signed-off-by: jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-01-18mobile: register QML interfaceGravatar jan Iversen
call setup with registration of QML interface class Signed-off-by: jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-12-29QML: remove registration of qmlprefsGravatar jan Iversen
It is no longer used. Signed-off-by: Jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-12-24build-system: move plannerShared to backend-sharedGravatar jan Iversen
WARNING: multi directory commit, needed to secure it builds. move the core/plannerShared.* to backend-shared. update CMakeLists.txt to include backend-shared lib in link process. update ios project to reflect new directory Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-12-24startup mobile: make diveplanner part of Qt type systemGravatar jan Iversen
Register DivePlanner before starting QML. Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-12-13core: remove LOG_STP from mobileGravatar jan Iversen
LOG_STP is on longer providing the data needed, since a lot of the startup is indirectly in QML, furthermore using the xcode project and running profiler gives much more detailed information Signed-off-by: Jan Iversen <jani@apache.org>
2019-12-03startup mobile: make ExportType enum available to QMLGravatar jan Iversen
Register ExportType before starting QML. Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-11-26startup mobile: test for --testqml when loading qml engine.Gravatar jan Iversen
the command line option --testqml selects if running using resources or files on disk. Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-11-08Mobile: setup CollapsedDiveListSortModelGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-13Mobile: stop dumping the list of supported dive computersGravatar Dirk Hohndel
This doesn't seem to add much value anymore and massively clutters the output. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-04Cleanup: Implicitly free QApplicationGravatar Berthold Stoeger
Instead of deleting the Application explicitly in exit_ui(), use a unique_ptr to have the instance automatically freed. This is the pattern given in the Qt-docs: https://doc.qt.io/qt-5/qapplication.html Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-10-04Cleanup: Turn DiveListSortModel into classical singletonGravatar Berthold Stoeger
To make this class available from QMLManager, the run_ui() function would create the object and then set a pointer in QMLManager. It works, but is inconsistent with the rest of the code. Therefore, make it a classical singleton class, which is generated on demand. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-10-04Cleanup: turn GpsListModel into standard singletonGravatar Berthold Stoeger
GpsListModel was one of those "special" singletons that could be created explicitly with new. This would make sense if a parameter were passed to the constructor. We only passed null, so one might as well turn that into a classical singleton with default constructor. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-10-04Cleanup: turn DiveListModel into standard singletonGravatar Berthold Stoeger
DiveListModel was one of those "special" singletons that could be created explicitly with new. This would make sense if a parameter were passed to the constructor. We only passed null, so one might as well turn that into a classical singleton with default constructor. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-10-04Cleanup: initialize DiveListSortModel in constructorGravatar Berthold Stoeger
The model was initialized in the global run_ui() function. Move that into the constructor of the class. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-10-02Mobile: add more debugging output for screen width issueGravatar Dirk Hohndel
Somehow we need to be able to figure out which width information is correct. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-02Android: move OnePlus font hack earlierGravatar Dirk Hohndel
We want the new default font in place before the QML engine is initialized. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-02Cleanup: Remove DownloadThread QML-typeGravatar Berthold Stoeger
The download thread is not accessed directly by QML anymore. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-21Android: force different font on OnePlus devicesGravatar Dirk Hohndel
Those show a very strange font by default. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-09-21Mobile: allow setting a width via environment variableGravatar Dirk Hohndel
This should make it much easier to debug and hopefully fix some of the odd scenarios where we get font sizes (or even the screen layout) wrong. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-09-06Map: don't derive MapLocation from QObjectGravatar Berthold Stoeger
Map location is 1) A plain value type 2) Never passed to QML Make it a simple C++ class. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-07-06Cleanup: remove unused get_screen_dpi() functionGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>