Multi-window support!
This commit is contained in:
@@ -18,6 +18,7 @@ public class MainWindow : Adw.ApplicationWindow
|
|||||||
|
|
||||||
conversation_list_view = new ConversationListView ();
|
conversation_list_view = new ConversationListView ();
|
||||||
conversation_list_view.conversation_selected.connect (conversation_selected);
|
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");
|
var conversation_list_page = new NavigationPage (conversation_list_view, "Conversations");
|
||||||
split_view.sidebar = conversation_list_page;
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ public class ConversationListView : Adw.Bin
|
|||||||
{
|
{
|
||||||
public ConversationListModel conversation_model { get; private set; }
|
public ConversationListModel conversation_model { get; private set; }
|
||||||
public signal void conversation_selected(Conversation conversation);
|
public signal void conversation_selected(Conversation conversation);
|
||||||
|
public signal void conversation_activated(Conversation conversation);
|
||||||
|
|
||||||
private Adw.ToolbarView container;
|
private Adw.ToolbarView container;
|
||||||
private ListBox list_box;
|
private ListBox list_box;
|
||||||
@@ -24,6 +25,7 @@ public class ConversationListView : Adw.Bin
|
|||||||
list_box = new ListBox ();
|
list_box = new ListBox ();
|
||||||
list_box.add_css_class ("boxed-list");
|
list_box.add_css_class ("boxed-list");
|
||||||
list_box.set_selection_mode (SelectionMode.SINGLE);
|
list_box.set_selection_mode (SelectionMode.SINGLE);
|
||||||
|
list_box.activate_on_single_click = false;
|
||||||
scrolled_window.set_child (list_box);
|
scrolled_window.set_child (list_box);
|
||||||
|
|
||||||
list_box.row_selected.connect ((row) => {
|
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 = new Adw.HeaderBar ();
|
||||||
header_bar.set_title_widget (new Label ("Kordophone"));
|
header_bar.set_title_widget (new Label ("Kordophone"));
|
||||||
container.add_top_bar (header_bar);
|
container.add_top_bar (header_bar);
|
||||||
@@ -109,7 +119,6 @@ public class ConversationListView : Adw.Bin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Widget create_conversation_row (Object item) {
|
private Widget create_conversation_row (Object item) {
|
||||||
Conversation conversation = (Conversation) item;
|
Conversation conversation = (Conversation) item;
|
||||||
return new ConversationRow (conversation);
|
return new ConversationRow (conversation);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ public class ConversationRow : Adw.ActionRow {
|
|||||||
|
|
||||||
public ConversationRow(Conversation conversation) {
|
public ConversationRow(Conversation conversation) {
|
||||||
this.conversation = conversation;
|
this.conversation = conversation;
|
||||||
|
this.activatable = true;
|
||||||
|
|
||||||
title = conversation.display_name.strip();
|
title = conversation.display_name.strip();
|
||||||
title_lines = 1;
|
title_lines = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user