libpurple/purpleconversationmember.c

Sat, 09 Aug 2025 17:37:27 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sat, 09 Aug 2025 17:37:27 +0800
branch
bird-header-fix
changeset 43304
2599d35e9750
parent 43202
1c2e548285f3
permissions
-rw-r--r--

Fix the birb header path

The birb header referred would only work with birb provided by wrap casuing
build to fail because of system-installed birb dependency. The commit points
it to the correct path <birb.h>.

See: https://keep.imfreedom.org/birb/birb/file/5bf00c7d7f80/birb/meson.build#l77

42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
7 * source distribution.
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
12 * any later version.
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
17 * more details.
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
18 *
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
19 * You should have received a copy of the GNU General Public License along with
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42584
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "purpleconversationmember.h"
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
25 #include "purpleenums.h"
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
26 #include "util.h"
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
27
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 struct _PurpleConversationMember {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 GObject parent;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
31 char *alias;
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
32 PurpleBadges *badges;
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PurpleContactInfo *contact_info;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 PurpleTags *tags;
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
35
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
36 guint typing_timeout;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
37 PurpleTypingState typing_state;
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
38
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
39 char *nickname;
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
40 char *color;
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 };
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 enum {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 PROP_0,
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
45 PROP_ALIAS,
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
46 PROP_BADGES,
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 PROP_CONTACT_INFO,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 PROP_TAGS,
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
49 PROP_TYPING_STATE,
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
50 PROP_NICKNAME,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
51 PROP_NAME_FOR_DISPLAY,
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
52 PROP_COLOR,
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42576
diff changeset
53 N_PROPERTIES,
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 };
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
57 enum {
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
58 SIG_BADGES_CHANGED,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
59 N_SIGNALS,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
60 };
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
61 static guint signals[N_SIGNALS] = {0, };
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
63 /******************************************************************************
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
64 * Prototypes
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
65 *****************************************************************************/
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
66 static void
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
67 purple_conversation_member_info_changed_cb(GObject *self, GParamSpec *pspec,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
68 gpointer data);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
69
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 /******************************************************************************
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 * Helpers
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 *****************************************************************************/
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 purple_conversation_member_set_contact_info(PurpleConversationMember *member,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 PurpleContactInfo *contact_info)
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 g_return_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member));
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 g_return_if_fail(PURPLE_IS_CONTACT_INFO(contact_info));
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
80 if(PURPLE_IS_CONTACT_INFO(member->contact_info)) {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
81 g_signal_handlers_disconnect_by_func(member->contact_info,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
82 purple_conversation_member_info_changed_cb,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
83 member);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
84 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
85
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 if(g_set_object(&member->contact_info, contact_info)) {
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
87 GObject *obj = G_OBJECT(member);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
88
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
89 if(PURPLE_IS_CONTACT_INFO(member->contact_info)) {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
90 g_signal_connect_object(member->contact_info,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
91 "notify::name-for-display",
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
92 G_CALLBACK(purple_conversation_member_info_changed_cb),
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
93 member, G_CONNECT_DEFAULT);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
94 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
95
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
96 g_object_freeze_notify(obj);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
97 g_object_notify_by_pspec(obj, properties[PROP_CONTACT_INFO]);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
98 g_object_notify_by_pspec(obj, properties[PROP_NAME_FOR_DISPLAY]);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
99 g_object_thaw_notify(obj);
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 /******************************************************************************
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
104 * Callbacks
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
105 *****************************************************************************/
43127
eae3279e871c Use g_timeout_add_once where possible
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42921
diff changeset
106 static void
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
107 purple_conversation_member_reset_typing_state(gpointer data) {
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
108 PurpleConversationMember *member = data;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
109
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
110 purple_conversation_member_set_typing_state(member,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
111 PURPLE_TYPING_STATE_NONE,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
112 0);
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
113 }
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
114
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
115 static void
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
116 purple_conversation_member_info_changed_cb(G_GNUC_UNUSED GObject *self,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
117 G_GNUC_UNUSED GParamSpec *pspec,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
118 gpointer data)
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
119 {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
120 g_object_notify_by_pspec(G_OBJECT(data),
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
121 properties[PROP_NAME_FOR_DISPLAY]);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
122 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
123
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
124 static void
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
125 purple_conversation_member_badges_changed_cb(G_GNUC_UNUSED GListModel *model,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
126 G_GNUC_UNUSED guint position,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
127 G_GNUC_UNUSED guint removed,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
128 G_GNUC_UNUSED guint added,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
129 gpointer data)
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
130 {
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
131 g_signal_emit(data, signals[SIG_BADGES_CHANGED], 0);
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
132 }
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
133
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
134 /******************************************************************************
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 * GObject Implementation
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 *****************************************************************************/
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
137 G_DEFINE_FINAL_TYPE(PurpleConversationMember, purple_conversation_member,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
138 G_TYPE_OBJECT)
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
139
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 purple_conversation_member_get_property(GObject *obj, guint param_id,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 GValue *value, GParamSpec *pspec)
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 PurpleConversationMember *member = PURPLE_CONVERSATION_MEMBER(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 switch(param_id) {
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
147 case PROP_ALIAS:
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
148 g_value_set_string(value,
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
149 purple_conversation_member_get_alias(member));
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
150 break;
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
151 case PROP_BADGES:
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
152 g_value_set_object(value,
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
153 purple_conversation_member_get_badges(member));
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
154 break;
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
155 case PROP_COLOR:
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
156 g_value_set_string(value,
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
157 purple_conversation_member_get_color(member));
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
158 break;
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
159 case PROP_CONTACT_INFO:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
160 g_value_set_object(value,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
161 purple_conversation_member_get_contact_info(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
162 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
163 case PROP_TAGS:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
164 g_value_set_object(value,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
165 purple_conversation_member_get_tags(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
166 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
167 case PROP_TYPING_STATE:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
168 g_value_set_enum(value,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
169 purple_conversation_member_get_typing_state(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
170 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
171 case PROP_NICKNAME:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
172 g_value_set_string(value,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
173 purple_conversation_member_get_nickname(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
174 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
175 case PROP_NAME_FOR_DISPLAY:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
176 g_value_set_string(value,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
177 purple_conversation_member_get_name_for_display(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
178 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
179 default:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
180 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
181 break;
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 purple_conversation_member_set_property(GObject *obj, guint param_id,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 const GValue *value, GParamSpec *pspec)
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 PurpleConversationMember *member = PURPLE_CONVERSATION_MEMBER(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 switch(param_id) {
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
192 case PROP_ALIAS:
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
193 purple_conversation_member_set_alias(member,
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
194 g_value_get_string(value));
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
195 break;
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
196 case PROP_COLOR:
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
197 purple_conversation_member_set_color(member,
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
198 g_value_get_string(value));
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
199 break;
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
200 case PROP_CONTACT_INFO:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
201 purple_conversation_member_set_contact_info(member,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
202 g_value_get_object(value));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
203 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
204 case PROP_TYPING_STATE:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
205 purple_conversation_member_set_typing_state(member,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
206 g_value_get_enum(value),
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
207 0);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
208 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
209 case PROP_NICKNAME:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
210 purple_conversation_member_set_nickname(member,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
211 g_value_get_string(value));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
212 break;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
213 default:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
214 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
215 break;
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 purple_conversation_member_dispose(GObject *obj) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 PurpleConversationMember *member = PURPLE_CONVERSATION_MEMBER(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 g_clear_object(&member->contact_info);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42113
diff changeset
225 g_clear_handle_id(&member->typing_timeout, g_source_remove);
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
226
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 G_OBJECT_CLASS(purple_conversation_member_parent_class)->dispose(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 purple_conversation_member_finalize(GObject *obj) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 PurpleConversationMember *member = PURPLE_CONVERSATION_MEMBER(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
234 g_clear_pointer(&member->alias, g_free);
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
235 g_clear_pointer(&member->color, g_free);
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
236 g_clear_object(&member->badges);
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 g_clear_object(&member->tags);
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
238 g_clear_pointer(&member->nickname, g_free);
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 G_OBJECT_CLASS(purple_conversation_member_parent_class)->finalize(obj);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 purple_conversation_member_init(PurpleConversationMember *member) {
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
245 member->badges = purple_badges_new();
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
246 g_signal_connect_object(member->badges, "items-changed",
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
247 G_CALLBACK(purple_conversation_member_badges_changed_cb),
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
248 member, G_CONNECT_DEFAULT);
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
249
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 member->tags = purple_tags_new();
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 static void
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 purple_conversation_member_class_init(PurpleConversationMemberClass *klass) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 obj_class->dispose = purple_conversation_member_dispose;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 obj_class->finalize = purple_conversation_member_finalize;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 obj_class->get_property = purple_conversation_member_get_property;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 obj_class->set_property = purple_conversation_member_set_property;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 /**
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
263 * PurpleConversationMember:alias:
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
264 *
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
265 * The alias of a member.
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
266 *
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
267 * The alias is set by a libpurple user and could potentially be stored
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
268 * server side.
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
269 *
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
270 * Since: 3.0
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
271 */
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
272 properties[PROP_ALIAS] = g_param_spec_string(
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
273 "alias", NULL, NULL,
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
274 NULL,
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
275 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
276
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
277 /**
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
278 * PurpleConversationMember:badges:
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
279 *
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
280 * The badges for the member.
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
281 *
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
282 * Since: 3.0
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
283 */
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
284 properties[PROP_BADGES] = g_param_spec_object(
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
285 "badges", NULL, NULL,
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
286 PURPLE_TYPE_BADGES,
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
287 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
288
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
289 /**
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
290 * PurpleConversationMember:color:
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
291 *
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
292 * The hex color code for the member.
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
293 *
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
294 * This color code should be used by user interfaces when displaying the
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
295 * member. It may be modified by the user interface to increase contrast
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
296 * ratios.
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
297 *
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
298 * Since: 3.0
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
299 */
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
300 properties[PROP_COLOR] = g_param_spec_string(
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
301 "color", NULL, NULL,
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
302 NULL,
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
303 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
304
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
305 /**
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 * PurpleConversationMember:contact-info:
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 *
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 * The contact info that this member is for.
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 *
42613
780d7efe37c2 Remove the micro version from since tags for libpurple part 2
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
310 * Since: 3.0
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 */
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 properties[PROP_CONTACT_INFO] = g_param_spec_object(
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
313 "contact-info", NULL, NULL,
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 PURPLE_TYPE_CONTACT_INFO,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 /**
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 * PurpleConversationMember:tags:
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 *
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 * The [class@Purple.Tags] instance for this member.
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 *
42613
780d7efe37c2 Remove the micro version from since tags for libpurple part 2
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
322 * Since: 3.0
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 */
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324 properties[PROP_TAGS] = g_param_spec_object(
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
325 "tags", NULL, NULL,
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 PURPLE_TYPE_TAGS,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
329 /**
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
330 * PurpleConversationMember:typing-state:
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
331 *
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
332 * The [enum@Purple.TypingState] for this member.
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
333 *
42613
780d7efe37c2 Remove the micro version from since tags for libpurple part 2
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
334 * Since: 3.0
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
335 */
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
336 properties[PROP_TYPING_STATE] = g_param_spec_enum(
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
337 "typing-state", NULL, NULL,
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
338 PURPLE_TYPE_TYPING_STATE,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
339 PURPLE_TYPING_STATE_NONE,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
340 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
341
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
342 /**
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
343 * PurpleConversationMember:nickname:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
344 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
345 * A custom nick name that the remote user has chosen for themselves in the
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
346 * chat.
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
347 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
348 * Since: 3.0
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
349 */
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
350 properties[PROP_NICKNAME] = g_param_spec_string(
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
351 "nickname", NULL, NULL,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
352 NULL,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
353 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
354
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
355 /**
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
356 * PurpleConversationMember:name-for-display:
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
357 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
358 * The nick name that should be display for the conversation member.
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
359 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
360 * If [property@ConversationMember:nickname] is set, that will be returned.
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
361 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
362 * Otherwise [property@ContactInfo:name-for-display] will be returned.
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
363 *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
364 * Since: 3.0
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
365 */
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
366 properties[PROP_NAME_FOR_DISPLAY] = g_param_spec_string(
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
367 "name-for-display", NULL, NULL,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
368 NULL,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
369 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
370
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
43202
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
372
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
373 /**
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
374 * PurpleConversationMember::badges-changed:
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
375 *
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
376 * Emitted when the badges for the member have changed.
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
377 *
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
378 * Since: 3.0
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
379 */
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
380 signals[SIG_BADGES_CHANGED] = g_signal_new_class_handler(
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
381 "badges-changed",
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
382 G_OBJECT_CLASS_TYPE(klass),
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
383 G_SIGNAL_RUN_LAST,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
384 NULL,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
385 NULL,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
386 NULL,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
387 NULL,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
388 G_TYPE_NONE,
1c2e548285f3 Add a badges-changed signal to Purple.ConversationMember and fix the items changed emissions
Gary Kramlich <grim@reaperworld.com>
parents: 43185
diff changeset
389 0);
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 /******************************************************************************
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 * Public API
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394 *****************************************************************************/
43185
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
395 int
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
396 purple_conversation_member_compare(PurpleConversationMember *member1,
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
397 PurpleConversationMember *member2)
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
398 {
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
399 const char *name1 = NULL;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
400 const char *name2 = NULL;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
401 int result = 0;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
402
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
403 /* Shortcut if the pointer is the same. */
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
404 if(member1 == member2) {
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
405 return 0;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
406 }
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
407
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
408 /* NULL checks. */
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
409 if(PURPLE_IS_CONVERSATION_MEMBER(member1) &&
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
410 !PURPLE_IS_CONVERSATION_MEMBER(member2))
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
411 {
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
412 return -1;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
413 }
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
414
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
415 if(!PURPLE_IS_CONVERSATION_MEMBER(member1) &&
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
416 PURPLE_IS_CONVERSATION_MEMBER(member2))
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
417 {
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
418 return 1;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
419 }
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
420
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
421 /* Check badges first. */
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
422 result = purple_badges_compare(member1->badges, member2->badges);
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
423 if(result != 0) {
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
424 return result;
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
425 }
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
426
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
427 /* Sort by the name for display. */
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
428 name1 = purple_conversation_member_get_name_for_display(member1);
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
429 name2 = purple_conversation_member_get_name_for_display(member2);
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
430
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
431 return purple_utf8_strcasecmp(name1, name2);
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
432 }
c7b0c4b88dfb Implement Purple.ConversationMember.compare
Gary Kramlich <grim@reaperworld.com>
parents: 43172
diff changeset
433
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 PurpleConversationMember *
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 purple_conversation_member_new(PurpleContactInfo *info) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(info), NULL);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438 return g_object_new(
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 PURPLE_TYPE_CONVERSATION_MEMBER,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 "contact-info", info,
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441 NULL);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
444 const char *
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
445 purple_conversation_member_get_alias(PurpleConversationMember *member) {
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
446 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
447
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
448 return member->alias;
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
449 }
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
450
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
451 void
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
452 purple_conversation_member_set_alias(PurpleConversationMember *member,
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
453 const char *alias)
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
454 {
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
455 g_return_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member));
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
456
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
457 if(g_set_str(&member->alias, alias)) {
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
458 GObject *obj = G_OBJECT(member);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
459
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
460 g_object_freeze_notify(obj);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
461 g_object_notify_by_pspec(obj, properties[PROP_ALIAS]);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
462 g_object_notify_by_pspec(obj, properties[PROP_NAME_FOR_DISPLAY]);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
463 g_object_thaw_notify(obj);
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
464 }
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
465 }
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
466
42921
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
467 PurpleBadges *
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
468 purple_conversation_member_get_badges(PurpleConversationMember *member) {
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
469 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
470
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
471 return member->badges;
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
472 }
a595e51a5bfa Add a badges property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42779
diff changeset
473
43140
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
474 const char *
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
475 purple_conversation_member_get_color(PurpleConversationMember *member) {
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
476 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
477
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
478 return member->color;
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
479 }
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
480
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
481 void
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
482 purple_conversation_member_set_color(PurpleConversationMember *member,
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
483 const char *color)
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
484 {
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
485 g_return_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member));
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
486
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
487 if(g_set_str(&member->color, color)) {
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
488 g_object_notify_by_pspec(G_OBJECT(member), properties[PROP_COLOR]);
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
489 }
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
490 }
951c4110ad50 Create Purple.ConversationMember:color
Gary Kramlich <grim@reaperworld.com>
parents: 43139
diff changeset
491
42080
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
492 PurpleContactInfo *
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
493 purple_conversation_member_get_contact_info(PurpleConversationMember *member) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
494 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
495
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496 return member->contact_info;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
497 }
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
498
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
499 PurpleTags *
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
500 purple_conversation_member_get_tags(PurpleConversationMember *member) {
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
501 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
503 return member->tags;
df47db24cee6 Add PurpleConversationMember to link a PurpleContactInfo to a PurpleConversation
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
504 }
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
505
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
506 PurpleTypingState
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
507 purple_conversation_member_get_typing_state(PurpleConversationMember *member)
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
508 {
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
509 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member),
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
510 PURPLE_TYPING_STATE_NONE);
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
511
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
512 return member->typing_state;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
513 }
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
514
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
515 void
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
516 purple_conversation_member_set_typing_state(PurpleConversationMember *member,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
517 PurpleTypingState state,
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
518 guint seconds)
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
519 {
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
520 g_return_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member));
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
521
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
522 /* Remove an existing timeout if necessary. */
42175
4185b4043214 Use g_clear_handle_id everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42113
diff changeset
523 g_clear_handle_id(&member->typing_timeout, g_source_remove);
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
524
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
525 /* If the state has changed, notify. */
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
526 if(state != member->typing_state) {
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
527 member->typing_state = state;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
528
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
529 g_object_notify_by_pspec(G_OBJECT(member),
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
530 properties[PROP_TYPING_STATE]);
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
531 }
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
532
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
533 /* If we got a timeout, add it. */
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
534 if(seconds > 0) {
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
535 guint source = 0;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
536
43127
eae3279e871c Use g_timeout_add_once where possible
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42921
diff changeset
537 source = g_timeout_add_seconds_once(seconds,
eae3279e871c Use g_timeout_add_once where possible
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42921
diff changeset
538 purple_conversation_member_reset_typing_state,
eae3279e871c Use g_timeout_add_once where possible
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42921
diff changeset
539 member);
42113
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
540
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
541 member->typing_timeout = source;
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
542 }
393c2ea6b399 Add PurpleTypingState and add it as a property to PurpleConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42080
diff changeset
543 }
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
544
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
545 const char *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
546 purple_conversation_member_get_nickname(PurpleConversationMember *member) {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
547 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
548
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
549 return member->nickname;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
550 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
551
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
552 void
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
553 purple_conversation_member_set_nickname(PurpleConversationMember *member,
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
554 const char *nickname)
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
555 {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
556 g_return_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member));
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
557
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
558 if(g_set_str(&member->nickname, nickname)) {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
559 GObject *obj = G_OBJECT(member);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
560
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
561 g_object_freeze_notify(obj);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
562 g_object_notify_by_pspec(obj, properties[PROP_NICKNAME]);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
563 g_object_notify_by_pspec(obj, properties[PROP_NAME_FOR_DISPLAY]);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
564 g_object_thaw_notify(obj);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
565 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
566 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
567
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
568 const char *
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
569 purple_conversation_member_get_name_for_display(PurpleConversationMember *member)
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
570 {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
571 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), NULL);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
572
43139
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
573 if(!purple_strempty(member->alias)) {
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
574 return member->alias;
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
575 }
7b9d197a5e16 Add an alias property to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 43127
diff changeset
576
42779
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
577 if(!purple_strempty(member->nickname)) {
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
578 return member->nickname;
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
579 }
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
580
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
581 return purple_contact_info_get_name_for_display(member->contact_info);
365eaa9d46f8 Add ConversationMember:nickname and ConversationMember:name-for-display properties
Gary Kramlich <grim@reaperworld.com>
parents: 42613
diff changeset
582 }
43172
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
583
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
584 gboolean
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
585 purple_conversation_member_matches(PurpleConversationMember *member,
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
586 const char *needle)
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
587 {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
588 g_return_val_if_fail(PURPLE_IS_CONVERSATION_MEMBER(member), FALSE);
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
589
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
590 if(purple_strempty(needle)) {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
591 return TRUE;
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
592 }
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
593
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
594 if(!purple_strempty(member->alias)) {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
595 if(purple_strmatches(needle, member->alias)) {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
596 return TRUE;
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
597 }
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
598 }
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
599
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
600 if(!purple_strempty(member->nickname)) {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
601 if(purple_strmatches(needle, member->nickname)) {
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
602 return TRUE;
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
603 }
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
604 }
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
605
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
606 return purple_contact_info_matches(member->contact_info, needle);
8f93d317f96a Add Purple.ConversationMember.matches
Gary Kramlich <grim@reaperworld.com>
parents: 43140
diff changeset
607 }

mercurial