Merge lp:~ken-vandine/gwibber/cleaner_start into lp:gwibber

Proposed by Ken VanDine
Status: Merged
Approved by: Ken VanDine
Approved revision: 1391
Merged at revision: 1391
Proposed branch: lp:~ken-vandine/gwibber/cleaner_start
Merge into: lp:gwibber
Diff against target: 147 lines (+71/-19)
2 files modified
lens/src/Makefile.am (+1/-0)
lens/src/daemon.vala (+70/-19)
To merge this branch: bzr merge lp:~ken-vandine/gwibber/cleaner_start
Reviewer Review Type Date Requested Status
Didier Roche-Tolomelli (community) Approve
Review via email: mp+128023@code.launchpad.net

Description of the change

Fixes bug 1046360
* Don't do anything to trigger starting gwibber-service unless data is needed.
* Show/Hide the lens based on enabled accounts

To post a comment you must log in.
Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

Looks totally legitimate to me. +1 :)
(great that we can hide lenses ;))

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lens/src/Makefile.am'
--- lens/src/Makefile.am 2012-09-03 14:47:33 +0000
+++ lens/src/Makefile.am 2012-10-04 14:08:24 +0000
@@ -36,6 +36,7 @@
36 --pkg gio-2.0 \36 --pkg gio-2.0 \
37 --pkg gio-unix-2.0 \37 --pkg gio-unix-2.0 \
38 --pkg json-glib-1.0 \38 --pkg json-glib-1.0 \
39 --pkg accounts \
39 --basedir=.40 --basedir=.
4041
41unity_gwibber_daemon_LDADD = \42unity_gwibber_daemon_LDADD = \
4243
=== modified file 'lens/src/daemon.vala'
--- lens/src/daemon.vala 2012-10-03 00:10:30 +0000
+++ lens/src/daemon.vala 2012-10-04 14:08:24 +0000
@@ -41,8 +41,8 @@
41 private Gwibber.Service service;41 private Gwibber.Service service;
42 private Gwibber.Accounts accounts;42 private Gwibber.Accounts accounts;
43 private Gwibber.Utils utils;43 private Gwibber.Utils utils;
44 private Dee.Model? _model;44 private Dee.Model? _model = null;
45 private Dee.Model? _streams_model;45 private Dee.Model? _streams_model = null;
46 private Dee.Filter _sort_filter;46 private Dee.Filter _sort_filter;
47 /* Keep track of the previous search, so we can determine when to47 /* Keep track of the previous search, so we can determine when to
48 * filter down the result set instead of rebuilding it */48 * filter down the result set instead of rebuilding it */
@@ -52,24 +52,65 @@
52 private Dee.Analyzer _analyzer;52 private Dee.Analyzer _analyzer;
53 private Dee.Index _index;53 private Dee.Index _index;
54 private Dee.ICUTermFilter _ascii_filter;54 private Dee.ICUTermFilter _ascii_filter;
55 private Ag.Manager _account_manager;
56 private bool _has_accounts = false;
5557
56 construct58 construct
57 {59 {
58 streams_service = new Gwibber.Streams();60 lens = new Unity.Lens("/com/canonical/unity/lens/gwibber", "gwibber");
59 service = new Gwibber.Service();61 lens.search_in_global = false;
60 utils = new Gwibber.Utils();62 lens.search_hint = _("Enter name or content you would like to search for");
61 accounts = new Gwibber.Accounts();63 lens.visible = false;
6264 try
65 {
66 lens.export ();
67 } catch (GLib.IOError e)
68 {
69 warning ("failed to export lens: %s", e.message);
70 }
71
72
73 // Check for accounts
74 _account_manager = new Ag.Manager.for_service_type("microblogging");
75 GLib.List<Ag.AccountService> accts = _account_manager.get_enabled_account_services();
76 foreach (Ag.AccountService account_service in accts) {
77 Ag.Account account = account_service.get_account();
78 account.set_enabled (false);
79 message ("ACCOUNT PROVIDER: %s", account.get_provider_name());
80 }
81
82 // We only want to trigger starting gwibber-service if there are accounts
83 if (accts.length() > 0)
84 {
85 _has_accounts = true;
86 setup ();
87 }
88
89 _account_manager.enabled_event.connect ((id) =>
90 {
91 accts = _account_manager.get_enabled_account_services();
92 if (accts.length() > 0 && !_has_accounts)
93 {
94 _has_accounts = true;
95 setup ();
96 }
97 else if (accts.length() == 0)
98 {
99 lens.visible = false;
100 _has_accounts = false;
101 }
102 });
103 }
104
105
106 void setup ()
107 {
63 scope = new Unity.Scope ("/com/canonical/unity/scope/gwibber");108 scope = new Unity.Scope ("/com/canonical/unity/scope/gwibber");
64 scope.search_in_global = false;109 scope.search_in_global = false;
65 scope.preview_uri.connect (preview);110 scope.preview_uri.connect (preview);
66111
67 lens = new Unity.Lens("/com/canonical/unity/lens/gwibber", "gwibber");
68 lens.search_in_global = false;
69 lens.search_hint = _("Enter name or content you would like to search for");
70 lens.visible = true;112 lens.visible = true;
71 populate_categories ();113
72 populate_filters();
73 lens.add_local_scope (scope);114 lens.add_local_scope (scope);
74115
75 /* Listen for filter changes */116 /* Listen for filter changes */
@@ -116,13 +157,17 @@
116 scope.queue_search_changed (SearchType.DEFAULT);157 scope.queue_search_changed (SearchType.DEFAULT);
117 });158 });
118159
119 try160 }
120 {161
121 lens.export ();162 private void setup_gwibber ()
122 } catch (GLib.IOError e)163 {
123 {164 streams_service = new Gwibber.Streams();
124 warning ("failed to export lens: %s", e.message);165 service = new Gwibber.Service();
125 }166 utils = new Gwibber.Utils();
167 accounts = new Gwibber.Accounts();
168
169 populate_categories ();
170 populate_filters();
126171
127 _streams_model = streams_service.stream_model;172 _streams_model = streams_service.stream_model;
128 Intl.setlocale(LocaleCategory.COLLATE, "C");173 Intl.setlocale(LocaleCategory.COLLATE, "C");
@@ -335,6 +380,9 @@
335380
336 results_model.clear ();381 results_model.clear ();
337382
383 if (_model == null)
384 setup_gwibber ();
385
338 iter = _model.get_first_iter ();386 iter = _model.get_first_iter ();
339 end = _model.get_last_iter ();387 end = _model.get_last_iter ();
340388
@@ -492,6 +540,9 @@
492 Icon icon;540 Icon icon;
493 string retweet_str, like_str, _img_uri = null;541 string retweet_str, like_str, _img_uri = null;
494542
543 if (_streams_model == null)
544 setup_gwibber ();
545
495 var model = _streams_model;546 var model = _streams_model;
496 unowned Dee.ModelIter iter, end;547 unowned Dee.ModelIter iter, end;
497 iter = model.get_first_iter ();548 iter = model.get_first_iter ();