r2637 - in trunk/src/target/OM-2007.2/applications/openmoko-feedreader2: . src

zecke at sita.openmoko.org zecke at sita.openmoko.org
Sat Aug 4 23:20:14 CEST 2007


Author: zecke
Date: 2007-08-04 23:18:11 +0200 (Sat, 04 Aug 2007)
New Revision: 2637

Added:
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.c
Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/Makefile.am
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-data.c
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.c
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.h
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.h
   trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/main.c
Log:
2007-08-04  Holger Hans Peter Freyther  <zecke at selfish.org>

        First version that can fetch feeds again and display some part of the
        message to the user.

        Some how scrolling with MokoFingerScrollView and WebKitGtkPage does not
        work.

        The application is still very raw, beginning with missing icons, to missing
        configuration possibilities to missing features.

        * src/Makefile.am:
        * src/feed-data.c:
        (feed_sort_init):
        (feed_data_load_from_cache):
        (feed_filter_new):
        (feed_sort_new):
        * src/feed-item-view.c:
        (do_highlight):
        (search_entry_changed_closure):
        (feed_item_view_init):
        (feed_item_view_highlight):
        * src/feed-item-view.h:
        * src/feed-selection-view.c: Added.
        (treeview_selection_changed):
        (treeview_keypress_event):
        (refresh_feeds_closure):
        (feed_selection_view_init):
        (feed_selection_view_class_init):
        (feed_selection_view_new):
        (feed_selection_view_add_column):
        (feed_selection_view_get_search_string):
        * src/feed-selection-view.h:
        * src/main.c:
        (feed_selection_changed):
        (create_feed_view):
        (create_configuration_ui):
        (create_ui):




Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/ChangeLog	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/ChangeLog	2007-08-04 21:18:11 UTC (rev 2637)
@@ -1,5 +1,44 @@
 2007-08-04  Holger Hans Peter Freyther  <zecke at selfish.org>
 
+        First version that can fetch feeds again and display some part of the
+        message to the user.
+
+        Some how scrolling with MokoFingerScrollView and WebKitGtkPage does not
+        work.
+
+        The application is still very raw, beginning with missing icons, to missing
+        configuration possibilities to missing features.
+
+        * src/Makefile.am:
+        * src/feed-data.c:
+        (feed_sort_init):
+        (feed_data_load_from_cache):
+        (feed_filter_new):
+        (feed_sort_new):
+        * src/feed-item-view.c:
+        (do_highlight):
+        (search_entry_changed_closure):
+        (feed_item_view_init):
+        (feed_item_view_highlight):
+        * src/feed-item-view.h:
+        * src/feed-selection-view.c: Added.
+        (treeview_selection_changed):
+        (treeview_keypress_event):
+        (refresh_feeds_closure):
+        (feed_selection_view_init):
+        (feed_selection_view_class_init):
+        (feed_selection_view_new):
+        (feed_selection_view_add_column):
+        (feed_selection_view_get_search_string):
+        * src/feed-selection-view.h:
+        * src/main.c:
+        (feed_selection_changed):
+        (create_feed_view):
+        (create_configuration_ui):
+        (create_ui):
+
+2007-08-04  Holger Hans Peter Freyther  <zecke at selfish.org>
+
         Move code around and we end up with an almost complete feed-data
         implementation. The main page to select feeds is still missing.
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/Makefile.am	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/Makefile.am	2007-08-04 21:18:11 UTC (rev 2637)
@@ -9,6 +9,6 @@
 
 EXTRA_DIST = rfcdate.h moko_cache.h feed-configuration.h feed-data.h feed-item-view.h feed-selection-view.h application-data.h
 
-openmoko_feedreader2_SOURCES = feed-configuration.c feed-item-view.c feed-data.c rfcdate.c moko_cache.c main.c
+openmoko_feedreader2_SOURCES = feed-configuration.c feed-item-view.c feed-selection-view.c feed-data.c rfcdate.c moko_cache.c main.c
 openmoko_feedreader2_LDADD = @OPENMOKO_LIBS@ @MRSS_LIBS@ @GTHREAD_LIBS@ @WEBKITGTK_LIBS@
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-data.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-data.c	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-data.c	2007-08-04 21:18:11 UTC (rev 2637)
@@ -300,8 +300,6 @@
 static void
 feed_sort_init (FeedSort* sort)
 {
-    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort), RSS_READER_COLUMN_DATE, GTK_SORT_DESCENDING);
-    gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sort), RSS_READER_COLUMN_DATE, rss_sort_dates, NULL, NULL);
 }
 
 static void
