]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/gossip-ui-utils.c
[darcs-to-svn @ Use icon-name API instead of stock icons and update tango icons]
[empathy.git] / libempathy-gtk / gossip-ui-utils.c
index b6dfb8f92b1d5bc31a0ab14b64469fbb551cfbea..9bf2fb36d305393d0f10f3f38eefc7d5e3841863 100644 (file)
@@ -41,7 +41,9 @@
 #include <libempathy/gossip-debug.h>
 
 #include "gossip-ui-utils.h"
-#include "gossip-stock.h"
+#include "empathy-images.h"
+
+#define DEBUG_DOMAIN "UiUtils"
 
 struct SizeData {
        gint     width;
@@ -200,24 +202,34 @@ gossip_glade_setup_size_group (GladeXML         *gui,
 }
 
 GdkPixbuf *
-gossip_pixbuf_from_smiley (GossipSmiley type,
-                          GtkIconSize  icon_size)
+gossip_pixbuf_from_icon_name (const gchar *icon_name,
+                             GtkIconSize  icon_size)
 {
        GtkIconTheme  *theme;
        GdkPixbuf     *pixbuf = NULL;
        GError        *error = NULL;
-       gint           w, h;
-       gint           size;
-       const gchar   *icon_id;
 
        theme = gtk_icon_theme_get_default ();
 
-       if (!gtk_icon_size_lookup (icon_size, &w, &h)) {
-               size = 16;
-       } else {
-               size = (w + h) / 2;
+       pixbuf = gtk_icon_theme_load_icon (theme,
+                                          icon_name,
+                                          icon_size,
+                                          0,
+                                          &error);
+       if (error) {
+               gossip_debug (DEBUG_DOMAIN, "Error loading icon: %s", error->message);
+               g_clear_error (&error);
        }
 
+       return pixbuf;
+}
+
+GdkPixbuf *
+gossip_pixbuf_from_smiley (GossipSmiley type,
+                          GtkIconSize  icon_size)
+{
+       const gchar *icon_id;
+
        switch (type) {
        case GOSSIP_SMILEY_NORMAL:       /*  :)   */
                icon_id = "stock_smiley-1";
@@ -306,106 +318,79 @@ gossip_pixbuf_from_smiley (GossipSmiley type,
                icon_id = NULL;
        }
 
-       pixbuf = gtk_icon_theme_load_icon (theme,
-                                          icon_id,     /* icon name */
-                                          size,        /* size */
-                                          0,           /* flags */
-                                          &error);
 
-       return pixbuf;
+       return gossip_pixbuf_from_icon_name (icon_id, icon_size);
 }
 
-GdkPixbuf *
-gossip_pixbuf_from_profile (McProfile   *profile,
-                           GtkIconSize  icon_size)
-{
-       GtkIconTheme  *theme;
-       gint           size = 48;
-       gint           w, h;
-       const gchar   *icon_id = NULL;
-       GError        *error = NULL;
-
-       theme = gtk_icon_theme_get_default ();
-
-       if (gtk_icon_size_lookup (icon_size, &w, &h)) {
-               size = (w + h) / 2;
-       }
-
-       icon_id = mc_profile_get_icon_name (profile);
-
-       theme = gtk_icon_theme_get_default ();
-       return gtk_icon_theme_load_icon (theme,
-                                        icon_id,     /* Icon name */
-                                        size,        /* Size */
-                                        0,           /* Flags */
-                                        &error);
-}
-
-GdkPixbuf *
-gossip_pixbuf_from_account (McAccount   *account,
-                           GtkIconSize  icon_size)
+const gchar *
+gossip_icon_name_from_account (McAccount *account)
 {
        McProfile *profile;
 
        profile = mc_account_get_profile (account);
 
-       return gossip_pixbuf_from_profile (profile, icon_size);
+       return mc_profile_get_icon_name (profile);
 }
 
-GdkPixbuf *
-gossip_pixbuf_for_presence_state (McPresence state)
+const gchar *
+gossip_icon_name_for_presence_state (McPresence state)
 {
-       const gchar *stock;
-
-       stock = gossip_stock_for_state (state);
+       switch (state) {
+       case MC_PRESENCE_AVAILABLE:
+               return EMPATHY_IMAGE_AVAILABLE;
+       case MC_PRESENCE_DO_NOT_DISTURB:
+               return EMPATHY_IMAGE_BUSY;
+       case MC_PRESENCE_AWAY:
+               return EMPATHY_IMAGE_AWAY;
+       case MC_PRESENCE_EXTENDED_AWAY:
+               return EMPATHY_IMAGE_EXT_AWAY;
+       case MC_PRESENCE_HIDDEN:
+       case MC_PRESENCE_OFFLINE:
+       case MC_PRESENCE_UNSET:
+               return EMPATHY_IMAGE_OFFLINE;
+       default:
+               g_assert_not_reached ();
+       }
 
-       return gossip_stock_render (stock, GTK_ICON_SIZE_MENU);
+       return NULL;
 }
 
-GdkPixbuf *
-gossip_pixbuf_for_presence (GossipPresence *presence)
+const gchar *
+gossip_icon_name_for_presence (GossipPresence *presence)
 {
        McPresence state;
 
        g_return_val_if_fail (GOSSIP_IS_PRESENCE (presence),
-                             gossip_pixbuf_offline ());
+                             EMPATHY_IMAGE_OFFLINE);
 
        state = gossip_presence_get_state (presence);
 
-       return gossip_pixbuf_for_presence_state (state);
+       return gossip_icon_name_for_presence_state (state);
 }
 
-GdkPixbuf *
-gossip_pixbuf_for_contact (GossipContact *contact)
+const gchar *
+gossip_icon_name_for_contact (GossipContact *contact)
 {
        GossipPresence     *presence;
        GossipSubscription  subscription;
 
        g_return_val_if_fail (GOSSIP_IS_CONTACT (contact),
-                             gossip_pixbuf_offline ());
+                             EMPATHY_IMAGE_OFFLINE);
 
        presence = gossip_contact_get_presence (contact);
 
        if (presence) {
-               return gossip_pixbuf_for_presence (presence);
+               return gossip_icon_name_for_presence (presence);
        }
 
        subscription = gossip_contact_get_subscription (contact);
 
        if (subscription != GOSSIP_SUBSCRIPTION_BOTH &&
            subscription != GOSSIP_SUBSCRIPTION_TO) {
-               return gossip_stock_render (GOSSIP_STOCK_PENDING,
-                                           GTK_ICON_SIZE_MENU);
+               return EMPATHY_IMAGE_PENDING;
        }
 
-       return gossip_pixbuf_offline ();
-}
-
-GdkPixbuf *
-gossip_pixbuf_offline (void)
-{
-       return gossip_stock_render (GOSSIP_STOCK_OFFLINE,
-                                   GTK_ICON_SIZE_MENU);
+       return EMPATHY_IMAGE_OFFLINE;
 }
 
 GdkPixbuf *