summaryrefslogtreecommitdiffstats
path: root/mobile-widgets
AgeCommit message (Collapse)Author
2020-12-20mobile UI: style check boxes and radio boxesGravatar Dirk Hohndel
This is needed for the Export page. And may I say for the record that it's rather surprising that in order to change the color of one of those elements one ends up having to completely re-implement them. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: fix dive summary for dark themeGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: use theme colors for startup text and location warningGravatar Dirk Hohndel
This now looks right for the dark theme. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: correctly color the action button icons for dive listGravatar Dirk Hohndel
This uses one of our fixes to Kirigami to allows us to set the correct overlay color for our icons. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: correctly color the action button icons for dive viewGravatar Dirk Hohndel
This uses one of our changes to Kirigami that allows us to set the correct overlay color for our icons. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: fix ActionButton icon coloringGravatar Dirk Hohndel
This seems like a reasonably serious bug in Kirigami. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: better dive list color for dark themeGravatar Dirk Hohndel
While the text name is 'light primary color' it really has to be a dark blueish color to fit with the theme. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: correctly theme the global and context drawersGravatar Dirk Hohndel
This requires more changes to Kirigami, but with this we get dark drawers (the menus that slide in from the side) in the dark theme. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: improve theming of title barGravatar Dirk Hohndel
We do theming very differently from what Kirigami intended. Mostly that's because our code predates theirs. But also because Kirigami wants and app to simply use an OS theme - whereas we want to be able to provide different looks, independent from the OS theme. Ideally we'd still use the existing methods to change the colors and sizes of Kirigami UI elements, but for now this hack helps improve readability of the title bar. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: ensure we show a line between divesGravatar Dirk Hohndel
In the dive list the rendering of the line ended up being subject to rounding errors. With this change we ensure that the thin line is always shown. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: shrink dive log date buttonGravatar Dirk Hohndel
This was too big relative to the page layout. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: remove the thick line between tripsGravatar Dirk Hohndel
This took up a lot of space and made the UI look stodgy. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: fine tune the action button renderingGravatar Dirk Hohndel
On some platforms the side buttons looked disjoint from the center button. This fixes that problem. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17core: remove DiveObjectHelperGravatar Berthold Stoeger
Since switching to the mobile-models and removing grantlee, DiveObjectHelper was demoted to a thin wrapper around string formatting functions. The last user was removed in a previous commit. It was never a good idea, given QML's strange memory-management. Let's remove it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-17mobile: remove DiveObjectHelper codeGravatar Berthold Stoeger
When editing a dive, a DiveObjectHelper of the unmodified dive was created to compare the edited with the old values. Since the DiveObjectHelper is used here only as a pointless wrapper around the formatting functions, call these functions directly. However, note that the code is in principle wrong since the change to the mobile-models, which do not use the DiveObjectHelper. The real fix would be to reload the data from the model to prevent going out-of-sync with respect to the formatting routines! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-17mobile: adapt resource namesGravatar Dirk Hohndel
With the new Kirigami the URI for the backwards and forwards arrows apparently changed. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17kirigami: maintain our patches relative to upstreamGravatar Dirk Hohndel
Having them as commits like this should make it easier to migrate them as we update the underlying Kirigami version. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: fix implementation of menu back featureGravatar Dirk Hohndel
With the updates to Kirigami I slightly modified the hack that we use to implement that, as a result we call pop() directly on the globalDrawer. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: re-add breeze iconsGravatar Dirk Hohndel
This time from the cloned repo. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: avoid warning in QML codeGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: don't use reserved wordGravatar Dirk Hohndel
This used to work, but with current QML/Kirigami it throws an error. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile: silly whitespace cleanupGravatar Dirk Hohndel
Simply because it bugged me. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-17mobile/kirigami: first steps to switching to Kirigami 5.76Gravatar Dirk Hohndel
Our half-assed manual build of Kirigami was becoming completely unmaintainable. So let's try to use the build method that the Kirigami team recommends. Which unfortunately requires us to have access to the KDE extra cmake modules (ECM). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-13core: keep tank infos in a dynamic tableGravatar Berthold Stoeger
The list of known tank types were kept in a fixed size table. Instead, use a dynamic table with our horrendous table macros. This is more flexible and sensible. While doing this, clean up the TankInfoModel, which was leaking memory. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-11-14desktop: automatically reload completion-modelsGravatar Berthold Stoeger
Instead of programatically reload the completion models, listen to the relevant signals in the models. To that goal, derive all the models from a base class. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-11-05mobile: add missing word to location warningGravatar Dirk Hohndel
Thanks to Johan, one of our Swedish translators for noticing this oversight. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: remove struct/class confusionGravatar Dirk Hohndel
DiveSiteChange is defined as a struct, not as a class. 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-10-25cleanup: move mark_divelist_changed() to qmlmanager.cppGravatar Berthold Stoeger
Desktop does not use mark_divelist_changed() anymore - all is done via the undo machinery. Therefore move this function (and its counterpart unsaved_changes()) to qmlmanager.cpp. Ultimately, it probably should be removed from there as well, but currently I don't dare to touch all the cloud-logic! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-24git: add device-table to git-parser-stateGravatar Berthold Stoeger
In analogy to the xml-parser add a device-table to git's parser-state. Currently this is unused. In upcoming commits the git parser will then be changed to add device nodes in this table instead of the global device table. The long-term goal being to detach the parsers from global state and to make dive-import fully undoable. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-24devices: add devices in Command::importTable()Gravatar Berthold Stoeger
Add a device_table parameters to Command::importTable() and add_imported_dives(). The content of this table will be added to the global device list (respectively removed on undo). This is currently a no-op, as the parser doesn't yet fill out the device table, but adds devices directly to the global device table. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-24devices: add functions to add / remove / check for devicesGravatar Berthold Stoeger
To include the device code in the undo system, we need functions to check for the existence of devices and to add or remove them. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-24parser: add device_table to parser stateGravatar Berthold Stoeger
If we want to avoid the parsers to directly modify global data, we have to provide a device_table to parse into. This adds such a state and the corresponding function parameters. However, for now this is unused. Adding new parameters is very painful and this commit shows that we urgently need a "struct divelog" collecting all those tables! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-24mobile: show location service warningGravatar Dirk Hohndel
Google play now requires that we show an explicit notification when turning on background location. This is an attempt to fulfill that requirement - we won't know if this is 'good enough' until we submit the app, though. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-24mobile: show text with location service iconGravatar Dirk Hohndel
I don't recall why we removed that text, but this makes it much clearer that the service is active. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-17filter: remove filter_preset_table_tGravatar Berthold Stoeger
We used a typedef "filter_preset_table_t" for the filter preset table, because it is a "std::vector<filter_preset>". However, that is in contrast to all the other global tables (dives, trips, sites) that we have. Therefore, turn this into a standard struct, which simply inherits from "std::vector<filter_preset>". Note that while inheriting from std::vector<> is generally not recommended, it is not a problem here, because we don't modify it in any shape or form. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-06Update translations from TransifexGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-09-29filter: implement loading of filter presets from git repositoriesGravatar Berthold Stoeger
This is mostly copy and paste of other git loading code. Sadly, it adds a lot of state to the parser-state. I wish we could pass different parser states to the parser_* functions. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-09-29filter: load filter presets from XML filesGravatar Berthold Stoeger
This is a bit painful: since we don't want to modify the filter presets when the user imports (as opposed to opens) a log, we have to provide a table where the parser stores the presets. Calling the parser is getting quite unwieldy, since many tables are passed. We probably should introduce a structure representing a full log-book at one point, which collects all the things that are saved to the log. Apart from that, this is simply the counterpart to saving to XML. The interpretation of the string data is performed by core functions, not the parser itself to avoid code duplication with the git parser. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-09-29filter: unify desktop and mobile filtersGravatar Berthold Stoeger
Switch the mobile code to use the constraint-based filter. The one thing that is still commented out is dive-site mode, since mobile doesn't (yet) have a dive-site edit feature. And even if it had, the dive list probably wouldn't be shown at the same time. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-09-27mobile/dive-list: correctly update view when changing dive dateGravatar Dirk Hohndel
If the dive timestamp changes, the dive could move in the dive list. But the current dive actually doesn't change (it's still the same dive, right?). Yet we need to update the dive list as well as the shown dive (especially if this is after adding a dive, which is first inserted with the current time and then updated with whatever the user enters). Fixes: #2971 Suggested-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-08-16mobile/cleanup: use local variable to simplify codeGravatar Dirk Hohndel
The old code wasn't wrong, and likely the compiler turned this into something that wasn't really terrible... but yeah, 5 unnecessary calls to a helper function just bugged me. And I think the new code is much easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-08-16mobile/dive-edit: fix incorrect handling of multi tank gas mixesGravatar Dirk Hohndel
A silly copy and paste error caused us to overwrite the gas mixes for all the tanks with the gas mix in the first tank. Fixes #2913 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-07-14mobile/download: don't allow download without connection setGravatar Dirk Hohndel
It appears that multi line attributes silently fail. Without this change, the Download button is enabled if vendor and product are chosen, even if there isn't a connection selected. With this change (having all three conditions on the same line) the code works as expected. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-14mobile: show sync state in menu plateGravatar Dirk Hohndel
This seems like the easiest way to show the state without disrupting the UI elsewhere. Directly below the email address used for cloud storage. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-14mobile: add status text for cloud sync stateGravatar Dirk Hohndel
This allows the mobile UI to reflect the three states that the dive list can be in: - changes that haven't been written to local storage - there potentially are changes in local storage that were not synced with the cloud - dive list is in sync with cloud storage The last state could be misleading if the user access the cloud from a different device and makes changes to the cloud storage from there, but from the point of view of this device, the states are consistent. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-14mobile: track if we have changes that aren't synced to cloudGravatar Dirk Hohndel
If we haven't connected at all to the cloud server we assume that there are local changes. And whenever we save changes only locally, we also set that flag. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-08mobile/dive-details: restrict width of tags fieldGravatar Dirk Hohndel
Having a lot of tags (or more precisely, a tags string that is very long) could cause the width of the dive details view to extend past the width of the the page. The txtTags label was missing a maximum width, and to make the result more useful, I also added correct wrapping and elide to the mix (stupidly, we had the wrap and width for the fixed name of the field ('Tags'), but not for the user determined content of that field). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-07mobile: add option to merge local cloud cache dataGravatar Dirk Hohndel
The UI is ugly, and of course this is hidden in the developer options that have to first be enabled in the advanced settings. As I mentioned in the previous commit, I believe the actual risk that something gets damaged here is very low, but still, explaining this so it makes sense to the casual user may be a bit... difficult. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-06-07mobile: add helper to import data from local cloud cacheGravatar Dirk Hohndel
If you pass in the repo name, it isn't treated as cloud storage, but simply as local git storage and imported (i.e., added) to the current dive list. This allows the user to work around failed no-cloud->cloud transitions, merge different accounts, and most importantly deal with situations were conflicts on the server caused us to move a cache out of the way and potentially make dives that were on the mobile device inaccessible to the user. Once a UI is added, this allows the user to recover those dives (realistically this is not really all that potentially 'dangerous' to do, but it's definitely something that would best be done after talking to someone who understands the cloud storage and can guide the user...). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>