Ticket #1915: 1915_journaltoolbox.patch

File 1915_journaltoolbox.patch, 4.0 KB (added by erikos, 14 years ago)

Patch against jornaltoolbox

  • src/jarabe/journal/journaltoolbox.py

    diff --git a/src/jarabe/journal/journaltoolbox.py b/src/jarabe/journal/journaltoolbox.py
    index 61671bc..bf2a2c1 100644
    a b class SearchToolbar(gtk.Toolbar): 
    109109        self.insert(tool_item, -1)
    110110        tool_item.show()
    111111
     112        self._add_separator(expand=True)
     113
     114        self._list_view_button = ListViewButton()
     115        self._list_view_button.connect('clicked', self.__view_button_clicked_cb)
     116        self.insert(self._list_view_button, -1)
     117        self._list_view_button.connect('sort-property-changed',
     118                                       self.__sort_changed_cb)
     119        self._list_view_button.show()
     120
    112121        # TODO: enable it when the DS supports saving the buddies.
    113122        #self._with_search_combo = self._get_with_search_combo()
    114123        #tool_item = ToolComboBox(self._with_search_combo)
    class SearchToolbar(gtk.Toolbar): 
    154163        with_search.connect('changed', self._combo_changed_cb)
    155164        return with_search
    156165
     166    def _add_separator(self, expand=False):
     167        separator = gtk.SeparatorToolItem()
     168        separator.props.draw = False
     169        if expand:
     170            separator.set_expand(True)
     171        else:
     172            separator.set_size_request(style.GRID_CELL_SIZE,
     173                                       style.GRID_CELL_SIZE)
     174        self.insert(separator, -1)
     175        separator.show()
     176
    157177    def _add_widget(self, widget, expand=False):
    158178        tool_item = gtk.ToolItem()
    159179        tool_item.set_expand(expand)
    class SearchToolbar(gtk.Toolbar): 
    191211            if text:
    192212                query['query'] = text
    193213
     214        property_, order = self._list_view_button.get_current_sort()
     215
     216        if order == gtk.SORT_ASCENDING:
     217            sign = '+'
     218        else:
     219            sign = '-'
     220        query['order_by'] = [sign + property_]
     221
    194222        return query
    195223
    196224    def _get_date_range(self):
    class SearchToolbar(gtk.Toolbar): 
    213241    def _combo_changed_cb(self, combo):
    214242        self._update_if_needed()
    215243
     244    def __sort_changed_cb(self, button):
     245        self._update_if_needed()
     246
     247    def __view_button_clicked_cb(self, button):
     248        self._list_view_button.palette.popup(immediate=True, state=1)
     249
    216250    def _update_if_needed(self):
    217251        new_query = self._build_query()
    218252        if self._query != new_query:
    class EntryToolbar(gtk.Toolbar): 
    456490                                activity_info.get_bundle_id())
    457491            palette.menu.append(menu_item)
    458492            menu_item.show()
     493
     494
     495class ListViewButton(ToolButton):
     496    __gtype_name__ = 'JournalListViewButton'
     497
     498    __gsignals__ = {
     499        'sort-property-changed': (gobject.SIGNAL_RUN_FIRST,
     500                                  gobject.TYPE_NONE,
     501                                  ([])),
     502    }
     503
     504    _SORT_OPTIONS = [
     505        ('timestamp', 'view-lastedit', _('Sort by date modified')),
     506        ('creation_time', 'view-created', _('Sort by date created')),
     507        ('filesize', 'view-size', _('Sort by size')),
     508    ]
     509
     510    def __init__(self):
     511        ToolButton.__init__(self)
     512
     513        self._property = 'timestamp'
     514        self._order = gtk.SORT_ASCENDING
     515
     516        self.props.tooltip = _('Sort view')
     517        self.props.icon_name = 'view-lastedit'
     518
     519        for property_, icon, label in self._SORT_OPTIONS:
     520            button = MenuItem(icon_name=icon, text_label=label)
     521            button.connect('activate',
     522                           self.__sort_type_changed_cb,
     523                           property_,
     524                           icon)
     525            button.show()
     526            self.props.palette.menu.insert(button, -1)
     527
     528    def __sort_type_changed_cb(self, widget, property_, icon_name):
     529        self._property = property_
     530        #FIXME: Implement sorting order
     531        self._order = gtk.SORT_ASCENDING
     532        self.emit('sort-property-changed')
     533
     534        self.props.icon_name = icon_name
     535
     536    def get_current_sort(self):
     537        return (self._property, self._order)