Commit Graph

54 Commits

Author SHA1 Message Date
Damien
7f54c3d5bc Add torque on the plot
Fixes #245.
2012-02-13 19:34:49 +00:00
Damien
b4102d4625 Plot relative headwind
Fixes #131.
2012-02-12 19:08:30 +00:00
Damien
2f9130cd76 Qwt 6.0.1 Support
Upgrade to QWT 6.0.1, but still uses a locally patched copy
since support for 8 axes has not been included, despite it
being a relatively simple patch.

Fixes #634.
Fixes #567.
2012-02-12 10:43:15 +00:00
Damien
3058b3e9c6 Reorganise intervals by drag and drop
The interval view now allows the user to drag and drop intervals
up and down in the list.

We could extend the drag and drop of intervals to support analysis
of segments/intervals from multiple rides in the future too.

Fixes #405.
2012-01-21 21:16:35 +00:00
Damien Grauser
8d3d89d44d Add temperature to AllPlot
Fixes #536.
2011-12-07 21:55:35 +00:00
Mark Liversedge
9d45c100e4 Fix setByDistance bug in allplot
setByDistance was not being honored in allplot upon
startup (setting properties). Similar bug to those
affecting grid, stack etc.
2011-09-05 15:37:31 +01:00
Mark Liversedge
926bd44e3d AllPlot select left-click in stacked view
Missed off in the patch to swap zoom and select
mouse actions in LTM / AllPlot.
2011-09-03 12:17:09 +01:00
Mark Liversedge
d1e0702b94 Swap Zoom and Select on LTM/Ride Plot
This is a perennial issue for new users. The default
action when click dragging on a chart is to Zoom -- this
was probably right when we had no span sliders or stack
view (and no facility for marking intervals either).

But now, most users will expect click and drag on a metric
chart or ride plot to mark an interval or date range.

We get regular feature requests and bug reports related to
this -- basically the mouse actions are not intuitive.

Where selection is not meaningful (e.g. histogram) then
left click will zoom. This should be reasonably intuitive
to most users.

Fixes #398.
2011-09-03 11:13:45 +01:00
Mark Liversedge
326c423cb7 Re-instate zoom interval in MainWindow/AllPlot
Added a new signal to MainWindow to trigger
a zoom to interval. This signal has been trapped
in AllPlot (Ride Plot), but will also need to
be supported in;

* Ride Editor - highlight/zoom to interval data
* Aerolab     - Same as ride plot
* Maps        - Zoom in to section
2011-08-29 11:08:06 +01:00
Mark Liversedge
8c70f99561 Stacked View honours Chart Controls
Amazingly, the stack plot does not honour the chart
controls. If you select ony a single data series it
will still display all series.

There was a //XXX 'todo' placeholder in the code for
this which has now been completed.
2011-08-28 10:08:37 +01:00
Mark Liversedge
4d9399fa2f Fix AllPlot smoothing property
Fixes AllPlot to use the chart properties for smoothing
rather than overriding with application settings (old
way of saving state in v2 and lower).
2011-08-28 00:38:35 +01:00
Mark Liversedge
3bb397bbf2 More configurable Ride Plot
Enhanced ride plot;

* Curves can be shaded (this is particularly
  useful when only selecting a single curve)

* Span slider can be hidden (this is useful
  when you want a 'smaller' plot, e.g for a
  single curve, but multiple plots on tile view)

* Curve selection is set/unset from properties.

There is a repeated 'meme' with regards the ride
plot checkboxes for data series (hr, cad etc). They
are to choose the series to display and NOT to show
which series are available.

If you choose to display HR and HR is not present in
the ride file it is still VALID to set the checkbox,
but of course nothing will be plotted. In this way, you
can define a chart for a specific data series and it
will display whatever is VALID as you select different
rides.
2011-08-27 22:27:20 +01:00
Mark Liversedge
df987b8d96 Fix AllPlot delete ride crash.
Fixes #431.
2011-08-27 17:19:54 +01:00
Tom Weichmann
8ee8144674 New ints show mph and mi + extra digit for dist.
Fixes #424.
2011-08-23 09:56:47 +01:00
Mark Liversedge
c7d918bc02 Honour Show grid property
AllPlotWindow sometimes resets/ignore changes
to show grid. This patch fixes this.
2011-08-20 12:16:48 +01:00
Damien
09edfdafa4 Altitude scale present with no altitude data.
Uncheck the channel if not present. Fixes #295.
2011-08-02 09:21:40 +01:00
Mark Liversedge
4b567a7681 Reinstate Tab view
After discussion on the list the utility and popularity of
the original tab view was restated. This patch reinstates
the tab view and attempts to unify the Qt tab widget with
the general look and feel of the application.
2011-06-04 17:12:17 +01:00
Mark Liversedge
cb3f752fa7 Simplify and Clean UI
Less jarring UI with simple use of color and
no pixmaps to make a clean look. Will need
more work to get consistent across the code
base.

