Skip to content

Commit 6d32584

Browse files
committed
🧹 window: move common actions to the helper function
1 parent c7bd6c3 commit 6d32584

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

‎src/main.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,8 @@ fn on_btn_clicked(param: &[glib::Value]) -> Option<glib::Value> {
211211
let widget = param[0].get::<gtk::Button>().unwrap();
212212
let name = widget.widget_name();
213213

214-
let builder_ref = unsafe { &G_HELLO_WINDOW.as_ref().unwrap().builder };
215-
let stack: &gtk::Stack = &builder_ref.object("stack").unwrap();
216-
stack.set_visible_child_name(&format!("{name}page"));
214+
let child_name = format!("{name}page");
215+
unsafe { G_HELLO_WINDOW.as_ref().unwrap().set_stack_child_visible(&child_name) };
217216

218217
None
219218
}
@@ -222,11 +221,10 @@ fn on_link_clicked(param: &[glib::Value]) -> Option<glib::Value> {
222221
let widget = param[0].get::<gtk::Widget>().unwrap();
223222
let name = widget.widget_name();
224223

225-
let window_ref = unsafe { &G_HELLO_WINDOW.as_ref().unwrap().window };
226224
let preferences = unsafe { G_HELLO_WINDOW.as_ref().unwrap().get_preferences("urls") };
227225

228226
let uri = preferences[name.as_str()].as_str().unwrap();
229-
let _ = gtk::show_uri_on_window(Some(window_ref), uri, 0);
227+
unsafe { G_HELLO_WINDOW.as_ref().unwrap().open_uri(uri) };
230228

231229
None
232230
}
@@ -235,11 +233,10 @@ fn on_link1_clicked(param: &[glib::Value]) -> Option<glib::Value> {
235233
let widget = param[0].get::<gtk::Widget>().unwrap();
236234
let name = widget.widget_name();
237235

238-
let window_ref = unsafe { &G_HELLO_WINDOW.as_ref().unwrap().window };
239236
let preferences = unsafe { G_HELLO_WINDOW.as_ref().unwrap().get_preferences("urls") };
240237

241238
let uri = preferences[name.as_str()].as_str().unwrap();
242-
let _ = gtk::show_uri_on_window(Some(window_ref), uri, 0);
239+
unsafe { G_HELLO_WINDOW.as_ref().unwrap().open_uri(uri) };
243240

244241
Some(false.to_value())
245242
}

‎src/window.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,17 @@ impl HelloWindow {
295295
}
296296
}
297297

298+
pub fn open_uri(&self, uri: &str) {
299+
if let Err(uri_err) = gtk::show_uri_on_window(Some(&self.window), uri, 0) {
300+
error!("Failed to open uri: {uri_err}");
301+
}
302+
}
303+
304+
pub fn set_stack_child_visible(&self, child_name: &str) {
305+
let stack: &gtk::Stack = &self.builder.object("stack").unwrap();
306+
stack.set_visible_child_name(child_name);
307+
}
308+
298309
pub fn get_preferences(&self, entry: &str) -> &serde_json::Value {
299310
&self.preferences[entry]
300311
}

0 commit comments

Comments
 (0)