.. the alpha channel was too agressive for light backgrounds and
was washed out and unpleasant on the eye.
.. reduced the alpha blend to make it flatter and cleaner.
.. showEfforts was not being initialised when the plot was created
which resulted in sustained efforts always being shown regardless
of the chart setting.
.. themes are now either light or dark, which selects the default
color set used to set the standard colors.
.. users can of course maintain them, but when applying a theme
there is no need to adjust now (some of the default colors looked
poor on a light background).
.. there is a line of code in main.cpp to dump the current colors to
stderr so it can be cut and paste into colors.cpp -- this makes it
much easier to use the UI to maintain colors and update the code.
this is obviously just for developers.
.. letting users define their own themes could be done later, but feels
like overkill at this point.
.. When creating user charts we can now select a standard color as
configured in appearances.
.. This means users can select e.g. the "Power color" when plotting a
power series.
.. The second part of this commit will update the themes to ensure that
the standard color settings are appropriate for the background (as
they are inappropriate currently. e.g. Critical power is always
yellow, even on a light background).
.. mostly straight replacement as qt5 containers are templated
and qSort semantics are the same as std::sort
.. prepping for Qt6.2 which is due late 2021.
Signed-off-by: Mark Liversedge <liversedge@gmail.com>
Continuation of previous commit. Caveat is value argument is string
so the user is resposible of providing proper string representation
of the value for overrides and numeric metadata.
For Metadata handling in Python Data Processors, similar to set/unset/isset
in formulas, but no metric overrides for now.
- setTag(name, value[, activity])
- delTag(name[, activity])
- hasTag(name[, activity])
All return boolean success indicator and activity is optional,
defaulting to current activity.
setTag and delTag are enabled only in Python Data Processors, mark
the activiy as modified and notify metadata has changed on success.
Fixes#3639
.. Makes it easier to identify code that has been snaffled in from
other repositories and check licensing
.. The httpserver is now no longer optional, since it is delivered
as contributed source.
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
Configurable in Train Preferences, defaults to 0, which is current behavior.
When countdown > 0, start is delayed and countdown is displayed in
notifications panel.
Fixes#3632
Since a simple metric name is the most common use case for PMC functions,
it is useful to avoid the need to call the expression evaluator at refresh
time, for better performance and to sidestep #3788.
This is a continuation of previous commit, since x-axis change affects
the is blank status we need a full replot to consider cases when the
selected activity lacks time or distance.
This change remove deviceType_ private member from RideFile
replacing its use by access to "Device" metadata field.
The objective is to remove limitations s.t. update using set
in formulas and ride navigator immediate refresh.
Fixes#3760
.. when trying to find the right values for the measures() datafilter
function e.g. measures("Body", "weight") it was not clear why this
was failing. Added more information to the error message.
A new Trainer metadata field is included in metadata.xml
On upload a checked Trainer metadata field, or the presence of
TRAIN XData series, marks the activity as trainer.
On download the trainer flag is used to update Trainer metadata field.
This is a complement of 5a1bd1a, a user is reporting a crash in
Widget::setSyleSheet on Windows at startup after that commit.
I cannot reproduce the issue, but since that change was modeled
after LTMSidebar, lets try to avoide the issue making it even more
similar. This way, the widget already has a proper parent when
HelpWhatsThis is added.