~gnome-lock-dialog-preferences/gnome-lock-dialog-preferences/0.3

« back to all changes in this revision

Viewing changes to src/main.c

  • Committer: Scott Barnes
  • Date: 2009-03-08 01:06:19 UTC
  • Revision ID: reeve@saerah-20090308010619-i21vgkfq1ctvdkip
Options now work perfectly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include <config.h>
2
2
 
3
 
#include <string.h>
 
3
#include <glib.h>
4
4
#include <gtk/gtk.h>
5
5
#include <gconf/gconf-client.h>
6
6
#include <glade/glade.h>
7
7
 
8
8
typedef struct
9
9
{
10
 
  gchar *lock_theme;
 
10
  gchar *lock_dialog_theme;
11
11
  GConfClient *gconf_client;
12
12
  GtkListStore *list_store;
13
13
  GtkTreeSelection *theme_tree_selection;
40
40
  if (!g_option_context_parse (context, argc, argv, &error))
41
41
    {
42
42
      g_error ("%s\n", error->message);
43
 
      g_exit (1);
44
43
    }
45
44
}
46
45
 
58
57
      if (g_str_has_prefix (filename, "lock-dialog-") == TRUE &&
59
58
          g_str_has_suffix (filename, ".gtkrc") == FALSE)
60
59
        {
61
 
          theme_name = g_strndup (filename + 12, strlen (filename + 12) - 6);
 
60
          theme_name = g_strndup (filename + 12, g_utf8_strlen (filename + 12, -1) - 6);
62
61
          run_on_each (theme_name, user_data);
63
62
          g_free (theme_name);
64
63
        }
74
73
  GtkTreeIter iter;
75
74
  gtk_list_store_append (main_data->list_store, &iter);
76
75
  gtk_list_store_set (main_data->list_store, &iter, 0, theme_name, -1);
77
 
  if (!strcmp (theme_name, main_data->lock_theme))
 
76
  if (!g_strcmp0 (theme_name, main_data->lock_dialog_theme))
78
77
    {
79
78
      gtk_tree_selection_select_iter (GTK_TREE_SELECTION
80
79
                                      (main_data->theme_tree_selection),
90
89
  GtkTreeModel *model;
91
90
  GtkTreeIter iter;
92
91
  gchar *new_theme;
93
 
  GError *error;
94
92
  if (gtk_tree_selection_get_selected (selection, &model, &iter))
95
93
    {
96
94
      gtk_tree_model_get (model, &iter, 0, &new_theme, -1);
97
95
      gconf_client_set_string (main_data->gconf_client,
98
96
                               "/apps/gnome-screensaver/lock_dialog_theme",
99
 
                               new_theme, &error);
 
97
                               new_theme, NULL);
100
98
      g_free (new_theme);
101
99
    }
102
100
  return;
105
103
void
106
104
lock_enabled_check_toggled (GtkCheckButton * check, gpointer user_data)
107
105
{
 
106
  MainData *main_data = user_data;
 
107
  gboolean new_value =
 
108
    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
109
                               (main_data->lock_enabled_check));
 
110
    gconf_client_set_bool (main_data->gconf_client,
 
111
                           "/apps/gnome-screensaver/lock_enabled", new_value, NULL);
108
112
}
109
113
 
110
114
void
111
115
lock_delay_scale_value_changed (GtkHScale * hscale, gpointer user_data)
112
116
{
 
117
  MainData *main_data = user_data;
 
118
  gint new_value =
 
119
    gtk_range_get_value (GTK_RANGE
 
120
                               (hscale));
 
121
    gconf_client_set_int (main_data->gconf_client,
 
122
                           "/apps/gnome-screensaver/lock_delay", new_value, NULL);
113
123
}
114
124
 
115
125
void
116
126
user_switch_enabled_check_toggled (GtkCheckButton * check, gpointer user_data)
117
127
{
 
128
  MainData *main_data = user_data;
 
129
  gboolean new_value =
 
130
    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
131
                               (check));
 
132
    gconf_client_set_bool (main_data->gconf_client,
 
133
                           "/apps/gnome-screensaver/user_switch_enabled", new_value, NULL);
118
134
}
119
135
 
120
136
void
121
137
logout_enabled_check_toggled (GtkCheckButton * check, gpointer user_data)
122
138
{
 
139
  MainData *main_data = user_data;
 
140
  gboolean new_value =
 
141
    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
142
                               (check));
 
143
    gconf_client_set_bool (main_data->gconf_client,
 
144
                           "/apps/gnome-screensaver/logout_enabled", new_value, NULL);
123
145
}
124
146
 
125
147
void
126
 
logout_delay_scale_value_changed (GtkHScale * hscale, gpointer user_data)
 
148
logout_delay_scale_value_changed (GtkHScale * scale, gpointer user_data)
127
149
{
 
150
  MainData *main_data = user_data;
 
151
  gint new_value =
 
152
    gtk_range_get_value (GTK_RANGE
 
153
                               (scale));
 
154
    gconf_client_set_int (main_data->gconf_client,
 
155
                           "/apps/gnome-screensaver/logout_delay", new_value, NULL);
128
156
}
129
157
 
130
158
void
136
164
  if (gconf_entry_get_value (entry) != NULL &&
137
165
      gconf_entry_get_value (entry)->type == GCONF_VALUE_STRING)
