diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2009-01-31 01:07:26 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2009-01-31 01:07:26 +0800 |
commit | 3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9 (patch) | |
tree | 493b443b93bdd6d75d4386c8299a4b5f5e9c39bb /libempathy-gtk | |
parent | 973bc4d1197ab108f0236ac2baf48678f20fb2aa (diff) | |
download | gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.gz gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.bz2 gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.lz gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.xz gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.tar.zst gsoc2013-empathy-3eb84c8a0312fd0d1be89b091d8d6a4dd315d3d9.zip |
Implement a logic for disabling notifications when away.
svn path=/trunk/; revision=2282
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 55 | ||||
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.h | 3 |
2 files changed, 50 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index effeb7a01..7b55587ea 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1573,12 +1573,28 @@ static EmpathySoundEntry sound_entries[LAST_EMPATHY_SOUND] = { }; 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) { EmpathyConf *conf; - McPresence presence; gboolean res; - EmpathyIdle *idle; conf = empathy_conf_get (); res = FALSE; @@ -1589,12 +1605,7 @@ empathy_sound_pref_is_enabled (const char *key) return FALSE; } - idle = empathy_idle_dup_singleton (); - presence = empathy_idle_get_state (idle); - g_object_unref (idle); - - if (presence != MC_PRESENCE_AVAILABLE && - presence != MC_PRESENCE_UNSET) { + if (!check_available ()) { empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY, &res); if (res) { @@ -1634,3 +1645,31 @@ empathy_sound_play (GtkWidget *widget, NULL); } } + +gboolean +empathy_notification_should_show (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 (!check_available ()) { + empathy_conf_get_bool (conf, + EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY, + &res); + if (res) { + return FALSE; + } + } + + return TRUE; +} + diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h index 108b7bb89..b3b26f0bb 100644 --- a/libempathy-gtk/empathy-ui-utils.h +++ b/libempathy-gtk/empathy-ui-utils.h @@ -131,6 +131,9 @@ void empathy_send_file_with_file_chooser (EmpathyContact *conta void empathy_sound_play (GtkWidget *widget, EmpathySound sound_id); +/* Notifications */ +gboolean empathy_notification_should_show (void); + G_END_DECLS #endif /* __EMPATHY_UI_UTILS_H__ */ |