MessageQueue
Object Hierarchy:
Description:
public class MessageQueue : Object, ListModel
Mid-run queue of Message rows as a GLib.ListModel.
Same shape as History.SessionList: Gee.ArrayList backing store, ListStore-
compatible append / remove / remove_at that emit items_changed. Replacing
items (e.g. session load) also emits items_changed.
Temporary store only: pending vs urgent is the message role string while queued ("user" = pending / follow-up; "urgent"
= urgent). UI / callers set role; this class only owns the list model. Always
append —
insert is unsupported.
Usage Examples
var items = new Gee.ArrayList<Message>(); // session-owned
var q = new MessageQueue(items);
q.append(user_msg);
user_msg.role = "urgent"; // UI escalates
// Session load: swap backing list (ColumnView keeps the same model)
q.items = loaded_session.queued_messages;
// Drain most recent urgent via FilterListModel, then remove from q
var urgent = new Gtk.FilterListModel(q, new Gtk.CustomFilter((item) => {
return ((Message) item).role == "urgent";
}));
if (urgent.get_n_items() > 0) {
var msg = (Message) urgent.get_item(urgent.get_n_items() - 1);
q.remove(msg);
msg.role = "user";
}
Content:
Properties:
Creation methods:
Methods:
- public void append (Message message)
Append a message (ListStore-compatible). Emits items_changed.
- public bool contains (Message message)
Whether message is in the queue.
- public bool find (Message message, out uint position)
Find message and return its position.
- public Object? get_item (uint position)
ListModel: item at position.
- public Type get_item_type ()
ListModel: item type.
- public uint get_n_items ()
ListModel: number of items.
- public void insert (uint position, Message message)
Unsupported — queue is append-only. Asserts not reached.
- public void remove (Message message)
Remove by reference (ListStore-compatible).
- public void remove_all ()
Remove all rows (ListStore-compatible).
- public void remove_at (uint position)
Remove at position (ListStore-compatible). Emits
items_changed.
Signals:
Inherited Members:
All known members inherited from class GLib.Object
- @get
- @new
- @ref
- @set
- add_toggle_ref
- add_weak_pointer
- bind_property
- connect
- constructed
- disconnect
- dispose
- dup_data
- dup_qdata
- force_floating
- freeze_notify
- get_class
- get_data
- get_property
- get_qdata
- get_type
- getv
- interface_find_property
- interface_install_property
- interface_list_properties
- is_floating
- new_valist
- new_with_properties
- newv
- notify
- notify_property
- ref_count
- ref_sink
- remove_toggle_ref
- remove_weak_pointer
- replace_data
- replace_qdata
- set_data
- set_data_full
- set_property
- set_qdata
- set_qdata_full
- set_valist
- setv
- steal_data
- steal_qdata
- thaw_notify
- unref
- watch_closure
- weak_ref
- weak_unref
All known members inherited from interface GLib.ListModel