diff --git a/src/application/main-window.vala b/src/application/main-window.vala index 9d8d7a7..6a3d850 100644 --- a/src/application/main-window.vala +++ b/src/application/main-window.vala @@ -4,7 +4,7 @@ using Gtk; public class MainWindow : Adw.ApplicationWindow { private ConversationListView conversation_list_view; - private TranscriptView transcript_view; + private TranscriptContainerView transcript_container_view; public MainWindow () { Object (title: "Kordophone"); @@ -19,10 +19,10 @@ public class MainWindow : Adw.ApplicationWindow 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); + transcript_container_view = new TranscriptContainerView (); + transcript_container_view.on_send.connect (on_transcript_send); - var transcript_page = new NavigationPage (transcript_view, "Transcript"); + var transcript_page = new NavigationPage (transcript_container_view, "Transcript"); split_view.content = transcript_page; var show_settings_action = new SimpleAction ("settings", null); @@ -37,27 +37,36 @@ public class MainWindow : Adw.ApplicationWindow private void conversation_selected(string? conversation_guid) { if (conversation_guid == null) { - transcript_view.message_list.model = null; + transcript_container_view.transcript_view.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); + if (transcript_container_view.transcript_view.model == null || transcript_container_view.transcript_view.model.conversation_guid != conversation_guid) { + transcript_container_view.transcript_view.model = new MessageListModel (conversation_guid); + + try { + Repository.get_instance().sync_conversation(conversation_guid); + } catch (Error e) { + GLib.warning("Failed to sync conversation: %s", e.message); + } } } } private void on_transcript_send(string message) { - if (transcript_view.message_list.model == null) { + if (transcript_container_view.transcript_view.model == null) { GLib.warning("No conversation selected"); return; } - var selected_conversation = transcript_view.message_list.model.conversation_guid; + var selected_conversation = transcript_container_view.transcript_view.model.conversation_guid; if (selected_conversation == null) { GLib.warning("No conversation selected"); return; } - Repository.get_instance().send_message(selected_conversation, message); + try { + Repository.get_instance().send_message(selected_conversation, message); + } catch (Error e) { + GLib.warning("Failed to send message: %s", e.message); + } } } \ No newline at end of file diff --git a/src/meson.build b/src/meson.build index 8a7a252..7ccb410 100644 --- a/src/meson.build +++ b/src/meson.build @@ -28,19 +28,21 @@ sources = [ 'conversation-list/conversation-list-model.vala', 'conversation-list/conversation-row.vala', - 'message-list/message-list-view.vala', - 'message-list/message-list-model.vala', - 'message-list/message-drawing-area.vala', + 'transcript/transcript-container-view.vala', + 'transcript/transcript-drawing-area.vala', - 'message-list/layouts/bubble-layout.vala', - 'message-list/layouts/chat-item-layout.vala', - 'message-list/layouts/date-item-layout.vala', - 'message-list/layouts/text-bubble-layout.vala', + 'transcript/message-list-view.vala', + 'transcript/message-list-model.vala', + + 'transcript/layouts/bubble-layout.vala', + 'transcript/layouts/chat-item-layout.vala', + 'transcript/layouts/date-item-layout.vala', + 'transcript/layouts/text-bubble-layout.vala', 'models/conversation.vala', 'models/message.vala', - 'transcript-view/transcript-view.vala', + ] executable('kordophone', diff --git a/src/resources/style.css b/src/resources/style.css index bcad32c..58b7ebb 100644 --- a/src/resources/style.css +++ b/src/resources/style.css @@ -15,7 +15,7 @@ transform: scale(1, -1); } -.message-drawing-area { +.transcript-drawing-area { color: darker(@accent_bg_color); } diff --git a/src/message-list/layouts/bubble-layout.vala b/src/transcript/layouts/bubble-layout.vala similarity index 100% rename from src/message-list/layouts/bubble-layout.vala rename to src/transcript/layouts/bubble-layout.vala diff --git a/src/message-list/layouts/chat-item-layout.vala b/src/transcript/layouts/chat-item-layout.vala similarity index 100% rename from src/message-list/layouts/chat-item-layout.vala rename to src/transcript/layouts/chat-item-layout.vala diff --git a/src/message-list/layouts/date-item-layout.vala b/src/transcript/layouts/date-item-layout.vala similarity index 100% rename from src/message-list/layouts/date-item-layout.vala rename to src/transcript/layouts/date-item-layout.vala diff --git a/src/message-list/layouts/text-bubble-layout.vala b/src/transcript/layouts/text-bubble-layout.vala similarity index 100% rename from src/message-list/layouts/text-bubble-layout.vala rename to src/transcript/layouts/text-bubble-layout.vala diff --git a/src/message-list/message-list-model.vala b/src/transcript/message-list-model.vala similarity index 100% rename from src/message-list/message-list-model.vala rename to src/transcript/message-list-model.vala diff --git a/src/message-list/message-list-view.vala b/src/transcript/message-list-view.vala similarity index 70% rename from src/message-list/message-list-view.vala rename to src/transcript/message-list-view.vala index 84f6e40..e91f430 100644 --- a/src/message-list/message-list-view.vala +++ b/src/transcript/message-list-view.vala @@ -2,7 +2,7 @@ using Adw; using Gtk; using Gee; -public class MessageListView : Adw.Bin +public class TranscriptView : Adw.Bin { public MessageListModel? model { get { @@ -15,7 +15,7 @@ public class MessageListView : Adw.Bin model.messages_changed.connect(reload_messages); model.load_messages(); } else { - message_drawing_area.set_messages(new TreeSet()); + transcript_drawing_area.set_messages(new TreeSet()); } } } @@ -23,16 +23,16 @@ public class MessageListView : Adw.Bin private MessageListModel? _model = null; private Adw.ToolbarView container; - private MessageDrawingArea message_drawing_area = new MessageDrawingArea(); + private TranscriptDrawingArea transcript_drawing_area = new TranscriptDrawingArea(); private ScrolledWindow scrolled_window = new ScrolledWindow(); - public MessageListView(MessageListModel? model = null) { + public TranscriptView(MessageListModel? model = null) { this.model = model; container = new Adw.ToolbarView(); set_child(container); - scrolled_window.set_child(message_drawing_area); + scrolled_window.set_child(transcript_drawing_area); scrolled_window.add_css_class("message-list-scroller"); container.set_content(scrolled_window); @@ -42,6 +42,6 @@ public class MessageListView : Adw.Bin } private void reload_messages() { - message_drawing_area.set_messages(_model.messages); + transcript_drawing_area.set_messages(_model.messages); } } diff --git a/src/transcript-view/transcript-view.vala b/src/transcript/transcript-container-view.vala similarity index 85% rename from src/transcript-view/transcript-view.vala rename to src/transcript/transcript-container-view.vala index 59c4266..9a17edb 100644 --- a/src/transcript-view/transcript-view.vala +++ b/src/transcript/transcript-container-view.vala @@ -1,22 +1,22 @@ using Gtk; using Adw; -class TranscriptView : Adw.Bin { - public MessageListView message_list; +class TranscriptContainerView : Adw.Bin { + public TranscriptView transcript_view; public Entry message_entry; public signal void on_send(string message); private Box container; private Button send_button; - public TranscriptView () { + public TranscriptContainerView () { container = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); set_child (container); // Create message list view - message_list = new MessageListView(); - message_list.set_vexpand(true); - container.append(message_list); + transcript_view = new TranscriptView(); + transcript_view.set_vexpand(true); + container.append(transcript_view); // Create bottom box for input var input_box = new Box(Orientation.HORIZONTAL, 6); diff --git a/src/message-list/message-drawing-area.vala b/src/transcript/transcript-drawing-area.vala similarity index 96% rename from src/message-list/message-drawing-area.vala rename to src/transcript/transcript-drawing-area.vala index 43490dd..0a88969 100644 --- a/src/message-list/message-drawing-area.vala +++ b/src/transcript/transcript-drawing-area.vala @@ -1,7 +1,7 @@ using Gtk; using Gee; -private class MessageDrawingArea : Widget +private class TranscriptDrawingArea : Widget { private SortedSet _messages = new TreeSet(); private ArrayList _chat_items = new ArrayList(); @@ -9,8 +9,8 @@ private class MessageDrawingArea : Widget private const float bubble_padding = 10.0f; private const float bubble_margin = 18.0f; - public MessageDrawingArea() { - add_css_class("message-drawing-area"); + public TranscriptDrawingArea() { + add_css_class("transcript-drawing-area"); } public void set_messages(SortedSet messages) {