(no commit message)
authorJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 23 Apr 2013 08:25:51 +0000 (08:25 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 23 Apr 2013 08:25:51 +0000 (08:25 +0000)
src/main.c
src/phttp.c
src/ttrss.c
src/ttrss.h

index 861309d..e202433 100644 (file)
@@ -33,6 +33,7 @@
 static const char *program_name;
 static GSettings *settings;
 
 static const char *program_name;
 static GSettings *settings;
 
+static int model_state;
 
 static struct option long_options[] = {
        {"version", no_argument, 0, 'v'},
 
 static struct option long_options[] = {
        {"version", no_argument, 0, 'v'},
@@ -86,7 +87,10 @@ void update()
 
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
 
 
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview));
 
+       printf("update(): clear feed tree\n");
+       model_state = 1;
        gtk_list_store_clear(GTK_LIST_STORE(model));
        gtk_list_store_clear(GTK_LIST_STORE(model));
+       printf("update(): clear feed tree done\n");
        feeds = ttrss_get_feeds();
        while(feeds && *feeds) {
                if ((*feeds)->unread)
        feeds = ttrss_get_feeds();
        while(feeds && *feeds) {
                if ((*feeds)->unread)
@@ -107,6 +111,8 @@ void update()
                free(title);
                feeds++;
        }
                free(title);
                feeds++;
        }
+       model_state = 0;
+
        printf("refresh done\n");
 }
 
        printf("refresh done\n");
 }
 
@@ -183,6 +189,7 @@ 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);
 
                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_get_headlines(feed);
                gtk_list_store_clear(headline_store);
 
                headlines = ttrss_get_headlines(feed);
@@ -206,6 +213,7 @@ int feed_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
                        headlines++;
                }
 
                        headlines++;
                }
 
+               model_state = 0;
                gtk_tree_path_free(path);
        }
 
                gtk_tree_path_free(path);
        }
 
@@ -222,6 +230,9 @@ int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
        const char *str;
 
        printf("headline_cursor_changed_cbk\n");
        const char *str;
 
        printf("headline_cursor_changed_cbk\n");
+       
+       if (model_state)
+               return TRUE;
 
        gtk_tree_view_get_cursor(treeview, &path, &cols);
 
 
        gtk_tree_view_get_cursor(treeview, &path, &cols);
 
@@ -230,7 +241,10 @@ int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
                gtk_tree_model_get_iter(model, &iter, path);
                gtk_tree_model_get(model, &iter, 1, &headline, -1);
 
                gtk_tree_model_get_iter(model, &iter, path);
                gtk_tree_model_get(model, &iter, 1, &headline, -1);
 
-               str = ttrss_get_headline_content((struct headline *)headline);
+               str = ttrss_get_headline_content(headline);
+
+               if (headline->unread)
+                       ttrss_set_article_unread(headline->id, 0);
 
                if (str)
                        web_load(str);
 
                if (str)
                        web_load(str);
index 81c8ad7..a1d0211 100644 (file)
@@ -103,8 +103,10 @@ static json_object *post(const char *url, const char *body)
 
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
 
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
-       curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);
-       curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(body));
+       if (body) {
+               curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);
+               curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(body));
+       }
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
 
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, cbk_curl);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
 
index 2c57b4e..2a94e99 100644 (file)
@@ -21,6 +21,7 @@
 #include <string.h>
 
 #include <json/json.h>
 #include <string.h>
 
 #include <json/json.h>
+#include <gtk/gtk.h>
 
 #include "phttp.h"
 #include "ttrss.h"
 
 #include "phttp.h"
 #include "ttrss.h"
@@ -277,3 +278,20 @@ struct headline **ttrss_get_headlines(struct feed *f)
 
        return f->headlines;
 }
 
        return f->headlines;
 }
+
+void ttrss_set_article_unread(int id, int unread)
+{
+       struct json_object *rp, *rq;
+
+       printf("ttrss_set_article_unread %d %d\n", id, unread);
+
+       rq = create_op("updateArticle");
+       json_object_object_add(rq, "article_ids", json_object_new_int(id));
+       json_object_object_add(rq, "field", json_object_new_int(2));
+       json_object_object_add(rq, "mode", json_object_new_int(unread));
+
+       rp = post_json_object(session_url, rq);
+       
+       json_object_put(rq);
+       json_object_put(rp);
+}
index 801485e..817be41 100644 (file)
@@ -44,4 +44,5 @@ struct feed **ttrss_get_feeds();
 struct headline **ttrss_get_headlines(struct feed *);
 const char *ttrss_get_headline_content(struct headline *);
 
 struct headline **ttrss_get_headlines(struct feed *);
 const char *ttrss_get_headline_content(struct headline *);
 
+void ttrss_set_article_unread(int id, int unread);
 #endif
 #endif