aboutsummaryrefslogtreecommitdiffstats
path: root/subsurface-core/divelist.c
AgeCommit message (Collapse)Author
2016-04-04Move subsurface-core to core and qt-mobile to mobile-widgetsGravatar Dirk Hohndel
Having subsurface-core as a directory name really messes with autocomplete and is obviously redundant. Simmilarly, qt-mobile caused an autocomplete conflict and also was inconsistent with the desktop-widget name for the directory containing the "other" UI. And while cleaning up the resulting change in the path name for include files, I decided to clean up those even more to make them consistent overall. This could have been handled in more commits, but since this requires a make clean before the build, it seemed more sensible to do it all in one. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-30Be smarter about dive renumbering when merging divesGravatar Linus Torvalds
We really have two different cases for merging dives: (a) downloading a new dive from a dive computer, and merging it with an existing dive that we had already created using a different dive computer. This is the "try_to_merge()" case, called from "process_dives() (b) merging two different dives into one longer dive. This is the "merge_two_dives()" case when you explicitly merge dives using the divelist. While a lot of the issues are the same, many details differ, and one of the details is how dive numbering should be handled. In particular, when you download from a dive computer and merge with an existing dive, you want too take the *maximum* dive number, because the dive computer notion of which dive it is may well not match what the user dive number is. On the other hand, when you explicitly merge in the dive list, you end up renumbering not just the dive you are merging, but also all subsequent dives, since you now have one fewer dives overall. So that case already has to be handled by the caller. Now, the simpler "download from dive computer" case was broken by commit ce3a78efcac2 ("Assign lower number to a merged dive instead of higher one"). It fixed the numbering for the divelist case, but broke the download case. So this commit reverts commit ce3a78efcac2, and instead extends and clarifies the dive renumbering that "merge_two_dives()" already did. It now explicitly renumbers not just the following dives, but also renumbers the merged dive itself, so now we can go back to the old "take the bigger dive number" for the core merging, which fixes the download case. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-23Make code easier to read (and avoid warning)Gravatar Dirk Hohndel
The old expression wass correct because if dive_table.dives[j]->number is != 0, then !dive_table.dives[j]->number is 0 and vice versa. But come on... The new code seems much more natural and easier to read. And of course the Apple compilers by default gave a warning because they suspected a precedence bug with the old code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-23When clearing dive file data, forget the saved git shaGravatar Dirk Hohndel
Otherwise parse_file() thinks that this data has already been loaded and doesn't re-read it, even though our internal data structures have been erased - so a subsequent parse_file after clear_dive_file_data() that opens the same git repository finishes successfully, but leaves the dive_table empty which is of course incorrect. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-09Clean up signedness confusion in divelist.cGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-03Don't access undefined diveGravatar Dirk Hohndel
When walking the dive table we need to stop before accessing the yet-to-be-added new dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-03-02QML UI: create a chronological dive list when manually adding diveGravatar Dirk Hohndel
The dive list might contain dives in the future, don't add the new dive to then end but instead add it at the correct spot in the list Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-02-01Silence compiler warningsGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2016-01-10Renumber dive list after manual dive mergingGravatar Salvador Cuñat
As Linus pointed out in mail list, user is forced to manually renumber his dives after doing a merge, unless the merged dives were those at the list tail. This patch try to manage the more usual cases, letting the user to deal with those more complex, based on some assumptions: 1.- We are working on an time ordered list of type: dive_table.nr ... 100 -- 101 -- 102 -- 103 -- 104 ... dive_table.dives.number ... 234 -- 235 -- 236 -- 245 -- 246 ... 2.- It's unlikely to merge no consecutive dives, as merging is time based. 3.- It's unlikely (although possible) to find consecutive dives with no consecutive numbers. 4.- It would be rather bizarre to find that newer dive,of those to merge, has lower number than older. 5.- It can be found that one (or both) dives to merge are zero numbered. 6.- There is only need to renumber from merged dives in advance. A variable, "factor", is fixed before reworking the dive table. This number will be substracted from the original dive number. If we are in point 5.- case, "factor" will be set to zero, meaning that dive numbers will not change (if older dive is zero, merged one will be numbered zero too and will let the user to manage this; if newer dive is zero there won't be need of renumbering as following dives will be correctly numbered, e.g. after splitting a dive which is not at the tail of the table). In most cases, "factor" *should* be set to 1. While renumbering it can be found a dive with it's number set to zero, this won't be changed and will remain zeroed to avoid negative numbers. It, mostly, means that the user has pending work on his dives. I don't know why I've written such a big explanation for such a tiny patch :-) Signed-off-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-12-03Crash fix in add_single_dive. No writing to dive_table.dives[-1]Gravatar K. \"pestophagous\" Heller
Signed-off-by: K. Heller <pestophagous@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2015-10-30Move all core-functionality to subsurface-coreGravatar Tomaz Canabrava
And adapt a new CMakeLists.txt file for it. On the way I've also found out that we where double-compilling a few files. I've also set the subsurface-core as a include_path but that was just to reduce the noise on this commit, since I plan to remove it from the include path to make it obligatory to specify something like include "subsurface-core/dive.h" for the header files. Since the app is growing quite a bit we ended up having a few different files with almost same name that did similar things, I want to kill that (for instance Dive.h, dive.h, PrintDive.h and such). Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>