summaryrefslogtreecommitdiffstats
path: root/mobile-widgets/qml
AgeCommit message (Collapse)Author
2018-01-31mobile cleanup: restyle construction of locationlistGravatar Jan Mulder
See also e6e1473e6. The construction of the locationlist was not the same as the 3 previous lists, and it needs the inclusion of a new model file (divelocationmodel.cpp) in the mobile app. In addition, as the mobile app is mainly interested in a simple stringList (model) to populate a HintsText field (or maybe later a combobox), this stringlist is added to the model, to easy interfacing with QML. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-31mobile cleanup: unduplicate code and do not loop over dives (3)Gravatar Jan Mulder
See e6e1473e6. Exact same commit but here for the list of divemaster. The careful reader will spot a small addition to the clearDetailsEdit() QML function. Two more field are cleared. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-31mobile cleanup: unduplicate code and do not loop over dives (2)Gravatar Jan Mulder
See e6e1473e6. Exact same commit but here for the list of buddies. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-31mobile cleanup: unduplicate code and do not loop over dives (1)Gravatar Jan Mulder
This is the first of a set of commits that are (very) similar. It appeared that a number of more or less static lists, which are constructed by a loop over all dives in the logbook, were executed when changing focus to a next dive. For example, the in this commit addressed list of used dive suits. What was wrong was that the suitList was linked to a dive. There is only a need to construct the list of used suits when data is changed (and obviously, once on startup of the app). Further, it appeared that a lot of code was duplicated and that we can use (in this case) the same code from the desktop completionmodels.cpp. Basically, this commit involves the following changes: - include completionmodels.cpp in mobile and desktop (so move it from the desktop only category to the generic category). - remove double code from DiveObjectHelper.cpp - Do not differentiate in the init phase and the normal refresh of the list - the per dive logic is now only the getting of a previously constructed list (in init or update of the divelist). There are no visible changes in the UI, other than a better performance when scrolling over dive details. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-10mobile: fix crash on delete dive from divelistGravatar Jan Mulder
This is a somewhat hacky commit. For a very long time, the delete from the divelist on mobile crashed. That is, not always for anyone, but for me almost consistently. This commit tries to solve it. I found that trying to save the delete immediately after removing data from the underlying model seemed to cause the crash. Hacking around, I found that a simple beginResetModel/endResetModel between the delete of the underlying model data and actual save is sufficient to solve the crash. The big question is, why does this all work? I suspect some of race condition between deleting model data, and giving the QML engine the opportunity to do its thing. This is also related to issue #311, but that is not implemented here. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-03mobile: silence warnings in the app logGravatar Jan Mulder
The new SHA mysteriously caused more than 300 extra warnings in the app log. It was caused by a code change in Kirigami. The way to suppress it is, in hindsight, after some hours of searching, trivial. A Kirigami.BasicListItem shall have an icon defined. And as we do not care about any icon here, just define it empty. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-01-03mobile: newer Kirigami SHAGravatar Jan Mulder
This commit consists of the following 3 parts: 1. There are 2 source files added, adapt our build process accordingly. 2. Due to a change in icon and kirigami QML prefixes, we need to adapt for this as well. Changed mobile-resources.qrc for that. When this would not be changed, the icons will not be found. 3. To further prepare for the future, abandon the iconName property in favour of the new icon grouped property, which can have more attributes than only the name. But currently it is only a syntactic change. Tested on Android device, and no visible changes. Signedoff-by: Jan Mulder <jlmulder@xs4all.nl
2017-12-30Get ready for 2018Gravatar Jan Mulder
Copyright strings updated. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-26mobile: close GPS menu drawer when selectedGravatar Jan Mulder
This is mainly a cosmetic improvement. The GPS menu stayed visible, when selecting most of the options. This looks weird, as the close of the menu is also an indication of the selected action carried out. So, just close it Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-18CHANGELOG.mdGravatar Jan Mulder
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-18mobile: exit edit mode when navigating away from edit pageGravatar Jan Mulder
Navigating using the breadcrumb in the header did leave the dive detail edit (and add) mode in such a way that (for example) navigation in the dive list was suspended. Obviously, it is debatable what should be done. Saving the edits/add, or cancelling them. For now, this commit cancels them silently. This is the exact same thing that is happening when the user selects the dive list from the drawer menu. Fixes: #932 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-15mobile: clear internal data when edit/add dive is finishedGravatar Jan Mulder
When editing (or adding) a dive, the internal data containing the attributes on the edit page was not cleared when editing was finished (in any way, by saving the edit or by cancelling it). As long as the user only edits existing dives, all this poses no problem, as at the start of a dive edit, the data is filled from the dive to be edited. However, when adding a dive, data coming from previous edits shows up. This not clearing data also causes the strange effect as written in issue #950: adding a dive, deleting it, and adding a dive again, added the first added dive data, without the edit screen being shown. All this can be solved by clearing the data from the edit when editing is done. Fixes: #950 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-14mobile: show message when going offlineGravatar Jan Mulder
Trivial fix. Show the message "Turning off automatic sync to cloud ..." when turning automatic sync to offline. Just a more logical moment to show this message. Also rephrase the message "Enable auto sync" to "Auto sync enabled". It shows a status, and not an action. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-13mobile: reset download screen in a sane stateGravatar Jan Mulder
Set download srceen in a sane state after a previous download session using this screen. The erroneous behavior was very similar to the one fixed in commit 7fe9bbe295dcf92. For example, download some dives, quit the screen, go back, and the bottom buttons are still selectable. This commit resets some values when leaving the download screen (ie. not only swiping it away), so that it looks sane at a next visit. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-13mobile: reset Retry button to DownloadGravatar Jan Mulder
Reset the Retry button on exit of the Download from divecomputer page. So, it it not reset wehen swiping this page away, or cancelling a running download, but resetting it on accepting downloaded dives. As we do not have real error reporting (from download failures), this all is a little arbitrary. Another "fix" could be, not changing the button text at all. Further notice, this is not specific iOS, but also Android. Fixes: #895 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-12-07Mobile: Enable editing multiple buddiesGravatar Joakim Bygdell
While the autocomplete function only works for the first entry adding multiple comma separated buddies can still be done. Fixes #608 Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2017-12-07Show BT device names firstGravatar Robert C. Helling
Show them left of address (so they are in the user's view) rather than on the right. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-12-06Don't close menu after clickGravatar Robert C. Helling
I consider it more natural for example for the GPS menu to stay open when an action is clicked. So this turns off the general close but has to trigger it on individual items. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-12-05Add button to rescan BT devicesGravatar Robert C. Helling
Otherwise the divecomputer has to be in pairing mode at app start time. Unfortunately, this leaves less space for the progress message. My time/qml knowledge does not suffice to move that to the next line (when moving that out of the RowLayout it overlaps with the buttons). Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-12-05Unify capitalizationGravatar Robert C. Helling
Sorry, this introduces a new string... Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-12-03iOS: Display GPS menuGravatar Murillo Bernardes
Signed-off-by: Murillo Bernardes <mfbernardes@gmail.com>
2017-12-02iOS: check for UUID instead of physical addressGravatar Murillo Bernardes
on iOS the address we display on Connection is an UUID, not a physical address. This change the pattern (on iOS) used to enable bluetooth_mode. Signed-off-by: Murillo Bernardes <mfbernardes@gmail.com>
2017-11-25mobile: get GPS data from dive site nameGravatar Jan Mulder
When the user entered a dive site using autocompletion, it is a known site, of which we might have a GPS location already. Just fill the known site coordinates. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-25mobile: autocomplete location namesGravatar Jan Mulder
Add the capability to select the location name from a list, constructed from the known dive sites in the logbook. Fixes: #546 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-19QML UI: QtQuick.Layouts to 1.2Gravatar Jan Mulder
And again, no visual changes. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-19QML UI: QtQuick.Controls to version 2.2Gravatar Jan Mulder
Tested fine without visual changes. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-19QML UI: QtQuick to 2.6Gravatar Jan Mulder
Upgrade QtQuick to 2.6. Seeing a small artifact in the application header, lets see what happens when upgrading more includes. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-19QML UI: Kirigami to 2.2Gravatar Jan Mulder
When first tested this commit, especially the dive list was looking terrible. However, after including newer SHA's from libkirigami, and correcting lots of spacing/margin issue, a retest of this commit shows no strange artifact any more, and the amount of warnings in the log output is reduced significantly. So now, it appears save to upgrade. Notice that main.qml still uses Kirigami 2.0. and is not updated in this commit. With version 2.2, there is a new way of theming, that is not (yet) compatible with our current code. Blindly upgrading to 2.2 leads to a almost black dive list, wrong button colors, and runtime errors in the log, due to the fact the direct setting from QML Kirigami's Theme colors is not allowed any more. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-11-05map-widget: move the widget and its resources to 'map-widget'Gravatar Lubomir I. Ivanov
Move all the map widget platform agnostic files to the <subsurface-root>/map-widget folder. This avoids the confusion about the desktop version of subsurface using mobile components. The map widget is planned as a shared component between the mobile and desktop versions. desktop-widgets/mapwidget[.h/.cpp] still remain as those are specific to the desktop version. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-30QML UI: show divelist from the topGravatar Jan Mulder
In commit bdf6dc78281bec2, we pulled in some changes from Kirigami. I checked all the new commits and they seemed just fine, and a test (on desktop) on both Qt 5.9.1. and 5.9.2 showed no obvious problems. However, some time later, working on something else, I compiled from Android to test, and saw some strange behavior in the dive list. The topmost dive is partially hidden behind the application header on startup of the app, but can be pulled down. Not a big deal, but is does not look right. After tedious testing, bisecting, etc, I found commit d0f3941a4d7f4d4c6 in Kirigami (obviosuly, it was not clear from the start that it was in Kirigami, as I could well have been some error in Subsurface, or even Qt). Mentioned commit is trivial, and handles with the wideScreen property of the application window. With wideScreen = false, the bug is visible, when true the bug is gone. This all said. Just set the wideScreen to true, which can definitely be considered a workaround. I exspect that this commit can be reverted later on when Kirigami is fixed. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-29QML UI: Scrolling in dive detailsGravatar Jan Mulder
While testing the mobile app on Qt 5.9.2, I encounted a show stopping issue. Select a dive in the dive list, go back to the dive list (as selecting a dive opens the details), now scroll down to a different dive, and select one. The app starts enumerating (moved smoothly according to the specs) all the dives between the old and the new selected dive. So, depending on the distance, this could take forever. Explicitly: on 5.9.2. only. From the Qt docs: highlightFollowsCurrentItem : bool If this property is true (the default value), the highlight is moved smoothly to follow the current item. Otherwise, the highlight is not moved by the view, and any movement must be implemented by the highlight. End Qt docs. Setting this property to false solves the issue. Tested on both Qt 5.9.1 and 5.9.2. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-29mapwidget: add the 'isReady' flag to the Map componentGravatar Lubomir I. Ivanov
The 'isReady' boolean flag is now set to 'true' only once the Component.onCompleted slot is reached. The flag is then used as a safe-guard in the onZoomLevelChanged slot. Calculate the small circle radius (mapHelper.calculateSmallCircleRadius()) only if 'isReady' is set to true. Prevents a crash if the Map widget is not ready, yet a zoom level is set via the 'zoomLevel' property. The crash happens because mapHelper.calculateSmallCircleRadius() has a callback to the Map component to estimate some points and distances of the small circle. Reported-by: Stefan Fuchs <sfuchs@gmx.de> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-29map widget: start with normal zoomlevelGravatar Jan Mulder
Commit 344d9765936 resulted in the start of Subsurface with a map of the whole world. The user has to zoom in (assuming the case that the first selected dive has a position), in evenry session. This is solved by setting the zoomlevel at startup at the default value. Ok, this results in a map of central London, UK, when starting Subsurface with a dive without location, but is this as good as any map. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-27QML UI: prevent full overflow of bottom buttonsGravatar Jan Mulder
A not perfect improvement, but way better IMHO. Prevent the list of downloaded dives to grow over the buttons at the bottom. Just a simple change by adding a bottomMargin to the list. Notice that there is still some overlap, but for now I consider this a trade-off between the scarce screen real-estate and the wish to present and much as possible dowloaded dives. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-27QML UI: repair long trip headersGravatar Jan Mulder
Trip headers spanning more than one line where broken at incorrect locations in the string. Not exactly sure, but I think this came with the newest Kirigami SHA, and especially the Label change. Carefully reading the code for the trip heading shows a "strange" negative margin. So the margin is on the outside. This margin was used to split the string, allowing for a small invisible part of the string to present as trip header. This is solved by this commit. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-23Make the map widget more pleasant to useGravatar Linus Torvalds
This does two main things to the map widget: - if there are no coordinates, do *not* zoom out to the whole-world view. Just leave the map alone. - when zooming out to move to a new dive site, zoom back in to the same zoom level it was before. These two changes make it much more pleasant to move between dives, particularly as you move back-and-forth without losing the zoom level. NOTE! The zoom level gets reset if you move dives _while_ zooming is happening, and so moving quickly between dives will still end up losing the original zoom level, replacing it with a bigger zoom-out that was active _during_ a previous zoom. That could be seen as a feature (moving incrementally to an "overview" zoom when moving quickly between dive sites), but honestly it smells more like a bug to me. But regardless of that feature/bug, this new zoom behavior is more pleasant than our older "always reset when moving". But it might be a matter of taste, so people should try this out and comment. Signed-off-by: Linus Torvalds <torvalds@linux-foundation,org> Cc: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-19QML-UI: Download screen fixupGravatar Jan Mulder
Again, mostly related to label change. First, the top button was "glued" to the top of the screen, so added a little margin there. It appeared that all the other items on the screen (progressbar, 2 button rows, and the downloaded dive list) where not moving down due to the add of that little top margin. This was solved by anchor-ing the items together. Finally, the text of a downloaded dive was on the top of the delegate lines. Not sure where that came from, but easily solved by centering it explicitly. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-19QML-UI: some more layout repair (dive details)Gravatar Jan Mulder
As in a525fff1125, also the dive details top data was not nicely positioned any more due to the deprecated and removed Kirigami.Label. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-18QML-UI: repair DiveListGravatar Jan Mulder
The new SHA for Kirigami did all kinds of nasty things to our DiveList. This commit tries to repair most of the damage. Nothing more than some margins, anchors, and even a font that changed. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-17mobile: silence deprecated messages in logging about Kirigami.LabelGravatar Jan Mulder
Commit 8f6827ab122 brought a new SHA for Kirigami, but that introduces a very noisy logging of "Kirigami.Label is deprecated. Use QtQuickControls2.Label instead". So, thats what done here. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-17mobile: No cloud repo creation more explicitGravatar Jan Mulder
Before this change, there was only one way to create the local no cloud repo on the device. The user needed to add at least one dive to the no cloud account (so that there is something to save). While this worked in some scenarios, it could also get things in an inconsistent state: credential status = CS_NOCLOUD but no local repo. This was a dead end. In this commit, the creation of the no cloud repo is made more explicit. When asking for no cloud mode, just create an (empty) repo for it when it does not yet exist, and otherwise, just open the existing (possibly empty) repo. Now, a user can have no cloud repo, next to (any number of) cloud accounts. This leaves one functional aspect left: how does a user abandon the no cloud repo, by merging his data into a true cloud account. This is code for this, that tries to do this merge in a smart way. This seems to be broken (too). To be clear: this is no part of this commit. Fixes: #667 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-15qml-icons: add a third, grayed-out map markerGravatar Lubomir I. Ivanov
It can be difficult to distinguish the new marker which is added on the map and has to be dragged when editing a new dive location. By adding a new grayed-out marker it becomes possible to gray out all other markers, while the current marker which is being edited is still bright red. Suggested-by: Dietrich Meyer <dietrich@sunnynames.com> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-15qml-icons: make mapwidget-marker.png even darkerGravatar Lubomir I. Ivanov
This is done so that a de-selected marker is better distinguished from the selected marker. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-15mapwidget.qml: fix weird MouseArea bug in MapItemViewGravatar Lubomir I. Ivanov
The QML map uses MapItemView. MapItemView needs a delagate in the form of a MapQuickItem. The MapQuickItem needs a 'sourceItem' which would be used as the visual (e.g. marker) on the map. If the root sourceItem is of type Item, the marker becomes non-clickable. If the root sourceItem is an Image, the clicks work. This patch removes the root Item, which makes the code less organized, but at the same time it fixes the bug. Bug reproduced on the following Qt versions on Ubuntu: 5.5.x, 5.7.x Bug cannot be reproduced on Qt 5.9.x on Windows. Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-12mobile: enable switching BT on/off during session.Gravatar Jan Mulder
This commit implements possible switching BT on and off during a session, so not needing a restart of the app when the user forgot to switch it on when starting the app. For this, the following needed to be done: 1) create a handler that reacts on local BT device status changes. 2) repopulate the connection list in the download screen when a BT status change is detected. Notice the subtile change of the Q_INVOKABLE btEnabled() function to a Q_PROPERTY. This gives a nice dynamic behaviour when switching BT on/off with the app open. Fixes: #556 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2017-10-09QML UI: add missing iconGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-07map-widget: don't crash if the map QML failed to loadGravatar Lubomir I. Ivanov
If the QML modules for QtLocation and QtPositioning are missing the QML in mapwidget.cpp will fail to load, which can lead to crashes. To solve the issue check if the QML has loaded and set a flag 'isReady' to true. If the loading has failed load another QML which is for showing a red error text in the lines of `MapWidget.qml failed to load!`. If the map QML has failed, use a macro in all relevant MapWidget members to turn them into a NOP. This approach leaves the rest of the codebase intact - e.g. no checks in classes which connect to the MapWidget class. Fixes #596 Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2017-10-07QML UI: open v2 user manualGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-05WhitespaceGravatar Dirk Hohndel
This commit is empty when shown with '-w' - it just updates the indentation after commit c00804eff6 ("QML UI: always start edit at top of page"). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-10-05QML UI: always start edit at top of pageGravatar Dirk Hohndel
When starting to edit / add a dive, the Flickable needs to be positioned at the top of the page, not the last position shown. For clarity I'll do the re-indentation in the next commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>