1 /* vim: set sts=2 sw=2 et: */
3 * Copyright (C) 2008-2009 Jari Tenhunen <jari.tenhunen@iki.fi>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
26 #include <hildon/hildon-caption.h>
27 #include <hildon/hildon-defines.h>
28 #include <hildon/hildon-number-editor.h>
29 #include <hildon/hildon.h>
33 static GConfClient * client = NULL;
39 client = gconf_client_get_default ();
46 settings_get_display_keepalive (gboolean default_value)
48 GConfValue * value = NULL;
50 gboolean val = default_value;
52 value = gconf_client_get (get_client (), GCONF_KEY_DISPLAY_KEEPALIVE, &err);
58 if (value->type == GCONF_VALUE_BOOL)
59 val = gconf_value_get_bool (value);
61 gconf_value_free (value);
68 settings_set_display_keepalive (gboolean val)
70 return gconf_client_set_bool (get_client (), GCONF_KEY_DISPLAY_KEEPALIVE, val, NULL);
74 settings_get_algorithm (gint default_value)
76 GConfValue * value = NULL;
78 gint val = default_value;
80 value = gconf_client_get (get_client (), GCONF_KEY_ALGORITHM, &err);
86 if (value->type == GCONF_VALUE_INT)
87 val = gconf_value_get_int (value);
89 gconf_value_free (value);
96 settings_set_algorithm (gint value)
98 return gconf_client_set_int (get_client (), GCONF_KEY_ALGORITHM, value, NULL);
102 settings_get_calibration (gint default_value)
107 val = gconf_client_get_int (get_client (), GCONF_KEY_CALIBRATION, &err);
119 settings_set_calibration (gint value)
121 return gconf_client_set_int (get_client (), GCONF_KEY_CALIBRATION, value, NULL);
125 settings_init (GConfClientNotifyFunc func, gpointer user_data)
127 gconf_client_add_dir (get_client (), GCONF_ROOT, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
128 gconf_client_notify_add (get_client (), GCONF_ROOT, func, user_data, NULL, NULL);
134 fix_hildon_number_editor (GtkWidget * widget, gpointer data)
136 if (GTK_IS_EDITABLE (widget)) {
137 gtk_editable_set_editable (GTK_EDITABLE (widget), FALSE);
138 g_object_set (G_OBJECT (widget), "can-focus", FALSE, NULL);
143 calibration_editor_new (gint min, gint max)
147 control = hildon_number_editor_new (min, max);
148 /* we don't want that ugly cursor there */
149 gtk_container_forall (GTK_CONTAINER (control),
150 (GtkCallback) fix_hildon_number_editor, NULL);
156 settings_dialog_show (GtkWindow * parent)
160 GtkWidget *editor = NULL;
164 dialog = gtk_dialog_new_with_buttons("Settings",
167 GTK_DIALOG_DESTROY_WITH_PARENT |
168 GTK_DIALOG_NO_SEPARATOR,
169 "Save", GTK_RESPONSE_OK,
174 g_signal_connect (G_OBJECT (dialog), "delete_event", G_CALLBACK (gtk_widget_destroy), NULL);
176 vbox = gtk_vbox_new (FALSE, HILDON_MARGIN_DEFAULT);
177 gtk_container_set_border_width (GTK_CONTAINER (vbox), HILDON_MARGIN_DEFAULT);
178 gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), vbox);
180 HildonPickerButton *picker = HILDON_PICKER_BUTTON (hildon_picker_button_new (
181 HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_HALFSCREEN_WIDTH,
182 HILDON_BUTTON_ARRANGEMENT_VERTICAL));
183 hildon_button_set_title (HILDON_BUTTON (picker), "Pitch detection algorithm");
184 HildonTouchSelector *selector = HILDON_TOUCH_SELECTOR (hildon_touch_selector_new_text());
185 hildon_picker_button_set_selector (picker, selector);
186 hildon_touch_selector_append_text (selector, "Simple FFT");
187 hildon_touch_selector_append_text (selector, "Harmonic Product Spectrum");
188 hildon_picker_button_set_active (picker, settings_get_algorithm (DEFAULT_ALGORITHM));
189 gtk_button_set_alignment (GTK_BUTTON (picker), 0.0, 0.5);
190 gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (picker), FALSE, FALSE, 0);
192 editor = calibration_editor_new (CALIB_MIN, CALIB_MAX);
193 hildon_number_editor_set_value (HILDON_NUMBER_EDITOR (editor), CALIB_DEFAULT);
194 caption = hildon_caption_new (group, "Calibration:",
195 editor, NULL, HILDON_CAPTION_OPTIONAL);
196 gtk_box_pack_start (GTK_BOX (vbox), caption, FALSE, FALSE, 0);
199 control = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_HALFSCREEN_WIDTH | HILDON_BUTTON_ARRANGEMENT_VERTICAL);
200 gtk_button_set_label (GTK_BUTTON (control), "Keep display on");
201 hildon_check_button_set_active (HILDON_CHECK_BUTTON (control),
202 settings_get_display_keepalive (DEFAULT_DISPLAY_KEEPALIVE));
203 gtk_box_pack_start (GTK_BOX (vbox), control, FALSE, FALSE, 0);
205 gtk_widget_show_all (dialog);
206 res = gtk_dialog_run (GTK_DIALOG (dialog));
208 if (res == GTK_RESPONSE_OK) {
210 g_debug ("algorithm: %d", hildon_picker_button_get_active (picker));
211 settings_set_algorithm (hildon_picker_button_get_active (picker));
213 g_debug ("calib: %d", hildon_number_editor_get_value (HILDON_NUMBER_EDITOR (editor)));
214 settings_set_calibration (hildon_number_editor_get_value (HILDON_NUMBER_EDITOR (editor)));
216 g_debug ("keepalive: %d", hildon_check_button_get_active (HILDON_CHECK_BUTTON (control)));
217 settings_set_display_keepalive (hildon_check_button_get_active (HILDON_CHECK_BUTTON (control)));
220 gtk_widget_destroy (dialog);