libpurple/savedstatuses.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26891
0570b1cdf470
child 27116
19dff7b3ed0f
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1 /**
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13683
diff changeset
2 * @file savedstatuses.c Saved Status API
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
3 * @ingroup core
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* purple
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
7 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
8 * Purple is the legal property of its developers, whose names are too numerous
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
10 * source distribution.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
11 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
16 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
21 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
23 * 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: 18977
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
25 */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
26 #include "internal.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
27
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
28 #include "debug.h"
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
29 #include "idle.h"
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
30 #include "notify.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
31 #include "savedstatuses.h"
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13683
diff changeset
32 #include "dbus-maybe.h"
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
33 #include "request.h"
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
34 #include "status.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
35 #include "util.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
36 #include "xmlnode.h"
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
37
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
38 /**
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
39 * The maximum number of transient statuses to save. This
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
40 * is used during the shutdown process to clean out old
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
41 * transient statuses.
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
42 */
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
43 #define MAX_TRANSIENTS 5
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
44
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
45 /**
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
46 * The default message to use when the user becomes auto-away.
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
47 */
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
48 #define DEFAULT_AUTOAWAY_MESSAGE _("I'm not here right now")
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
49
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
50 /**
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
51 * The information stores a snap-shot of the statuses of all
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
52 * your accounts. Basically these are your saved away messages.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
53 * There is an overall status and message that applies to
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
54 * all your accounts, and then each individual account can
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
55 * optionally have a different custom status and message.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
56 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
57 * The changes to status.xml caused by the new status API
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
58 * are fully backward compatible. The new status API just
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
59 * adds the optional sub-statuses to the XML file.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
60 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
61 struct _PurpleSavedStatus
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
62 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
63 char *title;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
64 PurpleStatusPrimitive type;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
65 char *message;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
66
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
67 /** The timestamp when this saved status was created. This must be unique. */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
68 time_t creation_time;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
69
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
70 time_t lastused;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
71
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
72 unsigned int usage_count;
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
73
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
74 GList *substatuses; /**< A list of PurpleSavedStatusSub's. */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
75 };
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
76
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
77 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
78 * TODO: If a PurpleStatusType is deleted, need to also delete any
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
79 * associated PurpleSavedStatusSub's?
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
80 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
81 struct _PurpleSavedStatusSub
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
82 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
83 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
84 const PurpleStatusType *type;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
85 char *message;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
86 };
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
87
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
88 static GList *saved_statuses = NULL;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
89 static guint save_timer = 0;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
90 static gboolean statuses_loaded = FALSE;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
91
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
92 /*
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
93 * This hash table keeps track of which timestamps we've
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
94 * used so that we don't have two saved statuses with the
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
95 * same 'creation_time' timestamp. The 'created' timestamp
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
96 * is used as a unique identifier.
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
97 *
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
98 * So the key in this hash table is the creation_time and
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
99 * the value is a pointer to the PurpleSavedStatus.
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
100 */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
101 static GHashTable *creation_times;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
102
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
103 static void schedule_save(void);
10427
2ea1412bc75f [gaim-migrate @ 11679]
Mark Doliner <markdoliner@pidgin.im>
parents: 10426
diff changeset
104
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
105 /*********************************************************************
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
106 * Private utility functions *
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
107 *********************************************************************/
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
108
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
109 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
110 free_saved_status_sub(PurpleSavedStatusSub *substatus)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
111 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
112 g_return_if_fail(substatus != NULL);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
113
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
114 g_free(substatus->message);
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
115 purple_request_close_with_handle(substatus);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
116 PURPLE_DBUS_UNREGISTER_POINTER(substatus);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
117 g_free(substatus);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
118 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
119
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
120 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
121 free_saved_status(PurpleSavedStatus *status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
122 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
123 g_return_if_fail(status != NULL);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
124
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
125 g_free(status->title);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
126 g_free(status->message);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
127
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
128 while (status->substatuses != NULL)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
129 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
130 PurpleSavedStatusSub *substatus = status->substatuses->data;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
131 status->substatuses = g_list_remove(status->substatuses, substatus);
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
132 free_saved_status_sub(substatus);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
133 }
18261
8d68cb9b4d40 Close all delete-confirmation dialogs for it when a status is deleted.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
134 purple_request_close_with_handle(status);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
135 PURPLE_DBUS_UNREGISTER_POINTER(status);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
136 g_free(status);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
137 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
138
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
139 /*
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
140 * Set the timestamp for when this saved status was created, and
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
141 * make sure it is unique.
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
142 */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
143 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
144 set_creation_time(PurpleSavedStatus *status, time_t creation_time)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
145 {
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
146 g_return_if_fail(status != NULL);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
147
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
148 /* Avoid using 0 because it's an invalid hash key */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
149 status->creation_time = creation_time != 0 ? creation_time : 1;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
150
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
151 while (g_hash_table_lookup(creation_times, (gconstpointer)status->creation_time) != NULL)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
152 status->creation_time++;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
153
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
154 g_hash_table_insert(creation_times,
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
155 (gpointer)status->creation_time,
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
156 status);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
157 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
158
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
159 /**
16702
408400e77eca Fix a typo in the documentation of a function
Mark Doliner <markdoliner@pidgin.im>
parents: 16478
diff changeset
160 * A magic number is calculated for each status, and then the
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
161 * statuses are ordered by the magic number. The magic number
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
162 * is the date the status was last used offset by one day for
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
163 * each time the status has been used (but only by 10 days at
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
164 * the most).
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
165 *
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
166 * The goal is to have recently used statuses at the top of
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
167 * the list, but to also keep frequently used statuses near
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
168 * the top.
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
169 */
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
170 static gint
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
171 saved_statuses_sort_func(gconstpointer a, gconstpointer b)
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
172 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
173 const PurpleSavedStatus *saved_status_a = a;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
174 const PurpleSavedStatus *saved_status_b = b;
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
175 time_t time_a = saved_status_a->lastused +
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
176 (MIN(saved_status_a->usage_count, 10) * 86400);
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
177 time_t time_b = saved_status_b->lastused +
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
178 (MIN(saved_status_b->usage_count, 10) * 86400);
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
179 if (time_a > time_b)
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
180 return -1;
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
181 if (time_a < time_b)
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
182 return 1;
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
183 return 0;
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
184 }
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
185
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
186 /**
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
187 * Transient statuses are added and removed automatically by
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
188 * Purple. If they're not used for a certain length of time then
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
189 * they'll expire and be automatically removed. This function
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
190 * does the expiration.
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
191 */
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
192 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 21908
diff changeset
193 remove_old_transient_statuses(void)
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
194 {
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
195 GList *l, *next;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
196 PurpleSavedStatus *saved_status, *current_status;
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
197 int count;
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
198 time_t creation_time;
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
199
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
200 current_status = purple_savedstatus_get_current();
13198
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
201
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
202 /*
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
203 * Iterate through the list of saved statuses. Delete all
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
204 * transient statuses except for the first MAX_TRANSIENTS
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
205 * (remember, the saved statuses are already sorted by popularity).
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
206 */
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
207 count = 0;
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
208 for (l = saved_statuses; l != NULL; l = next)
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
209 {
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
210 next = l->next;
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
211 saved_status = l->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
212 if (purple_savedstatus_is_transient(saved_status))
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
213 {
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
214 if (count == MAX_TRANSIENTS)
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
215 {
13198
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
216 if (saved_status != current_status)
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
217 {
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
218 saved_statuses = g_list_remove(saved_statuses, saved_status);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
219 creation_time = purple_savedstatus_get_creation_time(saved_status);
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
220 g_hash_table_remove(creation_times, (gconstpointer)creation_time);
13198
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
221 free_saved_status(saved_status);
208f0e50ff0f [gaim-migrate @ 15560]
Mark Doliner <markdoliner@pidgin.im>
parents: 13012
diff changeset
222 }
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
223 }
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
224 else
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
225 count++;
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
226 }
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
227 }
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
228
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
229 if (count == MAX_TRANSIENTS)
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
230 schedule_save();
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
231 }
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
232
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
233 /*********************************************************************
10429
cc2f5ab7ed77 [gaim-migrate @ 11681]
Mark Doliner <markdoliner@pidgin.im>
parents: 10428
diff changeset
234 * Writing to disk *
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
235 *********************************************************************/
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
236
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
237 static xmlnode *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
238 substatus_to_xmlnode(PurpleSavedStatusSub *substatus)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
239 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
240 xmlnode *node, *child;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
241
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
242 node = xmlnode_new("substatus");
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
243
10424
e607942e309a [gaim-migrate @ 11676]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
244 child = xmlnode_new_child(node, "account");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
245 xmlnode_set_attrib(child, "protocol", purple_account_get_protocol_id(substatus->account));
21908
0e933a80c8fd Save the normalized account name for pounces and custom statuses. References #2049.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21039
diff changeset
246 xmlnode_insert_data(child,
0e933a80c8fd Save the normalized account name for pounces and custom statuses. References #2049.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21039
diff changeset
247 purple_normalize(substatus->account,
0e933a80c8fd Save the normalized account name for pounces and custom statuses. References #2049.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21039
diff changeset
248 purple_account_get_username(substatus->account)), -1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
249
10424
e607942e309a [gaim-migrate @ 11676]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
250 child = xmlnode_new_child(node, "state");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
251 xmlnode_insert_data(child, purple_status_type_get_id(substatus->type), -1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
252
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
253 if (substatus->message != NULL)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
254 {
10424
e607942e309a [gaim-migrate @ 11676]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
255 child = xmlnode_new_child(node, "message");
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
256 xmlnode_insert_data(child, substatus->message, -1);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
257 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
258
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
259 return node;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
260 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
261
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
262 static xmlnode *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
263 status_to_xmlnode(PurpleSavedStatus *status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
264 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
265 xmlnode *node, *child;
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
266 char buf[21];
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
267 GList *cur;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
268
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
269 node = xmlnode_new("status");
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
270 if (status->title != NULL)
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
271 {
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
272 xmlnode_set_attrib(node, "name", status->title);
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
273 }
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
274 else
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
275 {
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
276 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
277 * Purple 1.5.0 and earlier require a name to be set, so we
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
278 * do this little hack to maintain backward compatability
12309
e42cff3223a3 [gaim-migrate @ 14613]
Mark Doliner <markdoliner@pidgin.im>
parents: 12283
diff changeset
279 * in the status.xml file. Eventually this should be removed
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
280 * and we should determine if a status is transient by
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
281 * whether the "name" attribute is set to something or if
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
282 * it does not exist at all.
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
283 */
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
284 xmlnode_set_attrib(node, "name", "Auto-Cached");
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
285 xmlnode_set_attrib(node, "transient", "true");
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
286 }
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
287
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
288 snprintf(buf, sizeof(buf), "%lu", status->creation_time);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
289 xmlnode_set_attrib(node, "created", buf);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
290
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
291 snprintf(buf, sizeof(buf), "%lu", status->lastused);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
292 xmlnode_set_attrib(node, "lastused", buf);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
293
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
294 snprintf(buf, sizeof(buf), "%u", status->usage_count);
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
295 xmlnode_set_attrib(node, "usage_count", buf);
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
296
10424
e607942e309a [gaim-migrate @ 11676]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
297 child = xmlnode_new_child(node, "state");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
298 xmlnode_insert_data(child, purple_primitive_get_id_from_type(status->type), -1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
299
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
300 if (status->message != NULL)
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
301 {
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
302 child = xmlnode_new_child(node, "message");
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
303 xmlnode_insert_data(child, status->message, -1);
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
304 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
305
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
306 for (cur = status->substatuses; cur != NULL; cur = cur->next)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
307 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
308 child = substatus_to_xmlnode(cur->data);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
309 xmlnode_insert_child(node, child);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
310 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
311
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
312 return node;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
313 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
314
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
315 static xmlnode *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
316 statuses_to_xmlnode(void)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
317 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
318 xmlnode *node, *child;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
319 GList *cur;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
320
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
321 node = xmlnode_new("statuses");
10423
4663a8238def [gaim-migrate @ 11675]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
322 xmlnode_set_attrib(node, "version", "1.0");
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
323
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
324 for (cur = saved_statuses; cur != NULL; cur = cur->next)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
325 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
326 child = status_to_xmlnode(cur->data);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
327 xmlnode_insert_child(node, child);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
328 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
329
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
330 return node;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
331 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
332
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
333 static void
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
334 sync_statuses(void)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
335 {
10423
4663a8238def [gaim-migrate @ 11675]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
336 xmlnode *node;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
337 char *data;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
338
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
339 if (!statuses_loaded)
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
340 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
341 purple_debug_error("status", "Attempted to save statuses before they "
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
342 "were read!\n");
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
343 return;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
344 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
345
10423
4663a8238def [gaim-migrate @ 11675]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
346 node = statuses_to_xmlnode();
4663a8238def [gaim-migrate @ 11675]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
347 data = xmlnode_to_formatted_str(node, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
348 purple_util_write_data_to_file("status.xml", data, -1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
349 g_free(data);
10423
4663a8238def [gaim-migrate @ 11675]
Mark Doliner <markdoliner@pidgin.im>
parents: 10420
diff changeset
350 xmlnode_free(node);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
351 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
352
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
353 static gboolean
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
354 save_cb(gpointer data)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
355 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
356 sync_statuses();
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
357 save_timer = 0;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
358 return FALSE;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
359 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
360
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
361 static void
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
362 schedule_save(void)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
363 {
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
364 if (save_timer == 0)
18068
b6554e3c8224 merge of '1442df274a24edc9a31194327bd00dfbcf478720'
Richard Laager <rlaager@pidgin.im>
parents: 18067 16702
diff changeset
365 save_timer = purple_timeout_add_seconds(5, save_cb, NULL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
366 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
367
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
368
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
369 /*********************************************************************
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
370 * Reading from disk *
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
371 *********************************************************************/
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
372
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
373 static PurpleSavedStatusSub *
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
374 parse_substatus(xmlnode *substatus)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
375 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
376 PurpleSavedStatusSub *ret;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
377 xmlnode *node;
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
378 char *data;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
379
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
380 ret = g_new0(PurpleSavedStatusSub, 1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
381
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
382 /* Read the account */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
383 node = xmlnode_get_child(substatus, "account");
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
384 if (node != NULL)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
385 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
386 char *acct_name;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
387 const char *protocol;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
388 acct_name = xmlnode_get_data(node);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
389 protocol = xmlnode_get_attrib(node, "protocol");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
390 protocol = _purple_oscar_convert(acct_name, protocol); /* XXX: Remove */
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
391 if ((acct_name != NULL) && (protocol != NULL))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
392 ret->account = purple_accounts_find(acct_name, protocol);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
393 g_free(acct_name);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
394 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
395
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
396 if (ret->account == NULL)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
397 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
398 g_free(ret);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
399 return NULL;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
400 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
401
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
402 /* Read the state */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
403 node = xmlnode_get_child(substatus, "state");
10426
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
404 if ((node != NULL) && ((data = xmlnode_get_data(node)) != NULL))
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
405 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
406 ret->type = purple_status_type_find_with_id(
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
407 ret->account->status_types, data);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
408 g_free(data);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
409 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
410
16301
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
411 if (ret->type == NULL)
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
412 {
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
413 g_free(ret);
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
414 return NULL;
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
415 }
45ac8cee1b51 When reading in substatuses from status.xml, ignore substatuses for
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
416
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
417 /* Read the message */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
418 node = xmlnode_get_child(substatus, "message");
10426
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
419 if ((node != NULL) && ((data = xmlnode_get_data(node)) != NULL))
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
420 {
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
421 ret->message = data;
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
422 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
423
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
424 PURPLE_DBUS_REGISTER_POINTER(ret, PurpleSavedStatusSub);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
425 return ret;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
426 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
427
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
428 /**
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
429 * Parse a saved status and add it to the saved_statuses linked list.
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
430 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
431 * Here's an example of the XML for a saved status:
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
432 * <status name="Girls">
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
433 * <state>away</state>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
434 * <message>I like the way that they walk
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
435 * And it's chill to hear them talk
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
436 * And I can always make them smile
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
437 * From White Castle to the Nile</message>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
438 * <substatus>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
439 * <account protocol='prpl-oscar'>markdoliner</account>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
440 * <state>available</state>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
441 * <message>The ladies man is here to answer your queries.</message>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
442 * </substatus>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
443 * <substatus>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
444 * <account protocol='prpl-oscar'>giantgraypanda</account>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
445 * <state>away</state>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
446 * <message>A.C. ain't in charge no more.</message>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
447 * </substatus>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
448 * </status>
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
449 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
450 * I know. Moving, huh?
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
451 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
452 static PurpleSavedStatus *
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
453 parse_status(xmlnode *status)
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
454 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
455 PurpleSavedStatus *ret;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
456 xmlnode *node;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
457 const char *attrib;
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
458 char *data;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
459 int i;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
460
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
461 ret = g_new0(PurpleSavedStatus, 1);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
462
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
463 attrib = xmlnode_get_attrib(status, "transient");
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 22868
diff changeset
464 if (!purple_strequal(attrib, "true"))
12283
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
465 {
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
466 /* Read the title */
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
467 attrib = xmlnode_get_attrib(status, "name");
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
468 ret->title = g_strdup(attrib);
1882e6c066e9 [gaim-migrate @ 14587]
Mark Doliner <markdoliner@pidgin.im>
parents: 12197
diff changeset
469 }
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
470
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
471 if (ret->title != NULL)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
472 {
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
473 /* Ensure the title is unique */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
474 i = 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
475 while (purple_savedstatus_find(ret->title) != NULL)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
476 {
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
477 g_free(ret->title);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
478 ret->title = g_strdup_printf("%s %d", attrib, i);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
479 i++;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
480 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
481 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
482
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
483 /* Read the creation time */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
484 attrib = xmlnode_get_attrib(status, "created");
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
485 set_creation_time(ret, (attrib != NULL ? atol(attrib) : 0));
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
486
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
487 /* Read the last used time */
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
488 attrib = xmlnode_get_attrib(status, "lastused");
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
489 ret->lastused = (attrib != NULL ? atol(attrib) : 0);
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
490
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
491 /* Read the usage count */
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
492 attrib = xmlnode_get_attrib(status, "usage_count");
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
493 ret->usage_count = (attrib != NULL ? atol(attrib) : 0);
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
494
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
495 /* Read the primitive status type */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
496 node = xmlnode_get_child(status, "state");
10426
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
497 if ((node != NULL) && ((data = xmlnode_get_data(node)) != NULL))
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
498 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
499 ret->type = purple_primitive_get_type_from_id(data);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
500 g_free(data);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
501 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
502
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
503 /* Read the message */
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
504 node = xmlnode_get_child(status, "message");
10426
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
505 if ((node != NULL) && ((data = xmlnode_get_data(node)) != NULL))
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
506 {
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
507 ret->message = data;
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
508 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
509
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
510 /* Read substatuses */
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
511 for (node = xmlnode_get_child(status, "substatus"); node != NULL;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
512 node = xmlnode_get_next_twin(node))
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
513 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
514 PurpleSavedStatusSub *new;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
515 new = parse_substatus(node);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
516 if (new != NULL)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
517 ret->substatuses = g_list_prepend(ret->substatuses, new);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
518 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
519
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
520 PURPLE_DBUS_REGISTER_POINTER(ret, PurpleSavedStatus);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
521 return ret;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
522 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
523
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
524 /**
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
525 * Read the saved statuses from a file in the Purple user dir.
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
526 *
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
527 * @return TRUE on success, FALSE on failure (if the file can not
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
528 * be opened, or if it contains invalid XML).
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
529 */
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
530 static void
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
531 load_statuses(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
532 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
533 xmlnode *statuses, *status;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
534
10426
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
535 statuses_loaded = TRUE;
f026e2a8f909 [gaim-migrate @ 11678]
Mark Doliner <markdoliner@pidgin.im>
parents: 10425
diff changeset
536
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
537 statuses = purple_util_read_xml_from_file("status.xml", _("saved statuses"));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
538
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
539 if (statuses == NULL)
10425
d82cef15da95 [gaim-migrate @ 11677]
Mark Doliner <markdoliner@pidgin.im>
parents: 10424
diff changeset
540 return;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
541
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
542 for (status = xmlnode_get_child(statuses, "status"); status != NULL;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
543 status = xmlnode_get_next_twin(status))
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
544 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
545 PurpleSavedStatus *new;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
546 new = parse_status(status);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
547 saved_statuses = g_list_prepend(saved_statuses, new);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
548 }
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
549 saved_statuses = g_list_sort(saved_statuses, saved_statuses_sort_func);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
550
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
551 xmlnode_free(statuses);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
552 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
553
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
554
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
555 /**************************************************************************
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
556 * Saved status API
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
557 **************************************************************************/
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
558 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
559 purple_savedstatus_new(const char *title, PurpleStatusPrimitive type)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
560 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
561 PurpleSavedStatus *status;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
562
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
563 /* Make sure we don't already have a saved status with this title. */
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
564 if (title != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
565 g_return_val_if_fail(purple_savedstatus_find(title) == NULL, NULL);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
566
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
567 status = g_new0(PurpleSavedStatus, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
568 PURPLE_DBUS_REGISTER_POINTER(status, PurpleSavedStatus);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
569 status->title = g_strdup(title);
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
570 status->type = type;
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
571 set_creation_time(status, time(NULL));
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
572
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
573 saved_statuses = g_list_insert_sorted(saved_statuses, status, saved_statuses_sort_func);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
574
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
575 schedule_save();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
576
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
577 purple_signal_emit(purple_savedstatuses_get_handle(), "savedstatus-added",
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
578 status);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
579
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
580 return status;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
581 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
582
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
583 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
584 purple_savedstatus_set_title(PurpleSavedStatus *status, const char *title)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
585 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
586 g_return_if_fail(status != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
587
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
588 /* Make sure we don't already have a saved status with this title. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
589 g_return_if_fail(purple_savedstatus_find(title) == NULL);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
590
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
591 g_free(status->title);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
592 status->title = g_strdup(title);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
593
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
594 schedule_save();
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
595
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
596 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
597 "savedstatus-modified", status);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
598 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
599
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
600 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
601 purple_savedstatus_set_type(PurpleSavedStatus *status, PurpleStatusPrimitive type)
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
602 {
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
603 g_return_if_fail(status != NULL);
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
604
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
605 status->type = type;
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
606
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
607 schedule_save();
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
608 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
609 "savedstatus-modified", status);
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
610 }
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
611
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
612 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
613 purple_savedstatus_set_message(PurpleSavedStatus *status, const char *message)
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
614 {
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
615 g_return_if_fail(status != NULL);
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
616
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
617 g_free(status->message);
13247
2162ed1a6f41 [gaim-migrate @ 15612]
Mark Doliner <markdoliner@pidgin.im>
parents: 13245
diff changeset
618 if ((message != NULL) && (*message == '\0'))
2162ed1a6f41 [gaim-migrate @ 15612]
Mark Doliner <markdoliner@pidgin.im>
parents: 13245
diff changeset
619 status->message = NULL;
2162ed1a6f41 [gaim-migrate @ 15612]
Mark Doliner <markdoliner@pidgin.im>
parents: 13245
diff changeset
620 else
2162ed1a6f41 [gaim-migrate @ 15612]
Mark Doliner <markdoliner@pidgin.im>
parents: 13245
diff changeset
621 status->message = g_strdup(message);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
622
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
623 schedule_save();
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
624
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
625 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
626 "savedstatus-modified", status);
10420
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
627 }
7277ae4229e9 [gaim-migrate @ 11671]
Mark Doliner <markdoliner@pidgin.im>
parents: 10419
diff changeset
628
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
629 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
630 purple_savedstatus_set_substatus(PurpleSavedStatus *saved_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
631 const PurpleAccount *account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
632 const PurpleStatusType *type,
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12056
diff changeset
633 const char *message)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
634 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
635 PurpleSavedStatusSub *substatus;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
636
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
637 g_return_if_fail(saved_status != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
638 g_return_if_fail(account != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
639 g_return_if_fail(type != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
640
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
641 /* Find an existing substatus or create a new one */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
642 substatus = purple_savedstatus_get_substatus(saved_status, account);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
643 if (substatus == NULL)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
644 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
645 substatus = g_new0(PurpleSavedStatusSub, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
646 PURPLE_DBUS_REGISTER_POINTER(substatus, PurpleSavedStatusSub);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
647 substatus->account = (PurpleAccount *)account;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
648 saved_status->substatuses = g_list_prepend(saved_status->substatuses, substatus);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
649 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
650
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
651 substatus->type = type;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
652 g_free(substatus->message);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
653 substatus->message = g_strdup(message);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
654
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
655 schedule_save();
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
656 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
657 "savedstatus-modified", saved_status);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
658 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
659
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
660 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
661 purple_savedstatus_unset_substatus(PurpleSavedStatus *saved_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
662 const PurpleAccount *account)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
663 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
664 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
665 PurpleSavedStatusSub *substatus;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
666
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
667 g_return_if_fail(saved_status != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
668 g_return_if_fail(account != NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
669
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
670 for (iter = saved_status->substatuses; iter != NULL; iter = iter->next)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
671 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
672 substatus = iter->data;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
673 if (substatus->account == account)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
674 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
675 saved_status->substatuses = g_list_delete_link(saved_status->substatuses, iter);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
676 g_free(substatus->message);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
677 g_free(substatus);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
678 return;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
679 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
680 }
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
681
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
682 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
683 "savedstatus-modified", saved_status);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
684 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
685
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
686 /*
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
687 * This gets called when an account is deleted. We iterate through
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
688 * all of our saved statuses and delete any substatuses that may
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
689 * exist for this account.
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
690 */
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
691 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
692 purple_savedstatus_unset_all_substatuses(const PurpleAccount *account,
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
693 gpointer user_data)
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
694 {
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
695 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
696 PurpleSavedStatus *status;
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
697
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
698 g_return_if_fail(account != NULL);
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
699
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
700 for (iter = saved_statuses; iter != NULL; iter = iter->next)
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
701 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
702 status = (PurpleSavedStatus *)iter->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
703 purple_savedstatus_unset_substatus(status, account);
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
704 }
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
705 }
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
706
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
707 void
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
708 purple_savedstatus_delete_by_status(PurpleSavedStatus *status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
709 {
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
710 time_t creation_time, current, idleaway;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
711
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
712 g_return_if_fail(status != NULL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
713
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
714 saved_statuses = g_list_remove(saved_statuses, status);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
715 creation_time = purple_savedstatus_get_creation_time(status);
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
716 g_hash_table_remove(creation_times, (gconstpointer)creation_time);
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
717 free_saved_status(status);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
718
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
719 schedule_save();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
720
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
721 /*
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
722 * If we just deleted our current status or our idleaway status,
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
723 * then set the appropriate pref back to 0.
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
724 */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
725 current = purple_prefs_get_int("/purple/savedstatus/default");
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
726 if (current == creation_time)
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
727 purple_prefs_set_int("/purple/savedstatus/default", 0);
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
728
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
729 idleaway = purple_prefs_get_int("/purple/savedstatus/idleaway");
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
730 if (idleaway == creation_time)
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
731 purple_prefs_set_int("/purple/savedstatus/idleaway", 0);
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
732
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
733 purple_signal_emit(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
734 "savedstatus-deleted", status);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
735 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
736
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
737 gboolean
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
738 purple_savedstatus_delete(const char *title)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
739 {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
740 PurpleSavedStatus *status;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
741
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
742 status = purple_savedstatus_find(title);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
743
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
744 if (status == NULL)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
745 return FALSE;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
746
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
747 if (purple_savedstatus_get_current() == status)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
748 return FALSE;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
749
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
750 purple_savedstatus_delete_by_status(status);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
751
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
752 return TRUE;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
753 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
754
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18068
diff changeset
755 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
756 purple_savedstatuses_get_all(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
757 {
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
758 return saved_statuses;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
759 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
760
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
761 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
762 purple_savedstatuses_get_popular(unsigned int how_many)
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
763 {
13675
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
764 GList *popular = NULL;
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
765 GList *cur;
21039
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
766 unsigned int i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
767 PurpleSavedStatus *next;
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
768
21039
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
769 /* Copy 'how_many' elements to a new list. If 'how_many' is 0, then copy all of 'em. */
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
770 if (how_many == 0)
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
771 how_many = (unsigned int) -1;
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
772
13675
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
773 i = 0;
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
774 cur = saved_statuses;
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
775 while ((i < how_many) && (cur != NULL))
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
776 {
13677
cf8c46ba7b91 [gaim-migrate @ 16077]
Mark Doliner <markdoliner@pidgin.im>
parents: 13675
diff changeset
777 next = cur->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
778 if ((!purple_savedstatus_is_transient(next)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
779 || purple_savedstatus_get_message(next) != NULL))
13675
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
780 {
21039
ea939e518c47 deryni noticed that the documentation and code do not match for
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20147
diff changeset
781 popular = g_list_prepend(popular, next);
13675
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
782 i++;
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
783 }
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
784 cur = cur->next;
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
785 }
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
786
13675
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
787 popular = g_list_reverse(popular);
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
788
edc4a39fd463 [gaim-migrate @ 16075]
Mark Doliner <markdoliner@pidgin.im>
parents: 13388
diff changeset
789 return popular;
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
790 }
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
792 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
793 purple_savedstatus_get_current(void)
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
794 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
795 if (purple_savedstatus_is_idleaway())
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
796 return purple_savedstatus_get_idleaway();
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
797 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
798 return purple_savedstatus_get_default();
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
799 }
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
800
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
801 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
802 purple_savedstatus_get_default()
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
803 {
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
804 time_t creation_time;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
805 PurpleSavedStatus *saved_status = NULL;
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
806
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
807 creation_time = purple_prefs_get_int("/purple/savedstatus/default");
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
808
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
809 if (creation_time != 0)
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
810 saved_status = g_hash_table_lookup(creation_times, (gconstpointer)creation_time);
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
811
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
812 if (saved_status == NULL)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
813 {
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
814 /*
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
815 * We don't have a current saved status! This is either a new
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
816 * Purple user or someone upgrading from Purple 1.5.0 or older, or
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
817 * possibly someone who deleted the status they were currently
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
818 * using? In any case, add a default status.
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
819 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
820 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
821 purple_prefs_set_int("/purple/savedstatus/default",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
822 purple_savedstatus_get_creation_time(saved_status));
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
823 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
824
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
825 return saved_status;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
826 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
827
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
828 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
829 purple_savedstatus_get_idleaway()
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
830 {
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
831 time_t creation_time;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
832 PurpleSavedStatus *saved_status = NULL;
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
833
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
834 creation_time = purple_prefs_get_int("/purple/savedstatus/idleaway");
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
835
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
836 if (creation_time != 0)
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
837 saved_status = g_hash_table_lookup(creation_times, (gconstpointer)creation_time);
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
838
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
839 if (saved_status == NULL)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
840 {
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
841 /* We don't have a specified "idle" status! Weird. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
842 saved_status = purple_savedstatus_find_transient_by_type_and_message(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
843 PURPLE_STATUS_AWAY, DEFAULT_AUTOAWAY_MESSAGE);
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
844
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
845 if (saved_status == NULL)
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
846 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
847 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_AWAY);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
848 purple_savedstatus_set_message(saved_status, DEFAULT_AUTOAWAY_MESSAGE);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
849 purple_prefs_set_int("/purple/savedstatus/idleaway",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
850 purple_savedstatus_get_creation_time(saved_status));
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
851 }
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
852 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
853
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
854 return saved_status;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
855 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
856
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
857 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
858 purple_savedstatus_is_idleaway()
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
859 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
860 return purple_prefs_get_bool("/purple/savedstatus/isidleaway");
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
861 }
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
862
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
863 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
864 purple_savedstatus_set_idleaway(gboolean idleaway)
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
865 {
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
866 GList *accounts, *node;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
867 PurpleSavedStatus *old, *saved_status;
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
868
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
869 if (purple_savedstatus_is_idleaway() == idleaway)
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
870 /* Don't need to do anything */
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
871 return;
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
872
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
873 old = purple_savedstatus_get_current();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
874 saved_status = idleaway ? purple_savedstatus_get_idleaway()
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
875 : purple_savedstatus_get_default();
18977
d30048f913cf Fixes #1905 'Better solution to 'Idleness Infinite Recursion''
Sean Egan <seanegan@pidgin.im>
parents: 18261
diff changeset
876 purple_prefs_set_bool("/purple/savedstatus/isidleaway", idleaway);
14423
bf504ef2e5e2 [gaim-migrate @ 17067]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
877
26891
0570b1cdf470 Adjust some idle handling code to fix "wedging" idle reporting into never
Paul Aurich <darkrain42@pidgin.im>
parents: 25911
diff changeset
878 /* Changing our status makes us un-idle */
0570b1cdf470 Adjust some idle handling code to fix "wedging" idle reporting into never
Paul Aurich <darkrain42@pidgin.im>
parents: 25911
diff changeset
879 if (!idleaway)
0570b1cdf470 Adjust some idle handling code to fix "wedging" idle reporting into never
Paul Aurich <darkrain42@pidgin.im>
parents: 25911
diff changeset
880 purple_idle_touch();
0570b1cdf470 Adjust some idle handling code to fix "wedging" idle reporting into never
Paul Aurich <darkrain42@pidgin.im>
parents: 25911
diff changeset
881
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
882 if (idleaway && (purple_savedstatus_get_type(old) != PURPLE_STATUS_AVAILABLE))
14423
bf504ef2e5e2 [gaim-migrate @ 17067]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
883 /* Our global status is already "away," so don't change anything */
bf504ef2e5e2 [gaim-migrate @ 17067]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
884 return;
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
885
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
886 accounts = purple_accounts_get_all_active();
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
887 for (node = accounts; node != NULL; node = node->next)
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
888 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
889 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
890 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
891 PurpleStatus *status;
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
892
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
893 account = node->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
894 presence = purple_account_get_presence(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
895 status = purple_presence_get_active_status(presence);
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
896
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
897 if (!idleaway || purple_status_is_available(status))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
898 purple_savedstatus_activate_for_account(saved_status, account);
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
899 }
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
900
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
901 g_list_free(accounts);
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
902
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
903 purple_signal_emit(purple_savedstatuses_get_handle(), "savedstatus-changed",
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
904 saved_status, old);
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
905 }
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 13763
diff changeset
906
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
907 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
908 purple_savedstatus_get_startup()
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
909 {
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
910 time_t creation_time;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
911 PurpleSavedStatus *saved_status = NULL;
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
912
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
913 creation_time = purple_prefs_get_int("/purple/savedstatus/startup");
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
914
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
915 if (creation_time != 0)
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
916 saved_status = g_hash_table_lookup(creation_times, (gconstpointer)creation_time);
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
917
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
918 if (saved_status == NULL)
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
919 {
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
920 /*
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
921 * We don't have a status to apply.
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
922 * This may be the first login, or the user wants to
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
923 * restore the "current" status.
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
924 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
925 saved_status = purple_savedstatus_get_current();
13683
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
926 }
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
927
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
928 return saved_status;
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
929 }
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
930
d523c24ed269 [gaim-migrate @ 16084]
Mark Doliner <markdoliner@pidgin.im>
parents: 13677
diff changeset
931
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
932 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
933 purple_savedstatus_find(const char *title)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
934 {
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
935 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
936 PurpleSavedStatus *status;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
937
11977
51548c459a94 [gaim-migrate @ 14270]
Mark Doliner <markdoliner@pidgin.im>
parents: 11975
diff changeset
938 g_return_val_if_fail(title != NULL, NULL);
51548c459a94 [gaim-migrate @ 14270]
Mark Doliner <markdoliner@pidgin.im>
parents: 11975
diff changeset
939
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
940 for (iter = saved_statuses; iter != NULL; iter = iter->next)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
941 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
942 status = (PurpleSavedStatus *)iter->data;
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 22868
diff changeset
943 if (purple_strequal(status->title, title))
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
944 return status;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
945 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
946
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
947 return NULL;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
948 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
949
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
950 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
951 purple_savedstatus_find_by_creation_time(time_t creation_time)
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
952 {
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
953 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
954 PurpleSavedStatus *status;
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
955
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
956 for (iter = saved_statuses; iter != NULL; iter = iter->next)
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
957 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
958 status = (PurpleSavedStatus *)iter->data;
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
959 if (status->creation_time == creation_time)
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
960 return status;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
961 }
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
962
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
963 return NULL;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
964 }
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
965
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
966 PurpleSavedStatus *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
967 purple_savedstatus_find_transient_by_type_and_message(PurpleStatusPrimitive type,
13245
3c026039efc5 [gaim-migrate @ 15610]
Mark Doliner <markdoliner@pidgin.im>
parents: 13198
diff changeset
968 const char *message)
13012
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
969 {
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
970 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
971 PurpleSavedStatus *status;
13012
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
972
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
973 for (iter = saved_statuses; iter != NULL; iter = iter->next)
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
974 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
975 status = (PurpleSavedStatus *)iter->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
976 if ((status->type == type) && purple_savedstatus_is_transient(status) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
977 !purple_savedstatus_has_substatuses(status) &&
25859
b42be7bb9dac Patch from Paul Aurich to add purple_strequal to help readability and simplicity of code. Ie, don't need to negate the value of strcmp, since this does a strcmp and does the negation for us
Paul Aurich <darkrain42@pidgin.im>
parents: 22868
diff changeset
978 purple_strequal(status->message, message))
13012
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
979 {
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
980 return status;
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
981 }
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
982 }
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
983
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
984 return NULL;
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
985 }
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12857
diff changeset
986
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
987 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
988 purple_savedstatus_is_transient(const PurpleSavedStatus *saved_status)
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
989 {
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
990 g_return_val_if_fail(saved_status != NULL, TRUE);
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
991
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
992 return (saved_status->title == NULL);
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
993 }
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
994
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
995 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
996 purple_savedstatus_get_title(const PurpleSavedStatus *saved_status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
997 {
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
998 const char *message;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
999
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1000 g_return_val_if_fail(saved_status != NULL, NULL);
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1001
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1002 /* If we have a title then return it */
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1003 if (saved_status->title != NULL)
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1004 return saved_status->title;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1005
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1006 /* Otherwise, this is a transient status and we make up a title on the fly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1007 message = purple_savedstatus_get_message(saved_status);
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
1008
12781
2fda73c527c8 [gaim-migrate @ 15128]
Mark Doliner <markdoliner@pidgin.im>
parents: 12729
diff changeset
1009 if ((message == NULL) || (*message == '\0'))
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1010 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1011 PurpleStatusPrimitive primitive;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1012 primitive = purple_savedstatus_get_type(saved_status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1013 return purple_primitive_get_name_from_type(primitive);
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1014 }
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1015 else
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1016 {
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1017 char *stripped;
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1018 static char buf[64];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1019 stripped = purple_markup_strip_html(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1020 purple_util_chrreplace(stripped, '\n', ' ');
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1021 strncpy(buf, stripped, sizeof(buf));
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1022 buf[sizeof(buf) - 1] = '\0';
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1023 if ((strlen(stripped) + 1) > sizeof(buf))
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
1024 {
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1025 /* Truncate and ellipsize */
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1026 char *tmp = g_utf8_find_prev_char(buf, &buf[sizeof(buf) - 4]);
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1027 strcpy(tmp, "...");
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
1028 }
12690
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1029 g_free(stripped);
4a93889c7593 [gaim-migrate @ 15033]
Mark Doliner <markdoliner@pidgin.im>
parents: 12688
diff changeset
1030 return buf;
12688
d2beaf15f294 [gaim-migrate @ 15031]
Mark Doliner <markdoliner@pidgin.im>
parents: 12552
diff changeset
1031 }
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1032 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1033
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1034 PurpleStatusPrimitive
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1035 purple_savedstatus_get_type(const PurpleSavedStatus *saved_status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1036 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1037 g_return_val_if_fail(saved_status != NULL, PURPLE_STATUS_OFFLINE);
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1038
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1039 return saved_status->type;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1040 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1041
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1042 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1043 purple_savedstatus_get_message(const PurpleSavedStatus *saved_status)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1044 {
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1045 g_return_val_if_fail(saved_status != NULL, NULL);
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1046
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1047 return saved_status->message;
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1048 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1049
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1050 time_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1051 purple_savedstatus_get_creation_time(const PurpleSavedStatus *saved_status)
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1052 {
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1053 g_return_val_if_fail(saved_status != NULL, 0);
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1054
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1055 return saved_status->creation_time;
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1056 }
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1057
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
1058 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1059 purple_savedstatus_has_substatuses(const PurpleSavedStatus *saved_status)
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
1060 {
12197
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1061 g_return_val_if_fail(saved_status != NULL, FALSE);
706655f09bbc [gaim-migrate @ 14499]
Mark Doliner <markdoliner@pidgin.im>
parents: 12125
diff changeset
1062
11651
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
1063 return (saved_status->substatuses != NULL);
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
1064 }
02f366130354 [gaim-migrate @ 13935]
Mark Doliner <markdoliner@pidgin.im>
parents: 11318
diff changeset
1065
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1066 PurpleSavedStatusSub *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1067 purple_savedstatus_get_substatus(const PurpleSavedStatus *saved_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1068 const PurpleAccount *account)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1069 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1070 GList *iter;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1071 PurpleSavedStatusSub *substatus;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1072
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1073 g_return_val_if_fail(saved_status != NULL, NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1074 g_return_val_if_fail(account != NULL, NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1075
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1076 for (iter = saved_status->substatuses; iter != NULL; iter = iter->next)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1077 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1078 substatus = iter->data;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1079 if (substatus->account == account)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1080 return substatus;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1081 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1082
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1083 return NULL;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1084 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1085
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1086 const PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1087 purple_savedstatus_substatus_get_type(const PurpleSavedStatusSub *substatus)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1088 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1089 g_return_val_if_fail(substatus != NULL, NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1090
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1091 return substatus->type;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1092 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1093
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1094 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1095 purple_savedstatus_substatus_get_message(const PurpleSavedStatusSub *substatus)
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1096 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1097 g_return_val_if_fail(substatus != NULL, NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1098
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1099 return substatus->message;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1100 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1101
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1102 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1103 purple_savedstatus_activate(PurpleSavedStatus *saved_status)
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1104 {
11733
61f0e3ce2b9b [gaim-migrate @ 14024]
Mark Doliner <markdoliner@pidgin.im>
parents: 11727
diff changeset
1105 GList *accounts, *node;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1106 PurpleSavedStatus *old = purple_savedstatus_get_current();
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1107
11727
ef78f9d0efec [gaim-migrate @ 14018]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
1108 g_return_if_fail(saved_status != NULL);
ef78f9d0efec [gaim-migrate @ 14018]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
1109
12729
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1110 /* Make sure our list of saved statuses remains sorted */
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1111 saved_status->lastused = time(NULL);
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1112 saved_status->usage_count++;
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1113 saved_statuses = g_list_remove(saved_statuses, saved_status);
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1114 saved_statuses = g_list_insert_sorted(saved_statuses, saved_status, saved_statuses_sort_func);
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1115 purple_prefs_set_int("/purple/savedstatus/default",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1116 purple_savedstatus_get_creation_time(saved_status));
12729
1dbd1ec5c8b2 [gaim-migrate @ 15073]
Mark Doliner <markdoliner@pidgin.im>
parents: 12724
diff changeset
1117
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1118 accounts = purple_accounts_get_all_active();
11733
61f0e3ce2b9b [gaim-migrate @ 14024]
Mark Doliner <markdoliner@pidgin.im>
parents: 11727
diff changeset
1119 for (node = accounts; node != NULL; node = node->next)
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1120 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1121 PurpleAccount *account;
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1122
11733
61f0e3ce2b9b [gaim-migrate @ 14024]
Mark Doliner <markdoliner@pidgin.im>
parents: 11727
diff changeset
1123 account = node->data;
12857
2e99b4a360fc [gaim-migrate @ 15208]
Daniel Atallah <datallah@pidgin.im>
parents: 12814
diff changeset
1124
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1125 purple_savedstatus_activate_for_account(saved_status, account);
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1126 }
11733
61f0e3ce2b9b [gaim-migrate @ 14024]
Mark Doliner <markdoliner@pidgin.im>
parents: 11727
diff changeset
1127
61f0e3ce2b9b [gaim-migrate @ 14024]
Mark Doliner <markdoliner@pidgin.im>
parents: 11727
diff changeset
1128 g_list_free(accounts);
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11806
diff changeset
1129
22868
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1130 if (purple_savedstatus_is_idleaway()) {
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1131 purple_savedstatus_set_idleaway(FALSE);
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1132 } else {
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1133 purple_signal_emit(purple_savedstatuses_get_handle(), "savedstatus-changed",
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1134 saved_status, old);
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1135 }
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1136 }
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1137
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1138 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1139 purple_savedstatus_activate_for_account(const PurpleSavedStatus *saved_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1140 PurpleAccount *account)
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1141 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1142 const PurpleStatusType *status_type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1143 const PurpleSavedStatusSub *substatus;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1144 const char *message = NULL;
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1145
11727
ef78f9d0efec [gaim-migrate @ 14018]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
1146 g_return_if_fail(saved_status != NULL);
ef78f9d0efec [gaim-migrate @ 14018]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
1147 g_return_if_fail(account != NULL);
ef78f9d0efec [gaim-migrate @ 14018]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
1148
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1149 substatus = purple_savedstatus_get_substatus(saved_status, account);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1150 if (substatus != NULL)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1151 {
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1152 status_type = substatus->type;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1153 message = substatus->message;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1154 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1155 else
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1156 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1157 status_type = purple_account_get_status_type_with_primitive(account, saved_status->type);
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1158 if (status_type == NULL)
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1159 return;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1160 message = saved_status->message;
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1161 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1162
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1163 if ((message != NULL) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1164 (purple_status_type_get_attr(status_type, "message")))
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1165 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1166 purple_account_set_status(account, purple_status_type_get_id(status_type),
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1167 TRUE, "message", message, NULL);
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1168 }
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1169 else
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1170 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1171 purple_account_set_status(account, purple_status_type_get_id(status_type),
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1172 TRUE, NULL);
11724
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1173 }
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1174 }
d3f71bc34b4f [gaim-migrate @ 14015]
Mark Doliner <markdoliner@pidgin.im>
parents: 11651
diff changeset
1175
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1176 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1177 purple_savedstatuses_get_handle(void)
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1178 {
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1179 static int handle;
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1180
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1181 return &handle;
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1182 }
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10738
diff changeset
1183
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1184 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1185 purple_savedstatuses_init(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1186 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1187 void *handle = purple_savedstatuses_get_handle();
13388
56132ad4179e [gaim-migrate @ 15760]
Kevin Stange <kstange@pidgin.im>
parents: 13247
diff changeset
1188
25597
ab94ee8c5910 Use g_direct_hash/equal instead of g_int_hash/equal for the hash table that
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 22868
diff changeset
1189 creation_times = g_hash_table_new(g_direct_hash, g_direct_equal);
11975
0abdd0c63f0f [gaim-migrate @ 14268]
Mark Doliner <markdoliner@pidgin.im>
parents: 11954
diff changeset
1190
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1191 /*
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1192 * Using 0 as the creation_time is a special case.
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1193 * If someone calls purple_savedstatus_get_current() or
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1194 * purple_savedstatus_get_idleaway() and either of those functions
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1195 * sees a creation_time of 0, then it will create a default
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1196 * saved status and return that to the user.
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1197 */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1198 purple_prefs_add_none("/purple/savedstatus");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1199 purple_prefs_add_int("/purple/savedstatus/default", 0);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1200 purple_prefs_add_int("/purple/savedstatus/startup", 0);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1201 purple_prefs_add_bool("/purple/savedstatus/startup_current_status", TRUE);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1202 purple_prefs_add_int("/purple/savedstatus/idleaway", 0);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16301
diff changeset
1203 purple_prefs_add_bool("/purple/savedstatus/isidleaway", FALSE);
11975
0abdd0c63f0f [gaim-migrate @ 14268]
Mark Doliner <markdoliner@pidgin.im>
parents: 11954
diff changeset
1204
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1205 load_statuses();
13388
56132ad4179e [gaim-migrate @ 15760]
Kevin Stange <kstange@pidgin.im>
parents: 13247
diff changeset
1206
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1207 purple_signal_register(handle, "savedstatus-changed",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1208 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1209 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1210 PURPLE_SUBTYPE_SAVEDSTATUS),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1211 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1212 PURPLE_SUBTYPE_SAVEDSTATUS));
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
1213
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1214 purple_signal_register(handle, "savedstatus-added",
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1215 purple_marshal_VOID__POINTER, NULL, 1,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1216 purple_value_new(PURPLE_TYPE_SUBTYPE,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1217 PURPLE_SUBTYPE_SAVEDSTATUS));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1218
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1219 purple_signal_register(handle, "savedstatus-deleted",
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1220 purple_marshal_VOID__POINTER, NULL, 1,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1221 purple_value_new(PURPLE_TYPE_SUBTYPE,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1222 PURPLE_SUBTYPE_SAVEDSTATUS));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1223
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1224 purple_signal_register(handle, "savedstatus-modified",
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1225 purple_marshal_VOID__POINTER, NULL, 1,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1226 purple_value_new(PURPLE_TYPE_SUBTYPE,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1227 PURPLE_SUBTYPE_SAVEDSTATUS));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18068
diff changeset
1228
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1229 purple_signal_connect(purple_accounts_get_handle(), "account-removed",
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
1230 handle,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1231 PURPLE_CALLBACK(purple_savedstatus_unset_all_substatuses),
14971
715622abfe5f [gaim-migrate @ 17681]
Ari Pollak <ari@debian.org>
parents: 14809
diff changeset
1232 NULL);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1233 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1234
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1235 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1236 purple_savedstatuses_uninit(void)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1237 {
12327
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
1238 remove_old_transient_statuses();
95f220804a31 [gaim-migrate @ 14631]
Mark Doliner <markdoliner@pidgin.im>
parents: 12309
diff changeset
1239
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
1240 if (save_timer != 0)
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1241 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1242 purple_timeout_remove(save_timer);
10428
940d15803cad [gaim-migrate @ 11680]
Mark Doliner <markdoliner@pidgin.im>
parents: 10427
diff changeset
1243 save_timer = 0;
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1244 sync_statuses();
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1245 }
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1246
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1247 while (saved_statuses != NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1248 PurpleSavedStatus *saved_status = saved_statuses->data;
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1249 saved_statuses = g_list_remove(saved_statuses, saved_status);
12724
58ed377f17db [gaim-migrate @ 15068]
Mark Doliner <markdoliner@pidgin.im>
parents: 12690
diff changeset
1250 free_saved_status(saved_status);
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1251 }
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1252
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
1253 g_hash_table_destroy(creation_times);
22868
7ef8674b5d1d Avoiding emitting the "savedstatus-changed" signal twice when the savedstatus
Daniel Atallah <datallah@pidgin.im>
parents: 22104
diff changeset
1254 creation_times = NULL;
13388
56132ad4179e [gaim-migrate @ 15760]
Kevin Stange <kstange@pidgin.im>
parents: 13247
diff changeset
1255
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15731
diff changeset
1256 purple_signals_unregister_by_instance(purple_savedstatuses_get_handle());
10418
7b632343a29c [gaim-migrate @ 11669]
Mark Doliner <markdoliner@pidgin.im>
parents:
diff changeset
1257 }
12056
ddfcb4df0965 [gaim-migrate @ 14351]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11977
diff changeset
1258

mercurial