diff main.c @ 300:42cdddf0f747

added preliminary support for friendfeed.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 25 May 2009 22:47:44 +0900
parents d68ed289ef69
children e17b74fdf86a
line wrap: on
line diff
--- a/main.c	Sat Apr 25 22:27:13 2009 +0900
+++ b/main.c	Mon May 25 22:47:44 2009 +0900
@@ -170,6 +170,9 @@
         case jisko_service:
             format = RECIPIENT_FORMAT_JISKO;
             break;
+        case ffeed_service:
+            format = RECIPIENT_FORMAT_FFEED;
+            break;
         default:
             twitter_debug("unknown service\n");
             break;
@@ -179,7 +182,7 @@
         g_free(match2);
     }
     else if(which == SENDER) {
-        gchar *match1 = g_match_info_fetch(match_info, 1); /*preceding CR|LF*/
+        gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */
         gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */
         const gchar *format = NULL;
 
@@ -206,6 +209,17 @@
         g_free(match1);
         g_free(match2);
     }
+    else if(which == SENDER_FFEED) {
+        gchar *match1 = g_match_info_fetch(match_info, 1); /* preceding CR|LF */
+        gchar *match2 = g_match_info_fetch(match_info, 2); /* sender */
+        const gchar *format = NULL;
+
+        format = SENDER_FORMAT_FFEED;
+        g_snprintf(sub, SUBST_BUF_SIZE, format, match1 ? match1: "", match2, match2);
+
+        g_free(match1);
+        g_free(match2);
+    }
     else if(which == CHANNEL_WASSR && service == wassr_service) {
         gchar *match1 = g_match_info_fetch(match_info, 1); /* before channel */
         gchar *match2 = g_match_info_fetch(match_info, 2); /* channel */
@@ -245,6 +259,9 @@
     else if(which == EXCESS_LF) {
         g_snprintf(sub, SUBST_BUF_SIZE, "%s", "\n");
     }
+    else if(which == TRAIL_HASH) {
+        g_snprintf(sub, SUBST_BUF_SIZE, "%s", ""); /* xxx --yaz */
+    }
 
     g_string_append(result, sub);
     twitter_debug("sub = %s\n", sub);
@@ -352,6 +369,9 @@
         case jisko_service:
             screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO);
             break;
+        case ffeed_service:
+            screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_FFEED);
+            break;
         }
 
         if (screen_name) {
@@ -374,7 +394,10 @@
 
     /* translate */
     if(purple_prefs_get_bool(OPT_TRANSLATE_SENDER)) {
-        translate(buffer, SENDER, service);
+        if(service == ffeed_service)
+            translate(buffer, SENDER_FFEED, service);
+        else
+            translate(buffer, SENDER, service);
     }
     if(purple_prefs_get_bool(OPT_TRANSLATE_RECIPIENT)) {
         translate(buffer, RECIPIENT, service);
@@ -406,6 +429,10 @@
         translate(buffer, EXCESS_LF, service);
     }
 
+    if(service == ffeed_service) {
+        translate(buffer, TRAIL_HASH, service);
+    }
+
     return FALSE;
 }
 
@@ -427,6 +454,7 @@
     case twitter_service:
     case identica_service:
     case jisko_service:
+    case ffeed_service:
         count = gtk_text_buffer_get_char_count(textbuffer) +
             (unsigned int)g_utf8_strlen(new_text, -1);
         markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
@@ -468,6 +496,7 @@
     case twitter_service:
     case identica_service:
     case jisko_service:
+    case ffeed_service:
         count= gtk_text_buffer_get_char_count(textbuffer) -
             (gtk_text_iter_get_offset(end_pos) -
              gtk_text_iter_get_offset(start_pos));
@@ -510,6 +539,7 @@
         case wassr_service:
         case identica_service:
         case jisko_service:
+        case ffeed_service:
             detach_from_conv(conv, NULL);
             break;
         default:
@@ -628,6 +658,7 @@
         case wassr_service:
         case identica_service:
         case jisko_service:
+        case ffeed_service:
             attach_to_conv(conv, NULL);
             break;
         default:
@@ -720,6 +751,7 @@
     case wassr_service:
     case identica_service:
     case jisko_service:
+    case ffeed_service:
         attach_to_conv(conv, NULL);
         break;
     default:
@@ -753,6 +785,7 @@
     case wassr_service:
     case identica_service:
     case jisko_service:
+    case ffeed_service:
         hash = icon_hash[service];
         break;
     default:
@@ -794,6 +827,9 @@
     case jisko_service:
         list = purple_prefs_get_string(OPT_FILTER_JISKO);
         screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_JISKO));
+    case ffeed_service:
+        list = purple_prefs_get_string(OPT_FILTER_FFEED);
+        screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_FFEED));
         break;
     }
     g_return_if_fail(list != NULL);
@@ -1037,6 +1073,7 @@
     case wassr_service:
     case identica_service:
     case jisko_service:
+    case ffeed_service:
         hash = icon_hash[service];
         break;
     default:
@@ -1123,6 +1160,7 @@
     /* compile regex */
     regp[RECIPIENT] = g_regex_new(P_RECIPIENT, 0, 0, NULL);
     regp[SENDER]    = g_regex_new(P_SENDER,    0, 0, NULL);
+    regp[SENDER_FFEED] = g_regex_new(P_SENDER_FFEED, 0, 0, NULL);
     regp[COMMAND]   = g_regex_new(P_COMMAND, G_REGEX_RAW, 0, NULL);
     regp[PSEUDO]    = g_regex_new(P_PSEUDO,  G_REGEX_RAW, 0, NULL);
     regp[USER]      = g_regex_new(P_USER, 0, 0, NULL);
@@ -1134,8 +1172,10 @@
     regp[IMAGE_WASSR]    = g_regex_new(P_IMAGE_WASSR, 0, 0, NULL);
     regp[IMAGE_IDENTICA] = g_regex_new(P_IMAGE_IDENTICA, 0, 0, NULL);
     regp[IMAGE_JISKO]    = g_regex_new(P_IMAGE_JISKO, 0, 0, NULL);
+    regp[IMAGE_FFEED]    = g_regex_new(P_IMAGE_FFEED, 0, 0, NULL);
     regp[SIZE_128_WASSR] = g_regex_new(P_SIZE_128_WASSR, 0, 0, NULL);
     regp[EXCESS_LF] = g_regex_new(P_EXCESS_LF, 0, 0, NULL);
+    regp[TRAIL_HASH] = g_regex_new(P_TRAIL_HASH, 0, 0, NULL);
 
     for(i = twitter_service; i < NUM_SERVICES; i++) {
         icon_hash[i] = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -1339,6 +1379,7 @@
     purple_prefs_add_string(OPT_SCREEN_NAME_WASSR, EMPTY);
     purple_prefs_add_string(OPT_SCREEN_NAME_IDENTICA, EMPTY);
     purple_prefs_add_string(OPT_SCREEN_NAME_JISKO, EMPTY);
+    purple_prefs_add_string(OPT_SCREEN_NAME_FFEED, EMPTY);
 
     purple_prefs_add_bool(OPT_SHOW_ICON, TRUE);
     purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE);
@@ -1353,6 +1394,7 @@
     purple_prefs_add_string(OPT_FILTER_WASSR, DEFAULT_LIST);
     purple_prefs_add_string(OPT_FILTER_IDENTICA, DEFAULT_LIST);
     purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST);
+    purple_prefs_add_string(OPT_FILTER_FFEED, DEFAULT_LIST);
 }
 
 PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info)