libpurple/protocols/gg/message-prpl.c

Wed, 14 Dec 2022 01:53:47 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 14 Dec 2022 01:53:47 -0600
changeset 41979
31c32b8d4bef
parent 41091
fa2d6b0a4912
child 42048
8d4a5f33faa8
permissions
-rw-r--r--

Replace all of the deprecated account api in Gadu Gadu

Testing Done:
Touched all the files and compiled and verified there were not deprecation warnings.

Reviewed at https://reviews.imfreedom.org/r/2138/

35358
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
1 /* purple
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
2 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
5 * source distribution.
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
6 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
7 * Component written by Tomek Wasilczyk (http://www.wasilczyk.pl).
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
8 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
9 * This file is dual-licensed under the GPL2+ and the X11 (MIT) licences.
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
10 * As a recipient of this file you may choose, which license to receive the
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
11 * code under. As a contributor, you have to ensure the new code is
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
12 * compatible with both.
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
13 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
14 * This program is free software; you can redistribute it and/or modify
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
15 * it under the terms of the GNU General Public License as published by
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
16 * the Free Software Foundation; either version 2 of the License, or
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
17 * (at your option) any later version.
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
18 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
19 * This program is distributed in the hope that it will be useful,
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
22 * GNU General Public License for more details.
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
23 *
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
24 * You should have received a copy of the GNU General Public License
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
25 * along with this program; if not, write to the Free Software
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
26 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
7beae478c905 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35355
diff changeset
27 */
40441
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40358
diff changeset
28
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40358
diff changeset
29 #include <glib/gi18n-lib.h>
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40358
diff changeset
30
40523
9bcf96663cb9 Make gstreamer-1.0 a required dependency
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
31 #include <errno.h>
9bcf96663cb9 Make gstreamer-1.0 a required dependency
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
32
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
33 #include "message-prpl.h"
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
34
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
35 #include "gg.h"
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
36 #include "chat.h"
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
37 #include "utils.h"
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
38 #include "html.h"
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
39
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
40 #define GGP_GG10_DEFAULT_FORMAT "<span style=\"color:#000000; " \
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
41 "font-family:'MS Shell Dlg 2'; font-size:9pt; \">"
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
42 #define GGP_GG10_DEFAULT_FORMAT_REPLACEMENT "<span>"
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
43 #define GGP_GG11_FORCE_COMPAT FALSE
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
44
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
45 typedef struct
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
46 {
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
47 enum
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
48 {
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
49 GGP_MESSAGE_GOT_TYPE_IM,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
50 GGP_MESSAGE_GOT_TYPE_CHAT,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
51 GGP_MESSAGE_GOT_TYPE_MULTILOGON
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
52 } type;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
53
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
54 uin_t user;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
55 gchar *text;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
56 time_t time;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
57 uint64_t chat_id;
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
58
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
59 PurpleConnection *gc;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
60 } ggp_message_got_data;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
61
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
62 typedef struct
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
63 {
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
64 GRegex *re_html_tag;
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
65 GRegex *re_gg_img;
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
66 } ggp_message_global_data;
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
67
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
68 static ggp_message_global_data global_data;
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
69
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
70 struct _ggp_message_session_data
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
71 {
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
72 };
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
73
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
74 typedef struct
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
75 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
76 int size;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
77 gchar *face;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
78 int color, bgcolor;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
79 gboolean b, i, u, s;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
80 } ggp_font;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
81
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
82 static ggp_font * ggp_font_new(void);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
83 static ggp_font * ggp_font_clone(ggp_font *font);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
84 static void ggp_font_free(gpointer font);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
85
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
86 static PurpleConversation * ggp_message_get_conv(PurpleConnection *gc,
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
87 uin_t uin);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
88 static void ggp_message_got_data_free(ggp_message_got_data *msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
89 static void ggp_message_got_display(PurpleConnection *gc,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
90 ggp_message_got_data *msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
91 static void ggp_message_format_from_gg(ggp_message_got_data *msg,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
92 const gchar *text);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
93
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
94 /**************/
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
95
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
96 void ggp_message_setup_global(void)
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
97 {
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
98 global_data.re_html_tag = g_regex_new(
34413
a578366cd35e Gadu-Gadu: fix sending links
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34370
diff changeset
99 "<(/)?([a-zA-Z]+)( [^>]+)?>",
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
100 G_REGEX_OPTIMIZE, 0, NULL);
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
101 global_data.re_gg_img = g_regex_new(
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
102 "<img name=\"([0-9a-fA-F]+)\"/?>",
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
103 G_REGEX_OPTIMIZE, 0, NULL);
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
104 }
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
105
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
106 void ggp_message_cleanup_global(void)
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
107 {
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
108 g_regex_unref(global_data.re_html_tag);
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
109 g_regex_unref(global_data.re_gg_img);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
110 }
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
111
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
112 static inline ggp_message_session_data *
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
113 ggp_message_get_sdata(PurpleConnection *gc)
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
114 {
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
115 GGPInfo *accdata = purple_connection_get_protocol_data(gc);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
116 return accdata->message_data;
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
117 }
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
118
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
119 void ggp_message_setup(PurpleConnection *gc)
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
120 {
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
121 GGPInfo *accdata = purple_connection_get_protocol_data(gc);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
122 ggp_message_session_data *sdata = g_new0(ggp_message_session_data, 1);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
123
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
124 accdata->message_data = sdata;
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
125 }
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
126
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
127 void ggp_message_cleanup(PurpleConnection *gc)
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
128 {
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
129 ggp_message_session_data *sdata = ggp_message_get_sdata(gc);
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
130
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
131 g_free(sdata);
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
132 }
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
133
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
134 static ggp_font * ggp_font_new(void)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
135 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
136 ggp_font *font;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
137
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
138 font = g_new0(ggp_font, 1);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
139 font->color = -1;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
140 font->bgcolor = -1;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
141
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
142 return font;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
143 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
144
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
145 static ggp_font * ggp_font_clone(ggp_font * font)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
146 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
147 ggp_font *clone = g_new0(ggp_font, 1);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
148
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
149 *clone = *font;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
150 clone->face = g_strdup(font->face);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
151
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
152 return clone;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
153 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
154
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
155 static void ggp_font_free(gpointer _font)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
156 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
157 ggp_font *font = _font;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
158
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
159 g_free(font->face);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
160 g_free(font);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
161 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
162
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
163 /**/
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
164
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
165 static PurpleConversation * ggp_message_get_conv(PurpleConnection *gc,
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
166 uin_t uin)
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
167 {
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
168 PurpleAccount *account = purple_connection_get_account(gc);
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
169 PurpleConversation *im;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
170 PurpleConversationManager *manager;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
171 const gchar *who = ggp_uin_to_str(uin);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
172
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
173 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
174 im = purple_conversation_manager_find_im(manager, account, who);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
175 if (im) {
34946
76aa2e0f8701 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34437
diff changeset
176 return im;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
177 }
34946
76aa2e0f8701 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34437
diff changeset
178 im = purple_im_conversation_new(account, who);
76aa2e0f8701 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34437
diff changeset
179 return im;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
180 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
181
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
182 static void ggp_message_got_data_free(ggp_message_got_data *msg)
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
183 {
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
184 g_free(msg->text);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
185 g_free(msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
186 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
187
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
188 void ggp_message_got(PurpleConnection *gc, const struct gg_event_msg *ev)
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
189 {
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
190 ggp_message_got_data *msg = g_new0(ggp_message_got_data, 1);
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
191
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
192 msg->gc = gc;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
193 msg->time = ev->time;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
194 msg->user = ev->sender;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
195
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
196 if (ev->chat_id != 0) {
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
197 msg->type = GGP_MESSAGE_GOT_TYPE_CHAT;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
198 msg->chat_id = ev->chat_id;
36124
3dcb9b9b7c11 Drop libgadu legacy API compatibility code
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
199 } else {
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
200 msg->type = GGP_MESSAGE_GOT_TYPE_IM;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
201 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
202
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
203 ggp_message_format_from_gg(msg, ev->xhtml_message);
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
204
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
205 ggp_message_got_display(gc, msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
206 ggp_message_got_data_free(msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
207 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
208
34360
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
209 void ggp_message_got_multilogon(PurpleConnection *gc,
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
210 const struct gg_event_msg *ev)
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
211 {
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
212 ggp_message_got_data *msg = g_new0(ggp_message_got_data, 1);
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
213
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
214 msg->gc = gc;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
215 msg->time = ev->time;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
216 msg->user = ev->sender; /* not really a sender*/
34368
b5341ea06a72 Gadu-Gadu: fix conferences used together with multilogon
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34365
diff changeset
217
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
218 if (ev->chat_id != 0) {
34368
b5341ea06a72 Gadu-Gadu: fix conferences used together with multilogon
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34365
diff changeset
219 msg->type = GGP_MESSAGE_GOT_TYPE_CHAT;
b5341ea06a72 Gadu-Gadu: fix conferences used together with multilogon
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34365
diff changeset
220 msg->chat_id = ev->chat_id;
36124
3dcb9b9b7c11 Drop libgadu legacy API compatibility code
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
221 } else {
34368
b5341ea06a72 Gadu-Gadu: fix conferences used together with multilogon
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34365
diff changeset
222 msg->type = GGP_MESSAGE_GOT_TYPE_MULTILOGON;
b5341ea06a72 Gadu-Gadu: fix conferences used together with multilogon
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34365
diff changeset
223 }
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
224
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
225 ggp_message_format_from_gg(msg, ev->xhtml_message);
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
226
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
227 ggp_message_got_display(gc, msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
228 ggp_message_got_data_free(msg);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
229 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
230
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
231 static void ggp_message_got_display(PurpleConnection *gc,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
232 ggp_message_got_data *msg)
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
233 {
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
234 if (msg->type == GGP_MESSAGE_GOT_TYPE_IM) {
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35361
diff changeset
235 purple_serv_got_im(gc, ggp_uin_to_str(msg->user), msg->text,
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
236 PURPLE_MESSAGE_RECV, msg->time);
36124
3dcb9b9b7c11 Drop libgadu legacy API compatibility code
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
237 } else if (msg->type == GGP_MESSAGE_GOT_TYPE_CHAT) {
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
238 ggp_chat_got_message(gc, msg->chat_id, msg->text, msg->time,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
239 msg->user);
36124
3dcb9b9b7c11 Drop libgadu legacy API compatibility code
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
240 } else if (msg->type == GGP_MESSAGE_GOT_TYPE_MULTILOGON) {
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
241 GDateTime *dt = NULL;
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
242 PurpleAccount *account = NULL;
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41091
diff changeset
243 PurpleContactInfo *info = NULL;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
244 PurpleConversation *im = ggp_message_get_conv(gc, msg->user);
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
245 PurpleMessage *pmsg;
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
246 const gchar *me = NULL;
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
247
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
248 account = purple_connection_get_account(gc);
41979
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41091
diff changeset
249 info = PURPLE_CONTACT_INFO(account);
31c32b8d4bef Replace all of the deprecated account api in Gadu Gadu
Gary Kramlich <grim@reaperworld.com>
parents: 41091
diff changeset
250 me = purple_contact_info_get_name_for_display(info);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
251
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
252 pmsg = purple_message_new_outgoing(me, NULL, msg->text, 0);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
253
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
254 dt = g_date_time_new_from_unix_local((gint64)msg->time);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
255 purple_message_set_timestamp(pmsg, dt);
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
256 g_date_time_unref(dt);
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
257
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
258 purple_conversation_write_message(im, pmsg);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
259
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
260 g_object_unref(G_OBJECT(pmsg));
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
261 } else {
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
262 purple_debug_error("gg", "ggp_message_got_display: "
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
263 "unexpected message type: %d\n", msg->type);
40541
9ceb8d25d4d9 PurpleMessage cleanups from hell
Gary Kramlich <grim@reaperworld.com>
parents: 40538
diff changeset
264 }
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
265 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
266
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
267 static gboolean ggp_message_format_from_gg_found_img(const GMatchInfo *info,
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
268 GString *res, gpointer data)
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
269 {
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
270 ggp_message_got_data *msg = data;
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
271 gchar *name, *replacement;
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
272 int64_t id;
35820
9b4fccc8ceac GG: reference images, not their ids
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
273 PurpleImage *image;
35843
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
274 guint image_id;
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
275
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
276 name = g_match_info_fetch(info, 1);
34418
c27e31267e8d Gadu-Gadu: fix compilation on 64-bit targets
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34413
diff changeset
277 if (sscanf(name, "%" G_GINT64_MODIFIER "x", &id) != 1)
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
278 id = 0;
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
279 g_free(name);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
280 if (!id) {
35843
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
281 /* TODO: stock broken image? */
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
282 g_string_append_printf(res, "[%s]", _("broken image"));
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
283 return FALSE;
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
284 }
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
285
35843
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
286 image = ggp_image_request(msg->gc, msg->user, id);
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
287 if (!image) {
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
288 purple_debug_warning("gg", "ggp_message_format_from_gg_"
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
289 "found_img: couldn't request image");
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
290 g_string_append_printf(res, "[%s]", _("broken image"));
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
291 return FALSE;
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
292 }
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
293
35843
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
294 image_id = purple_image_store_add_weak(image);
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
295 replacement = g_strdup_printf("<img src=\""
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
296 PURPLE_IMAGE_STORE_PROTOCOL "%u\">", image_id);
34362
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
297 g_string_append(res, replacement);
758e72362ca4 Gadu-Gadu: code polishing
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34361
diff changeset
298 g_free(replacement);
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
299
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
300 return FALSE;
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
301 }
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
302
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
303 static void ggp_message_format_from_gg(ggp_message_got_data *msg,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
304 const gchar *text)
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
305 {
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
306 gchar *text_new, *tmp;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
307
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
308 if (text == NULL) {
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
309 msg->text = g_strdup("");
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
310 return;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
311 }
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
312
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
313 text_new = g_strdup(text);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
314 purple_str_strip_char(text_new, '\r');
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
315
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
316 tmp = text_new;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
317 text_new = purple_strreplace(text_new, GGP_GG10_DEFAULT_FORMAT,
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
318 GGP_GG10_DEFAULT_FORMAT_REPLACEMENT);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
319 g_free(tmp);
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
320
34361
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
321 tmp = text_new;
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
322 text_new = g_regex_replace_eval(global_data.re_gg_img, text_new, -1, 0,
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
323 0, ggp_message_format_from_gg_found_img, msg, NULL);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
324 g_free(tmp);
ddcc82637afa Gadu-Gadu: incoming images works again
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34360
diff changeset
325
34356
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
326 msg->text = text_new;
5d59fd4d5b2d Gadu-Gadu: reimplementation of receiving messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
diff changeset
327 }
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
328
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
329 gchar *
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
330 ggp_message_format_to_gg(PurpleConversation *conv, const gchar *text)
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
331 {
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
332 gchar *text_new, *tmp;
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
333 GString *reformatted_text = NULL;
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
334 GMatchInfo *match;
34430
15639e15839e Gadu-Gadu: fix -Wsign-compare errors
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34418
diff changeset
335 guint pos = 0;
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
336 GString *pending_objects = NULL;
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
337 GList *font_stack = NULL;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
338 static int html_sizes_pt[7] = { 7, 8, 9, 10, 12, 14, 16 };
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
339
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
340 ggp_font *font_new, *font_current, *font_base;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
341 gboolean font_changed = FALSE;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
342 gboolean in_any_tag = FALSE;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
343
35843
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
344 if (purple_debug_is_verbose())
b5d03ca6a680 Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35831
diff changeset
345 purple_debug_info("gg", "ggp formatting text: [%s]", text);
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
346
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
347 /* default font */
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
348 font_base = ggp_font_new();
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
349 font_current = ggp_font_new();
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
350 font_new = ggp_font_new();
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
351
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
352 /* GG11 doesn't use nbsp, it just print spaces */
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
353 text_new = purple_strreplace(text, "&nbsp;", " ");
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
354
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
355 /* add end-of-message tag */
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
356 if (strstr(text_new, "<eom>") != NULL) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
357 tmp = text_new;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
358 text_new = purple_strreplace(text_new, "<eom>", "");
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
359 g_free(tmp);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
360 purple_debug_warning("gg", "ggp_message_format_to_gg: "
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
361 "unexpected <eom> tag\n");
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
362 }
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
363 tmp = text_new;
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
364 text_new = g_strdup_printf("%s<eom></eom>", text_new);
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
365 g_free(tmp);
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
366
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
367 reformatted_text = g_string_new(NULL);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
368 pending_objects = g_string_new(NULL);
34359
7cf367cc1141 Gadu-Gadu: compile regular expressions only once per plugin load
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34358
diff changeset
369 g_regex_match(global_data.re_html_tag, text_new, 0, &match);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
370 while (g_match_info_matches(match)) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
371 int m_start, m_end, m_pos;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
372 gboolean tag_close;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
373 gchar *tag_str, *attribs_str;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
374 ggp_html_tag tag;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
375 gboolean text_before;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
376
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
377 /* reading tag and its contents */
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
378 g_match_info_fetch_pos(match, 0, &m_start, &m_end);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
379 g_assert(m_start >= 0 && m_end >= 0);
34430
15639e15839e Gadu-Gadu: fix -Wsign-compare errors
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34418
diff changeset
380 text_before = ((guint)m_start > pos);
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
381 g_match_info_fetch_pos(match, 1, &m_pos, NULL);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
382 tag_close = (m_pos >= 0);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
383 tag_str = g_match_info_fetch(match, 2);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
384 tag = ggp_html_parse_tag(tag_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
385 attribs_str = g_match_info_fetch(match, 3);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
386 g_match_info_next(match, NULL);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
387
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
388 if (tag == GGP_HTML_TAG_UNKNOWN) {
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
389 purple_debug_warning(
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
390 "gg",
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
391 "ggp_message_format_to_gg: unknown tag %s",
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
392 tag_str);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
393 }
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
394
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
395 /* closing *all* formatting-related tags (GG11 weirdness)
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
396 * and adding pending objects */
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
397 if ((text_before && (font_changed || pending_objects->len > 0)) ||
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
398 (tag == GGP_HTML_TAG_EOM && tag_close)) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
399 font_changed = FALSE;
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
400 if (in_any_tag) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
401 in_any_tag = FALSE;
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
402 if (font_current->s && !GGP_GG11_FORCE_COMPAT) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
403 g_string_append(reformatted_text, "</s>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
404 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
405 if (font_current->u) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
406 g_string_append(reformatted_text, "</u>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
407 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
408 if (font_current->i) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
409 g_string_append(reformatted_text, "</i>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
410 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
411 if (font_current->b) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
412 g_string_append(reformatted_text, "</b>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
413 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
414 g_string_append(reformatted_text, "</span>");
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
415 }
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
416 if (pending_objects->len > 0) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
417 g_string_append(reformatted_text, pending_objects->str);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
418 g_string_truncate(pending_objects, 0);
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
419 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
420 }
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
421
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
422 /* opening formatting-related tags again */
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
423 if (text_before && !in_any_tag) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
424 gboolean has_size = (font_new->size > 0 &&
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
425 font_new->size <= 7 && font_new->size != 3);
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
426 gboolean has_style =
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
427 has_size || font_new->face ||
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
428 (font_new->bgcolor >= 0 && !GGP_GG11_FORCE_COMPAT) ||
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
429 font_new->color >= 0;
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
430
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
431 if (has_style) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
432 g_string_append(reformatted_text, "<span style=\"");
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
433
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
434 if (has_size) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
435 g_string_append_printf(reformatted_text, "font-size:%dpt;",
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
436 html_sizes_pt[font_new->size - 1]);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
437 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
438 if (font_new->face) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
439 g_string_append_printf(reformatted_text, "font-family:%s;",
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
440 font_new->face);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
441 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
442 if (font_new->bgcolor >= 0 && !GGP_GG11_FORCE_COMPAT) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
443 g_string_append_printf(reformatted_text,
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
444 "background-color:#%06x;",
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
445 font_new->bgcolor);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
446 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
447 if (font_new->color >= 0) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
448 g_string_append_printf(reformatted_text, "color:#%06x;",
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
449 font_new->color);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
450 }
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
451
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
452 g_string_append(reformatted_text, "\">");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
453 } else {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
454 g_string_append(reformatted_text, "<span>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
455 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
456
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
457 if (font_new->b) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
458 g_string_append(reformatted_text, "<b>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
459 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
460 if (font_new->i) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
461 g_string_append(reformatted_text, "<i>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
462 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
463 if (font_new->u) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
464 g_string_append(reformatted_text, "<u>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
465 }
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
466 if (font_new->s && !GGP_GG11_FORCE_COMPAT) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
467 g_string_append(reformatted_text, "<s>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
468 }
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
469
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
470 ggp_font_free(font_current);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
471 font_current = font_new;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
472 font_new = ggp_font_clone(font_current);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
473
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
474 in_any_tag = TRUE;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
475 }
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
476 if (text_before) {
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
477 g_string_append_len(reformatted_text, text_new + pos,
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
478 m_start - pos);
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
479 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
480
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
481 /* set formatting of a following text */
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
482 if (tag == GGP_HTML_TAG_B) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
483 font_changed |= (font_new->b != !tag_close);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
484 font_new->b = !tag_close;
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
485 } else if (tag == GGP_HTML_TAG_I) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
486 font_changed |= (font_new->i != !tag_close);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
487 font_new->i = !tag_close;
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
488 } else if (tag == GGP_HTML_TAG_U) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
489 font_changed |= (font_new->u != !tag_close);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
490 font_new->u = !tag_close;
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
491 } else if (tag == GGP_HTML_TAG_S) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
492 font_changed |= (font_new->s != !tag_close);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
493 font_new->s = !tag_close;
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
494 } else if (tag == GGP_HTML_TAG_IMG && !tag_close) {
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
495 GHashTable *attribs = ggp_html_tag_attribs(attribs_str);
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
496 gchar *val = NULL;
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
497 uint64_t id;
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
498 ggp_image_prepare_result res = -1;
35820
9b4fccc8ceac GG: reference images, not their ids
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
499 PurpleImage *image = NULL;
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
500
35831
86b7a6d3d267 PurpleImage: use purple_image_store_get_from_uri where possible
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35825
diff changeset
501 val = g_hash_table_lookup(attribs, "src");
86b7a6d3d267 PurpleImage: use purple_image_store_get_from_uri where possible
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35825
diff changeset
502 if (val)
86b7a6d3d267 PurpleImage: use purple_image_store_get_from_uri where possible
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35825
diff changeset
503 image = purple_image_store_get_from_uri(val);
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
504
35825
4c1e8623b7c7 Fix warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35820
diff changeset
505 if (image != NULL)
35820
9b4fccc8ceac GG: reference images, not their ids
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35819
diff changeset
506 res = ggp_image_prepare(conv, image, &id);
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
507
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
508 if (res == GGP_IMAGE_PREPARE_OK) {
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
509 g_string_append_printf(pending_objects,
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
510 "<img name=\"" GGP_IMAGE_ID_FORMAT "\">",
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
511 id);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
512 } else if (res == GGP_IMAGE_PREPARE_TOO_BIG) {
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
513 purple_conversation_write_system_message(conv,
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
514 _("Image is too large, please try "
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
515 "smaller one."), PURPLE_MESSAGE_ERROR);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
516 } else {
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
517 purple_conversation_write_system_message(conv,
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
518 _("Image cannot be sent."),
36089
c035b9a63457 Use purple_conversation_write_system_message where appropriate
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
519 PURPLE_MESSAGE_ERROR);
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
520 }
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
521
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
522 g_hash_table_destroy(attribs);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
523 } else if (tag == GGP_HTML_TAG_FONT && !tag_close) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
524 GHashTable *attribs = ggp_html_tag_attribs(attribs_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
525 gchar *val = NULL;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
526
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
527 font_stack = g_list_prepend(font_stack,
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
528 ggp_font_clone(font_new));
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
529
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
530 if ((val = g_hash_table_lookup(attribs, "size")) != NULL
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
531 && val[0] >= '1' && val[0] <= '7' &&
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
532 val[1] == '\0')
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
533 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
534 int size = val[0] - '0';
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
535 font_changed |= (font_new->size != size);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
536 font_new->size = size;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
537 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
538
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
539 if ((val = g_hash_table_lookup(attribs, "face"))
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
540 != NULL)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
541 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
542 font_changed |=
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
543 (g_strcmp0(font_new->face, val) != 0);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
544 g_free(font_new->face);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
545 font_new->face = g_strdup(val);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
546 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
547
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
548 if ((val = g_hash_table_lookup(attribs, "color"))
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
549 != NULL && val[0] == '#' && strlen(val) == 7)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
550 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
551 int color = ggp_html_decode_color(val);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
552 font_changed |= (font_new->color != color);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
553 font_new->color = color;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
554 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
555
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
556 g_hash_table_destroy(attribs);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
557 }
34360
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
558 else if ((tag == GGP_HTML_TAG_SPAN || tag == GGP_HTML_TAG_DIV)
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
559 && !tag_close)
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
560 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
561 GHashTable *attribs, *styles = NULL;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
562 gchar *style = NULL;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
563 gchar *val = NULL;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
564
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
565 attribs = ggp_html_tag_attribs(attribs_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
566
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
567 font_stack = g_list_prepend(font_stack,
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
568 ggp_font_clone(font_new));
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
569 if (tag == GGP_HTML_TAG_DIV) {
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
570 g_string_append(pending_objects, "<br>");
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
571 }
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
572
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
573 style = g_hash_table_lookup(attribs, "style");
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
574 if (style)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
575 styles = ggp_html_css_attribs(style);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
576
35796
bc5253318167 Show smiley images in the input entry and fix some smiley and inline image issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
577 if (styles && (val = g_hash_table_lookup(styles,
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
578 "background-color")) != NULL)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
579 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
580 int color = ggp_html_decode_color(val);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
581 font_changed |= (font_new->bgcolor != color);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
582 font_new->bgcolor = color;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
583 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
584
35796
bc5253318167 Show smiley images in the input entry and fix some smiley and inline image issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
585 if (styles && (val = g_hash_table_lookup(styles,
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
586 "color")) != NULL)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
587 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
588 int color = ggp_html_decode_color(val);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
589 font_changed |= (font_new->color != color);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
590 font_new->color = color;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
591 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
592
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
593 if (styles)
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
594 g_hash_table_destroy(styles);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
595 g_hash_table_destroy(attribs);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
596 }
34360
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
597 else if ((tag == GGP_HTML_TAG_FONT || tag == GGP_HTML_TAG_SPAN
c6bd55f526f9 Gadu-Gadu: code polishing for messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34359
diff changeset
598 || tag == GGP_HTML_TAG_DIV) && tag_close)
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
599 {
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
600 font_changed = TRUE;
35355
3be5d45ba972 Style: fix gg (partially)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35190
diff changeset
601
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
602 ggp_font_free(font_new);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
603 if (font_stack) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
604 font_new = (ggp_font*)font_stack->data;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
605 font_stack = g_list_delete_link(
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
606 font_stack, font_stack);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
607 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
608 else
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
609 font_new = ggp_font_clone(font_base);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
610 } else if (tag == GGP_HTML_TAG_BR) {
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
611 g_string_append(pending_objects, "<br>");
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
612 } else if (tag == GGP_HTML_TAG_HR) {
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
613 g_string_append(pending_objects, "<br><span>---</span><br>");
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
614 } else if (tag == GGP_HTML_TAG_A || tag == GGP_HTML_TAG_EOM) {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
615 /* do nothing */
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
616 } else if (tag == GGP_HTML_TAG_UNKNOWN) {
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
617 purple_debug_warning(
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
618 "gg",
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
619 "ggp_message_format_to_gg: unknown tag %s",
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
620 tag_str);
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
621 } else {
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
622 purple_debug_error("gg", "ggp_message_format_to_gg: "
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
623 "not handled tag %s\n", tag_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
624 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
625
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
626 pos = m_end;
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
627 g_free(tag_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
628 g_free(attribs_str);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
629 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
630 g_match_info_free(match);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
631
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
632 if (pos < strlen(text_new) || in_any_tag) {
41091
fa2d6b0a4912 Use purple_debug_fatal only if actually fatal
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41084
diff changeset
633 purple_debug_error(
fa2d6b0a4912 Use purple_debug_fatal only if actually fatal
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41084
diff changeset
634 "gg",
fa2d6b0a4912 Use purple_debug_fatal only if actually fatal
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41084
diff changeset
635 "ggp_message_format_to_gg: end of message not reached");
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
636 }
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
637
41084
72d6941bfa2e Fix typos in protocol plugins
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40997
diff changeset
638 /* releasing fonts resources */
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
639 ggp_font_free(font_new);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
640 ggp_font_free(font_current);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
641 ggp_font_free(font_base);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
642 g_list_free_full(font_stack, ggp_font_free);
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
643
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
644 /* combining reformatted text info one string */
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
645 g_free(text_new);
40538
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
646 g_string_free(pending_objects, TRUE);
222423055d93 Cleanup some GG utility functions
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40523
diff changeset
647 text_new = g_string_free(reformatted_text, FALSE);
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
648
35844
612658031317 Gadu-Gadu: add missing verbose block
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
649 if (purple_debug_is_verbose())
612658031317 Gadu-Gadu: add missing verbose block
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35843
diff changeset
650 purple_debug_info("gg", "reformatted text: [%s]", text_new);
34358
845e66c9a20d Gadu-Gadu: sent messages reformatting, as in GG11
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34357
diff changeset
651
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
652 return text_new;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
653 }
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
654
40507
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40441
diff changeset
655 int ggp_message_send_im(PurpleProtocolIM *pim, PurpleConnection *gc,
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40441
diff changeset
656 PurpleMessage *msg)
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
657 {
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
658 GGPInfo *info = purple_connection_get_protocol_data(gc);
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
659 PurpleConversation *im;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
660 PurpleConversationManager *manager;
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
661 ggp_buddy_data *buddy_data;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
662 gchar *gg_msg;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
663 gboolean succ;
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
664 const gchar *rcpt = purple_message_get_recipient(msg);
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
665
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
666 /* TODO: return -ENOTCONN, if not connected */
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
667
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35844
diff changeset
668 if (purple_message_is_empty(msg))
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
669 return 0;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
670
34946
76aa2e0f8701 Merged default branch
Ankit Vani <a@nevitus.org>
parents: 34437
diff changeset
671 buddy_data = ggp_buddy_get_data(purple_blist_find_buddy(
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
672 purple_connection_get_account(gc), rcpt));
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
673
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
674 if (buddy_data->blocked)
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
675 return -1;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
676
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
677 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
678 im = purple_conversation_manager_find_im(manager,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
679 purple_connection_get_account(gc),
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
680 rcpt);
34365
25e4187ea5a7 Gadu-Gadu: outgoing images works again (not in conferences, yet)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34362
diff changeset
681
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40541
diff changeset
682 gg_msg = ggp_message_format_to_gg(im,
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35844
diff changeset
683 purple_message_get_contents(msg));
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
684
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
685 /* TODO: splitting messages */
35361
efdbd45604f1 Style: fix gg braces (part 2)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35358
diff changeset
686 if (strlen(gg_msg) > GG_MSG_MAXSIZE) {
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
687 g_free(gg_msg);
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
688 return -E2BIG;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
689 }
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
690
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
691 succ = (gg_send_message_html(info->session, GG_CLASS_CHAT,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36089
diff changeset
692 ggp_str_to_uin(rcpt), (unsigned char *)gg_msg) >= 0);
34357
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
693
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
694 g_free(gg_msg);
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
695
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
696 return succ ? 1 : -1;
74dff2310289 Gadu-Gadu: reimplementation of sending messages
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34356
diff changeset
697 }

mercurial