diff options
Diffstat (limited to 'src/messenger_gtk.c')
-rw-r--r-- | src/messenger_gtk.c | 145 |
1 files changed, 5 insertions, 140 deletions
diff --git a/src/messenger_gtk.c b/src/messenger_gtk.c index a91a35e..dc2c87a 100644 --- a/src/messenger_gtk.c +++ b/src/messenger_gtk.c @@ -22,148 +22,13 @@ * @file messenger_gtk.c */ -#include "chat/messenger.h" -#include "ui/messenger.h" - -#include <pthread.h> - -#define UNUSED __attribute__((unused)) - -struct main_program -{ - int argc; - char** argv; - - bool exit; - - struct CHAT_MESSENGER_Handle chat; - struct UI_MESSENGER_Handle ui; -}; - -gboolean gtk_set_profile_name(gpointer user_data) -{ - struct main_program *program = (struct main_program*) user_data; - - const char *name = GNUNET_CHAT_get_name(program->chat.handle); - - if (name) - { - hdy_avatar_set_text(program->ui.profile_avatar, name); - gtk_label_set_text(program->ui.profile_label, name); - } - - return FALSE; -} - -int gnunet_chat_message(void *cls, - UNUSED struct GNUNET_CHAT_Context *context, - const struct GNUNET_CHAT_Message *message) -{ - struct main_program *program = (struct main_program*) cls; - - if (GNUNET_CHAT_KIND_LOGIN == GNUNET_CHAT_message_get_kind(message)) - g_idle_add(gtk_set_profile_name, program); - - return GNUNET_YES; -} - -void gnunet_idle(void *cls) -{ - struct main_program *program = (struct main_program*) cls; - - if (program->exit) - { - GNUNET_CHAT_stop(program->chat.handle); - program->chat.handle = NULL; - - GNUNET_SCHEDULER_shutdown(); - return; - } - - program->chat.idle = GNUNET_SCHEDULER_add_delayed_with_priority( - GNUNET_TIME_relative_get_second_(), - GNUNET_SCHEDULER_PRIORITY_IDLE, - gnunet_idle, - program - ); -} - -void gnunet_task(void *cls, - UNUSED char *const *args, - UNUSED const char *cfgfile, - const struct GNUNET_CONFIGURATION_Handle *cfg) -{ - struct main_program *program = (struct main_program*) cls; - - program->chat.handle = GNUNET_CHAT_start( - cfg, - "messenger-gtk", - "test", - &gnunet_chat_message, - program - ); - - program->chat.idle = GNUNET_SCHEDULER_add_delayed_with_priority( - GNUNET_TIME_relative_get_zero_(), - GNUNET_SCHEDULER_PRIORITY_IDLE, - gnunet_idle, - program - ); -} - -void *gnunet_thread(void *args) -{ - struct main_program *program = (struct main_program*) args; - - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; - - GNUNET_PROGRAM_run( - program->argc, - program->argv, - "messenger-gtk", - gettext_noop("A GTK based GUI for the Messenger service of GNUnet."), - options, - &gnunet_task, - program - ); - - return NULL; -} +#include "application.h" int main(int argc, char **argv) { - struct main_program program; - program.argc = argc; - program.argv = argv; - - program.exit = FALSE; - - pthread_t gnunet_tid; - gtk_init(&argc, &argv); - - GdkScreen* screen = gdk_screen_get_default(); - GtkCssProvider* provider = gtk_css_provider_new(); - gtk_css_provider_load_from_path( - provider, - "resources/css/style.css", - NULL - ); - - gtk_style_context_add_provider_for_screen( - screen, - GTK_STYLE_PROVIDER(provider), - GTK_STYLE_PROVIDER_PRIORITY_APPLICATION - ); - - ui_messenger_init(&(program.ui)); - - pthread_create(&gnunet_tid, NULL, gnunet_thread, &program); - - gtk_main(); + MESSENGER_Application app; - program.exit = TRUE; + application_init(&app, argc, argv); + application_start(&app); - pthread_join(gnunet_tid, NULL); - return 0; + return application_status(&app); } |