diff --git a/src/jarabe/journal/journaltoolbox.py b/src/jarabe/journal/journaltoolbox.py
index 61671bc..bf2a2c1 100644
--- a/src/jarabe/journal/journaltoolbox.py
+++ b/src/jarabe/journal/journaltoolbox.py
@@ -109,6 +109,15 @@ class SearchToolbar(gtk.Toolbar):
         self.insert(tool_item, -1)
         tool_item.show()
 
+        self._add_separator(expand=True)
+
+        self._list_view_button = ListViewButton()
+        self._list_view_button.connect('clicked', self.__view_button_clicked_cb)
+        self.insert(self._list_view_button, -1)
+        self._list_view_button.connect('sort-property-changed',
+                                       self.__sort_changed_cb)
+        self._list_view_button.show()
+
         # TODO: enable it when the DS supports saving the buddies.
         #self._with_search_combo = self._get_with_search_combo()
         #tool_item = ToolComboBox(self._with_search_combo)
@@ -154,6 +163,17 @@ class SearchToolbar(gtk.Toolbar):
         with_search.connect('changed', self._combo_changed_cb)
         return with_search
 
+    def _add_separator(self, expand=False):
+        separator = gtk.SeparatorToolItem()
+        separator.props.draw = False
+        if expand:
+            separator.set_expand(True)
+        else:
+            separator.set_size_request(style.GRID_CELL_SIZE,
+                                       style.GRID_CELL_SIZE)
+        self.insert(separator, -1)
+        separator.show()
+
     def _add_widget(self, widget, expand=False):
         tool_item = gtk.ToolItem()
         tool_item.set_expand(expand)
@@ -191,6 +211,14 @@ class SearchToolbar(gtk.Toolbar):
             if text:
                 query['query'] = text
 
+        property_, order = self._list_view_button.get_current_sort()
+
+        if order == gtk.SORT_ASCENDING:
+            sign = '+'
+        else:
+            sign = '-'
+        query['order_by'] = [sign + property_]
+
         return query
 
     def _get_date_range(self):
@@ -213,6 +241,12 @@ class SearchToolbar(gtk.Toolbar):
     def _combo_changed_cb(self, combo):
         self._update_if_needed()
 
+    def __sort_changed_cb(self, button):
+        self._update_if_needed()
+
+    def __view_button_clicked_cb(self, button):
+        self._list_view_button.palette.popup(immediate=True, state=1)
+
     def _update_if_needed(self):
         new_query = self._build_query()
         if self._query != new_query:
@@ -456,3 +490,48 @@ class EntryToolbar(gtk.Toolbar):
                                 activity_info.get_bundle_id())
             palette.menu.append(menu_item)
             menu_item.show()
+
+
+class ListViewButton(ToolButton):
+    __gtype_name__ = 'JournalListViewButton'
+
+    __gsignals__ = {
+        'sort-property-changed': (gobject.SIGNAL_RUN_FIRST,
+                                  gobject.TYPE_NONE,
+                                  ([])),
+    }
+
+    _SORT_OPTIONS = [
+        ('timestamp', 'view-lastedit', _('Sort by date modified')),
+        ('creation_time', 'view-created', _('Sort by date created')),
+        ('filesize', 'view-size', _('Sort by size')),
+    ]
+
+    def __init__(self):
+        ToolButton.__init__(self)
+
+        self._property = 'timestamp'
+        self._order = gtk.SORT_ASCENDING
+
+        self.props.tooltip = _('Sort view')
+        self.props.icon_name = 'view-lastedit'
+
+        for property_, icon, label in self._SORT_OPTIONS:
+            button = MenuItem(icon_name=icon, text_label=label)
+            button.connect('activate',
+                           self.__sort_type_changed_cb,
+                           property_,
+                           icon)
+            button.show()
+            self.props.palette.menu.insert(button, -1)
+
+    def __sort_type_changed_cb(self, widget, property_, icon_name):
+        self._property = property_
+        #FIXME: Implement sorting order
+        self._order = gtk.SORT_ASCENDING
+        self.emit('sort-property-changed')
+
+        self.props.icon_name = icon_name
+
+    def get_current_sort(self):
+        return (self._property, self._order)
