From 4ce0819c682eb6274e823191969819f388a81483 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 ddbcf0a..e75255a 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) { self.radio_normal - .connect_toggled(clone!(@weak widget => move |_| { + .connect_clicked(clone!(@weak widget => move |_| { widget.on_rate_changed(1.00); })); self.radio125 - .connect_toggled(clone!(@weak widget => move |_| { + .connect_clicked(clone!(@weak widget => move |_| { widget.on_rate_changed(1.25); })); self.radio150 - .connect_toggled(clone!(@weak widget => move |_| { + .connect_clicked(clone!(@weak widget => move |_| { widget.on_rate_changed(1.50); })); } From 5e688c104c9ae33dd5d76c051344f6a22491ea20 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 4d950ac17ea0e3b5ae72b205e86316cb256524d2 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