X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=gui%2Fcontrols.c;h=c597949f47b62a4612e6fa46b656d86aa1a25a05;hb=9b77386e312cced031d1e2e562aac94ec72ea9ab;hp=f46d7f33f071bb1a1edecb924b2423da3ad1357d;hpb=02ea2b4aee10098f26acde34cee19340fd8e4177;p=drnoksnes diff --git a/gui/controls.c b/gui/controls.c index f46d7f3..c597949 100644 --- a/gui/controls.c +++ b/gui/controls.c @@ -23,6 +23,12 @@ #include #include +#if MAEMO_VERSION >= 5 +#include +#include +#include +#endif + #include "../platform/hgw.h" #include "plugin.h" #include "cellrendererkey.h" @@ -30,10 +36,18 @@ static GtkDialog* dialog; static GtkComboBox* combo; static GtkLabel* none_label; +#if MAEMO_VERSION >= 5 +static HildonPannableArea* keys_scroll; +#else static GtkScrolledWindow* keys_scroll; +#endif static GtkListStore* keys_store; static GtkTreeView* keys_list; -static GtkLabel* ts_label; +#if MAEMO_VERSION >= 5 +static HildonCheckButton* ts_show_check; +#else +static GtkCheckButton* ts_show_check; +#endif enum { @@ -83,7 +97,7 @@ static void show_widgets() gtk_widget_show_all(GTK_WIDGET(combo)); gtk_widget_hide_all(GTK_WIDGET(none_label)); gtk_widget_hide_all(GTK_WIDGET(keys_scroll)); - gtk_widget_hide_all(GTK_WIDGET(ts_label)); + gtk_widget_hide_all(GTK_WIDGET(ts_show_check)); switch (gtk_combo_box_get_active(combo)) { case 0: gtk_widget_show_all(GTK_WIDGET(none_label)); @@ -92,13 +106,13 @@ static void show_widgets() gtk_widget_show_all(GTK_WIDGET(keys_scroll)); break; case 2: // Touchscreen - gtk_widget_show_all(GTK_WIDGET(ts_label)); + gtk_widget_show_all(GTK_WIDGET(ts_show_check)); break; case 3: // Touchscreen + keys gtk_widget_show_all(GTK_WIDGET(keys_scroll)); + gtk_widget_show_all(GTK_WIDGET(ts_show_check)); break; case 4: // Mouse - gtk_widget_show_all(GTK_WIDGET(ts_label)); break; case 5: // Mouse + keys gtk_widget_show_all(GTK_WIDGET(keys_scroll)); @@ -138,6 +152,14 @@ static void load_config() gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); gtk_tree_model_foreach(GTK_TREE_MODEL(keys_store), load_key_config, NULL); + gboolean ts_show_active = + gconf_client_get_bool(gcc, kGConfDisplayControls, NULL); +#if MAEMO_VERSION >= 5 + hildon_check_button_set_active(ts_show_check, ts_show_active); +#else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ts_show_check), ts_show_active); +#endif + show_widgets(); gconf_value_free(mapping); } @@ -213,6 +235,17 @@ cb_key_cleared(GtkCellRendererText *cell, const char *path_string, button_entry->scancode = 0; } +static void cb_ts_show_toggled(void * widget, gpointer data) +{ + gboolean active; +#if MAEMO_VERSION >= 5 + active = hildon_check_button_get_active(ts_show_check); +#else + active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ts_show_check)); +#endif + gconf_client_set_bool(gcc, kGConfDisplayControls, active, NULL); +} + static void cb_combo_changed(GtkComboBox * widget, gpointer data) { show_widgets(); @@ -227,35 +260,21 @@ static void cb_dialog_response(GtkWidget * button, gpointer data) void controls_setup() { - GConfValue* mapping = gconf_client_get(gcc, kGConfMapping, NULL); int i; - if (!mapping) { - // Key not set; setup defaults - for (i = 0; buttons[i].name; i++) { - gconf_client_set_int(gcc, buttons[i].gconf_key, - buttons[i].default_scancode, NULL); - } + // Check if all the keys exist. If not, fill them with default values. + // XXX Note that not filling a key will cause HGW to crash. - g_debug("Loading default key mappings\n"); + gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + for (i = 0; buttons[i].name; i++) { + GConfValue *mapping = gconf_client_get(gcc, buttons[i].gconf_key, NULL); - gconf_client_set_int(gcc, kGConfMapping, 1, NULL); - } else { - // If this key is set, consider defaults loaded. - gconf_value_free(mapping); - - // We still have to check if all the keys exist - gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); - for (i = 0; buttons[i].name; i++) { - mapping = gconf_client_get(gcc, buttons[i].gconf_key, NULL); - - if (!mapping) { - // Not set; set to default. - gconf_client_set_int(gcc, buttons[i].gconf_key, - buttons[i].default_scancode, NULL); - } else { - gconf_value_free(mapping); - } + if (!mapping) { + // Not set; set to default. + gconf_client_set_int(gcc, buttons[i].gconf_key, + buttons[i].default_scancode, NULL); + } else { + gconf_value_free(mapping); } } } @@ -276,13 +295,19 @@ void controls_dialog(GtkWindow* parent) none_label = GTK_LABEL(gtk_label_new("Check documentation for details.")); - keys_scroll = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL)); - gtk_scrolled_window_set_policy(keys_scroll, - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); keys_store = GTK_LIST_STORE(gtk_list_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER)); +#if MAEMO_VERSION >= 5 + keys_list = GTK_TREE_VIEW(hildon_gtk_tree_view_new_with_model( + HILDON_UI_MODE_EDIT, GTK_TREE_MODEL(keys_store))); + keys_scroll = HILDON_PANNABLE_AREA(hildon_pannable_area_new()); +#else keys_list = GTK_TREE_VIEW( gtk_tree_view_new_with_model(GTK_TREE_MODEL(keys_store))); + keys_scroll = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL)); + gtk_scrolled_window_set_policy(keys_scroll, + GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); +#endif GtkCellRenderer* renderer = GTK_CELL_RENDERER(gtk_cell_renderer_text_new()); GtkTreeViewColumn * column = @@ -298,7 +323,11 @@ void controls_dialog(GtkWindow* parent) column = gtk_tree_view_column_new_with_attributes("Key", renderer, NULL); gtk_tree_view_column_set_cell_data_func(column, renderer, accel_set_func, NULL, NULL); gtk_tree_view_column_set_resizable(column, FALSE); - gtk_tree_view_column_set_min_width(column, 240); +#if MAEMO_VERSION >= 5 + gtk_tree_view_column_set_min_width(column, 340); +#else + gtk_tree_view_column_set_min_width(column, 250); +#endif gtk_tree_view_append_column(keys_list, column); gtk_tree_view_set_headers_visible(keys_list, TRUE); @@ -312,15 +341,27 @@ void controls_dialog(GtkWindow* parent) -1); } - ts_label = GTK_LABEL(gtk_label_new("Check layout somewhere else for now.")); - +#if MAEMO_VERSION >= 5 + ts_show_check = + HILDON_CHECK_BUTTON(hildon_check_button_new( + HILDON_SIZE_FULLSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT)); + gtk_button_set_label(GTK_BUTTON(ts_show_check), "Show onscreen buttons"); +#else + ts_show_check = + GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Show onscreen buttons")); +#endif + +#if MAEMO_VERSION >= 5 + gtk_window_resize(GTK_WINDOW(dialog), 800, 380); +#else gtk_window_resize(GTK_WINDOW(dialog), 600, 340); +#endif gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(combo), FALSE, FALSE, HILDON_MARGIN_HALF); gtk_container_add(GTK_CONTAINER(keys_scroll), GTK_WIDGET(keys_list)); gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(none_label)); gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(keys_scroll)); - gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(ts_label)); + gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(ts_show_check), FALSE, FALSE, 0); load_config(); @@ -332,6 +373,8 @@ void controls_dialog(GtkWindow* parent) G_CALLBACK(cb_key_edited), NULL); g_signal_connect(G_OBJECT(renderer), "accel_cleared", G_CALLBACK(cb_key_cleared), NULL); + g_signal_connect(G_OBJECT(ts_show_check), "toggled", + G_CALLBACK(cb_ts_show_toggled), NULL); gtk_widget_show(GTK_WIDGET(dialog)); }