summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2019-11-26build-system: add CMake SUBSURFACE_MOBILE_DESKTOP as new build typeGravatar jan Iversen
Add -DSUBSURFACE_MOBILE_DESKTOP to CMake, allowing the C++ part to be different when compiling for a device or for the desktop. Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-11-22Mobile: make it clear that 'all BT devices' setting is temporaryGravatar Dirk Hohndel
Making this persistant creates a very unpleasant user experience. And if a dive computer needs this setting, we really want people to report this to us so we can fix it. Fixes: #2358 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-22Core: don't prevent some OSTC models from being recognizedGravatar Dirk Hohndel
The code seemed to do something really reasonable by picking one of the supported OSTC versions - except that the one it picked didn't support BT/BLE and therefore our logic of recognizing dive computers on iOS failed. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-22GitHub Actions: don't add macOS artifacts to releaseGravatar Dirk Hohndel
We now get a working macOS DMG for each CICD release via the webhook - and the GitHub built .app.zip only worked on the latest macOS and was near-unusable there. We still make it available as an artifact of that macIS GitHub action in case there is some value, but we no longer push it into the GitHub release artifacts. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-20Translations: try to be smarter when picking the right localeGravatar Dirk Hohndel
I was reminded to do this when a user in French speaking Switzerland reasonably suggested that fr_FR would be a much better fallback than en_US in their situation. Fixes: #2388 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-20Android: update README to mention build containerGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-20macOS: with Qt 5.13 we need QtDBus againGravatar Dirk Hohndel
So don't remove it from the build before signing. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-20macOS: update make package script for Grantlee 5.1Gravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-19Cleanup: remove MainWindow::recreateDiveList() functionGravatar Berthold Stoeger
The function had only one line and had only one caller. We might just as well fold that line into the caller. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Desktop: don't reload dive list model after clearing the modelGravatar Berthold Stoeger
By clearing the model, its contents are removed. There is no point in reloading the model. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Dive list: clear internal data when clearing modelGravatar Berthold Stoeger
The DiveListModelBase::clear() implementation was flawed: It cleared the data in the core, but left the data in the model untouched. The code was relying on the fact that the caller would reset the model manually. Not a good idea. Therefore, clear the internal data to keep the model consistent at all times. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Dive list: update selection after clearing modelGravatar Berthold Stoeger
When clearing the model the selection is cleared. Send the according signal. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Cleanup: remove ProfileWidget2::refreshDisplay signalGravatar Berthold Stoeger
It was not used anywhere. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: don't reload filter after reloading dive listGravatar Berthold Stoeger
The hidden_by_filter items are set on reload of the dive list. No point in reloading the filter again. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: move recalculation of filter from FilterModel to TripModelGravatar Berthold Stoeger
The way this was accessed via Qt's model semantics was horrible. This gives arguably more readable code, since we don't have to shoehorn things through QVariants. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: move num_shown logic from model to coreGravatar Berthold Stoeger
Since the number of shown dives is stored in the core, let's also keep it updated there. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: split out filter from modelGravatar Berthold Stoeger
Split out the actual filtering from the MultiFilterSortModel. Create a DiveFilter class that does the actual filtering. Currently, mobile and desktop have their own version of this class, though ultimately we may want to merge them. The idea here is that the trip-model and undo-commands have direct access to the filter-function and thus can take care of keeping track of the number of shown dives, etc. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: move calculation of shown dives to undo commandGravatar Berthold Stoeger
The filter-model was catching dives-added / dives-deleted signals from the models to keep track of the number of shown dives. To simplify the data flow, do this directly in the undo-command. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Filter: move number of shown dives to coreGravatar Berthold Stoeger
We mark hidden/shown dives in the core but store the number of shown dives in the MultiFilterSortModel. Move this datum to the core for improved locality. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Cleanup: remove MultiFilterSortModel::filterChanged()Gravatar Berthold Stoeger
Nobody was calling this function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19Cleanup: remove MultiFilterSortModel::clearFilterGravatar Berthold Stoeger
Nobody was using that function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-19CHANGELOG.md updateGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-18GitHub actions: fix macOS artifact uploadGravatar Dirk Hohndel
Previously this created a bogus Subsurface.app.zip.zip file and then failed to upload it to the release. The upload / download pair of default actions is happier with just the folder. And then the creation of the zip file needs the '-r' switch. Oops. Finally, the pull-request specific uploads as build artifact are completely redundant since we already do this to move the data from the macOS build to the container that runs our own publish action in the first place. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2019-11-16Check if all required bytes were readGravatar Robert C. Helling
Fixes CID 350077 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Initialize modified memberGravatar Robert C. Helling
Fixes CID 350111 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Don't acces null dive computerGravatar Robert C. Helling
Fixes CID 350111 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Use the actual error numberGravatar Robert C. Helling
According to the man page, fopen and fclose return the error number in the global variable errno. Fixes CID 350115 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Initialize cylider field properlyGravatar Robert C. Helling
This fixes another thing Coverty found. I am not 100% sure I understand the semantics of cylinder_t.manually_added but looking at other instance I guess true is the correct value for a cylinder from a csv file for a Poseidon rebreather. Fixes CID 350734 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Don't access uninitialized deco_structureGravatar Robert C. Helling
Coverty found that in the export functions, we initialize the planner deco state with NULL and then possibly later access its content. This makes sure, we don't do that. Let's see if this makes Coverty happy or I missed somehting else. Fixes CID 350736 Fixes CID 350735 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2019-11-16Remove setStyleSheet for "Dive mode" boxGravatar Stefan Fuchs
Remove modification of style sheet for "Dive mode" box in info tab. This fixes a broken UI layout under Windows. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2019-11-16Fixes in tab widget UI layoutGravatar Stefan Fuchs
Three minor changes in tab widget UI layout and txt: - Remove leading space in string "Gas name" - Remove duplicate <item> entry - Correct "leftMargin" and "rightMargin" to 0 everywhere Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2019-11-16Cleanup: use DiveTripModelBase::clear() to reset the logGravatar Berthold Stoeger
Introduce a DiveTripModelBase::clear() function that cleanly clears all dive data inside a beginResetModel()/endResetModel() pair. Thus, the UI will be cleanly reset and we can remove explicit calls to - graphics->setEmptyState() - mainTab->clearTabs() - mainTab->clearTabs() - diveList->reload() from MainWindow::closeCurrentFile(). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-16Profile: clear tooltip's plotInfo in ProfileWidget2::setEmptyStateGravatar Berthold Stoeger
The tooltip's plotInfo was not cleared when clearing the profile. With the new cylinder code, this lead to crashes, because the displayed_dive's cylinder array is now cleared. The old code would happily read stale data from the fixed-size cylinders array. Clear the plotInfo explicitly. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-16Cleanup: move clearing of current_dive into clear_dive_file_data()Gravatar Berthold Stoeger
It makes no sense to have a non-NULL current_dive once all dives have been deleted. Therefore, clear current_dive implicitly in clear_dive_file_data() and don't depend on the caller performing this. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-16Cleanup: fold cleanUpEmpty() into closeCurrentFile()Gravatar Berthold Stoeger
The latter was the only caller of the former and there seems to be no clear separation between the two. By making a single function out of this the code is easier to follow and duplicate code can be more easily detected. Matter of fact, the profile was cleared twice. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-16Partially revert 3025e0630de2b9ced3d0aadd1513cb0e1c93b159Gravatar Berthold Stoeger
This commit did the "right" thing by implementing Qt mode semantics as intended, but for unknown reasons the profile is not properly cleared on close-file anymore. This code is so convoluted that there is not point in fighting it at the moment. Revert to remove-rows instead of reset-model. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-16Core: set gas use to zero if no values are givenGravatar Berthold Stoeger
In get_gas_used() the use was left uninitialized if there are neither user- nor computer-supplied values. This gives random SACs in the UI. Initialize to 0. Fixes #2376. Reported-by: Stefan Fuchs <sfuchs@gmx.de> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-15Dive list: signal correct trip in DiveTripModelTree::topLevelChangedGravatar Berthold Stoeger
DiveTripModelTree::topLevelChanged() has pretty complex code, as it has to handle the fact that when adding/removing a dive from a trip, the trip can change its position. The code did not account for the fact that when moving an object back in the top level list, one has to subtract one from the new index, because the object was removed somewhere in the front of the list. To make matters worse, when an entry stayed where it was, this was realized by moving the entry right behind itself, which of course means that it stays where it is. But this meant that in the by far most common case (no moving) the wrong entry was updated. Fix this by subtracting 1 from the new index when moving an entry to the back. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14Refactoring: move undo commands to top levelGravatar Berthold Stoeger
In the future we might want to use undo-commands for mobile as well (even if not implementing undo). Therefore, move the undo-command source from desktop-widgets to their own commands top-level folder. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14/: Corrected wrong Qt dependency from KirigamiGravatar jan Iversen
Kirigami 5.62 uses QtQuick.Controls 2.5, which were introduced in Qt 5.12 (see https://doc.qt.io/qt-5/qtquickcontrols-index.html) update CMakeList.txt to demand min. 5.12 when building SUBSURFACE-MOBILE update INSTALL text Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-11-14Undo: don't delete dive sites when pasting divesGravatar Berthold Stoeger
We used to only keep sites with dives around. This changed when implementing the dive site tab. The paste-dive code was written using the old semantics and thus, when overwriting dive sites, it deleted unused dive sites. To make things consistent, remove that code. It would be very weird when dive sites are deleted by pasting, but not by setting a different dive site manually. Bonus: no more dependencies on desktop-includes in the undo code. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14Undo: remove unrelated include in command_divelist.cppGravatar Berthold Stoeger
This file included "desktop-widgets/divelistview.h" without needing it. If we want to use the undo commands on mobile we shouldn't include desktop headers. Therefore, remove the include. This has the unintended side-effect that the Qt debug headers are not included indirectly anymore. Thus, change a few "qWarning() << ..." instances to "qWarning(...)". Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14Undo: remove superfluous dive replot in DiveComputerBase::redoit()Gravatar Berthold Stoeger
Removing / moving a dive computer needs a profile replot. This was done explicitly in DiveComputerBase::redoit(). This is unnecessary, as a profile replot is performed implicitly by the setSelection() call. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14Undo: remove superfluous refreshDisplay() in AddDive::(un)doit()Gravatar Berthold Stoeger
Dives used to be added from a special dive-edit screen. Thus, the undo command had to close that screen. This is no longer the case. Remove the calls. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-14Cleanup: don't std::move() temporariesGravatar Berthold Stoeger
clang correctly warns about std::move()ing objects returned from functions. This is a pessimization, because the compiler can't copy elide the object. Remove. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-13/: update INSTALL to reflect correct Qt version.Gravatar jan Iversen
commit 5ce4b3d5e set minimum Qt level to 5.11 for Subsurface-mobile commit 3df2be5c1 set minimum Qt level to 5.9.1 for Subsurface update INSTALL to reflect to new Qt versions Signed-off-by: Jan Iversen <jan@casacondor.com>
2019-11-12Profile: fix pressure scaleGravatar Berthold Stoeger
The determination of minimum pressure in calculate_max_limits_new() in profile.c was wrong for a long time. Since the loop went over all cylinders (even unused ones), the minimum pressure was always zero. Since we loop only over used cylinders, the minimum pressure was initialized to the lowest starting pressure of any cylinder. If there were no events with pressure change, the minimum pressure stayed unchanged, resulting in a funky scaling. Instead, let's initialize the minimum pressure to the lowest ending pressure. Reported-by: Willem Ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-11Show altitude corresponding to surface pressureGravatar willemferguson
In the information tab, presenting atmospheric pressure is a bit unintuitive because the diver cannot easily relate that to altitude. For the Atm. Pressure widget in the Information tab this code does: If the atmospheric pressure for a dive exists and the user selects the 'm' or 'ft' option from the combobox, then the estimated altitude is shown in the text box. Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za>
2019-11-11Cleanup: introduce DiveTripModelBase::IS_TRIP_ROLEGravatar Berthold Stoeger
To test whether an entry is a trip, we passed a pointer to the trip through a QVariant and tested that for null-ity. Passing pointers through QVariants has given us myriads of problems in QML, therefore introduce a bool IS_TRIP_ROLE Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-11-11Cleanup: fix typos in commentGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>