libpurple/prefs.c

Thu, 13 Aug 2020 22:03:41 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 13 Aug 2020 22:03:41 -0500
changeset 40509
6748a5ec6644
parent 40439
e9838d634d5e
child 40677
da66e75a4221
permissions
-rw-r--r--

remove the old sound api

Remove all traces of the old sound api from pidgin

Remove all traces of the old sound api from finch

Remove all references to the old sound api from libpurple

Remove the old sound files

Update ChangeLog.API for all the removals

Testing Done:

Compile tested finch. Ran pidgin, verified the preferences window works, the pounce window dies on something talkatu related but that will be addressed separately.

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

1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * purple
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7785
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7785
diff changeset
6 * source distribution.
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * (at your option) any later version.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * GNU General Public License for more details.
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 * 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: 19675
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
1
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 *
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 */
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
23
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24 #include <string.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 #include <stdio.h>
efe077a7e70d [gaim-migrate @ 10]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
26 #include <stdlib.h>
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
27 #include <sys/types.h>
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40279
diff changeset
28
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
29 #include <glib.h>
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40279
diff changeset
30
6216
38918d33547e [gaim-migrate @ 6702]
Nathan Walp <nwalp@pidgin.im>
parents: 6040
diff changeset
31 #include "internal.h"
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40279
diff changeset
32
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
33 #include "prefs.h"
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
34 #include "debug.h"
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
35 #include "util.h"
3366
276a867251f8 [gaim-migrate @ 3385]
Sean Egan <seanegan@pidgin.im>
parents: 3326
diff changeset
36
37904
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
37 static PurplePrefsUiOps *prefs_ui_ops = NULL;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
38
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
39 struct _PurplePrefCallbackData {
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
40 PurplePrefCallback func;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
41 gpointer data;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
42 guint id;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
43 void *handle;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
44 void *ui_data;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
45 char *name;
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
46 };
5915afa891bd Fix prefs for stuff that was broken in the merge
Gary Kramlich <grim@reaperworld.com>
parents: 37901
diff changeset
47
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
48 struct pref_cb {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
49 PurplePrefCallback func;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
50 gpointer data;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
51 guint id;
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9594
diff changeset
52 void *handle;
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
53 void *ui_data;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
54 char *name;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
55 };
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
56
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
57 /* TODO: This should use PurpleValues? */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
58 struct purple_pref {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
59 PurplePrefType type;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
60 char *name;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
61 union {
35148
8dcd0006002f Remove unused and unneeded purple_prefs_set_generic function.
Mark Doliner <mark@kingant.net>
parents: 34935
diff changeset
62 /* 'generic' is kind of ugly. We use it as an elegant way to refer to
8dcd0006002f Remove unused and unneeded purple_prefs_set_generic function.
Mark Doliner <mark@kingant.net>
parents: 34935
diff changeset
63 the value of this pref when calling callback functions. We could
8dcd0006002f Remove unused and unneeded purple_prefs_set_generic function.
Mark Doliner <mark@kingant.net>
parents: 34935
diff changeset
64 use 'boolean' or 'integer' or any other field... but it feels
8dcd0006002f Remove unused and unneeded purple_prefs_set_generic function.
Mark Doliner <mark@kingant.net>
parents: 34935
diff changeset
65 mildly cleaner to use a gpointer. Maybe it would be best to use a
8dcd0006002f Remove unused and unneeded purple_prefs_set_generic function.
Mark Doliner <mark@kingant.net>
parents: 34935
diff changeset
66 GValue? */
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
67 gpointer generic;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
68 gboolean boolean;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
69 int integer;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
70 char *string;
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
71 GList *stringlist;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
72 } value;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
73 GSList *callbacks;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
74 struct purple_pref *parent;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
75 struct purple_pref *sibling;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
76 struct purple_pref *first_child;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
77 };
3366
276a867251f8 [gaim-migrate @ 3385]
Sean Egan <seanegan@pidgin.im>
parents: 3326
diff changeset
78
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
79
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
80 static struct purple_pref prefs = {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
81 PURPLE_PREF_NONE,
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
82 NULL,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
83 { NULL },
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
84 NULL,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
85 NULL,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
86 NULL,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
87 NULL
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
88 };
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
89
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
90 static GHashTable *prefs_hash = NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
91 static guint save_timer = 0;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
92 static gboolean prefs_loaded = FALSE;
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
93 static GSList *ui_callbacks = NULL;
5534
53d28743cc68 [gaim-migrate @ 5934]
Nathan Walp <nwalp@pidgin.im>
parents: 5533
diff changeset
94
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
95 #define PURPLE_PREFS_UI_OP_CALL(member, ...) \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
96 { \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
97 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops(); \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
98 if (uiop && uiop->member) { \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
99 uiop->member(__VA_ARGS__); \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
100 return; \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
101 } \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
102 }
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
103
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
104 #define PURPLE_PREFS_UI_OP_CALL_RETURN(member, ...) \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
105 { \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
106 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops(); \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
107 if (uiop && uiop->member) { \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
108 return uiop->member(__VA_ARGS__); \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
109 } \
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
110 }
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
111
5534
53d28743cc68 [gaim-migrate @ 5934]
Nathan Walp <nwalp@pidgin.im>
parents: 5533
diff changeset
112
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
113 /*********************************************************************
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
114 * Private utility functions *
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
115 *********************************************************************/
8235
00045afab151 [gaim-migrate @ 8958]
Gary Kramlich <grim@pidgin.im>
parents: 8046
diff changeset
116
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
117 static struct
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
118 purple_pref *find_pref(const char *name)
5787
026063bb6b38 [gaim-migrate @ 6212]
Christian Hammond <chipx86@chipx86.com>
parents: 5684
diff changeset
119 {
15959
e352c61131ae Trying to find a pref with the name NULL or a name that doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
120 g_return_val_if_fail(name != NULL && name[0] == '/', NULL);
e352c61131ae Trying to find a pref with the name NULL or a name that doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
121
e352c61131ae Trying to find a pref with the name NULL or a name that doesn't
Mark Doliner <markdoliner@pidgin.im>
parents: 15884
diff changeset
122 if (name[1] == '\0')
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
123 return &prefs;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
124 else
16410
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
125 {
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
126 /* When we're initializing, the debug system is
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
127 * initialized before the prefs system, but debug
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
128 * calls will end up calling prefs functions, so we
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
129 * need to deal cleanly here. */
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
130 if (prefs_hash)
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
131 return g_hash_table_lookup(prefs_hash, name);
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
132 else
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
133 return NULL;
08c4ea622689 When initializing, the debug system is initialized before the prefs system, but
Richard Laager <rlaager@pidgin.im>
parents: 16338
diff changeset
134 }
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
135 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
136
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
137
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
138 /*********************************************************************
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
139 * Writing to disk *
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
140 *********************************************************************/
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
141
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
142 /*
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
143 * This function recursively creates the PurpleXmlNode tree from the prefs
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
144 * tree structure. Yay recursion!
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
145 */
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10443
diff changeset
146 static void
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
147 pref_to_xmlnode(PurpleXmlNode *parent, struct purple_pref *pref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
148 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
149 PurpleXmlNode *node, *childnode;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
150 struct purple_pref *child;
27116
19dff7b3ed0f A patch from Scott Wolchok to replace snprintf() with g_snprintf() and
Richard Laager <rlaager@pidgin.im>
parents: 25871
diff changeset
151 char buf[21];
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
152 GList *cur;
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
153
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
154 /* Create a new node */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
155 node = purple_xmlnode_new_child(parent, "pref");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
156 purple_xmlnode_set_attrib(node, "name", pref->name);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
157
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
158 /* Set the type of this node (if type == PURPLE_PREF_NONE then do nothing) */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
159 if (pref->type == PURPLE_PREF_INT) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
160 purple_xmlnode_set_attrib(node, "type", "int");
27116
19dff7b3ed0f A patch from Scott Wolchok to replace snprintf() with g_snprintf() and
Richard Laager <rlaager@pidgin.im>
parents: 25871
diff changeset
161 g_snprintf(buf, sizeof(buf), "%d", pref->value.integer);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
162 purple_xmlnode_set_attrib(node, "value", buf);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
163 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
164 else if (pref->type == PURPLE_PREF_STRING) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
165 purple_xmlnode_set_attrib(node, "type", "string");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
166 purple_xmlnode_set_attrib(node, "value", pref->value.string ? pref->value.string : "");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
167 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
168 else if (pref->type == PURPLE_PREF_STRING_LIST) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
169 purple_xmlnode_set_attrib(node, "type", "stringlist");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
170 for (cur = pref->value.stringlist; cur != NULL; cur = cur->next)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
171 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
172 childnode = purple_xmlnode_new_child(node, "item");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
173 purple_xmlnode_set_attrib(childnode, "value", cur->data ? cur->data : "");
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
174 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
175 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
176 else if (pref->type == PURPLE_PREF_PATH) {
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
177 char *encoded = g_filename_to_utf8(pref->value.string ? pref->value.string : "", -1, NULL, NULL, NULL);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
178 purple_xmlnode_set_attrib(node, "type", "path");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
179 purple_xmlnode_set_attrib(node, "value", encoded);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
180 g_free(encoded);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
181 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
182 else if (pref->type == PURPLE_PREF_PATH_LIST) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
183 purple_xmlnode_set_attrib(node, "type", "pathlist");
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
184 for (cur = pref->value.stringlist; cur != NULL; cur = cur->next)
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
185 {
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
186 char *encoded = g_filename_to_utf8(cur->data ? cur->data : "", -1, NULL, NULL, NULL);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
187 childnode = purple_xmlnode_new_child(node, "item");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
188 purple_xmlnode_set_attrib(childnode, "value", encoded);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
189 g_free(encoded);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
190 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
191 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
192 else if (pref->type == PURPLE_PREF_BOOLEAN) {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
193 purple_xmlnode_set_attrib(node, "type", "bool");
27116
19dff7b3ed0f A patch from Scott Wolchok to replace snprintf() with g_snprintf() and
Richard Laager <rlaager@pidgin.im>
parents: 25871
diff changeset
194 g_snprintf(buf, sizeof(buf), "%d", pref->value.boolean);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
195 purple_xmlnode_set_attrib(node, "value", buf);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
196 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
197
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
198 /* All My Children */
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
199 for (child = pref->first_child; child != NULL; child = child->sibling)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
200 pref_to_xmlnode(node, child);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
201 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
202
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
203 static PurpleXmlNode *
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
204 prefs_to_xmlnode(void)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
205 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
206 PurpleXmlNode *node;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
207 struct purple_pref *pref, *child;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
208
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
209 pref = &prefs;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
210
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
211 /* Create the root preference node */
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
212 node = purple_xmlnode_new("pref");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
213 purple_xmlnode_set_attrib(node, "version", "1");
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
214 purple_xmlnode_set_attrib(node, "name", "/");
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
215
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
216 /* All My Children */
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
217 for (child = pref->first_child; child != NULL; child = child->sibling)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
218 pref_to_xmlnode(node, child);
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
219
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
220 return node;
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
221 }
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
222
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
223 static void
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
224 sync_prefs(void)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
225 {
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
226 PurpleXmlNode *node;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
227 char *data;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5105
diff changeset
228
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
229 if (!prefs_loaded)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
230 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
231 /*
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
232 * TODO: Call schedule_prefs_save()? Ideally we wouldn't need to.
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
233 * (prefs.xml should be loaded when purple_prefs_init is called)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
234 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
235 purple_debug_error("prefs", "Attempted to save prefs before "
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
236 "they were read!\n");
5814
811553132d7f [gaim-migrate @ 6244]
Nathan Walp <nwalp@pidgin.im>
parents: 5787
diff changeset
237 return;
811553132d7f [gaim-migrate @ 6244]
Nathan Walp <nwalp@pidgin.im>
parents: 5787
diff changeset
238 }
3500
f7b59ccfc9f2 [gaim-migrate @ 3563]
Nathan Walp <nwalp@pidgin.im>
parents: 3485
diff changeset
239
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
240 PURPLE_PREFS_UI_OP_CALL(save);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
241
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
242 node = prefs_to_xmlnode();
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
243 data = purple_xmlnode_to_formatted_str(node, NULL);
39438
e85334959b23 Move more libpurple files to ~/.config.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38433
diff changeset
244 purple_util_write_data_to_config_file("prefs.xml", data, -1);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
245 g_free(data);
34935
686fa55b0deb Replaced xmlnode with PurpleXmlNode, and xmlnode_* API with purple_xmlnode_* API
Ankit Vani <a@nevitus.org>
parents: 34297
diff changeset
246 purple_xmlnode_free(node);
4326
f830b3ca7efb [gaim-migrate @ 4582]
Rob Flynn <gaim@robflynn.com>
parents: 4325
diff changeset
247 }
f830b3ca7efb [gaim-migrate @ 4582]
Rob Flynn <gaim@robflynn.com>
parents: 4325
diff changeset
248
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
249 static gboolean
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
250 save_cb(gpointer data)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
251 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
252 sync_prefs();
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
253 save_timer = 0;
9594
7a1f902b9494 [gaim-migrate @ 10437]
Mark Doliner <markdoliner@pidgin.im>
parents: 9251
diff changeset
254 return FALSE;
4288
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4241
diff changeset
255 }
a93533dc8be2 [gaim-migrate @ 4541]
Sean Egan <seanegan@pidgin.im>
parents: 4241
diff changeset
256
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
257 static void
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
258 schedule_prefs_save(void)
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
259 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
260 PURPLE_PREFS_UI_OP_CALL(schedule_save);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
261
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
262 if (save_timer == 0)
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 37904
diff changeset
263 save_timer = g_timeout_add_seconds(5, save_cb, NULL);
3366
276a867251f8 [gaim-migrate @ 3385]
Sean Egan <seanegan@pidgin.im>
parents: 3326
diff changeset
264 }
276a867251f8 [gaim-migrate @ 3385]
Sean Egan <seanegan@pidgin.im>
parents: 3326
diff changeset
265
2254
5f242f2c14a8 [gaim-migrate @ 2264]
Rob Flynn <gaim@robflynn.com>
parents: 2199
diff changeset
266
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
267 /*********************************************************************
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
268 * Reading from disk *
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
269 *********************************************************************/
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3526
diff changeset
270
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
271 static GList *prefs_stack = NULL;
873
d40eff5fc359 [gaim-migrate @ 883]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 864
diff changeset
272
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
273 static void
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
274 prefs_start_element_handler (GMarkupParseContext *context,
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
275 const gchar *element_name,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
276 const gchar **attribute_names,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
277 const gchar **attribute_values,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
278 gpointer user_data,
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
279 GError **error)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
280 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
281 PurplePrefType pref_type = PURPLE_PREF_NONE;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
282 int i;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
283 const char *pref_name = NULL, *pref_value = NULL;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
284 GString *pref_name_full;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
285 GList *tmp;
3366
276a867251f8 [gaim-migrate @ 3385]
Sean Egan <seanegan@pidgin.im>
parents: 3326
diff changeset
286
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: 25332
diff changeset
287 if(!purple_strequal(element_name, "pref") &&
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: 25332
diff changeset
288 !purple_strequal(element_name, "item"))
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
289 return;
3500
f7b59ccfc9f2 [gaim-migrate @ 3563]
Nathan Walp <nwalp@pidgin.im>
parents: 3485
diff changeset
290
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
291 for(i = 0; attribute_names[i]; i++) {
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: 25332
diff changeset
292 if(purple_strequal(attribute_names[i], "name")) {
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
293 pref_name = attribute_values[i];
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: 25332
diff changeset
294 } else if(purple_strequal(attribute_names[i], "type")) {
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: 25332
diff changeset
295 if(purple_strequal(attribute_values[i], "bool"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
296 pref_type = PURPLE_PREF_BOOLEAN;
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: 25332
diff changeset
297 else if(purple_strequal(attribute_values[i], "int"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
298 pref_type = PURPLE_PREF_INT;
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: 25332
diff changeset
299 else if(purple_strequal(attribute_values[i], "string"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
300 pref_type = PURPLE_PREF_STRING;
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: 25332
diff changeset
301 else if(purple_strequal(attribute_values[i], "stringlist"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 pref_type = PURPLE_PREF_STRING_LIST;
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: 25332
diff changeset
303 else if(purple_strequal(attribute_values[i], "path"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
304 pref_type = PURPLE_PREF_PATH;
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: 25332
diff changeset
305 else if(purple_strequal(attribute_values[i], "pathlist"))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
306 pref_type = PURPLE_PREF_PATH_LIST;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
307 else
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
308 return;
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: 25332
diff changeset
309 } else if(purple_strequal(attribute_names[i], "value")) {
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
310 pref_value = attribute_values[i];
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
311 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
312 }
873
d40eff5fc359 [gaim-migrate @ 883]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 864
diff changeset
313
31978
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
314 if ((pref_type == PURPLE_PREF_BOOLEAN || pref_type == PURPLE_PREF_INT) &&
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
315 pref_value == NULL) {
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
316 /* Missing a value attribute */
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
317 return;
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
318 }
025c55cafdd5 prefs: Avoid an atoi(NULL) when reading the prefs from disk
Paul Aurich <darkrain42@pidgin.im>
parents: 30706
diff changeset
319
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: 25332
diff changeset
320 if(purple_strequal(element_name, "item")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
321 struct purple_pref *pref;
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
322
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
323 pref_name_full = g_string_new("");
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
324
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
325 for(tmp = prefs_stack; tmp; tmp = tmp->next) {
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
326 pref_name_full = g_string_prepend(pref_name_full, tmp->data);
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
327 pref_name_full = g_string_prepend_c(pref_name_full, '/');
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
328 }
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
329
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
330 pref = find_pref(pref_name_full->str);
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
331
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
332 if(pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
333 if(pref->type == PURPLE_PREF_STRING_LIST) {
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
334 pref->value.stringlist = g_list_append(pref->value.stringlist,
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
335 g_strdup(pref_value));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
336 } else if(pref->type == PURPLE_PREF_PATH_LIST) {
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
337 pref->value.stringlist = g_list_append(pref->value.stringlist,
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
338 g_filename_from_utf8(pref_value, -1, NULL, NULL, NULL));
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
339 }
5561
d4a6b0c87193 [gaim-migrate @ 5962]
Nathan Walp <nwalp@pidgin.im>
parents: 5551
diff changeset
340 }
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 19870
diff changeset
341 g_string_free(pref_name_full, TRUE);
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
342 } else {
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
343 char *decoded;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
344
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: 25332
diff changeset
345 if(!pref_name || purple_strequal(pref_name, "/"))
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
346 return;
652
dd4ccd3e5c72 [gaim-migrate @ 662]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 619
diff changeset
347
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
348 pref_name_full = g_string_new(pref_name);
652
dd4ccd3e5c72 [gaim-migrate @ 662]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 619
diff changeset
349
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
350 for(tmp = prefs_stack; tmp; tmp = tmp->next) {
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
351 pref_name_full = g_string_prepend_c(pref_name_full, '/');
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
352 pref_name_full = g_string_prepend(pref_name_full, tmp->data);
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
353 }
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
354
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
355 pref_name_full = g_string_prepend_c(pref_name_full, '/');
1253
f02697a6aada [gaim-migrate @ 1263]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1250
diff changeset
356
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
357 switch(pref_type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
358 case PURPLE_PREF_NONE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
359 purple_prefs_add_none(pref_name_full->str);
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
360 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
361 case PURPLE_PREF_BOOLEAN:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
362 purple_prefs_set_bool(pref_name_full->str, atoi(pref_value));
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
363 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
364 case PURPLE_PREF_INT:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
365 purple_prefs_set_int(pref_name_full->str, atoi(pref_value));
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
366 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
367 case PURPLE_PREF_STRING:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
368 purple_prefs_set_string(pref_name_full->str, pref_value);
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
369 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
370 case PURPLE_PREF_STRING_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
371 purple_prefs_set_string_list(pref_name_full->str, NULL);
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
372 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
373 case PURPLE_PREF_PATH:
19870
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
374 if (pref_value) {
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
375 decoded = g_filename_from_utf8(pref_value, -1, NULL, NULL, NULL);
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
376 purple_prefs_set_path(pref_name_full->str, decoded);
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
377 g_free(decoded);
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
378 } else {
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
379 purple_prefs_set_path(pref_name_full->str, NULL);
75365e06ae2a Probably Fixes 1649
Ka-Hing Cheung <khc@pidgin.im>
parents: 19859
diff changeset
380 }
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
381 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
382 case PURPLE_PREF_PATH_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
383 purple_prefs_set_path_list(pref_name_full->str, NULL);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
384 break;
5838
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
385 }
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
386 prefs_stack = g_list_prepend(prefs_stack, g_strdup(pref_name));
1e45da0f16db [gaim-migrate @ 6269]
Nathan Walp <nwalp@pidgin.im>
parents: 5814
diff changeset
387 g_string_free(pref_name_full, TRUE);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
388 }
1170
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
389 }
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
390
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
391 static void
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
392 prefs_end_element_handler(GMarkupParseContext *context,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
393 const gchar *element_name,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
394 gpointer user_data, GError **error)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
395 {
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: 25332
diff changeset
396 if(prefs_stack && purple_strequal(element_name, "pref")) {
5940
b815b54e3d2b [gaim-migrate @ 6380]
Nathan Walp <nwalp@pidgin.im>
parents: 5858
diff changeset
397 g_free(prefs_stack->data);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
398 prefs_stack = g_list_delete_link(prefs_stack, prefs_stack);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
399 }
1170
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
400 }
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
401
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
402 static GMarkupParser prefs_parser = {
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
403 prefs_start_element_handler,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
404 prefs_end_element_handler,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
405 NULL,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
406 NULL,
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
407 NULL
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
408 };
1170
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
409
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
410 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
411 purple_prefs_load()
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
412 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
413 gchar *filename;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
414 gchar *contents = NULL;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
415 gsize length;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
416 GMarkupParseContext *context;
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
417 GError *error = NULL;
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5297
diff changeset
418
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
419 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
420
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
421 if (uiop && uiop->load) {
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
422 prefs_loaded = TRUE;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
423 return uiop->load();
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
424 }
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
425
39438
e85334959b23 Move more libpurple files to ~/.config.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38433
diff changeset
426 filename = g_build_filename(purple_config_dir(), "prefs.xml", NULL);
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
427
7561
fd6a81f1594e [gaim-migrate @ 8175]
Christian Hammond <chipx86@chipx86.com>
parents: 7555
diff changeset
428 if (!filename) {
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
429 prefs_loaded = TRUE;
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
430 return FALSE;
5534
53d28743cc68 [gaim-migrate @ 5934]
Nathan Walp <nwalp@pidgin.im>
parents: 5533
diff changeset
431 }
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
432
34297
0f1f0b8c84f8 Fix some debug log warnings, adjust verbosity level
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
433 purple_debug_misc("prefs", "Reading %s", filename);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5297
diff changeset
434
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
435 if(!g_file_get_contents(filename, &contents, &length, &error)) {
35850
1abeda205d6c cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35378
diff changeset
436 const gchar *sysconfdir = PURPLE_SYSCONFDIR;
8671
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
437 g_free(filename);
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
438 g_error_free(error);
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
439
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
440 error = NULL;
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
441
36051
f06dab8296be Fix coverity dead code warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35854
diff changeset
442 #ifndef __COVERITY__
f06dab8296be Fix coverity dead code warnings
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35854
diff changeset
443 /* coverity dead_error_line false positive */
35850
1abeda205d6c cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35378
diff changeset
444 if (sysconfdir == NULL)
1abeda205d6c cross-win32: make dirs more flexible, add them to the config.h
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35378
diff changeset
445 sysconfdir = "";
20261
17eb59694041 applied changes from 0cf87050ffb15aa5ff8817bfdf57efda048cefde
Daniel Atallah <datallah@pidgin.im>
parents: 20241
diff changeset
446 #endif
35851
53a60c0d3040 cross-win32: tidy remaining macros - SSL_CERTIFICATES_DIR, BUILDDIR, CONFDIR
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35850
diff changeset
447 filename = g_build_filename(sysconfdir, "purple", "prefs.xml", NULL);
8671
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
448
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
449 purple_debug_info("prefs", "Reading %s\n", filename);
8671
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
450
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
451 if (!g_file_get_contents(filename, &contents, &length, &error)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
452 purple_debug_error("prefs", "Error reading prefs: %s\n",
8671
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
453 error->message);
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
454 g_error_free(error);
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
455 g_free(filename);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
456 prefs_loaded = TRUE;
8671
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
457
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
458 return FALSE;
a4152c9c55ec [gaim-migrate @ 9423]
Christian Hammond <chipx86@chipx86.com>
parents: 8549
diff changeset
459 }
1170
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
460 }
d20d6785040c [gaim-migrate @ 1180]
Rob Flynn <gaim@robflynn.com>
parents: 1147
diff changeset
461
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
462 context = g_markup_parse_context_new(&prefs_parser, 0, NULL, NULL);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
463
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
464 if(!g_markup_parse_context_parse(context, contents, length, NULL)) {
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
465 g_markup_parse_context_free(context);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
466 g_free(contents);
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 5986
diff changeset
467 g_free(filename);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
468 prefs_loaded = TRUE;
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 5986
diff changeset
469
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
470 return FALSE;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
471 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
472
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
473 if(!g_markup_parse_context_end_parse(context, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
474 purple_debug_error("prefs", "Error parsing %s\n", filename);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
475 g_markup_parse_context_free(context);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
476 g_free(contents);
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 5986
diff changeset
477 g_free(filename);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
478 prefs_loaded = TRUE;
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 5986
diff changeset
479
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
480 return FALSE;
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
481 }
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
482
34297
0f1f0b8c84f8 Fix some debug log warnings, adjust verbosity level
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
483 if (purple_debug_is_verbose())
0f1f0b8c84f8 Fix some debug log warnings, adjust verbosity level
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
484 purple_debug_misc("prefs", "Finished reading %s", filename);
5440
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
485 g_markup_parse_context_free(context);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
486 g_free(contents);
3127b1a3210f [gaim-migrate @ 5822]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
487 g_free(filename);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
488 prefs_loaded = TRUE;
5545
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
489
a8b1a1262402 [gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents: 5539
diff changeset
490 return TRUE;
1006
fb2f2a403962 [gaim-migrate @ 1016]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
491 }
fb2f2a403962 [gaim-migrate @ 1016]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1002
diff changeset
492
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
493
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
494
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
495 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
496 prefs_save_cb(const char *name, PurplePrefType type, gconstpointer val,
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
497 gpointer user_data)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
498 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
499
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
500 if(!prefs_loaded)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
501 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
502
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
503 purple_debug_misc("prefs", "%s changed, scheduling save.\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
504
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
505 schedule_prefs_save();
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
506 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
507
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
508 static char *
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
509 get_path_dirname(const char *name)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
510 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
511 char *c, *str;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
512
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
513 str = g_strdup(name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
514
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
515 if ((c = strrchr(str, '/')) != NULL) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
516 *c = '\0';
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
517
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
518 if (*str == '\0') {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
519 g_free(str);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
520
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
521 str = g_strdup("/");
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
522 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
523 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
524 else {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
525 g_free(str);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
526
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
527 str = g_strdup(".");
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
528 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
529
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
530 return str;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
531 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
532
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
533 static char *
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
534 get_path_basename(const char *name)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
535 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
536 const char *c;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
537
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
538 if ((c = strrchr(name, '/')) != NULL)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
539 return g_strdup(c + 1);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
540
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
541 return g_strdup(name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
542 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
543
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
544 static char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
545 pref_full_name(struct purple_pref *pref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
546 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
547 GString *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
548 struct purple_pref *parent;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
549
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
550 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
551 return NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
552
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
553 if(pref == &prefs)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
554 return g_strdup("/");
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
555
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
556 name = g_string_new(pref->name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
557
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
558 for(parent = pref->parent; parent && parent->name; parent = parent->parent) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
559 name = g_string_prepend_c(name, '/');
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
560 name = g_string_prepend(name, parent->name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
561 }
12759
923044033136 [gaim-migrate @ 15106]
Daniel Atallah <datallah@pidgin.im>
parents: 12615
diff changeset
562 name = g_string_prepend_c(name, '/');
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13712
diff changeset
563 return g_string_free(name, FALSE);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
564 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
565
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
566 static struct purple_pref *
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
567 find_pref_parent(const char *name)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
568 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
569 char *parent_name = get_path_dirname(name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
570 struct purple_pref *ret = &prefs;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
571
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: 25332
diff changeset
572 if(!purple_strequal(parent_name, "/")) {
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
573 ret = find_pref(parent_name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
574 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
575
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
576 g_free(parent_name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
577 return ret;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
578 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
579
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
580 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
581 free_pref_value(struct purple_pref *pref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
582 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
583 switch(pref->type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
584 case PURPLE_PREF_BOOLEAN:
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
585 pref->value.boolean = FALSE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
586 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
587 case PURPLE_PREF_INT:
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
588 pref->value.integer = 0;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
589 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
590 case PURPLE_PREF_STRING:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
591 case PURPLE_PREF_PATH:
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
592 g_free(pref->value.string);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
593 pref->value.string = NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
594 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
595 case PURPLE_PREF_STRING_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
596 case PURPLE_PREF_PATH_LIST:
39897
16b440d4ab36 Use g_list_free_full instead of g_list_foreach+g_list_free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39438
diff changeset
597 g_list_free_full(pref->value.stringlist, g_free);
16b440d4ab36 Use g_list_free_full instead of g_list_foreach+g_list_free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39438
diff changeset
598 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
599 case PURPLE_PREF_NONE:
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
600 break;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
601 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
602 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
604 static struct purple_pref *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
605 add_pref(PurplePrefType type, const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
606 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
607 struct purple_pref *parent;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
608 struct purple_pref *me;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
609 struct purple_pref *sibling;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
610 char *my_name;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
611
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
612 parent = find_pref_parent(name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
613
36065
53fc67d0e684 Imgupload: add use_url_desc pref
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 36051
diff changeset
614 g_return_val_if_fail(parent, NULL);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
615
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
616 my_name = get_path_basename(name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
617
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
618 for(sibling = parent->first_child; sibling; sibling = sibling->sibling) {
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: 25332
diff changeset
619 if(purple_strequal(sibling->name, my_name)) {
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
620 g_free(my_name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
621 return NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
622 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
623 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
624
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
625 me = g_new0(struct purple_pref, 1);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
626 me->type = type;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
627 me->name = my_name;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
628
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
629 me->parent = parent;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
630 if(parent->first_child) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
631 /* blatant abuse of a for loop */
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
632 for(sibling = parent->first_child; sibling->sibling;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
633 sibling = sibling->sibling);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
634 sibling->sibling = me;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
635 } else {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
636 parent->first_child = me;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
637 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
638
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
639 g_hash_table_insert(prefs_hash, g_strdup(name), (gpointer)me);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
640
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
641 return me;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
642 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
643
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
644 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
645 purple_prefs_add_none(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
646 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
647 PURPLE_PREFS_UI_OP_CALL(add_none, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
648
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
649 add_pref(PURPLE_PREF_NONE, name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
650 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
651
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
652 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
653 purple_prefs_add_bool(const char *name, gboolean value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
654 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
655 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
656
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
657 PURPLE_PREFS_UI_OP_CALL(add_bool, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
658
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
659 pref = add_pref(PURPLE_PREF_BOOLEAN, name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
660
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
661 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
662 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
663
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
664 pref->value.boolean = value;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
665 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
666
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
667 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
668 purple_prefs_add_int(const char *name, int value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
669 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
670 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
671
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
672 PURPLE_PREFS_UI_OP_CALL(add_int, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
673
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
674 pref = add_pref(PURPLE_PREF_INT, name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
675
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
676 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
677 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
678
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
679 pref->value.integer = value;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
680 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
681
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
682 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
683 purple_prefs_add_string(const char *name, const char *value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
684 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
685 struct purple_pref *pref;
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
686
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
687 if(value != NULL && !g_utf8_validate(value, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
688 purple_debug_error("prefs", "purple_prefs_add_string: Cannot store invalid UTF8 for string pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
689 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
690 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
691
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
692 PURPLE_PREFS_UI_OP_CALL(add_string, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
693
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
694 pref = add_pref(PURPLE_PREF_STRING, name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
695
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
696 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
697 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
698
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
699 pref->value.string = g_strdup(value);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
700 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
701
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
702 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
703 purple_prefs_add_string_list(const char *name, GList *value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
704 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
705 struct purple_pref *pref;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
706 GList *tmp;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
707
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
708 PURPLE_PREFS_UI_OP_CALL(add_string_list, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
709
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
710 pref = add_pref(PURPLE_PREF_STRING_LIST, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
711
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
712 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
713 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
714
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
715 for(tmp = value; tmp; tmp = tmp->next) {
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
716 if(tmp->data != NULL && !g_utf8_validate(tmp->data, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
717 purple_debug_error("prefs", "purple_prefs_add_string_list: Skipping invalid UTF8 for string list pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
718 continue;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
719 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
720 pref->value.stringlist = g_list_append(pref->value.stringlist,
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
721 g_strdup(tmp->data));
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
722 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
723 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
724
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
725 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
726 purple_prefs_add_path(const char *name, const char *value)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
727 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
728 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
729
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
730 /* re-use the string UI OP */
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
731 PURPLE_PREFS_UI_OP_CALL(add_string, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
732
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
733 pref = add_pref(PURPLE_PREF_PATH, name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
734
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
735 if(!pref)
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
736 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
737
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
738 pref->value.string = g_strdup(value);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
739 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
740
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
741 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
742 purple_prefs_add_path_list(const char *name, GList *value)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
743 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
744 struct purple_pref *pref;
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
745 GList *tmp;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
746
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
747 /* re-use the string list UI OP */
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
748 PURPLE_PREFS_UI_OP_CALL(add_string_list, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
750 pref = add_pref(PURPLE_PREF_PATH_LIST, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
751
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
752 if(!pref)
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
753 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
754
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
755 for(tmp = value; tmp; tmp = tmp->next)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
756 pref->value.stringlist = g_list_append(pref->value.stringlist,
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
757 g_strdup(tmp->data));
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
758 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
759
10871
c0282a4f2250 [gaim-migrate @ 12558]
Mark Doliner <markdoliner@pidgin.im>
parents: 10850
diff changeset
760 static void
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
761 free_pref(struct purple_pref *pref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
762 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
763 char *name;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
764
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
765 name = pref_full_name(pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
766
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
767 if (prefs_loaded) {
25339
1ccd84242080 disapproval of revision '72679a30e1cb464d1dc7c74b14b848c3a51538ca'
Daniel Atallah <datallah@pidgin.im>
parents: 25338
diff changeset
768 purple_debug_info("prefs", "removing pref %s\n", name);
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
769 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
770
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
771 g_hash_table_remove(prefs_hash, name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
772 g_free(name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
773
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
774 free_pref_value(pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
775
40052
cc03b5af25ea Use GSList functions instead of manual iterations
qarkai <qarkai@gmail.com>
parents: 39898
diff changeset
776 g_slist_free_full(pref->callbacks, g_free);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
777 g_free(pref->name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
778 g_free(pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
779 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
780
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
781 static void
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
782 remove_pref(struct purple_pref *pref)
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
783 {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
784 struct purple_pref *child;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
785
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
786 if (!pref) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
787 return;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
788 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
789
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
790 child = pref->first_child;
40279
0682910c702a fix heap-use-after-free in prefs removal
Fabrice Bellet <fabrice@bellet.info>
parents: 40148
diff changeset
791 pref->first_child = NULL;
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
792 while (child) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
793 struct purple_pref *next;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
794 if (child->first_child) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
795 next = child->first_child;
40279
0682910c702a fix heap-use-after-free in prefs removal
Fabrice Bellet <fabrice@bellet.info>
parents: 40148
diff changeset
796 child->first_child = NULL;
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
797 } else if (child->sibling) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
798 next = child->sibling;
40279
0682910c702a fix heap-use-after-free in prefs removal
Fabrice Bellet <fabrice@bellet.info>
parents: 40148
diff changeset
799 child->sibling = NULL;
40148
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
800 free_pref(child);
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
801 } else {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
802 if (child->parent != pref) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
803 next = child->parent;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
804 } else {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
805 next = NULL;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
806 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
807 free_pref(child);
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
808 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
809 child = next;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
810 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
811
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
812 if (pref == &prefs) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
813 return;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
814 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
815
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
816 if (pref->parent->first_child == pref) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
817 pref->parent->first_child = pref->sibling;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
818 } else {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
819 child = pref->parent->first_child;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
820 while (child && child->sibling != pref) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
821 child = child->sibling;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
822 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
823 if (child) {
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
824 child->sibling = pref->sibling;
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
825 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
826 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
827
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
828 free_pref(pref);
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
829 }
d1ad503fe389 Re-write remove_prefs to not use recursion.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
830
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
831 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
832 purple_prefs_remove(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
833 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
834 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
835
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
836 PURPLE_PREFS_UI_OP_CALL(remove, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
837
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
838 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
839
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
840 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
841 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
842
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
843 remove_pref(pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
844 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
845
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
846 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
847 purple_prefs_destroy()
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
848 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
849 purple_prefs_remove("/");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
850 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
851
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
852 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
853 do_callbacks(const char* name, struct purple_pref *pref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
854 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
855 GSList *cbs;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
856 struct purple_pref *cb_pref;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
857 for(cb_pref = pref; cb_pref; cb_pref = cb_pref->parent) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
858 for(cbs = cb_pref->callbacks; cbs; cbs = cbs->next) {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
859 PurplePrefCallbackData *cb = cbs->data;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
860 cb->func(name, pref->type, pref->value.generic, cb->data);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
861 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
862 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
863 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
864
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
865 static void
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
866 do_ui_callbacks(const char *name)
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
867 {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
868 GSList *cbs;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
869
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
870 purple_debug_misc("prefs", "trigger callback %s\n", name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
871
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
872 for (cbs = ui_callbacks; cbs; cbs = cbs->next) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
873 PurplePrefCallbackData *cb = cbs->data;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
874 const char *cb_name = cb->name;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
875 size_t len = strlen(cb_name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
876 if (!strncmp(cb_name, name, len) &&
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
877 (name[len] == 0 || name[len] == '/' ||
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
878 (len && name[len - 1] == '/'))) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
879 /* This test should behave like this:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
880 * name = /toto/tata
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
881 * cb_name = /toto/tata --> true
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
882 * cb_name = /toto/tatatiti --> false
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
883 * cb_name = / --> true
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
884 * cb_name = /toto --> true
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
885 * cb_name = /toto/ --> true
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
886 */
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
887 purple_prefs_trigger_callback_object(cbs->data);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
888 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
889 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
890 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
891
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
892 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
893 purple_prefs_trigger_callback(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
894 {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
895 struct purple_pref *pref;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
896 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
897
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
898 if (uiop && uiop->connect_callback) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
899 do_ui_callbacks(name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
900 return;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
901 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
902
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
903 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
904
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
905 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
906 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
907 "purple_prefs_trigger_callback: Unknown pref %s\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
908 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
909 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
910
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
911 do_callbacks(name, pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
912 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
913
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
914 /* this function is deprecated, so it doesn't get the new UI ops */
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
915 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
916 purple_prefs_set_bool(const char *name, gboolean value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
917 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
918 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
919
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
920 PURPLE_PREFS_UI_OP_CALL(set_bool, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
921
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
922 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
923
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
924 if(pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
925 if(pref->type != PURPLE_PREF_BOOLEAN) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
926 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
927 "purple_prefs_set_bool: %s not a boolean pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
928 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
929 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
930
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
931 if(pref->value.boolean != value) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
932 pref->value.boolean = value;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
933 do_callbacks(name, pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
934 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
935 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
936 purple_prefs_add_bool(name, value);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
937 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
938 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
939
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
940 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
941 purple_prefs_set_int(const char *name, int value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
942 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
943 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
944
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
945 PURPLE_PREFS_UI_OP_CALL(set_int, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
946
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
947 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
948
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
949 if(pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
950 if(pref->type != PURPLE_PREF_INT) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
951 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
952 "purple_prefs_set_int: %s not an integer pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
953 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
954 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
955
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
956 if(pref->value.integer != value) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
957 pref->value.integer = value;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
958 do_callbacks(name, pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
959 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
960 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
961 purple_prefs_add_int(name, value);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
962 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
963 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
964
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
965 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
966 purple_prefs_set_string(const char *name, const char *value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
967 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
968 struct purple_pref *pref;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
969
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
970 if(value != NULL && !g_utf8_validate(value, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
971 purple_debug_error("prefs", "purple_prefs_set_string: Cannot store invalid UTF8 for string pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
972 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
973 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
974
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
975 PURPLE_PREFS_UI_OP_CALL(set_string, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
976
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
977 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
978
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
979 if(pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
980 if(pref->type != PURPLE_PREF_STRING && pref->type != PURPLE_PREF_PATH) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
981 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
982 "purple_prefs_set_string: %s not a string pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
983 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
984 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
985
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: 25332
diff changeset
986 if (!purple_strequal(pref->value.string, value)) {
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
987 g_free(pref->value.string);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
988 pref->value.string = g_strdup(value);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
989 do_callbacks(name, pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
990 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
991 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
992 purple_prefs_add_string(name, value);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
993 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
994 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
995
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
996 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
997 purple_prefs_set_string_list(const char *name, GList *value)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
998 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
999 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1000
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1001 PURPLE_PREFS_UI_OP_CALL(set_string_list, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1002
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1003 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1004
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1005 if(pref) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1006 GList *tmp;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1007
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1008 if(pref->type != PURPLE_PREF_STRING_LIST) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1009 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1010 "purple_prefs_set_string_list: %s not a string list pref\n",
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1011 name);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1012 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1013 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1014
39897
16b440d4ab36 Use g_list_free_full instead of g_list_foreach+g_list_free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39438
diff changeset
1015 g_list_free_full(pref->value.stringlist, g_free);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1016 pref->value.stringlist = NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1017
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1018 for(tmp = value; tmp; tmp = tmp->next) {
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1019 if(tmp->data != NULL && !g_utf8_validate(tmp->data, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1020 purple_debug_error("prefs", "purple_prefs_set_string_list: Skipping invalid UTF8 for string list pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1021 continue;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1022 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1023 pref->value.stringlist = g_list_prepend(pref->value.stringlist,
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1024 g_strdup(tmp->data));
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1025 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1026 pref->value.stringlist = g_list_reverse(pref->value.stringlist);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1027
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1028 do_callbacks(name, pref);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1029
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1030 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1031 purple_prefs_add_string_list(name, value);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1032 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1033 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1034
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1035 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1036 purple_prefs_set_path(const char *name, const char *value)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1037 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1038 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1039
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1040 PURPLE_PREFS_UI_OP_CALL(set_string, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1041
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1042 pref = find_pref(name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1043
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1044 if(pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1045 if(pref->type != PURPLE_PREF_PATH) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1046 purple_debug_error("prefs",
21945
334efc71332a The debug message for purple_prefs_set_path when the pref in question is not
Will Thompson <resiak@pidgin.im>
parents: 20261
diff changeset
1047 "purple_prefs_set_path: %s not a path pref\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1048 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1049 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1050
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: 25332
diff changeset
1051 if (!purple_strequal(pref->value.string, value)) {
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1052 g_free(pref->value.string);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1053 pref->value.string = g_strdup(value);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1054 do_callbacks(name, pref);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1055 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1056 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1057 purple_prefs_add_path(name, value);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1058 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1059 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1060
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1061 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1062 purple_prefs_set_path_list(const char *name, GList *value)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1063 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1064 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1065
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1066 PURPLE_PREFS_UI_OP_CALL(set_string_list, name, value);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1067
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1068 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1069
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1070 if(pref) {
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1071 GList *tmp;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1072
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1073 if(pref->type != PURPLE_PREF_PATH_LIST) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1074 purple_debug_error("prefs",
16998
c91333e2895a Show the correct error message when setting value for a path-list.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16626
diff changeset
1075 "purple_prefs_set_path_list: %s not a path list pref\n",
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1076 name);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1077 return;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1078 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1079
39897
16b440d4ab36 Use g_list_free_full instead of g_list_foreach+g_list_free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39438
diff changeset
1080 g_list_free_full(pref->value.stringlist, g_free);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1081 pref->value.stringlist = NULL;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1082
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1083 for(tmp = value; tmp; tmp = tmp->next)
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13712
diff changeset
1084 pref->value.stringlist = g_list_prepend(pref->value.stringlist,
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1085 g_strdup(tmp->data));
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13712
diff changeset
1086 pref->value.stringlist = g_list_reverse(pref->value.stringlist);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1087
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1088 do_callbacks(name, pref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1089
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1090 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1091 purple_prefs_add_path_list(name, value);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1092 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1093 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1094
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1095
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1096 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1097 purple_prefs_exists(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1098 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1099 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1100
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1101 PURPLE_PREFS_UI_OP_CALL_RETURN(exists, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1102
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1103 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1104
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1105 if (pref != NULL)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1106 return TRUE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1107
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1108 return FALSE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1109 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1110
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1111 PurplePrefType
35378
5d9e2581005b gtk-doc prep: *_get_type() functions are hidden as standard GType-returning funcs, so rename them.
Ankit Vani <a@nevitus.org>
parents: 35177
diff changeset
1112 purple_prefs_get_pref_type(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1113 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1114 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1115
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1116 PURPLE_PREFS_UI_OP_CALL_RETURN(get_type, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1117
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1118 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1119
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1120 if (pref == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1121 return PURPLE_PREF_NONE;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1122
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1123 return (pref->type);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1124 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1125
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1126 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1127 purple_prefs_get_bool(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1128 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1129 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1130
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1131 PURPLE_PREFS_UI_OP_CALL_RETURN(get_bool, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1132
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1133 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1134
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1135 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1136 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1137 "purple_prefs_get_bool: Unknown pref %s\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1138 return FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1139 } else if(pref->type != PURPLE_PREF_BOOLEAN) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1140 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1141 "purple_prefs_get_bool: %s not a boolean pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1142 return FALSE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1143 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1144
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1145 return pref->value.boolean;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1146 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1147
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1148 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1149 purple_prefs_get_int(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1150 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1151 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1152
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1153 PURPLE_PREFS_UI_OP_CALL_RETURN(get_int, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1154
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1155 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1156
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1157 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1158 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1159 "purple_prefs_get_int: Unknown pref %s\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1160 return 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1161 } else if(pref->type != PURPLE_PREF_INT) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1162 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1163 "purple_prefs_get_int: %s not an integer pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1164 return 0;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1165 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1166
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1167 return pref->value.integer;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1168 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1169
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1170 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1171 purple_prefs_get_string(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1172 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1173 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1174
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1175 PURPLE_PREFS_UI_OP_CALL_RETURN(get_string, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1176
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1177 pref = find_pref(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1178
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1179 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1180 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1181 "purple_prefs_get_string: Unknown pref %s\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1182 return NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1183 } else if(pref->type != PURPLE_PREF_STRING) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1184 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1185 "purple_prefs_get_string: %s not a string pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1186 return NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1187 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1188
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1189 return pref->value.string;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1190 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1191
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1192 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1193 purple_prefs_get_string_list(const char *name)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1194 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1195 struct purple_pref *pref;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1196 GList *ret = NULL, *tmp;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1197
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1198 PURPLE_PREFS_UI_OP_CALL_RETURN(get_string_list, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1199
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1200 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1201
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1202 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1203 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1204 "purple_prefs_get_string_list: Unknown pref %s\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1205 return NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1206 } else if(pref->type != PURPLE_PREF_STRING_LIST) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1207 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1208 "purple_prefs_get_string_list: %s not a string list pref\n", name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1209 return NULL;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1210 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1211
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1212 for(tmp = pref->value.stringlist; tmp; tmp = tmp->next)
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13712
diff changeset
1213 ret = g_list_prepend(ret, g_strdup(tmp->data));
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13712
diff changeset
1214 ret = g_list_reverse(ret);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1215
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1216 return ret;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1217 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1218
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1219 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1220 purple_prefs_get_path(const char *name)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1221 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1222 struct purple_pref *pref;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1223
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1224 PURPLE_PREFS_UI_OP_CALL_RETURN(get_string, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1225
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1226 pref = find_pref(name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1227
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1228 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1229 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1230 "purple_prefs_get_path: Unknown pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1231 return NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1232 } else if(pref->type != PURPLE_PREF_PATH) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1233 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1234 "purple_prefs_get_path: %s not a path pref\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1235 return NULL;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1236 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1237
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1238 return pref->value.string;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1239 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1240
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1241 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1242 purple_prefs_get_path_list(const char *name)
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1243 {
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1244 struct purple_pref *pref;
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1245 GList *ret = NULL, *tmp;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1246
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1247 PURPLE_PREFS_UI_OP_CALL_RETURN(get_string_list, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1248
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1249 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1250
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1251 if(!pref) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1252 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1253 "purple_prefs_get_path_list: Unknown pref %s\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1254 return NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1255 } else if(pref->type != PURPLE_PREF_PATH_LIST) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1256 purple_debug_error("prefs",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1257 "purple_prefs_get_path_list: %s not a path list pref\n", name);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1258 return NULL;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1259 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1260
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1261 for(tmp = pref->value.stringlist; tmp; tmp = tmp->next)
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1262 ret = g_list_prepend(ret, g_strdup(tmp->data));
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1263 ret = g_list_reverse(ret);
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1264
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1265 return ret;
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1266 }
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1267
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1268 static void
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1269 purple_prefs_rename_node(struct purple_pref *oldpref, struct purple_pref *newpref)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1270 {
16609
aad32c451346 this patch from sadrul fixes the first crash I hit
Luke Schierer <lschiere@pidgin.im>
parents: 16573
diff changeset
1271 struct purple_pref *child, *next;
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1272 char *oldname, *newname;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1273
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1274 /* if we're a parent, rename the kids first */
16609
aad32c451346 this patch from sadrul fixes the first crash I hit
Luke Schierer <lschiere@pidgin.im>
parents: 16573
diff changeset
1275 for(child = oldpref->first_child; child != NULL; child = next)
13712
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1276 {
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1277 struct purple_pref *newchild;
16609
aad32c451346 this patch from sadrul fixes the first crash I hit
Luke Schierer <lschiere@pidgin.im>
parents: 16573
diff changeset
1278 next = child->sibling;
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1279 for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling)
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1280 {
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: 25332
diff changeset
1281 if(purple_strequal(child->name, newchild->name))
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1282 {
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1283 purple_prefs_rename_node(child, newchild);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1284 break;
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1285 }
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1286 }
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1287 if(newchild == NULL) {
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1288 /* no rename happened, we weren't able to find the new pref */
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1289 char *tmpname = pref_full_name(child);
16573
84b52865b51a missing newline
Daniel Atallah <datallah@pidgin.im>
parents: 16481
diff changeset
1290 purple_debug_error("prefs", "Unable to find rename pref for %s\n", tmpname);
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1291 g_free(tmpname);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1292 }
13712
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1293 }
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1294
16338
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1295 oldname = pref_full_name(oldpref);
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1296 newname = pref_full_name(newpref);
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1297
13712
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1298 if (oldpref->type != newpref->type)
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1299 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1300 purple_debug_error("prefs", "Unable to rename %s to %s: differing types\n", oldname, newname);
16338
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1301 g_free(oldname);
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1302 g_free(newname);
13712
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1303 return;
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1304 }
fa55fb41ed0d [gaim-migrate @ 16114]
Richard Laager <rlaager@pidgin.im>
parents: 13711
diff changeset
1305
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1306 purple_debug_info("prefs", "Renaming %s to %s\n", oldname, newname);
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1307 g_free(oldname);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1308
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1309 switch(oldpref->type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1310 case PURPLE_PREF_NONE:
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1311 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1312 case PURPLE_PREF_BOOLEAN:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1313 purple_prefs_set_bool(newname, oldpref->value.boolean);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1314 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1315 case PURPLE_PREF_INT:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1316 purple_prefs_set_int(newname, oldpref->value.integer);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1317 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1318 case PURPLE_PREF_STRING:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1319 purple_prefs_set_string(newname, oldpref->value.string);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1320 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1321 case PURPLE_PREF_STRING_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1322 purple_prefs_set_string_list(newname, oldpref->value.stringlist);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1323 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1324 case PURPLE_PREF_PATH:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1325 purple_prefs_set_path(newname, oldpref->value.string);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1326 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1327 case PURPLE_PREF_PATH_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1328 purple_prefs_set_path_list(newname, oldpref->value.stringlist);
15370
ec2add2105cb [gaim-migrate @ 18099]
Nathan Walp <nwalp@pidgin.im>
parents: 15353
diff changeset
1329 break;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1330 }
16338
b9c95053a782 Fix use before initialization and use after freeing (This is still not being used, but I figured I'd fix the stuff that I noticed).
Daniel Atallah <datallah@pidgin.im>
parents: 16225
diff changeset
1331 g_free(newname);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1332
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1333 remove_pref(oldpref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1334 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1335
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1336 void
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1337 purple_prefs_rename(const char *oldname, const char *newname)
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1338 {
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1339 struct purple_pref *oldpref, *newpref;
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1340
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1341 PURPLE_PREFS_UI_OP_CALL(rename, oldname, newname);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1342
16224
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1343 oldpref = find_pref(oldname);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1344
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1345 /* it's already been renamed, call off the dogs */
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1346 if(!oldpref)
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1347 return;
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1348
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1349 newpref = find_pref(newname);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1350
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1351 if (newpref == NULL)
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1352 {
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1353 purple_debug_error("prefs", "Unable to rename %s to %s: new pref not created\n", oldname, newname);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1354 return;
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1355 }
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1356
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1357 purple_prefs_rename_node(oldpref, newpref);
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1358 }
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1359
3c20e4887309 This lets you rename entire trees of prefs. This should help with the migration
Nathan Walp <nwalp@pidgin.im>
parents: 15959
diff changeset
1360 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1361 purple_prefs_rename_boolean_toggle(const char *oldname, const char *newname)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1362 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1363 struct purple_pref *oldpref, *newpref;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1364
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1365 PURPLE_PREFS_UI_OP_CALL(rename_boolean_toggle, oldname, newname);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1366
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1367 oldpref = find_pref(oldname);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1368
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1369 /* it's already been renamed, call off the cats */
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1370 if(!oldpref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1371 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1372
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1373 if (oldpref->type != PURPLE_PREF_BOOLEAN)
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1374 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1375 purple_debug_error("prefs", "Unable to rename %s to %s: old pref not a boolean\n", oldname, newname);
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1376 return;
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1377 }
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1378
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1379 if (oldpref->first_child != NULL) /* can't rename parents */
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1380 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1381 purple_debug_error("prefs", "Unable to rename %s to %s: can't rename parents\n", oldname, newname);
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1382 return;
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1383 }
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1384
11736
a971d6d92d48 [gaim-migrate @ 14027]
Mark Doliner <markdoliner@pidgin.im>
parents: 11719
diff changeset
1385
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1386 newpref = find_pref(newname);
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1387
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1388 if (newpref == NULL)
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1389 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1390 purple_debug_error("prefs", "Unable to rename %s to %s: new pref not created\n", oldname, newname);
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1391 return;
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1392 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1393
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1394 if (oldpref->type != newpref->type)
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1395 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1396 purple_debug_error("prefs", "Unable to rename %s to %s: differing types\n", oldname, newname);
13711
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1397 return;
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1398 }
f4af8af0b643 [gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents: 13639
diff changeset
1399
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1400 purple_debug_info("prefs", "Renaming and toggling %s to %s\n", oldname, newname);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1401 purple_prefs_set_bool(newname, !(oldpref->value.boolean));
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1402
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1403 remove_pref(oldpref);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1404 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1405
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1406 guint
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1407 purple_prefs_connect_callback(void *handle, const char *name, PurplePrefCallback func, gpointer data)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1408 {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1409 struct purple_pref *pref = NULL;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1410 PurplePrefCallbackData *cb;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1411 static guint cb_id = 0;
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1412 PurplePrefsUiOps *uiop = NULL;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1413
15085
5c650ae458df [gaim-migrate @ 17805]
Daniel Atallah <datallah@pidgin.im>
parents: 14936
diff changeset
1414 g_return_val_if_fail(name != NULL, 0);
5c650ae458df [gaim-migrate @ 17805]
Daniel Atallah <datallah@pidgin.im>
parents: 14936
diff changeset
1415 g_return_val_if_fail(func != NULL, 0);
5c650ae458df [gaim-migrate @ 17805]
Daniel Atallah <datallah@pidgin.im>
parents: 14936
diff changeset
1416
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1417 uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1418
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1419 if (!(uiop && uiop->connect_callback)) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1420 pref = find_pref(name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1421 if (pref == NULL) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1422 purple_debug_error("prefs", "purple_prefs_connect_callback: Unknown pref %s\n", name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1423 return 0;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1424 }
15353
6cb9019ddd3f [gaim-migrate @ 18081]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15085
diff changeset
1425 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1426
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1427 cb = g_new0(PurplePrefCallbackData, 1);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1428
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1429 cb->func = func;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1430 cb->data = data;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1431 cb->id = ++cb_id;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1432 cb->handle = handle;
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1433 cb->name = g_strdup(name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1434
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1435 if (uiop && uiop->connect_callback) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1436 cb->ui_data = uiop->connect_callback(name, cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1437
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1438 if (cb->ui_data == NULL) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1439 purple_debug_error("prefs", "purple_prefs_connect_callback: connect failed for %s\n", name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1440 g_free(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1441 g_free(cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1442 return 0;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1443 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1444
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1445 ui_callbacks = g_slist_append(ui_callbacks, cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1446 } else {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1447 pref->callbacks = g_slist_append(pref->callbacks, cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1448 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1449
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1450 return cb->id;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1451 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1452
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1453 static void
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1454 purple_prefs_trigger_ui_callback_object(PurplePrefCallbackData *cb)
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1455 {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1456 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1457 gconstpointer value = NULL;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1458 PurplePrefType type = PURPLE_PREF_NONE;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1459
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1460 type = uiop->get_type(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1461
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1462 switch (type) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1463 case PURPLE_PREF_INT:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1464 if (uiop->get_int) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1465 value = GINT_TO_POINTER(uiop->get_int(cb->name));
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1466 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1467 break;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1468 case PURPLE_PREF_BOOLEAN:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1469 if (uiop->get_bool) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1470 value = GINT_TO_POINTER(uiop->get_bool(cb->name));
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1471 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1472 break;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1473 case PURPLE_PREF_STRING:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1474 case PURPLE_PREF_PATH:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1475 if (uiop->get_string) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1476 value = uiop->get_string(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1477 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1478 break;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1479 case PURPLE_PREF_STRING_LIST:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1480 case PURPLE_PREF_PATH_LIST:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1481 if (uiop->get_string_list) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1482 value = uiop->get_string_list(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1483 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1484 break;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1485 case PURPLE_PREF_NONE:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1486 break;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1487 default:
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1488 purple_debug_error("prefs", "Unexpected type = %i\n", type);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1489 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1490
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1491 cb->func(cb->name, type, value, cb->data);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1492 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1493
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1494 void
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1495 purple_prefs_trigger_callback_object(PurplePrefCallbackData *cb)
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1496 {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1497 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1498
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1499 if (uiop && uiop->connect_callback && uiop->get_type) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1500 purple_prefs_trigger_ui_callback_object(cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1501 } else {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1502 purple_prefs_trigger_callback(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1503 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1504 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1505
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1506 static gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1507 disco_callback_helper(struct purple_pref *pref, guint callback_id)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1508 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1509 GSList *cbs;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1510 struct purple_pref *child;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1511
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1512 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1513 return FALSE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1514
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1515 for(cbs = pref->callbacks; cbs; cbs = cbs->next) {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1516 PurplePrefCallbackData *cb = cbs->data;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1517 if(cb->id == callback_id) {
11719
2d62fa2e2d76 [gaim-migrate @ 14010]
Michael Carlson <corfe83@users.sourceforge.net>
parents: 11698
diff changeset
1518 pref->callbacks = g_slist_delete_link(pref->callbacks, cbs);
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1519 g_free(cb->name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1520 g_free(cb);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1521 return TRUE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1522 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1523 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1524
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1525 for(child = pref->first_child; child; child = child->sibling) {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1526 if(disco_callback_helper(child, callback_id))
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1527 return TRUE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1528 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1529
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1530 return FALSE;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1531 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1532
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1533 static void
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1534 disco_ui_callback_helper(guint callback_id)
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1535 {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1536 GSList *cbs;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1537 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1538
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1539 for (cbs = ui_callbacks; cbs; cbs = cbs->next) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1540 PurplePrefCallbackData *cb = cbs->data;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1541 if (cb->id == callback_id) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1542 uiop->disconnect_callback(cb->name, cb->ui_data);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1543
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1544 ui_callbacks = g_slist_delete_link(ui_callbacks, cbs);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1545 g_free(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1546 g_free(cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1547 return;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1548 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1549 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1550 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1551
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1552 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1553 purple_prefs_disconnect_callback(guint callback_id)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1554 {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1555 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1556
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1557 if (uiop && uiop->disconnect_callback) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1558 disco_ui_callback_helper(callback_id);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1559 } else {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1560 disco_callback_helper(&prefs, callback_id);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1561 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1562 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1563
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1564 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1565 disco_callback_helper_handle(struct purple_pref *pref, void *handle)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1566 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1567 GSList *cbs;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1568 struct purple_pref *child;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1569
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1570 if(!pref)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1571 return;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1572
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1573 cbs = pref->callbacks;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1574 while (cbs != NULL) {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1575 PurplePrefCallbackData *cb = cbs->data;
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1576 if(cb->handle == handle) {
11719
2d62fa2e2d76 [gaim-migrate @ 14010]
Michael Carlson <corfe83@users.sourceforge.net>
parents: 11698
diff changeset
1577 pref->callbacks = g_slist_delete_link(pref->callbacks, cbs);
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1578 g_free(cb->name);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1579 g_free(cb);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1580 cbs = pref->callbacks;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1581 } else
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1582 cbs = cbs->next;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1583 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1584
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1585 for(child = pref->first_child; child; child = child->sibling)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1586 disco_callback_helper_handle(child, handle);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1587 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1588
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1589 static void
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1590 disco_ui_callback_helper_handle(void *handle)
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1591 {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1592 GSList *cbs;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1593 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1594
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1595 for (cbs = ui_callbacks; cbs; cbs = cbs->next) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1596 PurplePrefCallbackData *cb = cbs->data;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1597 if (cb->handle != handle) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1598 cbs = cbs->next;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1599 continue;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1600 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1601
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1602 uiop->disconnect_callback(cb->name, cb->ui_data);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1603
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1604 ui_callbacks = g_slist_delete_link(ui_callbacks, cbs);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1605 g_free(cb->name);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1606 g_free(cb);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1607 cbs = ui_callbacks;
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1608 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1609 }
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1610
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1611 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1612 purple_prefs_disconnect_by_handle(void *handle)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1613 {
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1614 PurplePrefsUiOps *uiop = purple_prefs_get_ui_ops();
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1615
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1616 g_return_if_fail(handle != NULL);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1617
37750
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1618 if (uiop && uiop->disconnect_callback) {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1619 disco_ui_callback_helper_handle(handle);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1620 } else {
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1621 disco_callback_helper_handle(&prefs, handle);
c3548438b3a8 Implement PurplePrefsUiOps.(dis)connect_callback from instantbird
dx <dx@dxzone.com.ar>
parents: 37749
diff changeset
1622 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1623 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1624
18714
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1625 GList *
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1626 purple_prefs_get_children_names(const char *name)
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1627 {
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1628 GList * list = NULL;
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1629 struct purple_pref *pref, *child;
18736
421ff8bee10c Return the complete paths of the child prefs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18714
diff changeset
1630 char sep[2] = "\0\0";;
18714
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1631
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1632 PURPLE_PREFS_UI_OP_CALL_RETURN(get_children_names, name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1633
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1634 pref = find_pref(name);
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1635
18714
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1636 if (pref == NULL)
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1637 return NULL;
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1638
18736
421ff8bee10c Return the complete paths of the child prefs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18714
diff changeset
1639 if (name[strlen(name) - 1] != '/')
421ff8bee10c Return the complete paths of the child prefs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18714
diff changeset
1640 sep[0] = '/';
18714
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1641 for (child = pref->first_child; child; child = child->sibling) {
18736
421ff8bee10c Return the complete paths of the child prefs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18714
diff changeset
1642 list = g_list_append(list, g_strdup_printf("%s%s%s", name, sep, child->name));
18714
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1643 }
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1644 return list;
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1645 }
65048af91a2c Add purple_prefs_get_children_names in purple. And update Changelog.API
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18229
diff changeset
1646
35177
cd95ae1faea1 Make purple_prefs_update_old private
Ankit Vani <a@nevitus.org>
parents: 35148
diff changeset
1647 static void
cd95ae1faea1 Make purple_prefs_update_old private
Ankit Vani <a@nevitus.org>
parents: 35148
diff changeset
1648 prefs_update_old(void)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1649 {
16626
8b0e5bf44f6b Rename parents first, then rename/remove the dead children. Also, set the idle-setting to 'purple' if it was 'gaim' before migration.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16609
diff changeset
1650 purple_prefs_rename("/core", "/purple");
8b0e5bf44f6b Rename parents first, then rename/remove the dead children. Also, set the idle-setting to 'purple' if it was 'gaim' before migration.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16609
diff changeset
1651
8900
14f4b7ae958e [gaim-migrate @ 9669]
Mark Doliner <markdoliner@pidgin.im>
parents: 8705
diff changeset
1652 /* Remove some no-longer-used prefs */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1653 purple_prefs_remove("/purple/away/auto_response/enabled");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1654 purple_prefs_remove("/purple/away/auto_response/idle_only");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1655 purple_prefs_remove("/purple/away/auto_response/in_active_conv");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1656 purple_prefs_remove("/purple/away/auto_response/sec_before_resend");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1657 purple_prefs_remove("/purple/away/auto_response");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1658 purple_prefs_remove("/purple/away/default_message");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1659 purple_prefs_remove("/purple/buddies/use_server_alias");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1660 purple_prefs_remove("/purple/conversations/away_back_on_send");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1661 purple_prefs_remove("/purple/conversations/send_urls_as_links");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1662 purple_prefs_remove("/purple/conversations/im/show_login");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1663 purple_prefs_remove("/purple/conversations/chat/show_join");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1664 purple_prefs_remove("/purple/conversations/chat/show_leave");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1665 purple_prefs_remove("/purple/conversations/combine_chat_im");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1666 purple_prefs_remove("/purple/conversations/use_alias_for_title");
32438
dc8991868906 A boring and large patch so I can merge heads.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31978
diff changeset
1667 purple_prefs_remove("/purple/debug/timestamps");
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1668 purple_prefs_remove("/purple/logging/log_signon_signoff");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1669 purple_prefs_remove("/purple/logging/log_idle_state");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1670 purple_prefs_remove("/purple/logging/log_away_state");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1671 purple_prefs_remove("/purple/logging/log_own_states");
40509
6748a5ec6644 remove the old sound api
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
1672 purple_prefs_remove("/purple/sound/while_away");
6748a5ec6644 remove the old sound api
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
1673 purple_prefs_remove("/purple/sound/while_status");
6748a5ec6644 remove the old sound api
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
1674 purple_prefs_remove("/purple/sound");
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1675 purple_prefs_remove("/purple/status/scores/hidden");
16481
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1676 purple_prefs_remove("/plugins/core/autorecon/hide_connected_error");
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1677 purple_prefs_remove("/plugins/core/autorecon/hide_connecting_error");
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1678 purple_prefs_remove("/plugins/core/autorecon/hide_reconnecting_dialog");
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1679 purple_prefs_remove("/plugins/core/autorecon/restore_state");
ba8653070600 Fix GTK Plugin prefs
Sean Egan <seanegan@pidgin.im>
parents: 16478
diff changeset
1680 purple_prefs_remove("/plugins/core/autorecon");
36988
39fe448f02aa Clean up old "/plugins/lopl" prefs as Mark suggested
Ankit Vani <a@nevitus.org>
parents: 36984
diff changeset
1681 purple_prefs_remove("/plugins/lopl");
8900
14f4b7ae958e [gaim-migrate @ 9669]
Mark Doliner <markdoliner@pidgin.im>
parents: 8705
diff changeset
1682 }
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1683
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1684 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1685 purple_prefs_get_handle(void)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1686 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1687 static int handle;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1688
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1689 return &handle;
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1690 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1691
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1692 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1693 purple_prefs_init(void)
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1694 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1695 void *handle = purple_prefs_get_handle();
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1696
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1697 prefs_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1698
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1699 purple_prefs_connect_callback(handle, "/", prefs_save_cb, NULL);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1700
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1701 purple_prefs_add_none("/purple");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1702 purple_prefs_add_none("/plugins");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1703 purple_prefs_add_none("/plugins/core");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1704 purple_prefs_add_none("/plugins/prpl");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1705
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1706 /* Away */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1707 purple_prefs_add_none("/purple/away");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1708 purple_prefs_add_string("/purple/away/idle_reporting", "system");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1709 purple_prefs_add_bool("/purple/away/away_when_idle", TRUE);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1710 purple_prefs_add_int("/purple/away/mins_before_away", 5);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1711
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1712 /* Away -> Auto-Reply */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1713 if (!purple_prefs_exists("/purple/away/auto_response/enabled") ||
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1714 !purple_prefs_exists("/purple/away/auto_response/idle_only"))
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1715 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1716 purple_prefs_add_string("/purple/away/auto_reply", "awayidle");
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1717 }
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1718 else
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1719 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1720 if (!purple_prefs_get_bool("/purple/away/auto_response/enabled"))
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1721 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1722 purple_prefs_add_string("/purple/away/auto_reply", "never");
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1723 }
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1724 else
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1725 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1726 if (purple_prefs_get_bool("/purple/away/auto_response/idle_only"))
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1727 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1728 purple_prefs_add_string("/purple/away/auto_reply", "awayidle");
12615
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1729 }
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1730 else
db57d3d9a9df [gaim-migrate @ 14951]
Richard Laager <rlaager@pidgin.im>
parents: 12599
diff changeset
1731 {
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1732 purple_prefs_add_string("/purple/away/auto_reply", "away");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1733 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1734 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1735 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1736
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1737 /* Buddies */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1738 purple_prefs_add_none("/purple/buddies");
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1739
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1740 /* Contact Priority Settings */
16478
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1741 purple_prefs_add_none("/purple/contact");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1742 purple_prefs_add_bool("/purple/contact/last_match", FALSE);
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1743 purple_prefs_remove("/purple/contact/offline_score");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1744 purple_prefs_remove("/purple/contact/away_score");
19107605c565 Works for me! Renames prefs: /core to /purple, /gaim/gtk to /pidgin, /gaim/gnt to /finch
Sean Egan <seanegan@pidgin.im>
parents: 16410
diff changeset
1745 purple_prefs_remove("/purple/contact/idle_score");
19675
3c1669c529a1 Move purple_prefs_load() to purple_prefs_init() - there's been a TODO for this for a long time. I have no idea why this wasn't done sooner; it seems to work just fine and fixes some bugs where stuff isn't loaded before being used. Fixes #1848 (and I'm sure others). Yell at me if this breaks anything.
Daniel Atallah <datallah@pidgin.im>
parents: 19307
diff changeset
1746
3c1669c529a1 Move purple_prefs_load() to purple_prefs_init() - there's been a TODO for this for a long time. I have no idea why this wasn't done sooner; it seems to work just fine and fixes some bugs where stuff isn't loaded before being used. Fixes #1848 (and I'm sure others). Yell at me if this breaks anything.
Daniel Atallah <datallah@pidgin.im>
parents: 19307
diff changeset
1747 purple_prefs_load();
35177
cd95ae1faea1 Make purple_prefs_update_old private
Ankit Vani <a@nevitus.org>
parents: 35148
diff changeset
1748 prefs_update_old();
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1749 }
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1750
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1751 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1752 purple_prefs_uninit()
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1753 {
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1754 if (save_timer != 0)
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1755 {
38433
361c801c4536 Remove purple_timeout_* function usage
Mike Ruprecht <cmaiku@gmail.com>
parents: 37904
diff changeset
1756 g_source_remove(save_timer);
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1757 save_cb(NULL);
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1758 }
25332
2f814ed93478 Fixes from the QuteCom folks for the core being reinitialized. References #7761
Daniel Atallah <datallah@pidgin.im>
parents: 22054
diff changeset
1759
28177
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27116
diff changeset
1760 purple_prefs_disconnect_by_handle(purple_prefs_get_handle());
e62fe687ca6c Clean up various file-scoped globals at uninit.
Paul Aurich <darkrain42@pidgin.im>
parents: 27116
diff changeset
1761
25337
ce8e175f928e Rearrange prefs uninitialization now that it actually does something.
Daniel Atallah <datallah@pidgin.im>
parents: 25332
diff changeset
1762 prefs_loaded = FALSE;
25332
2f814ed93478 Fixes from the QuteCom folks for the core being reinitialized. References #7761
Daniel Atallah <datallah@pidgin.im>
parents: 22054
diff changeset
1763 purple_prefs_destroy();
2f814ed93478 Fixes from the QuteCom folks for the core being reinitialized. References #7761
Daniel Atallah <datallah@pidgin.im>
parents: 22054
diff changeset
1764 g_hash_table_destroy(prefs_hash);
2f814ed93478 Fixes from the QuteCom folks for the core being reinitialized. References #7761
Daniel Atallah <datallah@pidgin.im>
parents: 22054
diff changeset
1765 prefs_hash = NULL;
2f814ed93478 Fixes from the QuteCom folks for the core being reinitialized. References #7761
Daniel Atallah <datallah@pidgin.im>
parents: 22054
diff changeset
1766
10443
aa7dcc1c796a [gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents: 10423
diff changeset
1767 }
37749
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1768
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1769 void
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1770 purple_prefs_set_ui_ops(PurplePrefsUiOps *ops)
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1771 {
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1772 prefs_ui_ops = ops;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1773 }
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1774
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1775 PurplePrefsUiOps *
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1776 purple_prefs_get_ui_ops(void)
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1777 {
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1778 return prefs_ui_ops;
2e00aa78cb1f Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents: 31978
diff changeset
1779 }

mercurial