~ken-vandine/gwibber/unity-lens-gwibber-dee

« back to all changes in this revision

Viewing changes to unity-gwibber-daemon

  • Committer: Ken VanDine
  • Date: 2011-05-09 16:10:42 UTC
  • Revision ID: ken.vandine@canonical.com-20110509161042-a8ba4fee312yi0bj
Keep a reference to the streams_model

Show diffs side-by-side

added added

removed removed

Lines of Context:
105
105
        global_groups_model.set_schema ("s", "s", "s");
106
106
        self._entry.get_property("global_renderer_info").set_property("groups_model", global_groups_model)
107
107
 
108
 
        # Store all results in a list to be filtered on as needed
109
 
        self.streams_model = Dee.SharedModel.new("com.Gwibber.Streams.Model")
110
 
        self.streams_model.connect ("notify::synchronized", self.on_streams_synchronized)
111
 
        #self.streams_model.connect("row-added", self.on_row_added)
112
 
        #self.streams_model.connect("row-removed", self.on_row_deleted)
113
 
 
114
108
 
115
109
        self.results_model = Dee.SharedModel.new (BUS_NAME + ".ResultsModel");
116
110
        self.results_model.set_schema ("s", "s", "u", "s", "s", "s");
207
201
        except:
208
202
            self.messages = None
209
203
 
210
 
    def on_streams_synchronized(self, model, *args):
211
 
        active_search = self._entry.get_property("active-search")
212
 
        if active_search:
213
 
            search = active_search.get_search_string()
214
 
        else:
215
 
            search = None
216
 
        self.filter_model (search)
217
 
        
218
204
    def filter_model(self, search=None, model=None, section=None):
219
205
        log.logger.debug("filter_model search is %s and section is %s", search, self.active_section)
220
 
 
221
 
        self.results_dirty = True
222
 
        self.results_model.clear()
 
206
        self.models = []
 
207
 
 
208
        # Store all results in a list to be filtered on as needed
 
209
        streams_model = Dee.SharedModel.new("com.Gwibber.Streams.Model")
 
210
        streams_model.connect ("notify::synchronized", self.on_streams_synchronized, search, model, section)
 
211
 
 
212
        self.models.append(streams_model)
 
213
 
 
214
    def on_streams_synchronized(self, streams_model, synchronized, search, results_model, section):
 
215
        log.logger.debug("on_streams_synchronized search is %s and section is %s", search, section)
 
216
        active_search = self._entry.get_property("active-search")
 
217
        if active_search:
 
218
            search = active_search.get_search_string()
 
219
        else:
 
220
            search = None
 
221
        
 
222
        results_model.clear()
223
223
 
224
224
        log.logger.debug("filter_model BEFORE loop")
225
225
        print "###############################################################"
226
 
        print "There are now %s rows in the streams model" % len(self.streams_model) 
 
226
        print "There are now %s rows in the streams model" % len(streams_model) 
227
227
        print "###############################################################"
 
228
        log.logger.debug("There are now %s rows in the streams model", len(streams_model))
 
229
        log.logger.debug("%s", streams_model[0])
 
230
        log.logger.debug("%s", streams_model[len(streams_model)-1])
228
231
 
229
 
        for msg in self.streams_model:
 
232
        for msg in streams_model:
230
233
            if msg[1] not in ["messages", "replies", "private", "images", "links", "videos", "public"]:
231
234
                continue
232
235
            if self.active_section != GROUP_ALL:
237
240
                if search.lower() not in msg[3].lower() and search.lower() not in msg[5].lower():
238
241
                    continue
239
242
            #log.logger.debug("%s, %s, %s", eval("GROUP_" + msg[1].upper()),  msg[3], msg[5])
240
 
            self.results_model.prepend(msg[7], msg[6], eval("GROUP_" + msg[1].upper()), "text/html", msg[3], msg[5])
 
243
            results_model.prepend(msg[7], msg[6], eval("GROUP_" + msg[1].upper()), "text/html", msg[3], msg[5])
241
244
        log.logger.debug("filter_model AFTER loop")
242
 
        self.results_model.flush_revision_queue()
 
245
        results_model.flush_revision_queue()
243
246
        log.logger.debug("filter_model AFTER flush")
244
 
        self.results_dirty = False
245
 
 
246
 
    def add_message(self, msg):
247
 
        if msg is None: return
248
 
        # acctid, stream, service, name, time, content, icon, url
249
 
        self.results_model.prepend(msg[7] , msg[6], eval("GROUP_" + msg[1].upper()), "text/html", msg[3], msg[5])
 
247
        if streams_model:
 
248
            del streams_model
 
249
        if self.models:
 
250
            del self.models
250
251
 
251
252
    def on_active_change(self, entry, section):
252
253
        if self.results_dirty: