diff options
Diffstat (limited to 'libdino')
-rw-r--r-- | libdino/src/plugin/interfaces.vala | 12 | ||||
-rw-r--r-- | libdino/src/plugin/registry.vala | 21 | ||||
-rw-r--r-- | libdino/src/service/database.vala | 4 | ||||
-rw-r--r-- | libdino/src/service/entity_capabilities_storage.vala | 6 |
4 files changed, 36 insertions, 7 deletions
diff --git a/libdino/src/plugin/interfaces.vala b/libdino/src/plugin/interfaces.vala index 705cdfe1..178ca1ab 100644 --- a/libdino/src/plugin/interfaces.vala +++ b/libdino/src/plugin/interfaces.vala @@ -53,4 +53,14 @@ public class ContactDetails : Object { public signal void add(string category, string label, string desc, Widget widget); } -}
\ No newline at end of file +public abstract class ConversationTitlebarEntry : Object { + public abstract string id { get; } + public abstract double order { get; } + public abstract ConversationTitlebarWidget get_widget(); +} + +public interface ConversationTitlebarWidget : Gtk.Widget { + public abstract void set_conversation(Conversation conversation); +} + +} diff --git a/libdino/src/plugin/registry.vala b/libdino/src/plugin/registry.vala index e1ba605d..01d18d5f 100644 --- a/libdino/src/plugin/registry.vala +++ b/libdino/src/plugin/registry.vala @@ -6,6 +6,15 @@ public class Registry { internal ArrayList<EncryptionListEntry> encryption_list_entries = new ArrayList<EncryptionListEntry>(); internal ArrayList<AccountSettingsEntry> account_settings_entries = new ArrayList<AccountSettingsEntry>(); internal ArrayList<ContactDetailsProvider> contact_details_entries = new ArrayList<ContactDetailsProvider>(); + internal Gee.Collection<ConversationTitlebarEntry> conversation_titlebar_entries = new Gee.TreeSet<ConversationTitlebarEntry>((a, b) => { + if (a.order < b.order) { + return -1; + } else if (a.order > b.order) { + return 1; + } else { + return 0; + } + }); public bool register_encryption_list_entry(EncryptionListEntry entry) { lock(encryption_list_entries) { @@ -39,6 +48,16 @@ public class Registry { return true; } } + + public bool register_contact_titlebar_entry(ConversationTitlebarEntry entry) { + lock(conversation_titlebar_entries) { + foreach(ConversationTitlebarEntry e in conversation_titlebar_entries) { + if (e.id == entry.id) return false; + } + conversation_titlebar_entries.add(entry); + return true; + } + } } -}
\ No newline at end of file +} diff --git a/libdino/src/service/database.vala b/libdino/src/service/database.vala index 333c599b..b414b943 100644 --- a/libdino/src/service/database.vala +++ b/libdino/src/service/database.vala @@ -276,7 +276,7 @@ public class Database : Qlite.Database { return ret; } - public void add_entity_features(string entity, ArrayList<string> features) { + public void add_entity_features(string entity, Gee.List<string> features) { foreach (string feature in features) { entity_feature.insert() .value(entity_feature.entity, entity) @@ -285,7 +285,7 @@ public class Database : Qlite.Database { } } - public ArrayList<string> get_entity_features(string entity) { + public Gee.List<string> get_entity_features(string entity) { ArrayList<string> ret = new ArrayList<string>(); foreach (Row row in entity_feature.select({entity_feature.feature}).with(entity_feature.entity, "=", entity)) { ret.add(row[entity_feature.feature]); diff --git a/libdino/src/service/entity_capabilities_storage.vala b/libdino/src/service/entity_capabilities_storage.vala index 9774739a..910ce48d 100644 --- a/libdino/src/service/entity_capabilities_storage.vala +++ b/libdino/src/service/entity_capabilities_storage.vala @@ -12,12 +12,12 @@ public class EntityCapabilitiesStorage : Xep.EntityCapabilities.Storage, Object this.db = db; } - public void store_features(string entity, ArrayList<string> features) { + public void store_features(string entity, Gee.List<string> features) { db.add_entity_features(entity, features); } - public ArrayList<string> get_features(string entitiy) { + public Gee.List<string> get_features(string entitiy) { return db.get_entity_features(entitiy); } } -}
\ No newline at end of file +} |