This is just to simplify the creation of more filters.
more macros will be used, because I tend to abuse them.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
We already have a bunch of filters, let's pack them together
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
- use an already defined 'ret' value if available
- don't put free() calls in NULL check branches (saves a line)
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
For our usage the method will acept UTF-8 paths,
which are converted to UTF-16 on Win32.
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Depth is often mentioned in a length unit, but what we care about is
pressure. When diving in fresh water the pressure is lower than the same
depth in salt water. This adds support for using different salinities in
planning.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
In a test case loading dives/test35.xml results in a infinite(-like)
loop (Note: possibly requires the partial pressure plots enabled).
calculate_gas_information_new() has an 'if' branch to
update the cylinderindex to a dive's diluent_cylinder_index,
but it does not consider that said index can be set previously
to -1.
This results in a random neighbour memory assigned as
&dive->cylinder[-1].gasmix and passed to fill_pressures(..).
Following the calculations in the function the He gas,
can receive a bad value (e.g. for the test case in the
E+6 ranges).
Said value is then used in DivePlotDataModel()::pheMax()
(defined by MAX_PPGAS_FUNC()) resulting in one of the loops
(the 3rd one) in DiveCartesianAxis::updateTicks() to
loop indefinitely.
Fixes#759
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
If an import fails, the permissions of the device are tested and an
error message that mentions permissions is shown to the user.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
By popular demand, this changes the names of the Suunto Safety levels.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Otherwise dives that aren't shown to the user would be included in
statistics or (worse) in edit operations.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This way other parts of the code can act on the "hidden_by_filter" state.
This also cleans up the way we track if a dive is hidden - do it in the
multi filter instead of the individual filters.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Code to clean the filters. Maybe I'll also need to call this upon
closing the dialog?
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
clicking on the close button will close the widget.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Buttons to close, minimize and clear were added. We need better icons.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
a bit of extra spacing was necessary to get rid of the scrollbar.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The extra info didn't had a Layout set, this makes the
design hard and not resizable. fixed by using a layout.
I also changed a ScrollArea for a GroupBox, since the
Model already has a ScrollArea.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The .location and .notes fields can end up being NULL,
in which case copy_string() is safer.
Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This is a rather brute force implementation. It might be worth while
caching this information - but I'd like to do some benchmarking, first.
Sadly this code also shows that there are some bugs hidden in the
selection code when filtering is present. When a trip is selected all
dives in the trip get selected, even those that are not visible under the
current filter.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This should have been ripped out as part of commit 4be7604634 ("Use
libdivecomputer tank size when available").
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Silly type made us always get tank 0. So tanks 1 through n where wrong
(and repeating tank 0 instead).
Reported-by: Jef Driesen <jef@libdivecomputer.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
ppO2 represented with 2 as subscript.
Special l symbol for litres.
Capitalisation to bring in line with existing style.
Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Spelling fix for ampoea
Remove bogus HTML string from UI file
And fix the translation sources accordingly
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Rather than overflowing the notes field, let's add all the details from
DC using the extra data API.
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The Poseidon xml dive log in the /dives folder is faulty. This patch
replace it with a fully working one.
Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
I was able to test against a v2.0 log file and fixed some
problems.
Also removed a file save that was being done for debug purposes.
Signed-off-by: John Van Ostrand <john@vanostrand.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
And added a missing liquivision item in file open dialog.
Signed-off-by: John Van Ostrand <john@vanostrand.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Try really hard to ensure there remains a valid selection. Only if none of
the dives are selectable should we give up.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
If we end up trying to restore the selection where the selected dive is no
longer visible (i.e., it's now filtered away), this code caused a crash by
falling first() on an empty list. Let's not do that.
Fixes#758
If the gasmix of a tank is not the matching gasmix in the list of
gasmixes, issue a warning (as so far we assume those are always in sync).
This patch removes our own parsing of the sizes because Subsurface 4.3
will require libdivecomputer 0.5 so this should be enabled by the time the
next release comes out, so let's just drop the redundant code.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Back in 24c491053c ("Don't overwrite zero setpoints") the filling of
last_setpoint logic was removed. This clears out the last bits left
over.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
In previous version of subsurfacesysinfo.cpp which came straight form Qt
the unquote function was used to clean strings.
Since f59b30ca5a ("OS Detection: Use QFile when reading
/etc/os-release") its not needed any longer so this removes that
function.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
libdivecomputer recently gained a api for telling us which mode the
divecomputer was running in, so this uses that to tell us if it was a OC
or CCR dive.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
The calculate_string_hash is only used if DC_FIELD_STRING is defined, so
this removes a warning for everybody who doesn't build against a
libdivecomputer with DC_FIELD_STRING support.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
c++ have some idea about in what order things should be initialized.
This makes us comply with that order.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Parse air temperature and water temperature if available from the dive
computer. Subsurface happily tracks the temperatures in the dive samples,
but for water temperature in the header ("overall" water temperature) we
currently support only one field. So I ordered the code so that if it is
available, the minimum water temperature will be used, absent a minimum
water temperature we use the maximum water temperature.
Side note:
Since the libdivecomputer maintainer disagrees with the Subsurface
developers regarding a sane way to allow a consumer of his library to
detect if a feature is supported in a particular commit of the library,
the way we decide whether to build this code or not is decidedly hacky.
DC_GASMIX_UNKNOWN happens to be a #define we can check that was added
right around the time the temperature support was added. Sadly there is
no #define that we could check to see if temperature fields are supported.
How insane is that...
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>