Browse Source

Add button in login page to go back to sessions page

merge-requests/1327/merge
Alejandro Domínguez 5 years ago committed by Julian Sparber
parent
commit
500cddf390
  1. 7
      data/resources/ui/login.ui
  2. 8
      src/application.rs
  3. 8
      src/login.rs
  4. 6
      src/window.rs

7
data/resources/ui/login.ui

@ -11,6 +11,13 @@
<property name="title">Fractal</property>
</object>
</property>
<child type="start">
<object class="GtkButton" id="back_to_session_button">
<property name="action_name">app.switch-to-sessions</property>
<property name="visible">false</property>
<property name="icon-name">go-previous-symbolic</property>
</object>
</child>
<child type="end">
<object class="GtkButton" id="next_button">
<property name="action_name">login.next</property>

8
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.

8
src/login.rs

@ -36,6 +36,8 @@ mod imp {
pub password_entry: TemplateChild<gtk::PasswordEntry>,
#[template_child]
pub error_message: TemplateChild<gtk::Label>,
#[template_child]
pub back_to_session_button: TemplateChild<gtk::Button>,
}
#[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() {

6
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());
}
}

Loading…
Cancel
Save