@@ -355,14 +353,15 @@
     gsize size;
     GtkTreeIter iter;
 
-    gboolean valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL (data), &iter);
+    GtkTreeModel *store = GTK_TREE_MODEL (feed_configuration_get_configuration ());
+    gboolean valid = gtk_tree_model_get_iter_first ( GTK_TREE_MODEL (store), &iter);
 
     while (valid) {
         mrss_t *rss_data;
         gchar *url;
         gchar *category;
 
-        gtk_tree_model_get ( GTK_TREE_MODEL (data), &iter, FEED_URL, &url, FEED_NAME, &category, -1);
+        gtk_tree_model_get ( GTK_TREE_MODEL (store), &iter, FEED_URL, &url, FEED_NAME, &category, -1);
         g_debug ("Reading cached object '%s'\n", url);
         gchar *content = moko_cache_read_object (data->cache, url, &size);
         if ( !content || size == -1 ) {
@@ -389,7 +388,7 @@
     next:
         g_free (url);
         g_free (category);
-        valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL (data), &iter);
+        valid = gtk_tree_model_iter_next ( GTK_TREE_MODEL (store), &iter);
     }
 
     g_debug ("Done loading from cache\n");
@@ -401,7 +400,7 @@
 {
     GObject* obj = g_object_new(RSS_TYPE_FEED_FILTER,
                                 "child-model", data,
-                                "root", NULL,
+                                "virtual-root", NULL,
                                 NULL);
 
     return obj;
@@ -429,6 +428,9 @@
                                  "model", filter,
                                  NULL);
 
+    gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (obj), RSS_READER_COLUMN_DATE, GTK_SORT_DESCENDING);
+    gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (obj), RSS_READER_COLUMN_DATE, rss_sort_dates, NULL, NULL);
+
     return obj;
 }
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.c	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.c	2007-08-04 21:18:11 UTC (rev 2637)
@@ -56,7 +56,19 @@
     g_signal_emit (view, feed_item_view_signals[MAIL], 0);
 }
 
+static void
+do_highlight (FeedItemView* view, const gchar* search_string)
+{
+    /* webkit_gtk_page_search (view->page, search_string); */
+}
 
+static void
+search_entry_changed_closure (GtkEntry* entry, FeedItemView* view)
+{
+    do_highlight (view, gtk_entry_get_text (entry));
+}
+
+
 G_DEFINE_TYPE(FeedItemView, feed_item_view, GTK_TYPE_VBOX)
 
 static void
@@ -68,21 +80,44 @@
     GtkWidget* toolbar = gtk_toolbar_new ();
     gtk_box_pack_start (GTK_BOX(view), toolbar, FALSE, FALSE, 0);
 
-    view->back = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS);
+    view->back = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
     gtk_tool_item_set_expand (GTK_TOOL_ITEM(view->back), TRUE);
     gtk_toolbar_insert (GTK_TOOLBAR(toolbar), view->back, 0);
     g_signal_connect (view->back, "clicked", G_CALLBACK(prev_clicked), view);
+
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), gtk_separator_tool_item_new (), 1);
     
     view->mail = gtk_tool_button_new_from_stock (MOKO_STOCK_MAIL_SEND);
     gtk_tool_item_set_expand (GTK_TOOL_ITEM(view->mail), TRUE);
-    gtk_toolbar_insert (GTK_TOOLBAR(toolbar), view->mail, 1);
+    gtk_toolbar_insert (GTK_TOOLBAR(toolbar), view->mail, 2);
     g_signal_connect (view->mail, "clicked", G_CALLBACK(mail_clicked), view);
 
-    view->forward = gtk_tool_button_new_from_stock (GTK_STOCK_MEDIA_NEXT);
+    gtk_toolbar_insert (GTK_TOOLBAR (toolbar), gtk_separator_tool_item_new (), 3);
+
+    view->forward = gtk_tool_button_new_from_stock (GTK_STOCK_GO_FORWARD);
     gtk_tool_item_set_expand (GTK_TOOL_ITEM(view->forward), TRUE);
