Attachments you submit will be routed for moderation. If you have an account, please log in first.

Ticket #1915: 1915_journaltoolbox.patch

File 1915_journaltoolbox.patch, 4.0 KB (added by erikos, 3 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  
    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) 
     
    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) 
     
    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): 
     
    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: 
     
    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)