aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-ui-utils.c52
-rw-r--r--libempathy-gtk/empathy-ui-utils.h3
-rw-r--r--libempathy/empathy-utils.c20
-rw-r--r--libempathy/empathy-utils.h2
-rw-r--r--src/Makefile.am1
-rw-r--r--src/empathy-chat-window.c10
-rw-r--r--src/empathy-misc.c56
-rw-r--r--src/empathy-misc.h35
-rw-r--r--src/empathy-status-icon.c7
9 files changed, 127 insertions, 59 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index d7d314082..91362da5e 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1584,23 +1584,6 @@ static EmpathySoundEntry sound_entries[LAST_EMPATHY_SOUND] = {
N_("Voice call ended"), NULL },
};
-static gboolean
-check_available (void)
-{
- McPresence presence;
- EmpathyIdle *idle;
-
- idle = empathy_idle_dup_singleton ();
- presence = empathy_idle_get_state (idle);
- g_object_unref (idle);
-
- if (presence != MC_PRESENCE_AVAILABLE &&
- presence != MC_PRESENCE_UNSET) {
- return FALSE;
- }
-
- return TRUE;
-}
static gboolean
empathy_sound_pref_is_enabled (const char *key)
@@ -1617,7 +1600,7 @@ empathy_sound_pref_is_enabled (const char *key)
return FALSE;
}
- if (!check_available ()) {
+ if (!empathy_check_available_state ()) {
empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
&res);
if (res) {
@@ -1658,36 +1641,3 @@ empathy_sound_play (GtkWidget *widget,
}
}
-gboolean
-empathy_notification_should_show (gboolean check_focus)
-{
- EmpathyConf *conf;
- gboolean res;
-
- conf = empathy_conf_get ();
- res = FALSE;
-
- empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_ENABLED, &res);
-
- if (!res) {
- return FALSE;
- }
-
- if (!check_available ()) {
- empathy_conf_get_bool (conf,
- EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
- &res);
- if (res) {
- return FALSE;
- }
- }
-
- if (check_focus) {
- empathy_conf_get_bool (conf,
- EMPATHY_PREFS_NOTIFICATIONS_FOCUS, &res);
- return res;
- } else {
- return TRUE;
- }
-}
-
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 6a52ff111..f7ec6649c 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -133,9 +133,6 @@ void empathy_send_file_with_file_chooser (EmpathyContact *conta
void empathy_sound_play (GtkWidget *widget,
EmpathySound sound_id);
-/* Notifications */
-gboolean empathy_notification_should_show (gboolean check_focus);
-
G_END_DECLS
#endif /* __EMPATHY_UI_UTILS_H__ */
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c
index e4ada9f80..bda638dff 100644
--- a/libempathy/empathy-utils.c
+++ b/libempathy/empathy-utils.c
@@ -41,6 +41,7 @@
#include "empathy-contact-manager.h"
#include "empathy-dispatcher.h"
#include "empathy-dispatch-operation.h"
+#include "empathy-idle.h"
#include "empathy-tp-call.h"
#include <extensions/extensions.h>
@@ -482,3 +483,22 @@ empathy_start_call_with_contact (EmpathyContact *contact)
empathy_dispatcher_call_with_contact (contact, empathy_call_request_cb,
contact);
}
+
+gboolean
+empathy_check_available_state (void)
+{
+ McPresence presence;
+ EmpathyIdle *idle;
+
+ idle = empathy_idle_dup_singleton ();
+ presence = empathy_idle_get_state (idle);
+ g_object_unref (idle);
+
+ if (presence != MC_PRESENCE_AVAILABLE &&
+ presence != MC_PRESENCE_UNSET) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h
index dc17353da..46fa193c0 100644
--- a/libempathy/empathy-utils.h
+++ b/libempathy/empathy-utils.h
@@ -87,7 +87,7 @@ McAccount * empathy_channel_get_account (TpChannel *channel);
gboolean empathy_proxy_equal (gconstpointer a,
gconstpointer b);
guint empathy_proxy_hash (gconstpointer key);
-
+gboolean empathy_check_available_state (void);
/* Temporary utility function, should be replaces by better voip infrastructure
* soon */
void empathy_start_call_with_contact (EmpathyContact *contact);
diff --git a/src/Makefile.am b/src/Makefile.am
index 5294eac09..db6479ea9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,6 +32,7 @@ empathy_SOURCES = \
empathy-import-dialog.c empathy-import-dialog.h \
empathy-import-pidgin.c empathy-import-pidgin.h \
empathy-main-window.c empathy-main-window.h \
+ empathy-misc.c empathy-misc.h \
empathy-new-chatroom-dialog.c empathy-new-chatroom-dialog.h \
empathy-preferences.c empathy-preferences.h \
empathy-status-icon.c empathy-status-icon.h \
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 31a2866a6..cbb6c085c 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -55,6 +55,7 @@
#include "empathy-chat-window.h"
#include "empathy-about-dialog.h"
+#include "empathy-misc.h"
#define DEBUG_FLAG EMPATHY_DEBUG_CHAT
#include <libempathy/empathy-debug.h>
@@ -868,9 +869,16 @@ chat_window_show_or_update_notification (EmpathyMessage *message,
const char *body;
GdkPixbuf *pixbuf;
EmpathyChatWindowPriv *priv = GET_PRIV (window);
+ gboolean res;
- if (!empathy_notification_should_show (TRUE)) {
+ if (!empathy_notification_is_enabled ()) {
return;
+ } else {
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_NOTIFICATIONS_FOCUS, &res);
+ if (!res) {
+ return;
+ }
}
sender = empathy_message_get_sender (message);
diff --git a/src/empathy-misc.c b/src/empathy-misc.c
new file mode 100644
index 000000000..eb4baf3d4
--- /dev/null
+++ b/src/empathy-misc.c
@@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
+ *
+ */
+
+#include "empathy-misc.h"
+
+#include <libempathy/empathy-utils.h>
+#include <libempathy-gtk/empathy-conf.h>
+
+/* public methods */
+gboolean
+empathy_notification_is_enabled (void)
+{
+ EmpathyConf *conf;
+ gboolean res;
+
+ conf = empathy_conf_get ();
+ res = FALSE;
+
+ empathy_conf_get_bool (conf, EMPATHY_PREFS_NOTIFICATIONS_ENABLED, &res);
+
+ if (!res) {
+ return FALSE;
+ }
+
+ if (!empathy_check_available_state ()) {
+ empathy_conf_get_bool (conf,
+ EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY,
+ &res);
+ if (res) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
diff --git a/src/empathy-misc.h b/src/empathy-misc.h
new file mode 100644
index 000000000..6bc3e2b27
--- /dev/null
+++ b/src/empathy-misc.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Cosimo Cecchi <cosimo.cecchi@collabora.co.uk>
+ *
+ */
+
+#ifndef __EMPATHY_MISC_H__
+#define __EMPATHY_MISC_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+gboolean empathy_notification_is_enabled (void);
+
+G_END_DECLS
+
+#endif /* __EMPATHY_MISC_H__ */
diff --git a/src/empathy-status-icon.c b/src/empathy-status-icon.c
index 08293de55..07f8abf85 100644
--- a/src/empathy-status-icon.c
+++ b/src/empathy-status-icon.c
@@ -43,6 +43,7 @@
#include "empathy-status-icon.h"
#include "empathy-preferences.h"
#include "empathy-event-manager.h"
+#include "empathy-misc.h"
#define DEBUG_FLAG EMPATHY_DEBUG_DISPATCHER
#include <libempathy/empathy-debug.h>
@@ -225,7 +226,7 @@ status_icon_event_added_cb (EmpathyEventManager *manager,
status_icon_update_icon (icon);
status_icon_update_tooltip (icon);
- if (empathy_notification_should_show (FALSE)) {
+ if (empathy_notification_is_enabled ()) {
status_icon_update_notification (icon);
}
@@ -274,7 +275,7 @@ status_icon_event_updated_cb (EmpathyEventManager *manager,
return;
}
- if (empathy_notification_should_show (FALSE)) {
+ if (empathy_notification_is_enabled ()) {
status_icon_update_notification (icon);
}
@@ -342,7 +343,7 @@ status_icon_idle_notify_cb (EmpathyStatusIcon *icon)
status_icon_update_icon (icon);
status_icon_update_tooltip (icon);
- if (!empathy_notification_should_show (FALSE)) {
+ if (!empathy_notification_is_enabled ()) {
/* dismiss the outstanding notification if present */
if (priv->notification) {