-    gtk_toolbar_insert (GTK_TOOLBAR(toolbar), view->forward, 2);
+    gtk_toolbar_insert (GTK_TOOLBAR(toolbar), view->forward, 4);
     g_signal_connect (view->forward, "clicked", G_CALLBACK(next_clicked), view);
 
+    /*
+     * Search Entry
+     */
+    GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (view), hbox, FALSE, FALSE, 0);
+
+    view->search_button = gtk_button_new ();
+    gtk_widget_set_name (GTK_WIDGET (view->search_button), "mokosearchbutton");
+    gtk_button_set_image (GTK_BUTTON (view->search_button), gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_SMALL_TOOLBAR));
+    gtk_box_pack_start (GTK_BOX (hbox), view->search_button, FALSE, FALSE, 0);
+
+    view->search_entry = GTK_ENTRY (gtk_entry_new ());
+    gtk_widget_set_name (GTK_WIDGET (view->search_entry), "mokosearchentry");
+    g_signal_connect (G_OBJECT (view->search_entry), "changed", G_CALLBACK (search_entry_changed_closure), view);
+    gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET (view->search_entry), TRUE, TRUE, 0);
+
+    /*
+     * Details 'pane'
+     */
     GtkWidget* scrolled = moko_finger_scroll_new ();
     gtk_box_pack_start (GTK_BOX(view), scrolled, TRUE, TRUE, 0);
 
@@ -157,5 +192,5 @@
 void
 feed_item_view_highlight (FeedItemView* view, const gchar* search_string)
 {
-    /* webkit_gtk_page_search (view->page, search_string); */
+    do_highlight (view, search_string);
 }

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.h	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-item-view.h	2007-08-04 21:18:11 UTC (rev 2637)
@@ -61,7 +61,9 @@
     GtkToolItem    *forward;
     GtkToolItem    *mail;
 
