about summary refs log tree commit diff stats
path: root/src/tray.c
diff options
context:
space:
mode:
authorDavid <petrodavi@gmail.com>2016-03-07 22:25:30 +0100
committerDavid <petrodavi@gmail.com>2016-03-07 22:26:48 +0100
commit718a708b93102827dfe04ecb63b2331a6a949406 (patch)
tree3470f78b71fff6f826c253c4383fe975349d9b6d /src/tray.c
parentd1177d3adef25540571b8f0c9cf37dbe9d398d96 (diff)
downloadprofani-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.c28
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);
 }