.. at startup we ask the user for permission to share
.. once permission is granted the upload is performed and
re-done every year, so long as > 100 workouts have been
collected since the last time.
.. custom uploader, using CSV.
.. requires updating to support custom fields like RPE/ROF
but committing whilst trying to resolve a bug related
to the FOLDER_ID configuration setting.
.. check looks at autoimport too (e.g. when checking a
directory that is mounted when connecting device).
.. changed the titles to make it clearer which are about
activities and which are about measurements.
.. share menu is now much simpler since:
* twitter and calendar removed
* individual upload/sync options removed
* only shows sync/upload for configured accounts
.. 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.
... body measures are weight/height data as provided by multiple fitness platform (one of the being the already support Withings platform)
... all access to Weight from external platforms is done through the body measures model - not direct use of Withings any more
... not all platform deliver all measures - but (hopefully) all are providing "weight in kg" as a minimum data
General Download Dialog for Body Measures
... allowing to select the source and the daterange for which data is downloaded (e.g. only the new data since last available measure)
... Support existing Withings Download
... Support new Today's Plan as data source (which is able to receive measures from other sits - e.g. Garmin Connect)
... Support CSV files as data source
Store Body Measures Data in one fix file under /activities (not in /cache like Withings) (so that e.g. backup works like before).
What's open:
... CSV File Import (Info Message on missing feature)
... Test of "old" Withings Download API (since I can't do this)
.. the padding around pushbuttons and combo boxes is not scaled
for hidpi displays, so we fix up with a global style sheet
in main.cpp
.. it is only applied in hi-dpi for Windows and Linux.
.. not perfect, but to support this correctly the code will
need to change and affect normal usage.
.. lets get it to a reasonable place, since all the mainwindow
chrome will get replaced in v4.0 anyway
.. but might revisit the toolbar pushbutton icon size !
.. MainWindow::ConfigChanged() was setting the application wide
font back to the configured defaults.
.. this was fine, until we decided to override the config when
running on hi-dpi displays, in which case it breaks things
.. we need to fixup the configuration dialog to stop users from
setting font sizes and instead set them programmatically for
hi-dpi and non-dpi displays
.. for now we just disable the reset in MainWindow - which means
most widgetry now honours the default font (until it is changed
in config, then you need to restart).
.. Start of support for hi-dpi displays; only relevant if you
are running on a hi-dpi display and have not chosen to set
any 'auto' scaling.
.. it just sets a dialog box ratio (which is unused at this
point) and sets the default font to something reasonable for
the display size.
.. next steps are to check impact across Linux, Windows and
MacOS hi-dpi displays and then work through and correct code
that works with dialog boxes and sets widget sizes.
.. this will be a bit of a slog, but worth it for crisper
rendering on those expensive 4k panels
... add copyright notice to file
... store .dbg and .log in Athlete Directory (if known) and in installation directory only as default
... unify handling of "win32-msvc*" specific qmake commands in src.pro
Both SixCycle and TodaysPlan uses QByteArray::toStdString
(introduced in Qt 5.4), while in QJsonParseError (introduced in Qt
5.0) is used in TodaysPlanWorkoutDownload.
... Default directory for the WebEngine Profile and Cache is /AppData/Local/<AppName which is the same GC uses as Default for Athletes
Changing the location for QtWebEngine needs to be done for EVERY QWebPage. Until the use of QtWebEngine is limited to a few locations
the easier way is to filter out the Directories created by QtWebEngine (assuming that no-one will call their athletes either "cache" or "QtWebEngine".
... This is only done if build with QtWebEngine and for Windows (on other OS Qt uses a better location for cache data, not a user location).
... improve Telemetry Dialog
... add more data to Telemetry Storage / including user counter
... do not show any network errors / lack of connection
... call all CloudDB functions asynchronously without blocking UI
... use an installer specific UUID as identifier - not IP address (as this is to volatile)
.. SixCycle should be spelt as Sixcycle, this has
been fixed across the user visible strings
.. Upload of PWX works, but not TCX, so switching
to using PWX for now.
.. Query filestore now added.
.. You can query and upload using the API, but at present no files are
being accepted (we send as TCX uncompressed).
.. Part 4 will include download then we can pass over to SixCycle for
them to test and fixup.
.. note that SixCycle uses enddate (!?!) for their activity and not
start time this requires a bit of gymnastics to match in syncdialog
there are some pending fixups required for syncdialog download
because of this.
.. added SixCycle FileStore implementation
.. in this part the authentication mechanism is complete and extracts
both the session token and session userid for subsequent requests.
.. follow up commits will need to implement readdir, writeFile readFile.
.. from December 7th 2016 read access (for downloading
from TrainingPeaks) has been revoked, even for paid
up members.
.. write access (upload) is not revoked.
.. This is essentially anti-competitive behaviour and
returns TrainingPeaks and their products, once again
to that of a 'closed' product.
.. We will no longer support their service since we
cannot and will not promote such behaviours now
or ever.
.. We are now considering the best way to purge all
other references to their trademarks and remove
any indication that their products are endorsed.
... re-using the existing functions recognizing modified activities
... allowing to save all, without remembering to save one-by-one or
leaving GC to make sure that all was saved
.. when translating "Options" they are no longer put into
the main menu on OSX.
.. we now explicitly set the menu type to ensure this
happens regardless of the text.