New Garmin devices allows to enter RPE and Feel after some activities,
when these fields are present in FIT files they are used to set
corresponding metadata fields.
Fixes#4124
.. Tab becomes AthleteTab - since Tab is almost meaningless
TabView becomes AbstractView - since its the base for all the views
there are no functional changes or fixes in this commit.
.. the ride summary on analysis and trends is now replaced by
the overview dashboard.
.. since RideSummaryWindow uses html to deliver content via
an embedded web browser it had become unwieldy and the
UX was klunky and static.
.. additionally the code was unwieldy and difficult to
maintain and update when new feature were introduced.
.. this is a happy day, goodbye and farewell.
All sports defined as values for Sport metadata field can have
specifics HR Zones and default to Bike zones otherwise.
Similar to current HR zones for Run.
Part 2 of #3280
Variable row height, depending on activity calendar text being empty or not,
provokes refresh issues when calendar text changes from empty to not, or
viceversa.
Instead to try to solve this issue with specific code, I think it is
simpler, and more regular from UX point of view, to have a uniform row height.
After this change row height depends on metadata config only:
1) a new RideMetadata method is introduced (hasCalendarText) to check if
Calendar Text can be non empty, i.e. if some field has diary checked.
2) RideNavigator uses this method when config changes to set hasCalendarText
member used to determine row height for all activities.
Fixes#3074
Athletes with default config can be safely skiped without loss of
information in the same way as non athlete folders.
Fixes#3735 for new cases, but users previously affected by this bug
need to manually delete metadata.xml from GC root folder, it doesn't
seem a problem common enough to merit an special treatement.
[publish binaries]
.. Global settings (themes, metadata etc) are now maintained
in the config dialog as in the past, whilst athlete settings
(such as zones, measures etc) are now maintained in a new
config dialog accessible from the athlete view (gear icon).
.. Config changes are communicated via two signals;
* Context::configChanged(qint32)
* GlobalContext::configChanged(qint32)
Crucially, all global context signals are cascaded through
the athlete contexts-- so athlete specific widgets only
need to connect to the athlete context signal (and will get
athlete and global config change notifications).
Whilst global widgets such as the sidebar and mainwindow
need only connect to the globalcontext signal since they
are not interested in athlete specific details.
[publish binaries]
.. Ride metadata was associated to the athlete rather than a
global setting. This was a serious design flaw since user
metrics can reference metadata.
.. A global metadata.xml file is generated on startup by
consolidating all athlete level settings into a single
configuration.
.. Other dependencies were also moved; SpecialFields,
ColorEngine and UseMetricUnits.
.. We should now be able to remove athlete configuration
from the config dialog and put it into the athlete view
instead.
This will also fixe a long standing issue with
configuring athlete settings when multiple athletes are
open.
[publish binaries]
.. the 'Details' chart now combines editing the metada fields such as
workout, sport, notes and so on, with an additional tab 'Raw Data'
that contains the RideEditor.
.. it is now no longer possible to add Editor inidividually and the
Summary and Details chart is deprecated (Summary will also be
removed once Overview has enough functionality to replace it).
.. GlobalContext::context() provides a global context that is not
tied to an athlete or MainWindow.
.. At present it just offers signals for config changes but will
likely see more context move across as the application preferences
and athlete configuration are separated as we enhance support
for multiple athletes.
Access SpecialFields::isMetric() via context->specialFields
Avoids duplication and fixes#2894 since the context->specialFields
is updated in RideCache when user metrics definitions are loaded.
* fix unclosed file descriptors
* remove various compiler warnings
sometimes it was only ambiguous indentation, sometimes bugs were fixed:
- forgotten `break;` instructions or `fallthrough` annotations:
- src/ANT/ANTChannel.cpp
- src/Charts/CriticalPowerWindow.cpp
- src/Charts/MUPlot.cpp
- src/Core/DataFilter.cpp
- src/FileIO/RideFileCache.cpp
- src/FileIO/RideFileCommand.cpp
- src/Train/DialWindow.cpp
- forgotten braces:
- lmfit/lmmin.c
- src/FileIO/XDataDialog.cpp
- test on the wrong variables:
- src/Gui/Pages.cpp
- wrong parenthesis
- src/Charts/CPPlot.cpp
- missing macro argument
- src/Cloud/WithingsDownload.cpp
- missing `return;` statement
- src/Cloud/Xert.cpp
- unused variables
- src/Gui/DiarySidebar.cpp
- unclear indentation
- src/Core/RideItem.cpp
- src/FileIO/BinRideFile.cpp
- src/Metrics/PaceZones.cpp
- src/Metrics/RideMetadata.cpp
- src/Metrics/Zones.cpp
* remove unnecessary Leaf::Parameters enum value from data filters
lists of parameters don't exist as such outside of the parser, and have
no business using the same type `Leaf` as complete terms anyway
* remove unnecessary argument
`leaf1.print(leaf2,...)` would print `leaf2` and completely ignore
`leaf1`, so now `leaf2.print(...)` is used instead
.. if metadata is setup to use TSS, NP, IF then they
don't override the base metrics coggan_{tss,np,if}
this is because the symbol being used is for the
compatibility metrics which is one level of
abstraction away from the underlying metric.
.. instead we now handle the symbols within the
RideMetadata class, which maps TSS, NP, IF to
the coggan_tss, coggan_np and coggan_if symbols.
Fixes#2852
Introducing a directory structure to make it a bit less
daunting for new developers and perhaps even old hands.
The main folders all start with an upper character, so src
files are now located in;
* Core - Core data structures
* Gui - Main GUI elements
* Metrics - Models and Metrics
* FileIO - Device and File I/O
* Charts - All the chart types
* Cloud - Working with Web Resources
* Train - Anything Train View specific
* ANT - Our ANT+ Stack
* Resources - Images, Translations, Web etc
Apologies to anyone who needs to merge across this update.