Thu, 13 Aug 2020 22:03:41 -0500
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 | 1 | /* |
| 15884 | 2 | * purple |
| 1 | 3 | * |
| 15884 | 4 | * Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 6 | * source distribution. | |
| 1 | 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 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 | 21 | * |
| 22 | */ | |
| 23 | ||
| 24 | #include <string.h> | |
| 25 | #include <stdio.h> | |
| 26 | #include <stdlib.h> | |
| 5440 | 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 | 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 | 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 | 33 | #include "prefs.h" |
| 34 | #include "debug.h" | |
| 35 | #include "util.h" | |
| 3366 | 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 | 48 | struct pref_cb { |
| 15884 | 49 | PurplePrefCallback func; |
| 5440 | 50 | gpointer data; |
| 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 | 55 | }; |
| 56 | ||
| 15884 | 57 | /* TODO: This should use PurpleValues? */ |
| 58 | struct purple_pref { | |
| 59 | PurplePrefType type; | |
| 5440 | 60 | char *name; |
| 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 | 67 | gpointer generic; |
| 68 | gboolean boolean; | |
| 69 | int integer; | |
| 70 | char *string; | |
| 5561 | 71 | GList *stringlist; |
| 5440 | 72 | } value; |
| 73 | GSList *callbacks; | |
| 15884 | 74 | struct purple_pref *parent; |
| 75 | struct purple_pref *sibling; | |
| 76 | struct purple_pref *first_child; | |
| 5440 | 77 | }; |
| 3366 | 78 | |
| 5440 | 79 | |
| 15884 | 80 | static struct purple_pref prefs = { |
| 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 | 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 | 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 | 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 | 116 | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
117 | static struct |
| 15884 | 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 | 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 | 135 | } |
| 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 | 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 | 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 | 157 | |
| 15884 | 158 | /* Set the type of this node (if type == PURPLE_PREF_NONE then do nothing) */ |
| 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 | 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 | 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 | 174 | } |
| 175 | } | |
| 15884 | 176 | else if (pref->type == PURPLE_PREF_PATH) { |
| 15370 | 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 | 180 | g_free(encoded); |
| 181 | } | |
| 15884 | 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 | 184 | for (cur = pref->value.stringlist; cur != NULL; cur = cur->next) |
| 185 | { | |
| 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 | 189 | g_free(encoded); |
| 190 | } | |
| 191 | } | |
| 15884 | 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 | 196 | } |
| 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 | 201 | } |
| 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 | 207 | struct purple_pref *pref, *child; |
| 5440 | 208 | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
209 | pref = &prefs; |
| 5440 | 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 | 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 | 219 | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
220 | return node; |
| 5561 | 221 | } |
| 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 | 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 | 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 | 237 | return; |
| 238 | } | |
| 3500 | 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 | 247 | } |
| 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 | 255 | } |
| 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 | 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 | 264 | } |
| 265 | ||
| 2254 | 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 | 270 | |
| 5440 | 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 | 275 | const gchar *element_name, |
| 276 | const gchar **attribute_names, | |
| 277 | const gchar **attribute_values, | |
| 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 | 281 | PurplePrefType pref_type = PURPLE_PREF_NONE; |
| 5440 | 282 | int i; |
| 283 | const char *pref_name = NULL, *pref_value = NULL; | |
| 284 | GString *pref_name_full; | |
| 285 | GList *tmp; | |
| 3366 | 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 | 289 | return; |
| 3500 | 290 | |
| 5440 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 306 | pref_type = PURPLE_PREF_PATH_LIST; |
| 5440 | 307 | else |
| 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 | 310 | pref_value = attribute_values[i]; |
| 311 | } | |
| 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 | 321 | struct purple_pref *pref; |
| 5838 | 322 | |
| 323 | pref_name_full = g_string_new(""); | |
| 324 | ||
| 325 | for(tmp = prefs_stack; tmp; tmp = tmp->next) { | |
| 326 | pref_name_full = g_string_prepend(pref_name_full, tmp->data); | |
| 327 | pref_name_full = g_string_prepend_c(pref_name_full, '/'); | |
| 328 | } | |
| 329 | ||
| 330 | pref = find_pref(pref_name_full->str); | |
| 331 | ||
| 5561 | 332 | if(pref) { |
| 15884 | 333 | if(pref->type == PURPLE_PREF_STRING_LIST) { |
| 15370 | 334 | pref->value.stringlist = g_list_append(pref->value.stringlist, |
| 335 | g_strdup(pref_value)); | |
| 15884 | 336 | } else if(pref->type == PURPLE_PREF_PATH_LIST) { |
| 15370 | 337 | pref->value.stringlist = g_list_append(pref->value.stringlist, |
| 338 | g_filename_from_utf8(pref_value, -1, NULL, NULL, NULL)); | |
| 339 | } | |
| 5561 | 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 | 342 | } else { |
| 15370 | 343 | char *decoded; |
| 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 | 346 | return; |
|
652
dd4ccd3e5c72
[gaim-migrate @ 662]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
619
diff
changeset
|
347 | |
| 5838 | 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 | 350 | for(tmp = prefs_stack; tmp; tmp = tmp->next) { |
| 351 | pref_name_full = g_string_prepend_c(pref_name_full, '/'); | |
| 352 | pref_name_full = g_string_prepend(pref_name_full, tmp->data); | |
| 353 | } | |
| 354 | ||
| 5440 | 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 | 357 | switch(pref_type) { |
| 15884 | 358 | case PURPLE_PREF_NONE: |
| 359 | purple_prefs_add_none(pref_name_full->str); | |
| 5838 | 360 | break; |
| 15884 | 361 | case PURPLE_PREF_BOOLEAN: |
| 362 | purple_prefs_set_bool(pref_name_full->str, atoi(pref_value)); | |
| 5838 | 363 | break; |
| 15884 | 364 | case PURPLE_PREF_INT: |
| 365 | purple_prefs_set_int(pref_name_full->str, atoi(pref_value)); | |
| 5838 | 366 | break; |
| 15884 | 367 | case PURPLE_PREF_STRING: |
| 368 | purple_prefs_set_string(pref_name_full->str, pref_value); | |
| 5838 | 369 | break; |
| 15884 | 370 | case PURPLE_PREF_STRING_LIST: |
| 371 | purple_prefs_set_string_list(pref_name_full->str, NULL); | |
| 5838 | 372 | break; |
| 15884 | 373 | case PURPLE_PREF_PATH: |
| 19870 | 374 | if (pref_value) { |
| 375 | decoded = g_filename_from_utf8(pref_value, -1, NULL, NULL, NULL); | |
| 376 | purple_prefs_set_path(pref_name_full->str, decoded); | |
| 377 | g_free(decoded); | |
| 378 | } else { | |
| 379 | purple_prefs_set_path(pref_name_full->str, NULL); | |
| 380 | } | |
| 15370 | 381 | break; |
| 15884 | 382 | case PURPLE_PREF_PATH_LIST: |
| 383 | purple_prefs_set_path_list(pref_name_full->str, NULL); | |
| 15370 | 384 | break; |
| 5838 | 385 | } |
| 386 | prefs_stack = g_list_prepend(prefs_stack, g_strdup(pref_name)); | |
| 387 | g_string_free(pref_name_full, TRUE); | |
| 5440 | 388 | } |
| 1170 | 389 | } |
| 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 | 397 | g_free(prefs_stack->data); |
| 5440 | 398 | prefs_stack = g_list_delete_link(prefs_stack, prefs_stack); |
| 399 | } | |
| 1170 | 400 | } |
| 401 | ||
| 5440 | 402 | static GMarkupParser prefs_parser = { |
| 403 | prefs_start_element_handler, | |
| 404 | prefs_end_element_handler, | |
| 405 | NULL, | |
| 406 | NULL, | |
| 407 | NULL | |
| 408 | }; | |
| 1170 | 409 | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
410 | gboolean |
| 15884 | 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 | 414 | gchar *contents = NULL; |
| 415 | gsize length; | |
| 416 | GMarkupParseContext *context; | |
| 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 | 431 | } |
| 5440 | 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 | 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 | 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 | 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 | 460 | } |
| 461 | ||
| 5440 | 462 | context = g_markup_parse_context_new(&prefs_parser, 0, NULL, NULL); |
| 463 | ||
| 464 | if(!g_markup_parse_context_parse(context, contents, length, NULL)) { | |
| 465 | g_markup_parse_context_free(context); | |
| 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 | 471 | } |
| 472 | ||
| 473 | if(!g_markup_parse_context_end_parse(context, NULL)) { | |
| 15884 | 474 | purple_debug_error("prefs", "Error parsing %s\n", filename); |
| 5440 | 475 | g_markup_parse_context_free(context); |
| 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 | 481 | } |
| 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 | 485 | g_markup_parse_context_free(context); |
| 486 | g_free(contents); | |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 590 | case PURPLE_PREF_STRING: |
| 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 | 595 | case PURPLE_PREF_STRING_LIST: |
| 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 | 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 | 604 | static struct purple_pref * |
| 605 | add_pref(PurplePrefType type, const char *name) | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
606 | { |
| 15884 | 607 | struct purple_pref *parent; |
| 608 | struct purple_pref *me; | |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 685 | struct purple_pref *pref; |
| 15370 | 686 | |
| 687 | if(value != NULL && !g_utf8_validate(value, -1, NULL)) { | |
| 15884 | 688 | purple_debug_error("prefs", "purple_prefs_add_string: Cannot store invalid UTF8 for string pref %s\n", name); |
| 15370 | 689 | return; |
| 690 | } | |
| 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 | 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 | 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 | 715 | for(tmp = value; tmp; tmp = tmp->next) { |
| 716 | if(tmp->data != NULL && !g_utf8_validate(tmp->data, -1, NULL)) { | |
| 15884 | 717 | purple_debug_error("prefs", "purple_prefs_add_string_list: Skipping invalid UTF8 for string list pref %s\n", name); |
| 15370 | 718 | continue; |
| 719 | } | |
| 720 | pref->value.stringlist = g_list_append(pref->value.stringlist, | |
| 721 | g_strdup(tmp->data)); | |
| 722 | } | |
| 723 | } | |
| 724 | ||
| 725 | void | |
| 15884 | 726 | purple_prefs_add_path(const char *name, const char *value) |
| 15370 | 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 | 734 | |
| 735 | if(!pref) | |
| 736 | return; | |
| 737 | ||
| 738 | pref->value.string = g_strdup(value); | |
| 739 | } | |
| 740 | ||
| 741 | void | |
| 15884 | 742 | purple_prefs_add_path_list(const char *name, GList *value) |
| 15370 | 743 | { |
|
37749
2e00aa78cb1f
Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents:
31978
diff
changeset
|
744 | struct purple_pref *pref; |
| 15370 | 745 | GList *tmp; |
| 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 | 752 | if(!pref) |
| 753 | return; | |
| 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 | 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 | 847 | purple_prefs_destroy() |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
848 | { |
| 15884 | 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 | 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 | 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 | 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 | 906 | purple_debug_error("prefs", |
| 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 | 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 | 925 | if(pref->type != PURPLE_PREF_BOOLEAN) { |
| 926 | purple_debug_error("prefs", | |
| 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 | 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 | 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 | 950 | if(pref->type != PURPLE_PREF_INT) { |
| 951 | purple_debug_error("prefs", | |
| 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 | 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 | 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 | 970 | if(value != NULL && !g_utf8_validate(value, -1, NULL)) { |
| 15884 | 971 | purple_debug_error("prefs", "purple_prefs_set_string: Cannot store invalid UTF8 for string pref %s\n", name); |
| 15370 | 972 | return; |
| 973 | } | |
| 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 | 980 | if(pref->type != PURPLE_PREF_STRING && pref->type != PURPLE_PREF_PATH) { |
| 981 | purple_debug_error("prefs", | |
| 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 | 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 | 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 | 1008 | if(pref->type != PURPLE_PREF_STRING_LIST) { |
| 1009 | purple_debug_error("prefs", | |
| 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 | 1018 | for(tmp = value; tmp; tmp = tmp->next) { |
| 1019 | if(tmp->data != NULL && !g_utf8_validate(tmp->data, -1, NULL)) { | |
| 15884 | 1020 | purple_debug_error("prefs", "purple_prefs_set_string_list: Skipping invalid UTF8 for string list pref %s\n", name); |
| 15370 | 1021 | continue; |
| 1022 | } | |
| 1023 | pref->value.stringlist = g_list_prepend(pref->value.stringlist, | |
| 1024 | g_strdup(tmp->data)); | |
| 1025 | } | |
| 1026 | pref->value.stringlist = g_list_reverse(pref->value.stringlist); | |
| 1027 | ||
| 1028 | do_callbacks(name, pref); | |
| 1029 | ||
| 1030 | } else { | |
| 15884 | 1031 | purple_prefs_add_string_list(name, value); |
| 15370 | 1032 | } |
| 1033 | } | |
| 1034 | ||
| 1035 | void | |
| 15884 | 1036 | purple_prefs_set_path(const char *name, const char *value) |
| 15370 | 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 | 1043 | |
| 1044 | if(pref) { | |
| 15884 | 1045 | if(pref->type != PURPLE_PREF_PATH) { |
| 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 | 1048 | return; |
| 1049 | } | |
| 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 | 1052 | g_free(pref->value.string); |
| 1053 | pref->value.string = g_strdup(value); | |
| 1054 | do_callbacks(name, pref); | |
| 1055 | } | |
| 1056 | } else { | |
| 15884 | 1057 | purple_prefs_add_path(name, value); |
| 15370 | 1058 | } |
| 1059 | } | |
| 1060 | ||
| 1061 | void | |
| 15884 | 1062 | purple_prefs_set_path_list(const char *name, GList *value) |
| 15370 | 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 | 1070 | if(pref) { |
| 1071 | GList *tmp; | |
| 1072 | ||
| 15884 | 1073 | if(pref->type != PURPLE_PREF_PATH_LIST) { |
| 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 | 1076 | name); |
| 1077 | return; | |
| 1078 | } | |
| 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 | 1081 | pref->value.stringlist = NULL; |
| 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 | 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 | 1095 | |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
1096 | gboolean |
| 15884 | 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 | 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 | 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 | 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 | 1136 | purple_debug_error("prefs", |
| 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 | 1139 | } else if(pref->type != PURPLE_PREF_BOOLEAN) { |
| 1140 | purple_debug_error("prefs", | |
| 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 | 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 | 1158 | purple_debug_error("prefs", |
| 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 | 1161 | } else if(pref->type != PURPLE_PREF_INT) { |
| 1162 | purple_debug_error("prefs", | |
| 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 | 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 | 1180 | purple_debug_error("prefs", |
| 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 | 1183 | } else if(pref->type != PURPLE_PREF_STRING) { |
| 1184 | purple_debug_error("prefs", | |
| 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 | 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 | 1203 | purple_debug_error("prefs", |
| 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 | 1206 | } else if(pref->type != PURPLE_PREF_STRING_LIST) { |
| 1207 | purple_debug_error("prefs", | |
| 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 | 1219 | const char * |
| 15884 | 1220 | purple_prefs_get_path(const char *name) |
| 15370 | 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 | 1227 | |
| 1228 | if(!pref) { | |
| 15884 | 1229 | purple_debug_error("prefs", |
| 1230 | "purple_prefs_get_path: Unknown pref %s\n", name); | |
| 15370 | 1231 | return NULL; |
| 15884 | 1232 | } else if(pref->type != PURPLE_PREF_PATH) { |
| 1233 | purple_debug_error("prefs", | |
| 1234 | "purple_prefs_get_path: %s not a path pref\n", name); | |
| 15370 | 1235 | return NULL; |
| 1236 | } | |
| 1237 | ||
| 1238 | return pref->value.string; | |
| 1239 | } | |
| 1240 | ||
| 1241 | GList * | |
| 15884 | 1242 | purple_prefs_get_path_list(const char *name) |
| 15370 | 1243 | { |
|
37749
2e00aa78cb1f
Add PurplePrefsUiOps API from instantbird
dx <dx@dxzone.com.ar>
parents:
31978
diff
changeset
|
1244 | struct purple_pref *pref; |
| 15370 | 1245 | GList *ret = NULL, *tmp; |
| 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 | 1251 | if(!pref) { |
| 15884 | 1252 | purple_debug_error("prefs", |
| 1253 | "purple_prefs_get_path_list: Unknown pref %s\n", name); | |
| 15370 | 1254 | return NULL; |
| 15884 | 1255 | } else if(pref->type != PURPLE_PREF_PATH_LIST) { |
| 1256 | purple_debug_error("prefs", | |
| 1257 | "purple_prefs_get_path_list: %s not a path list pref\n", name); | |
| 15370 | 1258 | return NULL; |
| 1259 | } | |
| 1260 | ||
| 1261 | for(tmp = pref->value.stringlist; tmp; tmp = tmp->next) | |
| 1262 | ret = g_list_prepend(ret, g_strdup(tmp->data)); | |
| 1263 | ret = g_list_reverse(ret); | |
| 1264 | ||
| 1265 | return ret; | |
| 1266 | } | |
| 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 | 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 | 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 | 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 | 1310 | case PURPLE_PREF_NONE: |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
1311 | break; |
| 15884 | 1312 | case PURPLE_PREF_BOOLEAN: |
| 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 | 1315 | case PURPLE_PREF_INT: |
| 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 | 1318 | case PURPLE_PREF_STRING: |
| 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 | 1321 | case PURPLE_PREF_STRING_LIST: |
| 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 | 1324 | case PURPLE_PREF_PATH: |
| 1325 | purple_prefs_set_path(newname, oldpref->value.string); | |
| 15370 | 1326 | break; |
| 15884 | 1327 | case PURPLE_PREF_PATH_LIST: |
| 1328 | purple_prefs_set_path_list(newname, oldpref->value.stringlist); | |
| 15370 | 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 | 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 | 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 | 1373 | if (oldpref->type != PURPLE_PREF_BOOLEAN) |
|
13711
f4af8af0b643
[gaim-migrate @ 16113]
Richard Laager <rlaager@pidgin.im>
parents:
13639
diff
changeset
|
1374 | { |
| 15884 | 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 | 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 | 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 | 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 | 1400 | purple_debug_info("prefs", "Renaming and toggling %s to %s\n", oldname, newname); |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 1676 | purple_prefs_remove("/plugins/core/autorecon/hide_connected_error"); |
| 1677 | purple_prefs_remove("/plugins/core/autorecon/hide_connecting_error"); | |
| 1678 | purple_prefs_remove("/plugins/core/autorecon/hide_reconnecting_dialog"); | |
| 1679 | purple_prefs_remove("/plugins/core/autorecon/restore_state"); | |
| 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 | 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 | 1693 | purple_prefs_init(void) |
|
10443
aa7dcc1c796a
[gaim-migrate @ 11703]
Mark Doliner <markdoliner@pidgin.im>
parents:
10423
diff
changeset
|
1694 | { |
| 15884 | 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 | 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 | 1702 | purple_prefs_add_none("/plugins"); |
| 1703 | purple_prefs_add_none("/plugins/core"); | |
| 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 | 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 | } |