diff pidgin-twitter.c @ 240:405f8b880142

restored jisko support.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 07 Oct 2008 16:44:02 +0900
parents e3a24c98772d
children bd7478109727
line wrap: on
line diff
--- a/pidgin-twitter.c	Tue Oct 07 14:51:22 2008 +0900
+++ b/pidgin-twitter.c	Tue Oct 07 16:44:02 2008 +0900
@@ -24,8 +24,8 @@
 /***********/
 /* globals */
 /***********/
-#define NUM_REGPS 12
-#define NUM_SERVICES 3          /* twitter, wassr, identica. */
+#define NUM_REGPS 13
+#define NUM_SERVICES 4          /* twitter, wassr, identica, jisko. */
 static GRegex *regp[NUM_REGPS];
 static gboolean suppress_oops = FALSE;
 static GHashTable *icon_hash[NUM_SERVICES];
@@ -909,6 +909,9 @@
         case identica_service:
             format = RECIPIENT_FORMAT_IDENTICA;
             break;
+        case jisko_service:
+            format = RECIPIENT_FORMAT_JISKO;
+            break;
         default:
             twitter_debug("unknown service\n");
             break;
@@ -932,6 +935,9 @@
         case identica_service:
             format = SENDER_FORMAT_IDENTICA;
             break;
+        case jisko_service:
+            format = SENDER_FORMAT_JISKO;
+            break;
         default:
             twitter_debug("unknown service\n");
             break;
@@ -1069,6 +1075,9 @@
         case identica_service:
             screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA);
             break;
+        case jisko_service:
+            screen_name = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO);
+            break;
         }
 
         if (screen_name) {
@@ -1135,6 +1144,7 @@
     switch(service) {
     case twitter_service:
     case identica_service:
+    case jisko_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>",
@@ -1175,6 +1185,7 @@
     switch(service) {
     case twitter_service:
     case identica_service:
+    case jisko_service:
         count= gtk_text_buffer_get_char_count(textbuffer) -
             (gtk_text_iter_get_offset(end_pos) -
              gtk_text_iter_get_offset(start_pos));
@@ -1216,6 +1227,7 @@
         case twitter_service:
         case wassr_service:
         case identica_service:
+        case jisko_service:
             detach_from_conv(conv, NULL);
             break;
         default:
@@ -1333,6 +1345,7 @@
         case twitter_service:
         case wassr_service:
         case identica_service:
+        case jisko_service:
             attach_to_conv(conv, NULL);
             break;
         default:
@@ -1474,6 +1487,30 @@
     return is_identica_account(account, name);
 }
 
+static gboolean
+is_jisko_account(PurpleAccount *account, const char *name)
+{
+    const gchar *proto = purple_account_get_protocol_id(account);
+
+    if(g_strstr_len(name,  16, "bot@jisko.net") &&
+       g_strstr_len(proto, 11, "prpl-jabber")) {
+        return TRUE;
+    }
+
+    return FALSE;
+}
+
+static gboolean
+is_jisko_conv(PurpleConversation *conv)
+{
+    g_return_val_if_fail(conv != NULL, FALSE);
+
+    const char *name = purple_conversation_get_name(conv);
+    PurpleAccount *account = purple_conversation_get_account(conv);
+
+    return is_jisko_account(account, name);
+}
+
 static gint
 get_service_type_by_account(PurpleAccount *account, const char *sender)
 {
@@ -1488,6 +1525,8 @@
         service = wassr_service;
     else if(is_identica_account(account, sender))
         service = identica_service;
+    else if(is_jisko_account(account, sender))
+        service = jisko_service;
 
     return service;
 }
@@ -1505,6 +1544,8 @@
         service = wassr_service;
     else if(is_identica_conv(conv))
         service = identica_service;
+    else if(is_jisko_conv(conv))
+        service = jisko_service;
 
     return service;
 }
@@ -1531,6 +1572,7 @@
         break;
     case wassr_service:
     case identica_service:
+    case jisko_service:
         attach_to_conv(conv, NULL);
         break;
     default:
@@ -1567,6 +1609,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -1603,6 +1648,10 @@
         list = purple_prefs_get_string(OPT_FILTER_IDENTICA);
         screen_name = g_strdup_printf("@%s", purple_prefs_get_string(OPT_SCREEN_NAME_IDENTICA));
         break;
+    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));
+        break;
     }
     g_return_if_fail(list != NULL);
     if(strstr(list, DEFAULT_LIST))
@@ -1829,6 +1878,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
     }
@@ -1875,6 +1927,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -1933,6 +1988,11 @@
             icon_hash[identica_service], user_name);
         regp_id = IMAGE_IDENTICA;
     }
