From a1cace02c1fe504c614366eabd3e63911105b220 Mon Sep 17 00:00:00 2001 From: Julian Sparber Date: Mon, 4 Sep 2017 20:28:42 +0200 Subject: [PATCH] [save] add some code for notification --- src/server.c | 3 ++- src/teleportapp.c | 33 ++++++++++++++++++++++++++++----- src/teleportapp.h | 3 ++- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/server.c b/src/server.c index 0941c00..511e534 100644 --- a/src/server.c +++ b/src/server.c @@ -233,7 +233,8 @@ do_get_response_json (SoupServer *server, SoupMessage *msg, const char *path) static void handle_incoming_file(const char *hash, const char *filename, const int size, const char *origin) { g_print("Got a new file form %s with size:%d with title: %s\n", origin, size, filename); - create_user_notification(filename, size, origin); + //char* balance[2] = {"First", "Secound"}; + //create_user_notification(filename, size, origin, balance); //If the user accepts the file do_downloading(g_strdup_printf("http://%s:%d/transfer/%s", origin, port, hash), filename); } diff --git a/src/teleportapp.c b/src/teleportapp.c index f4e76b5..fa1a115 100644 --- a/src/teleportapp.c +++ b/src/teleportapp.c @@ -7,10 +7,21 @@ #include "publish.h" #include "server.h" + +void test_callback(GSimpleAction *simple, + GVariant *parameter, + gpointer user_data); + enum { NOTIFY_USER, NOTIFY_FINISED, N_SIGNALS }; +static GActionEntry app_entries[] = +{ + { "save", test_callback, "*", NULL, NULL }, + { "quit", test_callback, "s", NULL, NULL } +}; + static TeleportAppWindow *win; static GApplication *application; static gint signalIds [N_SIGNALS]; @@ -22,7 +33,13 @@ struct _TeleportApp { G_DEFINE_TYPE (TeleportApp, teleport_app, GTK_TYPE_APPLICATION); -void create_user_notification (const char *file_name, const int file_size, const char *origin_device) { +void test_callback (GSimpleAction *simple, + GVariant *parameter, + gpointer user_data) { + g_print("Working: %s\n", g_variant_get_string (parameter, NULL)); +} + +void create_user_notification (const char *file_name, const int file_size, const char *origin_device, char *target[]) { GNotification *notification = g_notification_new ("Teleport"); g_notification_set_body (notification, g_strdup_printf("%s is sending %s (%s)", @@ -31,8 +48,9 @@ void create_user_notification (const char *file_name, const int file_size, const g_format_size (file_size))); GIcon *icon = g_themed_icon_new ("dialog-information"); g_notification_set_icon (notification, icon); - g_notification_add_button (notification, "Decline", "app.reply-5-minutes"); - g_notification_add_button (notification, "Save", "app.reply-5-minutes"); + g_notification_set_default_action(notification, ""); + g_notification_add_button (notification, "Decline", "app.decline"); + g_notification_add_button_with_target (notification, "Save", "app.save", "*", target); g_application_send_notification (application, NULL, notification); g_object_unref (icon); g_object_unref (notification); @@ -71,7 +89,7 @@ void callback_remove_peer (GObject *instance, Peer *peer, TeleportAppWindow *win } void callback_notify_user (GObject *instance, char *name, TeleportAppWindow *win ) { - create_user_notification("icon.png", 2000, "Mark's laptop"); + //create_user_notification("icon.png", 2000, "Mark's laptop"); } static void @@ -88,6 +106,10 @@ teleport_app_activate (GApplication *app) { win = teleport_app_window_new (TELEPORT_APP (app)); gtk_window_present (GTK_WINDOW (win)); + g_action_map_add_action_entries (G_ACTION_MAP (app), + app_entries, G_N_ELEMENTS (app_entries), + app); + g_signal_connect (peerList, "addpeer", (GCallback)callback_add_peer, win); g_signal_connect (peerList, "removepeer", (GCallback)callback_remove_peer, win); g_signal_connect (app, "notify_user", (GCallback)callback_notify_user, win); @@ -97,7 +119,8 @@ teleport_app_activate (GApplication *app) { g_print("Data: %d\n", teleport_peer_get_port(peerList, 0, NULL)); */ - create_user_notification ("sdfdsff", 2000, "sdfdsfdsf"); + char* balance[2] = {"First", "Secound"}; + create_user_notification ("sdfdsff", 2000, "sdfdsfdsf", balance); run_http_server(); run_avahi_publish_service((char *) g_get_host_name()); run_avahi_service(peerList); diff --git a/src/teleportapp.h b/src/teleportapp.h index b55302c..0a34187 100644 --- a/src/teleportapp.h +++ b/src/teleportapp.h @@ -11,6 +11,7 @@ G_DECLARE_FINAL_TYPE (TeleportApp, teleport_app, TELEPORT, APP, GtkApplication) TeleportApp *teleport_app_new (void); extern void create_user_notification (const char *, const int, - const char *); + const char *, + char *[]); #endif /* __TELEPORTAPP_H */