(no commit message)
authorJean-Philippe Orsini <jeanfi@gmail.com>
Mon, 22 Apr 2013 17:05:27 +0000 (17:05 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Mon, 22 Apr 2013 17:05:27 +0000 (17:05 +0000)
src/main.c
src/ttrss.c
src/ttrss.h

index 4365e11..73d537d 100644 (file)
@@ -112,7 +112,7 @@ void settings_activate_cbk(GtkWidget *menu_item, gpointer data)
 {
        GtkDialog *diag;
        GtkBuilder *builder;
 {
        GtkDialog *diag;
        GtkBuilder *builder;
-       GtkEntry *e;
+       GtkEntry *login, *url, *pwd;
 
        printf("settings_activate_cbk\n");
 
 
        printf("settings_activate_cbk\n");
 
@@ -125,16 +125,26 @@ void settings_activate_cbk(GtkWidget *menu_item, gpointer data)
 
        diag = GTK_DIALOG(gtk_builder_get_object(builder, "settings_dialog"));
 
 
        diag = GTK_DIALOG(gtk_builder_get_object(builder, "settings_dialog"));
 
-       e = GTK_ENTRY(gtk_builder_get_object(builder, "url_entry"));
-       gtk_entry_set_text(e, g_settings_get_string(settings, "url"));
-
-       e = GTK_ENTRY(gtk_builder_get_object(builder, "login_entry"));
-       gtk_entry_set_text(e, g_settings_get_string(settings, "user"));
-
-       e = GTK_ENTRY(gtk_builder_get_object(builder, "password_entry"));
-       gtk_entry_set_text(e, g_settings_get_string(settings, "password"));
-
-       printf("%d\n", gtk_dialog_run(diag));
+       url = GTK_ENTRY(gtk_builder_get_object(builder, "url_entry"));
+       gtk_entry_set_text(url, g_settings_get_string(settings, "url"));
+
+       login = GTK_ENTRY(gtk_builder_get_object(builder, "login_entry"));
+       gtk_entry_set_text(login, g_settings_get_string(settings, "user"));
+
+       pwd = GTK_ENTRY(gtk_builder_get_object(builder, "password_entry"));
+       gtk_entry_set_text(pwd, g_settings_get_string(settings, "password"));
+
+       if (gtk_dialog_run(diag)) {
+               g_settings_set_string(settings,
+                                     "password", 
+                                     gtk_entry_get_text(pwd));
+               g_settings_set_string(settings,
+                                     "url", 
+                                     gtk_entry_get_text(url));
+               g_settings_set_string(settings,
+                                     "user", 
+                                     gtk_entry_get_text(login));
+       }
 
        gtk_widget_destroy(GTK_WIDGET(diag));
 
 
        gtk_widget_destroy(GTK_WIDGET(diag));
 
@@ -164,7 +174,9 @@ int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
                headline_model = gtk_tree_view_get_model(w_headlineview);
                headline_store = GTK_LIST_STORE(headline_model);
                gtk_list_store_clear(headline_store);
                headline_model = gtk_tree_view_get_model(w_headlineview);
                headline_store = GTK_LIST_STORE(headline_model);
                gtk_list_store_clear(headline_store);
-               for (headlines = feed->headlines; *headlines; headlines++) {
+
+               headlines = ttrss_get_headlines(feed);
+               while (headlines && *headlines) {
                        gtk_list_store_append(headline_store, &iter);
 
                        if ((*headlines)->unread)
                        gtk_list_store_append(headline_store, &iter);
 
                        if ((*headlines)->unread)
@@ -180,6 +192,8 @@ int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
                                           -1);
 
                        free(title);
                                           -1);
 
                        free(title);
+
+                       headlines++;
                }
 
                gtk_tree_path_free(path);
                }
 
                gtk_tree_path_free(path);
index d83db4f..89fbd94 100644 (file)
@@ -94,107 +94,115 @@ void ttrss_login(const char *url, const char *user, const char *password)
        json_object_put(rp);
 }
 
        json_object_put(rp);
 }
 
