comparison pidgin-twitter.c @ 102:55c466028d48

changed letter counter for identi.ca to count in byte.
author Yoshiki Yazawa <yaz@honeyplnaet.jp>
date Sun, 13 Jul 2008 18:53:45 +0900
parents ceabb8099bf3
children 8de54d420328
comparison
equal deleted inserted replaced
101:ceabb8099bf3 102:55c466028d48
704 PurpleConversation *conv = (PurpleConversation *)user_data; 704 PurpleConversation *conv = (PurpleConversation *)user_data;
705 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); 705 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
706 706
707 GtkWidget *box, *counter = NULL; 707 GtkWidget *box, *counter = NULL;
708 gchar *markup = NULL; 708 gchar *markup = NULL;
709 gint service = get_service_type(conv);
709 guint count; 710 guint count;
710 711 gchar *text = NULL;
711 gint service = get_service_type(conv); 712 GtkTextIter head, tail;
713 guint bytes = 0;
712 714
713 g_return_if_fail(gtkconv != NULL); 715 g_return_if_fail(gtkconv != NULL);
714
715 count = gtk_text_buffer_get_char_count(textbuffer) +
716 (unsigned int)g_utf8_strlen(new_text, -1);
717 716
718 switch(service) { 717 switch(service) {
719 case twitter_service: 718 case twitter_service:
720 case identica_service: 719 count = gtk_text_buffer_get_char_count(textbuffer) +
720 (unsigned int)g_utf8_strlen(new_text, -1);
721 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 721 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
722 count <= 140 ? "black" : "red", count); 722 count <= 140 ? "black" : "red", count);
723 break; 723 break;
724 case identica_service:
725 gtk_text_buffer_get_start_iter(textbuffer, &head);
726 gtk_text_buffer_get_end_iter(textbuffer, &tail);
727
728 text = gtk_text_buffer_get_text(textbuffer, &head, &tail, TRUE);
729 if(text)
730 bytes = strlen(text) + new_text_length;
731 g_free(text);
732 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
733 bytes <= 140 ? "black" : "red", bytes);
734 break;
724 case wassr_service: 735 case wassr_service:
736 count = gtk_text_buffer_get_char_count(textbuffer) +
737 (unsigned int)g_utf8_strlen(new_text, -1);
725 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 738 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
726 count <= 255 ? "black" : "red", count); 739 count <= 255 ? "black" : "red", count);
727 break; 740 break;
728 default: 741 default:
729 twitter_debug("unknown service\n"); 742 twitter_debug("unknown service\n");
745 PurpleConversation *conv = (PurpleConversation *)user_data; 758 PurpleConversation *conv = (PurpleConversation *)user_data;
746 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); 759 PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
747 GtkWidget *box, *counter = NULL; 760 GtkWidget *box, *counter = NULL;
748 gchar *markup = NULL; 761 gchar *markup = NULL;
749 gint service = get_service_type(conv); 762 gint service = get_service_type(conv);
763 guint count = 0;
764 gchar *text = NULL;
765 GtkTextIter head, tail;
766 guint bytes = 0;
750 767
751 g_return_if_fail(gtkconv != NULL); 768 g_return_if_fail(gtkconv != NULL);
752
753 guint count = gtk_text_buffer_get_char_count(textbuffer) -
754 (gtk_text_iter_get_offset(end_pos) -
755 gtk_text_iter_get_offset(start_pos));
756 769
757 switch(service) { 770 switch(service) {
758 case twitter_service: 771 case twitter_service:
759 case identica_service: 772 count= gtk_text_buffer_get_char_count(textbuffer) -
773 (gtk_text_iter_get_offset(end_pos) -
774 gtk_text_iter_get_offset(start_pos));
760 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 775 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
761 count <= 140 ? "black" : "red", count); 776 count <= 140 ? "black" : "red", count);
762 break; 777 break;
778 case identica_service:
779 gtk_text_buffer_get_start_iter(textbuffer, &head);
780 gtk_text_buffer_get_end_iter(textbuffer, &tail);
781
782 text = gtk_text_buffer_get_text(textbuffer,
783 &head, &tail, TRUE);
784 if(text)
785 bytes = strlen(text);
786 g_free(text);
787
788 text = gtk_text_buffer_get_text(textbuffer,
789 start_pos, end_pos, TRUE);
790 if(text)
791 bytes -= strlen(text);
792 g_free(text);
793
794 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
795 bytes <= 140 ? "black" : "red", bytes);
796 break;
763 case wassr_service: 797 case wassr_service:
798 count= gtk_text_buffer_get_char_count(textbuffer) -
799 (gtk_text_iter_get_offset(end_pos) -
800 gtk_text_iter_get_offset(start_pos));
764 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>", 801 markup = g_markup_printf_escaped("<span color=\"%s\">%u</span>",
765 count <= 255 ? "black" : "red", count); 802 count <= 255 ? "black" : "red", count);
766 break; 803 break;
767 default: 804 default:
768 twitter_debug("unknown service\n"); 805 twitter_debug("unknown service\n");