1 //  gnoMint: a graphical interface for managing a certification authority
2 //  Copyright (C) 2006-2009 David Marín Carreño <davefx@gmail.com>
3 //
4 //  This file is part of gnoMint.
5 //
6 //  gnoMint is free software; you can redistribute it and/or modify
7 //  it under the terms of the GNU General Public License as published by
8 //  the Free Software Foundation; either version 3 of the License, or
9 //  (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU General Public License for more details.
15 //
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 
20 #include <string.h>
21 #include <gconf/gconf-client.h>
22 
23 
24 #include "preferences-gui.h"
25 
26 #include <glib/gi18n.h>
27 
28 
29 static GConfClient * preferences_client;
30 
31 PreferencesGuiChangeCallback csr_visible_callback = NULL;
32 PreferencesGuiChangeCallback revoked_visible_callback = NULL;
33 
preferences_gui_set_csr_visible_callback(PreferencesGuiChangeCallback callback)34 void preferences_gui_set_csr_visible_callback (PreferencesGuiChangeCallback callback)
35 {
36 	csr_visible_callback = callback;
37 }
38 
preferences_gui_set_revoked_visible_callback(PreferencesGuiChangeCallback callback)39 void preferences_gui_set_revoked_visible_callback (PreferencesGuiChangeCallback callback)
40 {
41 	revoked_visible_callback = callback;
42 }
43 
44 
preferences_changed_callback(GConfClient * client,guint cnxn_id,GConfEntry * entry,gpointer user_data)45 void preferences_changed_callback(GConfClient* client,
46                                   guint cnxn_id,
47                                   GConfEntry *entry,
48                                   gpointer user_data)
49 {
50 
51         gboolean value = gconf_value_get_bool (gconf_entry_get_value(entry));
52         if (! strcmp (gconf_entry_get_key(entry), "/apps/gnomint/crq_visible") && csr_visible_callback)
53                 csr_visible_callback (value, TRUE);
54 
55         if (! strcmp (gconf_entry_get_key(entry), "/apps/gnomint/revoked_visible") && revoked_visible_callback)
56                 revoked_visible_callback (value, TRUE);
57 
58 }
59 
60 
61 
preferences_init(int argc,char ** argv)62 void preferences_init (int argc, char ** argv)
63 {
64         gconf_init(argc, argv, NULL);
65 
66         preferences_client = gconf_client_get_default();
67 
68         gconf_client_add_dir(preferences_client,
69                              "/apps/gnomint",
70                              GCONF_CLIENT_PRELOAD_NONE,
71                              NULL);
72 
73         gconf_client_notify_add (preferences_client, "/apps/gnomint/revoked_visible",
74                                  preferences_changed_callback,
75                                  NULL, NULL, NULL);
76 
77         gconf_client_notify_add (preferences_client, "/apps/gnomint/crq_visible",
78                                  preferences_changed_callback,
79                                  NULL, NULL, NULL);
80 
81 
82 }
83 
84 
preferences_get_size()85 gchar * preferences_get_size ()
86 {
87         return gconf_client_get_string (preferences_client, "/apps/gnomint/size", NULL);
88 }
89 
preferences_set_size(const gchar * new_value)90 void preferences_set_size (const gchar *new_value)
91 {
92         gconf_client_set_string (preferences_client, "/apps/gnomint/size", new_value, NULL);
93 }
94 
95 
preferences_get_revoked_visible()96 gboolean preferences_get_revoked_visible ()
97 {
98         return gconf_client_get_bool (preferences_client, "/apps/gnomint/revoked_visible", NULL);
99 }
100 
preferences_set_revoked_visible(gboolean new_value)101 void preferences_set_revoked_visible (gboolean new_value)
102 {
103         gconf_client_set_bool (preferences_client, "/apps/gnomint/revoked_visible", new_value, NULL);
104 }
105 
preferences_get_crq_visible()106 gboolean preferences_get_crq_visible ()
107 {
108         return gconf_client_get_bool (preferences_client, "/apps/gnomint/crq_visible", NULL);
109 }
110 
preferences_set_crq_visible(gboolean new_value)111 void preferences_set_crq_visible (gboolean new_value)
112 {
113         gconf_client_set_bool (preferences_client, "/apps/gnomint/crq_visible", new_value, NULL);
114 }
115 
preferences_get_gnome_keyring_export()116 gboolean preferences_get_gnome_keyring_export ()
117 {
118         return gconf_client_get_bool (preferences_client, "/apps/gnomint/gnome_keyring_export", NULL);
119 }
120 
preferences_set_gnome_keyring_export(gboolean new_value)121 void preferences_set_gnome_keyring_export (gboolean new_value)
122 {
123         gconf_client_set_bool (preferences_client, "/apps/gnomint/gnome_keyring_export", new_value, NULL);
124 }
125 
126 
preferences_deinit()127 void preferences_deinit ()
128 {
129         g_object_unref (preferences_client);
130         preferences_client = NULL;
131 }
132 
133