about summary refs log tree commit diff stats
path: root/src
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
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')
-rw-r--r--src/proIcon.pngbin1037 -> 0 bytes
-rw-r--r--src/proIconMsg.pngbin1683 -> 0 bytes
-rw-r--r--src/profanity.c6
-rw-r--r--src/tray.c28
4 files changed, 29 insertions, 5 deletions
diff --git a/src/proIcon.png b/src/proIcon.png
deleted file mode 100644
index 9043ce57..00000000
--- a/src/proIcon.png
+++ /dev/null
Binary files differdiff --git a/src/proIconMsg.png b/src/proIconMsg.png
deleted file mode 100644
index 249d239e..00000000
--- a/src/proIconMsg.png
+++ /dev/null
Binary files differdiff --git a/src/profanity.c b/src/profanity.c
index bb5a994a..528e40a9 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -403,6 +403,8 @@ _create_directories(void)
 
     GString *themes_dir = g_string_new(xdg_config);
     g_string_append(themes_dir, "/profanity/themes");
+    GString *icons_dir = g_string_new(xdg_config);
+    g_string_append(icons_dir, "/profanity/icons");
     GString *chatlogs_dir = g_string_new(xdg_data);
     g_string_append(chatlogs_dir, "/profanity/chatlogs");
     GString *logs_dir = g_string_new(xdg_data);
@@ -411,6 +413,9 @@ _create_directories(void)
     if (!mkdir_recursive(themes_dir->str)) {
         log_error("Error while creating directory %s", themes_dir->str);
     }
+    if (!mkdir_recursive(icons_dir->str)) {
+        log_error("Error while creating directory %s", icons_dir->str);
+    }
     if (!mkdir_recursive(chatlogs_dir->str)) {
         log_error("Error while creating directory %s", chatlogs_dir->str);
     }
@@ -419,6 +424,7 @@ _create_directories(void)
     }
 
     g_string_free(themes_dir, TRUE);
+    g_string_free(icons_dir, TRUE);
     g_string_free(chatlogs_dir, TRUE);
     g_string_free(logs_dir, TRUE);
 
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);
 }