summaryrefslogtreecommitdiff
path: root/src/timeline_window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/timeline_window.c')
-rw-r--r--src/timeline_window.c53
1 files changed, 30 insertions, 23 deletions
diff --git a/src/timeline_window.c b/src/timeline_window.c
index 10f2a84..516f2d6 100644
--- a/src/timeline_window.c
+++ b/src/timeline_window.c
@@ -9,46 +9,53 @@
#include "timeline.h"
#include "log.h"
-static GtkWidget *window;
-static GtkWidget *box;
-static GtkWidget *label;
+static GtkWidget *window, *spinner, *list_box;
-static void timeline_callback(bool success, struct timeline *t)
+static gboolean timeline_loaded(gpointer data)
{
+ struct timeline *t = data;
+ GtkWidget *label;
for (size_t i = 0; i < t->size; i++) {
- printf("status id: %s\n", t->statuses[i]->id);
- printf("content: %s\n", t->statuses[i]->content);
- printf("reblog count: %d\n", t->statuses[i]->reblogs_count);
- printf("fav count: %d\n", t->statuses[i]->favourites_count);
- printf("\n");
+ label = gtk_label_new(t->statuses[i]->content);
+ gtk_widget_show(GTK_WIDGET(label));
+ gtk_list_box_prepend(GTK_LIST_BOX(list_box), GTK_WIDGET(label));
}
+ gtk_spinner_stop(GTK_SPINNER(spinner));
+ timeline_free(t);
+ return G_SOURCE_REMOVE;
}
-static void load_timeline()
+static gpointer load_timeline(gpointer data)
{
- if (get_timeline(NULL, NULL, NULL, 20, &timeline_callback)) {
- log_msg(LOG_ERROR, "load_timeline", "failed");
- return;
+ struct timeline *t;
+ t = get_timeline(NULL, NULL, NULL, 20);
+ if (!t) {
+ log_msg(LOG_WARNING, "load_timeline", "failed");
+ return NULL;
}
- return;
+ gdk_threads_add_idle(timeline_loaded, t);
+ return NULL;
}
void create_timeline_window(GtkApplication *app, gpointer user_data)
{
- window = gtk_application_window_new(app);
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_application(GTK_WINDOW(window), GTK_APPLICATION(app));
gtk_window_set_title(GTK_WINDOW(window), "ap_client");
gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
+ gtk_window_set_destroy_with_parent(GTK_WINDOW(window), true);
- box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
- gtk_widget_set_valign(GTK_WIDGET(box), GTK_ALIGN_CENTER);
- gtk_widget_set_halign(GTK_WIDGET(box), GTK_ALIGN_CENTER);
+ list_box = gtk_list_box_new();
+ gtk_widget_set_valign(GTK_WIDGET(list_box), GTK_ALIGN_CENTER);
+ gtk_widget_set_halign(GTK_WIDGET(list_box), GTK_ALIGN_CENTER);
- label = gtk_label_new("timeline");
-
- gtk_container_add(GTK_CONTAINER(window), box);
- gtk_container_add(GTK_CONTAINER(box), label);
+ spinner = gtk_spinner_new();
+ gtk_spinner_start(GTK_SPINNER(spinner));
+ gtk_container_add(GTK_CONTAINER(list_box), spinner);
+ gtk_container_add(GTK_CONTAINER(window), list_box);
gtk_widget_show_all(window);
- load_timeline();
+
+ g_thread_new("load_timeline_thread", &load_timeline, NULL);
}