.. added settings to the cloud service to inform the config
pane the settings we need to be entered when adding an
account for this type of service
.. includes:
* OAuthToken - From OAuth 2.0 process
* Key - Optional user key used during OAuth process
* Username - Username
* Password - Password (when not using OAuth)
* Folder - Typically for storage like Google Drive, Dropbox
* URL - Base URL for service (when offer private tenants)
... add "source" and "originalSource"
... add "time" display for bodyMeasures read from cloud services
... store in /config not in /activities
... code clean-up (warnings, enum instead preprocessor constants)
.. creating the generic CloudService code for all the
services currently implemented as "uploaders" via the
share dialog.
.. the actual upload code and semantics need to be updated
for each service individually in the next commit.
Moved Height, W'bal Tau, and PMC settings to About tab
Measures tab is a Zones like UI to Body Measures model
Added fingerprint to BodyMeasure to detect changes
Fixes#1954
.. a CloudServiceFactory now has all full cloud services
registered for service we currently support for sync
including; Local File Store, Dropbox, Google Drive,
Todays Plan and SixCycle.
.. need to now refactors all the other cloud services
to use the CloudService base class: Strava, Cycling
Analytics, Ride With GPS, Withings, Web Calendar,
Training Stage Buch, Selfloops, Velo hero and Sports
Plus Health.
.. fix ridenavigator refresh on item data changed e.g. metadata
.. needed to hack in a call to update() for the ride navigator since it
appears to be ignoring data changes, but will repaint on mouse hover.
This needs to be investigated further as its a symptom of some a slot
and signal issue somewhere (or updates are disabled somewhere!).
... incomplete class initialization
... duplicate if statements
... typos in objects names (copy&paste) (AllPlot)
... missing else (CPPlot)
... missing DELETEs for objects (only if obvious that object is not used somewhere else)
... copy&paste errors (e.g. ModelPlot)
... small floats instead of integer evaluating to 0
... potential SEGV since pointer is not checked for NULL
... misleading code formatting (hard to read) in *zones.cpp
.. just reduce to default and chartlabels which are the only
font settings used across the codebase.
.. this is in preparation for overhauling the way fonts are
set across GC.