Porting the codebase to QT 5 (5.2) to get the
latest bug fixes, performance and improved platform
support.
This first part is to fixup the codebase to compile
on Qt 5, but some aspects have been broken (video).
The second part is to migrate from Qwt 6.0.1 to the
latest Qwt for multiaxis support.
The third part will be to fixup any platform specific
issues or issues identified at runtime.
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.
.. webBridge crash in QtWebKit for 4.8.4 (qt-bug 30403)
.. delete GoogleMap leaves webBridge orphaned which will
crash if intervals are created or removed.
We need a proper fix for the webkit issue which we will get
when we migrate to Qt5.
.. 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.
Hack to workaround QT webkit pretending to have gestures when
it doesn't is no longer needed. It also now breaks the grab
and navigation in the google map.
Fixes#349.
didn't have enough precision.
Found all (most) of the gps coord to string conversions and used a constant
to insure all conversions occur with the same precision.
Signed-off-by: Greg Lonnon <greg.lonnon@gmail.com>
The Google Map view uses a Web view which by default
attempts to handle drop events. This interferes with
the adding charts via drag and drop. This patch fixes
that.
JsonRideFile saved with 6 and not 11 digit precision
losing a lot of precision when saving.
Additionally, the Google Map used a similar precision
and this caused jaggies on the map.
The recent update for the Google Map window reduced the
precision geo-coordinates, this patch fixes that.
Additionally, the wait time was triggered after 60s which
should be 5 minutes (left in by mistake after testing).
Update to the Google Map window:
* Uses Google Maps API v3 (v3 is deprecated)
* Users can now select intervals on map
* Icons for start, stop, loop, pause
* Resize refresh no longer needed
Features removed or changed:
* 30s segments are now 60s segments
* Tooltip doesn't work with v3 API
Some more updates will come through later to
add greater control on what is shown on the map
and the shading to use (e.g. gradient, HR zone) and
the time interval to use.
Highlight entire route to make the route stand out
more obviously when power zone colour schemes are
subtle (or white).
Changes the window bar to the metadata field 'Route' if
it is present. This is done by introducing a new 'subtitle'
property on a GcWindow that can be set programmatically. This
is equivalent to the old 'title' above each chart.
A bit more love for tabs and other minor cosmetic tweaks.
* View now remembers style used (tab, scroll, tile)
* Allow user to re-order tabs
* Google Map border reduced
* Google Map refresh delay (to make UI snappy when resizing)
* Minor calendar cosmetics
* Use utf8 encoding on config files (language support)
More work to unify the tab view with the overall
UI look-and-feel, allowing you to remove and add
tabs via mouse over rather than the close tab
icon. Also added a number of cosmetic adjustments.
Fixed up PerformanceManager and ScatterPlot to
pick up on the chart fonts and tick size etc.
Removed some erroneous static members in the
ScatterPlot that caused a SEGV when adding multiple
charts (or cancelling an add then adding again).
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.
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 google map control creates a temporary file to load
which is not unique for each logged in user. This causes
permissions issues.
The use of a temporary file has been removed by replacing
the webView->load() call with a webView->setHtml() call. This
allows us to pass the contents as a string rather than a URL.
Fixes#331.
GoogleMapControl crashes when the sidebar is hidden then shown
before a map has been drawn. This is because the resize event
attempts to redraw the map before all private data has been
initialised (in this case rideData is empty).
When no ridefiles are available (new cyclist) or the last ridefile
is deleted the current ride will be null. In addition the ride
importer deletes the memory for a ride imported to ensure VM is not
exhausted on large imports.
This patch fixes a whole host of null errors across the codebase. They
were identified by creating a new cyclist, executing every menu option
and tab/chart and then importing a file choosing everything and then
deleting the file and choosing every option again.
This negative testing should be performed before every stable release since
it has identified at least 6 bugs which are almost certainly present in the
current V2 code.
blue marker = start of ride
red marker = end of ride
green markers = interval markers.
interval markers has the interval metrics displayed.
end marker has the ride summary displayed.
Fixes#169.
Patch changes the valid latitude/longitdue selection alogrithm.
Ensures that the data points are valid (-90<=Lat<=90, -180<=Long<=180)
Tightens up .WKO file import issues.
Allows for missed GPS data points of 0/0 in Garmin FIT files.
Changes mapping function to not plot invalid lat/long values.
Fixes#75
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.
RideItem or RideFile or dataPoints() may be null or empty. This
is especially true of manual ridefiles. This patch adds some
checks for this situation and acts accordingly. Additionally, the
disable/enable of tabs depending upon ridefile type has been
adjusted to also include files with not dataPoints.
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.
fixed the avg speed and alt
added a possible change for the maps issue
Maps tab is always showing, it will either show the ride data, or No GPS Data Present
Page loading is async with the ride being selected.
Weird WKO gps data issue reported by Mark L is fixed (hopefully) I see different results than Mark L
moved Sean's cp patch to the new location
Signed-off-by: Greg Lonnon <greg.lonnon@gmail.com>
The check in the maps code for whether a CP is set was backwards, causing
a segfault on the subsequent call to Zones::getCP(). To reproduce, create
a new cyclist and import a ride with lat/lng data. The import succeeds, but
GC crashes when you click "Save" and on all subsequent restarts.