aboutsummaryrefslogtreecommitdiffstats
path: root/smtk-import
AgeCommit message (Collapse)Author
2018-09-06[smtk-import] Apply arrays to parsing tables functionsGravatar Salvador Cuñat
And add a fuction to parse tables that are not "relational", meaning tables which are directly refered from Dives table. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-09-06[smtk-import] Add a function to get the size of an arrayGravatar Salvador Cuñat
We can allocate fixed size arrays for smartrak tables as its size can be known in advance. Simply reading table->num_rows is too dangereous as smartrak tables have "holes" commonly. This is, they can look like: Idx | Txt 1 | blablabla 2 | blebleble 4 | blobloblo table->num_rows would give us 3, but we need to allocate 4 to get an array like: |0|blablabla |1|blebleble |2| |3|blobloblo as the idea is to use the table index to reference the array data. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-08-25smtk_import: remove QSettingsGravatar jan Iversen
Update smtk_import to use qPrefDisplay (amended variable) Signed-off-by: Jan Iversen <jani@apache.org>
2018-08-25smtk-import: Apply lists to main smartrak_import() functionGravatar Salvador Cuñat
Previously we built arrays for the tables each time we parsed a dive. Now we simply build the lists once, and use them in each dive parsing. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-08-25smtk-import: move from arrys to lists while parsing tablesGravatar Salvador Cuñat
In most cases we can not foresee the maximum number of data of a given type. It can be quite low or really big (a concerned diver can store thousands of different fishes in Fish table). Moving from arrays, where size has to be preset, to linked lists seems the more logical option. Here we set a (very limited) data structure, just an index and a text fields following the format of most SmartTrak tables. Some special table, like Buddy, needs a bit of processing before placing the data in the list. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-08-25smtk-import: Do not set build type in CMakeLists.txtGravatar Salvador Cuñat
We set the build type from the building script. Setting this in CMakeLists.txt make the script setting useless and always build Release type. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-08-23Cleanup: pass gasmix by valueGravatar Berthold Stoeger
In a previous commit, the get_gasmix_* functions were changed to return by value. For consistency, also pass gasmix by value. Note that on common 64-bit platforms struct gasmix is the size of a pointer [2 * 32 bit vs. 64 bit] and therefore uses the same space on the stack. On 32-bit platforms, the stack use is probably doubled, but in return a dereference is avoided. Supporting arbitrary gas-mixes (H2, Ar, ...) will be such an invasive change that going back to pointers is probably the least of our worries. This commit is a step in const-ifying input parameters (passing by value is the ultimate way of signaling that the input parameter will not be changed [unless there are references to said parameter]). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-06-09Cleanup: make lastUsedDir() functions static and non-slot, respectivelyGravatar Berthold Stoeger
The lastUsedDir() functions of MainWindow and Smrtk2ssrfcWindow don't use any member-objects and are only used in their respective translation units. Therefore, remove them from the class and made of static linkage. The lastUsedImageDir() function was declared as a slog, which makes no sense. Make it a normal static function (though one might argue why it is assiociated with the DiveListView class in the first place). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-05-14Core: introduce new subsurface-string headerGravatar Dirk Hohndel
First small step to shrinking dive.h. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2018-03-14Cleanup: consistently use qPrintable()Gravatar Berthold Stoeger
Replace constructs of the kind s.toUtf8().data(), s.toUtf8().constData(), s.toLocal8Bit().data(), s.toLocal8Bit.constData() or qUtf8Printable(s) by qPrintable(s). This is concise, consistent and - in principle - more performant than the .data() versions. Sadly, owing to a suboptimal implementation, qPrintable(s) currently is a pessimization compared to s.toUtf8().data(). A fix is scheduled for new Qt versions: https://codereview.qt-project.org/#/c/221331/ Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-02-24smtk-import: Add smtk2ssrf.desktop to sourcesGravatar Salvador Cuñat
Without this file AppImage won't build and travisbuild.sh will fail miserably. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-02-17Coding-style: remove superfluous parenthesesGravatar Berthold Stoeger
Mostly replace "return (expression);" by "return expression;" and one case of "function((parameter))" by "function(parameter)". Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2018-02-11smtk-import: Fix error management issueGravatar Salvador Cuñat
In commits eccd4b993 to 8f81a22e7 global error buffer and get_error_string() func, were moved to a call back function. This patch makes smtk2ssrf suport those changes and build again. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2018-01-11Introduce helper function empty_string()Gravatar Berthold Stoeger
There are ca. 50 constructs of the kind same_string(s, "") to test for empty or null strings. Replace them by the new helper function empty_string(). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2017-12-04Use QDir::exists() instead of QDir::setCurrent() to check for existenceGravatar Berthold Stoeger
Don't change into a directory just to see if it exists. Remove unnecessary braces of one of the changed if statements. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2017-11-30Use icons relative path.Gravatar Martin Měřinský
Icon paths are defined in one place only - application's embedded resources. Signed-off-by: Martin Měřinský <mermar@centrum.cz>
2017-11-29Revert "Use icons relative path."Gravatar Dirk Hohndel
This reverts commit b0d98f6e269be9560de1b9c140855c85fecf1dd1.
2017-11-29Use icons relative path.Gravatar Martin Měřinský
Icon paths are defined in one place only - application's embedded resources. Signed-off-by: Martin Měřinský <mermar@centrum.cz>
2017-11-25In strings start lower case in parenthesisGravatar Stefan Fuchs
Start with lower case letter inside a parenthesis. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-11-04Correct, cleanup, translate and unify file filtersGravatar Stefan Fuchs
Correct spelling and typos in file filters. Unify and translate file filter names. Don't pass a file filter to a directory open dialog - not needed. Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
2017-06-22smtk-import: partially revert and complete 6963b52dGravatar Salvador Cuñat
6963b52d introduced a cmake option, COMMANDLINE to enable building a pure command line version of smtk2ssrf importer, but then the #define COMMANDLINE=1 forces building CLI mode. This patch allows building GUI or CLI versions depending on selection of the COMMANDLINE option. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-06-11smtk-import portability: avoid using %m[] in sscanfGravatar Salvador Cuñat
As Lubomir pointed out in his patch for datatrak.c, the format option %m for sscanf doesn't work in mingw/windows. Fortunately it's unnecessary as dates are dropped and we just get times. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-06-11smtk-import: portability: rework non portable funcsGravatar Salvador Cuñat
For different reasons some used functions aren't portable or simply are not included in mingw. This includes index, rindex, strptime, and timegm. A workaround for this is needed, if we want to build for windows using mingw based mxe environment. This patch does: - drops index and rindex in favor of strchr and strrchr - substitute strptime with a sscanf parsing - emulate timegm with a private func smtk_timegm() - remove definitions needed by strptime Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-06-11smtk-import: portability: rename DATEGravatar Salvador Cuñat
DATE happens to be defined in wtypes.h. Redefining it may be a bad idea, so move it to _DATE Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-06-11smtk-import: portability: include windows.hGravatar Salvador Cuñat
Include windows.h if we are cross building to windows Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-06-11Let command line version not open an X windowGravatar Robert C. Helling
So we can run it on a headless system Signed-off-by: Robert C. Helling <helling@atdotde.de>
2017-06-11smtk-import: add cmake modules and .nsi skeletonGravatar Salvador Cuñat
Needed to crossbuild to windows. The cmake modules are just clones from those under subsurface/cmake/Modules, tweaked to build smtk-import for windows.
2017-06-11smtk-import: change CMakeLists.txtGravatar Salvador Cuñat
As SmartTrak importer is building separately from Subsurface, a full CMakeLists.txt file is necessary for the smtk-import directory. It includes cross building to windows capability.
2017-04-29Add SPDX header to smartrak importerGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-04-21smtk-import: Add curly braces in nested conditionalsGravatar Salvador Cuñat
Curly braces are necessary in nested conditionals or results may not be those expected. In this case, the "else" clause applied on second "if", instead of first one. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-04-21smtk-import reuse pre-existent code and fix leakGravatar Salvador Cuñat
Use update_event_name() for bookmarks merge and free temp string. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-04-21smtk-import: Abort bookmark parsing if table doesn't openGravatar Salvador Cuñat
Do not just report the failure but abort parsing or we will get a crash Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-04-04smtk-import Avoid duplicities in bookmarksGravatar Salvador Cuñat
SmartTrak's bookmarks work in the same fashion Subsurface's do. The user may set a bookmark while underwater or set it just on the divelog software. At this time we are parsing those set in the DC twice, as we get one from libdivecomputer and another from smarttrak's database. This patch just checks if we have a bookmark event downloaded by libdivecomputer which has the same time that the one parsed from the .slg file. If so, merge the names taking the one from smarttrak. Text from smarttrak is preferred because the user may have entered some interesting note there and libdivecomputer's name is just "bookmark". Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-04-04smtk-import Fix wreck data importGravatar Salvador Cuñat
It was assumed that every data field in a wreck table was filled or zeroed. This assumption is actually false, so this patch adds testing for the existence of strings before working with them. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import fix is_same_cylinder()Gravatar Salvador Cuñat
Add return value to the gasmix condition, and fix the rest of the conditions. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import - Change cylinder import logicGravatar Salvador Cuñat
Until now, we did the cylinder import based on its initial pressure (a tank without pressure is an unused tank). Based in this assumption, we just dropped those tanks whose initial press was 0, losing user introduced tank definitions and getting some duplicities due to one cylinder being numbered (e.g.) 2 by libdivecomputer and 3 by SmartTrak. The new workflow is: get every single tank reported by SmartTrak (giving preference to libdivecomputer parsed data), then clean the cylinder table reverse order, dropping tanks without description and init or end pressures, and checkig them against the previous cylinder to do a merge, if they look the same, and try to avoid duplicities. The new logic assumes a heavier workload for the benefit of lower data loss (e.g. a user may get his/her tanks descriptions despite he/she hasn't recorded their pressures because forgot the values or had an issue with the gas transmitter). Suggested-by: Alessandro Volpi <volpial@gmail.com> Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import - Remove tank number limitationGravatar Salvador Cuñat
In the past subsurface managed up to 8 tanks, but now it manages up to 20. SmartTrak manages 10 (3 in older no trimix versions) so there is no more need to drop the last tanks. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import rework smtk_build_tank_info()Gravatar Salvador Cuñat
The cylinder info is built one by one. This way, instead of passing dive and tank number parameters, just passing a pointer to the tank been worked seems preferable. It also introduces lrint() in the function to round the doubles values obtained from libmdb for tank size and workingpressure. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import - Add helper funcs to manage tank infoGravatar Salvador Cuñat
Framed in a full rework of the cylinders info import management, this funcs will be used in next patches. Functions merge_cylinder_type(), merge_cylinder_mix() and merge_cylinder_info(), have been shamelessly copied from dive.c as they have been removed by 162767aa dated 2017-03-11 just when I was going to use them. Macros MERGE_MAX() and MERGE_MIN() have just been copied from dive.c, but they could be moved to dive.h so they could be used elsewhere if needed. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import Use lrint() when rounding to integer valuesGravatar Salvador Cuñat
As commented on mailing list. Most numerical values from libmdb are doubles obtained via strtod(), so, rounding them instead of just truncating seems the correct way. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import Add smarttrak bookmarks parse capabilityGravatar Salvador Cuñat
User can manually add bookmarks on the profile display of SmartTrak. These are stored in a table with column names which made me think of cartesian spatial coordinates. In the end the X coordinate is the time. This makes possible to build subsurface events in those moments of the dive. The other interesting data is just the text entered by the user. Suggested-by: Alessandro Volpi <volpial@gmail.com> Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import - Add function smtk_free()Gravatar Salvador Cuñat
Group some reiterative freeing task under the imaginative function name of smtk_free(). Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-18smtk-import - Fix memory leaksGravatar Salvador Cuñat
Fixes some memory leaks, most of them excesive use of copy_string() in places where it was unnecesary. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-03-04SankTime > Sank TimeGravatar Martin Měřinský
2017-02-25smtk-import: Fix freeing unallocated memoryGravatar Salvador Cuñat
hdr_buffer pointer was not always allocated (just on dc dives), but was always freed. This should cause a crash while processing a manually added dive (or a dive whose dc model couldn't be stablished), but not always does, crashes only if the pointed memory hasn't been previously allocated. In most cases causes memory corruption, which goes easily unnoticed as it is correctly freed in next parse run. This means, obviously, I have some work TODO fixing leaks with valgrind. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-02-10smtk-import-change mktime with timegmGravatar Salvador Cuñat
There were 1 or 2 hour differences between real dive time and the imported time because of the time zones and energy saving in some locales. Using timegm() ensures us UTC times instead of localized times. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-02-10smtk-import-improve smtk_time_to_secs()Gravatar Salvador Cuñat
Can't remember what I was thinking when wrote that crappy thing. A simple sscanf call will do the job, and a sanity check, off course. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-02-10smtk-import-Fix crash due to localization issuesGravatar Salvador Cuñat
Libmdbº:xturns localized strings while parsing the data bases. This is bad for time calculations as we may end with different strings formats (e.g. en_US vs almost the rest of the world). Solution is simple: set a fixed locale and parse only this format. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>
2017-01-17Smart Trak tool compile fixGravatar Dirk Hohndel
In commit 70e2404492bb ("Stop accessing the internals of dc_descriptor_t") the structure definition of the libdivecomputer descriptor was removed from Subsurface and replaced with accessor functions. This adapts the Smart Trakl import tool to use the same accessor functions, which allows it to compile again in current master. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2017-01-05Locate included header filesGravatar Salvador Cuñat
After commit 7be962b some directories changed their names. Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com>