138
166
    {
139
 
      gchar *lock_dialog_theme =
 
167
      gchar *new_value =
140
168
        (gchar *) gconf_value_get_string (gconf_entry_get_value (entry));
141
 
 
 
169
      if (g_strcmp0 (new_value, main_data->lock_dialog_theme))
 
170
        {
 
171
          //TODO
 
172
        }
142
173
    }
143
174
}
144
175
 
151
182
  if (gconf_entry_get_value (entry) != NULL &&
152
183
      gconf_entry_get_value (entry)->type == GCONF_VALUE_BOOL)
153
184
    {
154
 
      gboolean lock_enabled =
 
185
      gboolean new_value =
155
186
        gconf_value_get_bool (gconf_entry_get_value (entry));
156
 
      gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
187
      gboolean check_state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
188
                                   (main_data->lock_enabled_check));
 
189
      if (check_state != new_value)
 
190
        {
 
191
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
157
192
                                   (main_data->lock_enabled_check),
158
 
                                   lock_enabled);
 
193
                                   new_value);
 
194
        }
159
195
    }
160
196
}
161
197
 
168
204
  if (gconf_entry_get_value (entry) != NULL &&
169
205
      gconf_entry_get_value (entry)->type == GCONF_VALUE_INT)
170
206
    {
171
 
      gint lock_delay =
 
207
      gint new_value =
172
208
        gconf_value_get_int (gconf_entry_get_value (entry));
 
209
      gint check_state = gtk_range_get_value (GTK_RANGE
 
210
                                   (main_data->lock_delay_scale));
 
211
      if (check_state != new_value)
 
212
        {
173
213
      gtk_range_set_value (GTK_RANGE (main_data->lock_delay_scale),
174
 
                           lock_delay);
 
214
                                   new_value);
 
215
        }
175
216
    }
176
217
}
177
218
 
184
225
  if (gconf_entry_get_value (entry) != NULL &&
185
226
      gconf_entry_get_value (entry)->type == GCONF_VALUE_BOOL)
186
227
    {
187
 
      gboolean user_switch_enabled =
 
228
      gboolean new_value =
188
229
        gconf_value_get_bool (gconf_entry_get_value (entry));
189
 
      gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
230
      gboolean check_state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
231
                                   (main_data->lock_enabled_check));
 
232
      if (check_state != new_value)
 
233
        {
 
234
      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
190
235
                                   (main_data->user_switch_enabled_check),
191
 
                                   user_switch_enabled);
 
236
                                   new_value);
 
237
        }
192
238
    }
193
239
}
194
240
 
201
247
  if (gconf_entry_get_value (entry) != NULL &&
202
248
      gconf_entry_get_value (entry)->type == GCONF_VALUE_BOOL)
203
249
    {
204
 
      gboolean logout_enabled =
 
250
      gboolean new_value =
205
251
        gconf_value_get_bool (gconf_entry_get_value (entry));
206
 
      gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
252
      gboolean check_state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
 
253
                                   (main_data->lock_enabled_check));
 
254
      if (check_state != new_value)
 
255
        {
 
256
      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
207
257
                                   (main_data->logout_enabled_check),
208
 
                                   logout_enabled);
 
258
                                   new_value);
 
259
        }
209
260
    }
210
261
}
211
262
 
218
269
  if (gconf_entry_get_value (entry) != NULL &&
219
270
      gconf_entry_get_value (entry)->type == GCONF_VALUE_INT)
220
271
    {
221
 
      gint logout_delay =
 
272
      gint new_value =
222
273
        gconf_value_get_int (gconf_entry_get_value (entry));
223
 
      gtk_range_set_value (GTK_RANGE (main_data->logout_delay_scale),
224
 
                           logout_delay);
 
274
      gint check_state = gtk_range_get_value (GTK_RANGE
 
275
                                   (main_data->logout_delay_scale));
 
276
      if (check_state != new_value)
 
277
        {
 
278
        gtk_range_set_value (GTK_RANGE (main_data->logout_delay_scale),
 
279
                                   new_value);
 
280
        }
225
281
    }
226
282
}
227
283
 
253
309
  gconf_client_add_dir (main_data.gconf_client, "/apps/gnome-screensaver",
254
310
                        GCONF_CLIENT_PRELOAD_NONE, NULL);
255
311
 
256
 
  main_data.lock_theme =
 
312
  main_data.lock_dialog_theme =
257
313
    gconf_client_get_string (main_data.gconf_client,
258
314
                             "/apps/gnome-screensaver/lock_dialog_theme",
259
315
                             NULL);
276
332
 
277
333
  if (command_line_get == TRUE)
278
334
    {
279
 
      g_print ("%s\n", main_data.lock_theme);
 
335
      g_print ("%s\n", main_data.lock_dialog_theme);
280
336
      return (0);
281
337
    }
282
338
  if (command_line_set != NULL)
322
378
 
323
379
  check_lock_dialog_themes ((GFunc) * list_store_fill, &main_data);
324
380
 
325
 
  gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
381
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
326
382
                               (main_data.lock_enabled_check), lock_enabled);
327
383
  gtk_range_set_value (GTK_RANGE (main_data.lock_delay_scale), lock_delay);
328
 
  gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
384
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
329
385
                               (main_data.user_switch_enabled_check),
330
386
                               user_switch_enabled);
331
 
  gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON
 
387
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
332
388
                               (main_data.logout_enabled_check),
333
389
                               logout_enabled);
334
390
  gtk_range_set_value (GTK_RANGE (main_data.logout_delay_scale),