comparison pidgin-twitter.c @ 11:7ea2a717af42

now sender list and sender sound can be set in independent of recipient settings.
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Thu, 01 May 2008 14:16:14 +0900
parents 4bd8c89b4749
children 0d102bbb40bb
comparison
equal deleted inserted replaced
10:4bd8c89b4749 11:7ea2a717af42
37 #define OPT_PIDGINTWITTER "/plugins/pidgin_twitter" 37 #define OPT_PIDGINTWITTER "/plugins/pidgin_twitter"
38 #define OPT_TRANSLATE_RECIPIENT OPT_PIDGINTWITTER "/translate_recipient" 38 #define OPT_TRANSLATE_RECIPIENT OPT_PIDGINTWITTER "/translate_recipient"
39 #define OPT_TRANSLATE_SENDER OPT_PIDGINTWITTER "/translate_sender" 39 #define OPT_TRANSLATE_SENDER OPT_PIDGINTWITTER "/translate_sender"
40 #define OPT_PLAYSOUND_RECIPIENT OPT_PIDGINTWITTER "/playsound_recipient" 40 #define OPT_PLAYSOUND_RECIPIENT OPT_PIDGINTWITTER "/playsound_recipient"
41 #define OPT_PLAYSOUND_SENDER OPT_PIDGINTWITTER "/playsound_sender" 41 #define OPT_PLAYSOUND_SENDER OPT_PIDGINTWITTER "/playsound_sender"
42 #define OPT_SOUNDID OPT_PIDGINTWITTER "/soundid" 42 #define OPT_SOUNDID_RECIPIENT OPT_PIDGINTWITTER "/soundid_recipient"
43 #define OPT_USERLIST OPT_PIDGINTWITTER "/userlist" 43 #define OPT_SOUNDID_SENDER OPT_PIDGINTWITTER "/soundid_sender"
44 #define OPT_USERLIST_RECIPIENT OPT_PIDGINTWITTER "/userlist_recipient"
45 #define OPT_USERLIST_SENDER OPT_PIDGINTWITTER "/userlist_sender"
44 #define RECIPIENT_FORMAT "@<a href='http://twitter.com/%s'>%s</a>" 46 #define RECIPIENT_FORMAT "@<a href='http://twitter.com/%s'>%s</a>"
45 #define SENDER_FORMAT "<a href='http://twitter.com/%s'>%s</a> :" 47 #define SENDER_FORMAT "<a href='http://twitter.com/%s'>%s</a> :"
46 #define DEFAULT_LIST "(list of users: separated with ' ,:;')" 48 #define DEFAULT_LIST "(list of users: separated with ' ,:;')"
47 49
48 #define twitter_debug(fmt, ...) purple_debug(PURPLE_DEBUG_INFO, PIDGINTWITTER_PLUGIN_ID, \ 50 #define twitter_debug(fmt, ...) purple_debug(PURPLE_DEBUG_INFO, PIDGINTWITTER_PLUGIN_ID, \
95 { 97 {
96 GMatchInfo *match_info; 98 GMatchInfo *match_info;
97 const gchar *list; 99 const gchar *list;
98 gchar **candidates = NULL, **candidate = NULL; 100 gchar **candidates = NULL, **candidate = NULL;
99 101
100 list = purple_prefs_get_string(OPT_USERLIST); 102 list = purple_prefs_get_string(which ? OPT_USERLIST_SENDER : OPT_USERLIST_RECIPIENT);
101 g_return_if_fail(list != NULL); 103 g_return_if_fail(list != NULL);
102 if(!strcmp(list, DEFAULT_LIST)) 104 if(!strcmp(list, DEFAULT_LIST))
103 return; 105 return;
104 106
105 candidates = g_strsplit_set(list, " ,:;", 0); 107 candidates = g_strsplit_set(list, " ,:;", 0);
116 continue; 118 continue;
117 twitter_debug("candidate = %s\n", *candidate); 119 twitter_debug("candidate = %s\n", *candidate);
118 if(!strcmp(user, *candidate)) { 120 if(!strcmp(user, *candidate)) {
119 twitter_debug("match. play sound\n"); 121 twitter_debug("match. play sound\n");
120 purple_sound_play_event( 122 purple_sound_play_event(
121 purple_prefs_get_int(OPT_SOUNDID), NULL); 123 purple_prefs_get_int(which ? OPT_SOUNDID_SENDER : OPT_SOUNDID_RECIPIENT), NULL);
122 break; 124 break;
123 } 125 }
124 } 126 }
125 g_free(user); 127 g_free(user);
126 g_match_info_next(match_info, NULL); 128 g_match_info_next(match_info, NULL);
183 } 185 }
184 186
185 static PurplePluginPrefFrame * 187 static PurplePluginPrefFrame *
186 get_plugin_pref_frame(PurplePlugin * plugin) 188 get_plugin_pref_frame(PurplePlugin * plugin)
187 { 189 {
190 /* create gtk elements for the plugin preferences */
191
188 PurplePluginPref *pref; 192 PurplePluginPref *pref;
189 PurplePluginPrefFrame *frame = purple_plugin_pref_frame_new(); 193 PurplePluginPrefFrame *frame = purple_plugin_pref_frame_new();
190 194
191 /* create gtk elements for the plugin preferences */ 195 /* frame title */
192 pref = purple_plugin_pref_new_with_label("Pidgin-Twitter Configuration"); 196 pref = purple_plugin_pref_new_with_label("Pidgin-Twitter Configuration");
193 purple_plugin_pref_frame_add(frame, pref); 197 purple_plugin_pref_frame_add(frame, pref);
194 198
199
200 /* translation settings */
195 pref = purple_plugin_pref_new_with_name_and_label( 201 pref = purple_plugin_pref_new_with_name_and_label(
196 OPT_TRANSLATE_RECIPIENT, 202 OPT_TRANSLATE_RECIPIENT,
197 "Translate @username to the link to the user"); 203 "Translate @username to link to the user");
198 purple_plugin_pref_frame_add(frame, pref); 204 purple_plugin_pref_frame_add(frame, pref);
199 205
200 pref = purple_plugin_pref_new_with_name_and_label( 206 pref = purple_plugin_pref_new_with_name_and_label(
201 OPT_TRANSLATE_SENDER, 207 OPT_TRANSLATE_SENDER,
202 "Translate sender name to the link"); 208 "Translate sender name to link");
203 purple_plugin_pref_frame_add(frame, pref); 209 purple_plugin_pref_frame_add(frame, pref);
204 210
211
212 /* sound settings for recipient */
205 pref = purple_plugin_pref_new_with_name_and_label( 213 pref = purple_plugin_pref_new_with_name_and_label(
206 OPT_PLAYSOUND_RECIPIENT, 214 OPT_PLAYSOUND_RECIPIENT,
207 "Play a sound on an arrival of reply to the user in the Userlist"); 215 "Play a sound on reply to the user in the recipient list");
208 purple_plugin_pref_frame_add(frame, pref); 216 purple_plugin_pref_frame_add(frame, pref);
209 217
210 pref = purple_plugin_pref_new_with_name_and_label( 218 /* recipient list */
211 OPT_PLAYSOUND_SENDER, 219 pref = purple_plugin_pref_new_with_name_and_label(
212 "Play a sound if sender of a message is in the Userlist"); 220 OPT_USERLIST_RECIPIENT,
221 "Recipient List");
213 purple_plugin_pref_frame_add(frame, pref); 222 purple_plugin_pref_frame_add(frame, pref);
214 223
215 /* sound id selector */ 224 /* sound id selector */
216 pref = purple_plugin_pref_new_with_name_and_label(OPT_SOUNDID, "Sound"); 225 pref = purple_plugin_pref_new_with_name_and_label(OPT_SOUNDID_RECIPIENT, "Recipient Sound");
217 226
218 purple_plugin_pref_set_type(pref, PURPLE_PLUGIN_PREF_CHOICE); 227 purple_plugin_pref_set_type(pref, PURPLE_PLUGIN_PREF_CHOICE);
219 purple_plugin_pref_add_choice(pref, "Arrive", GINT_TO_POINTER(0)); 228 purple_plugin_pref_add_choice(pref, "Arrive", GINT_TO_POINTER(0));
220 purple_plugin_pref_add_choice(pref, "Leave", GINT_TO_POINTER(1)); 229 purple_plugin_pref_add_choice(pref, "Leave", GINT_TO_POINTER(1));
221 purple_plugin_pref_add_choice(pref, "Receive", GINT_TO_POINTER(2)); 230 purple_plugin_pref_add_choice(pref, "Receive", GINT_TO_POINTER(2));
228 purple_plugin_pref_add_choice(pref, "Pounce Default", GINT_TO_POINTER(9)); 237 purple_plugin_pref_add_choice(pref, "Pounce Default", GINT_TO_POINTER(9));
229 purple_plugin_pref_add_choice(pref, "Chat Nick Said", GINT_TO_POINTER(10)); 238 purple_plugin_pref_add_choice(pref, "Chat Nick Said", GINT_TO_POINTER(10));
230 239
231 purple_plugin_pref_frame_add(frame, pref); 240 purple_plugin_pref_frame_add(frame, pref);
232 241
233 /* user list */ 242
234 pref = purple_plugin_pref_new_with_name_and_label( 243 /* sound settings for sender */
235 OPT_USERLIST, 244 pref = purple_plugin_pref_new_with_name_and_label(
236 "Userlist"); 245 OPT_PLAYSOUND_SENDER,
237 purple_plugin_pref_frame_add(frame, pref); 246 "Play a sound if sender of a message is in the sender list");
247 purple_plugin_pref_frame_add(frame, pref);
248
249 /* sender list */
250 pref = purple_plugin_pref_new_with_name_and_label(
251 OPT_USERLIST_SENDER,
252 "Sender List");
253 purple_plugin_pref_frame_add(frame, pref);
254
255 /* sound id selector */
256 pref = purple_plugin_pref_new_with_name_and_label(OPT_SOUNDID_SENDER, "Sender Sound");
257
258 purple_plugin_pref_set_type(pref, PURPLE_PLUGIN_PREF_CHOICE);
259 purple_plugin_pref_add_choice(pref, "Arrive", GINT_TO_POINTER(0));
260 purple_plugin_pref_add_choice(pref, "Leave", GINT_TO_POINTER(1));
261 purple_plugin_pref_add_choice(pref, "Receive", GINT_TO_POINTER(2));
262 purple_plugin_pref_add_choice(pref, "Fist Receive", GINT_TO_POINTER(3));
263 purple_plugin_pref_add_choice(pref, "Send", GINT_TO_POINTER(4));
264 purple_plugin_pref_add_choice(pref, "Chat Join", GINT_TO_POINTER(5));
265 purple_plugin_pref_add_choice(pref, "Chat Leave", GINT_TO_POINTER(6));
266 purple_plugin_pref_add_choice(pref, "Chat You Say", GINT_TO_POINTER(7));
267 purple_plugin_pref_add_choice(pref, "Chat Someone Say", GINT_TO_POINTER(8));
268 purple_plugin_pref_add_choice(pref, "Pounce Default", GINT_TO_POINTER(9));
269 purple_plugin_pref_add_choice(pref, "Chat Nick Said", GINT_TO_POINTER(10));
270
271 purple_plugin_pref_frame_add(frame, pref);
238 272
239 return frame; 273 return frame;
240 } 274 }
241 275
242 static PurplePluginUiInfo pref_info = { 276 static PurplePluginUiInfo pref_info = {
252 0, /**< flags */ 286 0, /**< flags */
253 NULL, /**< deps */ 287 NULL, /**< deps */
254 PURPLE_PRIORITY_DEFAULT, /**< priority */ 288 PURPLE_PRIORITY_DEFAULT, /**< priority */
255 PIDGINTWITTER_PLUGIN_ID, /**< id */ 289 PIDGINTWITTER_PLUGIN_ID, /**< id */
256 "Pidgin-Twitter", /**< name */ 290 "Pidgin-Twitter", /**< name */
257 "0.3.1", /**< version */ 291 "0.4.0", /**< version */
258 "replaces @username to a link and play sound", /** summary */ 292 "replaces @username to a link and play sound", /** summary */
259 "replaces @username in a link and play sound", /** desc */ 293 "replaces @username in a link and play sound", /** desc */
260 "Yoshiki Yazawa (yaz@honeyplanet.jp)", /**< author */ 294 "Yoshiki Yazawa (yaz@honeyplanet.jp)", /**< author */
261 "http://www.honeyplanet.jp/", /**< homepage */ 295 "http://www.honeyplanet.jp/", /**< homepage */
262 load_plugin, /**< load */ 296 load_plugin, /**< load */
278 purple_prefs_add_bool(OPT_TRANSLATE_RECIPIENT, TRUE); 312 purple_prefs_add_bool(OPT_TRANSLATE_RECIPIENT, TRUE);
279 purple_prefs_add_bool(OPT_TRANSLATE_SENDER, TRUE); 313 purple_prefs_add_bool(OPT_TRANSLATE_SENDER, TRUE);
280 314
281 purple_prefs_add_bool(OPT_PLAYSOUND_RECIPIENT, TRUE); 315 purple_prefs_add_bool(OPT_PLAYSOUND_RECIPIENT, TRUE);
282 purple_prefs_add_bool(OPT_PLAYSOUND_SENDER, FALSE); 316 purple_prefs_add_bool(OPT_PLAYSOUND_SENDER, FALSE);
283 purple_prefs_add_int(OPT_SOUNDID, PURPLE_SOUND_POUNCE_DEFAULT); 317 purple_prefs_add_int(OPT_SOUNDID_RECIPIENT, PURPLE_SOUND_POUNCE_DEFAULT);
284 purple_prefs_add_string(OPT_USERLIST, DEFAULT_LIST); 318 purple_prefs_add_string(OPT_USERLIST_RECIPIENT, DEFAULT_LIST);
319 purple_prefs_add_int(OPT_SOUNDID_SENDER, PURPLE_SOUND_RECEIVE);
320 purple_prefs_add_string(OPT_USERLIST_SENDER, DEFAULT_LIST);
285 321
286 /* compile regex */ 322 /* compile regex */
287 regp[RECIPIENT] = g_regex_new("@([A-Za-z0-9_]+)", 0, 0, NULL); 323 regp[RECIPIENT] = g_regex_new("@([A-Za-z0-9_]+)", 0, 0, NULL);
288 regp[SENDER] = g_regex_new("^<body>([A-Za-z0-9_]+): ", 0, 0, NULL); 324 regp[SENDER] = g_regex_new("^<body>([A-Za-z0-9_]+): ", 0, 0, NULL);
289 } 325 }