diff --git a/src/application/main-window.vala b/src/application/main-window.vala index 40934e5..f649ad1 100644 --- a/src/application/main-window.vala +++ b/src/application/main-window.vala @@ -18,6 +18,7 @@ public class MainWindow : Adw.ApplicationWindow conversation_list_view = new ConversationListView (); conversation_list_view.conversation_selected.connect (conversation_selected); + conversation_list_view.conversation_activated.connect (open_conversation_in_new_window); var conversation_list_page = new NavigationPage (conversation_list_view, "Conversations"); split_view.sidebar = conversation_list_page; @@ -101,4 +102,15 @@ public class MainWindow : Adw.ApplicationWindow } } } + + private void open_conversation_in_new_window(Conversation conversation) { + var view = new TranscriptContainerView(); + view.transcript_view.model = new MessageListModel (conversation); + view.transcript_view.title = conversation.display_name; + + var window = new Adw.Window(); + window.set_default_size(750, 990); + window.set_content(view); + window.present(); + } } diff --git a/src/conversation-list/conversation-list-view.vala b/src/conversation-list/conversation-list-view.vala index 06bc6ce..ba5e952 100644 --- a/src/conversation-list/conversation-list-view.vala +++ b/src/conversation-list/conversation-list-view.vala @@ -5,6 +5,7 @@ public class ConversationListView : Adw.Bin { public ConversationListModel conversation_model { get; private set; } public signal void conversation_selected(Conversation conversation); + public signal void conversation_activated(Conversation conversation); private Adw.ToolbarView container; private ListBox list_box; @@ -24,6 +25,7 @@ public class ConversationListView : Adw.Bin list_box = new ListBox (); list_box.add_css_class ("boxed-list"); list_box.set_selection_mode (SelectionMode.SINGLE); + list_box.activate_on_single_click = false; scrolled_window.set_child (list_box); list_box.row_selected.connect ((row) => { @@ -36,6 +38,14 @@ public class ConversationListView : Adw.Bin } }); + list_box.row_activated.connect((row) => { + var conversation_row = (ConversationRow?) row; + if (conversation_row != null) { + Conversation conversation = conversation_row.conversation; + conversation_activated(conversation); + } + }); + header_bar = new Adw.HeaderBar (); header_bar.set_title_widget (new Label ("Kordophone")); container.add_top_bar (header_bar); @@ -108,7 +118,6 @@ public class ConversationListView : Adw.Bin } } } - private Widget create_conversation_row (Object item) { Conversation conversation = (Conversation) item; diff --git a/src/conversation-list/conversation-row.vala b/src/conversation-list/conversation-row.vala index bd9db4b..be13c37 100644 --- a/src/conversation-list/conversation-row.vala +++ b/src/conversation-list/conversation-row.vala @@ -7,6 +7,7 @@ public class ConversationRow : Adw.ActionRow { public ConversationRow(Conversation conversation) { this.conversation = conversation; + this.activatable = true; title = conversation.display_name.strip(); title_lines = 1;