* Changed the UI of CPPage to inline-editing of all values in all tables
* Added a sports-specific selector for the model (cp2, cp3, ext, manual)
* Allowed to create new ranges either manually or based on the estimated
values of the model
* Added option to reset each ranges values to those of the selected
model
* Added message to create a new range if todays estimate differs from
those of the currently active one
* Refined semi automatic power zones
* Added a dialog to inspect and accept only some values while adoption
* Added info messages
* when the model does not provide FTP or PMAX
* that AeTP is only a very rough estimate
* Added a tolerance in comparison before proposing new values
* Using the following order for defaults when adding a new manual range
* selected row
* last row
* predefined defaults
* Zones-Tab: To prevent crashes, a message is shown instead of the real
interface if a metric refresh is ongoing
* Changed Pace- and HR-Tabs to use inline editing
* Moved the unittests into the same structure as the sourcecode
* Added a simple (incomplete) unittest for kphToPace
* Improved setting the column width
* En-/Disabling the action buttons (add, delete, ...) based on the
contents state
* Changed the layout to prevent jumping widgets when showing / hiding
buttons
* Fixed compiler warnings from Visual-C++
* Adopt dialog: Refined layout
* Fixed the unit of "From BPM" on HR-Page
* Set the default mode to manual
Fixes#1381
Relevant changes from v3.7-DEV2408
a30b96cc8 Refactored the placement of items in the ChartSpace (#4549)
62ef8abe4 Make the Workout Editor's Settings Persistent (#4553)
217bd3b88 Scale Line Width default values (#4556)
f4d6c2ae4 avoid regression caused by #4337 due to changed order of data series enum
61fa77b2c respect linewidth setting inside the workout editor realtime plot (#4550)
51b0c9099 Fix intervals in Compare Pane are 1 sample short
b62a2d319 Ride Cache - Don't remove 1 sec intervals
c51941231 CP chart - show tooltip for model curve
5f1598c43 FIT - map fields to standard only for record msg (#4521)
9242f724d Implemented user defined relative date ranges (#4534)
60f903361 Cycling dynamics in train mode (#4337)
1230dc7c6 FIT parser - Lap messages can be first (#4535)
79b523781 Removed wildcard from translatable part (#4545)
ee992ad13 Enable Performance Tests for CV charts
7e7ffd3cb Aerolab - fix imperial units labels (#4542)
[publish binaries]
Fixes#4467:
* Tiles are dragged to a column, inserted into the columns tile order
* Placing tiles left or right of the existing columns creates a new
column (up to a fixed limit)
* As there is no concept of lines, the placement must
* always respect the users choice of a column
* never move a tile horizontally without user interaction
* Shift-resizing a tile allows spanning multiple columns
* Improved change detection
* Preventing superfluous layouting requests and order increments
* Added a visual indicator where the item will be placed when dropped
* Fixed a glitch when creating new columns on the right, when dragging
beyond a newly created column on the right, the visual indicator was
hidden and pseudo changes where detected.
This is a follow up of a discussion in #4550: since configurable
GC_LINEWIDTH is not scaled on use, it is convenient to scale fixed
default values so they adapt to display configuration on first use,
to make easier the initial setup for new users without affecting existing ones.
The fake rides created for intervals in Compare Pane don't include
the last sample, so they are 1 sample short and 1 sec intervals
don't appear. WPrime calculations are avoided when the ride has
only 1 sample to avoid crashes, besides it doesn't make any sense.
Fixes#4552
Previous behaviour was weird: 1 sec intervals could be created and displayed,
but they were discarded on activity save.
Also 1 sec intervals are useful for 3 param model fitting.
Relevant changes from v3.7-DEV2408
5f1598c43 FIT - map fields to standard only for record msg (#4521)
9242f724d Implemented user defined relative date ranges (#4534)
60f903361 Cycling dynamics in train mode (#4337)
1230dc7c6 FIT parser - Lap messages can be first (#4535)
79b523781 Removed wildcard from translatable part (#4545)
ee992ad13 Enable Performance Tests for CV charts
7e7ffd3cb Aerolab - fix imperial units labels (#4542)
[publish binaries]
Fixes#4512
* Added additional time range options for user defined seasons
* Relative start (e.g. 3 months ago)
* Duration after start / Duration before end (e.g. 2 months)
* Year to Date end, defining the end as the closest day with todays
day and month after start
* Refactored Season.h/cpp and SeasonParser.h/cpp for better testability
* Kept Season, Phase, SeasonEvent, SeasonOffset, SeasonLength in
Season.h/cpp
* Moved all UI related classes to SeasonDialogs.h/cpp
* Renamed SeasonParser.h/cpp to Seasons.h/cpp, moved class Seasons
there
* Replaced deprecated Qt classes
* Replaced QRegExp by QRegularExpression in SeasonParser
* Rewrote parsing seasons.xml to use QXmlStreamReader instead of
QXmlSimpleReader
* Unittesting
* Added a simple way to implement and execute (make check) unittests
in Golden Cheetahs source tree based on Qt Test
(https://doc.qt.io/qt-6/qttest-index.html), tested on Linux and
Windows
* Implemented unittests for classes (mostly before refactoring)
* Season
* SeasonParser
* SeasonOffset
* TRAIN - add cycling dynamics
Power sensors which deliver cycling dynamics such as power start angle,
rider position, etc. are supported during hometrainer session.
Goldencheetah requests power sensor capabilities and, when available,
request the sensor to enable them (power phase, pedal position, etc.
and 8Hz transmission mode which is mandatory when accessing those
additional data pages)
* COSMETIC - FIX comment related to gc csv header
The comment was not reflecting the up-to-date file
content as per latest CSV header
* FIX load/slope in CSV
Only target power was recorded in CSV records during hometrainer
session.
When not using ERG mode but slope mode then the data was lost.
This patch take care of training mode to determine which data
is to be recorded.
* TRAIN - flexible gc CSV
Allows to add fields in CSV file recorded during hometrainer session
without impacting a lot of files in the code
Historical first fields are still used to determine taht this file
has been created by GoldenCheetah.
During CSV parsing GoldenCheetah will use CSV header to determine which
fields are part of the file and to locate the column which contain it
* TRAIN - add cycling dynamics to CSV records
during hometrainer session
* CsvRideFile fixes
Free gcSeries and Qt6 compatibility
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
Some translations (de, sv) for filters used in QFileDialgos contained
commas to separate wildcards. As this is in violation with Qts syntax,
the dialogs didn't show any files.
This commit separates the wildcards from the name of the filter so that
only the name can be manipulated by translation. All affected
translations are updated.
This is the same as 2404 dev build with a fix
to import FIT files with Power Phase metrics.
Some XData series were discared before (#4535)
[publish binaries]
* Added support to filter for numbers in the description / title / tags,
similar to #4529
* Added quoted strings when filtering in description / title / tags:
* Words can be grouped by putting them in quotes to search for exact
matches
* Keywords can be put in quotes to strip their special meaning
* Examples: "Power Builder 60", "Power" 60
* Added this also to TrainerDay, keeping the syntax similar
* Adjusted the autocompletion to not propose keywords when within open
quotes
* Changed the traversal order in ChooseCyclistDialog when using the
tab-key:
* Before this change:
List -> New -> Open -> Cancel -> Delete -> List
* After this change:
List -> New -> Delete -> Cancel -> Open -> List
* Changed the default button (activated when pressing enter):
* "New" when no athlete is available
* "Open" when athletes are available
* Behaviour before this change: Always "New"
* Removed the parameter allowNew from the constructor
ChooseCyclistDialog::ChooseCyclistDialog as it was only used with
the value true
* Added support for the TrainerDay workouts/find API
* Added a new (optional) tab to the TrainerDay workouts download dialog
* Deferring loading of the classic list of workouts until this tab is
activated
* Implemented the API for TrainerDays /workouts/find (see
https://api.trainerday.com/api-explorer/)
* Visualizing the workouts using a colored ErgFilePlot
* Modified ErgFilePlot::setData to directly use the data of the given
ErgFile instead of falling back to the ErgFile set in the context
(required to display multiple plots at once)
* Added a simplified version of the existing workouts query sytnax
(supported verbs: duration, dominantzone)
* Saving the workouts as trainerday-<hash>.erg
* Using the segments-section as input for the hash and to identify
duplicates
* Functionality can be enabled in gcconfig.pri (GC_WANT_TRAINERDAY_API)
* Prepared the travis-scripts before_script.sh to inject the API key to Secrets.h
* Prepared appveyor.yml to inject the API key to Secrets.h
* Patching GC_TRAINERDAY_API_PAGESIZE for appveyor
* Configured api key for TrainerDay in appveyor