summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Hruby <michal.mhr@gmail.com>2010-08-04 00:52:29 +0200
committerMichal Hruby <michal.mhr@gmail.com>2010-08-04 00:52:29 +0200
commit942f4edc89ca45db98a7f2f6093d6705c78eef31 (patch)
treebdba2f625660090b5456b6b3bf5d534efc07a166
parent9d42b7ee0363243d66746b930f619921edb083a8 (diff)
Added actor ignoring
-rw-r--r--src/recent-manager-provider.vala6
-rw-r--r--src/zeitgeist-datahub.vala52
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;