Show existing time/distance workout rows in day detail and editor
This commit is contained in:
parent
2277055f84
commit
4fd377a3f1
|
@ -10,4 +10,8 @@
|
||||||
<gresource prefix="/com/luminescent-dreams/fitnesstrax/icons/scalable/actions">
|
<gresource prefix="/com/luminescent-dreams/fitnesstrax/icons/scalable/actions">
|
||||||
<file preprocess="xml-stripblanks">running-symbolic.svg</file>
|
<file preprocess="xml-stripblanks">running-symbolic.svg</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
|
|
||||||
|
<gresource prefix="/com/luminescent-dreams/fitnesstrax/icons/scalable/actions">
|
||||||
|
<file preprocess="xml-stripblanks">cycling-symbolic.svg</file>
|
||||||
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="16px" viewBox="0 0 16 16" width="16px"><filter id="a" height="100%" width="100%" x="0%" y="0%"><feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/></filter><mask id="b"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.5"/></g></mask><clipPath id="c"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="d"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.7"/></g></mask><clipPath id="e"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><mask id="f"><g filter="url(#a)"><path d="m -1.6 -1.6 h 19.2 v 19.2 h -19.2 z" fill-opacity="0.35"/></g></mask><clipPath id="g"><path d="m 0 0 h 1600 v 1200 h -1600 z"/></clipPath><path d="m 9.5 2 c -0.828125 0 -1.5 0.671875 -1.5 1.5 s 0.671875 1.5 1.5 1.5 s 1.5 -0.671875 1.5 -1.5 s -0.671875 -1.5 -1.5 -1.5 z m 0 0"/><path d="m 4.285156 13 c 0 0.703125 -0.582031 1.285156 -1.285156 1.285156 s -1.285156 -0.582031 -1.285156 -1.285156 s 0.582031 -1.285156 1.285156 -1.285156 s 1.285156 0.582031 1.285156 1.285156 z m -4.285156 0 c 0 1.675781 1.324219 3 3 3 s 3 -1.324219 3 -3 s -1.324219 -3 -3 -3 s -3 1.324219 -3 3 z m 0 0"/><path d="m 8.992188 13.007812 v -3.003906 c 0 -0.359375 -0.1875 -0.6875 -0.5 -0.867187 l -2.558594 -1.476563 l 0.363281 1.363282 l 1.671875 -2.890626 l -1.367188 0.363282 l 0.910157 0.527344 l -0.40625 -0.4375 c 0.773437 1.621093 1.96875 1.933593 1.96875 1.933593 s 0.578125 0.242188 1.9375 0.429688 c 0.546875 0.074219 1.050781 -0.304688 1.128906 -0.851563 c 0.074219 -0.550781 -0.308594 -1.054687 -0.855469 -1.128906 c -1.179687 -0.164062 -1.601562 -0.355469 -1.601562 -0.355469 s -0.425782 -0.164062 -0.769532 -0.886719 c -0.089843 -0.183593 -0.226562 -0.335937 -0.402343 -0.4375 l -0.910157 -0.523437 c -0.476562 -0.277344 -1.089843 -0.113281 -1.363281 0.367187 l -1.671875 2.890626 c -0.277344 0.480468 -0.113281 1.089843 0.367188 1.367187 l 2.558594 1.480469 l -0.5 -0.867188 v 3.003906 c 0 0.550782 0.449218 1 1 1 c 0.554687 0 1 -0.449218 1 -1 z m 0 0"/><path d="m 14.285156 13 c 0 0.703125 -0.582031 1.285156 -1.285156 1.285156 s -1.285156 -0.582031 -1.285156 -1.285156 s 0.582031 -1.285156 1.285156 -1.285156 s 1.285156 0.582031 1.285156 1.285156 z m -4.285156 0 c 0 1.675781 1.324219 3 3 3 s 3 -1.324219 3 -3 s -1.324219 -3 -3 -3 s -3 1.324219 -3 3 z m 0 0"/><g mask="url(#b)"><g clip-path="url(#c)" transform="matrix(1 0 0 1 -600 -120)"><path d="m 550 182 c -0.351562 0.003906 -0.695312 0.101562 -1 0.28125 v 3.4375 c 0.304688 0.179688 0.648438 0.277344 1 0.28125 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 c -0.339844 0 -0.679688 0.058594 -1 0.175781 v 6.824219 h 4 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#d)"><g clip-path="url(#e)" transform="matrix(1 0 0 1 -600 -120)"><path d="m 569 182 v 4 c 1.105469 0 2 -0.894531 2 -2 s -0.894531 -2 -2 -2 z m 0 5 v 7 h 3 v -4 c 0 -1.65625 -1.34375 -3 -3 -3 z m 0 0"/></g></g><g mask="url(#f)"><g clip-path="url(#g)" transform="matrix(1 0 0 1 -600 -120)"><path d="m 573 182.269531 v 3.449219 c 0.613281 -0.355469 0.996094 -1.007812 1 -1.71875 c 0 -0.714844 -0.382812 -1.375 -1 -1.730469 z m 0 4.90625 v 6.824219 h 2 v -4 c 0 -1.269531 -0.800781 -2.402344 -2 -2.824219 z m 0 0"/></g></g></svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<gresources>
|
|
||||||
<gresource prefix="/org/gtk/example/icons/scalable/actions/">
|
|
||||||
<file preprocess="xml-stripblanks">start-here-symbolic.svg</file>
|
|
||||||
</gresource>
|
|
||||||
</gresources>
|
|
|
@ -187,6 +187,7 @@ impl DayDetail {
|
||||||
}
|
}
|
||||||
TraxRecord::Row(row) => s.append(&time_distance_detail(RecordType::Row, row)),
|
TraxRecord::Row(row) => s.append(&time_distance_detail(RecordType::Row, row)),
|
||||||
TraxRecord::Run(run) => s.append(&time_distance_detail(RecordType::Run, run)),
|
TraxRecord::Run(run) => s.append(&time_distance_detail(RecordType::Run, run)),
|
||||||
|
TraxRecord::Swim(walk) => s.append(&time_distance_detail(RecordType::Swim, walk)),
|
||||||
TraxRecord::Walk(walk) => s.append(&time_distance_detail(RecordType::Walk, walk)),
|
TraxRecord::Walk(walk) => s.append(&time_distance_detail(RecordType::Walk, walk)),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
@ -248,6 +249,32 @@ impl DayEdit {
|
||||||
move |workout| s.add_row(workout)
|
move |workout| s.add_row(workout)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
view_model
|
||||||
|
.records()
|
||||||
|
.into_iter()
|
||||||
|
.filter_map({
|
||||||
|
let s = s.clone();
|
||||||
|
move |record| {
|
||||||
|
let workout_type = record.data.workout_type();
|
||||||
|
match record.data {
|
||||||
|
TraxRecord::BikeRide(workout)
|
||||||
|
| TraxRecord::Row(workout)
|
||||||
|
| TraxRecord::Run(workout)
|
||||||
|
| TraxRecord::Swim(workout)
|
||||||
|
| TraxRecord::Walk(workout) => {
|
||||||
|
Some(TimeDistanceEdit::new(workout_type, workout, {
|
||||||
|
let s = s.clone();
|
||||||
|
move |type_, data| {
|
||||||
|
s.update_workout(record.id, type_, data);
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.for_each(|row| s.imp().workout_rows.borrow().append(&row));
|
||||||
|
|
||||||
s.append(&control_buttons(&s, &view_model));
|
s.append(&control_buttons(&s, &view_model));
|
||||||
s.append(&weight_and_steps_row(&view_model));
|
s.append(&weight_and_steps_row(&view_model));
|
||||||
s.append(&*s.imp().workout_rows.borrow());
|
s.append(&*s.imp().workout_rows.borrow());
|
||||||
|
@ -355,6 +382,7 @@ where
|
||||||
AddRow: Fn(Record<TraxRecord>) + 'static,
|
AddRow: Fn(Record<TraxRecord>) + 'static,
|
||||||
{
|
{
|
||||||
let add_row = Rc::new(add_row);
|
let add_row = Rc::new(add_row);
|
||||||
|
/*
|
||||||
let walking_button = gtk::Button::builder()
|
let walking_button = gtk::Button::builder()
|
||||||
.icon_name("walking2-symbolic")
|
.icon_name("walking2-symbolic")
|
||||||
.width_request(64)
|
.width_request(64)
|
||||||
|
@ -381,6 +409,20 @@ where
|
||||||
add_row(workout);
|
add_row(workout);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
|
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_record(RecordType::Walk);
|
||||||
|
add_row(workout);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let layout = gtk::Box::builder()
|
let layout = gtk::Box::builder()
|
||||||
.orientation(gtk::Orientation::Vertical)
|
.orientation(gtk::Orientation::Vertical)
|
||||||
|
@ -388,8 +430,7 @@ where
|
||||||
let row = gtk::Box::builder()
|
let row = gtk::Box::builder()
|
||||||
.orientation(gtk::Orientation::Horizontal)
|
.orientation(gtk::Orientation::Horizontal)
|
||||||
.build();
|
.build();
|
||||||
row.append(&walking_button);
|
row.append(&biking_button);
|
||||||
row.append(&running_button);
|
|
||||||
layout.append(&row);
|
layout.append(&row);
|
||||||
|
|
||||||
layout
|
layout
|
||||||
|
|
Loading…
Reference in New Issue