* Simplified design and concept
* Sticking closer to the original schedule
* Added option to keep gap days (front and back)
* Added option to use originally planned dates
* Removed options to insert rest days or spread same day activities
* Improved source range preselection
RouteWindows has beeen inactivated for years,
Replaced by a more flexible Python chart added
to default layout.
Required Jinja2 package added to included Python.
[publish binaries]
Fixed a off-by-one-error when highlighting linked activities on click.
This error missed linked activities in the last row of the month view.
Additional: Measure-dialog in day view automatically focuses the first
field and selects its content. This saves a click and manual deletion
of content when adding or editing data.
Status Quo: When executing a planned activity early, its load is counted
twice: Once from the planned activity (future), once from the actual
activity (past)
This fix excludes such planned activities from calculation (while
keeping unlinked ones)
AthleteView
- The original structure has been retained, with numerous additions/changes
- New AthleteCard placement, now takes the first available space, supports the dragging of tiles and prevents overlapping issues
- The currently selected athlete's card is now highlighted
- Athlete switching via avatar click
- New buttons, delete, backup,etc
- New actual activity, planned activity & unsaved activity figures
- The first opened athlete can now be closed
- New button state and label management code
- Most events are now registered once on the AthleteView, which updates the athlete cards, this is required as some actions update other cards, like the change of the selected athlete.
MainWindow
- Close button is re-enabled in the tabbar.
- To allow the closure of the initial (bootstrap) athlete, no signals, events or similar can be attached to the athlete's context that have a lifetime greater than the athlete (now it can be closed). I have reviewed all uses of the bootstrap context within MainWindow and have modified a number of classes to ensure they don't use or store the bootstrap context, or in the case of the searchbox they are updated when the selected athlete changes.
- The actionPlan start & stop handlers cannot be connected to the bootstrap athlete now, and it probably wasn't right if more than one athlete is open and the bootstrap isn't the current athlete, so now these are attached to global context events, and these are triggered by the currently selected athlete context events, see context.h.
- The tabbar self generated events are now blocked when an athlete is being closed, as this led to multiple athlete selections ( I think this maybe an existing GC issue), this generated unwanted events when the current athlete was switched and the old athlete was removed from the tabbar, see athleteTabbarChange(). This was the issue that took time to track down.
- The WebEngine paths are initialised, see PR: #4824
- Removed the unused no parameter version of closeAthleteTab()
- Removed the commented out MAC code in switchAthleteTab, I couldn't see its relevance
- Removed the comment about needing a mechanism to show unsaved rides, the unsaved button on the AthleteCard provides the overall number, so I think this sort of addresses this issue.
- Moved the New Athlete option from the Athlete->Open sub menu to be a top level Athlete->New Athlete option, I think this aligns with the usual new, open, close options in other applications
NewSideBar
- This class no longer requires the bootstrap athlete context to register for configChanged() events, and it probably wouldn't have received configChanged() events when another athlete was the current athlete. It now uses the global configChanged() event.
RideImportWizard, MainWindow & SaveDialogs
- A number of the warning dialogues now indicate which athlete they relate to, to help understanding when they opened/closed quickly.
Library
- Library was being passed the bootstrap athlete context, but was only ever extracting the gcroot path from it
ChartSpace
- Removed the athlete context held in GraphicsView, as it was only ever using MainWindow pointer, so it now has a mainwindow pointer, as its athlete context could now be deleted.
OverviewItems
- Changes to the chart space item buttons to allow the background colour to be changed.
CloudService
- Context protection in case it is deleted whilst the thread is running in the background
LTMSidebar
- Removed the initialised and unused maxLength variable
[publish binaries]
Removing the explicit copy-constructor and operator= from
GenericSeriesInfo introduced by #4841.
Instead setting user1-4 explicitly to nullptr when duplicating a series.
[publish binaries]
Since isPlanned is more consistent with other functions s.t.
isRun, isSwim, etc. Planned function was introduced by #4670
but it is intended to be used starting with v3.8 Planning features.
* Options:
* Include all planned activities
* Include no planned activities
* Include upcoming planned activities
* Include upcoming or missed planned activities
* Tooltip shows if an activity is skipped in the summary
* Added new filter type to Specification
[publish binaries]
This reverts commits b716c547cd and 9087c0df99.
It is a problematic non-functional refactoring which doesn't account
for the impact on external representation of the changed
index, the first problem detected was fixed in the complementary
commit but it also breaks chart import/export and likely other
functionality without a clear benefit.
I should not have merged it, sorry for the inconvenience.
[publish binaries]
* New chart to visualize the adherence to the current plan
* Allowing retrospective analysis of behavior: Shifted, missed,
completed, unplanned activities
* Grouping is always on a monthly basis
[publish binaries]
* Added safeguards
* Blocking signals during construction
* DateRange no longer inherits from QObject since signal 'changed' was nowhere connected in the codebase
* Safeguards when dragging seasons; preventing phases from being dragged
* Preventing the use of dangling pointers when creating a new season
[publish binaries]
As ICalendar is not a real UI class and is never added to any layout, it
overlays the menubar, preventing opening the first two entries. Using
QObject instead of QWidget as superclass fixes this issue
Use of TCore from XDate was introduce by #4207, but when it is not
available it is still derived from HR, so we need to enable Show TCore
in both cases.
Fixes#4832
Changes from v3.8-DEV2601
3b5ec90 Fix bug in RideMetadata
9087c0d Combine view indexes and view relevance definitions into single enumerated type (#4795)
a0fe8af Planned activities: Keeping track of original date (#4822)
31d8708 Fix default Plan layout
a124799 AppVeyor - Refactor Windows build scripts (#4820)
d8b10fe Cloud Service creates unnecessary GlobalContext instances (#4823)
40db2bc Standardize how the config is created for releases. (#4784)
6ab9950 AppVeyor - run lupdate on Windows
a36f527 Copy & Paste for planned activities on calendar (#4819)
dfd932d Fit file import - don't crash on malformed files
2eaf1bc Upgrade Python, Pandas, and SIP versions (#4747)
b00d3b7 Update German translation
4db88fa Update translation files
663526c Choose cyclist default to no avatar (#4814)
f6d4f6a Using "actual activity" instead of "completed activity" (#4813)
253b220 Add Zoomed Elevation Widget to Graphical Meters For simulation workouts without GPS data
b0d16d1 Add reconnect attempt timer after BT40Device unexpected disconnect (#4812)
c85da47 Fix typo in Nonzero Average Power description
07e673d Selectable show/hide planned activities (#4811)
1a4dd1d Updated Time Range context menu (#4808)
a00e276 Dialog to build filter queries for similar activities (#4805)
749a21d Train mode: Improved readability for ErgFilePlot (#4806)
3e8c6fe Updating power values of planned activities with linked workouts (#4799)
1c69798 Fix Edit menu disappearing when changing languages on macOS (#4797)
[publish binaries]
* Planned activities: Keeping track of original date
* Adding original date to planned activities
* Resetting the original date when copying planned activities
* Showing original planned date in calendar tooltips
* Ensuring metrics get recalculated when moving, shifting, copying
activities
* Ensuring all tags are written when moving or shifting activities
To cleanup appveyor.yml and to match macOS/Linux scripts:
- Move install code to appveyor/windows/install.ps1
- Move after_build code to appveyor/windows/after_build.ps1
Continuation of 40db2bc8ec
Build configuration for Windows was moved from appveyor.yml to appveyor/windows/before_build.ps1
and based on gcconfig.pri.in to match the other platforms, Python config is taken from PATH too.
We could do the same with install and after_build too.
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
* Planned activities can be copied
* Pasting:
* Month view: Target time is the same time as the source activity
* Day + week view: Time at mouse pointer is used as target time
* If the slot at target time is not long enough to take the full
activity, the closest free slot is used
* If no free slot could be found, the activity is pasted at a free
start time (h:00, h:15, h:30, h:45)
* Night hours (midnight until start hour + end hour until midnight)
are considered blocked
Python is moved to 3.11 and packaged in Appveyor. This version is a good spot in the lifecycle.
Packaged SIP at the current version, I needed this to get around some of the reparsing that was required.
Eventually this will break but make -f Makefile.SIP likely creates a new build, we should do this at
every "major" release. Unfroze the rest so it can move freely.
Add iterator support to GoldenCheetah container data types in Python. This avoids the Pandas regression that held us back.
Added code signing for MacOS as this was a requirement to run my local binaries and unfortunately needed to rewrite the build.
This puts us at a good jumping off spot for building a universal Mac binary but there's a lot of work left.
Changes from v3.8-DEV2601
4db88fa Update translation files
663526c Choose cyclist default to no avatar (#4814)
f6d4f6a Using "actual activity" instead of "completed activity" (#4813)
253b220 Add Zoomed Elevation Widget to Graphical Meters For simulation workouts without GPS data
b0d16d1 Add reconnect attempt timer after BT40Device unexpected disconnect (#4812)
c85da47 Fix typo in Nonzero Average Power description
07e673d Selectable show/hide planned activities (#4811)
1a4dd1d Updated Time Range context menu (#4808)
686f431 Revert to Qt 6.5.3 for macOS builds
a00e276 Dialog to build filter queries for similar activities (#4805)
749a21d Train mode: Improved readability for ErgFilePlot (#4806)
3e8c6fe Updating power values of planned activities with linked workouts (#4799)
1c69798 Fix Edit menu disappearing when changing languages on macOS (#4797)
[publish binaries]