libpurple/protocols/jabber/usermood.c

Sun, 15 Sep 2019 17:11:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Sun, 15 Sep 2019 17:11:46 -0400
changeset 39894
7eab91ea30a1
parent 38358
30ba44276e74
child 40358
e6fe6fc1f516
permissions
-rw-r--r--

Replace Purple type macros by GObject macros.

These were necessary to support both static and dynamic plugins, but
we're just leaving the to GPlugin now.

17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
1 /*
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
2 * purple - Jabber Protocol Plugin
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
3 *
28322
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28321
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28321
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28321
diff changeset
6 * source distribution.
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
7 *
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
11 * (at your option) any later version.
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
12 *
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
16 * GNU General Public License for more details.
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
17 *
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
28321
c8d617c408ab Update various header copyrights thanks to licensecheck.
Paul Aurich <darkrain42@pidgin.im>
parents: 26072
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
21 *
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
22 */
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
23
19898
218e4bb04853 Fix mingw build of xmpp prpl
Daniel Atallah <datallah@pidgin.im>
parents: 19391
diff changeset
24 #include "internal.h"
218e4bb04853 Fix mingw build of xmpp prpl
Daniel Atallah <datallah@pidgin.im>
parents: 19391
diff changeset
25
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
26 #include "usermood.h"
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
27 #include "pep.h"
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
28 #include <string.h>
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
29 #include "internal.h"
17784
6aab6554431e Implemented setting the User Mood. Currently untested since it requires the fields request API, which isn't implemented in Adium yet.
Andreas Monitzer <am@adiumx.com>
parents: 17783
diff changeset
30 #include "request.h"
20226
282d0c1feb58 applied changes from 1095e0c294d15e95c8909d270748c5253226bfe6
Luke Schierer <lschiere@pidgin.im>
parents: 19994
diff changeset
31 #include "debug.h"
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
32
24913
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
33 static PurpleMood moods[] = {
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
34 {"afraid", N_("Afraid"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
35 {"amazed", N_("Amazed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
36 {"amorous", N_("Amorous"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
37 {"angry", N_("Angry"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
38 {"annoyed", N_("Annoyed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
39 {"anxious", N_("Anxious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
40 {"aroused", N_("Aroused"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
41 {"ashamed", N_("Ashamed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
42 {"bored", N_("Bored"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
43 {"brave", N_("Brave"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
44 {"calm", N_("Calm"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
45 {"cautious", N_("Cautious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
46 {"cold", N_("Cold"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
47 {"confident", N_("Confident"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
48 {"confused", N_("Confused"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
49 {"contemplative", N_("Contemplative"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
50 {"contented", N_("Contented"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
51 {"cranky", N_("Cranky"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
52 {"crazy", N_("Crazy"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
53 {"creative", N_("Creative"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
54 {"curious", N_("Curious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
55 {"dejected", N_("Dejected"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
56 {"depressed", N_("Depressed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
57 {"disappointed", N_("Disappointed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
58 {"disgusted", N_("Disgusted"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
59 {"dismayed", N_("Dismayed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
60 {"distracted", N_("Distracted"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
61 {"embarrassed", N_("Embarrassed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
62 {"envious", N_("Envious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
63 {"excited", N_("Excited"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
64 {"flirtatious", N_("Flirtatious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
65 {"frustrated", N_("Frustrated"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
66 {"grateful", N_("Grateful"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
67 {"grieving", N_("Grieving"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
68 {"grumpy", N_("Grumpy"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
69 {"guilty", N_("Guilty"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
70 {"happy", N_("Happy"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
71 {"hopeful", N_("Hopeful"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
72 {"hot", N_("Hot"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
73 {"humbled", N_("Humbled"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
74 {"humiliated", N_("Humiliated"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
75 {"hungry", N_("Hungry"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
76 {"hurt", N_("Hurt"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
77 {"impressed", N_("Impressed"), NULL},
29768
0ad628b5ff37 jabber: Remove a couple of underscores that slipped in in the textual
Marcus Lundblad <malu@pidgin.im>
parents: 29411
diff changeset
78 {"in_awe", N_("In awe"), NULL},
0ad628b5ff37 jabber: Remove a couple of underscores that slipped in in the textual
Marcus Lundblad <malu@pidgin.im>
parents: 29411
diff changeset
79 {"in_love", N_("In love"), NULL},
24913
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
80 {"indignant", N_("Indignant"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
81 {"interested", N_("Interested"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
82 {"intoxicated", N_("Intoxicated"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
83 {"invincible", N_("Invincible"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
84 {"jealous", N_("Jealous"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
85 {"lonely", N_("Lonely"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
86 {"lost", N_("Lost"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
87 {"lucky", N_("Lucky"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
88 {"mean", N_("Mean"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
89 {"moody", N_("Moody"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
90 {"nervous", N_("Nervous"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
91 {"neutral", N_("Neutral"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
92 {"offended", N_("Offended"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
93 {"outraged", N_("Outraged"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
94 {"playful", N_("Playful"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
95 {"proud", N_("Proud"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
96 {"relaxed", N_("Relaxed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
97 {"relieved", N_("Relieved"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
98 {"remorseful", N_("Remorseful"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
99 {"restless", N_("Restless"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
100 {"sad", N_("Sad"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
101 {"sarcastic", N_("Sarcastic"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
102 {"satisfied", N_("Satisfied"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
103 {"serious", N_("Serious"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
104 {"shocked", N_("Shocked"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
105 {"shy", N_("Shy"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
106 {"sick", N_("Sick"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
107 {"sleepy", N_("Sleepy"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
108 {"spontaneous", N_("Spontaneous"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
109 {"stressed", N_("Stressed"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
110 {"strong", N_("Strong"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
111 {"surprised", N_("Surprised"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
112 {"thankful", N_("Thankful"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
113 {"thirsty", N_("Thirsty"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
114 {"tired", N_("Tired"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
115 {"undefined", N_("Undefined"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
116 {"weak", N_("Weak"), NULL},
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
117 {"worried", N_("Worried"), NULL},
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
118 /* Mar last record. */
24913
e26d9244ded9 Convert XMPP to use an array of PurpleMoods internally.
Richard Laager <rlaager@pidgin.im>
parents: 24912
diff changeset
119 {NULL, NULL, NULL}
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
120 };
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
121
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
122 static const PurpleMood*
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
123 find_mood_by_name(const gchar *name)
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
124 {
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
125 int i;
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
126
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
127 g_return_val_if_fail(name && *name, NULL);
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
128
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
129 for (i = 0; moods[i].mood != NULL; ++i) {
38358
30ba44276e74 Merge release-2.x.y into default
dx <dx@dxzone.com.ar>
parents: 36692 38258
diff changeset
130 if (purple_strequal(name, moods[i].mood)) {
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
131 return &moods[i];
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
132 }
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
133 }
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
134
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
135 return NULL;
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
136 }
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
137
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
138 static void jabber_mood_cb(JabberStream *js, const char *from, PurpleXmlNode *items) {
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
139 /* it doesn't make sense to have more than one item here, so let's just pick the first one */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
140 PurpleXmlNode *item = purple_xmlnode_get_child(items, "item");
19391
e9a2be88e565 Initialize newmood to NULL, as there are codepaths by which we can check against whether it is NULL or not before setting it, and that's bad.
Evan Schoenberg <evands@pidgin.im>
parents: 17803
diff changeset
141 const char *newmood = NULL;
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
142 char *moodtext = NULL;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
143 JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
144 PurpleXmlNode *moodinfo, *mood;
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
145 /* ignore the mood of people not on our buddy list */
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
146 if (!buddy || !item)
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
147 return;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22943
diff changeset
148
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
149 mood = purple_xmlnode_get_child_with_namespace(item, "mood", "http://jabber.org/protocol/mood");
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
150 if (!mood)
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
151 return;
17790
02519364ff3f Fixed a minor mistake which could leave the usermood to be parsed incompletely.
Andreas Monitzer <am@adiumx.com>
parents: 17787
diff changeset
152 for (moodinfo = mood->child; moodinfo; moodinfo = moodinfo->next) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
153 if (moodinfo->type == PURPLE_XMLNODE_TYPE_TAG) {
38258
9a6551eba09c Replace !strcmp() with purple_strequal()
qarkai <qarkai@gmail.com>
parents: 33801
diff changeset
154 if (purple_strequal(moodinfo->name, "text")) {
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
155 if (!moodtext) /* only pick the first one */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
156 moodtext = purple_xmlnode_get_data(moodinfo);
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
157 } else {
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
158 const PurpleMood *target_mood;
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
159
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
160 /* verify that the mood is known (valid) */
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
161 target_mood = find_mood_by_name(moodinfo->name);
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
162 newmood = target_mood ? target_mood->mood : NULL;
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
163 }
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
164
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
165 }
28924
93102622d1c2 jabber: Update to v1.2 of the spec (adds a few more elements).
Paul Aurich <darkrain42@pidgin.im>
parents: 28322
diff changeset
166 if (newmood != NULL && moodtext != NULL)
33801
6dbfcd72998e Fix a few cases of dead code
Daniel Atallah <datallah@pidgin.im>
parents: 31935
diff changeset
167 break;
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
168 }
17781
d11010274b7a Removed the huge enum for the user mood states, since it's now passed as localized strings anyways
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
169 if (newmood != NULL) {
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
170 purple_protocol_got_user_status(purple_connection_get_account(js->gc), from, "mood",
29411
97e8c7f56350 Actually set the mood when creating a presence update when receiving mood PEP.
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
171 PURPLE_MOOD_NAME, newmood,
24912
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24902
diff changeset
172 PURPLE_MOOD_COMMENT, moodtext,
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24902
diff changeset
173 NULL);
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24902
diff changeset
174 } else {
36545
23b59a16c808 Replaced some _prpl_ stuff with _protocol_
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
175 purple_protocol_got_user_status_deactive(purple_connection_get_account(js->gc), from, "mood");
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
176 }
19899
483c4f495a6c Various warning fixes for the xmpp prpl.
Daniel Atallah <datallah@pidgin.im>
parents: 19898
diff changeset
177 g_free(moodtext);
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
178 }
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
179
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
180 void jabber_mood_init(void) {
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 22943
diff changeset
181 jabber_add_feature("http://jabber.org/protocol/mood", jabber_pep_namespace_only_when_pep_enabled_cb);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 22943
diff changeset
182 jabber_pep_register_handler("http://jabber.org/protocol/mood", jabber_mood_cb);
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
183 }
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
184
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
185 gboolean
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
186 jabber_mood_set(JabberStream *js, const char *mood, const char *text)
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
187 {
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
188 const PurpleMood *target_mood = NULL;
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
189 PurpleXmlNode *publish, *moodnode;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19899
diff changeset
190
31935
77896a9a09c2 jabber: Check for empty string when setting mood.
Paul Aurich <darkrain42@pidgin.im>
parents: 29825
diff changeset
191 if (mood && *mood) {
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
192 target_mood = find_mood_by_name(mood);
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
193 /* Mood specified, but is invalid --
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
194 * fail so that the command can handle this.
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
195 */
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
196 if (!target_mood)
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
197 return FALSE;
29769
4a3daffabb1c Allow unsetting mood in mood selector, works with XMPP... Oscar is not yet
Marcus Lundblad <malu@pidgin.im>
parents: 29768
diff changeset
198 }
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
199
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
200 publish = purple_xmlnode_new("publish");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
201 purple_xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/mood");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
202 moodnode = purple_xmlnode_new_child(purple_xmlnode_new_child(publish, "item"), "mood");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
203 purple_xmlnode_set_namespace(moodnode, "http://jabber.org/protocol/mood");
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
204
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
205 if (target_mood) {
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
206 /* If target_mood is not NULL, then
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
207 * target_mood->mood == mood, and is a valid element name.
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
208 */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
209 purple_xmlnode_new_child(moodnode, mood);
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
210
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
211 /* Only set text when setting a mood */
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
212 if (text && *text) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
213 PurpleXmlNode *textnode = purple_xmlnode_new_child(moodnode, "text");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 33811
diff changeset
214 purple_xmlnode_insert_data(textnode, text, -1);
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
215 }
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
216 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22943
diff changeset
217
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17778
diff changeset
218 jabber_pep_publish(js, publish);
32984
de7298a1dbe8 jabber: Validate user moods, and make the /mood cmd behave flexibly.
Paul Aurich <darkrain42@pidgin.im>
parents: 32438
diff changeset
219 return TRUE;
17776
e5d36bb0093b forgot to add usermood.[hc]
Andreas Monitzer <am@adiumx.com>
parents:
diff changeset
220 }
29407
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
221
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
222 PurpleMood *jabber_get_moods(PurpleAccount *account)
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
223 {
29815
e75c3336b42a Allow showing moods for buddies when signed on using an XMPP account not
Marcus Lundblad <malu@pidgin.im>
parents: 29803
diff changeset
224 return moods;
31935
77896a9a09c2 jabber: Check for empty string when setting mood.
Paul Aurich <darkrain42@pidgin.im>
parents: 29825
diff changeset
225 }

mercurial