.. User Metrics now integrated into the factory, ride cache
and of course rides and intervals. Which means you can define
a user metric and it will be computed and displayed like any
of the builtin metrics.
.. lots of technical changes to support this:
* DataFilter gets a runtime object to support multi-threading
and uses a context for construction only - item contexts are
used when evaluating an expression
* RideMetric factory can now remove user metrics
* The context in which the user modifies the user metrics will
notify all other contexts of the change ***
*** NOTE: STRONGLY RECOMMEND THAT YOU DO NOT HAVE MULTIPLE ATHLETES
OPEN WHEN DEVELOPING NEW METRICS SINCE IT WILL TRIGGER A
METRIC REFRESH FOR ALL OPEN ATHLETES.
ZonePage, CPPage and SchemePage changes to support separate editing
Zones and Settings to allow for separate GC_USE_CP_FOR_FTP
RideItem and Coggan metrics are running aware por power zones
.. User metrics can be created, deleted and edited
in the preferences pane.
.. A new dialog has been created to create user metrics
and will need to be updated after step 3 of this multi
part update completes the UserMetric code and integrates
it into the RideMetric factory.
... store Videosync files in Workout Folder as well / adjust configuration description
... report non-existing Workouts/Videosyncs when scrolling through the treelist (and offer to remove them from the library)
... properly handle "imports" of files from the Workout Directory in case of "overwrite"
... add tr() in multiple places
... unify some of the texts - terminology
... add Directory to Configuration Page
... set Default similar to Workout Directory in Main
General
... start Directory Browsing on Config Page with the configured directory (if is existing/valid)
... collects all relevant Files from the Athletes directory subfolders (keeps the folder structure)
and add them to a .zip file which can be stored in a different folder
... runs automatically when closing an Athlete (window or tab)
... configurable per Athlete
-- Folder into which the .zip shall be stored
-- #of times GC shall close without backup before the backup is activated
(0 == no Auto Backup, every other number "x" means that GC closes
x-1 times without running the backup and after running, resets
the counter)
.. layout on athlete About row missed leaving a
gap between widgets vertically.
.. moved use CP for FTP checkbox to zone config page
and not on athlete About page.
... use an shared network drive (e.g. mounted via WebDAV) to synchronize activity data
(similar to Dropbox,...)
Open/TBD:
... where to best put the Preferences for the different FileStores
(currently add the Network folder configuration on Preferences->Passwords,
even though no PW is needed - with growing number of FileStores a
dedicated Preferences Page may be the solution)
... where to put the MainWindow Menu entries if the number of FileStores increases
... first Athlete opened with new logic determines the general settings
... if configuration is already migrated (based on one of the previous commits) -
migration can be forced to happen again by removing the INI files or
just the preferences pages has to be opened and Saved with the
unit settings you want
.. so you can now choose the directory to sync
data with. Its a very basic file dialog but
will allow you to create and choose a folder.
.. Config is now completed with token a folders
now configurable by the user.
.. I cannot believe we needed to write a pesky file
chooser dialog in 2015 (!)
.. first parts of the implementation of a base class
for working with file stores and the Dropbox
API.
.. all we actually get in this commit is the abstract
classes and an implementation of readdir for Dropbox
along with a config setting which needs to browse
directories
.. in the next commit we'll add the directory chooser
dialog which will need to implement a ftw() across the
associated filestore and present a gui to choose a
directory to store athlete data in
... select only files for import which are created or changed of the last 90/180/360 days
... thus limiting the number of files which are considered for import in the source directory
(without changing/deleting the source files - and without the need to track indexes,...
of what has already been imported).
... change storage format to .INI files (which is QTs cross-system format)
... differentiate between System, Global and Athlete specific settings
... store the Global Settings in the AthleteDirectory (root)
... store the Athlete specific Settings in the Athletes Names subdir /config
... migrate existing Settings from current location into new formats "on-the-fly"