Fixed height mode; episode list optimization
This commit is contained in:
parent
0189854146
commit
3ee02088c6
|
@ -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"/>
|
||||
|
|
|
@ -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,)))
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in a new issue