Moving the code intertwined into MainWindow for
the analysis view sidebar; activity list, intervals
and calendar into a new AnalysisSidebar class.
WARNING!
This is a work in progress checkpoint commit
as the sidebar menus and context menus have
not yet been migrated out -- this will be done
in the next commit or two.
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.
.. warnings from Xcode 4.6 (still some remaining)
.. and deprecated Quarqd code (we have native ANT now)
.. and MultiWindow deprecated (it isn't finished)
.. because it blocks the event loop that hosts the WF API
class. And we definitely want it to stay on the main event
loop along with the native WF classes and delegates.
I really hate the way QMacStyle changes the style of
a button based upon its size. Its really annoying, especially
since you cannot override it.
Updated last couple of commits to have no effect on Mac where
they make some of the buttons in the preferences pane look ugly.
There were a bunch of preferences that really
weren't needed; STS/LTS starting values were not
being used (and logic flawed anyway).
The mode/days to estimate bikescore were only used
in one place (manual ride dialog) so moved there
instead.
Fixes#396.
Still defaults to the original value of 3 meters. Because
the metrics need to be recalculated when it changes we also
add the hysteresis factor to the zone fingerprint CRC.
Big refactor of the code since it was really messy
and also moved to a Mac style config dialog with
a bit of Mac UI polish.
Moved many of the pages around to make it more user
friendly.
Removed the fortius and proxy code altogether
and removed the measures config since we will need to
look at this in v3.1 and don't want to have to add
backward compatibility support for users that change it.
Fixes#358.
This patch keeps the original english name of SpecialFields and SpecialTabs
as internalName, to preserve compatibility, while it uses a translated
displayName for user interfase in other languages.
Recent commit 8eee2ddb got some of the logic
the wrong way round for converting weight to KGs
before saving (and when switching between metric
and imperial units).
We always store weight in KGs.
Uses the QT proxy query and application wide proxy setting
to allow users behind a corporate firewall to use network
functions (maps, TP.com, ergDB etc).
Fixes#27.
But NOT for win32 and ONLY on the sidebar and tabwidget (for
performance reasons). Since most users prefer the tabbed look
anyway this should be ok.
Performance of the graphicseffect has improved remarkably in
the 2 years since we tried it before. Worth experimenting with
since it adds a bit of polish to the look and feel.
Users turn it on and off in options, it is off by default.
power zone settings dialog allowed new entries with CP=0. This was written
to power.zones, but the parser refused to read these files, afterwards.
This patch rejects new zones with CP=0.
Introduce a wizard for adding realtime devices since it
is prone to user error, is relatively complicated and is
something most users will only ever do once or twice.
There are several logical updates within this patch:
First; Fix intermittent ANT+ not working
* LibUsb - check bufRemaining is > 0 not non-zero
* LibUsb - Always reset the USB stick on open
* ANT.cpp - Support > 4 channels on USB2
* ANTChannel - Do not use pairing, but always
* unassign, assign and set channel id.
Second; Fix device discovery
* Find and discover support in realtime controllers
* Extend Serial.cpp to cover more Serial devices
* Support for 4 or 8 ANT channels for USB1/USB2
Third; Introduce Add Device Wizard with
* General and Specific wizard pages for each device type
* Device pairing with telemetry display
* fixed compile time warnings
Fourth; Update Device Config Page
* use wizard to add new device
* remove edit fields, replaced by wizard
* remove pair, firmware buttons replaced by wizard
Fifth; Deprecate/Remove Device Types
* Null Device - used by developers only
* Quarqd client - replaced by Native ANT+
* GC Server - not implemented yet
I have also introduced a device specific wheel size
and flags for controlling the default selection and
sources for sensor data when in multi-device mode. These
are not yet supported in the code.
Fixes#611.
Fixes#497.
The seasons class emits signals to let
everyone know if the season config changes
at runtime.
The recent patch to add configuration of
seasons deleted and re-instantiated the
seasons member in MainWindow which breaks
updating across the code.
This patch fixes that.
So we can calculate speed from wheelRPM when working
with ANT+ speed sensors in realtime.
The config screen is still ugly as hell, but there is
another bug raised to resolve that.
Fixes#529.
Allow the user to add,delete and reorder
seasons in the config dialog.
Although the user could create and manipulate
seasons / date ranges in the LTM chart, this
provides a more coherent place to do the same
but also adds the ability to re-order seasons.
Fixes#399.
It is now possible to select multiple devices to
workout with.
To enable multi-device support a new setting in
tools->options (preferences on Mac) allows the
user to enable multi-device selections (this just
enables the user to select more than one device
in the side bar).
When a workout is started the user can select which
devices will supply which data.
This enables ANT+ devices to override information
provided by Computrainers or Fortius devices.
Fixes#578.
Add support for dual ANT+ power devices (in this case using
dual track SRM cranks). The two power devices are assumed to
represent power and alternative power.
The following changes have been made for this support:
* ANT+ device profile support multiple power devices
* Allow editing ANT+ device profile on Mac/Linux (it
is already available on Windows)
* When a second ANT Channel is assigned to power it is
set as alternative, and updates alternative watts
* RealtimeData now supports Watts and AltWatts
* AltWatts dial and associated color settings
* LRBalance dial to show difference between Watts and AltWatts
* Realtime plot plots watts and altWatts
Fixes#572.
Initial support for Tacx Fortius devices.
Note this requires libusb support to be present and will
work on Linux, Mac and Windows.
The handlebar buttons up/down will increase/decrease the
load/intensity in a similar fashion to the +/- keys on
the Computrainer controller.
The cancel button will stop a workout and the enter key
is used to mark a lap.
Slope and Ergo modes are supported, but we do not set the
brake at all if the speed is below 10kph, this is to
ensure it does not get burnt out when users 'grind'.
SPECIAL NOTE:
The Fortius handlebar controller is a Ez-Usb device
and requires firmware to be loaded when it is connected.
Since this is copyrighted by Tacx BV we do not distribute
it, instead, when the user sets up a Fortius device they
must also provide the file. Full instructions on how this
should be done are given when configuring the device.
Additionally, for Linux users udev rules should be added to
ensure that the USB devices are accessible to non-root users.
Fixes#538.
A menu option to upload ride files to the Strava website.
Original code from Justin Knotzke ported to v3 by
Damien Grauser.
If the ride has already been uploaded the upload menu
option is disabled, once uploaded a tag is set in the ride
with the strava id.
Fixes#519.
The LeMond revolution trainer has been analysed in
some depth by Tom Anhalt and as a happy by-product
idenitfied the power/speed curve.
Since Darren Hague had already added the ability to
approximate power from Speed when training on a turbo
this patch extends that to include the LeMond device.
All the analysis Tom performed can be read over on
wattagetraining.com here:
http://wattagetraining.com/forum/viewtopic.php?t=335Fixes#498.