summaryrefslogtreecommitdiff
path: root/rcm-client-receive.c
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2015-08-11 22:28:03 +0200
committerDavid Härdeman <david@hardeman.nu>2015-08-11 22:28:03 +0200
commit852e65956abc14f3591df70e8868635e2ed5dac9 (patch)
treefa5d2f162e108995c0407c1ae1158d11c45b221a /rcm-client-receive.c
parent6e406cc6a8384f1a4de57591f6b7772a0f5be865 (diff)
Remove notebook from UI and use a stack instead
Diffstat (limited to 'rcm-client-receive.c')
-rw-r--r--rcm-client-receive.c78
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);
}