diff options
author | David Härdeman <david@hardeman.nu> | 2015-08-11 22:28:03 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2015-08-11 22:28:03 +0200 |
commit | 852e65956abc14f3591df70e8868635e2ed5dac9 (patch) | |
tree | fa5d2f162e108995c0407c1ae1158d11c45b221a /rcm-client-receive.c | |
parent | 6e406cc6a8384f1a4de57591f6b7772a0f5be865 (diff) |
Remove notebook from UI and use a stack instead
Diffstat (limited to 'rcm-client-receive.c')
-rw-r--r-- | rcm-client-receive.c | 78 |
1 files changed, 25 insertions, 53 deletions
diff --git a/rcm-client-receive.c b/rcm-client-receive.c index b744806..6f64f6f 100644 --- a/rcm-client-receive.c +++ b/rcm-client-receive.c @@ -53,7 +53,6 @@ struct state { GList *remotes; GList *header_buttons; bool editing; - bool active; GtkWidget *stack; GtkWidget *stack_switch; }; @@ -411,21 +410,6 @@ new_button_add(struct remote *remote, const gchar *protocol, guint64 scancode, return rcb; } -void rcng_client_receive_destroy_ui() -{ - if (state.stack_switch) - gtk_widget_destroy(state.stack_switch); - - if (state.stack) - gtk_widget_destroy(state.stack); - - g_object_unref(state.stack_switch); - state.stack_switch = NULL; - state.stack = NULL; -} - -static gint own_page_num = -1; - /* FIXME: These two functions should probably move to the core */ static void create_header_button(const gchar *tooltip, const gchar *icon_name, gboolean end, @@ -737,7 +721,19 @@ out: static void show_hardware_list(GtkButton *button, gpointer user_data) { - gtk_notebook_set_current_page(global->notebook, 0); + remove_header_buttons(); + gtk_header_bar_set_custom_title(GTK_HEADER_BAR(global->header), NULL); + gtk_stack_set_visible_child_name(global->stack, "yeshw"); + + if (state.stack_switch) + gtk_widget_destroy(state.stack_switch); + + if (state.stack) + gtk_widget_destroy(state.stack); + + g_object_unref(state.stack_switch); + state.stack_switch = NULL; + state.stack = NULL; } static void @@ -793,25 +789,6 @@ toggle_edit_keymap(GtkButton *button, gpointer user_data) set_edit_keymap(state.editing); } -static void -on_notebook_page_change(GtkNotebook *notebook, GtkWidget *page, guint new_page_num, - gpointer user_data) -{ - if (new_page_num != own_page_num) { - remove_header_buttons(); - gtk_header_bar_set_custom_title(GTK_HEADER_BAR(global->header), NULL); - state.editing = false; - state.active = false; - return; - } - - state.active = true; - state.editing = false; - set_edit_keymap(state.editing); - g_print("Page change: %i -> %u\n", own_page_num, new_page_num); - gtk_header_bar_set_custom_title(GTK_HEADER_BAR(global->header), state.stack_switch); -} - void rcng_client_receive_key_pressed(GDBusObject *obj, const gchar *protocol, guint64 scancode, const gchar *keycode) { @@ -819,7 +796,7 @@ void rcng_client_receive_key_pressed(GDBusObject *obj, const gchar *protocol, unsigned affected = 0; /* FIXME: Use object path, this is just test code */ - if (!state.active || state.editing) + if (state.editing) return; for (l = state.remotes; l; l = l->next) { @@ -849,7 +826,7 @@ void rcng_client_receive_key_released(GDBusObject *obj, const gchar *keycode) unsigned affected = 0; /* FIXME: Use object path, this is just test code */ - if (!state.active || state.editing) + if (state.editing) return; for (l = state.remotes; l; l = l->next) { @@ -1007,23 +984,14 @@ get_keymap(RCDevice *object, const gchar *keymap_id) void rcng_client_receive_init_ui(GDBusObject *new_hw) { - static bool first = true; unsigned i; - - if (first) { - g_signal_connect(global->notebook, "switch-page", G_CALLBACK(on_notebook_page_change), NULL); - state.remotes = NULL; - state.header_buttons = NULL; - state.editing = false; - state.active = false; - first = false; - } - - rcng_client_receive_destroy_ui(); - GtkWidget *scrollda; GtkWidget *label; + state.remotes = NULL; + state.header_buttons = NULL; + state.editing = false; + state.stack = gtk_stack_new(); state.stack_switch = gtk_stack_switcher_new(); g_object_ref(state.stack_switch); @@ -1033,7 +1001,6 @@ void rcng_client_receive_init_ui(GDBusObject *new_hw) scrollda = gtk_scrolled_window_new(NULL, NULL); gtk_container_set_border_width(GTK_CONTAINER(scrollda), 12); gtk_stack_add_titled(GTK_STACK(state.stack), scrollda, "Receive", "Receive"); - own_page_num = gtk_notebook_append_page(global->notebook, state.stack, gtk_label_new("Receive")); label = gtk_label_new("Transmit"); gtk_stack_add_titled(GTK_STACK(state.stack), label, "Transmit", "Transmit"); @@ -1066,6 +1033,11 @@ void rcng_client_receive_init_ui(GDBusObject *new_hw) g_free(keymap_ids); gtk_widget_show_all(state.stack); - gtk_notebook_set_current_page(global->notebook, own_page_num); + + gtk_stack_add_named(global->stack, state.stack, "remotes"); + gtk_stack_set_visible_child(global->stack, state.stack); + + set_edit_keymap(state.editing); + gtk_header_bar_set_custom_title(GTK_HEADER_BAR(global->header), state.stack_switch); } |