aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-01-19mobile/UI: simplify and cleanup SettingsGravatar Dirk Hohndel
This is both cleaner and looks better. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: improve layout of styled ComboBox and TextFieldGravatar Dirk Hohndel
This makes the TextFields (and the editable ComboBoxes with them) have a tighter visual experience. It also moves the indicater closer to the right edge in the ComboBox and doesn't use preferredWidth for the slim combo box as that implies a maximum width which could lead to unnecessary clipping. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: don't change the window size when gridUnits changeGravatar Dirk Hohndel
QML and Kirigami trigger a change of our application window size if we manually override the gridUnit. Which of course is NOT what we want, so immediately undo that after changing the gridUnit to prevent bad side effects. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: correctly scale UI without restartGravatar Dirk Hohndel
The fact that the rescaling in the settings gave different results from what we got after a restart really should have been a dead giveaway that the code was fundamentally flawed. With this, if the user picks smaller, regular, or larger they now always get the same, consistent values for gridUnit and font sizes. This also gives up on the idea that we can just force the gridUnit to be smaller to make things work if the font (which drives the gridUnit) is too big for a screen. That fundamentally cannot work and gives a horrible UI experience. So instead simply warn the user and continue with matching font / gridUnit, which will still give a bad experience, but at least we told the user about it and didn't pretend this was ok or fixable. Finally, this gets the factors right when switching from smaller to larger or back, without stopping at regular on the way. One odd side effect of this code is that under certain conditions (number of columns changes) the display window when running mobile on desktop will resize. That's kind of odd, but as that is not /really/ our target platform, for now I'd consider it acceptable. But it does deserve more investigation. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: fix font size when OS font is given in pxGravatar Dirk Hohndel
Android appears to set its default font in pixels, not points. So guess the point size based on the font metric information. This is not perfect, but creates results that are good enough. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: remember the system default font sizeGravatar Dirk Hohndel
We need to do this before the preferences are loaded, or the system default size is lost. Given that our other sizes are all relative to this value, that would be a problem. With this we can now ensure that we always have the right font size for smaller, regular, and larger theme settings. Also removes some obsolete commented out code. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19cleanup: create separate UI entry points for desktop and mobileGravatar Dirk Hohndel
This doesn't really change anything, but makes the code easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: offer more font sizesGravatar Dirk Hohndel
As it turns out, we used to get the font scaling completely wrong. As a result we got got ~72% and ~132% instead of the intended 85% and 115%. So now people have both options, in each case with matching gridUnit (and therefore visual spacing), and font size. Also visualize the font size by rendering the button text accordingly. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: don't double apply the font scale factorGravatar Dirk Hohndel
The mobile scale code had a fundamental flaw: we applied the scale factor once to gridUnit, but twice to the font size. So effectively we had font sizes of 72% and 132% (all of course then rounded to integers for no good reason) instead of the intended 85% and 115%. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/UI: add visualization of font size vs gridUnitGravatar Dirk Hohndel
This seems harmless and obvious, but it shows that for the last however many years our smaller/regular/larger font change was bogus and broken. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/Android: ensure the onePlus font has point sizeGravatar Dirk Hohndel
Otherwise this throws off the calculation of the gridUnit on onePlus devices. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile/statistics: make icons available in mobile appGravatar Dirk Hohndel
They were bundled via the desktop qrc, but they need a shared qrc that can be used in both apps. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-19mobile: add GF fields for ceiling calculationGravatar Doug Junkins
Adds fields to the advanced preferences page to modify GFLow and GFHigh for the Buhlmann decompression model for calculating ceilings. Updated preferences code to set the Buhlmann parameters in core/deco.c when the GF prefs are updated. Signed-off-by: Doug Junkins <douglas.junkins@gmail.com>
2021-01-19Corret the t-value von a C.I. of 95%Gravatar Robert C. Helling
It's 1.960, not 2 Suggested-by: Willem Ferguson <willemferguson@zoology.up.ac.za> Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-14Add back central line for linear regressionGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-14Plot proper confidence regionsGravatar Robert C. Helling
I was coninced that that rather than doing an order of magnitude estimate of the confidence region it's better to have the correct concave shapes that indicate the 95% confidence level for the regression line. It also turned out that the previous expression was missing a factor of 1/sqrt(n). Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-14Silence some compiler warningsGravatar Robert C. Helling
This is what clang suggested in compiler warnings. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-14Indicate goodness of fit of regression lineGravatar Robert C. Helling
The goodness of fit of a regression line is the percentage of the variance of the y values that is explained by the dependence on the x values. Set the alpha value of the regression line to this goodness of fit. Further, set the width of the regression line to a standard deviation of the values from the regression line valies. Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-13mobile/cleanup: remove more noisy debug outputGravatar Dirk Hohndel
The repositioning message when a virtual keyboard opens is useful enough to keep it and just hide it unless in verbose mode. The others have all outlived their usefulness. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13core/bluetooth: make device discovery less noisyGravatar Dirk Hohndel
This mainly combines reasonably redundant text to make the output easier to read. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/cleanup: reduce the noise in our logsGravatar Dirk Hohndel
There are two sets of messages that tend to dominate the logs - the RSSI updates from the Qt BLE stack - the warnings about deprecated signal use in Kirigami Neither of them provide any value to us when trying to find bugs; and often they end up hiding the things that we really care about. So let's just not log them - which is easy as we have our own message handler. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/GPS: fix two errors in the GPS handlingGravatar Dirk Hohndel
First, the time zone adjustment was wrong - this as written could only ever have worked in UTC or by pure chance. Second, the order of alerting the UI of the availability of a GPS fix was also incorrect creating a race between the UI and our data structures. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/statistics: allow chart selection for statisticsGravatar Dirk Hohndel
Based on a dummy commit from Berthold, this provides a styled popup of the available chart types for the current variables. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/statistics: make charts model available to UIGravatar Berthold Stoeger
Create a QML ChartListModel in the StatisticsPage and pass that to the StatsManager on initialization. [extracted from a slightly larger commit] Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13statistics: add count property to chart listGravatar Dirk Hohndel
In order to be able to correctly size the chart type popup, we'll need access to the total count or rows as a property that signals changes to QML. The hack to use rowCount() as the READ function requires that rowCount() can be called without argument, therefore the addition of a default parent. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/statistics: export ChartListModel to QMLGravatar Berthold Stoeger
For QML, the roles have to be associated dynamically with name. Moreover, the model has to be registered as a QML type to make it accessible from QML. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-13mobile/statistics: start with dives per year bar chartGravatar Dirk Hohndel
That seems to be the most commonly usefule chart. This also removes some noisy log messages; these were super useful during development, but should have been merged. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-13mobile/statistics: fix layout issue in wide modeGravatar Dirk Hohndel
After spending so much time trying to make things work well on smaller screens I completely missed that there was an off by one error making the statistics display way too small on larger tablets in landscape mode. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-12mobile/UI: small adjustments, using the slim combo boxGravatar Dirk Hohndel
This changes most readonly combo boxes to use the smaller, more modern looking TemplateSlimComboBox and makes some layout adjustments on a few pages to overall create a better UI. A lot of this is just cleaning up things that were rather rough in the first place. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-12mobile/UI: better sizing for Global Drawer header imageGravatar Dirk Hohndel
Especially on smaller screens in landscape mode (which is nice for statistics) the image took up way too much space. Now it gets cropped in a way that makes sure all the information text is visible, but not too much space is stolen from the rest of the menu. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-12mobile/UI: make the comboboxes slightly more modern lookingGravatar Dirk Hohndel
The smaller indicator and more rounded corners seem more pleasant. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-12mobile/UI: add another variation of the combo boxGravatar Dirk Hohndel
This one is designed to be fixed size and space efficient, non editable. It's used in the statistics page for now and looks much better than what we have elsewhere, so the style should propagate to the rest of them as well, but this is trickier for the once that are editable - and of course the fixed width might also not be appropriate in other places. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-12mobile/statistics: fix crash in dropdownsGravatar Berthold Stoeger
The code was protecting against the wrong member being NULL. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-11undo: set dive mode to CCR in undo command, not profile codeGravatar Berthold Stoeger
When setting a CCR setpoint, the profile code(!) would turn the dive into a CCR dive. Not only should the display layer not alter dives, this also means that the action is not undoable. Move that to the appropriate undo command, where it makes more sense, but obviously also makes things more complicated. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-11undo: remove invalidate_dive_cache() call from make_first_dc()Gravatar Berthold Stoeger
The make_first_dc() function clones a dive with a certain dive computer moved to the front. This is used by the MoveDiveComputerToFront undo command. make_first_dc() calls invalidate_dive(). However, the undo command does that by itself on every undo/redo. Thus, remove the call in make_first_dc(). Aside from consistency, the goal is to move invalidate_dive() to command/* so that we can be more aggressive about the whole topic: Store only "const dive *" pointers and thus force any writing access to explicitly invalidate the dive cache. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-11undo: remove invalidate_dive_cache call from MainTabGravatar Berthold Stoeger
When creating the RenumberDive undo command, the MainTab would manually call invalidate_dive_cache(). However, this is done on undo/redo, therefore the call can (should) be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-11undo: add missing invalidate_dive_cache() callsGravatar Berthold Stoeger
The AddWeight, RemoveWeight, EditWeight and ReplanDive commands were missing invalidate_dive_cache() calls. Add them to ensure that the dives are written to git logs on save. Fixes #3150 Reported-by: Peter Zaal <peter.zaal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-11statistics: print ellipsis in case of too little spaceGravatar Berthold Stoeger
In categorical axes all labels were printed leading to a big tohu wa-bohu for two many bins. Therefore, if a label is larger than the space between two ticks, replace by an ellipsis. Adjust the size of the ellipsis (".", ".." or "...") to the available space. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-11statistics: consider overhang of horizontal axesGravatar Berthold Stoeger
The old code didn't consider that labels can peak out of horizontal axes if labels are under ticks. This commit takes this into account. However, it must be noted that this is only heuristics: Before setting the size of the axes, the actual minimum and maximum label are not known, because we round to "nice" numbers. But the size of the axis can only be set after knowing the overhang, leading to a circular dependency. Therefore, the code currently simply uses the minimum and maximum value of the data, hoping that the "nice" values will not format to something significantly larger. We could do a multi-pass scheme, but let's not for now. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10update CHANGELOGGravatar Dirk Hohndel
This also includes the already merged statistics for mobile. All of this still needs to be added to the user manual. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-10mobile/UI: add settings to display profile ceilingGravatar Dirk Hohndel
So far only DC provided ceiling information was available and visibility of that was simply inherited via cloud storage from the desktop. With this the user can set both DC reported and calculated ceilings in the advanced settings in the mobile app. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-10mobile/UI: add signal to redraw profileGravatar Dirk Hohndel
This allows us to force a redraw of the dive profile when settings change that require a refresh of the profile. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-10mobile/profile: show calculated ceiling if enabledGravatar Dirk Hohndel
This now actually displays the calculated ceiling in the profile. There is still an issue where if the user toggles the setting the already cached profiles aren't recalculated - that's part of a bigger profile cleanup effort. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-10mobile: enable deco information calculation on mobileGravatar Dirk Hohndel
This simply allows us to calculate the information, it doesn't do anything to actually display it, yet. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-10profile: remove firstCall static variableGravatar Berthold Stoeger
The profile had a static variable which prevented animation when first showing the profile. It appears more logical to don't show the animation when switching from the empty state. This removes global state, as a function static variable exists only once, even if there are multiple objects. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10profile: pass dive to DiveHandlerGravatar Berthold Stoeger
The DiveHandler shows a context menu where a cylinder can be chosen. This indirectly accesses the global displayed_dive variable. Remove this in a step to make the profile reentrant. The code was quite ominous: instead of simply generating the list of cylinders, a global model was reset and then accessed with Qt's cumbersome model/view API. All this trampling over global state can be removed by simply making the function that generates the list globally accessible. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10profile: pass dive to RulerItemGravatar Berthold Stoeger
Instead of accessing the global displayed_dive variable in RulerItem, pass the dive. This is a step in making the profile reentrant. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10profile: pass dive to ToolTipItem::refresh()Gravatar Berthold Stoeger
Don't access the global displayed_dive variable in a step to make the profile reentrant. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10profile: pass dive to plot function of profile-itemsGravatar Berthold Stoeger
Instead of accessing the global displayed_dive variable, pass the dive to the various profile items. This is a step in making the profile code reentrant. This removes the last user of the displayed_dc macro, which can now be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10profile: pass dive to EventItemGravatar Berthold Stoeger
Don't access the global displayed_dive variable in an effort to make the profile reentrant. Note that this still accesses the global dc_number variable, which will likely have to be removed. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>