-struct feed **ttrss_get_feeds()
+static struct headline **get_headlines(int feed_id)
 {
 {
-       struct json_object *rp, *rq, *content, *jfeed, *j;
+       struct json_object *rp, *rq, *content, *jheadline, *j;
        int i, n;
        int i, n;
-       struct feed **feeds, *feed;
+       struct headline **headlines, *h;
 
 
-       printf("ttrss_get_feeds\n");
+       printf("get_headlines %d\n", feed_id);
 
 
-       rq = create_op("getFeeds");
+       rq = create_op("getHeadlines");
+       json_object_object_add(rq, "feed_id", json_object_new_int(feed_id));
+       json_object_object_add(rq, "show_excerpt", json_object_new_boolean(1));
+       json_object_object_add(rq, "show_content", json_object_new_boolean(1));
 
        rp = post_json_object(session_url, rq);
 
        rp = post_json_object(session_url, rq);
+
        json_object_put(rq);
 
        content = json_object_object_get(rp, "content");
 
        if (content) {
                n = json_object_array_length(content);
        json_object_put(rq);
 
        content = json_object_object_get(rp, "content");
 
        if (content) {
                n = json_object_array_length(content);
-
-               feeds = malloc((n+1) * sizeof(struct feed *));
+               headlines = malloc((n+1)*sizeof(struct headline *));
                for (i = 0; i < n; i++) {
                for (i = 0; i < n; i++) {
-                       jfeed = json_object_array_get_idx(content, i);
-
-                       feed = malloc(sizeof(struct feed));
+                       jheadline = json_object_array_get_idx(content, i);
 
 
-                       j = json_object_object_get(jfeed, "title");
-                       feed->title = strdup(json_object_get_string(j));
+                       h = malloc(sizeof(struct headline));
 
 
-                       j = json_object_object_get(jfeed, "feed_url");
-                       feed->url = strdup(json_object_get_string(j));
+                       j = json_object_object_get(jheadline, "title");
+                       h->title = strdup(json_object_get_string(j));
 
 
-                       j = json_object_object_get(jfeed, "id");
-                       feed->id = json_object_get_int(j);
+                       j = json_object_object_get(jheadline, "excerpt");
+                       h->excerpt = strdup(json_object_get_string(j));
 
 
-                       j = json_object_object_get(jfeed, "unread");
-                       feed->unread = json_object_get_int(j);
+                       j = json_object_object_get(jheadline, "content");
+                       h->content = strdup(json_object_get_string(j));
 
 
-                       feed->headlines = ttrss_get_headlines(feed->id);
+                       j = json_object_object_get(jheadline, "unread");
+                       h->unread = json_object_get_boolean(j);
 
 
-                       feeds[i] = feed;
+                       headlines[i] = h;
                }
                }
-               feeds[n] = NULL;
+               headlines[n] = NULL;
        } else {
        } else {
-               feeds = NULL;
+               headlines = NULL;
        }
 
        json_object_put(rp);
 
        }
 
        json_object_put(rp);
 
-       printf("ttrss_get_feeds ended\n");
+       printf("get_headlines %d end\n", feed_id);
 
 
-       return feeds;
+       return headlines;
 }
 
 }
 
-struct headline **ttrss_get_headlines(int feed_id)
+struct feed **ttrss_get_feeds()
 {
 {
-       struct json_object *rp, *rq, *content, *jheadline, *j;
+       struct json_object *rp, *rq, *content, *jfeed, *j;
        int i, n;
        int i, n;
-       struct headline **headlines, *h;
+       struct feed **feeds, *feed;
 
 
-       printf("ttrss_get_headlines %d\n", feed_id);
+       printf("ttrss_get_feeds\n");
 
 
-       rq = create_op("getHeadlines");
-       json_object_object_add(rq, "feed_id", json_object_new_int(feed_id));
-       json_object_object_add(rq, "show_excerpt", json_object_new_boolean(1));
-       json_object_object_add(rq, "show_content", json_object_new_boolean(1));
+       rq = create_op("getFeeds");
 
        rp = post_json_object(session_url, rq);
 
        rp = post_json_object(session_url, rq);
-
        json_object_put(rq);
 
        content = json_object_object_get(rp, "content");
 
        if (content) {
                n = json_object_array_length(content);
        json_object_put(rq);
 
        content = json_object_object_get(rp, "content");
 
        if (content) {
                n = json_object_array_length(content);
-               headlines = malloc((n+1)*sizeof(struct headline *));
+
+               feeds = malloc((n+1) * sizeof(struct feed *));
                for (i = 0; i < n; i++) {
                for (i = 0; i < n; i++) {
-                       jheadline = json_object_array_get_idx(content, i);
+                       jfeed = json_object_array_get_idx(content, i);
 
 
-                       h = malloc(sizeof(struct headline));
+                       feed = malloc(sizeof(struct feed));
 
 
-                       j = json_object_object_get(jheadline, "title");
-                       h->title = strdup(json_object_get_string(j));
+                       j = json_object_object_get(jfeed, "title");
+                       feed->title = strdup(json_object_get_string(j));
 
 
-                       j = json_object_object_get(jheadline, "excerpt");
-                       h->excerpt = strdup(json_object_get_string(j));
+                       j = json_object_object_get(jfeed, "feed_url");
+                       feed->url = strdup(json_object_get_string(j));
 
 
-                       j = json_object_object_get(jheadline, "content");
-                       h->content = strdup(json_object_get_string(j));
+                       j = json_object_object_get(jfeed, "id");
+                       feed->id = json_object_get_int(j);
 
 
-                       j = json_object_object_get(jheadline, "unread");
-                       h->unread = json_object_get_boolean(j);
+                       j = json_object_object_get(jfeed, "unread");
+                       feed->unread = json_object_get_int(j);
 
 
-                       headlines[i] = h;
+                       feed->headlines = NULL;
+
+                       feeds[i] = feed;
                }
                }
-               headlines[n] = NULL;
+               feeds[n] = NULL;
        } else {
        } else {
-               headlines = NULL;
+               feeds = NULL;
        }
 
        json_object_put(rp);
 
        }
 
        json_object_put(rp);
 
-       printf("ttrss_get_headlines %d end\n", feed_id);
+       printf("ttrss_get_feeds ended\n");
 
 
-       return headlines;
+       return feeds;
+}
+
+struct headline **ttrss_get_headlines(struct feed *f)
+{
+       if (!f->headlines)
+               f->headlines = get_headlines(f->id);
+
+       return f->headlines;
 }
 }
index 88cde67..4c7f67e 100644 (file)
@@ -38,6 +38,6 @@ struct feed {
 
 void ttrss_login(const char *url, const char *user, const char *password);
 struct feed **ttrss_get_feeds();
 
 void ttrss_login(const char *url, const char *user, const char *password);
 struct feed **ttrss_get_feeds();
-struct headline **ttrss_get_headlines(int);
+struct headline **ttrss_get_headlines(struct feed *);
 
 #endif
 
 #endif