plugins/statenotify.c

changeset 9583
02ddd25cc6e4
parent 8993
41f67bceab41
child 9620
fe99fcea5c1c
--- a/plugins/statenotify.c	Fri Jul 23 19:56:27 2004 +0000
+++ b/plugins/statenotify.c	Sat Jul 24 15:14:43 2004 +0000
@@ -5,6 +5,12 @@
 #include "debug.h"
 #include "signals.h"
 
+#include "plugin.h"
+#include "pluginpref.h"
+#include "prefs.h"
+
+#define STATENOTIFY_PLUGIN_ID "core-statenotify"
+
 static void
 write_status(GaimBuddy *buddy, const char *message)
 {
@@ -27,25 +33,49 @@
 static void
 buddy_away_cb(GaimBuddy *buddy, void *data)
 {
-	write_status(buddy, _("%s has gone away."));
+	if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_away"))
+		write_status(buddy, _("%s has gone away."));
 }
 
 static void
 buddy_unaway_cb(GaimBuddy *buddy, void *data)
 {
-	write_status(buddy, _("%s is no longer away."));
+	if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_away"))
+		write_status(buddy, _("%s is no longer away."));
 }
 
 static void
 buddy_idle_cb(GaimBuddy *buddy, void *data)
 {
-	write_status(buddy, _("%s has become idle."));
+	if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_idle"))
+		write_status(buddy, _("%s has become idle."));
 }
 
 static void
 buddy_unidle_cb(GaimBuddy *buddy, void *data)
 {
-	write_status(buddy, _("%s is no longer idle."));
+	if (gaim_prefs_get_bool("/plugins/core/statenotify/notify_idle"))
+		write_status(buddy, _("%s is no longer idle."));
+}
+
+static GaimPluginPrefFrame *
+get_plugin_pref_frame(GaimPlugin *plugin)
+{
+	GaimPluginPrefFrame *frame;
+	GaimPluginPref *ppref;
+
+	frame = gaim_plugin_pref_frame_new();
+
+	ppref = gaim_plugin_pref_new_with_label("Notify When");
+	gaim_plugin_pref_frame_add(frame, ppref);
+
+	ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/core/statenotify/notify_away", "Buddy Goes _Away");
+	gaim_plugin_pref_frame_add(frame, ppref);
+	
+	ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/core/statenotify/notify_idle", "Buddy Goes _Idle");
+	gaim_plugin_pref_frame_add(frame, ppref);
+	
+	return frame;
 }
 
 static gboolean
@@ -65,6 +95,11 @@
 	return TRUE;
 }
 
+static GaimPluginUiInfo prefs_info =
+{
+	get_plugin_pref_frame
+};
+
 static GaimPluginInfo info =
 {
 	GAIM_PLUGIN_API_VERSION,                          /**< api_version    */
@@ -74,7 +109,7 @@
 	NULL,                                             /**< dependencies   */
 	GAIM_PRIORITY_DEFAULT,                            /**< priority       */
 
-	NULL,                                             /**< id             */
+	STATENOTIFY_PLUGIN_ID,                            /**< id             */
 	N_("Buddy State Notification"),                   /**< name           */
 	VERSION,                                          /**< version        */
 	                                                  /**  summary        */
@@ -92,13 +127,16 @@
 
 	NULL,                                             /**< ui_info        */
 	NULL,                                             /**< extra_info     */
-	NULL,
+	&prefs_info,                                      /**< prefs_info     */
 	NULL
 };
 
 static void
 init_plugin(GaimPlugin *plugin)
 {
+	gaim_prefs_add_none("/plugins/core/statenotify");
+	gaim_prefs_add_bool("/plugins/core/statenotify/notify_away", TRUE);
+	gaim_prefs_add_bool("/plugins/core/statenotify/notify_idle", TRUE);
 }
 
 GAIM_INIT_PLUGIN(statenotify, init_plugin, info)

mercurial