changeset 11975:aadf61b30056

[gaim-migrate @ 14268] 1. Fix the I'dle Mak'er plugin 2. Show a friendly "none of your accounts are idle" message in the I'dle Mak'er plugin when attempting to unidle your accounts and none of them are idle 3. HIGify the capitalization of the I'dle Mak'er menu items 4. i18n system log "signed on" and "signed off" messages 5. Log when your accounts become idle and unidle 6. Add default saved statuses if the user has no saved statuses 7. Removed serv_set_idle(). Use gaim_presence_set_idle() instead. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 04 Nov 2005 19:15:05 +0000
parents 2ff2965895f3
children e33a9171aceb
files plugins/idle.c plugins/perl/common/Server.xs src/connection.c src/gtkidle.c src/savedstatuses.c src/server.c src/server.h src/status.c
diffstat 8 files changed, 59 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/idle.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/plugins/idle.c	Fri Nov 04 19:15:05 2005 +0000
@@ -26,6 +26,7 @@
 
 #include "connection.h"
 #include "debug.h"
+#include "notify.h"
 #include "plugin.h"
 #include "request.h"
 #include "server.h"
@@ -134,6 +135,12 @@
 	GaimRequestFieldGroup *group;
 	GaimRequestField *field;
 
+	if (idled_accts == NULL)
+	{
+		gaim_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL);
+		return;
+	}
+
 	group = gaim_request_field_group_new(NULL);
 
 	field = gaim_request_field_account_new("acct", _("Account"), NULL);
@@ -177,16 +184,16 @@
 	GList *l = NULL;
 	GaimPluginAction *act = NULL;
 
