diff options
author | Michal Hruby <michal.mhr@gmail.com> | 2010-08-04 00:52:29 +0200 |
---|---|---|
committer | Michal Hruby <michal.mhr@gmail.com> | 2010-08-04 00:52:29 +0200 |
commit | 942f4edc89ca45db98a7f2f6093d6705c78eef31 (patch) | |
tree | bdba2f625660090b5456b6b3bf5d534efc07a166 | |
parent | 9d42b7ee0363243d66746b930f619921edb083a8 (diff) |
Added actor ignoring
-rw-r--r-- | src/recent-manager-provider.vala | 6 | ||||
-rw-r--r-- | src/zeitgeist-datahub.vala | 52 |
2 files changed, 56 insertions, 2 deletions
diff --git a/src/recent-manager-provider.vala b/src/recent-manager-provider.vala index 9952893..cc938eb 100644 --- a/src/recent-manager-provider.vala +++ b/src/recent-manager-provider.vala @@ -76,6 +76,7 @@ public class RecentManagerGtk : DataProvider if (!enabled) return events; int64 signal_time = Timestamp.now (); + string[] ignored_actors = datahub.get_data_source_actors (); foreach (Gtk.RecentInfo ri in recent_manager.get_items ()) { @@ -118,6 +119,11 @@ public class RecentManagerGtk : DataProvider } var actor = "application://%s".printf (Path.get_basename (desktop_file)); + if (actor in ignored_actors) + { + continue; + } + unowned string? right_sep = ri.get_uri ().rstr (Path.DIR_SEPARATOR_S); string origin = right_sep != null ? ri.get_uri ().ndup ((char*) right_sep - (char*) ri.get_uri ()) : diff --git a/src/zeitgeist-datahub.vala b/src/zeitgeist-datahub.vala index 033f154..3c6c4a0 100644 --- a/src/zeitgeist-datahub.vala +++ b/src/zeitgeist-datahub.vala @@ -61,13 +61,35 @@ public class DataHub : Object, DataHubService }); registry = new DataSourceRegistry (); - start_data_providers (); + } + + private void data_source_registered (DataSource ds) + { + unowned List<DataSource> iter = sources_info; + while (iter != null) + { + if (iter.data.get_unique_id () == ds.get_unique_id ()) + { + break; + } + iter = iter.next; + } + + if (iter != null) + { + iter.data = ds; + } + else + { + sources_info.prepend (ds); + } } private async void start_data_providers () { try { + registry.source_registered.connect (data_source_registered); var sources = yield registry.get_data_sources (null); for (uint i=0; i<sources.len; i++) { @@ -193,6 +215,7 @@ public class DataHub : Object, DataHubService if (request_name_result == DBus.RequestNameReply.PRIMARY_OWNER) { connection.register_object ("/org/gnome/zeitgeist/datahub", this); + start_data_providers (); main_loop.run (); } else @@ -214,9 +237,34 @@ public class DataHub : Object, DataHubService main_loop.quit (); } + public string[] get_data_source_actors () + { + string[] actors = {}; + foreach (unowned DataSource src in sources_info) + { + unowned PtrArray template_arr = src.get_event_templates (); + if (template_arr != null) + { + for (uint i=0; i<template_arr.len; i++) + { + unowned Zeitgeist.Event event_template = + template_arr.index (i) as Zeitgeist.Event; + unowned string? actor = event_template.get_actor (); + + if (actor != null && actor != "") + { + actors += actor; + } + } + } + } + + return actors; + } + public string[] get_data_providers () throws DBus.Error { - string [] arr = {}; + string[] arr = {}; foreach (var provider in providers) { arr += provider.unique_id; |