summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-12-30Android build: set newer versions and parameterize ANDROID_PLATFORMGravatar Jan Mulder
Hard coding desired ANDROID_PLATFORM on multiple places is simply bad. Fix this. Further, set the variables to a much newer state. CAVEAT: this will likely break android build, so be careful on bisecting. All fixed in next, related commits. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-30Travis: use Android docker image for buildGravatar Dirk Hohndel
This should make it easier to make changes to our build environment. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-30Android: cleanup build wrapper scriptGravatar Dirk Hohndel
This way it can be run both to create the docker container or independently for a full build. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-30Android: create docker containerGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-30Android: add Dockerfile for build environmentGravatar Dirk Hohndel
We'll use that on Travis, but anyone can use that on their system. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-30Android: allow running android-build-wrapper without buildingGravatar Dirk Hohndel
This way we can use it to fetch dependencies we need up front. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-29Mobile: fix editing dive siteGravatar Berthold Stoeger
Commit 68961a169efc37039cd3fda334efb9ad9927444f made it impossible to edit a dive site on mobile if a dive-site was already set: If divesite was non-null, no actions were taken. Remove the conditional. Reported-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-29CHANGELOG.md: update with the recent windows.c changeGravatar Lubomir I. Ivanov
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2018-12-29windows.c: fix wrong usage of wcslen() for utf8 conversationGravatar Lubomir I. Ivanov
wcslen() returns the number of characters in a wchar_t string. In the case of WideCharToMultiByte() an estimate for the size of the utf8 buffer is needed. Using wcslen() is incorrect for such a buffer, because for any non-ASCII character the estimate will be off by 1 byte. Call the following instead to obtain the proper UTF8 buffer size for the conversation: WideCharToMultiByte(CP_UTF8, 0, utf16, -1, NULL, 0, NULL, NULL); Also fix some missing "\n" in fprintf() calls. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2018-12-27Cleanup: remove getDiveId() functionsGravatar Berthold Stoeger
These functions in DiveListSortModel and DiveListModel had no users. Remove them. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-27Core: fix BT on Linux, workaround Qt bug on 5.12.0Gravatar Jan Mulder
After upgrading to Qt 5.12.0, download over BT from a DC did not work any more. On the console the message "Connecting to port is not supported (Uuid required)". Linus noticed earlier that we do rather strange processing in this part of the code related to selecting port 1 or port 5. This all seems not needed (any more), but broader testing is advised. This being stripped from the code, the mentioned error from Qt persisted. That is strange in itself, as we did not reference port numbers any more. Step 2 in this commit is actually using an uuid to the call to connectToService. Choosing an uuid seems relatively straightforward as we can use the same one we already use for Android. That is the default BT RFCOMM Serial Port Profile uuid. Interestingly, when changing to this uuid we run immediately in a Qt runtime error telling us "QDBusPendingReply: type ManagedObjectList is not registered with QtDBus.". For these 2 unexpected Qt messages, QTBUG-72742 was made. Studying the Qt source code at this point reveals a possible workaround. Simply create a local QBluetoothLocalDevice object, which, behind the scenes registers the Qt internal ManagedObjectList with QtDBus. In the meantime, Qt agrees that QTBUG-72742 is valid, and that a fix is to be expected in a future version. At that point in time, the declaration of the QBluetoothLocalDevice can be deleted again. In the end, interfacing over BT works again. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-23CHANGELOGGravatar Jan Mulder
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-23Bluetooth: all states other than HostPoweredOff qualify as validGravatar Jan Mulder
This is an attempt to fix issue #1896. While this seems a Qt issue in combination with very specific Android devices, this might be a fix. Do not check for a very specific state of the local BT controller, but just check if it is powered on. Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-23Cleanup: remove unused parameter was_autogenGravatar Berthold Stoeger
In commit 6bf4120dbbf7be1b9267e0e86f3948b77870ea71 the trip-flags were replaced by a simple boolean. This made the was_autogen parameter to the remove_dive_from_trip() and unregister_dive_from_trip() functions unused. Remove these parameters. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-23Add/clarify email requirement to contribution documentation.Gravatar John Plaxco
Make it easier for new contributors to get going by making the Signed-off-by line more clearly explained. Signed-off-by: John Plaxco <john@johnplaxco.com>
2018-12-23Fix error message capitalization for web services.Gravatar John Plaxco
Capitalize the first letter of error message sentences in this file to be consistent with other error messages in this file and across the project. [Dirk Hohndel: edit to remove the changes to the .ts files] Signed-off-by: John Plaxco <john@johnplaxco.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-22Travis: use homebrew addon instead of doing it manuallyGravatar Dirk Hohndel
This should make our mac builds on Travis faster. This also switches to the latest xcode / VM image which helps speed things up (less to update for Homebrew). It turned out that that app directories that we were creating here didn't run for people, anyway, so why even bother with an old image. We still create / upload that image (simply in order to be able to peek into it in case something goes wrong). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-23Merge branch 'willemferguson-mobilemanual3'Gravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-23Improve error reporting when exporting a selection of 0 dives.Gravatar John Plaxco
If no dives are selected when trying to export a selection, a message is shown that no dives were selected, but it's immediately hidden behind a message saying that a temporary file could not be created. In fact, the creation of the temporary file wasn't never attempted, so the message that the user actually sees is misleading. The solution chosen here is to duplicate the check that at least some dives are selected, and abort early if that case is detected, rather than continuing on to show the additional misleading message. Not elegant, but it gets the job done. Better solutions to this include refactoring prepare_dives_for_divelogs to return something more descriptive than a bool, remove that check from prepare_dives_for_divelogs entirely since it doesn't seem to be a good fit there, or switch to exceptions for handling these problems rather than return values. I don't have sufficient familiarity with the codebase to attempt these more invasive changes, but they should be considered in the future. On a final note, some of the other error messages in this file start with a capital letter, but the one relevant to this particular PR does not. Again, I'm not familiar enough with the codebase (or translations) to know if that's safe to change, so I'll leave that for another time or another developer. Reported-by: John Plaxco Signed-off-by: John Plaxco <john@johnplaxco.com>
2018-12-22Subsurface-mobile user manual V2.1.5Gravatar willemferguson
Updates to the user manual for Subsurface-mobile. Many new figures have been brought in. The text has been overhauled to include latest features and some features that do not exist any more have been removed. Text has been added, explaining the copy-and-paste operation (Thanks, Miika). Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
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-21Mobile: add helper function to fill in the BT nameGravatar Dirk Hohndel
For some devices the BT device name is different from the product name. Make sure that name is available to the mobile UI. This helper fills it in from the scan data (based on the device address). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-21core: recognize Oceanic Pro Plus X over BLEGravatar Dirk Hohndel
Just like with the Aqualung i770R in 7697003498 this name follows the pattern of a model number in ASCII encoding, followed by the serial number of the device. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-21Mobile: force update of ui on pasteGravatar Miika Turkia
Apparently this does the trick of updating the dive list when pasting data on mobile. Tnx janmulder. Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-21Mobile: initialize copy variablesGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-21Add UI info to mobile documentationGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-21Mobile: copy the dive data when configuring settingsGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-21Mobile: UI for selecting what to copy-pasteGravatar Miika Turkia
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
2018-12-21CHANGELOGGravatar Jan Mulder
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-21core: shift dive time in correct directionGravatar Jan Mulder
Unsure where this bug got introduced, but when asking for the dive time to be shifted 1 hour later, the divelist and the dive details showed 1 our earlier. Fixes: #1893 Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
2018-12-19Update libdivecomputerGravatar Dirk Hohndel
Catch up with Jef's upstream Fix Oceanic pattern matching for BLE versions 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-12-17Cleanup: make DiveImportedModel::checkStates a std::vectorGravatar Berthold Stoeger
To not have to bother with memory-management. Moreover, the old code was in principle wrong, since it assumed that sizeof(bool) == 1. Of course, this is true for all supported platforms, but let's not depend on such implementation-defined behavior anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-17Cleanup: remove DiveImportedModel::setImportedDivesIndexes()Gravatar Berthold Stoeger
This function resets the DiveImportedModel. It takes two arguments: first and last index. All callers passed in 0 and number-of dives anyway, so remove the arguments. Since this now does the same as repopulate(), merge the two functions. Moreover, implement Qt-model semantics by using a beginResetModel()/endResetModel() pair. This simplifies the code. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-17Cleanup: make DCDeviceData a "normal" singletonGravatar Berthold Stoeger
DCDeviceData was using that weird pattern where the instance variable was set in the constructor. There is no apparent reason to do so, therefore convert to a "normal" singleton. Access that directly in QMLManager instead of saving it in a member variable first. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-17Core: remove count_dives_with_*() functionsGravatar Berthold Stoeger
The simplified filter-widget doesn't present lists of existing values with counts. Thus, a whole slew of count_dives_with_*() functions can be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-17Show average max depth in statistics tabGravatar Robert C. Helling
This makes more sense than average depth. The min entry is also about max depth for a dive. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2018-12-17Show average max depth in yearly statisticsGravatar Robert C. Helling
this was requested in #1854 and I think this suggestion makes sense Fixes #1854 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2018-12-14Update libdivecomputerGravatar Dirk Hohndel
- Enable BLE support for the Oceanic Pro Plus X - Add support for the Aqualung i300C - Fix the Pro Plus X gas mixes - Add a workaround for invalid ringbuffer begin pointers Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-12-14Hide unimplemented components from searchGravatar Tomaz Canabrava
Those fields are not ready yet, hide them. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Filter the dataGravatar Tomaz Canabrava
Wire up the needed code to filter the data in the myInvalidate call. The data comes from the Struct FilterData and if any of the test conditions on the filter function are false, the filter will assume that the specific dive shouldn't be shown Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Drop old filter codeGravatar Tomaz Canabrava
Drop tons of now-unused-code. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Handle Show / Close of the Filter BoxGravatar Tomaz Canabrava
when you close, remove filter. when you open again, restore. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Struct FilterDataGravatar Tomaz Canabrava
The idea is that this struct will have all the needed data that will be passed to the filter model. Everything that happens on the filterwidget will fill out this struct, then forward it to the model, that in turn will activate the filter hiding some of the dives that matches on your divelist. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Replace the old filter widget for a new oneGravatar Tomaz Canabrava
Wires the code to display the filter widget on the mainwindow. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Start the FilterDive stateGravatar Tomaz Canabrava
Register the new FilterDive widget on the mainwindow so we can trigger a shortcut to display it. The shortcut currently doesn't exists. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Start to implement a simplified version of the filter widgetGravatar Tomaz Canabrava
The idea of this new widget is to be able to filter more types of data, while keeping it simple and extending the feature set to something that was impossible with the old implementation. While the old implementation had 4 panels that you could use to filter specific tags / people / types of dives the new one will let you filter by visibility, temperature people, name, equipment, etc, in a more natural way than the old one. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2018-12-14Cleanup: detangle unregister_dive() and delete_single_dive()Gravatar Berthold Stoeger
These two functions were called in different contexts: - unregister_dive(): from the undo-commands to remove the dive from the global dive table, but not delete it. The dive was already removed from its trip. - delete_single_dive(): from non-undo code. Most of it not in use and removed in a sibling-commit. Here, the dive is supposed to be removed from its trip and a new selection is calculated. delete_single_dive() calls unregister_dive(), which removes the dive from its trip. Move remove_dive_from_trip() from the former to the latter and make both functions independent. Instead of deleting the dive explicitly in delete_single_dive(), call the delete_dive_from_table() function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-14Core: don't remove dive from trip in add_dive_to_trip()Gravatar Berthold Stoeger
All callers of add_dive_to_trip() work on freshly generated dives, with one exception, that was redundant anyway. Therefore it is not necessary to remove the dive from a potential previous trip. Move the responsibility of removing the dive from a trip to the caller, respectively remove the redundant call. Add a warning message in the case that trip is set. Background: On import (either download or file-import) we might not want to add trips to the global trip-list. For example to enable undo of import but more generally to detangle that data flow. Thus, add_dive_to_trip() should not mingle with the global trip-list, which it has to do if a trip is deleted because the old dive was removed. Analysis of the add_dive_to_trip() callers: 1) core/dive.c pick_trip(): called on freshly generated merged dive. finish_split(): called on two freshly generated split dives. 2) core/divelist.c create_and_hookup_trip_from_dive(): called on freshly downloaded dive in dive_cb(). called on freshly downloaded dive in record_uemis_dive(). autogroup_dives(): called on dive from get_dives_to_autogroup(), which only finds dives that are outside of trips. combine_trips(): unused - removed in sibling commit. try_to_merge_into(): this call was actually erroneous - dive was already added to trip in try_to_merge(). Remove call. 3) core/libdivecomputer.c dive_cb(): called on freshly downloaded dive. 4) core/uemis_downloader.c record_uemis_dive(): called on freshly downloaded dive. 5) core/load_git.c create_new_dive(): called on freshly allocated dive. 6) core/parse.c dive_end(): called on freshly parsed dive. 7) desktop-widgets/command_divelist.cpp DiveListBase::addDive(): called on dive which is newly added to core. moveDiveToTrip(): called on dive that was removed from trip a few lines above. 8) mobile-widgets/qmlmanager.cpp QMLManager::undoDelete(): called on dive where divetrip was reset in the previous line. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-12-14Cleanup: remove split_dive_*() functionsGravatar Berthold Stoeger
In 302f6adb79681da3fe53336f1e4c7525f46fd47d dive-splitting was made undo-able. To this goal, the dive-splitting functions were split in two types: Those that operate directly on the divelist and those that only allocate the dives. The former are not in use anymore, therefore remove them. Since only the latter remain, remove the "_dont_insert" appendix of the name. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>