libpurple/protocols/null/nullprpl.c

Mon, 26 Jul 2021 04:13:19 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 26 Jul 2021 04:13:19 -0500
changeset 40997
997ab408c113
parent 40948
2c312f084d84
child 41028
943b2cb45314
permissions
-rw-r--r--

Port the protocol plugins to the purple_conversation_manager_api

Testing Done:
Connected an xmpp and irc account and verified chats and ims worked.

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

17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1 /**
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
2 * purple
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
3 *
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
6 * source distribution.
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
7 *
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
8 * Nullprpl is a mock protocol plugin for Pidgin and libpurple. You can create
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
9 * accounts with it, sign on and off, add buddies, and send and receive IMs,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
10 * all without connecting to a server!
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30138
diff changeset
11 *
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
12 * Beyond that basic functionality, nullprpl supports presence and
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
13 * away/available messages, offline messages, user info, typing notification,
37148
50f361d39a1e Merged default branch
Ankit Vani <a@nevitus.org>
parents: 37146 36098
diff changeset
14 * privacy allow/block lists, chat rooms, room lists, and protocol
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
15 * icons and emblems. Notable missing features are file transfer and account
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
16 * registration and authentication.
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30138
diff changeset
17 *
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
18 * Nullprpl is intended as an example of how to write a libpurple protocol
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
19 * plugin. It doesn't contain networking code or an event loop, but it does
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
20 * demonstrate how to use the libpurple API to do pretty much everything a
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
21 * protocol might need to do.
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30138
diff changeset
22 *
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
23 * Nullprpl is also a useful tool for hacking on Pidgin, Finch, and other
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
24 * libpurple clients. It's a full-featured protocol plugin, but doesn't depend
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
25 * on an external server, so it's a quick and easy way to exercise test new
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
26 * code. It also allows you to work while you're disconnected.
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
27 *
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
28 * This program is free software; you can redistribute it and/or modify
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
29 * it under the terms of the GNU General Public License as published by
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
30 * the Free Software Foundation; either version 2 of the License, or
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
31 * (at your option) any later version.
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
32 *
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
33 * This program is distributed in the hope that it will be useful,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
34 * but WITHOUT ANY WARRANTY; without even the implied warranty of
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
35 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
36 * GNU General Public License for more details.
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
37 *
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
38 * You should have received a copy of the GNU General Public License
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
39 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19832
diff changeset
40 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
41 */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
42
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
43 #include <stdarg.h>
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
44 #include <string.h>
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
45 #include <time.h>
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
46
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
47 #include <glib.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: 40087
diff changeset
48 #include <glib/gi18n-lib.h>
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
49
40945
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
50 #include <gplugin.h>
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
51 #include <gplugin-native.h>
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
52
39877
4bc87b3dbca4 Get the null prpl working again and build it by default but don't install it
Gary Kramlich <grim@reaperworld.com>
parents: 39760
diff changeset
53 #include <purple.h>
24332
9c7586a57e1b Add a comment documenting the internal.h situation for people using nullprpl
Richard Laager <rlaager@pidgin.im>
parents: 24231
diff changeset
54
37009
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
55 #include "nullprpl.h"
36657
4a7f5f97d1ec Make sure internal.h is included first
Ankit Vani <a@nevitus.org>
parents: 36653
diff changeset
56
40865
82e45cd837fa Migrate gg, novel, null, sametime, silc, and zephyr to using G_DECLARE_FINAL_TYPE for their protocol objects
Gary Kramlich <grim@reaperworld.com>
parents: 40813
diff changeset
57 struct _NullProtocol {
82e45cd837fa Migrate gg, novel, null, sametime, silc, and zephyr to using G_DECLARE_FINAL_TYPE for their protocol objects
Gary Kramlich <grim@reaperworld.com>
parents: 40813
diff changeset
58 PurpleProtocol parent;
82e45cd837fa Migrate gg, novel, null, sametime, silc, and zephyr to using G_DECLARE_FINAL_TYPE for their protocol objects
Gary Kramlich <grim@reaperworld.com>
parents: 40813
diff changeset
59 };
82e45cd837fa Migrate gg, novel, null, sametime, silc, and zephyr to using G_DECLARE_FINAL_TYPE for their protocol objects
Gary Kramlich <grim@reaperworld.com>
parents: 40813
diff changeset
60
36663
c61b6dbc1f03 Make protocols unregister their commands when being removed
Ankit Vani <a@nevitus.org>
parents: 36657
diff changeset
61 /*
c61b6dbc1f03 Make protocols unregister their commands when being removed
Ankit Vani <a@nevitus.org>
parents: 36657
diff changeset
62 * reference to the protocol instance, used for registering signals, prefs,
c61b6dbc1f03 Make protocols unregister their commands when being removed
Ankit Vani <a@nevitus.org>
parents: 36657
diff changeset
63 * etc. it is set when the protocol is added in plugin_load and is required
c61b6dbc1f03 Make protocols unregister their commands when being removed
Ankit Vani <a@nevitus.org>
parents: 36657
diff changeset
64 * for removing the protocol in plugin_unload.
c61b6dbc1f03 Make protocols unregister their commands when being removed
Ankit Vani <a@nevitus.org>
parents: 36657
diff changeset
65 */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
66 static PurpleProtocol *my_protocol = NULL;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
67
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
68 #define NULL_STATUS_ONLINE "online"
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
69 #define NULL_STATUS_AWAY "away"
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
70 #define NULL_STATUS_OFFLINE "offline"
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
71
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
72 typedef void (*GcFunc)(PurpleConnection *from,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
73 PurpleConnection *to,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
74 gpointer userdata);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
75
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
76 typedef struct {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
77 GcFunc fn;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
78 PurpleConnection *from;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
79 gpointer userdata;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
80 } GcFuncData;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
81
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
82 /*
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
83 * stores offline messages that haven't been delivered yet. maps username
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36664
diff changeset
84 * (char *) to GList * of GOfflineMessages. initialized in plugin_load.
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
85 */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
86 GHashTable* goffline_messages = NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
87
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
88 typedef struct {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
89 char *from;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
90 char *message;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
91 time_t mtime;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
92 PurpleMessageFlags flags;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
93 } GOfflineMessage;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
94
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
95 /*
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
96 * helpers
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
97 */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
98 static PurpleConnection *get_null_gc(const char *username) {
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
99 PurpleAccount *acct = purple_accounts_find(username, "null");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
100 if (acct && purple_account_is_connected(acct))
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
101 return purple_account_get_connection(acct);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
102 else
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
103 return NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
104 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
105
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
106 static void call_if_nullprotocol(gpointer data, gpointer userdata) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
107 PurpleConnection *gc = (PurpleConnection *)(data);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
108 GcFuncData *gcfdata = (GcFuncData *)userdata;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
109
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 37163 38266
diff changeset
110 if (purple_strequal(purple_account_get_protocol_id(purple_connection_get_account(gc)), "null"))
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
111 gcfdata->fn(gcfdata->from, gc, gcfdata->userdata);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
112 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
113
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
114 static void foreach_null_gc(GcFunc fn, PurpleConnection *from,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
115 gpointer userdata) {
17452
3d8aed6247d0 Minor changes:
Richard Laager <rlaager@pidgin.im>
parents: 17451
diff changeset
116 GcFuncData gcfdata = { fn, from, userdata };
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
117 g_list_foreach(purple_connections_get_all(), call_if_nullprotocol,
17452
3d8aed6247d0 Minor changes:
Richard Laager <rlaager@pidgin.im>
parents: 17451
diff changeset
118 &gcfdata);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
119 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
120
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
121
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
122 typedef void(*ChatFunc)(PurpleConversation *from, PurpleConversation *to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
123 int id, const char *room, gpointer userdata);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
124
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
125 typedef struct {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
126 ChatFunc fn;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
127 PurpleConversation *from_chat;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
128 gpointer userdata;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
129 } ChatFuncData;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
130
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
131 static void call_chat_func(gpointer data, gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
132 PurpleConnection *to = (PurpleConnection *)data;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
133 PurpleConversation *chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
134 PurpleConversationManager *manager;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
135 ChatFuncData *cfdata = (ChatFuncData *)userdata;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
136 int id = purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(cfdata->from_chat));
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
137
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
138 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
139 chat = purple_conversation_manager_find_chat_by_id(manager,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
140 purple_connection_get_account(to),
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
141 id);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
142 if (chat) {
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
143 cfdata->fn(cfdata->from_chat, chat, id,
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
144 purple_conversation_get_name(chat), cfdata->userdata);
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
145 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
146 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
147
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
148 static void foreach_gc_in_chat(ChatFunc fn, PurpleConnection *from,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
149 int id, gpointer userdata) {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
150 PurpleConversation *chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
151 PurpleConversationManager *manager;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
152 ChatFuncData cfdata = {
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
153 .fn = fn,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
154 .userdata = userdata
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
155 };
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
156
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
157 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
158 chat = purple_conversation_manager_find_chat_by_id(manager,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
159 purple_connection_get_account(from),
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
160 id);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
161
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
162 cfdata.from_chat = chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
163
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
164 g_list_foreach(purple_connections_get_all(), call_chat_func, &cfdata);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
165 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
166
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
167
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
168 static void discover_status(PurpleConnection *from, PurpleConnection *to,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
169 gpointer userdata) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
170 const char *from_username = purple_account_get_username(purple_connection_get_account(from));
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
171 const char *to_username = purple_account_get_username(purple_connection_get_account(to));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
172
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34706
diff changeset
173 if (purple_blist_find_buddy(purple_connection_get_account(from), to_username)) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
174 PurpleStatus *status = purple_account_get_active_status(purple_connection_get_account(to));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
175 const char *status_id = purple_status_get_id(status);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
176 const char *message = purple_status_get_attr_string(status, "message");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
177
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31595
diff changeset
178 if (purple_strequal(status_id, NULL_STATUS_ONLINE) ||
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31595
diff changeset
179 purple_strequal(status_id, NULL_STATUS_AWAY) ||
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 31595
diff changeset
180 purple_strequal(status_id, NULL_STATUS_OFFLINE)) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
181 purple_debug_info("nullprpl", "%s sees that %s is %s: %s\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
182 from_username, to_username, status_id, message);
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
183 purple_protocol_got_user_status(purple_connection_get_account(from), to_username, status_id,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
184 (message) ? "message" : NULL, message, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
185 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
186 purple_debug_error("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
187 "%s's buddy %s has an unknown status: %s, %s",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
188 from_username, to_username, status_id, message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
189 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
190 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
191 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
192
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
193 static void report_status_change(PurpleConnection *from, PurpleConnection *to,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
194 gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
195 purple_debug_info("nullprpl", "notifying %s that %s changed status\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
196 purple_account_get_username(purple_connection_get_account(to)), purple_account_get_username(purple_connection_get_account(from)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
197 discover_status(to, from, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
198 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
199
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
200
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30138
diff changeset
201 /*
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
202 * UI callbacks
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
203 */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
204 static void null_input_user_info(PurpleProtocolAction *action)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
205 {
36453
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
206 PurpleConnection *gc = action->connection;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
207 PurpleAccount *acct = purple_connection_get_account(gc);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
208 purple_debug_info("nullprpl", "showing 'Set User Info' dialog for %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
209 purple_account_get_username(acct));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
210
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
211 purple_account_request_change_user_info(acct);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
212 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
213
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
214 /*
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36628
diff changeset
215 * Protocol functions
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
216 */
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
217 static GList *
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
218 null_get_actions(PurpleProtocolClient *client, PurpleConnection *gc) {
36494
40bae9b0c9fc Updated nullprpl according to the changes
Ankit Vani <a@nevitus.org>
parents: 36486
diff changeset
219 PurpleProtocolAction *action = purple_protocol_action_new(
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
220 _("Set User Info..."), null_input_user_info);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
221 return g_list_append(NULL, action);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
222 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
223
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
224 static const char *null_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
225 {
25002
40a1b3360a50 Various nullprpl fixes.
Richard Laager <rlaager@pidgin.im>
parents: 24332
diff changeset
226 return "null";
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
227 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
228
40813
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
229 static GList *
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
230 null_protocol_get_account_options(PurpleProtocol *protocol) {
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
231 PurpleAccountOption *option;
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
232
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
233 option = purple_account_option_string_new(
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
234 _("Example option"), /* text shown to user */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
235 "example", /* pref name */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
236 "default"); /* default value */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
237
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
238 return g_list_append(NULL, option);
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
239 }
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
240
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
241 static PurpleBuddyIconSpec *
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
242 null_protocol_get_buddy_icon_spec(PurpleProtocol *protocol) {
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
243 return purple_buddy_icon_spec_new(
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
244 "png,jpg,gif", /* format */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
245 0, /* min_width */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
246 0, /* min_height */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
247 128, /* max_width */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
248 128, /* max_height */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
249 10000, /* max_filesize */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
250 PURPLE_ICON_SCALE_DISPLAY /* scale_rules */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
251 );
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
252 }
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
253
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
254 static GList *
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
255 null_protocol_get_user_splits(PurpleProtocol *protocol) {
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
256 PurpleAccountUserSplit *split;
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
257
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
258 split = purple_account_user_split_new(
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
259 _("Example user split"), /* text shown to user */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
260 "default", /* default value */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
261 '@'); /* field separator */
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
262
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
263 return g_list_append(NULL, split);
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
264 }
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
265
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
266 static char *
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
267 null_status_text(PurpleProtocolClient *client, PurpleBuddy *buddy) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
268 purple_debug_info("nullprpl", "getting %s's status text for %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
269 purple_buddy_get_name(buddy),
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
270 purple_account_get_username(purple_buddy_get_account(buddy)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
271
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
272 if (purple_blist_find_buddy(purple_buddy_get_account(buddy), purple_buddy_get_name(buddy))) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
273 PurplePresence *presence = purple_buddy_get_presence(buddy);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
274 PurpleStatus *status = purple_presence_get_active_status(presence);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
275 const char *name = purple_status_get_name(status);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
276 const char *message = purple_status_get_attr_string(status, "message");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
277
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
278 char *text;
32189
3af8d41121b6 Don't use strlen() when all you're trying to do is check if the string
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
279 if (message && *message)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
280 text = g_strdup_printf("%s: %s", name, message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
281 else
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
282 text = g_strdup(name);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
283
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
284 purple_debug_info("nullprpl", "%s's status text is %s\n",
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
285 purple_buddy_get_name(buddy), text);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
286 return text;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
287
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
288 } else {
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
289 purple_debug_info("nullprpl", "...but %s is not logged in\n", purple_buddy_get_name(buddy));
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
290 return g_strdup("Not logged in");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
291 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
292 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
293
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
294 static void
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
295 null_tooltip_text(PurpleProtocolClient *client, PurpleBuddy *buddy,
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
296 PurpleNotifyUserInfo *info, gboolean full)
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
297 {
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
298 PurpleConnection *gc = get_null_gc(purple_buddy_get_name(buddy));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
299
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
300 if (gc) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
301 /* they're logged in */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
302 PurplePresence *presence = purple_buddy_get_presence(buddy);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
303 PurpleStatus *status = purple_presence_get_active_status(presence);
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
304 char *msg = null_status_text(client, buddy);
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
305 /* TODO: Check whether it's correct to call add_pair_html,
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
306 or if we should be using add_pair_plaintext */
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
307 purple_notify_user_info_add_pair_html(info, purple_status_get_name(status),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
308 msg);
24865
053ddd0ba317 Small leak fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24862
diff changeset
309 g_free(msg);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
310
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
311 if (full) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
312 const char *user_info = purple_account_get_user_info(purple_connection_get_account(gc));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
313 if (user_info)
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
314 /* TODO: Check whether it's correct to call add_pair_html,
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
315 or if we should be using add_pair_plaintext */
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
316 purple_notify_user_info_add_pair_html(info, _("User info"), user_info);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
317 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
318
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
319 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
320 /* they're not logged in */
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
321 purple_notify_user_info_add_pair_plaintext(info, _("User info"), _("not logged in"));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
322 }
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
323
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
324 purple_debug_info("nullprpl", "showing %s tooltip for %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
325 (full) ? "full" : "short", purple_buddy_get_name(buddy));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
326 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
327
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
328 static GList *null_status_types(PurpleAccount *acct)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
329 {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
330 GList *types = NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
331 PurpleStatusType *type;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
332
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
333 purple_debug_info("nullprpl", "returning status types for %s: %s, %s, %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
334 purple_account_get_username(acct),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
335 NULL_STATUS_ONLINE, NULL_STATUS_AWAY, NULL_STATUS_OFFLINE);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
336
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
337 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
338 NULL_STATUS_ONLINE, NULL, TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34991
diff changeset
339 "message", _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
340 NULL);
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
341 types = g_list_prepend(types, type);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
342
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
343 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
344 NULL_STATUS_AWAY, NULL, TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34991
diff changeset
345 "message", _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
346 NULL);
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
347 types = g_list_prepend(types, type);
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
348
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
349 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
350 NULL_STATUS_OFFLINE, NULL, TRUE, TRUE, FALSE,
35005
bff56dfca65d Renamed purple_g_value_* to purple_value_*
Ankit Vani <a@nevitus.org>
parents: 34991
diff changeset
351 "message", _("Message"), purple_value_new(G_TYPE_STRING),
25890
26bb4211aa76 Deprecate some functions that aren't really needed
Mark Doliner <markdoliner@pidgin.im>
parents: 25119
diff changeset
352 NULL);
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
353 types = g_list_prepend(types, type);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
354
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
355 return g_list_reverse(types);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
356 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
357
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
358 static void blist_example_menu_item(PurpleBlistNode *node, gpointer userdata) {
22709
6bd336964410 Printf warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
359 purple_debug_info("nullprpl", "example menu item clicked on user %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
360 purple_buddy_get_name(PURPLE_BUDDY(node)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
361
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
362 purple_notify_info(NULL, /* plugin handle or PurpleConnection */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
363 _("Primary title"),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
364 _("Secondary title"),
37009
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
365 _("This is the callback for the NullProtocol menu item."),
34979
14c09cce55e1 Fix whitespaces in nullprpl
Ankit Vani <a@nevitus.org>
parents: 34977
diff changeset
366 NULL);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
367 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
368
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
369 static GList *
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
370 null_blist_node_menu(PurpleProtocolClient *client, PurpleBlistNode *node) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
371 purple_debug_info("nullprpl", "providing buddy list context menu item\n");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
372
34696
6e0d13978666 Global replace to use GObject-style macros. See details.
Ankit Vani <a@nevitus.org>
parents: 34671
diff changeset
373 if (PURPLE_IS_BUDDY(node)) {
39483
ab4728087d87 Rename purple_menu_action_* to purple_action_menu_*
Gary Kramlich <grim@reaperworld.com>
parents: 39481
diff changeset
374 PurpleActionMenu *action = purple_action_menu_new(
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
375 _("NullProtocol example menu item"),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
376 PURPLE_CALLBACK(blist_example_menu_item),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
377 NULL, /* userdata passed to the callback */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
378 NULL); /* child menu items */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
379 return g_list_append(NULL, action);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
380 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
381 return NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
382 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
383 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
384
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
385 static GList *
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
386 null_chat_info(PurpleProtocolChat *protocol_chat, PurpleConnection *gc) {
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
387 PurpleProtocolChatEntry *pce; /* defined in protocols.h */
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
388
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
389 purple_debug_info("nullprpl", "returning chat setting 'room'\n");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
390
36555
fc17a4351e63 Replaced struct proto_chat_entry with PurpleProtocolChatEntry
Ankit Vani <a@nevitus.org>
parents: 36545
diff changeset
391 pce = g_new0(PurpleProtocolChatEntry, 1);
40087
a8c6a80325dc Fix an accelerator in a string in libpurple. Accelerators are for UI's,
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 39918
diff changeset
392 pce->label = _("Chat room");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
393 pce->identifier = "room";
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
394 pce->required = TRUE;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
395
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
396 return g_list_append(NULL, pce);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
397 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
398
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
399 static GHashTable *
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
400 null_chat_info_defaults(PurpleProtocolChat *protocol_chat,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
401 PurpleConnection *gc, const gchar *room)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
402 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
403 GHashTable *defaults;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
404
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
405 purple_debug_info("nullprpl", "returning chat default setting "
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
406 "'room' = 'default'\n");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
407
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
408 defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
409 g_hash_table_insert(defaults, "room", g_strdup("default"));
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
410 return defaults;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30138
diff changeset
411 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
412
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
413 static void null_login(PurpleAccount *acct)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
414 {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
415 PurpleConnection *gc = purple_account_get_connection(acct);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
416 GList *offline_messages;
39918
1c8e11f9274f Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39896
diff changeset
417 GList *all_offline_messages;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
418
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
419 purple_debug_info("nullprpl", "logging in %s\n", purple_account_get_username(acct));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
420
36055
33978dc8ef6f Remove redundant OPT_PROTO_IM_IMAGE (use \!PURPLE_CONNECTION_FLAG_NO_IMAGES instead)
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35813
diff changeset
421 purple_connection_set_flags(gc, PURPLE_CONNECTION_FLAG_NO_IMAGES);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
422
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
423 purple_connection_update_progress(gc, _("Connecting"),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
424 0, /* which connection step this is */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
425 2); /* total number of steps */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
426
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
427 purple_connection_update_progress(gc, _("Connected"),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
428 1, /* which connection step this is */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
429 2); /* total number of steps */
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
430 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
431
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
432 /* tell purple about everyone on our buddy list who's connected */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
433 foreach_null_gc(discover_status, gc, NULL);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
434
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
435 /* notify other nullprotocol accounts */
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
436 foreach_null_gc(report_status_change, gc, NULL);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
437
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
438 /* fetch stored offline messages */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
439 purple_debug_info("nullprpl", "checking for offline messages for %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
440 purple_account_get_username(acct));
39918
1c8e11f9274f Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39896
diff changeset
441 all_offline_messages = offline_messages = g_hash_table_lookup(
1c8e11f9274f Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39896
diff changeset
442 goffline_messages, purple_account_get_username(acct));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
443 while (offline_messages) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
444 GOfflineMessage *message = (GOfflineMessage *)offline_messages->data;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
445 purple_debug_info("nullprpl", "delivering offline message to %s: %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
446 purple_account_get_username(acct), message->message);
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35005
diff changeset
447 purple_serv_got_im(gc, message->from, message->message, message->flags,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
448 message->mtime);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
449 offline_messages = g_list_next(offline_messages);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
450
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
451 g_free(message->from);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
452 g_free(message->message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
453 g_free(message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
454 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
455
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
456 g_hash_table_remove(goffline_messages, purple_account_get_username(acct));
39918
1c8e11f9274f Fix several memory leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39896
diff changeset
457 g_list_free(all_offline_messages);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
458 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
459
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
460 static void null_close(PurpleConnection *gc)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
461 {
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
462 /* notify other nullprotocol accounts */
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
463 foreach_null_gc(report_status_change, gc, NULL);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
464 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
465
40507
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
466 static int null_send_im(PurpleProtocolIM *im, PurpleConnection *gc,
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
467 PurpleMessage *msg)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
468 {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
469 const char *from_username = purple_account_get_username(purple_connection_get_account(gc));
36098
4951752ad038 Split PurpleMessage into incoming, outgoing and system
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36084
diff changeset
470 const gchar *who = purple_message_get_recipient(msg);
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
471 PurpleMessageFlags receive_flags;
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
472 PurpleAccount *to_acct = purple_accounts_find(who, "null");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
473 PurpleConnection *to;
36076
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
474 const gchar *message = purple_message_get_contents(msg);
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
475
a0e5b68ff4ef Switch purple_serv_send_im to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36055
diff changeset
476 receive_flags = ((purple_message_get_flags(msg) & ~PURPLE_MESSAGE_SEND) | PURPLE_MESSAGE_RECV);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
477
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
478 purple_debug_info("nullprpl", "sending message from %s to %s: %s\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
479 from_username, who, message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
480
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
481 /* is the sender blocked by the recipient's privacy settings? */
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
482 if (to_acct &&
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
483 !purple_account_privacy_check(to_acct, purple_account_get_username(purple_connection_get_account(gc)))) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
484 char *msg = g_strdup_printf(
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
485 _("Your message was blocked by %s's privacy settings."), who);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
486 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
487 "discarding; %s is blocked by %s's privacy settings\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
488 from_username, who);
34868
faa5b053f310 Replaced purple_conversation_helper_present_error() with simpler purple_conversation_present_error()
Ankit Vani <a@nevitus.org>
parents: 34864
diff changeset
489 purple_conversation_present_error(who, purple_connection_get_account(gc), msg);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
490 g_free(msg);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
491 return 0;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
492 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
493
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
494 /* is the recipient online? */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
495 to = get_null_gc(who);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
496 if (to) { /* yes, send */
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35005
diff changeset
497 purple_serv_got_im(to, from_username, message, receive_flags, time(NULL));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
498
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
499 } else { /* nope, store as an offline message */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
500 GOfflineMessage *offline_message;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
501 GList *messages;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
502
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
503 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
504 "%s is offline, sending as offline message\n", who);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
505 offline_message = g_new0(GOfflineMessage, 1);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
506 offline_message->from = g_strdup(from_username);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
507 offline_message->message = g_strdup(message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
508 offline_message->mtime = time(NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
509 offline_message->flags = receive_flags;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
510
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
511 messages = g_hash_table_lookup(goffline_messages, who);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
512 messages = g_list_append(messages, offline_message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
513 g_hash_table_insert(goffline_messages, g_strdup(who), messages);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
514 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
515
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
516 return 1;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
517 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
518
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
519 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
520 null_set_info(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
521 const gchar *info)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
522 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
523 purple_debug_info("nullprpl", "setting %s's user info to %s\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
524 purple_account_get_username(purple_connection_get_account(gc)), info);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
525 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
526
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
527 static const char *typing_state_to_string(PurpleIMTypingState typing) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
528 switch (typing) {
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
529 case PURPLE_IM_NOT_TYPING: return "is not typing";
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
530 case PURPLE_IM_TYPING: return "is typing";
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
531 case PURPLE_IM_TYPED: return "stopped typing momentarily";
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
532 default: return "unknown typing state";
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
533 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
534 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
535
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
536 static void notify_typing(PurpleConnection *from, PurpleConnection *to,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
537 gpointer typing) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
538 const char *from_username = purple_account_get_username(purple_connection_get_account(from));
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
539 const char *action = typing_state_to_string((PurpleIMTypingState)typing);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
540 purple_debug_info("nullprpl", "notifying %s that %s %s\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
541 purple_account_get_username(purple_connection_get_account(to)), from_username, action);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
542
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35005
diff changeset
543 purple_serv_got_typing(to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
544 from_username,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
545 0, /* if non-zero, a timeout in seconds after which to
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
546 * reset the typing status to PURPLE_IM_NOT_TYPING */
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
547 (PurpleIMTypingState)typing);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
548 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
549
40507
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
550 static unsigned int null_send_typing(PurpleProtocolIM *im,
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
551 PurpleConnection *gc, const char *name,
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
552 PurpleIMTypingState typing)
77d7bc9e5151 Make PurpleProtocolIM a proper interface
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
553 {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
554 purple_debug_info("nullprpl", "%s %s\n", purple_account_get_username(purple_connection_get_account(gc)),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
555 typing_state_to_string(typing));
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
556 foreach_null_gc(notify_typing, gc, (gpointer)typing);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
557 return 0;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
558 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
559
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
560 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
561 null_get_info(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
562 const gchar *username)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
563 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
564 const char *body;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
565 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
566 PurpleAccount *acct;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
567
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
568 purple_debug_info("nullprpl", "Fetching %s's user info for %s\n", username,
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
569 purple_account_get_username(purple_connection_get_account(gc)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
570
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
571 acct = purple_accounts_find(username, "null");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
572
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
573 if (!get_null_gc(username)) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
574 char *msg = g_strdup_printf(_("%s is not logged in."), username);
34977
42e9e59fbf0f win32: fix build problems
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
575 purple_notify_error(gc, _("User Info"), _("User info not available. "), msg,
34979
14c09cce55e1 Fix whitespaces in nullprpl
Ankit Vani <a@nevitus.org>
parents: 34977
diff changeset
576 purple_request_cpar_from_account(acct));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
577 g_free(msg);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
578 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
579
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
580 if (acct)
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
581 body = purple_account_get_user_info(acct);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
582 else
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
583 body = _("No user info.");
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
584 /* TODO: Check whether it's correct to call add_pair_html,
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 31595
diff changeset
585 or if we should be using add_pair_plaintext */
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
586 purple_notify_user_info_add_pair_html(info, "Info", body);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
587
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
588 /* show a buddy's user info in a nice dialog box */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
589 purple_notify_userinfo(gc, /* connection the buddy info came through */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
590 username, /* buddy's username */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
591 info, /* body */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
592 NULL, /* callback called when dialog closed */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
593 NULL); /* userdata for callback */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
594 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
595
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
596 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
597 null_set_status(PurpleProtocolServer *protocol_server, PurpleAccount *acct,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
598 PurpleStatus *status)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
599 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
600 const char *msg = purple_status_get_attr_string(status, "message");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
601 purple_debug_info("nullprpl", "setting %s's status to %s: %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
602 purple_account_get_username(acct), purple_status_get_name(status), msg);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
603
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
604 foreach_null_gc(report_status_change, get_null_gc(purple_account_get_username(acct)),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
605 NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
606 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
607
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
608 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
609 null_set_idle(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
610 gint idletime)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
611 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
612 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
613 "purple reports that %s has been idle for %d seconds\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
614 purple_account_get_username(purple_connection_get_account(gc)), idletime);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
615 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
616
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
617 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
618 null_change_passwd(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
619 const gchar *old_pass, const gchar *new_pass)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
620 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
621 purple_debug_info("nullprpl", "%s wants to change their password\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
622 purple_account_get_username(purple_connection_get_account(gc)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
623 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
624
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
625 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
626 null_add_buddy(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
627 PurpleBuddy *buddy, PurpleGroup *group, const gchar *message)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
628 {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
629 const char *username = purple_account_get_username(purple_connection_get_account(gc));
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
630 PurpleConnection *buddy_gc = get_null_gc(purple_buddy_get_name(buddy));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
631
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
632 purple_debug_info("nullprpl", "adding %s to %s's buddy list\n", purple_buddy_get_name(buddy),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
633 username);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
634
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
635 if (buddy_gc) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
636 PurpleAccount *buddy_acct = purple_connection_get_account(buddy_gc);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
637
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
638 discover_status(gc, buddy_gc, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
639
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34706
diff changeset
640 if (purple_blist_find_buddy(buddy_acct, username)) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
641 purple_debug_info("nullprpl", "%s is already on %s's buddy list\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
642 username, purple_buddy_get_name(buddy));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
643 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
644 purple_debug_info("nullprpl", "asking %s if they want to add %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
645 purple_buddy_get_name(buddy), username);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
646 purple_account_request_add(buddy_acct,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
647 username,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
648 NULL, /* local account id (rarely used) */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
649 NULL, /* alias */
32315
2550a39e0285 Rename the _with_invite functions to their counterparts.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32263
diff changeset
650 message); /* message */
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
651 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
652 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
653 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
654
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
655 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
656 null_add_buddies(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
657 GList *buddies, GList *groups, const gchar *message)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
658 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
659 GList *buddy = buddies;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
660 GList *group = groups;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
661
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
662 purple_debug_info("nullprpl", "adding multiple buddies\n");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
663
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
664 while (buddy && group) {
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
665 null_add_buddy(protocol_server, gc, PURPLE_BUDDY(buddy->data),
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
666 PURPLE_GROUP(group->data), message);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
667 buddy = g_list_next(buddy);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
668 group = g_list_next(group);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
669 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
670 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
671
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
672 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
673 null_remove_buddy(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
674 PurpleBuddy *buddy, PurpleGroup *group)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
675 {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
676 purple_debug_info("nullprpl", "removing %s from %s's buddy list\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
677 purple_buddy_get_name(buddy),
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
678 purple_account_get_username(purple_connection_get_account(gc)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
679 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
680
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
681 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
682 null_remove_buddies(PurpleProtocolServer *protocol_server,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
683 PurpleConnection *gc, GList *buddies, GList *groups)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
684 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
685 GList *buddy = buddies;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
686 GList *group = groups;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
687
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
688 purple_debug_info("nullprpl", "removing multiple buddies\n");
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
689
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
690 while (buddy && group) {
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
691 null_remove_buddy(protocol_server, gc, PURPLE_BUDDY(buddy->data),
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
692 PURPLE_GROUP(group->data));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
693 buddy = g_list_next(buddy);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
694 group = g_list_next(group);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
695 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
696 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
697
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
698 /*
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
699 * nullprotocol uses purple's local whitelist and blacklist, stored in blist.xml, as
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
700 * its authoritative privacy settings, and uses purple's logic (specifically
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
701 * purple_privacy_check(), from privacy.h), to determine whether messages are
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
702 * allowed or blocked.
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
703 */
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
704 static void null_add_permit(PurpleProtocolPrivacy *privacy,
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
705 PurpleConnection *gc, const char *name)
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
706 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
707 purple_debug_info("nullprpl", "%s adds %s to their allowed list\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
708 purple_account_get_username(purple_connection_get_account(gc)), name);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
709 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
710
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
711 static void null_add_deny(PurpleProtocolPrivacy *privacy,
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
712 PurpleConnection *gc, const char *name)
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
713 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
714 purple_debug_info("nullprpl", "%s adds %s to their blocked list\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
715 purple_account_get_username(purple_connection_get_account(gc)), name);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
716 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
717
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
718 static void null_remove_permit(PurpleProtocolPrivacy *privacy,
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
719 PurpleConnection *gc, const char *name)
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
720 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
721 purple_debug_info("nullprpl", "%s removes %s from their allowed list\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
722 purple_account_get_username(purple_connection_get_account(gc)), name);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
723 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
724
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
725 static void null_remove_deny(PurpleProtocolPrivacy *privacy,
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
726 PurpleConnection *gc, const char *name)
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
727 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
728 purple_debug_info("nullprpl", "%s removes %s from their blocked list\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
729 purple_account_get_username(purple_connection_get_account(gc)), name);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
730 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
731
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
732 static void null_set_permit_deny(PurpleProtocolPrivacy *privacy, PurpleConnection *gc) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
733 /* this is for synchronizing the local black/whitelist with the server.
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
734 * for nullprotocol, it's a noop.
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
735 */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
736 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
737
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
738 static void joined_chat(PurpleConversation *from, PurpleConversation *to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
739 int id, const char *room, gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
740 /* tell their chat window that we joined */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
741 purple_debug_info("nullprpl", "%s sees that %s joined chat room %s\n",
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
742 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)), purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)), room);
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
743 purple_chat_conversation_add_user(PURPLE_CHAT_CONVERSATION(to),
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
744 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
745 NULL, /* user-provided join message, IRC style */
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
746 PURPLE_CHAT_USER_NONE,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
747 TRUE); /* show a join message */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
748
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
749 if (from != to) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
750 /* add them to our chat window */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
751 purple_debug_info("nullprpl", "%s sees that %s is in chat room %s\n",
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
752 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)), purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)), room);
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
753 purple_chat_conversation_add_user(PURPLE_CHAT_CONVERSATION(from),
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
754 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
755 NULL, /* user-provided join message, IRC style */
34670
9bd5bd903dc7 Renamed chat buddies to chat users, and IM conversation typing state to IM typing state.
Ankit Vani <a@nevitus.org>
parents: 34631
diff changeset
756 PURPLE_CHAT_USER_NONE,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
757 FALSE); /* show a join message */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
758 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
759 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
760
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
761 static void
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
762 null_join_chat(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
763 GHashTable *components)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
764 {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
765 PurpleAccount *account = purple_connection_get_account(gc);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
766 PurpleConversationManager *manager;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
767 const char *username = purple_account_get_username(account);
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
768 const char *room = g_hash_table_lookup(components, "room");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
769 int chat_id = g_str_hash(room);
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
770
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
771 purple_debug_info("nullprpl", "%s is joining chat room %s\n", username, room);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
772
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
773 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
774
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
775 if(!purple_conversation_manager_find_chat_by_id(manager, account, chat_id)) {
35499
c4c5e0a670b1 Fix namespaces issues in libpurple.
Ankit Vani <a@nevitus.org>
parents: 35005
diff changeset
776 purple_serv_got_joined_chat(gc, chat_id, room);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
777
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
778 /* tell everyone that we joined, and add them if they're already there */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
779 foreach_gc_in_chat(joined_chat, gc, chat_id, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
780 } else {
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
781 char *tmp = g_strdup_printf(_("%s is already in chat room %s."),
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
782 username,
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
783 room);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
784 purple_debug_info("nullprpl", "%s is already in chat room %s\n", username,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
785 room);
34977
42e9e59fbf0f win32: fix build problems
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
786 purple_notify_info(gc, _("Join chat"), _("Join chat"), tmp,
34979
14c09cce55e1 Fix whitespaces in nullprpl
Ankit Vani <a@nevitus.org>
parents: 34977
diff changeset
787 purple_request_cpar_from_connection(gc));
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
788 g_free(tmp);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
789 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
790 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
791
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
792 static void
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
793 null_reject_chat(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
794 GHashTable *components)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
795 {
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
796 const char *invited_by = g_hash_table_lookup(components, "invited_by");
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
797 const char *room = g_hash_table_lookup(components, "room");
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
798 const char *username = purple_account_get_username(purple_connection_get_account(gc));
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
799 PurpleConnection *invited_by_gc = get_null_gc(invited_by);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
800 char *message = g_strdup_printf(
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
801 "%s %s %s.",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
802 username,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
803 _("has rejected your invitation to join the chat room"),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
804 room);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
805
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
806 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
807 "%s has rejected %s's invitation to join chat room %s\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
808 username, invited_by, room);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
809
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
810 purple_notify_info(invited_by_gc,
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
811 _("Chat invitation rejected"),
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
812 _("Chat invitation rejected"),
34977
42e9e59fbf0f win32: fix build problems
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
813 message,
34979
14c09cce55e1 Fix whitespaces in nullprpl
Ankit Vani <a@nevitus.org>
parents: 34977
diff changeset
814 purple_request_cpar_from_connection(gc));
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
815 g_free(message);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
816 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
817
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
818 static gchar *
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
819 null_get_chat_name(PurpleProtocolChat *protocol_chat, GHashTable *components) {
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
820 const char *room = g_hash_table_lookup(components, "room");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
821 purple_debug_info("nullprpl", "reporting chat room name '%s'\n", room);
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
822 return g_strdup(room);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
823 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
824
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
825 static void
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
826 null_chat_invite(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
827 gint id, const gchar *message, const gchar *who)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
828 {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
829 PurpleAccount *account = purple_connection_get_account(gc);
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
830 PurpleAccount *to_acct = purple_accounts_find(who, "null");
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
831 PurpleConversation *chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
832 PurpleConversationManager *manager;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
833 const char *username = purple_account_get_username(account);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
834 const char *room = NULL;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
835
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
836 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
837 chat = purple_conversation_manager_find_chat_by_id(manager, account, id);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
838 room = purple_conversation_get_name(chat);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
839
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
840 purple_debug_info("nullprpl", "%s is inviting %s to join chat room %s\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
841 username, who, room);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
842
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
843 if (to_acct) {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
844 PurpleConversation *to_conv;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
845
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
846 to_conv = purple_conversation_manager_find_chat_by_id(manager, to_acct, id);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
847 if (to_conv) {
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
848 char *tmp = g_strdup_printf("%s is already in chat room %s.", who, room);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
849 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
850 "%s is already in chat room %s; "
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
851 "ignoring invitation from %s\n",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
852 who, room, username);
34977
42e9e59fbf0f win32: fix build problems
Ankit Vani <a@nevitus.org>
parents: 34894
diff changeset
853 purple_notify_info(gc, _("Chat invitation"), _("Chat invitation"), tmp,
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
854 purple_request_cpar_from_conversation(to_conv));
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
855 g_free(tmp);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
856 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
857 GHashTable *components;
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
858 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
859 g_hash_table_replace(components, "room", g_strdup(room));
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
860 g_hash_table_replace(components, "invited_by", g_strdup(username));
35501
602747bb4af9 Fix duplicate prefixes
Ankit Vani <a@nevitus.org>
parents: 35499
diff changeset
861 purple_serv_got_chat_invite(purple_account_get_connection(to_acct), room, username, message, components);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
862 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
863 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
864 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
865
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
866 static void left_chat_room(PurpleConversation *from, PurpleConversation *to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
867 int id, const char *room, gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
868 if (from != to) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
869 /* tell their chat window that we left */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
870 purple_debug_info("nullprpl", "%s sees that %s left chat room %s\n",
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
871 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)), purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)), room);
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
872 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(to),
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
873 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)),
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
874 NULL); /* user-provided message, IRC style */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
875 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
876 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
877
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
878 static void
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
879 null_chat_leave(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
880 gint id)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
881 {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
882 PurpleConversationManager *manager;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
883 PurpleConversation *chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
884
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
885 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
886 chat = purple_conversation_manager_find_chat_by_id(manager,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
887 purple_connection_get_account(gc),
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
888 id);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
889 purple_debug_info("nullprpl", "%s is leaving chat room %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
890 purple_account_get_username(purple_connection_get_account(gc)),
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
891 purple_conversation_get_name(chat));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
892
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
893 /* tell everyone that we left */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
894 foreach_gc_in_chat(left_chat_room, gc, id, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
895 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
896
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
897 static void receive_chat_message(PurpleConversation *from, PurpleConversation *to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
898 int id, const char *room, gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
899 const char *message = (const char *)userdata;
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
900 PurpleConnection *to_gc = get_null_gc(purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
901
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
902 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
903 "%s receives message from %s in chat room %s: %s\n",
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
904 purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(to)), purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)), room, message);
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
905 purple_serv_got_chat_in(to_gc, id, purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(from)), PURPLE_MESSAGE_RECV, message,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
906 time(NULL));
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
907 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
908
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
909 static gint
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
910 null_chat_send(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
911 gint id, PurpleMessage *msg)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
912 {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
913 PurpleAccount *account = purple_connection_get_account(gc);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
914 PurpleConversation *chat;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
915 PurpleConversationManager *manager;
36077
b7328f4317c7 Switch purple_serv_chat_send to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36076
diff changeset
916 const gchar *message = purple_message_get_contents(msg);
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
917 const gchar *username = purple_account_get_username(account);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
918
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
919 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
920 chat = purple_conversation_manager_find_chat_by_id(manager, account, id);
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
921 if (chat) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
922 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
923 "%s is sending message to chat room %s: %s\n", username,
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
924 purple_conversation_get_name(chat), message);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
925
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
926 /* send message to everyone in the chat room */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
927 foreach_gc_in_chat(receive_chat_message, gc, id, (gpointer)message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
928 return 0;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
929 } else {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
930 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
931 "tried to send message from %s to chat room #%d: %s\n"
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
932 "but couldn't find chat room",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
933 username, id, message);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
934 return -1;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
935 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
936 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
937
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
938 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
939 null_register_user(PurpleProtocolServer *protocol_server, PurpleAccount *acct) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
940 purple_debug_info("nullprpl", "registering account for %s\n",
32623
547eacef0b63 Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32618
diff changeset
941 purple_account_get_username(acct));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
942 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
943
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
944 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
945 null_alias_buddy(PurpleProtocolServer *protocol_server,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
946 PurpleConnection *gc, const gchar *who,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
947 const gchar *alias)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
948 {
22709
6bd336964410 Printf warning fixes.
Daniel Atallah <datallah@pidgin.im>
parents: 19859
diff changeset
949 purple_debug_info("nullprpl", "%s sets %s's alias to %s\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
950 purple_account_get_username(purple_connection_get_account(gc)), who, alias);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
951 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
952
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
953 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
954 null_group_buddy(PurpleProtocolServer *protocol_server,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
955 PurpleConnection *gc, const gchar *who,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
956 const gchar *old_group, const gchar *new_group)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
957 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
958 purple_debug_info("nullprpl", "%s has moved %s from group %s to group %s\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
959 purple_account_get_username(purple_connection_get_account(gc)), who, old_group, new_group);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
960 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
961
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
962 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
963 null_rename_group(PurpleProtocolServer *protocol_server,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
964 PurpleConnection *gc, const gchar *old_name,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
965 PurpleGroup *group, GList *moved_buddies)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
966 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
967 purple_debug_info("nullprpl", "%s has renamed group %s to %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
968 purple_account_get_username(purple_connection_get_account(gc)), old_name,
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
969 purple_group_get_name(group));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
970 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
971
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
972 static void
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
973 null_convo_closed(PurpleProtocolClient *client, PurpleConnection *gc,
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
974 const char *who)
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
975 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
976 purple_debug_info("nullprpl", "%s's conversation with %s was closed\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
977 purple_account_get_username(purple_connection_get_account(gc)), who);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
978 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
979
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
980 /* normalize a username (e.g. remove whitespace, add default domain, etc.)
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
981 * for nullprotocol, this is a noop.
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
982 */
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
983 static const char *
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
984 null_normalize(PurpleProtocolClient *client, PurpleAccount *acct,
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
985 const char *input)
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
986 {
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
987 return input;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
988 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
989
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
990 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
991 null_set_buddy_icon(PurpleProtocolServer *protocol_server,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
992 PurpleConnection *gc, PurpleImage *img)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
993 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
994 purple_debug_info("nullprpl", "setting %s's buddy icon to %s\n",
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
995 purple_account_get_username(purple_connection_get_account(gc)),
39877
4bc87b3dbca4 Get the null prpl working again and build it by default but don't install it
Gary Kramlich <grim@reaperworld.com>
parents: 39760
diff changeset
996 img ? purple_image_get_path(img) : "(null)");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
997 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
998
40708
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
999 static void
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
1000 null_remove_group(PurpleProtocolServer *protocol_server, PurpleConnection *gc,
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
1001 PurpleGroup *group)
53a26c29d26c Move the PurpleProtocolServer interface to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40697
diff changeset
1002 {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1003 purple_debug_info("nullprpl", "%s has removed group %s\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
1004 purple_account_get_username(purple_connection_get_account(gc)),
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
1005 purple_group_get_name(group));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1006 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1007
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1008
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
1009 static void set_chat_topic_fn(PurpleConversation *from, PurpleConversation *to,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1010 int id, const char *room, gpointer userdata) {
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1011 const char *topic = (const char *)userdata;
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
1012 const char *username = purple_account_get_username(purple_conversation_get_account(PURPLE_CONVERSATION(from)));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1013 char *msg;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1014
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
1015 purple_chat_conversation_set_topic(PURPLE_CHAT_CONVERSATION(to), username, topic);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1016
32189
3af8d41121b6 Don't use strlen() when all you're trying to do is check if the string
Mark Doliner <markdoliner@pidgin.im>
parents: 32188
diff changeset
1017 if (topic && *topic)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1018 msg = g_strdup_printf(_("%s sets topic to: %s"), username, topic);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1019 else
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1020 msg = g_strdup_printf(_("%s clears topic"), username);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1021
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
1022 purple_conversation_write_system_message(to, msg, PURPLE_MESSAGE_NO_LOG);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1023 g_free(msg);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1024 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1025
40697
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
1026 static void
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
1027 null_set_chat_topic(PurpleProtocolChat *protocol_chat, PurpleConnection *gc,
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
1028 gint id, const gchar *topic)
81f81f5d2f39 Split PurpleProtocolChat to its own file and clean up the API.
Gary Kramlich <grim@reaperworld.com>
parents: 40634
diff changeset
1029 {
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1030 PurpleConversation *chat = NULL;
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1031 PurpleConversationManager *manager = NULL;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1032 const char *last_topic;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1033
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1034 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1035 chat = purple_conversation_manager_find_chat_by_id(manager,
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1036 purple_connection_get_account(gc),
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1037 id);
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1038 if (!chat) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1039 return;
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1040 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1041
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1042 purple_debug_info("nullprpl", "%s sets topic of chat room '%s' to '%s'\n",
34872
3b6a783817b9 Refactored nullprpl to use the GObjectified purple API
Ankit Vani <a@nevitus.org>
parents: 34868
diff changeset
1043 purple_account_get_username(purple_connection_get_account(gc)),
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
1044 purple_conversation_get_name(chat), topic);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1045
40885
87f6241da196 Update purple_conversations_find_* to return PurpleConversations instead of subclasses
Gary Kramlich <grim@reaperworld.com>
parents: 40865
diff changeset
1046 last_topic = purple_chat_conversation_get_topic(PURPLE_CHAT_CONVERSATION(chat));
38266
7c1706b2bd11 Remove found redundant NULL checks
qarkai <qarkai@gmail.com>
parents: 38258
diff changeset
1047 if (purple_strequal(topic, last_topic))
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1048 return; /* topic is unchanged, this is a noop */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1049
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1050 foreach_gc_in_chat(set_chat_topic_fn, gc, id, (gpointer)topic);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1051 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1052
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1053 static gboolean null_finish_get_roomlist(gpointer roomlist) {
34991
63c14353a0f4 Manage refcounts in some libpurple callbacks
Ankit Vani <a@nevitus.org>
parents: 34979
diff changeset
1054 purple_roomlist_set_in_progress(PURPLE_ROOMLIST(roomlist), FALSE);
63c14353a0f4 Manage refcounts in some libpurple callbacks
Ankit Vani <a@nevitus.org>
parents: 34979
diff changeset
1055 g_object_unref(roomlist);
63c14353a0f4 Manage refcounts in some libpurple callbacks
Ankit Vani <a@nevitus.org>
parents: 34979
diff changeset
1056
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1057 return FALSE;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1058 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1059
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1060 static PurpleRoomlist *null_roomlist_get_list(PurpleConnection *gc) {
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
1061 const char *username = purple_account_get_username(purple_connection_get_account(gc));
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1062 PurpleConversationManager *manager;
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32623
diff changeset
1063 PurpleRoomlist *roomlist = purple_roomlist_new(purple_connection_get_account(gc));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1064 GList *fields = NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1065 PurpleRoomlistField *field;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1066 GList *chats;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1067 GList *seen_ids = NULL;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1068
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1069 purple_debug_info("nullprpl", "%s asks for room list; returning:\n", username);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1070
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1071 /* set up the room list */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1072 field = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_STRING, "room",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1073 "room", TRUE /* hidden */);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1074 fields = g_list_append(fields, field);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1075
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1076 field = purple_roomlist_field_new(PURPLE_ROOMLIST_FIELD_INT, "Id", "Id", FALSE);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1077 fields = g_list_append(fields, field);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1078
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1079 purple_roomlist_set_fields(roomlist, fields);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1080
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1081 manager = purple_conversation_manager_get_default();
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1082
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1083 /* add each chat room. the chat ids are cached in seen_ids so that each room
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1084 * is only returned once, even if multiple users are in it. */
40997
997ab408c113 Port the protocol plugins to the purple_conversation_manager_api
Gary Kramlich <grim@reaperworld.com>
parents: 40948
diff changeset
1085 for (chats = purple_conversation_manager_get_all(manager); chats; chats = g_list_next(chats)) {
40948
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1086 PurpleChatConversation *chat = NULL;
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1087 PurpleRoomlistRoom *room = NULL;
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1088 const gchar *name = NULL;
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1089 gint id = 0;
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1090
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1091 if(!PURPLE_IS_CHAT_CONVERSATION(chats->data)) {
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1092 continue;
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1093 }
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1094
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1095 chat = PURPLE_CHAT_CONVERSATION(chats->data);
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1096 name = purple_conversation_get_name(PURPLE_CONVERSATION(chat));
2c312f084d84 Create a manager for conversations.
Gary Kramlich <grim@reaperworld.com>
parents: 40945
diff changeset
1097 id = purple_chat_conversation_get_id(chat);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1098
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1099 /* have we already added this room? */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1100 if (g_list_find_custom(seen_ids, name, (GCompareFunc)strcmp))
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1101 continue; /* yes! try the next one. */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1102
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
1103 /* This cast is OK because this list is only staying around for the life
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
1104 * of this function and none of the conversations are being deleted
29977
94b2a6686bfb nullprpl: Whitespace
Paul Aurich <darkrain42@pidgin.im>
parents: 29795
diff changeset
1105 * in that timespan. */
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
1106 seen_ids = g_list_prepend(seen_ids, (char *)name); /* no, it's new. */
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1107 purple_debug_info("nullprpl", "%s (%d), ", name, id);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1108
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1109 room = purple_roomlist_room_new(PURPLE_ROOMLIST_ROOMTYPE_ROOM, name, NULL);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1110 purple_roomlist_room_add_field(roomlist, room, name);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1111 purple_roomlist_room_add_field(roomlist, room, &id);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1112 purple_roomlist_room_add(roomlist, room);
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1113 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1114
24862
852378e0c5b5 Various nullprpl fixes. This stemmed from a complaint from a user in
Paul Aurich <darkrain42@pidgin.im>
parents: 24332
diff changeset
1115 g_list_free(seen_ids);
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 38358
diff changeset
1116 g_timeout_add(1 /* ms */, null_finish_get_roomlist, g_object_ref(roomlist));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1117 return roomlist;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1118 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1119
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1120 static void null_roomlist_cancel(PurpleRoomlist *list) {
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
1121 PurpleAccount *account = purple_roomlist_get_account(list);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1122 purple_debug_info("nullprpl", "%s asked to cancel room list request\n",
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
1123 purple_account_get_username(account));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1124 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1125
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1126 static void null_roomlist_expand_category(PurpleRoomlist *list,
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1127 PurpleRoomlistRoom *category) {
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
1128 PurpleAccount *account = purple_roomlist_get_account(list);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1129 purple_debug_info("nullprpl", "%s asked to expand room list category %s\n",
32263
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
1130 purple_account_get_username(account),
02baf4631f3b Update nullprpl for various API changes.
Andrew Victor <andrew.victor@mxit.com>
parents: 32190
diff changeset
1131 purple_roomlist_room_get_name(category));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1132 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1133
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
1134 static gboolean
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
1135 null_offline_message(PurpleProtocolClient *client, PurpleBuddy *buddy) {
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1136 purple_debug_info("nullprpl",
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1137 "reporting that offline messages are supported for %s\n",
40634
4d3018b00ad4 Fix the PurpleProtocolClient interface and split it out to its own file.
Gary Kramlich <grim@reaperworld.com>
parents: 40521
diff changeset
1138 purple_buddy_get_name(buddy));
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1139 return TRUE;
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1140 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1141
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1142 /*
36683
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1143 * Initialize the protocol instance. see protocol.h for more information.
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1144 */
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1145 static void
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1146 null_protocol_init(NullProtocol *self)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1147 {
36683
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1148 }
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1149
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1150 /*
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1151 * Initialize the protocol class and interfaces.
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1152 * see protocol.h for more information.
36683
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1153 */
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1154
36683
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1155 static void
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1156 null_protocol_class_init(NullProtocolClass *klass)
36683
852cb2830a0a Refactor nullprotocol to use instance init
Ankit Vani <a@nevitus.org>
parents: 36679
diff changeset
1157 {
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1158 PurpleProtocolClass *protocol_class = PURPLE_PROTOCOL_CLASS(klass);
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1159
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1160 protocol_class->login = null_login;
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1161 protocol_class->close = null_close;
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1162 protocol_class->status_types = null_status_types;
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1163 protocol_class->list_icon = null_list_icon;
40813
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1164
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1165 protocol_class->get_account_options = null_protocol_get_account_options;
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1166 protocol_class->get_buddy_icon_spec = null_protocol_get_buddy_icon_spec;
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1167 protocol_class->get_user_splits = null_protocol_get_user_splits;
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1168 }
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1169
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1170 static void
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1171 null_protocol_class_finalize(G_GNUC_UNUSED NullProtocolClass *klass)
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1172 {
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1173 }
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1174
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1175 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1176 null_protocol_client_iface_init(PurpleProtocolClientInterface *client_iface)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1177 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1178 client_iface->get_actions = null_get_actions;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1179 client_iface->status_text = null_status_text;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1180 client_iface->tooltip_text = null_tooltip_text;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1181 client_iface->blist_node_menu = null_blist_node_menu;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1182 client_iface->convo_closed = null_convo_closed;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1183 client_iface->normalize = null_normalize;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1184 client_iface->offline_message = null_offline_message;
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1185 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1186
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1187 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1188 null_protocol_server_iface_init(PurpleProtocolServerInterface *server_iface)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1189 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1190 server_iface->register_user = null_register_user;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1191 server_iface->set_info = null_set_info;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1192 server_iface->get_info = null_get_info;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1193 server_iface->set_status = null_set_status;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1194 server_iface->set_idle = null_set_idle;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1195 server_iface->change_passwd = null_change_passwd;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1196 server_iface->add_buddy = null_add_buddy;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1197 server_iface->add_buddies = null_add_buddies;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1198 server_iface->remove_buddy = null_remove_buddy;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1199 server_iface->remove_buddies = null_remove_buddies;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1200 server_iface->alias_buddy = null_alias_buddy;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1201 server_iface->group_buddy = null_group_buddy;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1202 server_iface->rename_group = null_rename_group;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1203 server_iface->set_buddy_icon = null_set_buddy_icon;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1204 server_iface->remove_group = null_remove_group;
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1205 }
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1206
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1207 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1208 null_protocol_im_iface_init(PurpleProtocolIMInterface *im_iface)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1209 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1210 im_iface->send = null_send_im;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1211 im_iface->send_typing = null_send_typing;
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1212 }
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1213
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1214 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1215 null_protocol_chat_iface_init(PurpleProtocolChatInterface *chat_iface)
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1216 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1217 chat_iface->info = null_chat_info;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1218 chat_iface->info_defaults = null_chat_info_defaults;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1219 chat_iface->join = null_join_chat;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1220 chat_iface->reject = null_reject_chat;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1221 chat_iface->get_name = null_get_chat_name;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1222 chat_iface->invite = null_chat_invite;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1223 chat_iface->leave = null_chat_leave;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1224 chat_iface->send = null_chat_send;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1225 chat_iface->set_topic = null_set_chat_topic;
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1226 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1227
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1228 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1229 null_protocol_privacy_iface_init(PurpleProtocolPrivacyInterface *privacy_iface)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1230 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1231 privacy_iface->add_permit = null_add_permit;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1232 privacy_iface->add_deny = null_add_deny;
40521
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
1233 privacy_iface->remove_permit = null_remove_permit;
c4269b37a13a Make PurpleProtocolPrivacy a proper GInterface and move it to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 40507
diff changeset
1234 privacy_iface->remove_deny = null_remove_deny;
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1235 privacy_iface->set_permit_deny = null_set_permit_deny;
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1236 }
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1237
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1238 static void
39757
4a5ba806d8c9 Rename *Iface to more standard names.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39483
diff changeset
1239 null_protocol_roomlist_iface_init(PurpleProtocolRoomlistInterface *roomlist_iface)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1240 {
36941
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1241 roomlist_iface->get_list = null_roomlist_get_list;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1242 roomlist_iface->cancel = null_roomlist_cancel;
cceec84ec859 Fix nullprotocol
Ankit Vani <a@nevitus.org>
parents: 36862
diff changeset
1243 roomlist_iface->expand_category = null_roomlist_expand_category;
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1244 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1245
36700
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1246 /*
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1247 * define the null protocol type. this macro defines
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1248 * null_protocol_register_type(PurplePlugin *) which is called in plugin_load()
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1249 * to register this type with the type system, and null_protocol_get_type()
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1250 * which returns the registered GType.
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1251 */
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1252 G_DEFINE_DYNAMIC_TYPE_EXTENDED(
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1253 NullProtocol, null_protocol, PURPLE_TYPE_PROTOCOL, 0,
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1254
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1255 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_CLIENT,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1256 null_protocol_client_iface_init)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1257
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1258 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_SERVER,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1259 null_protocol_server_iface_init)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1260
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1261 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_IM,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1262 null_protocol_im_iface_init)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1263
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1264 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_CHAT,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1265 null_protocol_chat_iface_init)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1266
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1267 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_PRIVACY,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1268 null_protocol_privacy_iface_init)
36721
22db8c40260d Refactored nullprotocol to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36700
diff changeset
1269
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1270 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_ROOMLIST,
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1271 null_protocol_roomlist_iface_init));
36700
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1272
40813
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1273 static PurpleProtocol *
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1274 null_protocol_new(void) {
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1275 return PURPLE_PROTOCOL(g_object_new(
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1276 NULL_TYPE_PROTOCOL,
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1277 "id", "prpl-null",
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1278 "name", "Null - Testing Protocol",
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1279 "options", OPT_PROTO_NO_PASSWORD | OPT_PROTO_CHAT_TOPIC,
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1280 NULL));
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1281 }
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1282
40945
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
1283 static GPluginPluginInfo *
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
1284 null_query(GError **error)
36453
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1285 {
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1286 return purple_plugin_info_new(
36985
9faafe43603e Rename protocol plugin IDs to prpl-*
Ankit Vani <a@nevitus.org>
parents: 36941
diff changeset
1287 "id", "prpl-null",
36638
5f6dcd83e8c1 Seperate plugin and protocol IDs. Protocol ID example: "msn". Plugin ID example: "protocol-msn".
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
1288 "name", "Null Protocol",
36482
fbddfc86848d Renamed purple-version to purple-abi. Removed abi-version from docs
Ankit Vani <a@nevitus.org>
parents: 36481
diff changeset
1289 "version", DISPLAY_VERSION,
fbddfc86848d Renamed purple-version to purple-abi. Removed abi-version from docs
Ankit Vani <a@nevitus.org>
parents: 36481
diff changeset
1290 "category", N_("Protocol"),
fbddfc86848d Renamed purple-version to purple-abi. Removed abi-version from docs
Ankit Vani <a@nevitus.org>
parents: 36481
diff changeset
1291 "summary", N_("Null Protocol Plugin"),
fbddfc86848d Renamed purple-version to purple-abi. Removed abi-version from docs
Ankit Vani <a@nevitus.org>
parents: 36481
diff changeset
1292 "description", N_("Null Protocol Plugin"),
fbddfc86848d Renamed purple-version to purple-abi. Removed abi-version from docs
Ankit Vani <a@nevitus.org>
parents: 36481
diff changeset
1293 "website", PURPLE_WEBSITE,
36505
60c161851325 Integrated purple ABI requirement into GPlugin's "abi-version" property
Ankit Vani <a@nevitus.org>
parents: 36494
diff changeset
1294 "abi-version", PURPLE_ABI_VERSION,
36467
52aa83c47311 Replaced purple_plugin_loads_on_query() with purple_plugin_is_internal().
Ankit Vani <a@nevitus.org>
parents: 36463
diff changeset
1295
37009
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
1296 /* If you're using this protocol plugin as the basis of a plugin that will
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
1297 * be distributed separately from libpurple, do not include these flags. */
36653
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
1298 "flags", PURPLE_PLUGIN_INFO_FLAGS_INTERNAL |
4084c34c051d Override gplugin info's "flags" property. Added PURPLE_PLUGIN_INFO_FLAGS_INTERNAL and PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD.
Ankit Vani <a@nevitus.org>
parents: 36638
diff changeset
1299 PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD,
36453
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1300 NULL
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1301 );
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1302 }
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1303
36458
a9cccad073e9 Static prpls now work. Added macro PURPLE_PLUGIN_INIT(plugin-name, query-func, load-func, unload-func).
Ankit Vani <a@nevitus.org>
parents: 36457
diff changeset
1304 static gboolean
40945
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
1305 null_load(GPluginPlugin *plugin, GError **error)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1306 {
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1307 PurpleProtocolManager *manager = purple_protocol_manager_get_default();
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1308
36700
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1309 /* register the NULL_TYPE_PROTOCOL type in the type system. this function
39894
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1310 * is defined by G_DEFINE_DYNAMIC_TYPE_EXTENDED. */
7eab91ea30a1 Replace Purple type macros by GObject macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39760
diff changeset
1311 null_protocol_register_type(G_TYPE_MODULE(plugin));
36700
6e948576476e Refactored nullprotocol to use the new macro
Ankit Vani <a@nevitus.org>
parents: 36683
diff changeset
1312
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36664
diff changeset
1313 /* add the protocol to the core */
40813
71305a7d7423 Modernize PurpleProtocol
Gary Kramlich <grim@reaperworld.com>
parents: 40800
diff changeset
1314 my_protocol = null_protocol_new();
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1315 if(!purple_protocol_manager_register(manager, my_protocol, error)) {
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1316 g_clear_object(&my_protocol);
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1317
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1318 return FALSE;
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1319 }
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1320
37009
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
1321 purple_debug_info("nullprpl", "starting up\n");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1322
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1323 /* get ready to store offline messages */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1324 goffline_messages = g_hash_table_new_full(g_str_hash, /* hash fn */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1325 g_str_equal, /* key comparison fn */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1326 g_free, /* key free fn */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1327 NULL); /* value free fn */
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1328
36453
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1329 return TRUE;
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1330 }
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1331
36458
a9cccad073e9 Static prpls now work. Added macro PURPLE_PLUGIN_INIT(plugin-name, query-func, load-func, unload-func).
Ankit Vani <a@nevitus.org>
parents: 36457
diff changeset
1332 static gboolean
40945
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
1333 null_unload(GPluginPlugin *plugin, GError **error)
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1334 {
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1335 PurpleProtocolManager *manager = purple_protocol_manager_get_default();
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1336
37009
05ef6e29ea04 Rename nullprotocol back to nullprpl
Ankit Vani <a@nevitus.org>
parents: 36985
diff changeset
1337 purple_debug_info("nullprpl", "shutting down\n");
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1338
36677
081733748bbc Only initialize/finalize protocol class data in *_base_init/finalize for protocols.
Ankit Vani <a@nevitus.org>
parents: 36664
diff changeset
1339 /* remove the protocol from the core */
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1340 if(!purple_protocol_manager_unregister(manager, my_protocol, error)) {
36589
4a12e889d1fd Refactored nullprotocol (renamed from nullprpl) to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36583
diff changeset
1341 return FALSE;
40800
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1342 }
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1343
be00e9c87cb7 Convert all of the protocols to use the new protocol_manager_ api
Gary Kramlich <grim@reaperworld.com>
parents: 40708
diff changeset
1344 g_clear_object(&my_protocol);
17451
02adeb73ed3b this patch adds nullprpl, a mock protocol plugin, to the libpurple/protocols
Ryan Barrett <ryanbarrett@users.sourceforge.net>
parents:
diff changeset
1345
36453
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1346 return TRUE;
75bb4001a25f Refactored nullprpl to build with the new plugin API. This is not final.
Ankit Vani <a@nevitus.org>
parents: 34872
diff changeset
1347 }
36458
a9cccad073e9 Static prpls now work. Added macro PURPLE_PLUGIN_INIT(plugin-name, query-func, load-func, unload-func).
Ankit Vani <a@nevitus.org>
parents: 36457
diff changeset
1348
40945
bbeb2e98ea5b Use GPLUGIN_NATIVE_PLUGIN_DECLARE for all libpurple plugins and remove PURPLE_PLUGIN_INIT
Gary Kramlich <grim@reaperworld.com>
parents: 40885
diff changeset
1349 GPLUGIN_NATIVE_PLUGIN_DECLARE(null);

mercurial