+    else if(service == jisko_service) {
+        data = (icon_data *)g_hash_table_lookup(
+            icon_hash[jisko_service], user_name);
+        regp_id = IMAGE_JISKO;
+    }
 
     if(!url_text) {
         if(data) {
@@ -2100,6 +2160,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
     }
@@ -2171,6 +2234,9 @@
         case identica_service:
             suffix = "identica";
             break;
+        case jisko_service:
+            suffix = "jisko";
+            break;
         default:
             twitter_debug("unknown service\n");
             break;
@@ -2235,6 +2301,10 @@
         suffix = "identica";
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        suffix = "jisko";
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -2324,6 +2394,9 @@
     case identica_service:
         url = g_strdup_printf("http://identi.ca/%s", user_name);
         break;
+    case jisko_service:
+        url = g_strdup_printf("http://jisko.net/%s", user_name);
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -2337,7 +2410,8 @@
         /* gotdata will be released in got_icon_cb */
         if(service == twitter_service ||
            service == wassr_service ||
-           service == identica_service) {
+           service == identica_service ||
+           service == jisko_service) {
             data->fetch_data = purple_util_fetch_url(url, TRUE, NULL, TRUE,
                                                      got_page_cb, gotdata);
         }
@@ -2369,6 +2443,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -2468,6 +2545,9 @@
     case identica_service:
         hash = icon_hash[identica_service];
         break;
+    case jisko_service:
+        hash = icon_hash[jisko_service];
+        break;
     default:
         twitter_debug("unknown service\n");
         break;
@@ -2611,10 +2691,11 @@
     regp[PSEUDO]    = g_regex_new(P_PSEUDO,  G_REGEX_RAW, 0, NULL);
     regp[USER]      = g_regex_new(P_USER, 0, 0, NULL);
     regp[CHANNEL_WASSR]  = g_regex_new(P_CHANNEL, 0, 0, NULL);
+    regp[TAG_IDENTICA]   = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL);
     regp[IMAGE_TWITTER]  = g_regex_new(P_IMAGE_TWITTER, 0, 0, NULL);
     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[TAG_IDENTICA]   = g_regex_new(P_TAG_IDENTICA, 0, 0, NULL);
+    regp[IMAGE_JISKO]    = g_regex_new(P_IMAGE_JISKO, 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);
 
@@ -2913,6 +2994,13 @@
     g_signal_connect(e, "changed",
                      G_CALLBACK(text_changed_cb), &e);
 
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "account_jisko"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_SCREEN_NAME_JISKO);
+    text = purple_prefs_get_string(OPT_SCREEN_NAME_JISKO);
+    gtk_entry_set_text(GTK_ENTRY(e), text);
+    g_signal_connect(e, "changed",
+                     G_CALLBACK(text_changed_cb), &e);
+
     e = GTK_WIDGET(gtk_builder_get_object (builder, "account_api"));
     g_object_set_data(G_OBJECT(e), "pref", OPT_API_BASE_POST);
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e),
@@ -3025,6 +3113,13 @@
     g_signal_connect(e, "changed",
                      G_CALLBACK(text_changed_cb), &e);
 
+    e = GTK_WIDGET(gtk_builder_get_object (builder, "filter_jisko"));
+    g_object_set_data(G_OBJECT(e), "pref", OPT_FILTER_JISKO);
+    text = purple_prefs_get_string(OPT_FILTER_JISKO);
+    gtk_entry_set_text(GTK_ENTRY(e), text);
+    g_signal_connect(e, "changed",
+                     G_CALLBACK(text_changed_cb), &e);
+
 
 
     /*************/
@@ -3238,7 +3333,7 @@
     PURPLE_PRIORITY_DEFAULT,    /**< priority	*/
     PLUGIN_ID,                  /**< id     */
     "Pidgin-Twitter",           /**< name	*/
-    "0.8.0b1",                  /**< version	*/
+    "0.8.0b2",                  /**< version	*/
     "provides useful features for twitter", /**  summary	*/
     "provides useful features for twitter", /**  desc	*/
     "Yoshiki Yazawa, mikanbako, \nKonosuke Watanabe, IWATA Ray, \nmojin, umq, \nthe pidging-twitter team",     /**< author	*/
@@ -3288,6 +3383,7 @@
     purple_prefs_add_string(OPT_PASSWORD_TWITTER, EMPTY);
     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_bool(OPT_SHOW_ICON, TRUE);
     purple_prefs_add_int(OPT_ICON_SIZE, DEFAULT_ICON_SIZE);
@@ -3301,6 +3397,7 @@
     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);
+    purple_prefs_add_string(OPT_FILTER_JISKO, DEFAULT_LIST);
 }
 
 PURPLE_INIT_PLUGIN(pidgin_twitter, init_plugin, info)