aboutsummaryrefslogtreecommitdiffstats
path: root/core
AgeCommit message (Collapse)Author
2018-07-25core: activate qPrefDiveComputerGravatar jan Iversen
remove DiveComputer from SettingsObjectWrapper and reference qPrefDiveComputer update files using SettingsObjectWrapper/DiveComputer to use qPrefDiveComputer this activated qPrefDiveComputer and removed the similar class from SettingsObjectWrapper. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: update qPrefDisplay to new consensusGravatar jan Iversen
add inline to load/sync remove const from QString getters Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: update qPrefCloudStorage to new consensusGravatar jan Iversen
make load/sync inline remove const from QString getters Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: make load/sync inline in qPrefGravatar jan Iversen
Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: make load/sync inline in qPrefAnimationsGravatar jan Iversen
Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: create qPrefDiveComputer from SettingsObjectWrapperGravatar jan Iversen
Update set/get functions to follow common name scheme: - get function have same name as in struct diveComputer - set function have set_<name> - signal function have <name>_changed one class one .h/.cpp is the C++ idiom. Having load/sync of each variable in 1 functions (in contrast to the distributed way SettingsObjectWrapper handles it) secures the same storage name is used. Having the set/get/load/sync functions grouped together makes it easier to get an overview. REMARK: this commit only defines the class, it is not active in production Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: add qPrefAnimations to SettingsObjectWrapper/qPref loadGravatar jan Iversen
correct missng qPrefAnimations in global load functions Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: expand qPref macros to handle sub structureGravatar jan Iversen
Expand SET_, DISK_ and HANDLE_ macros with field for substructure Structure prefs contains e.g. prefs.dive_computer.vendor an extra field are added to the macros to allow this. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: remove LOADSYNC* macrosGravatar jan Iversen
expend LOADSYNC* into DISK_* macros remove LOADSYNC* from qPrefPrivate.h update qPrefDisplay to not use LOADSYNC* Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: make qPrefAnimations/CloudStorage getters static and inlineGravatar jan Iversen
Add static and inline to getter in all qPref header files Remove call to GET_PREFERENCE_* in qPrefDisplay.cpp Remove GET_PREFERENCE_* from qPrefPrivate.h static inline is slightly faster than a function call, but it saves a lot of coding lines (no lines in qPref*.cpp). Getters are a direct reference to struct preferences, so they will normally only be used from QML. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: make qPrefDisplay getters static and inlineGravatar jan Iversen
Add static and inline to getter in all qPref header files Remove call to GET_PREFERENCE_* in qPrefDisplay.cpp static inline is slightly faster than a function call, but it saves a lot of coding lines (no lines in qPref*.cpp). Getters are a direct reference to struct preferences, so they will normally only be used from QML. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: isolate qPrefPrivate to qPref* classesGravatar jan Iversen
Make functions in qPrefPrivate private and add qPref* as friends Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-25core: qPref replace COPY_TXT with copy_txt in qPrefPrivateGravatar jan Iversen
Add copy_txt function to qPrefPrivate class Remove macro COPY_TXT from qPrefPrivate.h Replace use of COPY_TXT with copy_txt in qPref classes copy_txt is only once, COPY_TXT was expanded approx. 160 times, so this commit saves space (and removes a macro). Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-23Dive video: paint duration-bar above thumbnail in profile plotGravatar Berthold Stoeger
Paint a rectangle on top of thumbnails indicating the run-time of the video. Use the z=100.0-101.0 range for painting the thumbnails, whereby the z-value increases uniformly from first to last thumbnail (sorted by timestamp). The duration-bars are placed at z-values midway between those of the thumbnails. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-23Dive media: prepare for video-thumbnailsGravatar Berthold Stoeger
Video thumbnails are more complex than simple picture thumbnails. We store a duration and might want to store multiple images. Therefore, refactor the thumbnailing in imagedownloader.cpp. Move the thumbnail-writing down in the call chain to where the thumbnails are created, since we have more information there (i.e. whether we could parse the file but not extract an image, etc.). Split the write-to-cache function into three versions: - pictures - videos - unknown Define the video-thumbnail on-disk format as - uint32 MEDIATYPE_VIDEO - uint32 duration of video in seconds - uint32 number of pictures for each picture: - uint32 offset in msec from begining of video - QImage frame Currently, we write 0 pictures. This will be filled in subsequent commits. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-21core: activate qPrefCloudStorageGravatar jan Iversen
remove CloudStorage from SettingsObjectWrapper and reference qPrefCloudStorage update files using SettingsObjectWrapper/CloudStorage to use qPrefCloudStorage this activated qPrefCloudStorage and removed the similar class from SettingsObjectWrapper. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-21core: create qPrefCloudStorage from SettingsObjectWrapperGravatar jan Iversen
Update set/get functions to follow common name scheme: - get function have same name as in struct preferences - set function have set_<name> (from struct preferences>) - signal function have <name>_changed (from struct preferences>) one class one .h/.cpp is the C++ idiom. Having load/sync of each variable in 1 functions (in contrast to the distributed way SettingsObjectWrapper handles it) secures the same storage name is used. Having the set/get/load/sync functions grouped together makes it easier to get an overview. REMARK: this commit only defines the class, it is not active in production Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-21Uninline functions in dive.hGravatar Berthold Stoeger
There were numerous inlined functions in dive.h. For many of them inlining is dubious. Let's uninline most of them, with the exception of trivial accessors and interpolate(). On current master, this gave a size reduction of 5 pages: -rwxrwxr-x 1 bs bs 5863656 Jul 18 20:57 subsurface-inline -rwxrwxr-x 1 bs bs 5843176 Jul 18 20:48 subsurface-noinline ----------------------------------------------------------- 20480 Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-19Undo: remember deleted trip in UndoRemoveDivesFromTrip::undo()Gravatar Berthold Stoeger
If the last dive of a trip is removed, the trip is deleted. On redo the dive is added to a non existing trip, leading to a segfault. Therefore, keep a copy of the trip to reinstate it on redo. Note: this cannot work for a sequence of multiple commands. One would have to rewrite the whole undo-history. Nevertheless, let's do this as a stop-gap measure. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-18core: remove QSettings in qPref* and use a shared variableGravatar jan Iversen
Add qPrefPrivate class which contains one QSettings variable, delete QSettings from qPref* class definitions this secures there are only instance of QSettings (QSettings needs to be in a QObject class to work) Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-18core: remove include QSettings from QPrefGravatar jan Iversen
remove QSettings header file from qPref.h (which is included in many files) to isolate the use of QSettings in the total system. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-18Cleanup: rename trip->index to trip->savedGravatar Berthold Stoeger
The index-field was misused by the IO routines to mark which dives had been saved. Somewhat questionable, but let's at least name the field accordingly. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-18Cleanup: removed unused functions in divelist.hGravatar Berthold Stoeger
find_trip_by_idx() and find_matching_trip() weren't used anywhere. The trip index actually is only misused as a "trip saved"-flag. trip_has_selected_dives() only existed as a comment. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-18Cleanups to core/color.[c|hpp]Gravatar Berthold Stoeger
A number of small cleanups to the color-table: 1) Make the profile_color map of static linkage - it is not used outside of this file. 2) Remove the third color, which originally was planned for printing. It was not accessed anywhere. 3) Replace QVector<QColor> by std::array<QColor, 2>. Using a reference-counted, copy-on-write, dynamic container for static data seems like overkill. std::array<QColor, 2> has exactly the same run-time impact as QColor[2], but allows for assignment. 4) Use brace-initialization and remove the unneeded COLOR macro. 5) Remove the fill_profile_color function. Simply use static initialization. 6) Move #includes from .h to .cpp file. 7) Remove text_render_options(_t), which were not used anywhere. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-17Cleanup: simplify dive_getUniqID()Gravatar Berthold Stoeger
dive_getUniqID() is used to create unique dive ids, which are stable during application lifetime. It was passed a dive, checked that the id was not set (if it was that it is know to the application) and set a new id (in contradiction to its name!) if it hadn't any. There were three callers: alloc_dive(): called the function on a zeroed dive struct. fixup_dive(): called the function only if the dive had a 0 id. MainWindow::setupForAddAndPlan(): called the function on a zeroed dive struct. Thus, in all three callers the id is guaranteed to be zero and the whole keeping-track-of-ids logic is moot. Remove the logic, don't pass a dive struct to dive_getUniqID() and move the function to the C-backend. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-15For media file open dialog add different file filtersGravatar Stefan Fuchs
On top of the file filter for all media files add a file filter for images only, one for videos only and one for all files. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-15core: solve copy/paste error in qPref_privateGravatar jan Iversen
DISK_LOADSYNC_INT used double correct to int DISK_LOADSYNC_INT used double correct to int Signed-off-by: Jan Iversen <jani@apache.org>Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-15core: qPrefDisplay correct font setting.Gravatar jan Iversen
SettingsObjectWrapper contained some delicate font handling mixing font and font_size, breaking that into 2 parts broke font handling on some platforms Copy font + font_size handling 1-1 from SettingsObjectWrapper Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-14Merge branch 'metadata' of https://github.com/bstoeger/subsurfaceGravatar Dirk Hohndel
2018-07-14Merge branch 'qPrefAnimations' of https://github.com/janiversen/subsurfaceGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-14Merge branch 'qPrefDisplay' of https://github.com/janiversen/subsurfaceGravatar Dirk Hohndel
2018-07-14Metadata: Parse ASFs (=WMVs)Gravatar Berthold Stoeger
The simplest video-formats to parse so far. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-14Metadata: Parse AVIsGravatar Berthold Stoeger
Whereas extraction of the dive-duration is trivial, AVIs don't seem to have a standardized way of saving the creation time. This commit implements support for two versions randomly found on the internet. Additional version will follow if need arises. AVI seems not to be a particular popular format for either vacation or professional videographers. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-14Metadata: extract duration fom QuickTime/MP4-style containersGravatar Berthold Stoeger
We want the duration of videos for two reasons: - To display the duration of the video in the profile plot. - To be able to determine which dive a video is closer to if the start is not during a dive. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-13Dive pictures: don't update all images on drag&drop to profileGravatar Berthold Stoeger
Gracefully handle drag & drop to the profile, which changes the offset of the pictures. To do this, keep the pictures in the DivePictureModel and the ProfileWidget2 sorted by offset and re-arrange if needed to keep the list sorted. This needs some code reshuffling. Introduce a helper-function that moves ranges in arrays. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13Disable the WindowContextHelpButtonHint for Qt >=5.10Gravatar Stefan Fuchs
Disables the WindowContextHelpButtonHint by default on Qt::Sheet and Qt::Dialog widgets. This hides the ? button on Windows, which only makes sense if you use QWhatsThis functionality. This value has been added in Qt 5.10. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-13In planner notes don't show dive mode for first data pointGravatar Stefan Fuchs
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-13Add three missing translations for divemode_text_ui in plannernotes.cGravatar Stefan Fuchs
Added three missing translations which were forgotten here: fcf6b819d9cf337714fb542497cffc6effafe2ca Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-13Make sure our libdivecomputer custom IO interfaces have sleep functionsGravatar Linus Torvalds
When I switched over from our own custom IO implementation to the new upstream custom IO model in libdivecomputer, I completely missed the fact that the libdivecomputer custom IO model also does a custom _sleep_ function. I'm not entirely sure what the point was, and it broke things even in libdivecopmputer itself when some of the new sleep functions were broken. Anyway, we didn't export any sleep functions at all for the bluetooth, BLE and FTDI cases, the the libdivecomputer code didn't fall back to any sane default sleep implementation either, so the end result was no sleeping at all. Which didn't matter for most divecomputers. But it seems like at least some OSTC dive computers did care, at least in certain situations, and both Miika and Anton had trouble downloading with their OSTC Sport dive computers. Using the serial line protocol and the legacy /dev/rfcomm model worked fine, because then it used the sleeping functions in the POSIX serial code inside libdivecomputer. This just adds trivial sleeping functions for the affected download protocols. Maybe I should have just made libdivecomputer have a sane default instead, but this wasn't hard either (the hard part was trying to figure out why the downloads worked for some people and not for others). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-07-12core: remove Animations from SettingsObjectWrapper and activate qPrefAnimationsGravatar jan Iversen
remove Animations from SettingsObjectWrapper and reference qPrefAnimations update files using SettingsObjectWrapper/Animations to user qPrefAnimations this activated qPrefAnimations Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12core: copy Animations from SettingsObjectWrapper to qPref as its own classGravatar jan Iversen
Update set/get functions to follow common name scheme: - get function have same name as in struct preferences - set function have set_<name in struct preferences> - signal function have <name in struct preferences>_changed one class one .h/.cpp is the C++ idiom. Having load/sync of each variable in 1 functions (in contrast to the distributed way SettingsObjectWrapper handles it) secures the same storage name is used. Having the set/get/load/sync functions grouped together makes it easier to get an overview. REMARK: this commit only defines the class, it is not active in production Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12core: move load of display variables to qPrefDisplay from SettingsObjectWrapperGravatar jan Iversen
ensure SettingsObjectWrapper load() loads all display variables. Copy font setting code from SettingsObjectWrapper to qPrefDisplay Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12core: sync display variables from struct preferences when ssrf terminatesGravatar jan Iversen
Add qPrefDisplay sync to sync in SettingsObjectWrapper. If a program part change display variables in struct preferences, they would not be saved on disk. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12core: activate qPrefDisplay in SettingsObjectWrapperGravatar jan Iversen
add the prepared class qPrefDisplay to SettingsObjectWrapper and thereby making it active. As a consequence of the uniform naming standard desktop-widgets/preferences_defaults.cpp and tests/testpreferences.cpp have been updated. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12ssrf: add shared helper fileGravatar jan Iversen
add subsurface-helper.cpp to share functions between mobile and desktop move mobile qml registrations to a shared function (avoiding differences in registrations) Target is to replace current subsurface-desktop-main + subsurface-desktop-helper and subsurface-mobile-main + subsurface-mobile-helper with subsurface-*-main + subsurface-helper Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12Don't show decimals on pressuresGravatar Jocke
As per discussion in #1460 there is no point in showing decimal values for pressures in the equipment tab on desktop or in the dive edit view on mobile. Signed-off-by: Joakim Bygdell <j.bygdell@gmail.com>
2018-07-12Dive media: add ".mov" to list of known video extensionsGravatar Berthold Stoeger
This was an oversight in b28dba6087f0433af8ece176b64fcac54ca370a4. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-11core: remove clang warning in divesite.cGravatar jan Iversen
Add () in complex condition to avoid clang warning. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-10core: add version variables to qPref and make it qml loadableGravatar jan Iversen
add canonical_version and mobile_version to qPref Having a property in qPref, allows the use in qml, and prepare the interface for qml testing. Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-10core: make qPref::cloud_status the only version of the enumGravatar jan Iversen
add enum to qPref and remove elsewhere update source core to reference qPref. the enum cannot be in pref.h because it is to be used in qml and Q_ENUM need the enum to be defined as part of the class Signed-off-by: Jan Iversen <jani@apache.org>