Mercurial > pidgin-twitter
diff pidgin-twitter.c @ 215:6b258bdd9c49
added a feature of excluding reply to me from filter application.
| author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
|---|---|
| date | Wed, 27 Aug 2008 07:20:04 +0900 |
| parents | 148fa8a8be8e |
| children | 55908ee1467f |
line wrap: on
line diff
--- a/pidgin-twitter.c Tue Aug 26 18:56:06 2008 +0900 +++ b/pidgin-twitter.c Wed Aug 27 07:20:04 2008 +0900 @@ -1529,6 +1529,7 @@ { GMatchInfo *match_info; const gchar *list = NULL; + gchar *screen_name = NULL; gchar **candidates = NULL, **candidate = NULL; g_return_if_fail(*sender != NULL); @@ -1539,18 +1540,31 @@ switch(service) { case twitter_service: list = purple_prefs_get_string(OPT_FILTER_TWITTER); + screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_TWITTER)); break; case wassr_service: list = purple_prefs_get_string(OPT_FILTER_WASSR); + screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_WASSR)); break; case identica_service: list = purple_prefs_get_string(OPT_FILTER_IDENTICA); + screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA)); break; } g_return_if_fail(list != NULL); if(strstr(list, DEFAULT_LIST)) return; + /* find @myself */ + if(purple_prefs_get_bool(OPT_FILTER_EXCLUDE_REPLY) && + strstr(plain, screen_name)) { + g_free(plain); + g_free(screen_name); + return; + } + else + g_free(screen_name); + candidates = g_strsplit_set(list, " ,:;", 0); g_return_if_fail(candidates != NULL); @@ -1566,12 +1580,12 @@ twitter_debug("candidate = %s\n", *candidate); if(!strcmp(user, *candidate)) { twitter_debug("match. filter %s\n", user); -// *flags |= PURPLE_MESSAGE_INVISIBLE; /* pidgin should handle this flag properly --yaz */ -#if 1 + /* pidgin should handle this flag properly --yaz */ +// *flags |= PURPLE_MESSAGE_INVISIBLE; + /* temporal workaround */ g_free(*sender); *sender = NULL; g_free(*buffer); *buffer = NULL; -#endif break; } } @@ -1579,6 +1593,7 @@ g_free(user); g_match_info_next(match_info, NULL); } + g_free(plain); g_strfreev(candidates); g_match_info_free(match_info); @@ -2874,13 +2889,20 @@ /***************/ /* filter page */ /***************/ - e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_check")); + e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_filter_check")); g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), purple_prefs_get_bool(OPT_FILTER)); g_signal_connect(e, "toggled", G_CALLBACK(bool_toggled_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_exclude_reply_check")); + g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER_EXCLUDE_REPLY); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e), + purple_prefs_get_bool(OPT_FILTER_EXCLUDE_REPLY)); + g_signal_connect(e, "toggled", + G_CALLBACK(bool_toggled_cb), &e); + e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_twitter")); g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER_TWITTER); text = purple_prefs_get_string(OPT_FILTER_TWITTER); @@ -3166,6 +3188,7 @@ purple_prefs_add_bool(OPT_LOG_OUTPUT, FALSE); purple_prefs_add_bool(OPT_FILTER, TRUE); + purple_prefs_add_bool(OPT_FILTER_EXCLUDE_REPLY, TRUE); purple_prefs_add_string(OPT_FILTER_TWITTER, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST); purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST);
