libpurple/smiley-list.c

Fri, 04 Apr 2014 21:09:16 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Fri, 04 Apr 2014 21:09:16 +0200
changeset 35755
d91c44b4a8e6
parent 35747
25085b485441
child 35756
fe6aba70046e
permissions
-rw-r--r--

Remote smileys: correctly handle failed smileys

35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1 /* purple
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
2 *
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
5 * source distribution.
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
6 *
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
11 *
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
16 *
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
20 */
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
21
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
22 #include "smiley-list.h"
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
23
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
24 #include "dbus-maybe.h"
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
25 #include "debug.h"
35716
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
26 #include "smiley-parser.h"
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
27 #include "trie.h"
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
28
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
29 #define PURPLE_SMILEY_LIST_GET_PRIVATE(obj) \
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
30 (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_SMILEY_LIST, \
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
31 PurpleSmileyListPrivate))
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
32
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
33 typedef struct {
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
34 GList *smileys;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
35 GList *smileys_end;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
36 PurpleTrie *trie;
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
37 GHashTable *path_map;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
38 GHashTable *shortcut_map;
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
39
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
40 gboolean drop_failed_remotes;
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
41 } PurpleSmileyListPrivate;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
42
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
43 enum
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
44 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
45 PROP_0,
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
46 PROP_DROP_FAILED_REMOTES,
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
47 PROP_LAST
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
48 };
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
49
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
50 static GParamSpec *properties[PROP_LAST];
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
51
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
52 static void
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
53 _list_append2(GList **head_p, GList **tail_p, gpointer data)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
54 {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
55 GList *head = *head_p;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
56 GList *tail = *tail_p;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
57 GList *elem;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
58
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
59 g_return_if_fail((head == NULL) == (tail == NULL));
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
60 g_return_if_fail((tail == NULL) || (tail->next == NULL));
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
61
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
62 elem = g_list_alloc();
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
63 elem->data = data;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
64 elem->prev = tail;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
65 elem->next = NULL;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
66
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
67 if (head) {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
68 tail->next = elem;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
69 *tail_p = elem;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
70 } else
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
71 *head_p = *tail_p = elem;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
72 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
73
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
74 static void
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
75 _list_remove_link2(GList **head_p, GList **tail_p, GList *link)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
76 {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
77 GList *head = *head_p;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
78 GList *tail = *tail_p;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
79
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
80 g_return_if_fail(head != NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
81 g_return_if_fail(tail != NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
82
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
83 if (link == tail)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
84 *tail_p = tail->prev;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
85 *head_p = g_list_remove_link(head, link);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
86 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
87
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
88 /*******************************************************************************
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
89 * API implementation
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
90 ******************************************************************************/
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
91
35709
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
92 PurpleSmileyList *
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
93 purple_smiley_list_new(void)
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
94 {
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
95 return g_object_new(PURPLE_TYPE_SMILEY_LIST, NULL);
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
96 }
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
97
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
98 static void
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
99 remote_smiley_failed(PurpleSmiley *smiley, gpointer _list)
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
100 {
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
101 PurpleSmileyList *list = _list;
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
102
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
103 purple_debug_info("smiley-list", "remote smiley '%s' has failed, "
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
104 "removing it from the list...",
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
105 purple_smiley_get_shortcut(smiley));
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
106
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
107 purple_smiley_list_remove(list, smiley);
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
108 }
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
109
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
110 gboolean
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
111 purple_smiley_list_add(PurpleSmileyList *list, PurpleSmiley *smiley)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
112 {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
113 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
114 const gchar *smiley_path;
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
115 gboolean succ;
35716
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
116 gchar *tmp = NULL;
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
117 const gchar *shortcut;
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
118
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
119 g_return_val_if_fail(priv != NULL, FALSE);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
120 g_return_val_if_fail(PURPLE_IS_SMILEY(smiley), FALSE);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
121
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
122 if (g_object_get_data(G_OBJECT(smiley), "purple-smiley-list") != NULL) {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
123 purple_debug_warning("smiley-list",
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
124 "smiley is already associated with some list");
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
125 return FALSE;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
126 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
127
35716
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
128 shortcut = purple_smiley_get_shortcut(smiley);
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
129
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
130 if (g_hash_table_lookup(priv->shortcut_map, shortcut) != NULL)
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
131 return FALSE;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
132
35716
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
133 if (purple_smiley_parse_escape())
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
134 shortcut = tmp = g_markup_escape_text(shortcut, -1);
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
135 succ = purple_trie_add(priv->trie, shortcut, smiley);
80bedd712883 Custom smileys: parse and display in toolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35713
diff changeset
136 g_free(tmp);
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
137 shortcut = purple_smiley_get_shortcut(smiley);
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
138 if (!succ)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
139 return FALSE;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
140
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
141 g_object_ref(smiley);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
142 _list_append2(&priv->smileys, &priv->smileys_end, smiley);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
143 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list", list);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
144 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list-elem",
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
145 priv->smileys_end);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
146
35747
25085b485441 Remote smileys: parse them too
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35746
diff changeset
147 g_hash_table_insert(priv->shortcut_map, g_strdup(shortcut), smiley);
25085b485441 Remote smileys: parse them too
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35746
diff changeset
148
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
149 /* We don't expect non-remote non-ready smileys, but let's check it just
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
150 * to be safe. */
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
151 if (priv->drop_failed_remotes && !purple_smiley_is_ready(smiley) &&
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
152 PURPLE_IS_REMOTE_SMILEY(smiley))
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
153 {
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
154 g_signal_connect_object(smiley, "failed",
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
155 G_CALLBACK(remote_smiley_failed), list, 0);
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
156 }
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
157
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
158 smiley_path = purple_smiley_get_path(smiley);
35746
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
159
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
160 /* TODO: add to the table, when the smiley sets the path */
35746
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
161 if (!smiley_path)
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
162 return TRUE;
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
163
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
164 if (g_hash_table_lookup(priv->path_map, smiley_path) == NULL) {
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
165 g_hash_table_insert(priv->path_map,
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
166 g_strdup(smiley_path), smiley);
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
167 }
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
168
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
169 return TRUE;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
170 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
171
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
172 void
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
173 purple_smiley_list_remove(PurpleSmileyList *list, PurpleSmiley *smiley)
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
174 {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
175 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
176 GList *list_elem, *it;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
177 const gchar *shortcut, *path;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
178 gchar *tmp;
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
179
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
180 g_return_if_fail(priv != NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
181 g_return_if_fail(PURPLE_IS_SMILEY(smiley));
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
182
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
183 if (g_object_get_data(G_OBJECT(smiley), "purple-smiley-list") != list) {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
184 purple_debug_warning("smiley-list", "remove: invalid list");
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
185 return;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
186 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
187
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
188 list_elem = g_object_get_data(G_OBJECT(smiley),
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
189 "purple-smiley-list-elem");
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
190
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
191 shortcut = purple_smiley_get_shortcut(smiley);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
192 path = purple_smiley_get_path(smiley);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
193
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
194 g_hash_table_remove(priv->shortcut_map, shortcut);
35746
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
195 if (path)
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
196 g_hash_table_remove(priv->path_map, path);
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
197
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
198 if (purple_smiley_parse_escape())
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
199 shortcut = tmp = g_markup_escape_text(shortcut, -1);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
200 purple_trie_remove(priv->trie, shortcut);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
201 g_free(tmp);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
202 shortcut = purple_smiley_get_shortcut(smiley);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
203
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
204 _list_remove_link2(&priv->smileys, &priv->smileys_end, list_elem);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
205
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
206 /* re-add entry to path_map if smiley was not unique */
35746
e4a656378516 Remote smileys: partial implementation with XMPP
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35738
diff changeset
207 for (it = priv->smileys; it && path; it = g_list_next(it)) {
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
208 PurpleSmiley *smiley = it->data;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
209
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
210 if (g_strcmp0(purple_smiley_get_path(smiley), path) == 0) {
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
211 g_hash_table_insert(priv->path_map,
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
212 g_strdup(path), smiley);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
213 break;
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
214 }
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
215 }
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
216
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
217 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list", NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
218 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list-elem", NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
219 g_object_unref(smiley);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
220 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
221
35738
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
222 gboolean
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
223 purple_smiley_list_is_empty(PurpleSmileyList *list)
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
224 {
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
225 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
226
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
227 g_return_val_if_fail(priv != NULL, TRUE);
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
228
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
229 return (priv->smileys == NULL);
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
230 }
030ce6840163 Smileys: toolbar button sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35728
diff changeset
231
35717
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
232 PurpleSmiley *
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
233 purple_smiley_list_get_by_shortcut(PurpleSmileyList *list,
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
234 const gchar *shortcut)
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
235 {
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
236 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
237
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
238 g_return_val_if_fail(priv != NULL, NULL);
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
239
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
240 return g_hash_table_lookup(priv->shortcut_map, shortcut);
35717
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
241 }
45bde03f86a6 Custom smileys: simplify storage implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35716
diff changeset
242
35709
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
243 PurpleTrie *
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
244 purple_smiley_list_get_trie(PurpleSmileyList *list)
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
245 {
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
246 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
247
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
248 g_return_val_if_fail(priv != NULL, NULL);
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
249
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
250 return priv->trie;
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
251 }
0d7a84931572 Smileys: implement and use new parser, only themes for now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35702
diff changeset
252
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
253 GList *
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
254 purple_smiley_list_get_unique(PurpleSmileyList *list)
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
255 {
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
256 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
257
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
258 g_return_val_if_fail(priv != NULL, NULL);
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
259
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
260 return g_hash_table_get_values(priv->path_map);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
261 }
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
262
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
263 GList *
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
264 purple_smiley_list_get_all(PurpleSmileyList *list)
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
265 {
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
266 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(list);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
267
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
268 g_return_val_if_fail(priv != NULL, NULL);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
269
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
270 return g_hash_table_get_values(priv->shortcut_map);
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
271 }
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
272
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
273
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
274 /*******************************************************************************
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
275 * Object stuff
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
276 ******************************************************************************/
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
277
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
278 static void
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
279 purple_smiley_list_init(GTypeInstance *instance, gpointer klass)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
280 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
281 PurpleSmileyList *sl = PURPLE_SMILEY_LIST(instance);
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
282 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(sl);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
283
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
284 priv->trie = purple_trie_new();
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
285 priv->path_map = g_hash_table_new_full(g_str_hash, g_str_equal,
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
286 g_free, NULL);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
287 priv->shortcut_map = g_hash_table_new_full(g_str_hash, g_str_equal,
35713
4423f463a782 Smileys in PidginWebviewToolbar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35709
diff changeset
288 g_free, NULL);
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
289
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
290 PURPLE_DBUS_REGISTER_POINTER(sl, PurpleSmileyList);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
291 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
292
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
293 static void
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
294 purple_smiley_list_finalize(GObject *obj)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
295 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
296 PurpleSmileyList *sl = PURPLE_SMILEY_LIST(obj);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
297 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(sl);
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
298 GList *it;
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
299
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
300 g_object_unref(priv->trie);
35728
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
301 g_hash_table_destroy(priv->path_map);
6cd9aee7f276 Smiley manager: edit, delete
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35717
diff changeset
302 g_hash_table_destroy(priv->shortcut_map);
35702
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
303
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
304 for (it = priv->smileys; it; it = g_list_next(it)) {
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
305 PurpleSmiley *smiley = it->data;
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
306 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list", NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
307 g_object_set_data(G_OBJECT(smiley), "purple-smiley-list-elem", NULL);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
308 g_object_unref(smiley);
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
309 }
06a934baa610 Smiley list: add/remove
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35701
diff changeset
310 g_list_free(priv->smileys);
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
311
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
312 PURPLE_DBUS_UNREGISTER_POINTER(sl);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
313 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
314
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
315 static void
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
316 purple_smiley_list_get_property(GObject *object, guint par_id, GValue *value,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
317 GParamSpec *pspec)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
318 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
319 PurpleSmileyList *sl = PURPLE_SMILEY_LIST(object);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
320 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(sl);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
321
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
322 switch (par_id) {
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
323 case PROP_DROP_FAILED_REMOTES:
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
324 g_value_set_boolean(value, priv->drop_failed_remotes);
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
325 break;
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
326 default:
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
327 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, par_id, pspec);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
328 break;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
329 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
330 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
331
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
332 static void
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
333 purple_smiley_list_set_property(GObject *object, guint par_id, const GValue *value,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
334 GParamSpec *pspec)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
335 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
336 PurpleSmileyList *sl = PURPLE_SMILEY_LIST(object);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
337 PurpleSmileyListPrivate *priv = PURPLE_SMILEY_LIST_GET_PRIVATE(sl);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
338
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
339 switch (par_id) {
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
340 case PROP_DROP_FAILED_REMOTES:
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
341 priv->drop_failed_remotes = g_value_get_boolean(value);
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
342 /* XXX: we could scan for remote smiley's on our list
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
343 * and change the setting, but we don't care that much.
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
344 */
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
345 break;
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
346 default:
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
347 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, par_id, pspec);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
348 break;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
349 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
350 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
351
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
352 static void
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
353 purple_smiley_list_class_init(PurpleSmileyListClass *klass)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
354 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
355 GObjectClass *gobj_class = G_OBJECT_CLASS(klass);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
356
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
357 g_type_class_add_private(klass, sizeof(PurpleSmileyListPrivate));
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
358
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
359 gobj_class->get_property = purple_smiley_list_get_property;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
360 gobj_class->set_property = purple_smiley_list_set_property;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
361 gobj_class->finalize = purple_smiley_list_finalize;
35755
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
362
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
363 properties[PROP_DROP_FAILED_REMOTES] = g_param_spec_boolean(
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
364 "drop-failed-remotes", "Drop failed PurpleRemoteSmileys",
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
365 "Watch added remote smileys and remove them from the list, "
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
366 "if they change their state to failed", FALSE,
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
367 G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
368
d91c44b4a8e6 Remote smileys: correctly handle failed smileys
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35747
diff changeset
369 g_object_class_install_properties(gobj_class, PROP_LAST, properties);
35701
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
370 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
371
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
372 GType
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
373 purple_smiley_list_get_type(void)
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
374 {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
375 static GType type = 0;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
376
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
377 if (G_UNLIKELY(type == 0)) {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
378 static const GTypeInfo info = {
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
379 .class_size = sizeof(PurpleSmileyListClass),
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
380 .class_init = (GClassInitFunc)purple_smiley_list_class_init,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
381 .instance_size = sizeof(PurpleSmileyList),
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
382 .instance_init = purple_smiley_list_init,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
383 };
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
384
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
385 type = g_type_register_static(G_TYPE_OBJECT,
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
386 "PurpleSmileyList", &info, 0);
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
387 }
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
388
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
389 return type;
34f4a4318d19 Initial PurpleSmileyList implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
390 }

mercurial