player: Use model buttons for rate popover

Also simplify the xml.
This commit is contained in:
Alexander Mikhaylenko 2020-01-25 02:07:46 +05:00 committed by Jordan Petridis
parent f7d9d0555c
commit 4ce0819c68
No known key found for this signature in database
GPG Key ID: E8523968931763BE
2 changed files with 22 additions and 37 deletions

View File

@ -75,23 +75,14 @@ Tobias Bernard
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="margin_start">6</property> <property name="margin">6</property>
<property name="margin_end">6</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">3</property>
<child> <child>
<object class="GtkRadioButton" id="rate_1_50"> <object class="GtkModelButton" id="rate_1_50">
<property name="label" translatable="yes">1.50×</property> <property name="text" translatable="yes">1.50×</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">1.5 speed rate</property> <property name="tooltip_text" translatable="yes">1.5 speed rate</property>
<property name="halign">center</property> <property name="role">radio</property>
<property name="valign">center</property>
<property name="draw_indicator">True</property>
<property name="group">normal_rate</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -100,16 +91,11 @@ Tobias Bernard
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkRadioButton" id="rate_1_25"> <object class="GtkModelButton" id="rate_1_25">
<property name="label" translatable="yes">1.25×</property> <property name="text" translatable="yes">1.25×</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">1.25 speed rate</property> <property name="tooltip_text" translatable="yes">1.25 speed rate</property>
<property name="halign">center</property> <property name="role">radio</property>
<property name="valign">center</property>
<property name="draw_indicator">True</property>
<property name="group">normal_rate</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -118,16 +104,12 @@ Tobias Bernard
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkRadioButton" id="normal_rate"> <object class="GtkModelButton" id="normal_rate">
<property name="label" translatable="yes">1.00×</property> <property name="text" translatable="yes">1.00×</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Normal speed</property> <property name="tooltip_text" translatable="yes">Normal speed</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="active">True</property> <property name="active">True</property>
<property name="draw_indicator">True</property> <property name="role">radio</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>

View File

@ -208,9 +208,9 @@ fn format_duration(seconds: u32) -> String {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
struct PlayerRate { struct PlayerRate {
radio150: gtk::RadioButton, radio150: gtk::ModelButton,
radio125: gtk::RadioButton, radio125: gtk::ModelButton,
radio_normal: gtk::RadioButton, radio_normal: gtk::ModelButton,
popover: gtk::Popover, popover: gtk::Popover,
btn: gtk::MenuButton, btn: gtk::MenuButton,
label: gtk::Label, label: gtk::Label,
@ -220,9 +220,9 @@ impl PlayerRate {
fn new() -> Self { fn new() -> Self {
let builder = gtk::Builder::new_from_resource("/org/gnome/Podcasts/gtk/player_rate.ui"); 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 radio150: gtk::ModelButton = builder.get_object("rate_1_50").unwrap();
let radio125: gtk::RadioButton = builder.get_object("rate_1_25").unwrap(); let radio125: gtk::ModelButton = builder.get_object("rate_1_25").unwrap();
let radio_normal: gtk::RadioButton = builder.get_object("normal_rate").unwrap(); let radio_normal: gtk::ModelButton = builder.get_object("normal_rate").unwrap();
let popover = builder.get_object("rate_popover").unwrap(); let popover = builder.get_object("rate_popover").unwrap();
let btn = builder.get_object("rate_button").unwrap(); let btn = builder.get_object("rate_button").unwrap();
let label = builder.get_object("rate_label").unwrap(); let label = builder.get_object("rate_label").unwrap();
@ -239,19 +239,22 @@ impl PlayerRate {
fn set_rate(&self, rate: f64) { fn set_rate(&self, rate: f64) {
self.label.set_text(&format!("{:.2}×", rate)); 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<PlayerWidget>) { fn connect_signals(&self, widget: &Rc<PlayerWidget>) {
self.radio_normal self.radio_normal
.connect_toggled(clone!(@weak widget => move |_| { .connect_clicked(clone!(@weak widget => move |_| {
widget.on_rate_changed(1.00); widget.on_rate_changed(1.00);
})); }));
self.radio125 self.radio125
.connect_toggled(clone!(@weak widget => move |_| { .connect_clicked(clone!(@weak widget => move |_| {
widget.on_rate_changed(1.25); widget.on_rate_changed(1.25);
})); }));
self.radio150 self.radio150
.connect_toggled(clone!(@weak widget => move |_| { .connect_clicked(clone!(@weak widget => move |_| {
widget.on_rate_changed(1.50); widget.on_rate_changed(1.50);
})); }));
} }