summaryrefslogtreecommitdiff
path: root/src/messenger_gtk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/messenger_gtk.c')
-rw-r--r--src/messenger_gtk.c145
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);
}