5 * Copyright (C) 2006 Nokia Corporation
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 #include <hildon-widgets/hildon-caption.h>
28 #include <hildon-fm/hildon-widgets/hildon-file-chooser-dialog.h>
30 #include "maemo-recorder.h"
33 #define GCONF_PATH "/apps/maemo-recorder/settings"
34 #define KEY_DEFAULT_DIR GCONF_PATH "/default_dir"
35 #define KEY_DEFAULT_FILTER GCONF_PATH "/default_filter"
37 typedef struct _SettingsPriv SettingsPriv;
46 SettingsPriv *settings_priv;
48 typedef struct _SettingsData SettingsData;
55 GtkComboBox *format_combobox;
58 SettingsData *settings_data;
60 static gboolean load_settings();
62 static void set_default()
66 str = g_strdup_printf("/home/user/MyDocs/.sounds");
67 gconf_client_set_string(
72 settings_priv->default_dir = str;
79 settings_priv->default_filter = FORMAT_ILBC;
82 gint get_default_filter()
85 return settings_priv->default_filter;
88 void set_default_filter( gint filter )
95 settings_priv->default_filter = filter;
99 gchar* get_default_dir()
102 return settings_priv->default_dir;
105 void set_default_dir(gchar* selected)
107 gconf_client_set_string(
108 settings_priv->gconf,
114 static void cb_format_changed(gpointer data)
118 active = gtk_combo_box_get_active(settings_data->format_combobox);
122 settings_priv->default_filter = FORMAT_WAV;
125 settings_priv->default_filter = FORMAT_PCMA;
128 settings_priv->default_filter = FORMAT_ILBC;
136 static void cb_chdir(gpointer data)
138 GtkWidget* dialog = NULL;
139 gchar *selected = NULL;
141 g_assert(settings_data);
144 dialog = GTK_WIDGET(hildon_file_chooser_dialog_new(
145 GTK_WINDOW(settings_data->window),
146 GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER));
149 gtk_widget_show_all(dialog);
151 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
153 selected = g_strdup_printf("Default dir: %s",
154 gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));
155 gtk_label_set_text(GTK_LABEL(settings_data->label), selected);
156 settings_priv->default_dir = g_strdup(gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));
159 gtk_widget_destroy(dialog);
163 static gboolean load_settings()
165 settings_priv->default_dir = gconf_client_get_string(
166 settings_priv->gconf,
170 settings_priv->default_filter = gconf_client_get_int(
171 settings_priv->gconf,
175 if ( settings_priv->default_dir && settings_priv->default_filter )
182 GConfClient *init_settings(gint argc, gchar *argv[])
185 settings_priv = g_new0(SettingsPriv, 1);
186 settings_data = g_new0(SettingsData, 1);
187 gconf_init(argc, argv, &err);
190 ULOG_ERR("Unable to initialize gconf");
194 settings_priv->gconf = gconf_client_get_default();
195 if(!settings_priv->gconf)
197 ULOG_ERR("Unable to initialize gconf");
202 gconf_client_add_dir(settings_priv->gconf, GCONF_PATH,
203 GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
207 ULOG_ERR("Unable to load all settings");
209 return settings_priv->gconf;
212 return settings_priv->gconf;
215 void edit_settings(GtkWidget* widget, AppData *data)
217 GtkWidget* btn_chdir;
218 GtkWidget* label_def_format;
224 settings_data->appdata = data;
226 settings_data->window = gtk_dialog_new_with_buttons("Settings",
227 GTK_WINDOW(data->mainView),
228 GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR,
230 "Cancel", RESP_CANCEL,
233 settings_data->format_combobox = GTK_COMBO_BOX(gtk_combo_box_new_text());
235 g_signal_connect(G_OBJECT(settings_data->window),
237 G_CALLBACK(gtk_widget_destroy),
240 str = g_strdup_printf("Default dir: %s", get_default_dir());
241 settings_data->label = gtk_label_new(str);
242 label_def_format = gtk_label_new("Default format");
244 btn_chdir = gtk_button_new_with_label("Change dir");
246 g_signal_connect(G_OBJECT(btn_chdir), "clicked",
247 G_CALLBACK(cb_chdir),
250 gtk_widget_set_size_request(btn_chdir, 40, 40);
252 gtk_combo_box_append_text(GTK_COMBO_BOX(settings_data->format_combobox), "WAV");
253 gtk_combo_box_append_text(GTK_COMBO_BOX(settings_data->format_combobox), "PCM A-law");
254 gtk_combo_box_append_text(GTK_COMBO_BOX(settings_data->format_combobox), "iLBC");
256 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_data->window)->vbox), settings_data->label, FALSE, FALSE, 0);
257 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_data->window)->vbox), btn_chdir, FALSE, FALSE, 0);
258 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_data->window)->vbox), label_def_format, FALSE, FALSE, 5);
259 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(settings_data->window)->vbox), GTK_WIDGET(settings_data->format_combobox), FALSE, FALSE, 0);
261 if (settings_priv->default_filter == FORMAT_ILBC)
262 gtk_combo_box_set_active(settings_data->format_combobox, 2);
263 if (settings_priv->default_filter == FORMAT_WAV)
264 gtk_combo_box_set_active(settings_data->format_combobox, 0);
265 if (settings_priv->default_filter == FORMAT_PCMA)
266 gtk_combo_box_set_active(settings_data->format_combobox, 1);
269 g_signal_connect(G_OBJECT(settings_data->format_combobox), "changed",
270 G_CALLBACK(cb_format_changed), settings_data);
272 gtk_widget_show_all(settings_data->window);
274 res = gtk_dialog_run(GTK_DIALOG(settings_data->window));
278 set_default_dir(settings_priv->default_dir);
279 set_default_filter(settings_priv->default_filter);
285 gtk_widget_destroy(settings_data->window);