aboutsummaryrefslogtreecommitdiff
path: root/libcontextprovider/group.vala
blob: ecdb3441943b1d1d137d2e4f3a25fb9b105f00f9 (plain)
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
namespace ContextProvider {
	internal class Group : GLib.Object {
		public SubscriptionChangedCallback? callback;
		public StringSet keys;
		bool subscribed;
		bool clear_values_on_subscribe;

		public signal void clear_values(StringSet keys);

		public Group (string[] keys, bool clear_values_on_subscribe, SubscriptionChangedCallback? cb) {
			this.keys = new StringSet.from_array(keys);
			this.clear_values_on_subscribe = clear_values_on_subscribe;
			this.callback = cb;
			this.subscribed = false;
		}
		public void subscribe (bool subscribed) {
			if (subscribed != this.subscribed) {
				this.subscribed = subscribed;
				if (callback != null)
					callback (subscribed);
				if (clear_values_on_subscribe && subscribed) {
					clear_values(keys);
				}
			}
		}
	}
}