aboutsummaryrefslogtreecommitdiffstats
path: root/core
AgeCommit message (Collapse)Author
2020-12-17core: correct AL* tankinfo sizes.Gravatar Berthold Stoeger
Recently (d16a9f118a) the tankinfo table was made dynamic, which means that the default tankinfos are added programatically. Thereby, the wrong function was used for AL* type of cylinders: metric instead of imperial. Fix those. Reported-by: Michael Andreen <harv@ruin.nu> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-13prefs: add option to display only actually used tanksGravatar Berthold Stoeger
A user complained about the default cylinders list. Provide a preferences option to turn this off. When changing the preferences, the tank-info model will be completely rebuilt. Currently, this is a bit crude as this will be done for any preferences change. Suggested-by: Adolph Weidanz <weidanz.adolph@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-13core: remove the "no-name" tank infoGravatar Berthold Stoeger
There was a tank info with an empty name. According to a comment, this is needed for the "no cylinder" case. However, we now support empty cylinder tables, so this is not needed anymore. Therefore, remove it. Make sure that the user can still enter the empty name, just in case. But don't save the size and pressure in that case. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-13core: free tank info table on exitGravatar Berthold Stoeger
This is obviously a pure code-hygiene thing. But with the new dynamic tank info table, this becomes trivial, so let's do it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-13core: keep tank infos in a dynamic tableGravatar Berthold Stoeger
The list of known tank types were kept in a fixed size table. Instead, use a dynamic table with our horrendous table macros. This is more flexible and sensible. While doing this, clean up the TankInfoModel, which was leaking memory. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-12preferences: create global settingsChanged signalGravatar Berthold Stoeger
So far, the PreferencesDialog emitted a settingsChanged signal. This meant that models that listened to that signal had to conditionally compile out the code for mobile or the connection had to be made in MainWindow. Instead, introduce a global signal that does this and move the connects to the listeners to remove inter-dependencies. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-12-12Add surge etc to printing template variablesGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2020-12-03downloader: filter possible devices and add mounts, remember last choicesGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2020-12-03build-system/downloader: cli-downloader isn't part of the coreGravatar Dirk Hohndel
It's part of the main excutable / helper and needs to be linked before all of our support libraries. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-03downloader: turn off bluetooth mode for nowGravatar Robert C. Helling
Eventually, this should also be set from the command line. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2020-12-03downloader: small improvementsGravatar Robert C. Helling
Provide supported dive computer list on the command line and actually call the cli download. Still not functional. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2020-12-03downloader: first outline of downloading dives from a deviceGravatar Dirk Hohndel
This is of course not functional at all, but it gives a first idea of what we will need to do in this code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-03downloader: first step to get instructions via CLIGravatar Dirk Hohndel
This still doesn't do a thing, but at least it seems to get the information closer to where we want it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-12-03build-system: start adding a headless buildGravatar Dirk Hohndel
Right now this doesn't do a thing, but it gives us a nice target that has far fewer dependencies and should contain enough parts to download stuff from a divecomputer and then sync that with cloud storage. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-24cylindermodel: remove in_planner() useGravatar Berthold Stoeger
in_planner() is problematic, since it is uses desktop-only application state. Since the cylinder-model already has an appropriate inPlanner flag, use this instead. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-11-23android: find the translationsv4.9.10Gravatar Dirk Hohndel
As we switched to the qmake based build we now bundle the translations via the Qt resource system instead of explicitly as Android assets. This adjusts the code that opens the translations accordingly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-19core/picture: don't compile all on mobileGravatar Dirk Hohndel
We don't support adding pictures and videos on mobile, so let's not referernce the infrastrutcture that's needed for that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-17core: fix incorrect QString::asprintf/vasprintf usageGravatar Dirk Hohndel
These are static functions, they cannot be used as a method on an object to construct that object. commit aa5f2e7c73 ("cleanup: replace deprecated sprintf()/vsprintf() calls") introduced this bug in an ill-advised attempt to deal with a deprecation warning. This caused us to not print GPS coordinates in the UI. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-14undo: add a general dives-imported signalGravatar Berthold Stoeger
Add a general dives-imported signal for those cases where we want to fully rebuild models, notably, the completion models. The divesAdded signals are too fine, because they are sent per trip and we don't want to reload these models multiple times per import. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-11-13Gracefully handle infinite MND for oxygenGravatar Robert C. Helling
When breathing pure oxygen and considering it not narcotic, there is not maximal narcotic depth and the formula divides by zero. So better, handle this case separately. Fixes #3080 Signed-off-by: Robert C. Helling <helling@atdotde.de>
2020-11-12filter: avoid Windows crashGravatar Dirk Hohndel
The scope confusion between s (the for loop variable) and s (the function argument) caused a crash in the s.split() on Windows. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-04core: don't construct std::string from null in device.cppGravatar Berthold Stoeger
Recently the QStrings were replaced by std::strings in device.cpp so that they can be accessed from C-code. However, libstd being modelled after C, constructing a std::string from a NULL pointer leads to a crash. Fix one case where this was overlooked. Moreover, replace a null-pointer check by empty_string(), to treat NULL and "" equally. Reported-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-11-04revert preference settings for title colorGravatar Dirk Hohndel
Because of subsequent changes there is no clean way to just revert the changes introduced in commit 8b36cf1051 ("desktop: offer different colors for info tab titles"), so this manually removes the parts we don't need anymore. This also restores a tooltip value that was inadvertantly removed in that commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-03cleanup: random small whitespace cleanupGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-03desktop: offer different colors for info tab titlesGravatar willemferguson
Add a preference option to set the color of the text on the information tab to either MediumBlue, LightBlue or Black. The last two of these colors are meant to enable areadable font contrast on displays with dark mode. The choice is saved with the other preferences. [Dirk Hohndel: this isn't really about dark mode, so changed many of the types and variable names, changed the user visible texts, and addressed some whitespace issues] Signed-off-by: willemferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-11-01parser: don't crash when parsing <weight> tagsGravatar Berthold Stoeger
When encountering a <weight> tag, we would parse into the last weightsystem. However, we only create weightsystems when encountering <weightsystem> tag. Therefore, this code would either crash or overwrite the previous weightsystem. Instead, create a new weightsystem for each <weight> tag. Moreover, make sure that inside a <weightsystem> tag a weightsystem actually exists. This should be the case, but who knows...? Reported-by: Nihal Gabr <gabr.nihal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-31core: on import remove merged dives from trip/divesiteGravatar Berthold Stoeger
When dives were merged on import, they were not unregistered from their dive site and trip before being deleted. Thus, these tables had stale pointers, which would ultimate lead to crashes. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-27cleanup: refactor subsurfacesysinfo.cppGravatar Berthold Stoeger
This used to be a copy of QSysInfo. However, once the requirement was raised to Qt5.4, this was replaced by a subclass of the original QSysInfo - which made the whole file mostly obsolete. Just use QSysInfo directly where needed. Only for windows.c, which can't call directly into Qt, keep the isWin7Or8() helper function. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-26cleanup: move variable declaration closer to useGravatar Dirk Hohndel
This way we avoid an unused variable warning on mobile builds. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: remove unused function argumentGravatar Dirk Hohndel
Also, only compile the static function where it is used. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: SkipEmptyParts syntax has changedGravatar Dirk Hohndel
Sadly, the new enum has only been available since Qt 5.14, so this is a rather ugly replacement. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: replace deprecated sprintf()/vsprintf() callsGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: initialize all members of weightsystemGravatar Dirk Hohndel
The auto_filled member was recently added and not initialized in the UEMIS downloader. Fixes CID 362080 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: fix resource leakGravatar Dirk Hohndel
Fixes CID 362078 Fixes CID 362081 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-26cleanup: fix resource leakGravatar Dirk Hohndel
And address typo in comment. Fixes CID 362915 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2020-10-25filter: use 64-bit integer literal for generating bit fieldsGravatar Berthold Stoeger
For multiple-choice constraints we use a bit field of type uint64_t. This means we theoretically support up to 64 items. Currently use at most seven. Coverity complained (correctly) that we use the expression "1 << x" to generate the bitfields. However 1 is a 32-bit literal on most platforms, which makes this undefined behavior for x >= 32. Change the integer literal to 64-bit 1ULL. Moreover, when detecting items with an index >= 64, don't even attempt to set the according bit, since this is undefined behavior and the compiler is free to do as it pleases in such a case. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: remove pref.h include in dive.hGravatar Berthold Stoeger
If source files want to access preferences functions, they should include pref.h themselves. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move git-pref declarations into core/pref.hGravatar Berthold Stoeger
These seem to be an artifact. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move sort_dive_table declaration to divetable.hGravatar Berthold Stoeger
Apparently this was forgotten in a previous include-reshuffling. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move cylinder_use_text declaration to equipment.hGravatar Berthold Stoeger
This is unrelated to struct dive and also wasn't defined in dive.c Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: remove unused macros / declarations from dive.hGravatar Berthold Stoeger
Nobody was using these return-code macros and the functions do not exist since a long time. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move interpolate inline function to its own header fileGravatar Berthold Stoeger
This is not really related to struct dive, so let's move it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: remove system includes from dive.cGravatar Berthold Stoeger
Let the various source files include the system headers they need themselves. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move application flags to core/subsurfacehelper.hGravatar Berthold Stoeger
These flags are not dive-related, therefore move their declaration to the appropriate header file. Likewise, move their definition from parse-xml.c to subsurfacehelper.c Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move function declarations to divelist.hGravatar Berthold Stoeger
unregister_dive() and delete_single_dive are defined in divelist.c, as they take an "index" argument into the global divelist. Therefore, move their declarations to divelist.h. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: split out divecomputer functions from dive.cGravatar Berthold Stoeger
Since dive.c is so huge, split out divecomputer-related functions into divecomputer.[c|h], sample.[c|h] and extradata.[c|h]. This does not give huge compile time improvements, since struct dive contains a struct divecomputer and therefore dive.h has to include divecomputer.h. However, it make things distinctly more clear. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: remove get_times() functionsGravatar Berthold Stoeger
The function 1) was misnamed: it determined the time of the first selcted dive. 2) had only one caller. 3) would crash if there was no selected dive. Let's just fold the functionality into the caller. It's a one-liner anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move fill_pressures from dive.c to gas.cGravatar Berthold Stoeger
This function does not access a dive structure. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: break out event-related code into event.[c|h]Gravatar Berthold Stoeger
In an effort to reduce the size of dive.h and dive.c, break out the event related functions. Moreover event-names were handled by the profile-code, collect that also in the new source files. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2020-10-25cleanup: move mark_divelist_changed() to qmlmanager.cppGravatar Berthold Stoeger
Desktop does not use mark_divelist_changed() anymore - all is done via the undo machinery. Therefore move this function (and its counterpart unsaved_changes()) to qmlmanager.cpp. Ultimately, it probably should be removed from there as well, but currently I don't dare to touch all the cloud-logic! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>