summaryrefslogtreecommitdiffstats
path: root/mobile-widgets/qml/DownloadFromDiveComputer.qml
AgeCommit message (Collapse)Author
2021-01-01mobile/UI: consolidate to a single check boxGravatar Dirk Hohndel
It was very odd that we had two slightly different styled check boxes. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-20mobile/UI: make dive download combo boxes theme awareGravatar Dirk Hohndel
In reality I should make our TemplateComboBox capable of handling the modifications needed here without yet another reimplementation. Maybe I'll do that next. This at least makes things look right. A couple of odd whitespace changes snuck in at the end. 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-05-18mobile/dc-download: fix dark theme appearanceGravatar Dirk Hohndel
I noticed that the download from dive computer page looked especially bad in the dark theme (a user sent us some screenshots for a different reason) and a quick look at the sources showed that we weren't using our template label. Switching to that gives us the correct size by default so we can drop all those explicit font size parameters. And we get the correct color as used in the theme. One random whitespace cleanup snuck into this commit. Oh well. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-04-04mobile/download-from-DC: ensure that changes get actually savedGravatar Dirk Hohndel
Calling saveChangesLocal() seems like the right thing to do, but it doesn't do anything useful if the dive list hasn't been marked as changed. The correct helper function to call is changesNeedSaving() which makes sure we save the changes and update all UI information. [Berthold: since this removes the last QML caller of saveChangesLocal() we can make that function private.] Signed-off-by: Dirk Hohndel <dirk@hohndel.org> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-04-04mobile/cleanup: fix whitespace and remove verbose messagesGravatar Dirk Hohndel
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-16mobile/DC-download: select reasonable connection after rescanningGravatar Dirk Hohndel
This seems to make more sense than to not select anything (which was the previous behavior). If the same connection is still available, select it again. Otherwise pick the top connection (which is the right thing to do if the user has just plugged in a USB device and refreshes the list -- that device will show up as top entry). Based on a suggestion by Christof Arnosti <charno@charno.ch> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-16android/usb: simply restart the download after receiving permissionGravatar Dirk Hohndel
If the user tries to download from a device that he hasn't given the app permission to read from, Android will pop up a dialogue asking for that permission. With this after giving the permission we continue (well, technically, restart) the download which is likely the expected behavior. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-16android/usb: refresh USB device list on entering download from DCGravatar Dirk Hohndel
The usbRescan() code is smart enough not to duplicate entries that might already be there. And with this the user doesn't have to manually tap rescan if they didn't open Subsurface-mobile via the intent after a device was plugged in. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-16mobile UI: rescan button on DC Download page rescans BT/BLE/USBGravatar Dirk Hohndel
This way even if a USB device wasn't added through an Android intent, we still have a way to scan for it and select it. This is especially important in case a user has a cable that we haven't seen yet (i.e. with a VID/PID that we haven't added to Subsurface-mobile), but that nevertheless works with the android usb serial drivers. This also makes the flow a little more logical / consistent when deciding which connections to show. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-16mobile UI: remove special case for Atomic AquaticsGravatar Dirk Hohndel
This dive computer hasn't been supported on Android in quite a while. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-16mobile/download: only use device guess if no USB device plugged inGravatar Dirk Hohndel
If we explicitly open the download page after the use plugged in a USB device, don't try to use guesses from the BT/BLE pairings to populate the device/connection dropdowns. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-10mobile: random white space cleanupGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-10mobile: don't disconnect model on downloadGravatar Berthold Stoeger
That makes no sense anymore. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-09mobile/DC-download: be more careful exiting download pageGravatar Dirk Hohndel
Don't just pop the top page off the stack, but pop the download page. Also explicitly switch to the dive list afterwards. Additionally, fix a typo in the code that attempts to deal with the shortcut buttons. I believe that right now this code is completely broken, but while I contemplate how this should work, let's at least fix the stupid typo. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-03-07mobile UI: re-enable download status when restarting downloadGravatar Dirk Hohndel
When tapping on 'retry' we didn't clear the flag that decided which message to display. Fixes: #2651 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-02-03mobile-widgets/qml: add TemplateButtonGravatar jan Iversen
Do "git mv SsrfButton TemplateButton", and search/replace all uses. The general idea of the templates are to secure common layout, but also to isolate the Kirigami parts (slowly) in the templates. Signed-off-by: Jan Iversen <jani@apache.org>
2020-01-30mobile-widgets: do not use fontmetric for heightGravatar jan Iversen
In order to remove fontMetrics from QML, replace references (height) in DownloadFromDiveComputer and Settings Add include kirigami as needed Signed-off-by: jan Iversen <jan@casacondor.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-12-24mobile-widgets/qml: remove use of eval()Gravatar jan Iversen
eval() cannot be used in combination with the Qt5 qml compiler, replace eval() with switch statements. Signed-off-by: Jan Iversen <jani@apache.org>
2019-11-08Mobile: give visual indication that we are saving divesGravatar Dirk Hohndel
Allow showing that the app is busy and showing why at the same time. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-03Mobile: disconnect model while updating dive listGravatar Dirk Hohndel
If the dive list is connected to the model while the model is updated with the downloaded dives, sometimes the UI hangs completely. Disconnecting the model and then reconnecting it does add a fairly noticeable delay on longer dive lists, so there are tradeoffs here. Of course the obvious solution is to make reconnecting the model faster... Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-03Mobile: use appendTextToLog to get timestamps in logsGravatar Dirk Hohndel
This helps tremendously when tracking down some problems. We should never use console.log. In the process this also updates a couple of the messages to be clearer. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-26Mobile: ensure we go back to the dive list after downloadGravatar Dirk Hohndel
The pop() by itself wasn't enough to do that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-26Mobile: simple message and busy spinner while storing downloaded divesGravatar Dirk Hohndel
Due to some recent changes processing the downloaded dives and re-displaying the dive list can take quite a while. So show a small message and the busy spinner to warn the user. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-02Mobile: fix reloading dive list after downloadGravatar Dirk Hohndel
There was a sad typo in commit eecca6aab0 ("Mobile: replace model-reset by row-addition in DiveListModel::reload()"). Additionally, we need to also refresh the dive list so that the new dives are shown. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-10-02Import: Make DownloadThread a subobject of DiveImportedModelGravatar Berthold Stoeger
Currently, desktop and mobile are accessing the DownloadThread and the DiveImportedModel concurrently. This makes a big data flow mess. To achieve a more hierarchical data flow, start by making the DownloadThread a subobject of DiveImportedModel. Start the download by calling a function in DiveImportedModel. Route the finished signal through DiveImportedModel. Thus, the model can reload itself with the new data. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-27Mobile: replace model-reset by row-addition in DiveListModel::reload()Gravatar Berthold Stoeger
Owing to apparent QML breakage, a model-reset leads to the DiveDetail page being reloaded for every dive in the list(!). Therefore, add rows instead. This leads to extremely subtle code, as it is now imperative that the model has been properly cleared beforehand. Nevertheless, for now we have to do this to fix a severe performance regression. Fixes #2295 Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-21Mobile: more space around menu button on Download pageGravatar Dirk Hohndel
This looked fine when playing with it on the desktop, but required more space on device for some reason. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-09-21Mobile: correct font size of 'Previously used DC' labelGravatar Dirk Hohndel
This appears to be the one label where we didn't set the correct font size based on the global scaling. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-09-14Mobile: replace clear()/addAllDives() pairs by reload()Gravatar Berthold Stoeger
The clear()/addAllDives() pair was bogus as the former didn't clear the model (this is not possible anymore - the model represents the core dive list) and the latter readded all dives again. Replace this by a reload() function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-11Mobile: reserve space for the hamburger menu on Download pageGravatar Dirk Hohndel
Having a label with no width that can expand wasn't really a great way to do so. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-08-10Mobile: catch null references in DownloadDCThreadGravatar Berthold Stoeger
There are reported crashes on Android that suggest a null "tables" attribute in DownloadDCThread. This should never happen, as the table() function connected to this attribute returns the address of a subobject. Thus, even if the original DownloadThread is null, this would not return a null pointer (the subobject is not at address 0). Catch these null-object accesses and write a warning message to the console. Hopefully, this will help is localizing the problem. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-05-11Mobile: add checkbox to force downloading all divesGravatar Dirk Hohndel
This has been a feature people have asked for quite frequently. It is taking up some valuable screen real estate - so the question could become if there should be a switch to enable / disable it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-04-12Undo: make undo-system dive site-awareGravatar Berthold Stoeger
As opposed to dive trips, dive sites were always directly added to the global table, even on import. Instead, parse the divesites into a distinct table and merge them on import. Currently, this does not do any merging of dive sites, i.e. dive sites are considered as either equal or different. Nevertheless, merging of data should be rather easy to implement and simply follow the code of the dive merging. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-01-19Import: don't add to new trip while downloadingGravatar Berthold Stoeger
Since process_imported_dives() can add dives to a newly generated trip, this need not be done in the downloading code. This makes data flow distinctly simpler, as no trip table and no add-new-trip flag has to be passed down to the libdivecomputer glue code. Moreover, since now the trip creation is done at the import step rather than the download step, the latest status of the "add to new trip" checkbox will be considered. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-01-09Import: add trip_table argument to DiveImportedModel::repopulate()Gravatar Berthold Stoeger
In the future we want to download trips into a distinct trip-table instead of the global trip-table to allow for undo of import. Therefore add a trip_table argument to DiveImportedModel::repopulate() and a trip_table member to DiveImportedModel. To correctly set these, add a DownloadThread::trips() function, which currently simply returns the global trip table. Finally, make "struct trip_table *" a Q_METATYPE, so that the corresponding arguments can be passed from QML. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-21Mobile: deal with BT name and address when tapping DownloadGravatar Dirk Hohndel
Instead of trying to update this whenever the connection text changes, instead deal with it right before it actually gets used. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-17Import: unglobalize downloadTableGravatar Berthold Stoeger
To make data flow more clear, unglobalize the downloadTable object. Make it a subobject of DownloadThread. The difficult part was making this compatible with QML, because somehow the pointer to the download-table has to be passed to the DiveImportedModel. Desktop would simply pass it to the constructor. But with objects generated in QML this is not possible. Instead, pass the table in the repopulate() function. This seems to make sense, but for this to work, we have to declare pointer-to-dive-table as a Q_METATYPE. And this only works if we use a typedef, because MOC removes the "struct" from "struct dive_table". This leads to compilation errors, because dive_table is the symbol-name of the global dive table! Sigh. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-10-12QML, cleanup: remove stackViewGravatar Jan Mulder
There is no reason (any more?) to have a property defined that basically renames the global pageStack into a local pageView. Just cleanup. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-10-10QML UI: disable rescan when no bluetoothGravatar Jan Mulder
This is cosmetic only. It make no sense to selected rescan when Bluetooth is off. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-10-10QML UI: do not try to download from DC with empty vendor/productGravatar Jan Mulder
Disable the Download button when one of the fields vendor, product, connection is not filled in. The app will crash when trying. In addition, make the underlying core code to actual download more safe by checking this, and silently fail instead of crash. And, yes, this is a double fix in this scenario, but the core code is used in more places, so better safe than sorry. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-10-09Mobile/DC download: reset the "Download" buttonGravatar Jocke
When changing to another DC, reset the "Download" button text. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2018-10-09Mobile/rememberDCs: remove duplicated codeGravatar Jocke
The code to disable a quick button has moved to the DC matching logic, in order to inactivate the correct button also for USB DCs. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2018-10-09Mobile/rememberDC: update matching logicGravatar Jocke
Update the matching logic to account for known and unknown BT DCs. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2018-10-01Mobile download from DC: improve selection logicGravatar Jocke
Improve the logic when auto selecting a DC for download. Some USB cables only supply vendor information but we can select the correct model if we have downloaded from it before. For BT/BLE our discovery process adds the device name to the address, so we need to keep that in mind when we try to match against what we seen before. When we have a positive match for a DC we have seen before we deactivate the corresponding button of our saved DCs. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2018-10-01Mobile QML UI: bump Kirigami imports to 2.4Gravatar Jan Mulder
Primarily for reasens of keeping up with upstream. And hopefully bugfixes and added functionality. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-09-26mobile, QML UI: margings and paddings in download screenGravatar Jan Mulder
There was a significant of not needed whitespace on the download from DC page. Most importantly, the bottom buttons where not on the bottom, so we had to truncate the downloaded dives early (to prevent overflowing the buttons). Further, a tiny bit of padding is removed between the 3 top pull down items. All this, results in the diplay of more dives without scrolling. For example, previously, only 1 dive (with 1 stored DC) was shown on my 5.5" device, and now 3 (scale: regular). Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-09-26mobile, QML UI: ssrfButton and download controls resizableGravatar Jan Mulder
Make the ssrfButton and the pull down menu's on the download page resizable. Notice that also the contents of the pulldown menu's is scaled based on the font size. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-09-25Mobile/download DC: disable selected DC buttonGravatar Jocke
Disable the button for the currently selected DC. This gives an extra visual hint of which DC is currently selected. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>