* 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)
/* owned (gchar *) => TRUE */
GHashTable *capabilities;
TpAccountManager *account_manager;
+ GSettings *gsettings_notif;
} EmpathyNotifyManagerPriv;
G_DEFINE_TYPE (EmpathyNotifyManager, empathy_notify_manager, G_TYPE_OBJECT);
priv->account_manager = NULL;
}
+ tp_clear_object (&priv->gsettings_notif);
+
G_OBJECT_CLASS (empathy_notify_manager_parent_class)->dispose (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);
}
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);
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);
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);
}
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;
}
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 (
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;
}