wire up message loading
This commit is contained in:
@@ -92,5 +92,6 @@ private class MessageDrawingArea : Widget
|
||||
});
|
||||
|
||||
queue_draw();
|
||||
queue_resize();
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ private class MessageLayout : Object
|
||||
this.max_width = max_width;
|
||||
this.parent = parent;
|
||||
|
||||
layout = parent.create_pango_layout(message.content);
|
||||
layout = parent.create_pango_layout(message.text);
|
||||
|
||||
// Set text attributes
|
||||
var font_desc = Pango.FontDescription.from_string(font_description);
|
||||
@@ -35,7 +35,7 @@ private class MessageLayout : Object
|
||||
|
||||
public bool from_me {
|
||||
get {
|
||||
return message.sender == null;
|
||||
return message.from_me;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ using Gee;
|
||||
|
||||
public class MessageListModel : Object, ListModel
|
||||
{
|
||||
public signal void messages_changed();
|
||||
|
||||
public SortedSet<Message> messages {
|
||||
owned get { return _messages.read_only_view; }
|
||||
}
|
||||
@@ -49,6 +51,8 @@ public class MessageListModel : Object, ListModel
|
||||
} catch (Error e) {
|
||||
warning("Failed to load messages: %s", e.message);
|
||||
}
|
||||
|
||||
messages_changed();
|
||||
}
|
||||
|
||||
private void got_messages_updated(string conversation_guid) {
|
||||
|
||||
@@ -4,12 +4,31 @@ using Gee;
|
||||
|
||||
public class MessageListView : Adw.Bin
|
||||
{
|
||||
public MessageListModel? model {
|
||||
get {
|
||||
return _model;
|
||||
}
|
||||
set {
|
||||
_model = value;
|
||||
|
||||
if (model != null) {
|
||||
model.messages_changed.connect(reload_messages);
|
||||
model.load_messages();
|
||||
} else {
|
||||
message_drawing_area.set_messages(new TreeSet<Message>());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private MessageListModel? _model = null;
|
||||
private Adw.ToolbarView container;
|
||||
|
||||
private MessageDrawingArea message_drawing_area = new MessageDrawingArea();
|
||||
private ScrolledWindow scrolled_window = new ScrolledWindow();
|
||||
|
||||
public MessageListView(MessageListModel model) {
|
||||
public MessageListView(MessageListModel? model = null) {
|
||||
this.model = model;
|
||||
|
||||
container = new Adw.ToolbarView();
|
||||
set_child(container);
|
||||
|
||||
@@ -20,14 +39,9 @@ public class MessageListView : Adw.Bin
|
||||
var header_bar = new Adw.HeaderBar();
|
||||
header_bar.set_title_widget(new Label("Messages"));
|
||||
container.add_top_bar(header_bar);
|
||||
}
|
||||
|
||||
// Create test message set
|
||||
var messages = new TreeSet<Message>();
|
||||
messages.add(new Message("Hello, world!", 1, "user"));
|
||||
messages.add(new Message("How, are you?", 2, null));
|
||||
messages.add(new Message("I'm fine, thank you!", 3, "user"));
|
||||
messages.add(new Message("GTK also supports color expressions, which allow colors to be transformed to new ones and can be nested, providing a rich language to define colors. Color expressions resemble functions, taking 1 or more colors and in some cases a number as arguments.", 4, "user"));
|
||||
|
||||
message_drawing_area.set_messages(messages);
|
||||
private void reload_messages() {
|
||||
message_drawing_area.set_messages(_model.messages);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user