annotate libpurple/plugins/joinpart.c @ 32211:fa4b88cf8b56

Sort the variant list in the Preferences. It tends to be very long, so it shouldn't be done at load time, but its average length dictates that it should be done for the UI, at least.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 23 Sep 2011 18:24:01 +0000
parents 04f46e8750d4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
1 /**
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
2 * purple
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
3 *
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
6 * source distribution.
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
7 *
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
11 * (at your option) any later version.
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
12 *
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
16 * GNU General Public License for more details.
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
17 *
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19681
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18063
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
21 */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
22
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
23 #include "internal.h"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
24 #include "conversation.h"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
25 #include "debug.h"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
26 #include "plugin.h"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
27 #include "version.h"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
28
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
29 #define JOINPART_PLUGIN_ID "core-rlaager-joinpart"
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
30
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
31
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
32 /* Preferences */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
33
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
34 /* The number of minutes before a person is considered
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
35 * to have stopped being part of active conversation. */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
36 #define DELAY_PREF "/plugins/core/joinpart/delay"
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
37 #define DELAY_DEFAULT 10
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
38
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
39 /* The number of people that must be in a room for this
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
40 * plugin to have any effect */
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
41 #define THRESHOLD_PREF "/plugins/core/joinpart/threshold"
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
42 #define THRESHOLD_DEFAULT 20
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
43
23943
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
44 /* Hide buddies */
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
45 #define HIDE_BUDDIES_PREF "/plugins/core/joinpart/hide_buddies"
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
46 #define HIDE_BUDDIES_DEFAULT FALSE
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
47
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
48 struct joinpart_key
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
49 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
50 PurpleConversation *conv;
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
51 char *user;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
52 };
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
53
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
54 static guint joinpart_key_hash(const struct joinpart_key *key)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
55 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
56 g_return_val_if_fail(key != NULL, 0);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
57
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
58 return g_direct_hash(key->conv) + g_str_hash(key->user);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
59 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
60
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
61 static gboolean joinpart_key_equal(const struct joinpart_key *a, const struct joinpart_key *b)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
62 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
63 if (a == NULL)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
64 return (b == NULL);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
65 else if (b == NULL)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
66 return FALSE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
67
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
68 return (a->conv == b->conv) && !strcmp(a->user, b->user);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
69 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
70
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
71 static void joinpart_key_destroy(struct joinpart_key *key)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
72 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
73 g_return_if_fail(key != NULL);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
74
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
75 g_free(key->user);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
76 g_free(key);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
77 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
78
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
79 static gboolean should_hide_notice(PurpleConversation *conv, const char *name,
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
80 GHashTable *users)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
81 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
82 PurpleConvChat *chat;
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
83 int threshold;
22469
22fce0be8ed0 Fix a memory leak
Stu Tomlinson <stu@nosnilmot.com>
parents: 21030
diff changeset
84 struct joinpart_key key;
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
85 time_t *last_said;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
86
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
87 g_return_val_if_fail(conv != NULL, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
88 g_return_val_if_fail(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT, FALSE);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
89
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
90 /* If the room is small, don't bother. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
91 chat = PURPLE_CONV_CHAT(conv);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
92 threshold = purple_prefs_get_int(THRESHOLD_PREF);
18063
926ccb104da0 disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents: 18058
diff changeset
93 if (g_list_length(purple_conv_chat_get_users(chat)) < threshold)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
94 return FALSE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
95
23943
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
96 if (!purple_prefs_get_bool(HIDE_BUDDIES_PREF) &&
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
97 purple_find_buddy(purple_conversation_get_account(conv), name))
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
98 return FALSE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
99
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
100 /* Only show the notice if the user has spoken recently. */
22469
22fce0be8ed0 Fix a memory leak
Stu Tomlinson <stu@nosnilmot.com>
parents: 21030
diff changeset
101 key.conv = conv;
22fce0be8ed0 Fix a memory leak
Stu Tomlinson <stu@nosnilmot.com>
parents: 21030
diff changeset
102 key.user = (gchar *)name;
22fce0be8ed0 Fix a memory leak
Stu Tomlinson <stu@nosnilmot.com>
parents: 21030
diff changeset
103 last_said = g_hash_table_lookup(users, &key);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
104 if (last_said != NULL)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
105 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
106 int delay = purple_prefs_get_int(DELAY_PREF);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
107 if (delay > 0 && (*last_said + (delay * 60)) >= time(NULL))
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
108 return FALSE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
109 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
110
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
111 return TRUE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
112 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
113
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
114 static gboolean chat_buddy_leaving_cb(PurpleConversation *conv, const char *name,
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
115 const char *reason, GHashTable *users)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
116 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
117 return should_hide_notice(conv, name, users);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
118 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
119
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
120 static gboolean chat_buddy_joining_cb(PurpleConversation *conv, const char *name,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
121 PurpleConvChatBuddyFlags flags,
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
122 GHashTable *users)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
123 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
124 return should_hide_notice(conv, name, users);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
125 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
126
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
127 static void received_chat_msg_cb(PurpleAccount *account, char *sender,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
128 char *message, PurpleConversation *conv,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
129 PurpleMessageFlags flags, GHashTable *users)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
130 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
131 struct joinpart_key key;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
132 time_t *last_said;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
133
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
134 /* Most of the time, we'll already have tracked the user,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
135 * so we avoid memory allocation here. */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
136 key.conv = conv;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
137 key.user = sender;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
138 last_said = g_hash_table_lookup(users, &key);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
139 if (last_said != NULL)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
140 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
141 /* They just said something, so update the time. */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
142 time(last_said);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
143 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
144 else
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
145 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
146 struct joinpart_key *key2;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
147
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
148 key2 = g_new(struct joinpart_key, 1);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
149 key2->conv = conv;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
150 key2->user = g_strdup(sender);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
151
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
152 last_said = g_new(time_t, 1);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
153 time(last_said);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
154
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
155 g_hash_table_insert(users, key2, last_said);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
156 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
157 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
158
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
159 static gboolean check_expire_time(struct joinpart_key *key,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
160 time_t *last_said, time_t *limit)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
161 {
17100
de2946d55a2d We can't be sure that the conv still exists, so don't dereference it.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 16666
diff changeset
162 purple_debug_info("joinpart", "Removing key for %s\n", key->user);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
163 return (*last_said < *limit);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
164 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
165
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
166 static gboolean clean_users_hash(GHashTable *users)
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
167 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
168 int delay = purple_prefs_get_int(DELAY_PREF);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
169 time_t limit = time(NULL) - (60 * delay);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
170
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
171 g_hash_table_foreach_remove(users, (GHRFunc)check_expire_time, &limit);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
172
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
173 return TRUE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
174 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
175
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
176 static gboolean plugin_load(PurplePlugin *plugin)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
177 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
178 void *conv_handle;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
179 GHashTable *users;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
180 guint id;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
181 gpointer *data;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
182
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
183 users = g_hash_table_new_full((GHashFunc)joinpart_key_hash,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
184 (GEqualFunc)joinpart_key_equal,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
185 (GDestroyNotify)joinpart_key_destroy,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
186 g_free);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
187
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
188 conv_handle = purple_conversations_get_handle();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
189 purple_signal_connect(conv_handle, "chat-buddy-joining", plugin,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
190 PURPLE_CALLBACK(chat_buddy_joining_cb), users);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
191 purple_signal_connect(conv_handle, "chat-buddy-leaving", plugin,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
192 PURPLE_CALLBACK(chat_buddy_leaving_cb), users);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
193 purple_signal_connect(conv_handle, "received-chat-msg", plugin,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
194 PURPLE_CALLBACK(received_chat_msg_cb), users);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
195
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
196 /* Cleanup every 5 minutes */
25576
7f552614ec8a applied changes from a336cc1fd3a1ce815f97303b8d5ae8988f8cbd5b
Ethan Blanton <elb@pidgin.im>
parents: 23943
diff changeset
197 id = purple_timeout_add_seconds(60 * 5, (GSourceFunc)clean_users_hash, users);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
198
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
199 data = g_new(gpointer, 2);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
200 data[0] = users;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
201 data[1] = GUINT_TO_POINTER(id);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
202 plugin->extra = data;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
203
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
204 return TRUE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
205 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
206
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
207 static gboolean plugin_unload(PurplePlugin *plugin)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
208 {
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
209 gpointer *data = plugin->extra;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
210
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
211 /* Destroy the hash table. The core plugin code will
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
212 * disconnect the signals, and since Purple is single-threaded,
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
213 * we don't have to worry one will be called after this. */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
214 g_hash_table_destroy((GHashTable *)data[0]);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
215
17478
0f4a562b38d1 libpurple should not use glib eventloop stuff directly, since we have our
Richard Laager <rlaager@wiktel.com>
parents: 17100
diff changeset
216 purple_timeout_remove(GPOINTER_TO_UINT(data[1]));
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
217 g_free(data);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
218
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
219 return TRUE;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
220 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
221
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
222 static PurplePluginPrefFrame *
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
223 get_plugin_pref_frame(PurplePlugin *plugin)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
224 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
225 PurplePluginPrefFrame *frame;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
226 PurplePluginPref *ppref;
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
227
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
228 g_return_val_if_fail(plugin != NULL, FALSE);
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
229
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
230 frame = purple_plugin_pref_frame_new();
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
231
27979
04f46e8750d4 Drop a colon.
Paul Aurich <paul@darkrain42.org>
parents: 27978
diff changeset
232 ppref = purple_plugin_pref_new_with_label(_("Hide Joins/Parts"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
233 purple_plugin_pref_frame_add(frame, ppref);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
234
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
235 ppref = purple_plugin_pref_new_with_name_and_label(THRESHOLD_PREF,
27978
088a828fe2e2 Clarify the preference strings for the Join/Part hiding plugin.
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
236 /* Translators: Followed by an input request a number of people */
088a828fe2e2 Clarify the preference strings for the Join/Part hiding plugin.
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
237 _("For rooms with more than this many people"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
238 purple_plugin_pref_set_bounds(ppref, 0, 1000);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
239 purple_plugin_pref_frame_add(frame, ppref);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
240
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
241 ppref = purple_plugin_pref_new_with_name_and_label(DELAY_PREF,
27978
088a828fe2e2 Clarify the preference strings for the Join/Part hiding plugin.
Paul Aurich <paul@darkrain42.org>
parents: 25576
diff changeset
242 _("If user has not spoken in this many minutes"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
243 purple_plugin_pref_set_bounds(ppref, 0, 8 * 60); /* 8 Hours */
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
244 purple_plugin_pref_frame_add(frame, ppref);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
245
23943
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
246 ppref = purple_plugin_pref_new_with_name_and_label(HIDE_BUDDIES_PREF,
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
247 _("Apply hiding rules to buddies"));
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
248 purple_plugin_pref_frame_add(frame, ppref);
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
249
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
250 return frame;
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
251 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
252
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
253 static PurplePluginUiInfo prefs_info = {
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
254 get_plugin_pref_frame,
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
255 0, /* page_num (reserved) */
16666
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
256 NULL, /* frame (reserved) */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
257
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
258 /* padding */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
259 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
260 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
261 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
262 NULL
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
263 };
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
264
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
265 static PurplePluginInfo info =
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
266 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
267 PURPLE_PLUGIN_MAGIC,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
268 PURPLE_MAJOR_VERSION,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
269 PURPLE_MINOR_VERSION,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
270 PURPLE_PLUGIN_STANDARD, /**< type */
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
271 NULL, /**< ui_requirement */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
272 0, /**< flags */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
273 NULL, /**< dependencies */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
274 PURPLE_PRIORITY_DEFAULT, /**< priority */
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
275
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
276 JOINPART_PLUGIN_ID, /**< id */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
277 N_("Join/Part Hiding"), /**< name */
21030
3cc856ca2338 Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <stu@nosnilmot.com>
parents: 19681
diff changeset
278 DISPLAY_VERSION, /**< version */
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
279 /** summary */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
280 N_("Hides extraneous join/part messages."),
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
281 /** description */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
282 N_("This plugin hides join/part messages in large "
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
283 "rooms, except for those users actively taking "
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
284 "part in a conversation."),
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
285 "Richard Laager <rlaager@pidgin.im>", /**< author */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
286 PURPLE_WEBSITE, /**< homepage */
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
287
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
288 plugin_load, /**< load */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
289 plugin_unload, /**< unload */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
290 NULL, /**< destroy */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
291
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
292 NULL, /**< ui_info */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
293 NULL, /**< extra_info */
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
294 &prefs_info, /**< prefs_info */
16666
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
295 NULL, /**< actions */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
296
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
297 /* padding */
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
298 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
299 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
300 NULL,
5205dd2bd035 And the rest of the plugins that are compiling for me by default...
Gary Kramlich <grim@reaperworld.com>
parents: 16430
diff changeset
301 NULL
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
302 };
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
303
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
304 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
305 init_plugin(PurplePlugin *plugin)
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
306 {
16430
f8eb3e7c4fbd Fix GTK Plugin prefs
Sean Egan <seanegan@gmail.com>
parents: 16424
diff changeset
307 purple_prefs_add_none("/plugins/core/joinpart");
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
308
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
309 purple_prefs_add_int(DELAY_PREF, DELAY_DEFAULT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
310 purple_prefs_add_int(THRESHOLD_PREF, THRESHOLD_DEFAULT);
23943
13ca254ea7db In the Join/Part plugin, add the ability to apply the rules to
Richard Laager <rlaager@wiktel.com>
parents: 22469
diff changeset
311 purple_prefs_add_bool(HIDE_BUDDIES_PREF, HIDE_BUDDIES_DEFAULT);
15565
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
312 }
3b6ce2116f74 I had this brilliant idea to deal with join/part notices "intelligently".
Richard Laager <rlaager@wiktel.com>
parents:
diff changeset
313
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15565
diff changeset
314 PURPLE_INIT_PLUGIN(joinpart, init_plugin, info)