Redesign download list contents (multiline)

This commit is contained in:
Thomas Perl 2009-09-22 18:53:14 +02:00
parent 208b69c655
commit 133883412a
3 changed files with 31 additions and 36 deletions

View file

@ -526,6 +526,10 @@ class DownloadTask(object):
self.__episode = episode
self._config = config
# Set names for the downloads list
self.markup_name = saxutils.escape(self.__episode.title)
self.markup_podcast_name = saxutils.escape(self.__episode.channel.title)
# Create the target filename and save it in the database
self.filename = self.__episode.local_filename(create=True)
self.tempname = self.filename + '.partial'

View file

@ -39,13 +39,12 @@ _ = gpodder.gettext
class DownloadStatusModel(gtk.ListStore):
# Symbolic names for our columns, so we know what we're up to
C_TASK, C_NAME, C_URL, C_PROGRESS, C_PROGRESS_TEXT, C_SIZE_TEXT, \
C_ICON_NAME, C_SPEED_TEXT, C_STATUS_TEXT = range(9)
C_TASK, C_NAME, C_URL, C_PROGRESS, C_PROGRESS_TEXT, C_ICON_NAME = range(6)
SEARCH_COLUMNS = (C_NAME, C_URL)
def __init__(self):
gtk.ListStore.__init__(self, object, str, str, int, str, str, str, str, str)
gtk.ListStore.__init__(self, object, str, str, int, str, str)
# Set up stock icon IDs for tasks
self._status_ids = collections.defaultdict(lambda: None)
@ -63,26 +62,30 @@ class DownloadStatusModel(gtk.ListStore):
# Initial update request - update non-changing fields
self.set(iter,
self.C_TASK, task,
self.C_NAME, str(task),
self.C_URL, task.url)
if task.status == task.FAILED:
status_message = _('Failed: %s') % (task.error_message,)
status_message = '%s: %s' % (\
task.STATUS_MESSAGE[task.status], \
task.error_message)
elif task.status == task.DOWNLOADING:
status_message = '%s (%s, %s/s)' % (\
task.STATUS_MESSAGE[task.status], \
util.format_filesize(task.total_size), \
util.format_filesize(task.speed))
else:
status_message = task.STATUS_MESSAGE[task.status]
if task.status == task.DOWNLOADING:
speed_message = '%s/s' % util.format_filesize(task.speed)
else:
speed_message = ''
status_message = '%s (%s)' % (\
task.STATUS_MESSAGE[task.status], \
util.format_filesize(task.total_size))
self.set(iter,
self.C_NAME, '%s\n<small>%s - %s</small>' % (\
task.markup_name, \
status_message, \
task.markup_podcast_name),
self.C_PROGRESS, 100.*task.progress,
self.C_PROGRESS_TEXT, '%.0f%%' % (task.progress*100.,),
self.C_SIZE_TEXT, util.format_filesize(task.total_size),
self.C_ICON_NAME, self._status_ids[task.status],
self.C_SPEED_TEXT, speed_message,
self.C_STATUS_TEXT, status_message)
self.C_ICON_NAME, self._status_ids[task.status])
def __add_new_task(self, task):
iter = self.append()

View file

@ -589,36 +589,24 @@ class gPodder(BuilderWidget, dbus.service.Object):
cell = gtk.CellRendererText()
cell.set_property('ellipsize', pango.ELLIPSIZE_END)
column.pack_start(cell, expand=True)
column.add_attribute(cell, 'text', DownloadStatusModel.C_NAME)
column.add_attribute(cell, 'markup', DownloadStatusModel.C_NAME)
column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
column.set_resizable(True)
column.set_expand(True)
self.treeDownloads.append_column(column)
# Second column: Progress
column = gtk.TreeViewColumn(_('Progress'), gtk.CellRendererProgress(),
cell = gtk.CellRendererProgress()
cell.set_property('yalign', .5)
cell.set_property('ypad', 6)
column = gtk.TreeViewColumn(_('Progress'), cell,
value=DownloadStatusModel.C_PROGRESS, \
text=DownloadStatusModel.C_PROGRESS_TEXT)
column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
column.set_expand(False)
column.set_property('min-width', 150)
column.set_property('max-width', 150)
self.treeDownloads.append_column(column)
# Third column: Size
if gpodder.ui.desktop:
column = gtk.TreeViewColumn(_('Size'), gtk.CellRendererText(),
text=DownloadStatusModel.C_SIZE_TEXT)
self.treeDownloads.append_column(column)
# Fourth column: Speed
column = gtk.TreeViewColumn(_('Speed'), gtk.CellRendererText(),
text=DownloadStatusModel.C_SPEED_TEXT)
self.treeDownloads.append_column(column)
if not gpodder.ui.fremantle:
# Fifth column: Status
column = gtk.TreeViewColumn(_('Status'), gtk.CellRendererText(),
text=DownloadStatusModel.C_STATUS_TEXT)
self.treeDownloads.append_column(column)
self.treeDownloads.set_model(self.download_status_model)
TreeViewHelper.set(self.treeDownloads, TreeViewHelper.ROLE_DOWNLOADS)