-	act = gaim_plugin_action_new(_("Set Account Idle Time"),
+	act = gaim_plugin_action_new(_("Set account idle time"),
 			idle_action);
 	l = g_list_append(l, act);
 
-	act = gaim_plugin_action_new(_("Unset Account Idle Time"),
+	act = gaim_plugin_action_new(_("Unset account idle time"),
 			unidle_action);
 	l = g_list_append(l, act);
 
 	act = gaim_plugin_action_new(
-			_("Unset Idle Time For All Idled Accounts"), unidle_all_action);
+			_("Unset idle time for all idled accounts"), unidle_all_action);
 	l = g_list_append(l, act);
 
 	return l;
--- a/plugins/perl/common/Server.xs	Fri Nov 04 18:01:55 2005 +0000
+++ b/plugins/perl/common/Server.xs	Fri Nov 04 19:15:05 2005 +0000
@@ -210,11 +210,6 @@
 	const char *filename
 
 void 
-serv_set_idle(con, a)
-	Gaim::Connection con 
-	int a
-
-void 
 serv_set_info(con, a)
 	Gaim::Connection con 
 	const char * a
--- a/src/connection.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/connection.c	Fri Nov 04 19:15:05 2005 +0000
@@ -195,8 +195,6 @@
 	if (remove)
 		gaim_blist_remove_account(account);
 
-	/* LOG	system_log(log_signoff, gc, NULL,
-	   OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */
 	gaim_signal_emit(gaim_connections_get_handle(), "signed-off", gc);
 
 #if 0
@@ -279,7 +277,7 @@
 		if (gaim_prefs_get_bool("/core/logging/log_system"))
 		{
 			GaimLog *log = gaim_account_get_log(account);
-			char *msg = g_strdup_printf("+++ %s signed on",
+			char *msg = g_strdup_printf(_("+++ %s signed on"),
 										gaim_account_get_username(account));
 			gaim_log_write(log, GAIM_MESSAGE_SYSTEM,
 						   gaim_account_get_username(account),
@@ -322,7 +320,7 @@
 		if (gaim_prefs_get_bool("/core/logging/log_system"))
 		{
 			GaimLog *log = gaim_account_get_log(account);
-			char *msg = g_strdup_printf("+++ %s signed off",
+			char *msg = g_strdup_printf(_("+++ %s signed off"),
 										gaim_account_get_username(account));
 			gaim_log_write(log, GAIM_MESSAGE_SYSTEM,
 						   gaim_account_get_username(account), time(NULL),
--- a/src/gtkidle.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/gtkidle.c	Fri Nov 04 19:15:05 2005 +0000
@@ -51,6 +51,15 @@
 
 } GaimAutoAwayState;
 
+/**
+ * This is needed for the I'dle Mak'er plugin to work correctly.  We
+ * use it to determine if we're the ones who set our accounts idle
+ * or if someone else did it (the I'dle Mak'er plugin, for example).
+ * If our accounts are marked as idle and have_set_idle is FALSE and
+ * the user moves the mouse, then we will NOT unidle our accounts.
+ */
+static gboolean have_set_idle = FALSE;
+
 #ifdef USE_SCREENSAVER
 /**
  * Get the number of seconds the user has been idle.  In Unix-world
@@ -181,18 +190,16 @@
 	}
 
 	/* Deal with reporting idleness to the server, if appropriate */
-	if (report_idle && idle_time >= IDLEMARK && !gaim_presence_is_idle(presence)) {
+	if (report_idle && idle_time >= IDLEMARK && !have_set_idle && !gaim_presence_is_idle(presence)) {
 		gaim_debug_info("idle", "Setting %s idle %d seconds\n",
 				   gaim_account_get_username(account), idle_time);
-		serv_set_idle(gc, idle_time);
 		gaim_presence_set_idle(presence, TRUE, time(NULL));
-		/* LOG	system_log(log_idle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
-	} else if ((!report_idle || idle_time < IDLEMARK) && gaim_presence_is_idle(presence)) {
+		have_set_idle = TRUE;
+	} else if ((!report_idle || idle_time < IDLEMARK) && have_set_idle && gaim_presence_is_idle(presence)) {
 		gaim_debug_info("idle", "Setting %s unidle\n",
 				   gaim_account_get_username(account));
 		gaim_presence_set_idle(presence, FALSE, time(NULL));
-		serv_set_idle(gc, 0);
-		/* LOG	system_log(log_unidle, gc, NULL, OPT_LOG_BUDDY_IDLE | OPT_LOG_MY_SIGNON); */
+		have_set_idle = FALSE;
 	}
 
 	return TRUE;
--- a/src/savedstatuses.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/savedstatuses.c	Fri Nov 04 19:15:05 2005 +0000
@@ -560,6 +560,21 @@
 gaim_savedstatuses_init(void)
 {
 	load_statuses();
+
+	if (saved_statuses == NULL)
+	{
+		/*
+		 * We don't have any saved statuses!  This is probably a new account,
+		 * so we add the "Default" status and the "Default when idle" status.
+		 */
+		GaimSavedStatus *saved_status;
+
+		saved_status = gaim_savedstatus_new(_("Default"), GAIM_STATUS_AVAILABLE);
+		gaim_savedstatus_set_message(saved_status, _("Hello!"));
+
+		saved_status = gaim_savedstatus_new(_("Default when idle"), GAIM_STATUS_AWAY);
+		gaim_savedstatus_set_message(saved_status, _("I'm not here right now"));
+	}
 }
 
 void
--- a/src/server.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/server.c	Fri Nov 04 19:15:05 2005 +0000
@@ -323,19 +323,6 @@
 		prpl_info->set_permit_deny(g);
 }
 
-
-void serv_set_idle(GaimConnection *g, int time)
-{
-	GaimPluginProtocolInfo *prpl_info = NULL;
-
-	if (g != NULL && g->prpl != NULL)
-		prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl);
-
-	if (prpl_info && g_list_find(gaim_connections_get_all(), g) && prpl_info->set_idle)
-		prpl_info->set_idle(g, time);
-}
-
-
 void serv_join_chat(GaimConnection *g, GHashTable *data)
 {
 	GaimPluginProtocolInfo *prpl_info = NULL;
--- a/src/server.h	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/server.h	Fri Nov 04 19:15:05 2005 +0000
@@ -35,7 +35,6 @@
 
 int  serv_send_im(GaimConnection *, const char *, const char *, GaimConvImFlags);
 void serv_get_info(GaimConnection *, const char *);
-void serv_set_idle(GaimConnection *, int);
 void serv_set_info(GaimConnection *, const char *);
 int  serv_send_typing(GaimConnection *, const char *, int);
 void serv_move_buddy(GaimBuddy *, GaimGroup *, GaimGroup *);
--- a/src/status.c	Fri Nov 04 18:01:55 2005 +0000
+++ b/src/status.c	Fri Nov 04 19:15:05 2005 +0000
@@ -1325,10 +1325,26 @@
 	}
 	else if(gaim_presence_get_context(presence) == GAIM_PRESENCE_CONTEXT_ACCOUNT)
 	{
-		GaimConnection *gc =
-			gaim_account_get_connection(gaim_presence_get_account(presence));
+		GaimAccount *account;
+		GaimLog *log;
+		char *msg;
+		GaimConnection *gc;
 		GaimPluginProtocolInfo *prpl_info = NULL;
 
+		account = gaim_presence_get_account(presence);
+		log = gaim_account_get_log(account);
+
+		if (idle)
+			msg = g_strdup_printf(_("+++ %s became idle"), gaim_account_get_username(account));
+		else
+			msg = g_strdup_printf(_("+++ %s became unidle"), gaim_account_get_username(account));
+		gaim_log_write(log, GAIM_MESSAGE_SYSTEM,
+					   gaim_account_get_username(account),
+					   idle_time, msg);
+		g_free(msg);
+
+		gc = gaim_account_get_connection(account);
+
 		if (gc != NULL && gc->prpl != NULL)
 			prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
 
@@ -1657,7 +1673,7 @@
 	gaim_prefs_add_none("/core/status/scores");
 
 	gaim_prefs_add_string("/core/status/current", _("Default"));
-	gaim_prefs_add_string("/core/status/idleaway", _("Default auto-away"));
+	gaim_prefs_add_string("/core/status/idleaway", _("Default when idle"));
 
 	gaim_prefs_add_int("/core/status/scores/offline",
 			primitive_scores[GAIM_STATUS_OFFLINE]);