(no commit message)
[prss.git] / src / main.c
index d3f134b..849c112 100644 (file)
@@ -81,11 +81,6 @@ void update()
        GtkTreeIter iter;
        char *title;
 
-       ttrss_set_config(g_settings_get_string(settings, "url"),
-                        g_settings_get_string(settings, "user"),
-                        g_settings_get_string(settings, "password"));
-       ws_open_session();
-
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
 
        printf("update(): clear feed tree\n");
@@ -108,7 +103,7 @@ void update()
                gtk_list_store_set(GTK_LIST_STORE(model),
                                   &iter,
                                   0, title,
-                                  1, (*feeds),
+                                  1, (*feeds)->id,
                                   -1);
                free(title);
                feeds++;
@@ -179,6 +174,7 @@ int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
        struct feed *feed;
        struct headline **headlines;
        char *title;
+       int feed_id;
 
        if (model_state)
                return TRUE;
@@ -190,32 +186,37 @@ int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
        if (path) {
                model = gtk_tree_view_get_model(treeview);
                gtk_tree_model_get_iter(model, &iter, path);
-               gtk_tree_model_get(model, &iter, 1, &feed, -1);
+               gtk_tree_model_get(model, &iter, 1, &feed_id, -1);
+
+               feed = ttrss_get_feed(feed_id);
 
                headline_model = gtk_tree_view_get_model(w_headlineview);
                headline_store = GTK_LIST_STORE(headline_model);
                model_state = 1;
                gtk_list_store_clear(headline_store);
 
-               headlines = ttrss_feed_get_headlines(feed);
-               while (headlines && *headlines) {
-                       gtk_list_store_append(headline_store, &iter);
-
-                       if ((*headlines)->unread)
-                               title = g_strdup_printf("<b>%s</b>",
-                                                       (*headlines)->title);
-                       else
-                               title = strdup((*headlines)->title);
-
-                       gtk_list_store_set(headline_store,
-                                          &iter,
-                                          0, title,
-                                          1, (*headlines),
-                                          -1);
-
-                       free(title);
-
-                       headlines++;
+               if (feed) {
+                       headlines = ttrss_feed_get_headlines(feed);
+                       while (headlines && *headlines) {
+                               gtk_list_store_append(headline_store, &iter);
+                               
+                               if ((*headlines)->unread)
+                                       title = g_strdup_printf
+                                               ("<b>%s</b>",
+                                                (*headlines)->title);
+                               else
+                                       title = strdup((*headlines)->title);
+                               
+                               gtk_list_store_set(headline_store,
+                                                  &iter,
+                                                  0, title,
+                                                  1, (*headlines),
+                                                  -1);
+                               
+                               free(title);
+                               
+                               headlines++;
+                       }
                }
 
                model_state = 0;
@@ -352,6 +353,11 @@ int main(int argc, char **argv)
        gtk_init(NULL, NULL);
        settings = g_settings_new("prss");
 
+       ttrss_set_config(g_settings_get_string(settings, "url"),
+                        g_settings_get_string(settings, "user"),
+                        g_settings_get_string(settings, "password"));
+       ws_open_session();
+
        builder = gtk_builder_new();
        gtk_builder_add_from_file
                (builder,