def _on_selection_changed(self, selection): tree,selected = selection.get_selected_rows() selected = [i[0] for i in selected] resume_sens = False i=-1 for item in self._downloads_liststore: i+=1 if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED: if i in selected: item[D_DESCRIPTION_MARKUP] = '<i>'+utils.my_quote(item[D_DESCRIPTION])+'</i>' item[D_SIZE_MARKUP]= '<i>'+item[D_SIZE]+'</i>' if item[D_STATUS] == PAUSED: item[D_STATUS_MARKUP] = '<i>'+_("Paused")+'</i>' resume_sens = True elif item[D_STATUS] == QUEUED: item[D_STATUS_MARKUP] = '<i>'+_("Queued")+'</i>' else: item[D_DESCRIPTION_MARKUP] = '<span color="#777"><i>'+utils.my_quote(item[D_DESCRIPTION])+'</i></span>' item[D_SIZE_MARKUP]= '<span color="#777"><i>'+item[D_SIZE]+'</i></span>' if item[D_STATUS] == PAUSED: item[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Paused")+'</i></span>' elif item[D_STATUS] == QUEUED: item[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Queued")+'</i></span>' else: item[D_DESCRIPTION_MARKUP] = utils.my_quote(item[D_DESCRIPTION]) item[D_SIZE_MARKUP] = item[D_SIZE] item[D_STATUS_MARKUP] = "" self._resume_button.set_sensitive(resume_sens)
def _push_update_handler(self): if len(self._updates) == 0 or not self._show_notifications: self._updater_id = -1 return False feed_id, entry_id = self._updates.pop(0) feed_title = self._app.db.get_feed_title(feed_id) entry = self._app.db.get_entry(entry_id) icon = self._icon_manager.get_icon(feed_id) feed_title = utils.my_quote(feed_title) entry_title = utils.my_quote(entry['title']) self._tray_icon.display_notification(feed_title, entry_title, icon, (NOTIFY_ENTRY, entry)) return True
def _download_finished_cb(self, app, d): if (d.status == FINISHED or d.status == FINISHED_AND_PLAY) and \ self._show_notifications: entry = self._app.db.get_entry(d.media['entry_id']) entry_title = utils.my_quote(entry['title']) feed_title = self._app.db.get_feed_title(entry['feed_id']) feed_title = utils.my_quote(feed_title) icon = self._icon_manager.get_icon(entry['feed_id']) title = _("Download Complete") d2 = {'feed_title':feed_title, 'entry_title':entry_title, 'size': utils.format_size(d.total_size)} message = _("<b>%(feed_title)s:</b> %(entry_title)s" % d2) self._tray_icon.display_notification(title, message, icon, (NOTIFY_DOWNLOAD, d.media['media_id']))
def _get_fancy_markedup_title(self, title, first_entry_title, unread, total, flag, feed_id, selected=None): #logging.debug("fancy title: %s %s %i %i %i %i", title, first_entry_title, unread, total, flag, feed_id) if selected is None: selection = self._widget.get_selection() model, iter = selection.get_selected() try: sel = model[iter][FEEDID] except: sel = -1 selected = feed_id == sel if not title: return _("Please wait...") try: if utils.RUNNING_HILDON: if not selected: title = '<span size="large">'+utils.my_quote(title)+'</span>\n<span color="#777777"><i>'+utils.my_quote(first_entry_title)+'</i></span>' else: title = '<span size="large">'+utils.my_quote(title)+'</span>\n<span><i>'+utils.my_quote(first_entry_title)+'</i></span>' else: if not selected: title = utils.my_quote(title)+'\n<span color="#777777" size="x-small"><i>'+utils.my_quote(first_entry_title)+'</i></span>' else: title = utils.my_quote(title)+'\n<span size="x-small"><i>'+utils.my_quote(first_entry_title)+'</i></span>' if flag & ptvDB.F_UNVIEWED == ptvDB.F_UNVIEWED: if unread == 0: logging.warning("Flag says there are unviewed, but count says no. not setting bold") else: title="<b>"+title+'</b>' except: return title return title
def _get_markedup_title(self, title, flag): if not title: return _("Please wait...") if utils.RUNNING_SUGAR: title='<span size="x-small">'+title+'</span>' elif utils.RUNNING_HILDON: title='<span size="large">'+title+'</span>' try: if flag & ptvDB.F_UNVIEWED == ptvDB.F_UNVIEWED: title="<b>"+utils.my_quote(title)+"</b>" except: return title return title
def _on_selection_changed(self, selection): tree, selected = selection.get_selected_rows() selected = [i[0] for i in selected] resume_sens = False i = -1 for item in self._downloads_liststore: i += 1 if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED: if i in selected: item[D_DESCRIPTION_MARKUP] = '<i>' + utils.my_quote( item[D_DESCRIPTION]) + '</i>' item[D_SIZE_MARKUP] = '<i>' + item[D_SIZE] + '</i>' if item[D_STATUS] == PAUSED: item[D_STATUS_MARKUP] = '<i>' + _("Paused") + '</i>' resume_sens = True elif item[D_STATUS] == QUEUED: item[D_STATUS_MARKUP] = '<i>' + _("Queued") + '</i>' else: item[ D_DESCRIPTION_MARKUP] = '<span color="#777"><i>' + utils.my_quote( item[D_DESCRIPTION]) + '</i></span>' item[D_SIZE_MARKUP] = '<span color="#777"><i>' + item[ D_SIZE] + '</i></span>' if item[D_STATUS] == PAUSED: item[D_STATUS_MARKUP] = '<span color="#777"><i>' + _( "Paused") + '</i></span>' elif item[D_STATUS] == QUEUED: item[D_STATUS_MARKUP] = '<span color="#777"><i>' + _( "Queued") + '</i></span>' else: item[D_DESCRIPTION_MARKUP] = utils.my_quote( item[D_DESCRIPTION]) item[D_SIZE_MARKUP] = item[D_SIZE] item[D_STATUS_MARKUP] = "" self._resume_button.set_sensitive(resume_sens)
def update_downloads(self): """gets called a lot (once for every progress callback) so be quick""" self._downloads = self._mm.get_download_list() current_list = [item.media['media_id'] for item in self._downloads] viewing_list = [item[D_MEDIA_ID] for item in self._downloads_liststore] oldset = set(viewing_list) newset = set(current_list) removed = list(oldset.difference(newset)) added = list(newset.difference(oldset)) unchanged = list(oldset.intersection(newset)) #slower but works better, because the list is changing all over the place for item in removed: i = -1 for row in self._downloads_liststore: i += 1 if row[0] == item: self._downloads_liststore.remove( self._downloads_liststore.get_iter((i, ))) break tree, selected = self._downloads_listview.get_selection( ).get_selected_rows() selected = [i[0] for i in selected] i = -1 for item in self._downloads_liststore: i += 1 if item[D_MEDIA_ID] in unchanged: index = current_list.index(item[D_MEDIA_ID]) medium = self._downloads[index] iter = self._downloads_liststore[i] iter[D_PROGRESS] = medium.progress iter[D_SIZE] = utils.format_size(medium.total_size) #iter[D_STATUS] refers to the old status if medium.status == PAUSED or medium.status == QUEUED: if iter[D_STATUS] != medium.status: if i in selected: iter[ D_DESCRIPTION_MARKUP] = '<i>' + utils.my_quote( iter[D_DESCRIPTION]) + '</i>' iter[D_SIZE_MARKUP] = '<i>' + iter[D_SIZE] + '</i>' if medium.status == PAUSED: iter[D_STATUS_MARKUP] = '<i>' + _( "Paused") + '</i>' elif medium.status == QUEUED: iter[D_STATUS_MARKUP] = '<i>' + _( "Queued") + '</i>' else: iter[ D_DESCRIPTION_MARKUP] = '<span color="#777"><i>' + utils.my_quote( iter[D_DESCRIPTION]) + '</i></span>' iter[ D_SIZE_MARKUP] = '<span color="#777"><i>' + iter[ D_SIZE] + '</i></span>' if medium.status == PAUSED: iter[ D_STATUS_MARKUP] = '<span color="#777"><i>' + _( "Paused") + '</i></span>' elif medium.status == QUEUED: iter[ D_STATUS_MARKUP] = '<span color="#777"><i>' + _( "Queued") + '</i></span>' iter[D_STATUS] = medium.status else: #if iter[D_STATUS] == PAUSED or i in selected: iter[D_DESCRIPTION_MARKUP] = utils.my_quote( iter[D_DESCRIPTION]) iter[D_SIZE_MARKUP] = iter[D_SIZE] iter[D_STATUS] = medium.status iter[D_STATUS_MARKUP] = "" #check resume button sensitivity resume_sens = False i = -1 for item in self._downloads_liststore: i += 1 if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED: if i in selected: resume_sens = True break self._resume_button.set_sensitive(resume_sens) for media_id in added: item = self._downloads[current_list.index(media_id)] try: entry = self._app.db.get_entry(item.media['entry_id']) description = self._app.db.get_feed_title( entry['feed_id']) + " " + utils.get_hyphen( ) + " " + entry['title'] size = utils.format_size(item.total_size) except: logging.warning( "trouble getting entry updating downloads: %s" % str(item)) continue if item.status == PAUSED: description_markup = '<span color="#777"><i>' + utils.my_quote( description) + '</i></span>' size_markup = '<span color="#777"><i>' + size + '</i></span>' status_markup = '<i>' + _("Paused") + '</i>' elif item.status == QUEUED: description_markup = '<span color="#777"><i>' + utils.my_quote( description) + '</i></span>' size_markup = '<span color="#777"><i>' + size + '</i></span>' status_markup = '<i>' + _("Queued") + '</i>' else: description_markup = utils.my_quote(description) size_markup = size status_markup = "" pixbuf = self._icon_manager.get_icon_pixbuf( entry['feed_id'], MAX_WIDTH, MAX_HEIGHT, MIN_SIZE, MIN_SIZE) self._downloads_liststore.append([ media_id, description, description_markup, item.progress, size, size_markup, pixbuf, item.status, status_markup ]) #make sure both lists are sorted the same way id_list = [row[D_MEDIA_ID] for row in self._downloads_liststore] self._downloads.sort(lambda x, y: id_list.index(x.media['media_id']) - id_list.index(y.media['media_id']))
def update_downloads(self): """gets called a lot (once for every progress callback) so be quick""" self._downloads = self._mm.get_download_list() current_list = [item.media['media_id'] for item in self._downloads] viewing_list = [item[D_MEDIA_ID] for item in self._downloads_liststore] oldset = set(viewing_list) newset = set(current_list) removed = list(oldset.difference(newset)) added = list(newset.difference(oldset)) unchanged = list(oldset.intersection(newset)) #slower but works better, because the list is changing all over the place for item in removed: i=-1 for row in self._downloads_liststore: i+=1 if row[0] == item: self._downloads_liststore.remove(self._downloads_liststore.get_iter((i,))) break tree,selected = self._downloads_listview.get_selection().get_selected_rows() selected = [i[0] for i in selected] i=-1 for item in self._downloads_liststore: i+=1 if item[D_MEDIA_ID] in unchanged: index = current_list.index(item[D_MEDIA_ID]) medium = self._downloads[index] iter = self._downloads_liststore[i] iter[D_PROGRESS] = medium.progress iter[D_SIZE] = utils.format_size(medium.total_size) #iter[D_STATUS] refers to the old status if medium.status == PAUSED or medium.status == QUEUED: if iter[D_STATUS] != medium.status: if i in selected: iter[D_DESCRIPTION_MARKUP] = '<i>'+utils.my_quote(iter[D_DESCRIPTION])+'</i>' iter[D_SIZE_MARKUP]= '<i>'+iter[D_SIZE]+'</i>' if medium.status == PAUSED: iter[D_STATUS_MARKUP] = '<i>'+_("Paused")+'</i>' elif medium.status == QUEUED: iter[D_STATUS_MARKUP] = '<i>'+_("Queued")+'</i>' else: iter[D_DESCRIPTION_MARKUP] = '<span color="#777"><i>'+utils.my_quote(iter[D_DESCRIPTION])+'</i></span>' iter[D_SIZE_MARKUP] = '<span color="#777"><i>'+iter[D_SIZE]+'</i></span>' if medium.status == PAUSED: iter[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Paused")+'</i></span>' elif medium.status == QUEUED: iter[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Queued")+'</i></span>' iter[D_STATUS] = medium.status else: #if iter[D_STATUS] == PAUSED or i in selected: iter[D_DESCRIPTION_MARKUP] = utils.my_quote(iter[D_DESCRIPTION]) iter[D_SIZE_MARKUP]= iter[D_SIZE] iter[D_STATUS] = medium.status iter[D_STATUS_MARKUP] = "" #check resume button sensitivity resume_sens = False i=-1 for item in self._downloads_liststore: i+=1 if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED: if i in selected: resume_sens = True break self._resume_button.set_sensitive(resume_sens) for media_id in added: item = self._downloads[current_list.index(media_id)] try: entry = self._app.db.get_entry(item.media['entry_id']) description = self._app.db.get_feed_title(entry['feed_id']) + " " + utils.get_hyphen() + " " + entry['title'] size = utils.format_size(item.total_size) except: logging.warning("trouble getting entry updating downloads: %s" % str(item)) continue if item.status == PAUSED: description_markup = '<span color="#777"><i>'+utils.my_quote(description)+'</i></span>' size_markup = '<span color="#777"><i>'+size+'</i></span>' status_markup = '<i>'+_("Paused")+'</i>' elif item.status == QUEUED: description_markup = '<span color="#777"><i>'+utils.my_quote(description)+'</i></span>' size_markup = '<span color="#777"><i>'+size+'</i></span>' status_markup = '<i>'+_("Queued")+'</i>' else: description_markup = utils.my_quote(description) size_markup = size status_markup = "" pixbuf = self._icon_manager.get_icon_pixbuf(entry['feed_id'], MAX_WIDTH, MAX_HEIGHT, MIN_SIZE, MIN_SIZE) self._downloads_liststore.append([media_id, description, description_markup, item.progress, size, size_markup, pixbuf, item.status, status_markup]) #make sure both lists are sorted the same way id_list = [row[D_MEDIA_ID] for row in self._downloads_liststore] self._downloads.sort(lambda x,y: id_list.index(x.media['media_id']) - id_list.index(y.media['media_id']))