aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
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-18tests: update CMakeLists.txt to incude qPref* in both placesGravatar jan Iversen
Files are listed in 2 places in CMakeLists.txt, update file to secure qPrefAnimations and qPrefDisplay are listed correctly Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-18Dive media: transport dive-id in drag'n'drop eventsGravatar Berthold Stoeger
9efb56e2d43161d952efb444d1f13d87bfdd45b5 introduced rather complex logic for picture drag'n'drop events onto the profile. Among other things, the code had to check whether the picture actually belongs to the displayed dive. This can be simplified by transporting the dive-id in the drag'n'drop event structure. The flow goes like this: DivePictureModel--(1)-->DivePictureWidget--(2)-->ProfileWidget For (1), we can use the Qt::UserRole role. This was used to transport the picture-offset, but this is not needed anymore since ProfileWidget was decoupled from DivePictureModel. For (2), we simply replace the "position" value, which was never used. Why would the receiver care which pixel was pressed in the media-tab? This commit also contains a minor cleanup in DivePictureWidget: QListView::mousePressEvent(event) was called in both branches of an if and can therefore be removed from the if. This is so trivial, that it doesn't warrant its own commit. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
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-18Bluetooth: don't call deviceDiscoveryError() on scan finishedGravatar Berthold Stoeger
In the remoteDeviceScanFinished slot, the old code called into the deviceDiscoveryError() in case the device discovery agent had the error flag set. This is not necessary, since the agent will send an error signal in such a case. For Qt's device discovery agent, the whole check-for-error is unnecessary, as the documentation states: "The signal is not going to be emitted if the device discovery finishes with an error." But for the homebrew WinBluetoothDeviceDiscoveryAgent, which derives from QThread, both an error() *and* a finished() signal will be sent. Therefore keep the test, but don't call into the slot twice. 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-16Dive media: fix stacking of thumbnails in profile plotGravatar Berthold Stoeger
9efb56e2d43161d952efb444d1f13d87bfdd45b5 added code to rearrange pictures on drag'n'drop. To keep the correct repainting order (i.e. later thumbnails are painted on top of previous thumbnails), the z-value was set accordingly. In principle a sound idea, but it did not work out, because on hoverEnter and hoverExit events, the z-values were modified, thus restoring the wrong drawing order. Instead, use the QGraphicsItem::packBefore() function. Experimentation showed that this only works if stacking is done from the back of the list. Silence an erroneous compiler warning by initializing a variable to 0.0. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-16Fix typo in INSTALL: add missing backspace at end of lineGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-07-15Update CHANGELOG.mdGravatar Stefan Fuchs
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
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-15UI change of "images"/"photo" to "media" or "media files"Gravatar Stefan Fuchs
This changes the above mentioned terms everywhere in the UI to reflect the fact that Subsurface now also supports video files on top of image 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-14Merge branch 'qml_test' of https://github.com/janiversen/subsurfaceGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-14Update CHANGELOG.mdGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
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-13Update CHANGELOG.mdGravatar Berthold Stoeger
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
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-13Dive pictures: update thumbnail positions on deletionGravatar Berthold Stoeger
If pictures were deleted, the remaining thumbails where staying at their positions. Only when switching between dives, the new positions were recalculated. Do the recalculation immediately. More precisely: the x-coordinate, which is determined by the timestamp, stays identical. Only the y-coordinate is recalculated such that overlapping of thumbnails is avoided. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13Prepare README and ReleaseNotes for 4.8.1v4.8.1Gravatar Dirk Hohndel
And clear out CHANGELOG. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13Update to latest libdcGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13Latest translationsGravatar Dirk Hohndel
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-13Update CHANGELOG.mdGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13Update CHANGELOG.mdGravatar Stefan Fuchs
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-13Fix dive mode drop-down in planner for re-planned diveGravatar Stefan Fuchs
Also populate the DiveTypeSelectionModel with values for re-planned dive. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2018-07-13Code cleanup in diveplanner.cppGravatar Stefan Fuchs
Move a variable declaration and added some initialization. Added missing spaces. 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-13Fix configure bluetooth ostc'sGravatar Anton Lundin
When we introduced the whole check for supported transports code, no one noticed that it broke configuring all ostc's over bluetooth. The configure code just used a placeholder model of OSTC 3 to get the right backend code. With the new supported transports model it errored out if you where trying to connect to a bluetooth enabled device, just because the original OSTC 3's wasn't bluetooth enabled. This switches the placeholder model over to a OSTC Plus which is both bluetooth, serial and ble capable, so the code works again. Signed-off-by: Anton Lundin <glance@acc.umu.se>
2018-07-13Derek: enable label and milestone managementGravatar Dirk Hohndel
Allow Derek to modify labels and milestones and add a few more of our contributors to the list of people allowed to give Derek commands. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-07-13[user-manual] Update SmartTrak import informationGravatar Salvador Cuñat
The information on how to build smtk2ssrf was pretty outdated. Update this information and point to subsurface downloads repo for windows installer and linux appimage. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-07-13map-widget: fix chronology of QML class registrationGravatar Lubomir I. Ivanov
The QML types needs to be registered before the MainWindow instance is created on the desktop version, otherwise the MapWidget instance will be created and it will fail with a missing QML namespace. In subsurface-helper.cpp, move register_qml_types() from run_ui() to init_ui(), as later in init_ui(), MainWindow is instantiated for the first time in the desktop version. Ref #1500 Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
2018-07-12tests: add qPrefAnimations qml testcasesGravatar jan Iversen
add test of qml C++ interface Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12tests: add qPrefAnimations testcasesGravatar jan Iversen
add test cases to secure struct preferences and qPrefAnimations work together remove animation tests from testpreferences Signed-off-by: Jan Iversen <jani@apache.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: qPrefDisplay update CHANGELOG.mdGravatar jan Iversen
added note about "show developer" menu being stored on disk Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12tests: make qprefdisplay test fileGravatar jan Iversen
Remove display tests from testpreferences and make a new file Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12core: qPrefDisplay update CHANGELOG.mdGravatar jan Iversen
added note about "show developer" menu being stored on disk Signed-off-by: Jan Iversen <jani@apache.org>
2018-07-12tests: add qPrefDisplay qml testcasesGravatar jan Iversen
add test of qml C++ interface Signed-off-by: Jan Iversen <jani@apache.org>