Further MainWindow updates, this time moving the code
for working with intervals to the AnalysisSidebar and the
associate menus.
Ultimately, the functions for working with Activities and
their Intervals will move from MainWindow and Sidebars to
the ActivityCollection classes.
This is a step as we strip out MainWindow to just GUI
aspects.
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.
Slowly migrating code and data from the MainWindow
class to Athlete and Context classes.
This update moves the ride and interval lists and
data structures from MainWindow to Athlete.
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.
Because the chart settings are modal its a really bad
idea to open up a column chooser from there. So, by
default, we don't have a column chooser option on the
search/filter box -- it must be explicitly requested.
We therefore explicity set the column chooser from the
mainwindow and also from the ride navigator window.
If you delete and readd an activity after showing it on
the diary view you get a SEGV.
This is an edge case related to deleting the last activity
and going back to the blank state before importing another.
Actually there are 3 technical issues;
1. GcCalendar doesn't get notified by MainWindow when
there are no rides -- so it crashes on refresh
2. RideSummaryWindow doesn't get notified by home window
if its not visible
3. RideSummaryWindow should check rideItem isn't NULL before
trying to plot zones (but only for date range summaries)
Fixes#622
We now use a per-athlete setting to track if the last
time the athlete was opened GC shutdown gracefully.
If it didn't then we show a dialog box with some basic
data to use to debug / diag the problem. For now it is
just limited to;
* metric.log
* athlete directory listing (by modified time)
* app settings
We explicitly DO NOT include personal information such
as DOB, Weight, Sex nor critical information such as userids
or passwords.
This is a first stab at this, and we will almost certainly
improve it to include other .xml config files as well as
automatically posting an email (or similar).
Fixes#596.
We now maintain a build id which correlates to a release
version (or development version if we want).
Most importantly, when we increment the build id we get to
run some processing when the cyclist is opened to clean/prep
for this release.
I have added V3 RC3 as the first build id and it will
remove *.cpi and *.bak files as well as removing the
clucene index and metricDBv3 file.
Fixes#584.
Update to the histogram plot to now plot long term metrics.
It enables you to plot distribution of say, Intensity Factor
for a season or cycle.
You can select the y-axis metric too, so rather than just
plotting duration you could plot say, TSS accumulated for
different ride intensities.
Fixes#560
If you close or crash in fullscreen mode then it is
restored on startup but not in fullscreen mode. So
it is impossible to shrink -- this is particularly
relevant on Windows 8.
We now restrict the initial size to always be 60px
smaller in x and y than the actual screen size.
When the user free text searches or applies a data filter in
the top right toolbar search box it gets applied to any charts
that plot data from many rides, including;
- CP curve
- Calendar
- Histogram
- LTM
- TreeMap
- Summary
I need to update on a Mac to no longer use a Mac text search box
but now use a search filter box on the top right.
When GC is restarted after being closed full screen, the saved geometry
is larger than the actual screen size - resulting in the title bar being
drawn off screen & not easily reachable.
This patch checks whether the saved geometry is larger than the current
screen size, and resizes to the screen size instead of the saved values.
The search/filter selects in the activity list but doesn't
highlight the rides on the calendar.
This patch highlights the dates that have activities that
match with a red border and a red number.
.. added to the splitter handle context menu
.. also took IntervalItem.h and IntervalTreeView.h from MainWindow.h
coz I was getting pissed with recompiling everything when changing it.
Thats why so many other files have been changed in this commit.
Fixes#338.
.. will use entered text and append 1,2,3 etc
.. or if entry ends with a number, will start from that
.. eg; "Int#3" will result in "Int#3", "Int#4" .. "Int#n"
Fixes#513.