def __init__(self, device): self.device = device self.id = device.id tab_type = device.tab_type self.type = u'device-%s' % tab_type if tab_type == 'audio': self.titlebar_class = itemlistwidgets.DeviceMusicTitlebar else: self.titlebar_class = itemlistwidgets.DeviceVideosTitlebar itemlistcontroller.AudioVideoItemsController.__init__(self) if (u'%s_sort_state' % tab_type) in device.database: sort_key, ascending = device.database[u'%s_sort_state' % tab_type] for view in self.views.keys(): self.on_sort_changed(self, sort_key, ascending, view) if (u'%s_view' % tab_type) in device.database: view_name = device.database[u'%s_view' % tab_type] if view_name == u'list': view_type = WidgetStateStore.get_list_view_type() else: view_type = WidgetStateStore.get_standard_view_type() elif tab_type == 'audio': view_type = WidgetStateStore.get_list_view_type() else: view_type = WidgetStateStore.get_standard_view_type() self.set_view(None, view_type) self.titlebar.connect('list-view-clicked', self.save_view, 'list') self.titlebar.connect('normal-view-clicked', self.save_view, 'normal')
def __init__(self, device): self.device = device self.id = device.id tab_type = device.tab_type self.type = u'device-%s' % tab_type if tab_type == 'audio': self.titlebar_class = itemlistwidgets.DeviceMusicTitlebar else: self.titlebar_class = itemlistwidgets.DeviceVideosTitlebar itemlistcontroller.AudioVideoItemsController.__init__(self) if (u'%s_sort_state' % tab_type) in device.database: sort_key, ascending = device.database[u'%s_sort_state' % tab_type] for view in self.views.keys(): self.on_sort_changed(self, sort_key, ascending, view) if (u'%s_view' % tab_type) in device.database: view_name = device.database[u'%s_view' % tab_type] if view_name == u'list': view_type = WidgetStateStore.get_list_view_type() else: view_type = WidgetStateStore.get_standard_view_type() elif tab_type == 'audio': view_type = WidgetStateStore.get_list_view_type() else: view_type = WidgetStateStore.get_standard_view_type() self.set_view(None, view_type) self.titlebar.connect('list-view-clicked', self.save_view, 'list') self.titlebar.connect('normal-view-clicked', self.save_view, 'normal')
def update_columns_enabled(self): sorts = app.widget_state.get_sorts_enabled(self.type, self.id) widths = app.widget_state.get_column_widths(self.type, self.id, WidgetStateStore.get_list_view_type()) self.list_item_view.column_widths.update(widths) self.list_item_view.update_sorts(sorts) self.standard_view_toolbar.update_sorts(sorts)
def save_columns(self): """Save enabled columns, column order, and column widths""" columns, widths = self.list_item_view.get_column_state() app.widget_state.set_sorts_enabled(self.type, self.id, columns) list_view_type = WidgetStateStore.get_list_view_type() app.widget_state.update_column_widths( self.type, self.id, list_view_type, widths)
def test_view_types(self): # test that all view types are different view_types = (WidgetStateStore.get_list_view_type(), WidgetStateStore.get_standard_view_type(), WidgetStateStore.get_album_view_type()) for i in range(len(view_types)): for j in range(i + 1, len(view_types)): self.assertNotEqual(view_types[i], view_types[j])
def test_view_types(self): # test that all view types are different view_types = (WidgetStateStore.get_list_view_type(), WidgetStateStore.get_standard_view_type(), WidgetStateStore.get_album_view_type()) for i in range(len(view_types)): for j in range(i + 1, len(view_types)): self.assertNotEqual(view_types[i], view_types[j])
def _init_widget(self): toolbar = self.build_header_toolbar() self.selected_view = app.widget_state.get_selected_view(self.type, self.id) self.widget = itemlistwidgets.ItemContainerWidget(toolbar, self.selected_view) self.build_widget() list_view = WidgetStateStore.get_list_view_type() self.views[list_view] = self.build_list_view() self.expand_or_contract_item_details() standard_view = WidgetStateStore.get_standard_view_type() standard_view_widget = itemlistwidgets.StandardView( self.item_list, self.build_renderer()) self.views[standard_view] = standard_view_widget standard_view_background = widgetset.SolidBackground( standard_view_widget.BACKGROUND_COLOR) standard_view_background.add(widgetutil.pad(standard_view_widget, top=10, bottom=10)) # set up member attrs to easily get our list/standard view widgets self.list_item_view = self.views[list_view] self.standard_item_view = self.views[standard_view] self.standard_view_toolbar = toolbar standard_view_scroller = widgetset.Scroller(False, True) standard_view_scroller.add(standard_view_background) self.widget.vbox[standard_view].pack_start( standard_view_scroller, expand=True) self.views[standard_view].set_scroller(standard_view_scroller) standard_view_scroller.set_background_color( standard_view_widget.BACKGROUND_COLOR) toolbar.connect_weak('sort-changed', self.on_sort_changed, standard_view) self.widget.item_details.expander_button.connect_weak('clicked', self.on_item_details_expander_clicked) self.list_item_view.connect_weak('sort-changed', self.on_sort_changed, list_view) self.titlebar.connect_weak('list-view-clicked', self.set_view, list_view) self.titlebar.connect_weak('normal-view-clicked', self.set_view, standard_view) self.titlebar.connect_weak('resume-playing', self.on_resume_playing) self.standard_item_view.renderer.signals.connect_weak( 'throbber-drawn', self.on_throbber_drawn)
def build_list_view(self): """Build the list view widget for this controller.""" list_view_type = WidgetStateStore.get_list_view_type() columns = app.widget_state.get_sorts_enabled(self.type, self.id) list_view_widths = app.widget_state.get_column_widths( self.type, self.id, list_view_type) column_renderers = self.build_column_renderers() list_view = itemlistwidgets.ListView(self.item_list, column_renderers, columns, list_view_widths) scroller = widgetset.Scroller(True, True) scroller.add(list_view) # make the min-width for list view match standard view scroller.set_size_request(600, -1) self.widget.vbox[list_view_type].pack_start(scroller, expand=True) return list_view
def test_default_column_widths(self): # test that all available columns have widths set for them # calculate all columns that available for some display/view # combination available_columns = set() display_id = None # this isn't used yet, just set it to a dummy value for display_type in self.display_types: for view_type in (WidgetStateStore.get_list_view_type(), WidgetStateStore.get_standard_view_type(), WidgetStateStore.get_album_view_type()): available_columns.update( WidgetStateStore.get_columns_available( display_type, display_id, view_type)) # make sure that we have widths for those columns self.assertEqual(available_columns, set(WidgetStateStore.DEFAULT_COLUMN_WIDTHS.keys()))
def test_default_column_widths(self): # test that all available columns have widths set for them # calculate all columns that available for some display/view # combination available_columns = set() display_id = None # this isn't used yet, just set it to a dummy value for display_type in self.display_types: for view_type in (WidgetStateStore.get_list_view_type(), WidgetStateStore.get_standard_view_type(), WidgetStateStore.get_album_view_type()): available_columns.update( WidgetStateStore.get_columns_available( display_type, display_id, view_type)) # make sure that we have widths for those columns self.assertEqual(available_columns, set(WidgetStateStore.DEFAULT_COLUMN_WIDTHS.keys()))
def test_view_types(self): self.assertNotEqual(WidgetStateStore.get_list_view_type(), WidgetStateStore.get_standard_view_type())