Fixed height mode; episode list optimization

This commit is contained in:
Thomas Perl 2010-11-20 23:15:30 +01:00
parent 0189854146
commit 3ee02088c6
3 changed files with 25 additions and 39 deletions

View file

@ -26,7 +26,7 @@
<property name="headers_visible">False</property>
<property name="rules_hint">True</property>
<property name="reorderable">False</property>
<property name="fixed_height_mode">False</property>
<property name="fixed_height_mode">True</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
<signal name="expose-event" handler="on_treeview_expose_event"/>

View file

@ -34,6 +34,8 @@ from gpodder.gtkui import download
from gpodder.gtkui import model
from gpodder.gtkui.frmntl import style
from gpodder import util
class DownloadStatusModel(download.DownloadStatusModel):
def __init__(self):
download.DownloadStatusModel.__init__(self)
@ -143,9 +145,7 @@ class EpisodeListModel(gtk.GenericTreeModel):
elif column == self.C_PUBLISHED_TEXT:
return episode.cute_pubdate()
elif column == self.C_DESCRIPTION:
return self._format_description(episode, \
self._include_description, \
self._downloading)
return self._format_description(episode)
elif column == self.C_TOOLTIP:
return ''
elif column == self.C_VIEW_SHOW_UNDELETED:
@ -171,7 +171,7 @@ class EpisodeListModel(gtk.GenericTreeModel):
return (episode.total_time and episode.current_position)
elif column == self.C_LOCKED:
return episode.is_locked and \
episode.state== gpodder.STATE_DOWNLOADED and \
episode.state == gpodder.STATE_DOWNLOADED and \
episode.file_exists()
raise Exception('could not find column index: ' + str(column))
@ -233,34 +233,17 @@ class EpisodeListModel(gtk.GenericTreeModel):
ICON = lambda x: x
self._icon_cache = {}
self.ICON_AUDIO_FILE = ICON('audio-x-generic')
self.ICON_VIDEO_FILE = ICON('video-x-generic')
self.ICON_IMAGE_FILE = ICON('image-x-generic')
self.ICON_GENERIC_FILE = ICON('text-x-generic')
self.ICON_DOWNLOADING = gtk.STOCK_GO_DOWN
self.ICON_DELETED = gtk.STOCK_DELETE
self.ICON_AUDIO_FILE = ICON('general_audio_file')
self.ICON_VIDEO_FILE = ICON('general_video_file')
self.ICON_IMAGE_FILE = ICON('general_image')
self.ICON_GENERIC_FILE = ICON('filemanager_unknown_file')
self.ICON_DOWNLOADING = ICON('email_inbox')
self.ICON_DELETED = ICON('camera_delete')
self.ICON_UNPLAYED = ICON('emblem-new')
self.ICON_LOCKED = ICON('emblem-readonly')
self.ICON_MISSING = ICON('emblem-unreadable')
self.ICON_NEW = gtk.STOCK_ABOUT
if gpodder.ui.fremantle:
self.ICON_AUDIO_FILE = ICON('general_audio_file')
self.ICON_VIDEO_FILE = ICON('general_video_file')
self.ICON_IMAGE_FILE = ICON('general_image')
self.ICON_GENERIC_FILE = ICON('filemanager_unknown_file')
self.ICON_DOWNLOADING = ICON('email_inbox')
self.ICON_DELETED = ICON('camera_delete_dimmed')
if 'KDE_FULL_SESSION' in os.environ:
# Workaround until KDE adds all the freedesktop icons
# See https://bugs.kde.org/show_bug.cgi?id=233505 and
# http://gpodder.org/bug/553
self.ICON_DELETED = ICON('archive-remove')
self.ICON_UNPLAYED = ICON('vcs-locally-modified')
self.ICON_LOCKED = ICON('emblem-locked')
self.ICON_MISSING = ICON('vcs-conflicting')
normal_font = style.get_font_desc('SystemFont')
normal_color = style.get_color('DefaultTextColor')
normal = (normal_font.to_string(), normal_color.to_string())
@ -336,8 +319,8 @@ class EpisodeListModel(gtk.GenericTreeModel):
return self._search_term
def _format_description(self, episode, include_description=False, is_downloading=None):
if is_downloading is not None and is_downloading(episode):
def _format_description(self, episode):
if self._downloading(episode):
sub = _('in downloads list')
if self._all_episodes_view:
sub = '; '.join((sub, _('from %s') % cgi.escape(episode.channel.title,)))

View file

@ -1009,9 +1009,12 @@ class gPodder(BuilderWidget, dbus.service.Object):
namecolumn.add_attribute(iconcell, 'icon-name', EpisodeListModel.C_STATUS_ICON)
namecolumn.pack_start(namecell, True)
namecolumn.add_attribute(namecell, 'markup', EpisodeListModel.C_DESCRIPTION)
namecolumn.set_sort_column_id(EpisodeListModel.C_DESCRIPTION)
namecolumn.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
namecolumn.set_resizable(True)
if gpodder.ui.fremantle:
namecolumn.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
else:
namecolumn.set_sort_column_id(EpisodeListModel.C_DESCRIPTION)
namecolumn.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
namecolumn.set_resizable(True)
namecolumn.set_expand(True)
if gpodder.ui.fremantle:
@ -1058,13 +1061,13 @@ class gPodder(BuilderWidget, dbus.service.Object):
releasecolumn = gtk.TreeViewColumn(_('Released'), releasecell, text=EpisodeListModel.C_PUBLISHED_TEXT)
releasecolumn.set_sort_column_id(EpisodeListModel.C_PUBLISHED)
for itemcolumn in (namecolumn, sizecolumn, releasecolumn):
itemcolumn.set_reorderable(True)
self.treeAvailable.append_column(itemcolumn)
namecolumn.set_reorderable(True)
self.treeAvailable.append_column(namecolumn)
if gpodder.ui.maemo:
sizecolumn.set_visible(False)
releasecolumn.set_visible(False)
if not gpodder.ui.maemo:
for itemcolumn in (sizecolumn, releasecolumn):
itemcolumn.set_reorderable(True)
self.treeAvailable.append_column(itemcolumn)
# Set up type-ahead find for the episode list
def on_key_press(treeview, event):