{
GtkDialog *diag;
GtkBuilder *builder;
- GtkEntry *e;
+ GtkEntry *login, *url, *pwd;
printf("settings_activate_cbk\n");
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));
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)
-1);
free(title);
+
+ headlines++;
}
gtk_tree_path_free(path);
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;
- 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);
+
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++) {
- 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 {
- feeds = NULL;
+ headlines = NULL;
}
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;
- 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);
-
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++) {
- 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 {
- headlines = NULL;
+ feeds = NULL;
}
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;
}