| 61 #include "config.h" |
62 #include "config.h" |
| 62 |
63 |
| 63 static void finch_write_common(PurpleConversation *conv, const char *who, |
64 static void finch_write_common(PurpleConversation *conv, const char *who, |
| 64 const char *message, PurpleMessageFlags flags, time_t mtime); |
65 const char *message, PurpleMessageFlags flags, time_t mtime); |
| 65 static void generate_send_to_menu(FinchConv *ggc); |
66 static void generate_send_to_menu(FinchConv *ggc); |
| |
67 |
| |
68 static int color_message_receive; |
| |
69 static int color_message_send; |
| |
70 static int color_message_highlight; |
| |
71 static int color_message_action; |
| |
72 static int color_timestamp; |
| 66 |
73 |
| 67 static PurpleBlistNode * |
74 static PurpleBlistNode * |
| 68 get_conversation_blist_node(PurpleConversation *conv) |
75 get_conversation_blist_node(PurpleConversation *conv) |
| 69 { |
76 { |
| 70 PurpleBlistNode *node = NULL; |
77 PurpleBlistNode *node = NULL; |
| 751 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), "\n", GNT_TEXT_FLAG_NORMAL); |
758 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), "\n", GNT_TEXT_FLAG_NORMAL); |
| 752 |
759 |
| 753 /* Unnecessary to print the timestamp for delayed message */ |
760 /* Unnecessary to print the timestamp for delayed message */ |
| 754 if (purple_prefs_get_bool("/finch/conversations/timestamps")) |
761 if (purple_prefs_get_bool("/finch/conversations/timestamps")) |
| 755 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
762 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| 756 purple_utf8_strftime("(%H:%M:%S) ", localtime(&mtime)), GNT_TEXT_FLAG_DIM); |
763 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)), gnt_color_pair(color_timestamp)); |
| |
764 |
| |
765 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), " ", GNT_TEXT_FLAG_NORMAL); |
| 757 |
766 |
| 758 if (flags & PURPLE_MESSAGE_AUTO_RESP) |
767 if (flags & PURPLE_MESSAGE_AUTO_RESP) |
| 759 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
768 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| 760 _("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD); |
769 _("<AUTO-REPLY> "), GNT_TEXT_FLAG_BOLD); |
| 761 |
770 |
| 762 if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) && |
771 if (who && *who && (flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)) && |
| 763 !(flags & PURPLE_MESSAGE_NOTIFY)) |
772 !(flags & PURPLE_MESSAGE_NOTIFY)) |
| 764 { |
773 { |
| 765 char * name = NULL; |
774 char * name = NULL; |
| 766 |
775 |
| 767 if (purple_message_meify((char*)message, -1)) |
776 if (purple_message_meify((char*)message, -1)) { |
| 768 name = g_strdup_printf("*** %s ", who); |
777 name = g_strdup_printf("*** %s", who); |
| 769 else |
778 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| 770 name = g_strdup_printf("%s: ", who); |
779 name, gnt_color_pair(color_message_action)); |
| 771 |
780 } else { |
| 772 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
781 name = g_strdup_printf("%s", who); |
| 773 name, GNT_TEXT_FLAG_BOLD); |
782 if (flags & PURPLE_MESSAGE_SEND) |
| |
783 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| |
784 name, gnt_color_pair(color_message_send)); |
| |
785 else |
| |
786 if (flags & PURPLE_MESSAGE_NICK) { |
| |
787 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| |
788 name, gnt_color_pair(color_message_highlight)); |
| |
789 } else { |
| |
790 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| |
791 name, gnt_color_pair(color_message_receive)); |
| |
792 } |
| |
793 } |
| |
794 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), ": ", GNT_TEXT_FLAG_NORMAL); |
| 774 g_free(name); |
795 g_free(name); |
| 775 } |
796 } else |
| 776 else |
|
| 777 fl = GNT_TEXT_FLAG_DIM; |
797 fl = GNT_TEXT_FLAG_DIM; |
| 778 |
798 |
| 779 if (flags & PURPLE_MESSAGE_ERROR) |
799 if (flags & PURPLE_MESSAGE_ERROR) |
| 780 fl |= GNT_TEXT_FLAG_BOLD; |
800 fl |= GNT_TEXT_FLAG_BOLD; |
| 781 if (flags & PURPLE_MESSAGE_NICK) |
|
| 782 fl |= GNT_TEXT_FLAG_UNDERLINE; |
|
| 783 |
801 |
| 784 /* XXX: Remove this workaround when textview can parse messages. */ |
802 /* XXX: Remove this workaround when textview can parse messages. */ |
| 785 newline = purple_strdup_withhtml(message); |
803 newline = purple_strdup_withhtml(message); |
| 786 strip = purple_markup_strip_html(newline); |
804 strip = purple_markup_strip_html(newline); |
| 787 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
805 gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(ggconv->tv), |
| 1124 return PURPLE_CMD_STATUS_OK; |
1142 return PURPLE_CMD_STATUS_OK; |
| 1125 } |
1143 } |
| 1126 |
1144 |
| 1127 void finch_conversation_init() |
1145 void finch_conversation_init() |
| 1128 { |
1146 { |
| |
1147 color_message_send = gnt_style_get_color(NULL, "color-message-sent"); |
| |
1148 if (!color_message_send) |
| |
1149 color_message_send = gnt_color_add_pair(COLOR_CYAN, -1); |
| |
1150 color_message_receive = gnt_style_get_color(NULL, "color-message-received"); |
| |
1151 if (!color_message_receive) |
| |
1152 color_message_receive = gnt_color_add_pair(COLOR_RED, -1); |
| |
1153 color_message_highlight = gnt_style_get_color(NULL, "color-message-highlight"); |
| |
1154 if (!color_message_highlight) |
| |
1155 color_message_highlight = gnt_color_add_pair(COLOR_GREEN, -1); |
| |
1156 color_timestamp = gnt_style_get_color(NULL, "color-timestamp"); |
| |
1157 if (!color_timestamp) |
| |
1158 color_timestamp = gnt_color_add_pair(COLOR_BLUE, -1); |
| |
1159 color_message_action = gnt_style_get_color(NULL, "color-message-action"); |
| |
1160 if (!color_message_action) |
| |
1161 color_message_action = gnt_color_add_pair(COLOR_YELLOW, -1); |
| 1129 purple_prefs_add_none(PREF_ROOT); |
1162 purple_prefs_add_none(PREF_ROOT); |
| 1130 purple_prefs_add_none(PREF_ROOT "/size"); |
1163 purple_prefs_add_none(PREF_ROOT "/size"); |
| 1131 purple_prefs_add_int(PREF_ROOT "/size/width", 70); |
1164 purple_prefs_add_int(PREF_ROOT "/size/width", 70); |
| 1132 purple_prefs_add_int(PREF_ROOT "/size/height", 20); |
1165 purple_prefs_add_int(PREF_ROOT "/size/height", 20); |
| 1133 purple_prefs_add_none(PREF_ROOT "/position"); |
1166 purple_prefs_add_none(PREF_ROOT "/position"); |