aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/plugin/interfaces.vala
blob: 1bd3676b95ff57ce0f1b0ba338f8947840ba7546 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using Dino.Entities;
using Xmpp;

namespace Dino.Plugins {

public enum Priority {
    LOWEST,
    LOWER,
    DEFAULT,
    HIGHER,
    HIGHEST
}

public enum WidgetType {
    GTK
}

public interface RootInterface : Object {
    public abstract void registered(Dino.Application app);

    public abstract void shutdown();
}

public interface EncryptionListEntry : Object {
    public abstract Entities.Encryption encryption { get; }
    public abstract string name { get; }

    public abstract bool can_encrypt(Conversation conversation);
}

public abstract class AccountSettingsEntry : Object {
    public abstract string id { get; }
    public virtual Priority priority { get { return Priority.DEFAULT; } }
    public abstract string name { get; }
    public virtual int16 label_top_padding { get { return -1; } }

    public abstract AccountSettingsWidget? get_widget(WidgetType type);
}

public interface AccountSettingsWidget : Object {
    public abstract void set_account(Account account);

    public abstract signal void activated();

    public abstract void deactivate();
}

public interface ContactDetailsProvider : Object {
    public abstract string id { get; }

    public abstract void populate(Conversation conversation, ContactDetails contact_details, WidgetType type);
}

public class ContactDetails : Object {
    public signal void save();
    public signal void add(string category, string label, string? desc, Object widget);
}

public interface TextCommand : Object {
    public abstract string cmd { get; }

    public abstract string? handle_command(string? text, Entities.Conversation? conversation);
}

public interface ConversationTitlebarEntry : Object {
    public abstract string id { get; }
    public abstract double order { get; }
    public abstract ConversationTitlebarWidget? get_widget(WidgetType type);
}

public interface ConversationTitlebarWidget : Object {
    public abstract void set_conversation(Conversation conversation);
}

public abstract interface ConversationItemPopulator : Object {
    public abstract string id { get; }
    public abstract void init(Conversation conversation, ConversationItemCollection summary, WidgetType type);
    public virtual void populate_timespan(Conversation conversation, DateTime from, DateTime to) { }
    public virtual void populate_between_widgets(Conversation conversation, DateTime from, DateTime to) { }
    public abstract void close(Conversation conversation);
}

public abstract class MetaConversationItem : Object {
    public virtual Jid? jid { get; set; default=null; }
    public virtual string color { get; set; default=null; }
    public virtual string display_name { get; set; default=null; }
    public virtual bool dim { get; set; default=false; }
    public virtual DateTime? sort_time { get; set; default=null; }
    public virtual double seccondary_sort_indicator { get; set; }
    public virtual DateTime? display_time { get; set; default=null; }
    public virtual Encryption? encryption { get; set; default=null; }
    public virtual Entities.Message.Marked? mark { get; set; default=null; }

    public abstract bool can_merge { get; set; }
    public abstract bool requires_avatar { get; set; }
    public abstract bool requires_header { get; set; }

    public abstract Object? get_widget(WidgetType type);
}

public abstract class MetaConversationNotification : Object {
    public abstract Object? get_widget(WidgetType type);
}

public interface ConversationItemCollection : Object {
    public signal void insert_item(MetaConversationItem item);
    public signal void remove_item(MetaConversationItem item);
    public signal void add_meta_notification(MetaConversationNotification item);
    public signal void remove_meta_notification(MetaConversationNotification item);
}

public interface MessageDisplayProvider : Object {
    public abstract string id { get; set; }
    public abstract double priority { get; set; }
    public abstract bool can_display(Entities.Message? message);
    public abstract MetaConversationItem? get_item(Entities.Message message, Entities.Conversation conversation);
}

public interface FileWidget : Object {
    public abstract Object? get_widget(WidgetType type);
}

public interface FileDisplayProvider : Object {
    public abstract double priority { get; }
    public abstract bool can_display(Entities.Message? message);
    public abstract FileWidget? get_item(Entities.Message? message);
}

}