aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/maintab.cpp
AgeCommit message (Collapse)Author
2014-07-03UI restructure: improve memory handling in maintabGravatar Dirk Hohndel
Free strings before overwriting them. Use copy_dive() instead of just copying the dive structure. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03UI restructure: updateDiveInfo displays displayed_diveGravatar Dirk Hohndel
Instead of passing in a divenr of -1 to make it clear things this changes things to use an options "clear" flag. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-03UI restructure: updateDiveInfo shows the selected dive by defaultGravatar Dirk Hohndel
So don't be redundant. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-02UI restructure: use a global variable to hold the dive we show / editGravatar Dirk Hohndel
There is massive confusion about what we display when and where and which dive structure (or pointer to a dive structure) contains which information at which stage. This is the first step towards restructuring all of this. This creates a global variable displayed_dive which at any point in time should be what is displayed on screen (both in the profile and in the maintab). It removes the editedDive concept from MainTab. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-01Add dive: remove cylinder pressures from samplesGravatar Dirk Hohndel
These cylinder pressures are actually just artefacts of the way we track gas consumption in the code shared between planner and add dive. We don't want them in the actual dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-07-01Equipment edit: for some reason we need a local copy of indexGravatar Dirk Hohndel
Calling enableEdition appears to corrupt the index that is passed into this slot. This doesn't fix the problem that we can't edit the cylinder start and end pressure of a manually added dive, but at least we no longer try to edit and invalid index. See #582 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-29Calculate approx gas bill on divesGravatar Anton Lundin
This uses a bit of naive gas computations to figure out how much of different base gases you used up on the dives the statistics is done for. It's quite useful to get a minimum line about how big your gas bill is going to be after a dive trip. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-28Fix crash when cancelling a trip editGravatar Dirk Hohndel
We were comparing the wrong data and freeing things that shouldn't be freed. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-27Start external viewer on photo double-clickGravatar Sergey Starosek
Signed-off-by: Sergey Starosek <sergey.starosek@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-26Correctly use our "localtime"Gravatar Dirk Hohndel
We use time stamps without timezone, so we need to correct for the current time zone offset before showing dates and times in time zone aware widgets. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-26Fixed changing dates with the new date widget.Gravatar Tomaz Canabrava
The maintab was connecting with an invalid slot on the new date widget, QDateTime instead of QDate Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-26Added code for TimeEditGravatar Tomaz Canabrava
This makes the TimeEdit work again. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-26Headers cleanup.Gravatar Tomaz Canabrava
Too much noise on the headers, this commit remove uneeded headers when they are uneeded. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-20Added the new Date Widget on the MainTab.Gravatar Tomaz Canabrava
the new date widget still needs a bit of work, but the design is working already. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-20Simplify codeGravatar Tomaz Canabrava
If a class inherits QObject, it doesn't needs to call QObject::tr for the tr function. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-12Don't copy the current dive ontop of editedDive after edit has startedGravatar Dirk Hohndel
If you switch to edit mode by making a change to cylinders or weights, then the data in the editedDive was changed and afterwards the current dive was once again copied into the editedDive - even though we already did that earlier when setting up the display. Fixes #539 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-10Remove unused variableGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-10Improve statistic on used gasGravatar Dirk Hohndel
This raises the maximum number of gas mixes listed to 20 and also changes the layout / design of the stats tab to make it much more attractive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-09Add gas consumption statistic for selected divesGravatar Dirk Hohndel
We already did a list of gases and volume consumed for the selected dive on the Dive Info tab, but did not provide that same data on the Stats tab for all the selected dives. I arbitrary limited this to eight gases (as the list can get quite long when you select a lot of dives). The gases are sorted by volume consumed. Fixes #535 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-09Don't show the average depth for the selected divesGravatar Dirk Hohndel
Being shown between the deepest and shallowest dive's max depth it confuses a lot of people - the average depth is frequently less than the shallowest of the dives, so at first glance it looks like the "average" is less than the "minimum". So having three numbers grouped like this that use different algorithms is just distracting. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-09Dive edit: do a better job noticing when the coordinates were changedGravatar Dirk Hohndel
Previously the code could get confused by edits (including trivial things like deleting the coordinates). It seems much more reliable to simply compare the coordinates of the edited dive with the ones in the current dive before the edits. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Dive edit: avoid memory leaksGravatar Dirk Hohndel
If we edit any of these fields, we create new strings via strdup (or a fresh tag_list). So if the edits are rejected, free all that memory. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Dive edit: don't free the taglist of the master diveGravatar Dirk Hohndel
We do all of our edits on a copy of the dive - but the tag_list points to the tag_list of the master dive (based on how we create that copy of the master dive). So only free the tag_list if it is already different from the master dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Ask before discarding editsGravatar Dirk Hohndel
This is equivalent to what we do for the planner. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Add a static 'instance()' member for the Photos model.Gravatar Tomaz Canabrava
This will make referencing it from a few places more easy. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Cancel dive edit when escape key is pressedGravatar Dirk Hohndel
Also seems intuitive. What's odd is that in the Planner you get a confirmation dialog while here you don't. We should be consistent. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-03Make the new picture widget display the pictures.Gravatar Tomaz Canabrava
Small changes in the model to display the pictures of the dives. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-02Rewrite dive edit logicGravatar Dirk Hohndel
The existing code took an odd approach. It tried to change all selected dives whenever the user edited a field, and kept all this backup data in case the user rejected the edits. This code takes the opposite approach. Only edit a copy of the selected dive and then when the user accepts it, edit all the dives and when the user rejects the edit simply redraw the screen (as all the "real" data is still unchanged). This not only saves quite a bit of code, it should be much easier to get correct. Admitedly this code will need quite a bit more testing to make sure it works as intended, but as far as I can tell it already gets more scenarios right than the previous implementation. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-01Override the MinMaxAvgWidget tool tips for the depth instance.Gravatar Tim Wootton
Add new methods to the MinMaxAvgWidget class to allow us to override the default tooltips of its min and max icons, and then uses these methods to make the tooltips for the Stats tab Depth instance more descriptive. See #521 Signed-off-by: Tim Wootton <tim@tee-jay.demon.co.uk> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28Fix edition of manually added dives.Gravatar Tomaz Canabrava
This patch correctly sets the state of the planner to "NOTHING" after trying to edit a manually added dive. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-28Fix crash on adding / removing a dives from add menuGravatar Tomaz Canabrava
This patch removes some inconsistencies that were happening on the add dive / cancel actions. a bit of legacy code from the old system was still in, which made things quite... EXPLOSIVE. This fixes restoring the selection only if we have a selection and not deleting the temporary dive twice. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27Dive add: fix crash when cancelingGravatar Dirk Hohndel
We need to reset the editMode right away, otherwise all the changes to the input field (when resetting the data after the user cancels) will cause Subsurface to crash as current_dive will temporarily be NULL. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27Fix manually adding diveGravatar Dirk Hohndel
I'm sure canceling the plan when saving an added dive made sense at some point for some reason. Right now it makes things crash, so let's not do it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-27No need to separately enable and switch focus to the dive listGravatar Dirk Hohndel
RefreshDisplay() does this for us. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26Planner: don't try to update the MainTab dive info while in plan modeGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-26Planner: Re-enable using the new profile.Gravatar Tomaz Canabrava
This correctly enables the planner on the new profile, but it doesn't triggers the correct paint on the canvas. [Dirk Hohndel: remove other remnants of the disabled planner as well] Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-22Gratuitous whitespace changesGravatar Dirk Hohndel
I keep trying to get to consistenct. Completely hopeless. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-22Back to profile or empty state when finishing addition.Gravatar Tomaz Canabrava
This patch adds a signal to MainTab, that should be removed from there when we finish the rework on the edit part, to go to the edit classes, but in the meantime, let's keep it there. The signal is connected to the ProfileWidget in a way that the end of the edit will also trigger the profile to go back to ProfileState (show the dive, if there's any) or empty Profile (if there's none). Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-20Consistently use for_each_dive (and use it correctly)Gravatar Dirk Hohndel
The way the macro is written there is no need to test the dive against NULL before dereferencing. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-18Improve the tag widget to allow us to tab to the next fieldGravatar Dirk Hohndel
If the last key that went in ended a tag and the next key is a tab - deliver that to the TabWidget instead so we can navigate between input fields. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-13Move printGpsCoords from MainTab to QtHelperGravatar Tomaz Canabrava
Last time I touched this I got a scream from dirk, but then I looked at the code again and the problem that I faced was that I broke translations in a sad way, well, now I broke it again. However, this method shouldn't belong to MainTab ( because of that thingy that I said before and also many others: Separate the logic of your application from the UI specific code ) This generates a string that's going to be used on the Interface, it doesn't display it on the interface. Move it down below makes it easier to test ( I don't need to create an Widget and worry about the parent-relationship with the mainwindow just to test this function, for instance. ) Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Apply the edit of trip locationsGravatar Anton Lundin
This re-adds this code that got removed in a209dfbfd53 ("Multi dive edit: don't change location texts until user saves the change") Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Only mark location changed when in edit modeGravatar Anton Lundin
Otherwise the code loading a dive into the field would mark it as changed. This re-adds this code that got removed in a209dfbfd53 ("Multi dive edit: don't change location texts until user saves the change") Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Improve the color coding when editing coordinatesGravatar Dirk Hohndel
This still gets it wrong (i.e. marks things as edited when they are not or not edited when they are) but at least they are no longer incorrectly marked as incorrectly parsed. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Hack around a translation issueGravatar Dirk Hohndel
I cannot figure out how to get the hemisphere letters translated correctly in qthelper.cpp. Short term hack for now - someone who understands how this is supposed to work really needs to take a look. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Globe: assume that we are looking at the current_diveGravatar Dirk Hohndel
As in commit 3870bdafee53 ("Globe: we always center on the current dive") passing in a specific dive here makes no sense - it's always about the current dive. Fixes #513 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Globe: we always center on the current diveGravatar Dirk Hohndel
Simplify the API (we'll take advantage of this in the next commit). We always center the globe on the current dive, so no point in passing that dive in. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-07Multi dive edit: don't change location texts until user saves the changeGravatar Dirk Hohndel
If we keep updating the location text of all selected dives we can lose the status of which dives had the same text of the original dive and which did not (this happens if the location we are adding is identical to a selected location but adds text to the end of it). Now we only edit the other dives after we accepted the change. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-06Simplify string comparisonGravatar Dirk Hohndel
This is based on Linus' idea on the mailing list. Treat NULL strings and empty strings as identical. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-05-06More multi-edit fixesGravatar Dirk Hohndel
This time for values that aren't simply text. For normal integers this is rather straight forward. For the 'when' timestamp we simply assume that this is a shift in time. What is still missing is consistent handling of the three fields that are implemented as tags: tags, buddy and divemaster. We have special code for tags that makes no sense in a multi-edit scenario. And we treat divemaster and buddy as a single string - which kinda works but treats "Bill, Joe" and "Joe, Bill" as different. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>