.. initial code to display an ERG file for editing
.. this just introduces the basic model for rendering
the erg file and loading the model.
.. the interaction model using a 'points' editor will
follow next and then one to use 'blocks'.
.. There is a LONG way to go, this commit is just to
put a checkpoint down and test across platforms
.. it had become a bit of a mess with various changes
over the last 5 years so restructured into 3 sections
* core and platform config
* optional dependencies
* source and headers
This is to help make it easier to maintain, especially
since support for the MSVC toolchain is likely to mean
it is modified quite a bit (in section 2 anyway)
In this part we have updated all the charts to reference
the RideItem::intervals() members instead of the TreeWidget
and RideFile::intervals().
The code to create/change/delete intervals is not included
so selecting and editing on charts/sidebar is disabled til
part 3 of the update, but hover should work properly.
Still left todo in future updates;
* Updates to the interval sidebar to list intervals
in a tree (by interval type) with a color selector
* Code to create, edit, delete etc the intervals via
the rideitem/intervalitem and see them reflected in
the ridefile
* Update to search for all the different types of
IntervalItems including routes and sustained intervals
.. we are taking a different approach for v3.2
.. the auto discovery will augment rides and maintain a cache
of all intervals across all rides
.. the discovered intervals will be selectable alongside ride
intervals in the sidebar
.. new interval views will be developed in v4.0
... introduce new "home" Folder structure object representing the
previous flat-folder
... adjust relevant QDir home - access to use the sub-folder method of
the new object
Note: the new structure is not yet active ! - everything is written to
the main folder still
To Do:
... add upgrade procedure for existing folder content to merge to the
new folders
.. now tested on Qt4 and Qt5 with VLC and NONE without issues.
.. but did notice a double include in GcWindowRegistry that has been removed.
NOTE: Still needs testing on Mac OS X
.. you can now select what kind of video widget you
want to build.
GC_VIDEO_NONE - No media support compiled in
GC_VIDEO_VLC - Use VLC (only on Win/Linux)
GC_VIDEO_QUICKTIME - Use Apple QuickTime (only on OS X)
GC_VIDEO_QT5 - QT5 video and associated backends (O/S dependent)
NOTE: This needs testing on non-Linux platforms.
.. If you build with QT 5 then we now use the QT video widgets
instead of VLC for Windows and Linux
.. We still use QuickTime for Mac OS X
NOTE: On linux Gstreamer is used and therefore all the right
codecs and backends need to be setup for this to work.
On windows its more complicated as it depends how Qt
was compiled, see:
http://qt-project.org/wiki/Qt_Multimedia_Backends
.. PM chart is deprecated, so when loading an LTM chart
with skiba curves is implemented instead.
.. we cannot easily add charts to the layout without refactoring
HomeWindow so have moved that out of scope
NOTE: The upgrade processing has not been activated -- but can
be once we build and issue our first 3.1 RC.
.. to reflect current code requirements
NOTE: there is a 'phantom' widget with the 3d window that
covers the left side of the chart bar and makes it
impossible to click on the summary button.
.. its too far out of date;
the UX is terrible and flickery
its a cpu hog (deletes all objects on each replot !? wtf)
it doesn't honour colour config
it doesn't integrate with the sidebar date selection
the metric selection should be via a reveal control
can't hide the legend / set grid / use chart settings
should use a tooltip
doesn't work with compare
.. all these issues are resolved using an LTM based PMC
Fixes#880
The 4 views have been shown to be confusing -- it is not clear
to new users what their purpose is, and hence how or why they
are different.
So in an effort to reduce the confusion I've renamed a few
things to be much more explicit and specific.
.. We embrace the fact we are a cycling program and use the term
RIDES not ACTIVITIES for all files
.. HOME is confusing, renamed to TRENDS
.. the ANALYSIS view name is confusing, its all about ANALYSIS
to renamed to RIDES
There will no doubt be areas that are not renamed properly we
can fix those when the arise.
Part 4 of the MainWindow refactor is moving the code for the
4 views (Analysis, Train, Home, Diary) out of MainWindow and
into a separate set of classes.
TabView is the base class for the 4 views and the basic code
is in this commit, but now need to work on the 4 derived
classes for Analysis, Home etc and the controller class 'Tab'.
Decoupled classes from MainWindow to reference Context
and Athlete (and introduced a couple of new headers).
We no longer pass around a MainWindow pointer to children
but pass a context instead.
There are still a few pieces left in MainWindow that need
to move to a better place;
* Setting/clearing filter selection
* Working with Intervals
* Adding/Deleting Rides
* Save on Exit
As mentioned previously there are lots of other parts to
this refactor left to do;
* break MainWindow Gui elements into Toolbar and Views
* migrate from RideItem and Ridelist to ActivityCollection
and Activity classes that are not tied into gui elements.
* introduce Application Context and AthleteCollection
Breaking the MainWindow 'god object' into
separate classes for Athlete and Context.
Further updates will need to;
- break MainWindow Gui elements into Toolbar and Views
- migrate from RideItem and Ridelist to ActivityCollection
and Activity classes that are not tied into gui elements.
- introduce Application Context and AthleteCollection
Once these are done we will be in a position to decouple
most classes from mainwindow and also introduce tabbed
athletes.
Train view - race* - out of date and no used
Train view - SimpleNetwork - not used
Analysis view - WeeklySummaryWindow - not used
MainWindow - RideCalendar - deprecated 2 years ago
We now have a date range selector in the sidebar. The
sidebar has a date range selector and summary. It is
used to set the date range for the charts in the view.
As a result we can now add summary charts to the home view
and LTM/CP/Histogram charts to the Diary view. The weekly
summary chart is now deprecated.
Creating seasons has also been disabled on metric charts. We
will need to decide what clicking on an LTM chart should do,
and look at whether we want to keep the popup bubble or
adjust it.
There are some unfortunate performance degradations as a result
of this patch when selecting date ranges and switching between
charts in tab view. This needs to be addressed as a priority.
Follow up patches, part 2 and 3 will need to;
1. address performance degradations & cache results
2. introduce events in sidebar and as annotations on charts
3. implement click functionality on LTM charts (annotate vs
define a new season/range)
NOTE: existing HOME, ANALYSIS and DIARY chart setups will need
to be rebuilt since chart ids and properties have changed
in this patch -- do not raise a bug until you have deleted
and re-added the offending chart.
You can now add the summary chart to the diary
view to get a summary of the date range currently
being summarised on that view.
Once the Home view has its own sidebar that selects
date ranges you will be able to add it there too
and summarise seasons etc.
I finally got round to decoding the spinscan data
from computrainers. This is now implented in train
view.
A new chart is available 'Pedal Stroke' to show the
spinscan data returned by the computrainer.
I am unsure if the decoding is 100% on the money but
have been testing for a week and it seems ok.
Fixes#530.
The add chart menu had the ride plot on home
and charts were ordered in a relatively random
order.
This patch orders the charts by relevance for the
particular view and moves the 'Performance' chart
to the Analysis selection.
The drag and drop function for adding charts may
be functionally appropriate, but it is not intuitive
for new users.
This patch moves the add chart function to the toolbar
as a drop down menu. it also makes the chart selection
context sensitive - so on training view only realtime
charts are listed.
Fixes#517.
Updated the realtime view (Train) to put the
realtime controls in the toolbar and removed
the old realtime controls chart. They only
appear in Train view.
Additionally, the workout list and media list
are now in the sidebar under 'Workout Library'.
Finally, the first device configured is always
selected at startup, but this is a temporary
change until the realtime device wizard is coded
to set a default device.
Ghetto code with video selection and all the basic
building blocks in place. Playback is only via the
quicktime controls, paint issues abound and there
is a problem with deallocation of the movie object.
But the basic stuff is there, time to refine and iron
out all the little bugs.
Written whilst on hols in Gran Canaria :)
You can now place a ride navigator on the chart layouts, this allows
the user to configure many more columns and use the navigator to
browse and order the activity history in a log/journal format.
The default diary layout now has two tabs; one for the calendar and
another for the activity history.
There appears to be a few minor bugs related to column/chart resizing
that have been present for a while, but are more obvious now the navigator
is a chart in its own right. These will be resolved later.
Following changes
* added google Map and Streetview charts.
* changed the telemetryUpdate to use a const reference instead of a value.
* RealtimeData is const correct, or more const correct than it was...
* added a new resource files to support the new charts.
* changed the NullController to return a constant speed to help with development.
* Rides are now Activities
* Cyclists are now Athletes
This is just a first pass, no doubt many more
lurk within the codebase. Will raise a defect
to cover the remainder.
Fixes broken controls on train view, so we can now start stop
with the sidebar hidden and also adjust the settings for the
realtime dials on the layout.
Will need to think about saving the properties of the controls
to use last used settings.
Fixes#439.
Following on from the recent changes to the Google Map control
to support their new v3 API, this patch introduces an alternative
map view using the Microsoft Bing v7.0 API.
Remarkably, the MS and Google APIs are extremely similar. Porting the
original code to use the MS API was relatively trivial. It would
probably make sense to combine the two charts into a single chart
with an option to select a map provider.
However, at this point to help in code maintenance they are separate
charts. It is likely that they will diverge somewhat to take advantage
of the differing features offered.
The same functionality and basic colors/lines are available in the
Bing map as the Google one. We should look at adjusting, since the
Bing map styles are more detailed and go to a much higher resolution
than Googles. As a result the current theme looks quite clumsy on
a Bing map and could be changed to use more strident colors and
take advantage of dash polylines (for example).
An update to the ride list on the left hand side
to enable the user to choose and sort or group-by
metrics, metadata fields and ride information.
In addition, the sidebar has been 'improved'
cosmetically and to require less screen estate.
Also, the ticks and frames on plots have been
adjusted to be more aesthtically appealling.
There is more to come on the look-and-feel front,
but this patch heralds some work on the sidebar
which needs to be resolved.
The training view (aka realtime) is now configurable
allowing users to drag and drop appropriate charts
and dials onto the main view.
The controls for this view are static and comprise the
old controls with start/stop buttons, device selections etc.
I have removed deprecated code too, the following are removed
from the repository;
* ViewSelection
* RealtimeWindow
* TrainWindow
* TrainTabs
Fixes#290.
As part of the ongoing preparation for training mode to support
a more configurable layout the workout (ergfile) plot is now
a window that can be dragged and dropped onto a layout.
The realtime plot is now a chart than can be dragged and dropped
onto a window layout. This is part of the preparation to move
the training view to use be configurable, aka home window.
The home window layout will soon be extended to cover
realtime and analysis views. In preparation for that
some additional charts are being created.
This patch introduces the metadatawindow which only
contains the metadata fields (i.e. no ride summary).
Update to training mode to improve the UI and overall
user experience. This initial patch introduces:
* Video Window - but ghetto and not fully functional
* Congigurable - drag and drop 'dials' onto homewindow
In future updates we need to:
* Support Video fully - Only Linux in this patch
* HomeWindow - Make Training mode the same as HomeWindow
* More Dials - Support metrics (e.g. BikeScore)
* RT Charts - Make RT plot drag/drop and support other
types of charts (e.g. Time In Zone)
* Controls - Add more controls for FFWD/REW, Skip etc
This patch has been tested on Linux ONLY. It is being committed
to support further build/deployment work for Win32 and Mac OSX.
If ICAL_INSTALL is not defined in gcconfig.pri
then diary/calendar functions are not compiled. This makes
libical an optional dependency, like libkml, libqwtplot3d et al.