-    gchar          *current_highlight;
+
+    GtkEntry       *search_entry;
+    GtkWidget      *search_button;
 };
 
 struct _FeedItemViewClass {

Added: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.c	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.c	2007-08-04 21:18:11 UTC (rev 2637)
@@ -0,0 +1,168 @@
+/*
+ *  RSS Reader, a simple RSS reader
+ *
+ *  Copyright (C) 2007 Holger Hans Peter Freyther
+ *
+ *  Permission is hereby granted, free of charge, to any person obtaining a
+ *  copy of this software and associated documentation files (the "Software"),
+ *  to deal in the Software without restriction, including without limitation
+ *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ *  and/or sell copies of the Software, and to permit persons to whom the
+ *  Software is furnished to do so, subject to the following conditions:
+ *
+ *  The above copyright notice and this permission notice shall be included
+ *  in all copies or substantial portions of the Software.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ *  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ *  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ *  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *  OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *  Current Version: $Rev$ ($Date$) [$Author$]
+ */
+
+#include "config.h"
+#include "feed-selection-view.h"
+
+#include <moko-finger-scroll.h>
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+
+enum {
+    ITEM_CHANGED,
+    LAST_SIGNAL
+};
+
+static guint feed_selection_view_signals[LAST_SIGNAL] = { 0, };
+
+static void
+treeview_selection_changed (GtkTreeSelection *selection, FeedSelectionView *view)
+{
+    GtkTreeModel* model;
+    GtkTreeIter iter;
+    gboolean has_selection = gtk_tree_selection_get_selected (selection, &model, &iter);
+    gchar* message = 0;
+
+    if (has_selection) {
+        gtk_tree_model_get (model, &iter, RSS_READER_COLUMN_TEXT, &message, -1 );
+        if (!message)
+            message = g_strdup (_("Failed to read the text."));
+    } else
+        message = g_strdup (_("Please select a feed."));
+
+    g_signal_emit (view, feed_selection_view_signals[ITEM_CHANGED], 0, message);
+    g_free (message);
+}
+
+gboolean treeview_keypress_event( GtkWidget *tree_view, GdkEventKey *key, FeedSelectionView *data) {
+    if (key->keyval == GDK_Left || key->keyval == GDK_Right || key->keyval == GDK_Up || key->keyval == GDK_Down)
+        return FALSE;
+    
+#if 0
+    moko_tool_box_set_search_visible (data->box, TRUE);
+    gtk_entry_set_text (GTK_ENTRY(moko_tool_box_get_entry(data->box)), "");
+
+    /*
+     * forward the key event
+     */
+    GtkEntry *entry = GTK_ENTRY(moko_tool_box_get_entry(data->box));
+    GTK_WIDGET_CLASS(GTK_ENTRY_GET_CLASS(entry))->key_press_event (GTK_WIDGET(entry), key);
+#endif
+
+    return TRUE;
+}
+
+static void
+refresh_feeds_closure (GtkWidget* button, FeedSelectionView* view)
+{
+    feed_data_update_all (RSS_FEED_DATA (feed_data_get_instance ()));
+}
+
+G_DEFINE_TYPE(FeedSelectionView, feed_selection_view, GTK_TYPE_VBOX)
+
+static void
+feed_selection_view_init (FeedSelectionView* view)
+{
+    GTK_BOX(view)->spacing = 0;
+    GTK_BOX(view)->homogeneous = FALSE;
+
+    view->filter = RSS_FEED_FILTER (feed_filter_new (RSS_FEED_DATA (feed_data_get_instance ())));
+    view->sort = RSS_FEED_SORT (feed_sort_new (view->filter));
+
+    /*
+     * toolbar
+     */
+    GtkWidget* toolbar = gtk_toolbar_new ();
+    gtk_box_pack_start (GTK_BOX(view), toolbar, FALSE, FALSE, 0);
+
+    GtkToolItem* toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_MISSING_IMAGE);
+    gtk_tool_item_set_expand (GTK_TOOL_ITEM(toolitem), TRUE);
+    gtk_toolbar_insert (GTK_TOOLBAR(toolbar), toolitem, 0);
+    g_signal_connect (toolitem, "clicked", G_CALLBACK(refresh_feeds_closure), view);
+
+    /*
+     * search/filter
+     */
+
+    /*
+     * selection view
+     */
+    GtkContainer* scrolled = GTK_CONTAINER (moko_finger_scroll_new ());
+    gtk_box_pack_start (GTK_BOX (view), GTK_WIDGET (scrolled), TRUE, TRUE, 0);
+    
+    view->view = GTK_TREE_VIEW (gtk_tree_view_new_with_model (GTK_TREE_MODEL (view->sort)));
+    gtk_container_add (scrolled, GTK_WIDGET(view->view));
+
+    GtkTreeSelection *selection = GTK_TREE_SELECTION (gtk_tree_view_get_selection(GTK_TREE_VIEW (view->view)));
+    g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (treeview_selection_changed), view);
+    g_signal_connect (G_OBJECT (view->view), "key_press_event", G_CALLBACK (treeview_keypress_event), view);
+}
+
+static void
+feed_selection_view_class_init (FeedSelectionViewClass* class)
+{
+    feed_selection_view_signals[ITEM_CHANGED] = g_signal_new ("item_changed",
+            G_TYPE_FROM_CLASS(class),
+            (GSignalFlags) (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+            0,
+            NULL,
+            NULL,
+            g_cclosure_marshal_VOID__STRING,
+            G_TYPE_NONE, 1, G_TYPE_STRING);
+}
+
+
+GtkWidget*
+feed_selection_view_new (void)
+{
+    return GTK_WIDGET (g_object_new (RSS_TYPE_FEED_SELECTION_VIEW, NULL));
+}
+
+void
+feed_selection_view_add_column (const FeedSelectionView* view, int column_type, const gchar* name)
+{
+    GtkCellRenderer *ren = GTK_CELL_RENDERER (gtk_cell_renderer_text_new ());
+    GtkTreeViewColumn *column;
+
+    if (column_type == RSS_READER_COLUMN_DATE) {
+        column = GTK_TREE_VIEW_COLUMN (gtk_tree_view_column_new_with_attributes (name, ren, NULL));
+        gtk_tree_view_column_set_cell_data_func (column, ren, feed_date_cell_data_func, NULL, NULL);
+    } else
+        column = GTK_TREE_VIEW_COLUMN (gtk_tree_view_column_new_with_attributes (name, ren, "text", column_type, NULL));
+
+    gtk_tree_view_column_set_expand (column, TRUE);
+    gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
+    gtk_tree_view_column_set_sort_column_id (column, RSS_READER_COLUMN_SUBJECT);
+    gtk_tree_view_append_column (view->view, column);
+}
+
+gchar*
+feed_selection_view_get_search_string (const FeedSelectionView* view)
+{
+    return view->filter->filter_string;
+}
+
+


Property changes on: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.c
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.h	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/feed-selection-view.h	2007-08-04 21:18:11 UTC (rev 2637)
@@ -47,17 +47,21 @@
 typedef struct _FeedSelectionViewClass FeedSelectionViewClass;
 
 struct _FeedSelectionView {
-    GtkTreeView parent;
+    GtkVBox parent;
+
+    FeedFilter      *filter;
+    FeedSort        *sort;   
+    GtkTreeView     *view;
 };
 
 struct _FeedSelectionViewClass {
-    GtkTreeViewClass parent;
+    GtkVBoxClass parent;
 };
 
-GType feed_selection_view_get_type      (void);
-GObject* feed_selection_new_new         (const FeedData*);
-void feed_selection_set_first_column    (const FeedData*, int);
-void feed_selection_set_second_column   (const FeedData*, int);
+GType       feed_selection_view_get_type                (void);
+GtkWidget*  feed_selection_view_new                     (void);
+void        feed_selection_view_add_column              (const FeedSelectionView*, int column_type, const gchar* txt);
+gchar*      feed_selection_view_get_search_string       (const FeedSelectionView*);
 
 G_END_DECLS
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/main.c	2007-08-04 20:55:49 UTC (rev 2636)
+++ trunk/src/target/OM-2007.2/applications/openmoko-feedreader2/src/main.c	2007-08-04 21:18:11 UTC (rev 2637)
@@ -35,6 +35,7 @@
 #include "application-data.h"
 #include "feed-data.h"
 #include "feed-configuration.h"
+#include "feed-selection-view.h"
 #include "config.h"
 
 static void
@@ -43,8 +44,31 @@
     gtk_main_quit ();
 }
 
