libpurple/purplechatconversation.c

Fri, 12 Aug 2022 03:44:34 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Fri, 12 Aug 2022 03:44:34 -0500
branch
gtk4
changeset 41560
2579a5138f0c
parent 41505
3f120d577610
child 41917
b3eda1d781c6
permissions
-rw-r--r--

A bunch of random fixes for the the gtk4 branch

Testing Done:
Compiled

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

34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1 /*
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
2 * purple
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
3 *
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
6 * source distribution.
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
7 *
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
11 * (at your option) any later version.
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
12 *
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
16 * GNU General Public License for more details.
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
17 *
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
21 */
40441
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
22
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
23 #include <glib/gi18n-lib.h>
f23c7e772667 Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
24
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
25 #include "internal.h"
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
26 #include "debug.h"
40992
3a973a9c5a64 migrate libpurple to the ConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
27 #include "purpleconversationmanager.h"
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
28 #include "purplechatconversation.h"
41007
90d2dee9b3dc Fix the includes for the purpleenums rename
Gary Kramlich <grim@reaperworld.com>
parents: 40992
diff changeset
29 #include "purpleenums.h"
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40244
diff changeset
30 #include "purpleprivate.h"
41137
3c1574216aed Now that the History API is here, remove the purple logging api
Gary Kramlich <grim@reaperworld.com>
parents: 41007
diff changeset
31 #include "server.h"
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
32
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
33 typedef struct {
35460
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
34 GList *ignored; /* Ignored users. */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
35 char *who; /* The person who set the topic. */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
36 char *topic; /* The topic. */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
37 int id; /* The chat ID. */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
38 char *nick; /* Your nick in this chat. */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
39 gboolean left; /* We left the chat and kept the window open */
96946e21fce5 Fix some more gtk-doc warnings till dnssrv
Ankit Vani <a@nevitus.org>
parents: 35265
diff changeset
40 GHashTable *users; /* Hash table of the users in the room. */
39535
beb0afdb325c Regroup conversation types definitions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
41 } PurpleChatConversationPrivate;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
42
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
43 enum {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
44 PROP_0,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
45 PROP_TOPIC_WHO,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
46 PROP_TOPIC,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
47 PROP_CHAT_ID,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
48 PROP_NICK,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
49 PROP_LEFT,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
50 N_PROPERTIES
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
51 };
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
52 static GParamSpec *properties[N_PROPERTIES] = { NULL, };
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
53
41505
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
54 enum {
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
55 SIG_USER_JOINED,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
56 SIG_USER_LEFT,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
57 N_SIGNALS
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
58 };
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
59 static guint signals[N_SIGNALS] = { 0, };
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
60
39535
beb0afdb325c Regroup conversation types definitions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
61 G_DEFINE_TYPE_WITH_PRIVATE(PurpleChatConversation, purple_chat_conversation,
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
62 PURPLE_TYPE_CONVERSATION);
39535
beb0afdb325c Regroup conversation types definitions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39423
diff changeset
63
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
64 /**************************************************************************
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
65 * Helpers
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
66 **************************************************************************/
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
67 static guint
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
68 purple_conversation_user_hash(gconstpointer data) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
69 gchar *collated;
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
70 guint hash;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
71
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
72 collated = g_utf8_collate_key((const gchar *)data, -1);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
73 hash = g_str_hash(collated);
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
74 g_free(collated);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
75
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
76 return hash;
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
77 }
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
78
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
79 static gboolean
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
80 purple_conversation_user_equal(gconstpointer a, gconstpointer b) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
81 return !g_utf8_collate(a, b);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
82 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
83
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
84 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
85 purple_chat_conversation_clear_users_helper(gpointer data, gpointer user_data)
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
86 {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
87 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(user_data);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
88 const gchar *name = (const gchar *)data;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
89 gpointer handle = purple_conversations_get_handle();
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
90
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
91 purple_signal_emit(handle, "chat-user-leaving", chat, name, NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
92 purple_signal_emit(handle, "chat-user-left", chat, name, NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
93 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
94
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
95 /******************************************************************************
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
96 * PurpleConversation Implementation
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
97 *****************************************************************************/
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
98 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
99 chat_conversation_write_message(PurpleConversation *conv, PurpleMessage *msg) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
100 PurpleChatConversation *chat_conv = PURPLE_CHAT_CONVERSATION(conv);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
101 PurpleChatConversationPrivate *priv = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
102 PurpleMessageFlags flags;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
103 const gchar *author = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
104
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
105 g_return_if_fail(msg != NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
106
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
107 priv = purple_chat_conversation_get_instance_private(chat_conv);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
108
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
109 /* Don't display this if the person who wrote it is ignored. */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
110 author = purple_message_get_author(msg);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
111 if(purple_chat_conversation_is_ignored_user(chat_conv, author)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
112 return;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
113 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
114
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
115 flags = purple_message_get_flags(msg);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
116 if(flags & PURPLE_MESSAGE_RECV) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
117 if(purple_utf8_has_word(purple_message_get_contents(msg), priv->nick)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
118 flags |= PURPLE_MESSAGE_NICK;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
119 purple_message_set_flags(msg, flags);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
120 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
121 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
122
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
123 _purple_conversation_write_common(conv, msg);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
124 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
125
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
126 /******************************************************************************
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
127 * GObject Implementation
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
128 *****************************************************************************/
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
129 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
130 purple_chat_conversation_set_property(GObject *obj, guint param_id,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
131 const GValue *value, GParamSpec *pspec)
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
132 {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
133 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
134
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
135 switch(param_id) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
136 case PROP_CHAT_ID:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
137 purple_chat_conversation_set_id(chat, g_value_get_int(value));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
138 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
139 case PROP_NICK:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
140 purple_chat_conversation_set_nick(chat, g_value_get_string(value));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
141 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
142 case PROP_LEFT:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
143 if(g_value_get_boolean(value)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
144 purple_chat_conversation_leave(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
145 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
146 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
147 default:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
148 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
149 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
150 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
151 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
152
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
153 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
154 purple_chat_conversation_get_property(GObject *obj, guint param_id,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
155 GValue *value, GParamSpec *pspec)
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
156 {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
157 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
158
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
159 switch(param_id) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
160 case PROP_TOPIC_WHO:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
161 g_value_set_string(value, purple_chat_conversation_get_topic_who(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
162 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
163 case PROP_TOPIC:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
164 g_value_set_string(value, purple_chat_conversation_get_topic(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
165 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
166 case PROP_CHAT_ID:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
167 g_value_set_int(value, purple_chat_conversation_get_id(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
168 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
169 case PROP_NICK:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
170 g_value_set_string(value, purple_chat_conversation_get_nick(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
171 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
172 case PROP_LEFT:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
173 g_value_set_boolean(value, purple_chat_conversation_has_left(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
174 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
175 default:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
176 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
177 break;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
178 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
179 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
180
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
181 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
182 purple_chat_conversation_init(PurpleChatConversation *chat) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
183 PurpleChatConversationPrivate *priv = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
184
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
185 priv = purple_chat_conversation_get_instance_private(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
186
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
187 priv->users = g_hash_table_new_full(purple_conversation_user_hash,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
188 purple_conversation_user_equal,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
189 g_free, g_object_unref);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
190 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
191
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
192 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
193 purple_chat_conversation_constructed(GObject *obj) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
194 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
195 PurpleAccount *account = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
196 PurpleConnection *connection = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
197 const gchar *display_name = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
198
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
199 G_OBJECT_CLASS(purple_chat_conversation_parent_class)->constructed(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
200
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
201 g_object_get(obj, "account", &account, NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
202
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
203 connection = purple_account_get_connection(account);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
204 display_name = purple_connection_get_display_name(connection);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
205 if(display_name != NULL) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
206 purple_chat_conversation_set_nick(chat, display_name);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
207 } else {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
208 const gchar *username = purple_account_get_username(account);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
209
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
210 purple_chat_conversation_set_nick(chat, username);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
211 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
212
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
213 g_object_unref(account);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
214 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
215
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
216 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
217 purple_chat_conversation_dispose(GObject *obj) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
218 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
219 PurpleChatConversationPrivate *priv = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
220
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
221 priv = purple_chat_conversation_get_instance_private(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
222
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
223 g_hash_table_remove_all(priv->users);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
224
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
225 G_OBJECT_CLASS(purple_chat_conversation_parent_class)->dispose(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
226 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
227
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
228 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
229 purple_chat_conversation_finalize(GObject *obj) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
230 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
231 PurpleConversation *conv = PURPLE_CONVERSATION(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
232 PurpleConnection *gc = purple_conversation_get_connection(conv);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
233 PurpleChatConversationPrivate *priv = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
234
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
235 priv = purple_chat_conversation_get_instance_private(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
236
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
237 if(PURPLE_IS_CONNECTION(gc)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
238 /* Still connected */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
239 gint chat_id = purple_chat_conversation_get_id(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
240
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
241 /*
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
242 * Close the window when the user tells us to, and let the protocol
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
243 * deal with the internals on its own time. Don't do this if the
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
244 * protocol already knows it left the chat.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
245 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
246 if(!purple_chat_conversation_has_left(chat)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
247 purple_serv_chat_leave(gc, chat_id);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
248 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
249
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
250 /*
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
251 * If they didn't call purple_serv_got_chat_left by now, it's too late.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
252 * So we better do it for them before we destroy the thing.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
253 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
254 if(!purple_chat_conversation_has_left(chat)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
255 purple_serv_got_chat_left(gc, chat_id);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
256 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
257 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
258
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
259 g_clear_pointer(&priv->users, g_hash_table_destroy);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
260
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
261 g_list_free_full(priv->ignored, g_free);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
262 priv->ignored = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
263
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
264 g_clear_pointer(&priv->who, g_free);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
265 g_clear_pointer(&priv->topic, g_free);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
266 g_clear_pointer(&priv->nick, g_free);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
267
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
268 G_OBJECT_CLASS(purple_chat_conversation_parent_class)->finalize(obj);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
269 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
270
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
271 static void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
272 purple_chat_conversation_class_init(PurpleChatConversationClass *klass) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
273 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
274 PurpleConversationClass *conv_class = PURPLE_CONVERSATION_CLASS(klass);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
275
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
276 obj_class->constructed = purple_chat_conversation_constructed;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
277 obj_class->dispose = purple_chat_conversation_dispose;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
278 obj_class->finalize = purple_chat_conversation_finalize;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
279 obj_class->get_property = purple_chat_conversation_get_property;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
280 obj_class->set_property = purple_chat_conversation_set_property;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
281
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
282 conv_class->write_message = chat_conversation_write_message;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
283
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
284 /**
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
285 * PurpleChatConversation::topic-who:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
286 *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
287 * The username who changed the topic last.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
288 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
289 properties[PROP_TOPIC_WHO] = g_param_spec_string(
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
290 "topic-who", "who set topic",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
291 "Who set the topic of the chat.",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
292 NULL,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
293 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
294
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
295 /**
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
296 * PurpleChatConversation::topic:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
297 *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
298 * The text of the topic.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
299 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
300 properties[PROP_TOPIC] = g_param_spec_string(
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
301 "topic", "topic",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
302 "The topic of the chat.",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
303 NULL,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
304 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
305
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
306 /**
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
307 * PurpleChatConversation::chat-id:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
308 *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
309 * The identifier of the chat.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
310 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
311 properties[PROP_CHAT_ID] = g_param_spec_int(
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
312 "chat-id", "chat id",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
313 "The identifier of the chat.",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
314 G_MININT, G_MAXINT, 0,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
315 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
316
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
317 /**
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
318 * PurpleChatConversation::nick:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
319 *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
320 * The nickname of the user in the chat.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
321 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
322 properties[PROP_NICK] = g_param_spec_string(
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
323 "nick", "nick",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
324 "The nickname of the user in a chat.",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
325 NULL,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
326 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
327
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
328 /**
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
329 * PurpleChatConversation::left:
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
330 *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
331 * Whether the user has left the chat or not.
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
332 */
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
333 properties[PROP_LEFT] = g_param_spec_boolean(
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
334 "left", "left",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
335 "Whether the user has left the chat.",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
336 FALSE,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
337 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
338
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
339 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
41505
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
340
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
341 /* Signals */
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
342
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
343 /**
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
344 * PurpleChatConversation::user-joined:
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
345 * @chat: The chat instance.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
346 * @username: The user that joined the conversation.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
347 * @flags: The [flags@ChatUserFlags] for user.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
348 * @new_arrival: %TRUE if the user is new to the conversation.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
349 *
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
350 * Emitted after a @username has joined the conversation.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
351 *
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
352 * Since: 3.0.0
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
353 */
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
354 signals[SIG_USER_JOINED] = g_signal_new_class_handler(
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
355 "user-joined",
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
356 G_OBJECT_CLASS_TYPE(klass),
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
357 G_SIGNAL_RUN_LAST,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
358 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
359 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
360 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
361 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
362 G_TYPE_NONE,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
363 3,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
364 G_TYPE_STRING,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
365 PURPLE_TYPE_CHAT_USER_FLAGS,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
366 G_TYPE_BOOLEAN);
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
367
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
368 /**
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
369 * PurpleChatConversation::user-left:
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
370 * @chat: The chat instance.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
371 * @username: The user that left the conversation
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
372 * @reason: The optional reason why the user left the chat.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
373 *
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
374 * Emitted after a @username has left the conversation.
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
375 *
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
376 * Since: 3.0.0
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
377 */
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
378 signals[SIG_USER_LEFT] = g_signal_new_class_handler(
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
379 "user-left",
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
380 G_OBJECT_CLASS_TYPE(klass),
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
381 G_SIGNAL_RUN_LAST,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
382 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
383 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
384 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
385 NULL,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
386 G_TYPE_NONE,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
387 2,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
388 G_TYPE_STRING,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
389 G_TYPE_STRING);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
390 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
391
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
392 /******************************************************************************
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
393 * Public API
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
394 *****************************************************************************/
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40838
diff changeset
395 PurpleConversation *
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
396 purple_chat_conversation_new(PurpleAccount *account, const gchar *name) {
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40838
diff changeset
397 PurpleConversation *chat = NULL;
40992
3a973a9c5a64 migrate libpurple to the ConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
398 PurpleConversationManager *manager = NULL;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
399 PurpleConnection *connection = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
400
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
401 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
402 g_return_val_if_fail(name != NULL, NULL);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
403
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
404 /* Check if this conversation already exists. */
40992
3a973a9c5a64 migrate libpurple to the ConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
405 manager = purple_conversation_manager_get_default();
3a973a9c5a64 migrate libpurple to the ConversationManager API
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
406 chat = purple_conversation_manager_find_chat(manager, account, name);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
407 if(PURPLE_IS_CHAT_CONVERSATION(chat)) {
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40838
diff changeset
408 if(!purple_chat_conversation_has_left(PURPLE_CHAT_CONVERSATION(chat))) {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
409 purple_debug_warning("chat-conversation", "A chat named %s "
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
410 "already exists.", name);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
411 return NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
412 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
413 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
414
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
415 connection = purple_account_get_connection(account);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
416 if(!PURPLE_IS_CONNECTION(connection)) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
417 purple_debug_warning("chat-conversation", "Refusing to create chat "
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
418 "for disconnected account %s",
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
419 purple_account_get_username(account));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
420 return NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
421 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
422
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40838
diff changeset
423 return PURPLE_CONVERSATION(g_object_new(
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
424 PURPLE_TYPE_CHAT_CONVERSATION,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
425 "account", account,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
426 "name", name,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
427 "title", name,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
428 NULL));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
429 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
430
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
431 GList *
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
432 purple_chat_conversation_get_users(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
433 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
434
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
435 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
436
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
437 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
438
35639
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
439 return g_hash_table_get_values(priv->users);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
440 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
441
35638
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
442 guint
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
443 purple_chat_conversation_get_users_count(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
444 PurpleChatConversationPrivate *priv = NULL;
35638
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
445
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
446 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), 0);
35638
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
447
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
448 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
449
35638
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
450 return g_hash_table_size(priv->users);
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
451 }
1ae6f7c41db3 Implement purple_chat_conversation_get_users_count and use it instead of counting the list
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35499
diff changeset
452
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
453 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
454 purple_chat_conversation_ignore(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
455 const gchar *name)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
456 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
457 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
458
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
459 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
460 g_return_if_fail(name != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
461
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
462 priv = purple_chat_conversation_get_instance_private(chat);
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
463
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
464 /* Make sure the user isn't already ignored. */
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
465 if(purple_chat_conversation_is_ignored_user(chat, name)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
466 return;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
467 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
468
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
469 priv->ignored = g_list_prepend(priv->ignored, g_strdup(name));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
470 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
471
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
472 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
473 purple_chat_conversation_unignore(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
474 const gchar *name)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
475 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
476 PurpleChatConversationPrivate *priv = NULL;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
477 GList *item;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
478
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
479 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
480 g_return_if_fail(name != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
481
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
482 priv = purple_chat_conversation_get_instance_private(chat);
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
483
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
484 /* Make sure the user is actually ignored. */
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
485 if(!purple_chat_conversation_is_ignored_user(chat, name)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
486 return;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
487 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
488
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
489 item = g_list_find(priv->ignored,
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
490 purple_chat_conversation_get_ignored_user(chat, name));
40061
b3ac7a4a6fc7 Replace g_list_remove_link+g_list_free_1 with g_list_delete_link
qarkai <qarkai@gmail.com>
parents: 39908
diff changeset
491 g_free(item->data);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
492
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
493 priv->ignored = g_list_delete_link(priv->ignored, item);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
494 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
495
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
496 GList *
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
497 purple_chat_conversation_set_ignored(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
498 GList *ignored)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
499 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
500 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
501
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
502 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
503
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
504 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
505
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
506 priv->ignored = ignored;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
507
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
508 return ignored;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
509 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
510
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
511 GList *
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
512 purple_chat_conversation_get_ignored(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
513 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
514
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
515 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
516
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
517 priv = purple_chat_conversation_get_instance_private(chat);
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
518 return priv->ignored;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
519 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
520
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
521 const gchar *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
522 purple_chat_conversation_get_ignored_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
523 const gchar *user)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
524 {
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
525 GList *ignored;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
526
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
527 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
528 g_return_val_if_fail(user != NULL, NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
529
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
530 ignored = purple_chat_conversation_get_ignored(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
531 for(; ignored != NULL; ignored = ignored->next) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
532 const gchar *ign = (const gchar *)ignored->data;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
533
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
534 if(!purple_utf8_strcasecmp(user, ign) ||
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
535 ((*ign == '+' || *ign == '%') &&
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
536 !purple_utf8_strcasecmp(user, ign + 1)))
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
537 {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
538 return ign;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
539 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
540
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
541 if(*ign == '@') {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
542 ign++;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
543
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
544 if((*ign == '+' && !purple_utf8_strcasecmp(user, ign + 1)) ||
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
545 (*ign != '+' && !purple_utf8_strcasecmp(user, ign)))
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
546 {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
547 return ign;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
548 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
549 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
550 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
551
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
552 return NULL;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
553 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
554
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
555 gboolean
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
556 purple_chat_conversation_is_ignored_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
557 const gchar *user)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
558 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
559 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), FALSE);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
560 g_return_val_if_fail(user != NULL, FALSE);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
561
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
562 return (purple_chat_conversation_get_ignored_user(chat, user) != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
563 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
564
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
565 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
566 purple_chat_conversation_set_topic(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
567 const gchar *who, const gchar *topic)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
568 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
569 PurpleChatConversationPrivate *priv = NULL;
35066
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
570 GObject *obj;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
571
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
572 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
573
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
574 priv = purple_chat_conversation_get_instance_private(chat);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
575
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
576 g_clear_pointer(&priv->who, g_free);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
577 g_clear_pointer(&priv->topic, g_free);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
578
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
579 priv->who = g_strdup(who);
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
580 priv->topic = g_strdup(topic);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
581
35066
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
582 obj = G_OBJECT(chat);
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
583 g_object_freeze_notify(obj);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
584 g_object_notify_by_pspec(obj, properties[PROP_TOPIC_WHO]);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
585 g_object_notify_by_pspec(obj, properties[PROP_TOPIC]);
35066
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
586 g_object_thaw_notify(obj);
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
587
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
588 purple_conversation_update(PURPLE_CONVERSATION(chat),
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
589 PURPLE_CONVERSATION_UPDATE_TOPIC);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
590
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
591 purple_signal_emit(purple_conversations_get_handle(), "chat-topic-changed",
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
592 chat, priv->who, priv->topic);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
593 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
594
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
595 const gchar *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
596 purple_chat_conversation_get_topic(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
597 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
598
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
599 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
600
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
601 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
602
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
603 return priv->topic;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
604 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
605
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
606 const gchar *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
607 purple_chat_conversation_get_topic_who(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
608 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
609
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
610 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34648
a6587d8cf907 Added missing API implementations to PurpleConversation and subclasses
Ankit Vani <a@nevitus.org>
parents: 34646
diff changeset
611
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
612 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
613
34648
a6587d8cf907 Added missing API implementations to PurpleConversation and subclasses
Ankit Vani <a@nevitus.org>
parents: 34646
diff changeset
614 return priv->who;
a6587d8cf907 Added missing API implementations to PurpleConversation and subclasses
Ankit Vani <a@nevitus.org>
parents: 34646
diff changeset
615 }
a6587d8cf907 Added missing API implementations to PurpleConversation and subclasses
Ankit Vani <a@nevitus.org>
parents: 34646
diff changeset
616
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
617 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
618 purple_chat_conversation_set_id(PurpleChatConversation *chat, gint id) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
619 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
620
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
621 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
622
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
623 priv = purple_chat_conversation_get_instance_private(chat);
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
624 priv->id = id;
35012
e07a9b9c6bda Cleaned up properties and added g_object_notify calls for PurpleConnection and PurpleConversation's
Ankit Vani <a@nevitus.org>
parents: 34986
diff changeset
625
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
626 g_object_notify_by_pspec(G_OBJECT(chat), properties[PROP_CHAT_ID]);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
627 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
628
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
629 gint
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
630 purple_chat_conversation_get_id(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
631 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
632
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
633 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), -1);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
634
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
635 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
636
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
637 return priv->id;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
638 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
639
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
640 void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
641 purple_chat_conversation_add_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
642 const gchar *user, const gchar *extra_msg,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
643 PurpleChatUserFlags flags,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
644 gboolean new_arrival)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
645 {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
646 GList *users = g_list_append(NULL, (gchar *)user);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
647 GList *extra_msgs = g_list_append(NULL, (gchar *)extra_msg);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
648 GList *flags2 = g_list_append(NULL, GINT_TO_POINTER(flags));
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
649
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
650 purple_chat_conversation_add_users(chat, users, extra_msgs, flags2,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
651 new_arrival);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
652
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
653 g_list_free(users);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
654 g_list_free(extra_msgs);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
655 g_list_free(flags2);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
656 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
657
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
658 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
659 purple_chat_conversation_add_users(PurpleChatConversation *chat, GList *users,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
660 GList *extra_msgs, GList *flags,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
661 gboolean new_arrivals)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
662 {
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
663 PurpleConversation *conv;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
664 PurpleConversationUiOps *ops;
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
665 PurpleChatUser *chatuser;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
666 PurpleChatConversationPrivate *priv;
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
667 PurpleAccount *account;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
668 PurpleConnection *gc;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36366
diff changeset
669 PurpleProtocol *protocol;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
670 GList *cbuddies = NULL;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
671 gpointer handle;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
672
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
673 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
674 g_return_if_fail(users != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
675
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
676 priv = purple_chat_conversation_get_instance_private(chat);
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
677 conv = PURPLE_CONVERSATION(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
678 ops = purple_conversation_get_ui_ops(conv);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
679
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
680 account = purple_conversation_get_account(conv);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
681 gc = purple_conversation_get_connection(conv);
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
682 g_return_if_fail(PURPLE_IS_CONNECTION(gc));
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
683
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36610
diff changeset
684 protocol = purple_connection_get_protocol(gc);
36844
b62140058cd3 Check for valid PurpleProtocols
Ankit Vani <a@nevitus.org>
parents: 36843
diff changeset
685 g_return_if_fail(PURPLE_IS_PROTOCOL(protocol));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
686
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
687 handle = purple_conversations_get_handle();
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
688
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
689 while(users != NULL && flags != NULL) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
690 const gchar *user = (const gchar *)users->data;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
691 const gchar *alias = user;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
692 gboolean quiet;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
693 PurpleChatUserFlags flag = GPOINTER_TO_INT(flags->data);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
694 const gchar *extra_msg = (extra_msgs ? extra_msgs->data : NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
695
36607
7ad7681dcfd8 Use purple_protocol_get_* API instead of protocol->member
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
696 if(!(purple_protocol_get_options(protocol) & OPT_PROTO_UNIQUE_CHATNAME)) {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
697 if(purple_strequal(priv->nick, purple_normalize(account, user))) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
698 const gchar *alias2 = purple_account_get_private_alias(account);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
699 if(alias2 != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
700 alias = alias2;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
701 } else {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
702 const gchar *display_name = purple_connection_get_display_name(gc);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
703 if(display_name != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
704 alias = display_name;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
705 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
706 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
707 } else {
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
708 PurpleBuddy *buddy;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
709 if((buddy = purple_blist_find_buddy(purple_connection_get_account(gc), user)) != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
710 alias = purple_buddy_get_contact_alias(buddy);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
711 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
712 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
713 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
714
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
715 quiet = GPOINTER_TO_INT(purple_signal_emit_return_1(handle,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
716 "chat-user-joining", chat, user, flag)) ||
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
717 purple_chat_conversation_is_ignored_user(chat, user);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
718
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
719 chatuser = purple_chat_user_new(chat, user, alias, flag);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
720
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
721 g_hash_table_replace(priv->users,
35639
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
722 g_strdup(purple_chat_user_get_name(chatuser)),
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
723 chatuser);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
724
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
725 cbuddies = g_list_prepend(cbuddies, chatuser);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
726
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
727 if(!quiet && new_arrivals) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
728 gchar *alias_esc = g_markup_escape_text(alias, -1);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
729 gchar *tmp;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
730
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
731 if(extra_msg == NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
732 tmp = g_strdup_printf(_("%s entered the room."), alias_esc);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
733 } else {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
734 gchar *extra_msg_esc = g_markup_escape_text(extra_msg, -1);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
735 tmp = g_strdup_printf(_("%s [<I>%s</I>] entered the room."),
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
736 alias_esc, extra_msg_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
737 g_free(extra_msg_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
738 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
739 g_free(alias_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
740
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
741 purple_conversation_write_system_message(conv, tmp,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
742 PURPLE_MESSAGE_NO_LINKIFY);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
743 g_free(tmp);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
744 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
745
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
746 purple_signal_emit(handle, "chat-user-joined", chat, user, flag,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
747 new_arrivals);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
748
41505
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
749 g_signal_emit(chat, signals[SIG_USER_JOINED], 0, user, flag,
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
750 new_arrivals);
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
751
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
752 users = users->next;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
753 flags = flags->next;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
754 if(extra_msgs != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
755 extra_msgs = extra_msgs->next;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
756 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
757 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
758
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
759 cbuddies = g_list_sort(cbuddies, (GCompareFunc)purple_chat_user_compare);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
760
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
761 if(ops != NULL && ops->chat_add_users != NULL) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
762 ops->chat_add_users(chat, cbuddies, new_arrivals);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
763 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
764
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
765 g_list_free(cbuddies);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
766 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
767
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
768 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
769 purple_chat_conversation_rename_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
770 const gchar *old_user,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
771 const gchar *new_user)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
772 {
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
773 PurpleConversation *conv;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
774 PurpleConversationUiOps *ops;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
775 PurpleAccount *account;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
776 PurpleConnection *gc;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36366
diff changeset
777 PurpleProtocol *protocol;
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
778 PurpleChatUser *cb;
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
779 PurpleChatUserFlags flags;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
780 PurpleChatConversationPrivate *priv;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
781 const gchar *new_alias = new_user;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
782 gchar tmp[BUF_LONG];
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
783 gboolean is_me = FALSE;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
784
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
785 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
786 g_return_if_fail(old_user != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
787 g_return_if_fail(new_user != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
788
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
789 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
790 conv = PURPLE_CONVERSATION(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
791 ops = purple_conversation_get_ui_ops(conv);
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
792 account = purple_conversation_get_account(conv);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
793
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
794 gc = purple_conversation_get_connection(conv);
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
795 g_return_if_fail(PURPLE_IS_CONNECTION(gc));
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36610
diff changeset
796 protocol = purple_connection_get_protocol(gc);
36844
b62140058cd3 Check for valid PurpleProtocols
Ankit Vani <a@nevitus.org>
parents: 36843
diff changeset
797 g_return_if_fail(PURPLE_IS_PROTOCOL(protocol));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
798
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
799 if(purple_strequal(priv->nick, purple_normalize(account, old_user))) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
800 const gchar *alias;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
801
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
802 /* Note this for later. */
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
803 is_me = TRUE;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
804
36607
7ad7681dcfd8 Use purple_protocol_get_* API instead of protocol->member
Ankit Vani <a@nevitus.org>
parents: 36606
diff changeset
805 if(!(purple_protocol_get_options(protocol) & OPT_PROTO_UNIQUE_CHATNAME)) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
806 alias = purple_account_get_private_alias(account);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
807 if(alias != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
808 new_alias = alias;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
809 } else {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
810 const gchar *display_name = purple_connection_get_display_name(gc);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
811 if(display_name != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
812 new_alias = display_name;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
813 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
814 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
815 }
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
816 } else if(!(purple_protocol_get_options(protocol) & OPT_PROTO_UNIQUE_CHATNAME)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
817 PurpleBuddy *buddy;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
818 if((buddy = purple_blist_find_buddy(purple_connection_get_account(gc), new_user)) != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
819 new_alias = purple_buddy_get_contact_alias(buddy);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
820 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
821 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
822
34671
ca9b45be7a63 Renamed chat buddy to chat user in a few more places
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
823 flags = purple_chat_user_get_flags(purple_chat_conversation_find_user(chat, old_user));
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
824 cb = purple_chat_user_new(chat, new_user, new_alias, flags);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
825
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
826 g_hash_table_replace(priv->users,
35639
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
827 g_strdup(purple_chat_user_get_name(cb)), cb);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
828
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
829 if(ops != NULL && ops->chat_rename_user != NULL) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
830 ops->chat_rename_user(chat, old_user, new_user, new_alias);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
831 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
832
34671
ca9b45be7a63 Renamed chat buddy to chat user in a few more places
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
833 cb = purple_chat_conversation_find_user(chat, old_user);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
834 if(cb) {
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
835 g_hash_table_remove(priv->users, purple_chat_user_get_name(cb));
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
836 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
837
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
838 if(purple_chat_conversation_is_ignored_user(chat, old_user)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
839 purple_chat_conversation_unignore(chat, old_user);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
840 purple_chat_conversation_ignore(chat, new_user);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
841 } else if(purple_chat_conversation_is_ignored_user(chat, new_user)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
842 purple_chat_conversation_unignore(chat, new_user);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
843 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
844
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
845 if(is_me) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
846 purple_chat_conversation_set_nick(chat, new_user);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
847 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
848
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
849 if(purple_prefs_get_bool("/purple/conversations/chat/show_nick_change") &&
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
850 !purple_chat_conversation_is_ignored_user(chat, new_user))
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
851 {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
852 if(is_me) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
853 gchar *escaped = g_markup_escape_text(new_user, -1);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
854 g_snprintf(tmp, sizeof(tmp), _("You are now known as %s"),
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
855 escaped);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
856 g_free(escaped);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
857 } else {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
858 const gchar *old_alias = old_user;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
859 const gchar *new_alias = new_user;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
860 gchar *escaped;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
861 gchar *escaped2;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
862
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
863 if(!(purple_protocol_get_options(protocol) & OPT_PROTO_UNIQUE_CHATNAME)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
864 PurpleBuddy *buddy;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
865
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
866 if((buddy = purple_blist_find_buddy(account, old_user)) != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
867 old_alias = purple_buddy_get_contact_alias(buddy);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
868 }
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
869
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
870 if((buddy = purple_blist_find_buddy(account, new_user)) != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
871 new_alias = purple_buddy_get_contact_alias(buddy);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
872 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
873 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
874
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
875 escaped = g_markup_escape_text(old_alias, -1);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
876 escaped2 = g_markup_escape_text(new_alias, -1);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
877 g_snprintf(tmp, sizeof(tmp), _("%s is now known as %s"), escaped,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
878 escaped2);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
879 g_free(escaped);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
880 g_free(escaped2);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
881 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
882
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
883 purple_conversation_write_system_message(conv, tmp,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
884 PURPLE_MESSAGE_NO_LINKIFY);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
885 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
886 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
887
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
888 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
889 purple_chat_conversation_remove_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
890 const gchar *user, const gchar *reason)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
891 {
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
892 GList *users = g_list_append(NULL, (gchar *)user);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
893
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
894 purple_chat_conversation_remove_users(chat, users, reason);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
895
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
896 g_list_free(users);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
897 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
898
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
899 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
900 purple_chat_conversation_remove_users(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
901 GList *users, const gchar *reason)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
902 {
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
903 PurpleConversation *conv;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
904 PurpleConnection *gc;
36544
1bf8b6ef5aea Renamed PurplePluginProtocolInfo to PurpleProtocol
Ankit Vani <a@nevitus.org>
parents: 36366
diff changeset
905 PurpleProtocol *protocol;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
906 PurpleConversationUiOps *ops;
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
907 PurpleChatUser *cb;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
908 PurpleChatConversationPrivate *priv;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
909 GList *l;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
910 gboolean quiet;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
911 gpointer handle;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
912
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
913 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
914 g_return_if_fail(users != NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
915
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
916 priv = purple_chat_conversation_get_instance_private(chat);
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
917 conv = PURPLE_CONVERSATION(chat);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
918
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
919 gc = purple_conversation_get_connection(conv);
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
920 g_return_if_fail(PURPLE_IS_CONNECTION(gc));
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
921
36623
caaadef03507 Renamed purple_connection_get_protocol_info() to purple_connection_get_protocol()
Ankit Vani <a@nevitus.org>
parents: 36610
diff changeset
922 protocol = purple_connection_get_protocol(gc);
36844
b62140058cd3 Check for valid PurpleProtocols
Ankit Vani <a@nevitus.org>
parents: 36843
diff changeset
923 g_return_if_fail(PURPLE_IS_PROTOCOL(protocol));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
924
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
925 ops = purple_conversation_get_ui_ops(conv);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
926 handle = purple_conversations_get_handle();
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
927
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
928 for(l = users; l != NULL; l = l->next) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
929 const gchar *user = (const gchar *)l->data;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
930 quiet = GPOINTER_TO_INT(purple_signal_emit_return_1(handle,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
931 "chat-user-leaving", chat, user, reason)) |
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
932 purple_chat_conversation_is_ignored_user(chat, user);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
933
34671
ca9b45be7a63 Renamed chat buddy to chat user in a few more places
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
934 cb = purple_chat_conversation_find_user(chat, user);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
935
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
936 if(cb) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
937 g_hash_table_remove(priv->users, purple_chat_user_get_name(cb));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
938 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
939
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
940 /* NOTE: Don't remove them from ignored in case they re-enter. */
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
941 if(!quiet) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
942 const gchar *alias = user;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
943 gchar *alias_esc;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
944 gchar *tmp;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
945
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
946 if(!(purple_protocol_get_options(protocol) & OPT_PROTO_UNIQUE_CHATNAME)) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
947 PurpleBuddy *buddy;
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
948
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
949 if((buddy = purple_blist_find_buddy(purple_connection_get_account(gc), user)) != NULL) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
950 alias = purple_buddy_get_contact_alias(buddy);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
951 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
952 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
953
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
954 alias_esc = g_markup_escape_text(alias, -1);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
955
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
956 if(reason == NULL || !*reason) {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
957 tmp = g_strdup_printf(_("%s left the room."), alias_esc);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
958 } else {
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
959 char *reason_esc = g_markup_escape_text(reason, -1);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
960 tmp = g_strdup_printf(_("%s left the room (%s)."),
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
961 alias_esc, reason_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
962 g_free(reason_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
963 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
964 g_free(alias_esc);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
965
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
966 purple_conversation_write_system_message(conv, tmp,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
967 PURPLE_MESSAGE_NO_LINKIFY);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
968 g_free(tmp);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
969 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
970
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
971 purple_signal_emit(handle, "chat-user-left", conv, user, reason);
41505
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
972
3f120d577610 Add user-joined and user-left gobject signals to PurpleChatConversation
Gary Kramlich <grim@reaperworld.com>
parents: 41137
diff changeset
973 g_signal_emit(chat, signals[SIG_USER_LEFT], 0, user, reason);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
974 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
975
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
976 if(ops != NULL && ops->chat_remove_users != NULL) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
977 ops->chat_remove_users(chat, users);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
978 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
979 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
980
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
981 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
982 purple_chat_conversation_clear_users(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
983 PurpleChatConversationPrivate *priv = NULL;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
984 PurpleConversationUiOps *ops = NULL;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
985 GList *names = NULL;
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
986
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
987 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
988
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
989 priv = purple_chat_conversation_get_instance_private(chat);
35639
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
990 ops = purple_conversation_get_ui_ops(PURPLE_CONVERSATION(chat));
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
991 names = g_hash_table_get_keys(priv->users);
35639
7391a9c98a1d Remove _PurpleChatConversationPrivate->in_room
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35638
diff changeset
992
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
993 if(ops != NULL && ops->chat_remove_users != NULL) {
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
994 ops->chat_remove_users(chat, names);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
995 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
996
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
997 g_list_foreach(names, purple_chat_conversation_clear_users_helper, chat);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
998
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
999 g_list_free(names);
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1000 g_hash_table_remove_all(priv->users);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1001 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1002
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1003 void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1004 purple_chat_conversation_set_nick(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1005 const gchar *nick)
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1006 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1007 PurpleChatConversationPrivate *priv = NULL;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1008 PurpleAccount *account = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1009
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1010 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1011
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1012 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1013
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1014 account = purple_conversation_get_account(PURPLE_CONVERSATION(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1015
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1016 g_free(priv->nick);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1017 priv->nick = g_strdup(purple_normalize(account, nick));
35012
e07a9b9c6bda Cleaned up properties and added g_object_notify calls for PurpleConnection and PurpleConversation's
Ankit Vani <a@nevitus.org>
parents: 34986
diff changeset
1018
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1019 g_object_notify_by_pspec(G_OBJECT(chat), properties[PROP_NICK]);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1020 }
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1021
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1022 const gchar *
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1023 purple_chat_conversation_get_nick(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1024 PurpleChatConversationPrivate *priv = NULL;
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1025
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1026 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1027
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1028 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1029
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1030 return priv->nick;
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1031 }
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1032
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1033 static void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1034 invite_user_to_chat(gpointer data, PurpleRequestFields *fields) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1035 PurpleChatConversation *chat;
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1036 PurpleChatConversationPrivate *priv;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1037 PurpleConnection *pc;
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1038 const gchar *user, *message;
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1039
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1040 chat = PURPLE_CHAT_CONVERSATION(data);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1041 priv = purple_chat_conversation_get_instance_private(chat);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1042
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1043 user = purple_request_fields_get_string(fields, "screenname");
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1044 message = purple_request_fields_get_string(fields, "message");
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1045
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1046 pc = purple_conversation_get_connection(PURPLE_CONVERSATION(chat));
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1047 purple_serv_chat_invite(pc, priv->id, message, user);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1048 }
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1049
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1050 void
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1051 purple_chat_conversation_invite_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1052 const gchar *user, const gchar *message,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1053 gboolean confirm)
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1054 {
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1055 PurpleAccount *account;
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1056 PurpleRequestFields *fields;
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1057 PurpleRequestFieldGroup *group;
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1058 PurpleRequestField *field;
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1059
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
1060 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1061
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1062 if(user == NULL || *user == '\0' || message == NULL || *message == '\0') {
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1063 confirm = TRUE;
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1064 }
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1065
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1066 account = purple_conversation_get_account(PURPLE_CONVERSATION(chat));
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1067
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1068 if(!confirm) {
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35460
diff changeset
1069 purple_serv_chat_invite(purple_account_get_connection(account),
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1070 purple_chat_conversation_get_id(chat), message,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1071 user);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1072 return;
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1073 }
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1074
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1075 fields = purple_request_fields_new();
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1076 group = purple_request_field_group_new(_("Invite to chat"));
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1077 purple_request_fields_add_group(fields, group);
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1078
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1079 field = purple_request_field_string_new("screenname", _("Buddy"), user,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1080 FALSE);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1081 purple_request_field_group_add_field(group, field);
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1082 purple_request_field_set_required(field, TRUE);
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1083 purple_request_field_set_type_hint(field, "screenname");
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1084
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1085 field = purple_request_field_string_new("message", _("Message"), message,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1086 FALSE);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1087 purple_request_field_group_add_field(group, field);
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1088
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1089 purple_request_fields(chat, _("Invite to chat"), NULL,
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1090 _("Please enter the name of the user you wish to "
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1091 "invite, along with an optional invite message."),
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1092 fields,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1093 _("Invite"), G_CALLBACK(invite_user_to_chat),
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1094 _("Cancel"), NULL,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1095 purple_request_cpar_from_conversation(PURPLE_CONVERSATION(chat)),
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1096 chat);
34649
4a0ec0fff2e1 Refactored PurpleConversation base object to use the GObject conversation API
Ankit Vani <a@nevitus.org>
parents: 34648
diff changeset
1097 }
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1098
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1099 gboolean
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1100 purple_chat_conversation_has_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1101 const gchar *user)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1102 {
34983
81638be26f41 Check types of GObjects instead of just for NULL values
Ankit Vani <a@nevitus.org>
parents: 34945
diff changeset
1103 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), FALSE);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1104 g_return_val_if_fail(user != NULL, FALSE);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1105
34671
ca9b45be7a63 Renamed chat buddy to chat user in a few more places
Ankit Vani <a@nevitus.org>
parents: 34670
diff changeset
1106 return (purple_chat_conversation_find_user(chat, user) != NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1107 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1108
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1109 void
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1110 purple_chat_conversation_leave(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1111 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1112
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1113 g_return_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat));
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1114
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1115 priv = purple_chat_conversation_get_instance_private(chat);
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1116 priv->left = TRUE;
35066
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
1117
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1118 if(!g_object_get_data(G_OBJECT(chat), "is-finalizing")) {
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1119 g_object_notify_by_pspec(G_OBJECT(chat), properties[PROP_LEFT]);
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1120 }
35066
f997e5384f79 libpurple: Use G_PARAM_STATIC_STRINGS and ensure g_object_notify is always called
Ankit Vani <a@nevitus.org>
parents: 35058
diff changeset
1121
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1122 purple_conversation_update(PURPLE_CONVERSATION(chat),
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1123 PURPLE_CONVERSATION_UPDATE_CHATLEFT);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1124 }
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1125
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1126 gboolean
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1127 purple_chat_conversation_has_left(PurpleChatConversation *chat) {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1128 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1129
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1130 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), TRUE);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1131
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1132 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1133
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1134 return priv->left;
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1135 }
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1136
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34669
diff changeset
1137 PurpleChatUser *
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1138 purple_chat_conversation_find_user(PurpleChatConversation *chat,
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1139 const gchar *name)
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1140 {
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1141 PurpleChatConversationPrivate *priv = NULL;
34651
88c104a20f4b Refactored the PurpleConversation subclasses and subsystem to use the GObject conversation API.
Ankit Vani <a@nevitus.org>
parents: 34649
diff changeset
1142
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1143 g_return_val_if_fail(PURPLE_IS_CHAT_CONVERSATION(chat), NULL);
34602
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1144 g_return_val_if_fail(name != NULL, NULL);
dbe6ee43aaa7 Created conversationtypes.[ch] for PurpleChatConversation and PurpleIMConversation
Ankit Vani <a@nevitus.org>
parents:
diff changeset
1145
39782
db027c5e1463 Fix broken `priv != NULL` checks in libpurple.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39556
diff changeset
1146 priv = purple_chat_conversation_get_instance_private(chat);
40838
73407e00ec5d Modernizing PurpleChatConversation.
Gary Kramlich <grim@reaperworld.com>
parents: 40517
diff changeset
1147
34646
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1148 return g_hash_table_lookup(priv->users, name);
e7f4631e93f7 Begun adding GObject code to conversation sources
Ankit Vani <a@nevitus.org>
parents: 34620
diff changeset
1149 }

mercurial