aboutsummaryrefslogtreecommitdiffstats
path: root/mobile-widgets
AgeCommit message (Collapse)Author
2020-04-04mobile: add indication if the app has finished initializingGravatar Dirk Hohndel
This will help us to ensure that notifications are actually shown on the UI during the startup phase. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-04-04cleanup: update all copyright dates to 2020Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-04-04undo/mobile: keep track of dive sitesGravatar Berthold Stoeger
When editing the dive site of a dive, the dive-table of the corresponding dive site was not properly updated by the undo commands. Try to get this right. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-31mobile/dive-list: try to force focus on filter text fieldGravatar Dirk Hohndel
This was triggered by a change in enabled, but what is really changing is the visible property. This should work better. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-summary: make the drop downs smallerGravatar Dirk Hohndel
Especially on smaller screens we had issues fitting this on the screen. And it looks fine on larger screens as well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-details: add option to toggle the invalid flagGravatar Dirk Hohndel
Simply for consistency with the dive list. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-details: fix incorrect call to create tripGravatar Dirk Hohndel
This was using the myData alias that exists in the dive list but not on the dive details. This might work (because the models both use the same underlying base model), but given that we are using the currentItem of this ListView, I'm guessing that this would just silently fail (maybe with a warning in the log). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-details: if menu is open, close that with back buttonGravatar Dirk Hohndel
A second tap on the back button will then end add/edit or close the dive details and get us back to the dive list. This fixes an issue where tapping on back with the context menu open would bring you back to the dive list with the context menu still open, and because then change the text in the context menu as those are designed differently. Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31cleanup: make QMLManager member functions privateGravatar Berthold Stoeger
The - mergeLocalRepo() - openLocalThenRemote() functions were not invoked from outside QMLManager. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-31mobile: don't call saveChangesLocal() twice on non-iOSGravatar Berthold Stoeger
QMLManager::changesNeedSaving() behaves differently on iOS: it only saves locally with saveChangesLocal(), whereas all other OS save to cloud with saveChangesCloud(). Nevertheless, even for other OS saveChangesLocal() is called even though that will be called in saveChancesCloud anyway. Therefore, compile the saveChangesLocal() call in changesNeedSaving conditionally. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-31mobile/dive-details: don't show virtual keyboard in dive view modeGravatar Dirk Hohndel
At least in 4.9.3.1258/3.0.1 I was able to reproduce a situation where I edit one dive, go back to the dive list, then tap on a different dive and then the keyboard pops up, obscuring a big chunk of the screen. This tries to make sure the keyboard isn't shown in dive view mode. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile: improve Android back key behaviorGravatar Dirk Hohndel
There are two places where we try to prevemt unintended app exits. Once, in the onBackRequested signal handler on the dive list. This was missing special handling for the situation where one of the drawers was open. The second place is the onClosing signal handler in main.qml. Naively I thought that this was enough to catch all cases where we were about to exit the app, but apparently an explicit manager.quit() is a bit too forceful and doesn't get to that signal handler. With this commit we check for open drawers in both places. Belts and suspenders, I guess. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-details: remove the redundant 'map it' buttonGravatar Dirk Hohndel
You can already get to the map by either clicking on the location text or on the left action button. This third way to get there reduces the available space for the location text, and can cause positioning issues with very long location texts creating three or more lines of text, which then overwrites the dateRow below. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31mobile/dive-list: avoid using undefined value as booleanGravatar Dirk Hohndel
This gets rid of an annoying and noisy warning. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-31cleanup: remove loadFromCloud() declaration from QMLManager.hGravatar Berthold Stoeger
This getter functions was not defined anywhere. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: use setPointSizeF() in themeInterface::set_currentScale()Gravatar Berthold Stoeger
The compiler complained that we were passing a float to the QFont::setPointSize() function, which expects an integer. Solve this by using the QFont::setPointSizeF() function. This might introduce a user-visible change, albeit very unlikely: We now may set the point-size to a non-integer number. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: fix initialization order in QMLProfile constructorGravatar Berthold Stoeger
The compiler complains that members were initialized out-of-order. Even though this is not an issue here it is correct to emit a warning, since only then it is guaranteed that the objects are destructed in reverse-order with respect to construction. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-30cleanup: un-slotify QMLManager functionsGravatar Berthold Stoeger
Some slots in QMLManager were not called from the outside, some only directly from C++-code. Make the former private and the latter public member functions. The idea here is to document which functions are actually called from the outside and which are called from QML or connected to signals. 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-30cleanup: don't send values in changed-signals of ThemeInterfaceGravatar Berthold Stoeger
According to the Qt-docs you *may* send the new values in the NOTIFY signal of Q_PROPERTYs. However, since changes will lead to a reevaluation of a whole expression, this argument will be unused. All it does is make the code more verbose and brittle: What happens if you send the wrong value? 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 color-constants in themeinterface.cpp staticGravatar Berthold Stoeger
There were no outside users - no point in exporting them. 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-30mobile UI: don't exit when using back button to close drawersGravatar Dirk Hohndel
An Android user might reasonably assume that they can use the back button to close the global or context drawers. So act accordingly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-30mobile/dive-list: add indicator that dive list is being processedGravatar Dirk Hohndel
This should deal with the rather confusing 'No dive in dive list' shown while loading and processing the dive list. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-30mobile/dive-list: show/hide virtual keyboard as needed for filterGravatar Dirk Hohndel
This should happen automatically, but for some reason it doesn't. So let's try to force it manually. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-30mobile/dive-list: make sure filter input area is visibleGravatar Dirk Hohndel
Since apparently the header property of the ListView isn't reliably making sure that our filter input line is visible, let's move the filter header to be it's own visual element and manually manage the relationship between that and the ListView. The obvious idea was to anchor the ListView to the bottom of the filterHeader, but that didn't work in my tests. So instead we are using the topMargin to make sure that there is space to show the header. Because this re-indents the whole filterHeader, 'git show -w' gives a much better idea what this commit actually changes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-29mobile/cleanup: use a mutex to protect storage accessGravatar Dirk Hohndel
Instead of the crude and error prone bool, let's just use the right tool for this job. In order to avoid issues with a goto across a mutex boundary, this slightly restructures the code in one place - 'git show -w' makes it clear that this is really rather simple in its changes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-28mobile/save-changes: untangle the handling of alreadySavingGravatar Dirk Hohndel
I'm suspicious that an issue that some people have seen around changes not being saved is caused by our handling of alreadySaving. When starting with Subsurface-mobile in no-autosync mode, we were able to end in a scenario where alreadySaving was true, even though there were no unsaved changes. And in that case no changes made during such a session were saved unless the user forced a manual sync with the server. This commit radically changes our approach to handling the flag. It moves it right next to the actual calls into code that could modify git storage, and ensures that the flag can never stay set. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-28mobile/cleanup: tiny coding style issue that bugged meGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26mobile UI: add create trip to DiveDetails context menuGravatar Dirk Hohndel
Should have done that in the first place. That's what happens when you are rushing it... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26iOS: ensure changes are saved locallyGravatar Dirk Hohndel
This was disabled in the past because it was deemed to slow. A lot of time has passed, since. Maybe on current phones / iPads this is acceptable again? Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26cleanup: remove dead codeGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26mobile/dive-list: add ability to create tripGravatar Dirk Hohndel
This adds a context menu entry for top level dives that allows the user to create a trip for that dive. Unfortunately this creates a new string to translate right before a release... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26mobile/cleanup: pageStack.pop() doesn't take a string argumentGravatar Dirk Hohndel
This happens to do the expected thing, anyway, but let's not keep this broken code around. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26mobile UI: undo partial dive add when cancelingGravatar Dirk Hohndel
When we start adding a dive, we actually create a diveAdd undo command so we have a dive that the user can edit. Which means we need to undo this action if we cancel. Also, for a more consistent UI, we should pop the dive details page that we used to edit this dive and bring the user back to the dive list. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-26mobile/page-selection: consistently use showPage to select a pageGravatar Dirk Hohndel
We still used pageStack.push() all over the place. Also, in showPage, disable the map hack if the user actively picks a different page. This should fix an issue where the user picked the map and then tried to add a dive to the dive list - and instead of the dive edit was shown the map again. Reported-by: Hartley Horwitz <hhrwtz@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-25mobile/profile: ensure profile opacity resets when zoomingGravatar Dirk Hohndel
It's possible for our code to think that the user wants to pan the profile before realizing that the user actually is making a pinch gesture. In that case the profile could get stuck in semi-transparent mode. This prevents that from happening by explicitly resetting the opacity to 1.0 when we start a pinch. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-25mobile/debug: simulate zooming through mouse wheel on desktopGravatar Dirk Hohndel
And allow touchpad gestures to be recognized as well. This has no negative impact on the mobile platforms, but makes it much easier to test profile scaling / panning on the desktop. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-23mobile/profile: don't pan unless we are zoomed inGravatar Dirk Hohndel
This way someone trying to swipe from dive to dive won't inadvertantly pan the profile instead. And panning it really only makes sense when zoomed in in the first place. This could leave us in a situation where we zoom in, pan, zoom out and now the profile is out of whack and we cannot correct it. A simple click on the profile fixes that. The real solution would be some constraining / adjusting as we zoom and pan to ensure we keep things correctly positioned. Maybe I'll figure out the correct way to do this later... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-23mobile: show the new v3 user manualGravatar Dirk Hohndel
I would love to figure out a way how to bundle the user manual and load it from the device file system, but in the meantime this should continue to work. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile/divelist: add UI to toggle dive invalid flagGravatar Dirk Hohndel
This reuses the corresponding undo command. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile UI: show dives marked as invalid with strike throughGravatar Dirk Hohndel
This matches the visual language of the desktop UI. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile/tripedit: close page after savingGravatar Dirk Hohndel
That's consistent with how we do things on other pages. Also hide the on-screen keyboard. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile/settings: attempt to fix the layoutGravatar Dirk Hohndel
The hardcoded widths with fixed values was just flat our broken and created all kinds of strange artifacts. But even with this somewhat more idiomatic approach this still isn't perfect - on wider screens it doesn't shrink back to the minimum column width. But that seems like a bit of a corner case. Overall this feels like a huge improvement. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile/DCdownload: try harder to get the right elements selectedGravatar Dirk Hohndel
The number of possible sequences of events when the user is connecting a USB device is rather surprising. These changes try to ensure that in every case we get USB connection information we do in fact show the correct (or best guess) connection. See #2686 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-21mobile UI: stop the use of dark icon themeGravatar Dirk Hohndel
This was used very inconsistently and had more bugs than positive impact. See #2686 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-18mobile: remove QMLManager::updateSiteList()Gravatar Berthold Stoeger
The location information model is updated automatically by the divelist-model and the undo commands. Therefore remove the QMLManager::updateSiteList() function. We do have to keep the locationListChanged() signal though, because the list of dive sites is not exported via model/view but rather via a Q_PROPERTY. We really should change that. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-17git: load into arbitrary dive tablesGravatar Berthold Stoeger
The git parser loads into the global dive table, even if it is called indirectly via parse_file(). However, parse_file() may be given a different table. Fix this by extending the git parser state. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-03-17mobile/cleanup: add some more log messagesGravatar Dirk Hohndel
This will help understand the control flow in the log. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>