diff --git a/fitnesstrax/app/gresources.xml b/fitnesstrax/app/gresources.xml
index b26eb63..a2d044b 100644
--- a/fitnesstrax/app/gresources.xml
+++ b/fitnesstrax/app/gresources.xml
@@ -3,15 +3,16 @@
style.css
-
- walking2-symbolic.svg
+
+
+ cycling-symbolic.svg
running-symbolic.svg
-
- cycling-symbolic.svg
+
+ walking-symbolic.svg
diff --git a/fitnesstrax/app/resources/walking2-symbolic.svg b/fitnesstrax/app/resources/walking-symbolic.svg
similarity index 100%
rename from fitnesstrax/app/resources/walking2-symbolic.svg
rename to fitnesstrax/app/resources/walking-symbolic.svg
diff --git a/fitnesstrax/app/src/components/day.rs b/fitnesstrax/app/src/components/day.rs
index 6c26f00..0402829 100644
--- a/fitnesstrax/app/src/components/day.rs
+++ b/fitnesstrax/app/src/components/day.rs
@@ -349,56 +349,53 @@ where
AddRow: Fn(Record) + 'static,
{
let add_row = Rc::new(add_row);
- /*
- let walking_button = gtk::Button::builder()
- .icon_name("walking2-symbolic")
- .width_request(64)
- .height_request(64)
- .build();
- walking_button.connect_clicked({
- let view_model = view_model.clone();
- let add_row = add_row.clone();
- move |_| {
- let workout = view_model.new_time_distance(TimeDistanceActivity::Walking);
- add_row(workout.map(TraxRecord::TimeDistance));
- }
- });
-
- let running_button = gtk::Button::builder()
- .icon_name("running-symbolic")
- .width_request(64)
- .height_request(64)
- .build();
- running_button.connect_clicked({
- let view_model = view_model.clone();
- move |_| {
- let workout = view_model.new_time_distance(TimeDistanceActivity::Running);
- add_row(workout.map(TraxRecord::TimeDistance));
- }
- });
- */
-
- let biking_button = gtk::Button::builder()
- .icon_name("cycling-symbolic")
- .width_request(64)
- .height_request(64)
- .build();
- biking_button.connect_clicked({
- let view_model = view_model.clone();
- move |_| {
- let workout = view_model.new_time_distance(TimeDistanceActivity::Biking);
- add_row(workout.map(TraxRecord::TimeDistance));
- }
- });
let layout = gtk::Box::builder()
- .orientation(gtk::Orientation::Vertical)
- .build();
- let row = gtk::Box::builder()
.orientation(gtk::Orientation::Horizontal)
.build();
- row.append(&biking_button);
- layout.append(&row);
+
+ for (activity, icon, label) in [
+ (
+ TimeDistanceActivity::Biking,
+ "cycling-symbolic",
+ "Bike Ride",
+ ),
+ (TimeDistanceActivity::Rowing, "rowing-symbolic", "Rowing"),
+ (TimeDistanceActivity::Running, "running-symbolic", "Run"),
+ (TimeDistanceActivity::Swimming, "swimming-symbolic", "Swim"),
+ (TimeDistanceActivity::Walking, "walking-symbolic", "Walk"),
+ ] {
+ let button = workout_button(activity, icon, label, view_model.clone(), {
+ let add_row = add_row.clone();
+ move |record| add_row(record)
+ });
+ layout.append(&button);
+ }
layout
}
+
+fn workout_button(
+ activity: TimeDistanceActivity,
+ _icon: &str,
+ label: &str,
+ view_model: DayDetailViewModel,
+ add_row: AddRow,
+) -> gtk::Button
+where
+ AddRow: Fn(Record) + 'static,
+{
+ let button = gtk::Button::builder()
+ .label(label)
+ .width_request(64)
+ .height_request(64)
+ .build();
+ button.connect_clicked({
+ let view_model = view_model.clone();
+ move |_| {
+ let workout = view_model.new_time_distance(activity);
+ add_row(workout.map(TraxRecord::TimeDistance));
+ }
+ });
+ button
+}