libpurple/message.c

Wed, 20 Jun 2018 02:13:44 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 20 Jun 2018 02:13:44 -0400
changeset 39181
f0cd633d86d4
parent 36116
e1f9a50effbc
child 39352
62bca2fe2e91
permissions
-rw-r--r--

prefs: Add binding versions of pref widget functions.

These just bind settings to existing widgets and copy the saved value to
the widget, except for combos which are produced from runtime lists.
Those are populated in a similar way as before.

There are some extra _bind_ words that will probably be dropped once the
other functions are unused.

36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
1 /* purple
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
2 *
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
5 * source distribution.
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
6 *
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
10 * (at your option) any later version.
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
11 *
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
15 * GNU General Public License for more details.
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
16 *
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
20 */
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
21
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
22 #include "internal.h"
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
23 #include "dbus-maybe.h"
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
24 #include "glibcompat.h"
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
25
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
26 #include "debug.h"
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
27 #include "enums.h"
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
28 #include "message.h"
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
29
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
30 #define PURPLE_MESSAGE_GET_PRIVATE(obj) \
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
31 (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MESSAGE, PurpleMessagePrivate))
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
32
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
33 typedef struct {
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
34 guint id;
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
35 gchar *author;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
36 gchar *author_alias;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
37 gchar *recipient;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
38 gchar *contents;
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
39 guint64 msgtime;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
40 PurpleMessageFlags flags;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
41 } PurpleMessagePrivate;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
42
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
43 enum
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
44 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
45 PROP_0,
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
46 PROP_ID,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
47 PROP_AUTHOR,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
48 PROP_AUTHOR_ALIAS,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
49 PROP_RECIPIENT,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
50 PROP_CONTENTS,
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
51 PROP_TIME,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
52 PROP_FLAGS,
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
53 PROP_LAST
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
54 };
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
55
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
56 static GObjectClass *parent_class;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
57 static GParamSpec *properties[PROP_LAST];
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
58
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
59 static GHashTable *messages = NULL;
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
60
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
61 /******************************************************************************
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
62 * API implementation
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
63 ******************************************************************************/
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
64
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
65 PurpleMessage *
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
66 purple_message_new_outgoing(const gchar *who, const gchar *contents,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
67 PurpleMessageFlags flags)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
68 {
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
69 g_warn_if_fail(!(flags & PURPLE_MESSAGE_RECV));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
70 g_warn_if_fail(!(flags & PURPLE_MESSAGE_SYSTEM));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
71
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
72 flags |= PURPLE_MESSAGE_SEND;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
73
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
74 /* who may be NULL for outgoing MUC messages */
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
75 return g_object_new(PURPLE_TYPE_MESSAGE,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
76 "author-alias", _("Me"),
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
77 "recipient", who,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
78 "contents", contents,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
79 "time", (guint64)time(NULL),
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
80 "flags", flags,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
81 NULL);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
82 }
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
83
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
84 PurpleMessage *
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
85 purple_message_new_incoming(const gchar *who, const gchar *contents,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
86 PurpleMessageFlags flags, guint64 timestamp)
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
87 {
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
88 g_warn_if_fail(!(flags & PURPLE_MESSAGE_SEND));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
89 g_warn_if_fail(!(flags & PURPLE_MESSAGE_SYSTEM));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
90
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
91 flags |= PURPLE_MESSAGE_RECV;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
92
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
93 if (timestamp == 0)
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
94 timestamp = time(NULL);
36092
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36088
diff changeset
95
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
96 return g_object_new(PURPLE_TYPE_MESSAGE,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
97 "author", who,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
98 "author-alias", who,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
99 "contents", contents,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
100 "time", timestamp,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
101 "flags", flags,
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
102 NULL);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
103 }
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
104
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
105 PurpleMessage *
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
106 purple_message_new_system(const gchar *contents, PurpleMessageFlags flags)
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
107 {
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
108 g_warn_if_fail(!(flags & PURPLE_MESSAGE_SEND));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
109 g_warn_if_fail(!(flags & PURPLE_MESSAGE_RECV));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
110
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
111 flags |= PURPLE_MESSAGE_SYSTEM;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
112
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
113 return g_object_new(PURPLE_TYPE_MESSAGE,
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
114 "contents", contents,
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
115 "time", (guint64)time(NULL),
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
116 "flags", flags,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
117 NULL);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
118 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
119
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
120 guint
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
121 purple_message_get_id(const PurpleMessage *msg)
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
122 {
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
123 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
124
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
125 g_return_val_if_fail(priv != NULL, 0);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
126
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
127 return priv->id;
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
128 }
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
129
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
130 PurpleMessage *
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
131 purple_message_find_by_id(guint id)
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
132 {
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
133 g_return_val_if_fail(id > 0, NULL);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
134
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
135 return g_hash_table_lookup(messages, GINT_TO_POINTER(id));
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
136 }
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
137
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
138 const gchar *
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
139 purple_message_get_author(const PurpleMessage *msg)
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
140 {
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
141 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
142
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
143 g_return_val_if_fail(priv != NULL, NULL);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
144
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
145 return priv->author;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
146 }
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
147
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
148 const gchar *
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
149 purple_message_get_recipient(const PurpleMessage *msg)
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
150 {
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
151 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
152
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
153 g_return_val_if_fail(priv != NULL, NULL);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
154
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
155 return priv->recipient;
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
156 }
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
157
36079
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
158 void
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
159 purple_message_set_author_alias(PurpleMessage *msg, const gchar *alias)
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
160 {
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
161 g_object_set(msg, "author-alias", alias, NULL);
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
162 }
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
163
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
164 const gchar *
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
165 purple_message_get_author_alias(const PurpleMessage *msg)
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
166 {
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
167 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
168
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
169 g_return_val_if_fail(priv != NULL, NULL);
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
170
36108
69b4fce85ffa Switch _purple_conversation_write_common and (writing|wrote)-(chat|im)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
171 if (priv->author_alias == NULL)
69b4fce85ffa Switch _purple_conversation_write_common and (writing|wrote)-(chat|im)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
172 return purple_message_get_author(msg);
69b4fce85ffa Switch _purple_conversation_write_common and (writing|wrote)-(chat|im)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36098
diff changeset
173
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
174 return priv->author_alias;
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
175 }
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
176
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
177 void
36079
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
178 purple_message_set_contents(PurpleMessage *msg, const gchar *cont)
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
179 {
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
180 g_object_set(msg, "contents", cont, NULL);
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
181 }
2e449140fe0b Switch sending-im-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36077
diff changeset
182
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
183 const gchar *
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
184 purple_message_get_contents(const PurpleMessage *msg)
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
185 {
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
186 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
187
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
188 g_return_val_if_fail(priv != NULL, NULL);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
189
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
190 return priv->contents;
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
191 }
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
192
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
193 gboolean
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
194 purple_message_is_empty(const PurpleMessage *msg)
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
195 {
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
196 const gchar *cont = purple_message_get_contents(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
197
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
198 return (cont == NULL || cont[0] == '\0');
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
199 }
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
200
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
201 void
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
202 purple_message_set_time(PurpleMessage *msg, guint64 msgtime)
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
203 {
36092
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36088
diff changeset
204 g_object_set(msg, "time", msgtime, NULL);
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
205 }
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
206
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
207 guint64
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
208 purple_message_get_time(const PurpleMessage *msg)
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
209 {
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
210 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
211
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
212 g_return_val_if_fail(priv != NULL, 0);
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
213
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
214 return priv->msgtime;
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
215 }
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
216
36088
4c386387f6f3 Switch purple_conversation_write_message to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
217 void
4c386387f6f3 Switch purple_conversation_write_message to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
218 purple_message_set_flags(PurpleMessage *msg, PurpleMessageFlags flags)
4c386387f6f3 Switch purple_conversation_write_message to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
219 {
36092
cf0a11121049 Fix message flags
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36088
diff changeset
220 g_object_set(msg, "flags", flags, NULL);
36088
4c386387f6f3 Switch purple_conversation_write_message to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
221 }
4c386387f6f3 Switch purple_conversation_write_message to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36086
diff changeset
222
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
223 PurpleMessageFlags
36115
09387009bb17 Drop PurpleConversationMessage in favor of PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36108
diff changeset
224 purple_message_get_flags(const PurpleMessage *msg)
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
225 {
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
226 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
227
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
228 g_return_val_if_fail(priv != NULL, 0);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
229
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
230 return priv->flags;
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
231 }
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36075
diff changeset
232
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
233 /******************************************************************************
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
234 * Object stuff
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
235 ******************************************************************************/
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
236
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
237 static void
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
238 purple_message_init(GTypeInstance *instance, gpointer klass)
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
239 {
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
240 static guint max_id = 0;
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
241
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
242 PurpleMessage *msg = PURPLE_MESSAGE(instance);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
243 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
244 PURPLE_DBUS_REGISTER_POINTER(msg, PurpleMessage);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
245
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
246 priv->id = ++max_id;
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
247 g_hash_table_insert(messages, GINT_TO_POINTER(max_id), msg);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
248 }
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
249
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
250 static void
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
251 purple_message_finalize(GObject *obj)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
252 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
253 PurpleMessage *message = PURPLE_MESSAGE(obj);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
254 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(message);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
255
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
256 g_free(priv->author);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
257 g_free(priv->author_alias);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
258 g_free(priv->recipient);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
259 g_free(priv->contents);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
260
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
261 G_OBJECT_CLASS(parent_class)->finalize(obj);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
262 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
263
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
264 static void
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
265 purple_message_get_property(GObject *object, guint par_id, GValue *value,
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
266 GParamSpec *pspec)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
267 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
268 PurpleMessage *message = PURPLE_MESSAGE(object);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
269 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(message);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
270
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
271 switch (par_id) {
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
272 case PROP_ID:
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
273 g_value_set_uint(value, priv->id);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
274 break;
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
275 case PROP_AUTHOR:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
276 g_value_set_string(value, priv->author);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
277 break;
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
278 case PROP_AUTHOR_ALIAS:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
279 g_value_set_string(value, priv->author_alias);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
280 break;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
281 case PROP_RECIPIENT:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
282 g_value_set_string(value, priv->recipient);
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
283 break;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
284 case PROP_CONTENTS:
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
285 g_value_set_string(value, priv->contents);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
286 break;
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
287 case PROP_TIME:
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
288 g_value_set_uint64(value, priv->msgtime);
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
289 break;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
290 case PROP_FLAGS:
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
291 g_value_set_flags(value, priv->flags);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
292 break;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
293 default:
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
294 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, par_id, pspec);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
295 break;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
296 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
297 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
298
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
299 static void
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
300 purple_message_set_property(GObject *object, guint par_id, const GValue *value,
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
301 GParamSpec *pspec)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
302 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
303 PurpleMessage *message = PURPLE_MESSAGE(object);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
304 PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(message);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
305
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
306 switch (par_id) {
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
307 case PROP_AUTHOR:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
308 g_free(priv->author);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
309 priv->author = g_strdup(g_value_get_string(value));
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
310 break;
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
311 case PROP_AUTHOR_ALIAS:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
312 g_free(priv->author_alias);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
313 priv->author_alias = g_strdup(g_value_get_string(value));
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
314 break;
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
315 case PROP_RECIPIENT:
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
316 g_free(priv->recipient);
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
317 priv->recipient = g_strdup(g_value_get_string(value));
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
318 break;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
319 case PROP_CONTENTS:
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
320 g_free(priv->contents);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
321 priv->contents = g_strdup(g_value_get_string(value));
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
322 break;
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
323 case PROP_TIME:
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
324 priv->msgtime = g_value_get_uint64(value);
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
325 break;
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
326 case PROP_FLAGS:
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
327 priv->flags = g_value_get_flags(value);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
328 break;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
329 default:
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
330 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, par_id, pspec);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
331 break;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
332 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
333 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
334
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
335 static void
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
336 purple_message_class_init(PurpleMessageClass *klass)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
337 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
338 GObjectClass *gobj_class = G_OBJECT_CLASS(klass);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
339
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
340 parent_class = g_type_class_peek_parent(klass);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
341
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
342 g_type_class_add_private(klass, sizeof(PurpleMessagePrivate));
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
343
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
344 gobj_class->finalize = purple_message_finalize;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
345 gobj_class->get_property = purple_message_get_property;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
346 gobj_class->set_property = purple_message_set_property;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
347
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
348 properties[PROP_ID] = g_param_spec_uint("id",
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
349 "ID", "The session-unique message id",
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
350 0, G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
351 properties[PROP_AUTHOR] = g_param_spec_string("author",
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
352 "Author", "The username of the person, who sent the message.",
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
353 NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
354 properties[PROP_AUTHOR_ALIAS] = g_param_spec_string("author-alias",
36094
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
355 "Author's alias", "The alias of the person, who sent the "
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
356 "message. For outgoing messages, it's your alias.",
dc5d15df3a88 PurpleMessage: add author's alias
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36092
diff changeset
357 NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
358 properties[PROP_RECIPIENT] = g_param_spec_string("recipient",
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
359 "Recipient", "The username of the recipient.",
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36094
diff changeset
360 NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
361 properties[PROP_CONTENTS] = g_param_spec_string("contents",
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
362 "Contents", "The message text",
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
363 NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
364 properties[PROP_TIME] = g_param_spec_uint64("time",
36116
e1f9a50effbc Fill comments for PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36115
diff changeset
365 "Time", "Message timestamp",
36085
f4d353818589 Add time property to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36079
diff changeset
366 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
367 properties[PROP_FLAGS] = g_param_spec_flags("flags",
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
368 "Flags", "Bitwise set of #PurpleMessageFlags flags",
36086
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
369 PURPLE_TYPE_MESSAGE_FLAGS, 0,
5e1693f7c0d5 Remove whisper completely, fix flags property in PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36085
diff changeset
370 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
371
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
372 g_object_class_install_properties(gobj_class, PROP_LAST, properties);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
373 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
374
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
375 GType
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
376 purple_message_get_type(void)
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
377 {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
378 static GType type = 0;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
379
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
380 if (G_UNLIKELY(type == 0)) {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
381 static const GTypeInfo info = {
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
382 .class_size = sizeof(PurpleMessageClass),
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
383 .class_init = (GClassInitFunc)purple_message_class_init,
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
384 .instance_size = sizeof(PurpleMessage),
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
385 .instance_init = purple_message_init,
36074
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
386 };
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
387
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
388 type = g_type_register_static(G_TYPE_OBJECT,
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
389 "PurpleMessage", &info, 0);
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
390 }
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
391
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
392 return type;
4f7b1fea3cd3 Initial implementation for PurpleMessage class
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff changeset
393 }
36075
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
394
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
395 void
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
396 _purple_message_init(void)
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
397 {
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
398 messages = g_hash_table_new_full(g_direct_hash, g_direct_equal,
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
399 NULL, g_object_unref);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
400 }
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
401
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
402 void
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
403 _purple_message_uninit(void)
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
404 {
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
405 g_hash_table_destroy(messages);
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
406 messages = NULL;
dfb5988e053b PurpleMessage: implement IDs and storage-by-id
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36074
diff changeset
407 }

mercurial