From 500cddf390f672e8591b8ceb6569ef437786e9bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Dom=C3=ADnguez?= Date: Mon, 16 Aug 2021 07:48:51 +0200 Subject: [PATCH] Add button in login page to go back to sessions page --- data/resources/ui/login.ui | 7 +++++++ src/application.rs | 8 ++++++++ src/login.rs | 8 ++++++++ src/window.rs | 6 +++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/data/resources/ui/login.ui b/data/resources/ui/login.ui index be175612..4aa14c7f 100644 --- a/data/resources/ui/login.ui +++ b/data/resources/ui/login.ui @@ -11,6 +11,13 @@ Fractal + + + app.switch-to-sessions + false + go-previous-symbolic + + login.next diff --git a/src/application.rs b/src/application.rs index 0f86a436..d85414d5 100644 --- a/src/application.rs +++ b/src/application.rs @@ -128,6 +128,14 @@ impl Application { app.get_main_window().switch_to_login_page(); }) ); + + action!( + self, + "switch-to-sessions", + clone!(@weak self as app => move |_, _| { + app.get_main_window().switch_to_sessions_page(); + }) + ); } /// Sets up keyboard shortcuts for application and window actions. diff --git a/src/login.rs b/src/login.rs index 8d05e074..fa2accd7 100644 --- a/src/login.rs +++ b/src/login.rs @@ -36,6 +36,8 @@ mod imp { pub password_entry: TemplateChild, #[template_child] pub error_message: TemplateChild, + #[template_child] + pub back_to_session_button: TemplateChild, } #[glib::object_subclass] @@ -180,6 +182,12 @@ impl Login { imp::Login::from_instance(self).next_button.get().upcast() } + pub fn show_back_to_session_button(&self, show: bool) { + let priv_ = imp::Login::from_instance(self); + + priv_.back_to_session_button.set_visible(show); + } + pub fn set_handler_for_prepared_session(&self, session: &Session) { session.connect_prepared(clone!(@weak self as login => move |session| { if let Some(error) = session.get_error() { diff --git a/src/window.rs b/src/window.rs index be2c512d..d2148f5e 100644 --- a/src/window.rs +++ b/src/window.rs @@ -176,13 +176,17 @@ impl Window { } } - fn switch_to_sessions_page(&self) { + pub fn switch_to_sessions_page(&self) { let priv_ = imp::Window::from_instance(self); priv_.main_stack.set_visible_child(&priv_.sessions.get()); } pub fn switch_to_login_page(&self) { let priv_ = imp::Window::from_instance(self); + priv_ + .login + .get() + .show_back_to_session_button(priv_.sessions.get().pages().n_items() > 0); priv_.main_stack.set_visible_child(&priv_.login.get()); } }