libpurple/purplechatconversation.c

Wed, 16 Nov 2022 22:34:18 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 16 Nov 2022 22:34:18 -0600
changeset 41917
b3eda1d781c6
parent 41505
3f120d577610
child 41976
49969fa9a664
permissions
-rw-r--r--

Fix some include loops

This is needed for something else I'm working on, but it was much easier to
find/fix outside of that code.

Testing Done:
Compiled

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

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

mercurial