From 117b7db14aef92f99e9d70bdf2a471e0f0246044 Mon Sep 17 00:00:00 2001 From: Alexander Mikhaylenko Date: Sat, 25 Jan 2020 02:07:46 +0500 Subject: [PATCH 1/4] player: Use model buttons for rate popover Also simplify the xml. --- podcasts-gtk/resources/gtk/player_rate.ui | 38 ++++++----------------- podcasts-gtk/src/widgets/player.rs | 21 +++++++------ 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/podcasts-gtk/resources/gtk/player_rate.ui b/podcasts-gtk/resources/gtk/player_rate.ui index 4dbc387..b7cb691 100644 --- a/podcasts-gtk/resources/gtk/player_rate.ui +++ b/podcasts-gtk/resources/gtk/player_rate.ui @@ -75,23 +75,14 @@ Tobias Bernard True False - 6 - 6 - 6 - 6 + 6 vertical - 3 - - 1.50× + + 1.50× True - True - False 1.5 speed rate - center - center - True - normal_rate + radio True @@ -100,16 +91,11 @@ Tobias Bernard - - 1.25× + + 1.25× True - True - False 1.25 speed rate - center - center - True - normal_rate + radio True @@ -118,16 +104,12 @@ Tobias Bernard - - 1.00× + + 1.00× True - True - False Normal speed - center - center True - True + radio True diff --git a/podcasts-gtk/src/widgets/player.rs b/podcasts-gtk/src/widgets/player.rs index 11acc66..2683e6e 100644 --- a/podcasts-gtk/src/widgets/player.rs +++ b/podcasts-gtk/src/widgets/player.rs @@ -208,9 +208,9 @@ fn format_duration(seconds: u32) -> String { #[derive(Debug, Clone)] struct PlayerRate { - radio150: gtk::RadioButton, - radio125: gtk::RadioButton, - radio_normal: gtk::RadioButton, + radio150: gtk::ModelButton, + radio125: gtk::ModelButton, + radio_normal: gtk::ModelButton, popover: gtk::Popover, btn: gtk::MenuButton, label: gtk::Label, @@ -220,9 +220,9 @@ impl PlayerRate { fn new() -> Self { let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_rate.ui"); - let radio150: gtk::RadioButton = builder.get_object("rate_1_50").unwrap(); - let radio125: gtk::RadioButton = builder.get_object("rate_1_25").unwrap(); - let radio_normal: gtk::RadioButton = builder.get_object("normal_rate").unwrap(); + let radio150: gtk::ModelButton = builder.get_object("rate_1_50").unwrap(); + let radio125: gtk::ModelButton = builder.get_object("rate_1_25").unwrap(); + let radio_normal: gtk::ModelButton = builder.get_object("normal_rate").unwrap(); let popover = builder.get_object("rate_popover").unwrap(); let btn = builder.get_object("rate_button").unwrap(); let label = builder.get_object("rate_label").unwrap(); @@ -239,19 +239,22 @@ impl PlayerRate { fn set_rate(&self, rate: f64) { self.label.set_text(&format!("{:.2}×", rate)); + self.radio_normal.set_property_active(rate == 1.0); + self.radio125.set_property_active(rate == 1.25); + self.radio150.set_property_active(rate == 1.5); } fn connect_signals(&self, widget: &Rc) { let weak = Rc::downgrade(widget); self.radio_normal - .connect_toggled(clone!(weak => move |rate| { + .connect_clicked(clone!(weak => move |rate| { weak.upgrade().map(|w| w.on_rate_changed(1.00)); })); - self.radio125.connect_toggled(clone!(weak => move |rate| { + self.radio125.connect_clicked(clone!(weak => move |rate| { weak.upgrade().map(|w| w.on_rate_changed(1.25)); })); - self.radio150.connect_toggled(clone!(weak => move |rate| { + self.radio150.connect_clicked(clone!(weak => move |rate| { weak.upgrade().map(|w| w.on_rate_changed(1.50)); })); } From 965fd8f8bea7d5237358ff8ce050abeed6d73e9a Mon Sep 17 00:00:00 2001 From: Alexander Mikhaylenko Date: Sat, 25 Jan 2020 02:36:40 +0500 Subject: [PATCH 2/4] player_rate: Use tabular figures for speed rate menu Since gtk::ModelButton allows to set markup, the menu entries can now use tabular figures. Make the labels untranslatable, as they are generic enough already, and being translatable would make even less sense with markup. --- podcasts-gtk/resources/gtk/player_rate.ui | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/podcasts-gtk/resources/gtk/player_rate.ui b/podcasts-gtk/resources/gtk/player_rate.ui index b7cb691..b627fae 100644 --- a/podcasts-gtk/resources/gtk/player_rate.ui +++ b/podcasts-gtk/resources/gtk/player_rate.ui @@ -45,6 +45,9 @@ Tobias Bernard True False 1.00× + + + False @@ -79,7 +82,8 @@ Tobias Bernard vertical - 1.50× + <span font-features="tnum=1">1.50×</span> + True True 1.5 speed rate radio @@ -92,7 +96,8 @@ Tobias Bernard - 1.25× + <span font-features="tnum=1">1.25×</span> + True True 1.25 speed rate radio @@ -105,7 +110,8 @@ Tobias Bernard - 1.00× + <span font-features="tnum=1">1.00×</span> + True True Normal speed True From 786e8854caa9e99e5928689daadc2e3f85792583 Mon Sep 17 00:00:00 2001 From: Alexander Mikhaylenko Date: Mon, 3 Feb 2020 14:35:45 +0500 Subject: [PATCH 3/4] player: Use tabular figures for duration --- podcasts-gtk/resources/gtk/player_dialog.ui | 6 ++++++ podcasts-gtk/resources/gtk/player_toolbar.ui | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/podcasts-gtk/resources/gtk/player_dialog.ui b/podcasts-gtk/resources/gtk/player_dialog.ui index 8934098..eaaeb3a 100644 --- a/podcasts-gtk/resources/gtk/player_dialog.ui +++ b/podcasts-gtk/resources/gtk/player_dialog.ui @@ -132,6 +132,9 @@ False 5 1 + + + + + + False @@ -143,6 +146,9 @@ Tobias Bernard + + + False @@ -177,6 +183,9 @@ Tobias Bernard + + + False @@ -212,6 +221,9 @@ Tobias Bernard + + + False