A simple and clean UI is starting to emerge.
2011-06-01 21:46:31 +01:00
Mark Liversedge
f39c3361c8 Sidebar, Ride List and Aeshetics
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.
2011-06-01 16:34:24 +01:00
Mark Liversedge
5e1c5897f7 Make Analysis view configurable
You can now configure the Analysis view to drag and drop
charts on the page and lay them out etc. A default setup
displays basic data such as ride summary, histograms and
ride plot.

MainWindow still needs a bit of a tidy-up as the basic
code has been edited and re-edited by a cast of thousands
and its a bit of a mess as a result.
2011-05-15 14:34:34 +01:00
Mark Liversedge
1b25e5049b Less jarring use of pixmaps in look and feel. 2011-04-18 22:48:49 +01:00
Mark Liversedge
c8c6c22ab7 More NULL ride bug fixes
The controls for the RideEditor (find) and AllPlotWindow
still try and do their thing when the current ride item
is NULL. This was either because it wasn't checked (or
expected) or the widgets in question were not notified. This
patch fixes this.

When I get a chance the whole codebase needs to be refactored
to gracefully handle NULL rideItems -- each plot/window should
clear state when it is notified that NO ride is selected.
2011-04-17 21:39:16 +01:00
Josef Gebel
5d41b6af7c Fix AllPlot Show by Distance Bug
I discovered a crash of GC when doing the following:
* Load two rides (you can load the same ride for 2 different days)
* Go to the Ride Plot tab
* At the bottom, choose "x-Axis shows distance"
* Switch rides in the "All Rides" widget
* GoldenCheetah should crash. At least, it does for me when I load the attached ride file.

Fixes #242
2011-04-17 18:32:16 +01:00
Mark Liversedge
805e74de5a Inital V3 Branch 2010-12-30 17:35:23 +00:00
Mark Liversedge
b56eb0b455 Fix lots of SEGV in AllPlot for new cyclist (rideItem is null). 2010-07-30 06:43:54 +01:00
Robert Carlsen
d89520079d Updating stack zoom control enabling logic. 2010-07-29 21:16:22 -04:00
Robert Carlsen
91f3c54821 Disable stack zoom controls when stacked view is disabled. 2010-07-29 02:16:22 -04:00
Mark Liversedge
94bdd38f7d Fix Imperial Show By Distance on AllPlot
The recent patch for allPlot zooming does not display the full plot
properly when the user has selected imperial units and is displaying
by distance (not time). This minor fix corrects this.
2010-07-28 20:23:01 +01:00
Mark Liversedge
67293724f7 Scrolling AllPlot and Tooltip
Introduce a span-slider on the normal Ride Plot chart to enable
users to select a range to plot and scroll left and right. The
zoom to interval function now uses this slider rather than setting
a zoom range. Tooltips are now displayed on the normal and stacked
views to assist in reviewing specific data points.

Old style zooming still works as expected, but scrolling at a zoom
level is not yet implemented.

The qxt widget 'QxtSpanSlider' has been placed in the top
level directory (GoldenCheetah/qxt) alongside the qwt widgets to
avoid adding another dependency.

A number of optimizations have also been introduced to speed up
plotting in general. A new color setting for the thumbnail plot
has also been introduced. Refresh of the plot when data is changed
in the editor has been fixed. The zoom scale up/down widgets are
also disabled when in normal mode to avoid the bug highlighted by
Robert Carlsen.

Fixes #122.
2010-07-27 19:46:35 +01:00
Mark Liversedge
3fd6f05850 Ride editor and tools
A new tab 'Editor' for manually editing ride file data points and
associated menu options under 'Tools' for fixing spikes, gaps, GPS
errors and adjusting torque values. A revert to saved ride option
is also included to 'undo' all changes.

The ride editor supports undo/redo as well as cut and paste and
"paste special" (to append points or swap columns/overwrite
selected data series). The editor also supports search and will
automatically highlight anomalous data.

When a file is saved, the changes are recorded in a new metadata
special field called "Change History" which can be added as a
Textbox in the metadata config.

The data processors can be run manually or automatically when a
ride is opened - these are configured on the ride data tab in
the config pane.

Significant changes have been introduced in the codebase, the most
significant of which are; a RideFileCommand class for modifying
ride data has been introduced (as a member of RideFile) and the
RideItem class is now a QObject as well as QTreeWidgetItem to
enable signalling. The Ride Editor uses a RideFileTableModel that
can be re-used in other parts of the code. LTMoutliers class has been
introduced in support of anomaly detection in the editor (which
highlights anomalies with a wiggly red line).

Fixes #103.
2010-07-17 14:33:39 +01:00
Mark Liversedge
b7d3d12485 fix SEGV in AllPlot on manual/null rides
fixes #71
2010-05-01 10:19:46 -07:00
Sean Rhea
1007ab3035 make sure "current" is initialized
Also, a nit: fix indentation of 1 line in AllPlotWindow.h.
2010-04-11 17:19:33 -04:00
Mark Liversedge
0f0f7bed98 Remove update 'flicker' when tab selected
The recent patch to reduce redraws when rides are selected
causes each tab to redraw whenever the tab IS selected. This
patch reduces this by remembering the current ride plotted.

