aboutsummaryrefslogtreecommitdiff
path: root/libdino
diff options
context:
space:
mode:
Diffstat (limited to 'libdino')
-rw-r--r--libdino/src/plugin/interfaces.vala12
-rw-r--r--libdino/src/plugin/registry.vala21
-rw-r--r--libdino/src/service/database.vala4
-rw-r--r--libdino/src/service/entity_capabilities_storage.vala6
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
+}