+static void
+feed_selection_changed (FeedSelectionView* view, const gchar* text, struct ApplicationData* data)
+{
+    feed_item_view_display (data->view, text ?  text : _("Failed to read the text."));
+    if (feed_selection_view_get_search_string (view))
+        feed_item_view_highlight (data->view, feed_selection_view_get_search_string (view));
+}
 
 /*
+ * Feed View
+ */
+static void
+create_feed_view (struct ApplicationData* data)
+{
+    GtkWidget *box = feed_selection_view_new ();
+    gtk_notebook_prepend_page (data->notebook, box, gtk_image_new_from_stock (GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_LARGE_TOOLBAR));
+    gtk_container_child_set (GTK_CONTAINER(data->notebook), box, "tab-expand", TRUE, "tab-fill", TRUE, NULL);
+
+    feed_selection_view_add_column (RSS_FEED_SELECTION_VIEW (box), RSS_READER_COLUMN_SUBJECT, _("Subject"));
+    feed_selection_view_add_column (RSS_FEED_SELECTION_VIEW (box), RSS_READER_COLUMN_DATE, _("Date"));
+
+    g_signal_connect (G_OBJECT(box), "item-changed", G_CALLBACK(feed_selection_changed), data);
+}
+
+/*
  * Text View
  */
 static void
@@ -76,7 +100,7 @@
      * toolbar
      */
     GtkWidget* box = gtk_vbox_new (FALSE, 0);
-    gtk_notebook_append_page (data->notebook, box, gtk_image_new_from_stock (GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_LARGE_TOOLBAR));
+    gtk_notebook_append_page (data->notebook, box, gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_LARGE_TOOLBAR));
     gtk_container_child_set (GTK_CONTAINER(data->notebook), box, "tab-expand", TRUE, "tab-fill", TRUE, NULL);
 
     GtkWidget* toolbar = gtk_toolbar_new ();
@@ -148,8 +172,12 @@
     GtkCellRenderer *text_renderer = GTK_CELL_RENDERER(gtk_cell_renderer_text_new ());
 
     /*
+     * 1. The default feed view
+     */
+    create_feed_view (data);
+    
+    /*
      * 2. Text View
-     * (initialized before 1. so it can be used by them)
      */
     create_text_view (data);
 





More information about the commitlog mailing list