Private
Public Access
1
0
Files
Kordophone/src/application/main-window.vala

63 lines
2.2 KiB
Vala

using Adw;
using Gtk;
public class MainWindow : Adw.ApplicationWindow
{
private ConversationListView conversation_list_view;
private TranscriptView transcript_view;
public MainWindow () {
Object (title: "Kordophone");
var split_view = new NavigationSplitView ();
split_view.set_min_sidebar_width (400);
set_content (split_view);
conversation_list_view = new ConversationListView ();
conversation_list_view.conversation_selected.connect (conversation_selected);
var conversation_list_page = new NavigationPage (conversation_list_view, "Conversations");
split_view.sidebar = conversation_list_page;
transcript_view = new TranscriptView ();
transcript_view.on_send.connect (on_transcript_send);
var transcript_page = new NavigationPage (transcript_view, "Transcript");
split_view.content = transcript_page;
var show_settings_action = new SimpleAction ("settings", null);
show_settings_action.activate.connect(show_settings);
add_action(show_settings_action);
}
private void show_settings () {
var dialog = new PreferencesWindow (this);
dialog.present (this);
}
private void conversation_selected(string? conversation_guid) {
if (conversation_guid == null) {
transcript_view.message_list.model = null;
} else {
if (transcript_view.message_list.model == null || transcript_view.message_list.model.conversation_guid != conversation_guid) {
transcript_view.message_list.model = new MessageListModel (conversation_guid);
Repository.get_instance().sync_conversation(conversation_guid);
}
}
}
private void on_transcript_send(string message) {
if (transcript_view.message_list.model == null) {
GLib.warning("No conversation selected");
return;
}
var selected_conversation = transcript_view.message_list.model.conversation_guid;
if (selected_conversation == null) {
GLib.warning("No conversation selected");
return;
}
Repository.get_instance().send_message(selected_conversation, message);
}
}