f4f023fee37307bc0e8e7a474b3e9516203d25a3
[drnoksnes] / gui / advanced.c
1 /*
2 * This file is part of DrNokSnes
3 *
4 * Copyright (C) 2009 Javier S. Pedro <maemo@javispedro.com>
5 *
6 * This software is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public License
8 * as published by the Free Software Foundation; either version 2.1 of
9 * the License, or (at your option) any later version.
10 *
11 * This software is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this software; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19 * 02110-1301 USA
20 *
21 */
22
23 #include <gtk/gtk.h>
24 #include <hildon/hildon-helper.h>
25
26 #if MAEMO_VERSION >= 5
27 #include <hildon/hildon-gtk.h>
28 #include <hildon/hildon-check-button.h>
29 #else
30 #include <hildon/hildon-caption.h>
31 #endif
32
33 #include "../platform/hgw.h"
34 #include "plugin.h"
35
36 static GtkDialog* dialog;
37 #if MAEMO_VERSION >= 5
38 static HildonCheckButton* accu_check;
39 #else
40 #include <hildon/hildon-caption.h>
41 static GtkCheckButton* xsp_check;
42 #endif
43
44 static void load_settings()
45 {
46 #if MAEMO_VERSION >= 5
47         hildon_check_button_set_active(accu_check,
48                 gconf_client_get_bool(gcc, kGConfTransparency, NULL));
49 #else
50         gtk_toggle_button_set_active(xsp_check,
51                 gconf_client_get_bool(gcc, kGConfXSP, NULL));
52 #endif
53 }
54
55 static void save_settings()
56 {
57 #if MAEMO_VERSION >= 5
58         gconf_client_set_bool(gcc, kGConfTransparency,
59                 hildon_check_button_get_active(accu_check), NULL);
60 #else
61         gconf_client_set_bool(gcc, kGConfXSP,
62                 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(xsp_check)), NULL);
63 #endif
64 }
65
66 static void cb_dialog_response(GtkWidget * button, gint response, gpointer data)
67 {
68         if (response == GTK_RESPONSE_OK) {
69                 save_settings();
70         }
71
72         gtk_widget_destroy(GTK_WIDGET(dialog));
73 }
74
75 void advanced_dialog(GtkWindow* parent)
76 {
77         dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Advanced settings",
78                 parent, GTK_DIALOG_MODAL,
79                 GTK_STOCK_OK, GTK_RESPONSE_OK,
80                 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL));
81
82
83 #if MAEMO_VERSION >= 5
84         accu_check = HILDON_CHECK_BUTTON(hildon_check_button_new(
85                 HILDON_SIZE_FULLSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT));
86         gtk_button_set_label(GTK_BUTTON(accu_check), "Accurate graphics");
87         gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(accu_check), FALSE, FALSE, 0);
88 #else
89         xsp_check = GTK_CHECK_BUTTON(gtk_check_button_new());
90         GtkWidget* xsp_caption = hildon_caption_new(NULL, 
91                 "Use hardware scaling", GTK_WIDGET(xsp_check), NULL, 
92                 HILDON_CAPTION_OPTIONAL);
93         gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(xsp_caption));
94 #endif
95
96         load_settings();
97
98 #if MAEMO_VERSION >= 5
99         gtk_window_resize(GTK_WINDOW(dialog), 800, 300);
100 #else
101         gtk_window_resize(GTK_WINDOW(dialog), 400, 200);
102 #endif
103
104         g_signal_connect(G_OBJECT(dialog), "response",
105                                         G_CALLBACK (cb_dialog_response), NULL);
106         
107         gtk_widget_show_all(GTK_WIDGET(dialog));
108 }
109