empathy r2027 - in trunk: libempathy-gtk src



Author: xclaesse
Date: Tue Jan  6 16:46:07 2009
New Revision: 2027
URL: http://svn.gnome.org/viewvc/empathy?rev=2027&view=rev

Log:
Don't emit sound when changing state and properly play login sound.

Modified:
   trunk/libempathy-gtk/empathy-ui-utils.c
   trunk/src/empathy-main-window.c

Modified: trunk/libempathy-gtk/empathy-ui-utils.c
==============================================================================
--- trunk/libempathy-gtk/empathy-ui-utils.c	(original)
+++ trunk/libempathy-gtk/empathy-ui-utils.c	Tue Jan  6 16:46:07 2009
@@ -1509,11 +1509,13 @@
 		return FALSE;
 	}
 
-	idle = empathy_idle_new ();	
+	idle = empathy_idle_new ();
 	presence = empathy_idle_get_state (idle);
 	g_object_unref (idle);
 
-	if (presence > MC_PRESENCE_AVAILABLE) {
+
+	if (presence != MC_PRESENCE_AVAILABLE &&
+	    presence != MC_PRESENCE_UNSET) {
 		empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY,
 				       &res);
 		if (res) {

Modified: trunk/src/empathy-main-window.c
==============================================================================
--- trunk/src/empathy-main-window.c	(original)
+++ trunk/src/empathy-main-window.c	Tue Jan  6 16:46:07 2009
@@ -36,6 +36,7 @@
 #include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-contact-manager.h>
 #include <libempathy/empathy-contact-factory.h>
+#include <libempathy/empathy-idle.h>
 #include <libempathy/empathy-status-presets.h>
 
 #include <libempathy-gtk/empathy-contact-dialogs.h>
@@ -1183,14 +1184,24 @@
 
 	if (status == TP_CONNECTION_STATUS_CONNECTED) {
 		GtkWidget *error_widget;
+		EmpathyIdle *idle;
 
-		if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN)) {
+		idle = empathy_idle_new ();
+
+		/* emit the sound only on first connect, i.e. when the saved
+		 * idle state is MC_PRESENCE_UNSET.
+		 */
+
+		if (empathy_idle_get_state (idle) == MC_PRESENCE_UNSET &&
+		    empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN)) {
 			ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
 						CA_PROP_EVENT_ID, "service-login",
 						CA_PROP_EVENT_DESCRIPTION, _("Connected to server"),
 						NULL);
 		}
 
+		g_object_unref (idle);
+
 		/* Account connected without error, remove error message if any */
 		error_widget = g_hash_table_lookup (window->errors, account);
 		if (error_widget) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]