diff options
Diffstat (limited to 'notifd/src/notification.vala')
-rw-r--r-- | notifd/src/notification.vala | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/notifd/src/notification.vala b/notifd/src/notification.vala deleted file mode 100644 index 0b4af06..0000000 --- a/notifd/src/notification.vala +++ /dev/null @@ -1,160 +0,0 @@ -public enum AstalNotifd.Urgency { - LOW = 0, - NORMAL = 1, - CRITICAL = 2, -} - -public struct AstalNotifd.Action { - public string id; - public string label; -} - -public class AstalNotifd.Notification : Object { - private List<Action?> _actions; - private HashTable<string, Variant> hints; - - public int64 time { construct set; get; } - public string app_name { construct set; get; } - public string app_icon { construct set; get; } - public string summary { construct set; get; } - public string body { construct set; get; } - public uint id { construct set; get; } - public int expire_timeout { construct set; get; } - public List<Action?> actions { get { return _actions; } } - - public string image { get { return get_str_hint("image-path"); } } - public bool action_icons { get { return get_bool_hint("action-icons"); } } - public string category { get { return get_str_hint("category"); } } - public string desktop_entry { get { return get_str_hint("desktop-entry"); } } - public bool resident { get { return get_bool_hint("resident"); } } - public string sound_file { get { return get_str_hint("sound-file"); } } - public string sound_name { get { return get_str_hint("sound-name"); } } - public bool suppress_sound { get { return get_bool_hint("suppress-sound"); } } - public bool transient { get { return get_bool_hint("transient"); } } - public int x { get { return get_int_hint("x"); } } - public int y { get { return get_int_hint("y"); } } - public Urgency urgency { get { return get_int_hint("urgency"); } } - - internal Notification( - string app_name, - uint id, - string app_icon, - string summary, - string body, - string[] actions, - HashTable<string, Variant> hints, - int expire_timeout - ) { - Object( - app_name: app_name, - id: id, - app_icon: app_icon, - summary: summary, - body: body, - expire_timeout: expire_timeout, - time: new DateTime.now_local().to_unix() - ); - - this.hints = hints; - _actions = new List<Action?>(); - for (var i = 0; i < actions.length; i += 2) { - _actions.append(Action() { - id = actions[i], - label = actions[i + 1] - }); - } - } - - public Variant? get_hint(string hint) { - return hints.contains(hint) ? hints.get(hint) : null; - } - - public unowned string get_str_hint(string hint) { - return hints.contains(hint) ? hints.get(hint).get_string() : null; - } - - public bool get_bool_hint(string hint) { - return hints.contains(hint) ? hints.get(hint).get_boolean() : false; - } - - public int get_int_hint(string hint) { - return hints.contains(hint) ? hints.get(hint).get_int32() : 0; - } - - public signal void resolved(ClosedReason reason); - public signal void dismissed(); - public signal void invoked(string action); - - public void dismiss() { dismissed(); } - public void invoke(string action) { invoked(action); } - - internal Notification.from_json(Json.Object root) throws GLib.Error { - foreach (var key in root.get_members()) { - var node = root.get_member(key); - switch (key) { - case "id": id = (uint)node.get_int(); break; - case "time": time = node.get_int(); break; - case "expire_timeout": expire_timeout = (int)node.get_int(); break; - case "app_name": app_name = node.get_string(); break; - case "app_icon": app_icon = node.get_string(); break; - case "summary": summary = node.get_string(); break; - case "body": body = node.get_string(); break; - case "hints": - hints = new HashTable<string, Variant>(str_hash, str_equal); - var obj = node.get_object(); - foreach (var hint in obj.get_members()) { - hints.set(hint, Json.gvariant_deserialize(obj.get_member(hint), null)); - } - break; - case "actions": - _actions = new List<Action?>(); - for (var i = 0; i < node.get_array().get_length(); ++i) { - var o = node.get_array().get_object_element(i); - _actions.append(Action() { - id = o.get_member("id").get_string(), - label = o.get_member("label").get_string() - }); - } - break; - default: break; - } - } - } - - internal static Notification from_json_string(string json) throws GLib.Error { - var parser = new Json.Parser(); - parser.load_from_data(json); - return new Notification.from_json(parser.get_root().get_object()); - } - - public string to_json_string() { - var generator = new Json.Generator(); - generator.set_root(to_json()); - return generator.to_data(null); - } - - internal Json.Node to_json() { - var acts = new Json.Builder().begin_array(); - foreach (var action in actions) { - acts.begin_object() - .set_member_name("id").add_string_value(action.id) - .set_member_name("label").add_string_value(action.label) - .end_object(); - } - acts.end_array(); - - return new Json.Builder() - .begin_object() - .set_member_name("id").add_int_value(id) - .set_member_name("time").add_int_value(time) - .set_member_name("expire_timeout").add_int_value(expire_timeout) - .set_member_name("app_name").add_string_value(app_name) - .set_member_name("app_icon").add_string_value(app_icon) - .set_member_name("summary").add_string_value(summary) - .set_member_name("body").add_string_value(body) - .set_member_name("actions").add_value(acts.get_root()) - .set_member_name("hints").add_value(Json.gvariant_serialize(hints)) - .end_object() - .get_root(); - } -} |