aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-ui-utils.c35
-rw-r--r--libempathy-gtk/empathy-ui-utils.h2
2 files changed, 37 insertions, 0 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 3b9dcbdc6..a7a468c3f 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -43,11 +43,13 @@
#include "empathy-ui-utils.h"
#include "empathy-images.h"
+#include "empathy-conf.h"
#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
#include <libempathy/empathy-debug.h>
#include <libempathy/empathy-utils.h>
#include <libempathy/empathy-dispatcher.h>
+#include <libempathy/empathy-idle.h>
void
empathy_gtk_init (void)
@@ -1490,3 +1492,36 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
gtk_widget_show (widget);
}
+gboolean
+empathy_sound_pref_is_enabled (const char *key)
+{
+ EmpathyConf *conf;
+ McPresence presence;
+ gboolean res;
+ EmpathyIdle *idle;
+
+ conf = empathy_conf_get ();
+ res = FALSE;
+
+ empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_ENABLED, &res);
+
+ if (!res) {
+ return FALSE;
+ }
+
+ idle = empathy_idle_new ();
+ presence = empathy_idle_get_state (idle);
+ g_object_unref (idle);
+
+ if (presence > MC_PRESENCE_AVAILABLE) {
+ empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
+ &res);
+ if (res) {
+ return FALSE;
+ }
+ }
+
+ empathy_conf_get_bool (conf, key, &res);
+
+ return res;
+}
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index d20d9a0c3..7c97f0943 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -114,6 +114,8 @@ GtkWidget * empathy_link_button_new (const gchar *url,
void empathy_send_file_with_file_chooser (EmpathyContact *contact);
+gboolean empathy_sound_pref_is_enabled (const char *key);
+
G_END_DECLS
#endif /* __EMPATHY_UI_UTILS_H__ */