diff options
author | Michal Hruby <michal.mhr@gmail.com> | 2010-08-09 15:38:56 +0200 |
---|---|---|
committer | Michal Hruby <michal.mhr@gmail.com> | 2010-08-09 15:38:56 +0200 |
commit | 980a03e9b301e93e82a259ccbfe28947c4232d1c (patch) | |
tree | 7f3280e00eebe17cb446661494fdcf2f2146316d | |
parent | b5d7149f1c60f39f84f1ba700db31aa88fe45f30 (diff) |
-rw-r--r-- | src/data-provider.vala | 4 | ||||
-rw-r--r-- | src/recent-manager-provider.vala | 10 | ||||
-rw-r--r-- | src/zeitgeist-datahub.vala | 20 |
3 files changed, 25 insertions, 9 deletions
diff --git a/src/data-provider.vala b/src/data-provider.vala index 3c16b11..b125836 100644 --- a/src/data-provider.vala +++ b/src/data-provider.vala @@ -37,6 +37,10 @@ public abstract class DataProvider : Object { items_available (); } + + public virtual void stop () + { + } protected abstract List<Event> _get_items (); // DataHub will call get_items when items_available is emitted diff --git a/src/recent-manager-provider.vala b/src/recent-manager-provider.vala index c6266ce..f789384 100644 --- a/src/recent-manager-provider.vala +++ b/src/recent-manager-provider.vala @@ -52,8 +52,18 @@ public class RecentManagerGtk : DataProvider recent_manager = Gtk.RecentManager.get_default (); recent_manager.set_limit (-1); + } + public override void start () + { recent_manager.changed.connect (this.items_changed); + + items_available (); + } + + public override void stop () + { + recent_manager.changed.disconnect (this.items_changed); } private void items_changed () diff --git a/src/zeitgeist-datahub.vala b/src/zeitgeist-datahub.vala index 3c6c4a0..cd80a5e 100644 --- a/src/zeitgeist-datahub.vala +++ b/src/zeitgeist-datahub.vala @@ -112,6 +112,17 @@ public class DataHub : Object, DataHubService foreach (unowned DataProvider prov in providers) { bool enabled = true; + // we need to get the timestamp before we register the data provider + int64 timestamp = 0; + foreach (var src in sources_info) + { + if (src.get_unique_id () == prov.unique_id) + { + timestamp = src.get_timestamp (); + break; + } + } + if (prov.register) { var ds = new DataSource.full (prov.unique_id, @@ -130,15 +141,6 @@ public class DataHub : Object, DataHubService prov.items_available.connect (this.items_available); if (enabled) { - int64 timestamp = 0; - foreach (var src in sources_info) - { - if (src.get_unique_id () == prov.unique_id) - { - timestamp = src.get_timestamp (); - break; - } - } prov.last_timestamp = timestamp; prov.start (); } |