From d550fc905c79dccd51adb2d296140810ddc694fb Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 21 Feb 2020 03:04:15 +0100 Subject: Move UnifiedWindow stack state update logic into controller --- main/src/ui/unified_window_controller.vala | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'main/src/ui/unified_window_controller.vala') diff --git a/main/src/ui/unified_window_controller.vala b/main/src/ui/unified_window_controller.vala index d580f8cc..ca958bf1 100644 --- a/main/src/ui/unified_window_controller.vala +++ b/main/src/ui/unified_window_controller.vala @@ -84,6 +84,12 @@ public class UnifiedWindowController : Object { }); window.conversation_selected.connect(conversation => select_conversation(conversation)); + + stream_interactor.account_added.connect((account) => { update_stack_state(true); }); + stream_interactor.account_removed.connect((account) => { update_stack_state(); }); + stream_interactor.get_module(ConversationManager.IDENTITY).conversation_activated.connect(() => update_stack_state()); + stream_interactor.get_module(ConversationManager.IDENTITY).conversation_deactivated.connect(() => update_stack_state()); + update_stack_state(); } public void select_conversation(Conversation? conversation, bool do_reset_search = true, bool default_initialize_conversation = true) { @@ -119,6 +125,21 @@ public class UnifiedWindowController : Object { } } + private void update_stack_state(bool know_exists = false) { + ArrayList accounts = stream_interactor.get_accounts(); + if (!know_exists && accounts.size == 0) { + if (db.get_accounts().size == 0) { + window.set_stack_state(UnifiedWindow.StackState.CLEAN_START); + } else { + window.set_stack_state(UnifiedWindow.StackState.NO_ACTIVE_ACCOUNTS); + } + } else if (stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations().size == 0) { + window.set_stack_state(UnifiedWindow.StackState.NO_ACTIVE_CONVERSATIONS); + } else { + window.set_stack_state(UnifiedWindow.StackState.CONVERSATION); + } + } + private void reset_search_entry() { if (window.conversation_view.conversation_frame.conversation != null) { switch (conversation.type_) { -- cgit v1.2.3