diff options
Diffstat (limited to 'src/timeline_window.c')
-rw-r--r-- | src/timeline_window.c | 53 |
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); } |