comparison pidgin-twitter.c @ 199:5ddf8bee768d

according to mojin, jisko limits each post to 140 bytes and requires at least 5 bytes. now letter counter for jisko takes account of this limit.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 11 Aug 2008 10:17:46 +0900
parents 85484ddf8823
children 9a2d727f39b4
comparison
equal deleted inserted replaced
198:85484ddf8823 199:5ddf8bee768d
1064 1064
1065 g_return_if_fail(gtkconv != NULL); 1065 g_return_if_fail(gtkconv != NULL);
1066 1066
1067 switch(service) { 1067 switch(service) {
1068 case twitter_service: 1068 case twitter_service:
1069 case jisko_service:
1070 count = gtk_text_buffer_get_char_count(textbuffer) + 1069 count = gtk_text_buffer_get_char_count(textbuffer) +
1071 (unsigned int)g_utf8_strlen(new_text, -1); 1070 (unsigned int)g_utf8_strlen(new_text, -1);
1072 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 1071 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1073 count <= 140 ? "black" : "red", count); 1072 count <= 140 ? "black" : "red", count);
1073 break;
1074 case wassr_service:
1075 count = gtk_text_buffer_get_char_count(textbuffer) +
1076 (unsigned int)g_utf8_strlen(new_text, -1);
1077 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1078 count <= 255 ? "black" : "red", count);
1074 break; 1079 break;
1075 case identica_service: 1080 case identica_service:
1076 gtk_text_buffer_get_start_iter(textbuffer, &head); 1081 gtk_text_buffer_get_start_iter(textbuffer, &head);
1077 gtk_text_buffer_get_end_iter(textbuffer, &tail); 1082 gtk_text_buffer_get_end_iter(textbuffer, &tail);
1078 1083
1081 bytes = strlen(text) + new_text_length; 1086 bytes = strlen(text) + new_text_length;
1082 g_free(text); 1087 g_free(text);
1083 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 1088 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1084 bytes <= 140 ? "black" : "red", bytes); 1089 bytes <= 140 ? "black" : "red", bytes);
1085 break; 1090 break;
1086 case wassr_service: 1091 case jisko_service:
1087 count = gtk_text_buffer_get_char_count(textbuffer) + 1092 gtk_text_buffer_get_start_iter(textbuffer, &head);
1088 (unsigned int)g_utf8_strlen(new_text, -1); 1093 gtk_text_buffer_get_end_iter(textbuffer, &tail);
1094
1095 text = gtk_text_buffer_get_text(textbuffer, &head, &tail, TRUE);
1096 if(text)
1097 bytes = strlen(text) + new_text_length;
1098 g_free(text);
1089 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 1099 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1090 count <= 255 ? "black" : "red", count); 1100 bytes >= 5 && bytes <= 140 ?
1101 "black" : "red", bytes);
1091 break; 1102 break;
1092 default: 1103 default:
1093 twitter_debug("unknown service\n"); 1104 twitter_debug("unknown service\n");
1094 break; 1105 break;
1095 } 1106 }
1118 1129
1119 g_return_if_fail(gtkconv != NULL); 1130 g_return_if_fail(gtkconv != NULL);
1120 1131
1121 switch(service) { 1132 switch(service) {
1122 case twitter_service: 1133 case twitter_service:
1123 case jisko_service:
1124 count= gtk_text_buffer_get_char_count(textbuffer) - 1134 count= gtk_text_buffer_get_char_count(textbuffer) -
1125 (gtk_text_iter_get_offset(end_pos) - 1135 (gtk_text_iter_get_offset(end_pos) -
1126 gtk_text_iter_get_offset(start_pos)); 1136 gtk_text_iter_get_offset(start_pos));
1127 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 1137 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1128 count <= 140 ? "black" : "red", count); 1138 count <= 140 ? "black" : "red", count);
1129 break;
1130 case identica_service:
1131 gtk_text_buffer_get_start_iter(textbuffer, &head);
1132 gtk_text_buffer_get_end_iter(textbuffer, &tail);
1133
1134 text = gtk_text_buffer_get_text(textbuffer,
1135 &head, &tail, TRUE);
1136 if(text)
1137 bytes = strlen(text);
1138 g_free(text);
1139
1140 text = gtk_text_buffer_get_text(textbuffer,
1141 start_pos, end_pos, TRUE);
1142 if(text)
1143 bytes -= strlen(text);
1144 g_free(text);
1145
1146 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1147 bytes <= 140 ? "black" : "red", bytes);
1148 break; 1139 break;
1149 case wassr_service: 1140 case wassr_service:
1150 count= gtk_text_buffer_get_char_count(textbuffer) - 1141 count= gtk_text_buffer_get_char_count(textbuffer) -
1151 (gtk_text_iter_get_offset(end_pos) - 1142 (gtk_text_iter_get_offset(end_pos) -
1152 gtk_text_iter_get_offset(start_pos)); 1143 gtk_text_iter_get_offset(start_pos));
1153 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 1144 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1154 count <= 255 ? "black" : "red", count); 1145 count <= 255 ? "black" : "red", count);
1146 break;
1147 case identica_service:
1148 gtk_text_buffer_get_start_iter(textbuffer, &head);
1149 gtk_text_buffer_get_end_iter(textbuffer, &tail);
1150
1151 text = gtk_text_buffer_get_text(textbuffer,
1152 &head, &tail, TRUE);
1153 if(text)
1154 bytes = strlen(text);
1155 g_free(text);
1156
1157 text = gtk_text_buffer_get_text(textbuffer,
1158 start_pos, end_pos, TRUE);
1159 if(text)
1160 bytes -= strlen(text);
1161 g_free(text);
1162
1163 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1164 bytes <= 140 ? "black" : "red", bytes);
1165 break;
1166 case jisko_service:
1167 gtk_text_buffer_get_start_iter(textbuffer, &head);
1168 gtk_text_buffer_get_end_iter(textbuffer, &tail);
1169
1170 text = gtk_text_buffer_get_text(textbuffer,
1171 &head, &tail, TRUE);
1172 if(text)
1173 bytes = strlen(text);
1174 g_free(text);
1175
1176 text = gtk_text_buffer_get_text(textbuffer,
1177 start_pos, end_pos, TRUE);
1178 if(text)
1179 bytes -= strlen(text);
1180 g_free(text);
1181
1182 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
1183 bytes >= 5 && bytes <= 140 ?
1184 "black" : "red", bytes);
1155 break; 1185 break;
1156 default: 1186 default:
1157 twitter_debug("unknown service\n"); 1187 twitter_debug("unknown service\n");
1158 break; 1188 break;
1159 } 1189 }