]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-notify-manager.c
Updated Spanish Translation
[empathy.git] / libempathy-gtk / empathy-notify-manager.c
index d0e0aadecf1aa62ba4500324df9a706097b91373..bbe3a1a4c0c3d7b0061445f3a92de4f0e723f90e 100644 (file)
  * Authors: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
  */
 
-#include <config.h>
-#include <string.h>
+#include "config.h"
+#include "empathy-notify-manager.h"
 
-#include <libnotify/notification.h>
 #include <libnotify/notify.h>
+#include <tp-account-widgets/tpaw-pixbuf-utils.h>
 
-#include <telepathy-glib/account-manager.h>
-
-#include <libempathy/empathy-gsettings.h>
-#include <libempathy/empathy-utils.h>
-
-#include <libempathy-gtk/empathy-ui-utils.h>
+#include "empathy-gsettings.h"
+#include "empathy-ui-utils.h"
+#include "empathy-utils.h"
 
 #define DEBUG_FLAG EMPATHY_DEBUG_OTHER
-#include <libempathy/empathy-debug.h>
-
-#include "empathy-notify-manager.h"
+#include "empathy-debug.h"
 
 #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyNotifyManager)
 
@@ -42,6 +37,7 @@ typedef struct
   /* owned (gchar *) => TRUE */
   GHashTable *capabilities;
   TpAccountManager *account_manager;
+  GSettings *gsettings_notif;
 } EmpathyNotifyManagerPriv;
 
 G_DEFINE_TYPE (EmpathyNotifyManager, empathy_notify_manager, G_TYPE_OBJECT);
@@ -78,6 +74,8 @@ notify_manager_dispose (GObject *object)
       priv->account_manager = NULL;
     }
 
+  tp_clear_object (&priv->gsettings_notif);
+
   G_OBJECT_CLASS (empathy_notify_manager_parent_class)->dispose (object);
 }
 
@@ -86,7 +84,7 @@ notify_manager_finalize (GObject *object)
 {
   EmpathyNotifyManagerPriv *priv = GET_PRIV (object);
 
-  g_hash_table_destroy (priv->capabilities);
+  g_hash_table_unref (priv->capabilities);
 
   G_OBJECT_CLASS (empathy_notify_manager_parent_class)->finalize (object);
 }
@@ -111,7 +109,7 @@ account_manager_prepared_cb (GObject *source_object,
   TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object);
   GError *error = NULL;
 
-  if (!tp_account_manager_prepare_finish (account_manager, result, &error))
+  if (!tp_proxy_prepare_finish (account_manager, result, &error))
     {
       DEBUG ("Failed to prepare account manager: %s", error->message);
       g_error_free (error);
@@ -128,6 +126,8 @@ empathy_notify_manager_init (EmpathyNotifyManager *self)
 
   self->priv = priv;
 
+  priv->gsettings_notif = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
+
   priv->capabilities = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
       NULL);
 
@@ -145,7 +145,7 @@ empathy_notify_manager_init (EmpathyNotifyManager *self)
 
   priv->account_manager = tp_account_manager_dup ();
 
-  tp_account_manager_prepare_async (priv->account_manager, NULL,
+  tp_proxy_prepare_async (priv->account_manager, NULL,
       account_manager_prepared_cb, self);
 }
 
@@ -175,7 +175,7 @@ empathy_notify_manager_get_pixbuf_for_notification (EmpathyNotifyManager *self,
     pixbuf = empathy_pixbuf_avatar_from_contact_scaled (contact, 48, 48);
 
   if (pixbuf == NULL)
-    pixbuf = empathy_pixbuf_from_icon_name_sized (icon_name, 48);
+    pixbuf = tpaw_pixbuf_from_icon_name_sized (icon_name, 48);
 
   return pixbuf;
 }
@@ -184,20 +184,17 @@ gboolean
 empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
 {
   EmpathyNotifyManagerPriv *priv = GET_PRIV (self);
-  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
   TpConnectionPresenceType presence;
-  gboolean ret = FALSE;
 
-  if (!g_settings_get_boolean (gsettings, EMPATHY_PREFS_NOTIFICATIONS_ENABLED))
-    goto finally;
+  if (!g_settings_get_boolean (priv->gsettings_notif,
+        EMPATHY_PREFS_NOTIFICATIONS_ENABLED))
+    return FALSE;
 
-  if (!tp_account_manager_is_prepared (priv->account_manager,
+  if (!tp_proxy_is_prepared (priv->account_manager,
         TP_ACCOUNT_MANAGER_FEATURE_CORE))
     {
       DEBUG ("account manager is not ready yet; display the notification");
-      ret = TRUE;
-
-      goto finally;
+      return TRUE;
     }
 
   presence = tp_account_manager_get_most_available_presence (
@@ -207,15 +204,26 @@ empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
   if (presence != TP_CONNECTION_PRESENCE_TYPE_AVAILABLE &&
       presence != TP_CONNECTION_PRESENCE_TYPE_UNSET)
     {
-      if (!g_settings_get_boolean (gsettings,
+      if (g_settings_get_boolean (priv->gsettings_notif,
             EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY))
-        goto finally;
+        return FALSE;
     }
 
-  ret = TRUE;
+  return TRUE;
+}
+
+NotifyNotification *
+empathy_notify_manager_create_notification (const gchar *summary,
+    const char *body,
+    const gchar *icon)
+{
+  NotifyNotification *notification;
+
+  notification = notify_notification_new (summary, body, icon);
 
-finally:
-  g_object_unref (gsettings);
+  notify_notification_set_hint (notification,
+      EMPATHY_NOTIFY_MANAGER_CAP_DESKTOP_ENTRY,
+      g_variant_new_string ("empathy"));
 
-  return ret;
+  return notification;
 }