Savanni D'Gerinel
525cc88c25
Add buttons with icons to represent workouts
2024-01-31 09:12:55 -05:00
Savanni D'Gerinel
251077b0c1
Implement the Edit Cancel button
2024-01-31 09:12:55 -05:00
Savanni D'Gerinel
ce8bed13f9
Render time distance details in the day detail view
2024-01-31 09:09:04 -05:00
Savanni D'Gerinel
279810f7d7
Show a summary of the day's biking stats when there is one
2024-01-31 09:09:04 -05:00
Savanni D'Gerinel
772188b470
Set up text entry fields for all of the common metrics
2024-01-31 08:56:54 -05:00
Savanni D'Gerinel
bc31522c95
Add the on_update callback to TextEntry, and test the component
2024-01-31 08:44:46 -05:00
Savanni D'Gerinel
6c68564a77
Create a function which safely initializes GTK once
...
This is only available in test code, and it allows GUI component tests to run without having to worry about double-initializing GTK
2024-01-31 08:40:55 -05:00
Savanni D'Gerinel
55c1a6372f
Rename the formatters
2024-01-31 08:38:17 -05:00
Savanni D'Gerinel
2cbd539bf4
Add a type for managing Time of Day values
2024-01-31 08:27:42 -05:00
Savanni D'Gerinel
7d14308def
Create automated testing for weight, duration, and distance formatters
2024-01-31 08:10:46 -05:00
Savanni D'Gerinel
dcd6301bb9
Introduce structures for formatting and parsing Duration and Distance values
...
These aren't in use yet.
2024-01-30 10:11:30 -05:00
Savanni D'Gerinel
69567db486
Introduce a structure for formatting and parsing Weight values
2024-01-30 10:08:10 -05:00
Savanni D'Gerinel
f8d66bbb69
Update build tools for dashboard and fitnesstrax
2024-01-25 22:55:45 -05:00
Savanni D'Gerinel
3f9a7072eb
Fitnesstrax, version 0.3.0
2024-01-21 10:14:50 -05:00
Savanni D'Gerinel
7ec48ded5d
Make the day summary use the view model
2024-01-20 17:04:20 -05:00
Savanni D'Gerinel
9461c387fe
Simplify the weight editor
2024-01-20 16:05:33 -05:00
Savanni D'Gerinel
d4c48c4443
Add a step count editor field
2024-01-20 15:59:03 -05:00
Savanni D'Gerinel
9bedb7a76c
Tons of linting and get tests running again
2024-01-20 15:04:46 -05:00
Savanni D'Gerinel
1fe318068b
Set up a view model for the day detail view
2024-01-20 11:16:31 -05:00
Savanni D'Gerinel
18e7e4fe2f
Start setting up the day detail view model
...
I've created the view model and added a getter function for the weight.
I'm passing the view model now to the DayDetailView, DayDetail, and
DayEdit.
I'm starting to set up the Save function for the view model, draining
all of the updated records and saving them.
None of the components yet save any updates to the view model, so
updated_records is always going to be empty until I figure that out.
2024-01-18 09:00:08 -05:00
Savanni D'Gerinel
1c2c4982a1
Update the record in the detail view on save
2024-01-18 07:43:18 -05:00
Savanni D'Gerinel
c075b7ed6e
Just barely get the data saveable again
...
Starting to see some pretty serious limitations already.
2024-01-17 22:59:20 -05:00
Savanni D'Gerinel
56d0a53666
Fix how DayEdit deals with the weight field
2024-01-17 22:35:13 -05:00
Savanni D'Gerinel
b00acc64a3
Set up the ActionGroup component
2024-01-17 22:13:55 -05:00
Savanni D'Gerinel
104760c754
Be able to switch into edit mode
2024-01-15 23:27:55 -05:00
Savanni D'Gerinel
1e6555ef61
Create a day detail view
...
DayDetail, the component, I used to use as a view. Now I'm swapping
things out so that DayDetailView handles the view itself. The DayDetail
component will still show the details of the day, but I'll create a
DayEditComponent which is dedicated to showing the edit interface for
everything in a day.
The swapping will now happen in DayDetailView, not in DayDetail or an
even deeper component.
2024-01-15 15:53:01 -05:00
Savanni D'Gerinel
2e2ff6b47e
Create a Singleton component and use it to simplify the weight view
2024-01-15 13:20:23 -05:00
Savanni D'Gerinel
0007522b26
Extract the Weight and Time Distance widgets
2024-01-01 23:58:55 -05:00
Savanni D'Gerinel
b7b9b1b29f
Create an EditView "component"
...
This is a super tiny data structure that covers an edit mode, a view
mode, and an unconfigured mode. It's mostly a container so that views
don't have to preserve everything directly.
2024-01-01 23:49:31 -05:00
Savanni D'Gerinel
2e3d5fc5a4
Clean up the parameters to TextEntry and populate the field
2024-01-01 22:57:59 -05:00
Savanni D'Gerinel
a25b76d230
Create a validated text entry widget
...
I move the weight edit view into the validated text entry widget, and I
work on some of the unfortunate logic in the weight blur function. I've
left behind a lot of breadcrumbs for things that still need to be done.
2023-12-31 11:18:15 -05:00
Savanni D'Gerinel
9970161c30
Set up a lot of the files necessary for a desktop app
2023-12-29 13:13:22 -05:00
Savanni D'Gerinel
7bd4885b09
Save new information to the day detail view and to the historical view
2023-12-29 09:24:37 -05:00
Savanni D'Gerinel
b5dcee3737
Update the historical view when a change happens in the db
2023-12-28 22:47:47 -05:00
Savanni D'Gerinel
0c3ae062c8
Save real data to the database. Load data on app start.
2023-12-28 22:46:44 -05:00
Savanni D'Gerinel
f422e233a1
Record data to the database
...
This isn't recording real data. It's basically discarding all
information from the weight edit field. But it is creating a record.
2023-12-28 22:43:56 -05:00
Savanni D'Gerinel
7a6e902fdd
Create placeholders in the historical view for days that are unpopulated.
2023-12-28 22:36:44 -05:00
Savanni D'Gerinel
6d9e2ea382
Switch to the updated emseries record type
2023-12-28 22:36:40 -05:00
Savanni D'Gerinel
04a48574d3
Develop a pattern to detect clicking outside of a focused child
...
Be able to respond to blur events and potentially be able to record weight.
2023-12-28 22:34:09 -05:00
Savanni D'Gerinel
e13e7cf4c3
Create a widget that can show the weight view and edit modes
2023-12-28 22:31:11 -05:00
Savanni D'Gerinel
383f809191
Open and style the day detail view and add it to the navigation stack
2023-12-28 22:31:07 -05:00
Savanni D'Gerinel
d269924827
Refactorings and dead code removal
2023-12-28 22:20:30 -05:00
Savanni D'Gerinel
8049859816
Clean up showing the welcome and historical screens
...
Swapping is now done in dedicated functions instead of a big pattern
match.
After selecting a database, the app window will apply the configuration
by opening the database, saving the path to configuration, and switching
to the historical view.
2023-12-28 21:45:55 -05:00
Savanni D'Gerinel
ac343a2af6
Switch from channel-based communication to async calls into the core
2023-12-28 19:09:12 -05:00
Savanni D'Gerinel
5cd0e822c6
Update to adwaita 1.4, and add a navigation page stack
2023-12-28 13:21:42 -05:00
Savanni D'Gerinel
fe5e4ed044
Save the views as their original widgets
...
This allows me to directly reference functions that occur on those
widgets without losing them behind a gtk::Widget upcast or needing to
later downcast them.
2023-12-28 12:59:29 -05:00
Savanni D'Gerinel
e30668ca8e
Drop DateTimeTz from fitnesstrax
2023-12-28 12:51:50 -05:00
Savanni D'Gerinel
af8f9b0244
Generate some random data and feed it into hte historical view
2023-12-24 19:13:49 -05:00
Savanni D'Gerinel
1b3ca7439d
Add styling to the day summary
2023-12-24 12:00:12 -05:00
Savanni D'Gerinel
3dc8be0d26
Render a weight record
2023-12-22 18:53:29 -05:00