It also fixes the "double draw" in GoogleMapControl and AllPlot
when selected for the first time.
2010-04-04 17:28:07 -04:00
Mark Liversedge
a6a3c90c54 User Configurable Colors
A new config pane for defining color preferences for chart
curves, shading, background and grid lines et al. Default values
echo the current hard-coded values.
2010-04-01 10:29:13 -04:00
Sean Rhea
ac0876ac3c combine setActive and rideSelected
And pay attention to MainWindow::activeTab, such that only the active
tab redraws itself when changing rides.  This change really increases
GC's responsiveness when scrolling through the ride list.
2010-03-21 22:03:12 -07:00
Damien Grauser
32c52a02ca remember user's preference for stacked view
...and add zoom.

fixes #58
2010-03-12 10:45:08 -05:00
Damien GRAUSER
9f81d92088 add ride plot stacked view 2010-03-06 11:47:55 -05:00
Mark Liversedge
d85c5dc8b2 add bring to front/send to back to PfPvPlot
Another rightclick menu for intervals, adding a bring to front and send to
back option but only when viewing the pfPvPlot, additionally the algorithm in
PfPv plot for determining which interval a point is used for has been adjusted
to fully populate every interval curve where appropriate (and incorrect
comments and redundant code have been removed).

IntervalItems now have a display sequence number so when you have
overlapping intervals you can bring to front and send to back on the
PfPv plot. The display sequence could be used on other plots if/when
they distinguish between intervals.

Previously, the coloring of intervals on PfPvPlot was determined solely
by the order they were defined which could be quite confusing.
2009-12-22 09:51:02 -05:00
Mark Liversedge
c01d0f969e RideFile reading refactoring
With the introduction of the rideSelected signal the RideFile was
opened (as previously) by the RideSummaryWindow::htmlSummary()
member. In some cases, this signal was processed by RideSummary window
AFTER the other charts (AllPlot etc) this results in 'No data' being
shown on other charts.

This patch moves the file reading to RideItem::ride() which was previously
a public RideFile * (that is now a protected member ride_). As a happy by
product it removes the need to check if the file has already been read
across all other functions ensuring in-core values are not accidentally
overwritten. The read errors are made available by a new RideItem::errors()
member.

This modification is required to support the RideImportWizard in freeing
loaded RideFiles during batch import to ensure virtual memory is not
exhausted when large numbers of files are imported at once. This modification
is also included in this patch.
2009-12-18 19:39:29 -05:00
Mark Liversedge
95f5af49cb Add Average Power in Brackets to Selection Name
When a user creates a new interval by selecting a section of a ride
on AllPlotWindow the newly created selection now has the average power
for the selection placed at the end of the selection name in brackets.
2009-12-14 10:34:46 -05:00
Damien Grauser
edac2110b5 add tr() for some QString and add french translation 2009-12-13 15:04:51 -05:00
Mark Liversedge
9e403289fc IntervalItem::name removed
The class member IntervalItem::name is redundant since it is a duplicate
of the text() member of the base class QTreeWidgetItem. By removing it
we both simplify the code and remove the need to keep name and text in
sync when renaming and creating intervals.

As a result the itemChanged signal that was connected for renames and
then disconnected when the items are cleared can be connected once
and no disconnect is neccessary.

This connect/disconnect oddity was originally to avoid a SEGV that
resulted from accessing text() whilst the QTreeWidgetItem was being
destroyed. The code for removing intervals when a new ride is selected
no longer destroys and recreats MainWindow::allIntervals (which was also an
artefact of the original code to avoid a SEGV).
2009-12-13 13:07:17 -05:00
Sean Rhea
f45ea33f73 remove global mainwindow pointer from AllPlotWindow.cpp
Also remove ugly const cast by introducing MainWindow::mutableIntervalItems.
2009-12-13 11:02:32 -05:00
Sean Rhea
067a012ff3 remove global mainwindow pointer from AllPlot.cpp 2009-12-13 11:02:32 -05:00
Sean Rhea
e5df8b6401 just call MainWindow::rideItem 2009-12-12 22:02:02 -05:00
Mark Liversedge
7663f220a8 Interval features and new GC file format 2009-12-12 11:41:35 -05:00
Sean Rhea
a4109494bd introduce MainWindow rideSelected signal
...and use it to update the various tabs when a ride is selected.
2009-12-10 13:13:10 -08:00
Sean Rhea
381d146428 new zonesChanged signal 2009-12-10 10:16:58 -08:00
Sean Rhea
23ae2925aa make ride plot work for manual rides
I don't like disabling the ride plot tab when I select a manual ride,
because I frequently scroll through the ride list to search for a ride
by the shape of its ride plot, and every time I hit a manual ride I get
bounced to the CP plot tab.  So rather than disable the ride plot tab,
just make it show an empty plot.
2009-11-09 09:20:24 -08:00
Sean Rhea
2eca0d97af setAllPlotWidgets doesn't need to call show*
It's only called from setData, which calls AllPlot::setData right afterwards,
and the latter will do all the things that the show* functions do.
2009-11-07 10:32:00 -05:00