diff options
author | David <petrodavi@gmail.com> | 2016-03-07 22:25:30 +0100 |
---|---|---|
committer | David <petrodavi@gmail.com> | 2016-03-07 22:26:48 +0100 |
commit | 718a708b93102827dfe04ecb63b2331a6a949406 (patch) | |
tree | 3470f78b71fff6f826c253c4383fe975349d9b6d /src/tray.c | |
parent | d1177d3adef25540571b8f0c9cf37dbe9d398d96 (diff) | |
download | profani-tty-718a708b93102827dfe04ecb63b2331a6a949406.tar.gz |
Use a folder to add icons
NOTE: it is not working in this release, I have to get how to retrieve icons from folder.
Diffstat (limited to 'src/tray.c')
-rw-r--r-- | src/tray.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/tray.c b/src/tray.c index 966119c3..c02b3dc7 100644 --- a/src/tray.c +++ b/src/tray.c @@ -40,12 +40,22 @@ #include "window_list.h" static GtkStatusIcon *prof_tray = NULL; -static gchar *icon_filename = "src/proIcon.png"; -static gchar *icon_msg_filename = "src/proIconMsg.png"; +static GString *icon_filename = NULL; +static GString *icon_msg_filename = NULL; static int unread_messages; static bool shutting_down; static guint timer; +static gchar* +_get_icons_dir(void) +{ + gchar *xdg_config = xdg_get_config_home(); + GString *icons_dir = g_string_new(xdg_config); + g_free(xdg_config); + g_string_append(icons_dir, "/profanity/icons"); + return g_string_free(icons_dir, true); +} + gboolean tray_change_icon(gpointer data) { if (shutting_down) { @@ -55,9 +65,9 @@ gboolean tray_change_icon(gpointer data) unread_messages = wins_get_total_unread(); if (unread_messages) { - gtk_status_icon_set_from_file(prof_tray, icon_msg_filename); + gtk_status_icon_set_from_file(prof_tray, icon_msg_filename->str); } else { - gtk_status_icon_set_from_file(prof_tray, icon_filename); + gtk_status_icon_set_from_file(prof_tray, icon_filename->str); } return true; @@ -65,9 +75,15 @@ gboolean tray_change_icon(gpointer data) void create_tray(void) { - prof_tray = gtk_status_icon_new_from_file(icon_filename); + gchar *icons_dir = _get_icons_dir(); + icon_filename = g_string_new(icons_dir); + icon_msg_filename = g_string_new(icons_dir); + g_string_append(icon_filename, "/proIcon.png"); + g_string_append(icon_msg_filename, "/proIconMsg.png"); + prof_tray = gtk_status_icon_new_from_file(icon_filename->str); shutting_down = false; timer = g_timeout_add(5000, tray_change_icon, NULL); + g_free(icons_dir); } void destroy_tray(void) @@ -78,4 +94,6 @@ void destroy_tray(void) gtk_widget_destroy(GTK_WIDGET(prof_tray)); prof_tray = NULL; } + g_string_free(icon_filename, false); + g_string_free(icon_msg_filename, false); } |