gnome-bluetooth r385 - trunk/properties
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-bluetooth r385 - trunk/properties
- Date: Fri, 27 Feb 2009 11:51:13 +0000 (UTC)
Author: hadess
Date: Fri Feb 27 11:51:13 2009
New Revision: 385
URL: http://svn.gnome.org/viewvc/gnome-bluetooth?rev=385&view=rev
Log:
Easier "Mode of operation"
Replace the 3 toggle buttons and scales with a single "discoverable"
check button. (Closes: #548675)
Modified:
trunk/properties/adapter.c
Modified: trunk/properties/adapter.c
==============================================================================
--- trunk/properties/adapter.c (original)
+++ trunk/properties/adapter.c Fri Feb 27 11:51:13 2009
@@ -44,50 +44,30 @@
DBusGProxy *proxy;
GtkWidget *notebook;
GtkWidget *child;
- GtkWidget *button_dummy;
- GtkWidget *button_hidden;
- GtkWidget *button_always;
- GtkWidget *button_timeout;
- GtkWidget *timeout_scale;
+ GtkWidget *button_discoverable;
GtkWidget *entry;
GtkWidget *button_delete;
GtkWidget *button_trusted;
GtkWidget *button_disconnect;
GtkTreeSelection *selection;
GtkTreeRowReference *reference;
- guint signal_hidden;
- guint signal_always;
- guint signal_timeout;
- guint signal_scale;
+ guint signal_discoverable;
gboolean powered;
gboolean discoverable;
guint timeout_value;
- guint timeout_remain;
int name_changed;
};
static void block_signals(struct adapter_data *adapter)
{
- g_signal_handler_block(adapter->button_hidden,
- adapter->signal_hidden);
- g_signal_handler_block(adapter->button_always,
- adapter->signal_always);
- g_signal_handler_block(adapter->button_timeout,
- adapter->signal_timeout);
- g_signal_handler_block(adapter->timeout_scale,
- adapter->signal_scale);
+ g_signal_handler_block(adapter->button_discoverable,
+ adapter->signal_discoverable);
}
static void unblock_signals(struct adapter_data *adapter)
{
- g_signal_handler_unblock(adapter->button_hidden,
- adapter->signal_hidden);
- g_signal_handler_unblock(adapter->button_always,
- adapter->signal_always);
- g_signal_handler_unblock(adapter->button_timeout,
- adapter->signal_timeout);
- g_signal_handler_unblock(adapter->timeout_scale,
- adapter->signal_scale);
+ g_signal_handler_unblock(adapter->button_discoverable,
+ adapter->signal_discoverable);
}
static void update_tab_label(GtkNotebook *notebook,
@@ -96,7 +76,7 @@
GtkWidget *label;
gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(notebook), child,
- name && name[0] != '\0' ? name : _("Adapter"));
+ name && name[0] != '\0' ? name : _("Unnamed Adapter"));
label = gtk_notebook_get_tab_label(GTK_NOTEBOOK(notebook), child);
gtk_label_set_max_width_chars(GTK_LABEL(label), 20);
@@ -109,26 +89,12 @@
GValue discoverable = { 0 };
GValue timeout = { 0 };
- if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)) == FALSE)
- return;
-
g_value_init(&discoverable, G_TYPE_BOOLEAN);
g_value_init(&timeout, G_TYPE_UINT);
- if (button == adapter->button_hidden) {
- g_value_set_boolean(&discoverable, FALSE);
- g_value_set_uint(&timeout, 0);
- } else if (button == adapter->button_always) {
- g_value_set_boolean(&discoverable, TRUE);
- g_value_set_uint(&timeout, 0);
- } else if (button == adapter->button_timeout) {
- g_value_set_boolean(&discoverable, TRUE);
- if (adapter->timeout_value > 0)
- g_value_set_uint(&timeout, adapter->timeout_value);
- else
- g_value_set_uint(&timeout, 3 * 60);
- } else
- return;
+ gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (button), FALSE);
+ g_value_set_boolean(&discoverable, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)));
+ g_value_set_uint(&timeout, 0);
dbus_g_proxy_call(adapter->proxy, "SetProperty", NULL,
G_TYPE_STRING, "Discoverable",
@@ -144,42 +110,6 @@
g_value_unset(&timeout);
}
-static void scale_callback(GtkWidget *scale, gpointer user_data)
-{
- struct adapter_data *adapter = user_data;
- GValue timeout = { 0 };
- gdouble value;
-
- value = gtk_range_get_value(GTK_RANGE(scale));
- adapter->timeout_value = value * 60;
-
- g_value_init(&timeout, G_TYPE_UINT);
- g_value_set_uint(&timeout, adapter->timeout_value);
-
- dbus_g_proxy_call(adapter->proxy, "SetProperty", NULL,
- G_TYPE_STRING, "DiscoverableTimeout",
- G_TYPE_VALUE, &timeout,
- G_TYPE_INVALID, G_TYPE_INVALID);
-
- g_value_unset(&timeout);
-}
-
-static gchar *format_callback(GtkWidget *scale,
- gdouble value, gpointer user_data)
-{
- struct adapter_data *adapter = user_data;
-
- if (value == 0) {
- if (adapter->discoverable == TRUE)
- return g_strdup(_("always"));
- else
- return g_strdup(_("hidden"));
- }
-
- return g_strdup_printf(ngettext("%'g minute",
- "%'g minutes", value), value);
-}
-
static void name_callback(GtkWidget *editable, gpointer user_data)
{
struct adapter_data *adapter = user_data;
@@ -412,28 +342,6 @@
return active;
}
-static gboolean counter_callback(gpointer user_data)
-{
- struct adapter_data *adapter = user_data;
- gdouble value;
-
- if (adapter->timeout_remain == 0)
- return FALSE;
-
- else if (adapter->timeout_remain < 60)
- value = 1;
- else if (adapter->timeout_remain > 60 * 30)
- value = 30;
- else
- value = adapter->timeout_remain / 60;
-
- adapter->timeout_remain--;
-
- gtk_range_set_fill_level(GTK_RANGE(adapter->timeout_scale), value);
-
- return TRUE;
-}
-
static void create_adapter(struct adapter_data *adapter)
{
GHashTable *hash = NULL;
@@ -448,15 +356,12 @@
GtkWidget *label;
GtkWidget *image;
GtkWidget *button;
- GtkWidget *scale;
GtkWidget *entry;
GtkWidget *buttonbox;
GtkWidget *scrolled;
GtkWidget *tree;
GtkTreeModel *model;
GtkTreeSelection *selection;
- GSList *group = NULL;
- gdouble scale_value;
dbus_g_proxy_call(adapter->proxy, "GetProperties", NULL, G_TYPE_INVALID,
dbus_g_type_get_map("GHashTable",
@@ -503,91 +408,23 @@
vbox = gtk_vbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
- label = create_label(_("Visibility setting"));
- gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
- button = gtk_radio_button_new_with_label(group, NULL);
- group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- gtk_widget_set_no_show_all(button, TRUE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
-
- adapter->button_dummy = button;
-
- button = gtk_radio_button_new_with_label(group,
- _("Hidden"));
- group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- if (powered == TRUE && discoverable == FALSE)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
-
- adapter->button_hidden = button;
- adapter->signal_hidden = g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(mode_callback), adapter);
-
- button = gtk_radio_button_new_with_label(group,
- _("Always visible"));
- group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- if (discoverable == TRUE && timeout == 0)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
-
- adapter->button_always = button;
- adapter->signal_always = g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(mode_callback), adapter);
-
- button = gtk_radio_button_new_with_label(group,
- _("Temporary visible"));
- group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- if (discoverable == TRUE && timeout > 0)
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
-
- adapter->button_timeout = button;
- adapter->signal_timeout = g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(mode_callback), adapter);
-
- scale = gtk_hscale_new_with_range(0, 30, 1);
- gtk_scale_set_digits(GTK_SCALE(scale), 0);
- gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_BOTTOM);
- gtk_range_set_restrict_to_fill_level(GTK_RANGE(scale), FALSE);
- gtk_range_set_show_fill_level(GTK_RANGE(scale), TRUE);
-
- if (discoverable == TRUE) {
- if (timeout == 0)
- scale_value = 0;
- else if (timeout < 60)
- scale_value = 1;
- else if (timeout > 60 * 30)
- scale_value = 30;
- else
- scale_value = timeout / 60;
- } else
- scale_value = 0.0;
-
- gtk_range_set_value(GTK_RANGE(scale), scale_value);
- gtk_range_set_fill_level(GTK_RANGE(scale), scale_value);
- gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_DISCONTINUOUS);
- gtk_box_pack_start(GTK_BOX(vbox), scale, FALSE, FALSE, 0);
-
- if (discoverable == TRUE && timeout > 0) {
- adapter->timeout_remain = timeout;
- g_timeout_add_seconds(1, counter_callback, adapter);
+ button = gtk_check_button_new_with_mnemonic (_("_Discoverable"));
+ /* FIXME, the whole page should be off */
+ gtk_widget_set_sensitive (button, powered);
+ if (discoverable != FALSE && timeout == 0)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
+ else if (discoverable == FALSE)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
+ else {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
+ gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (button), TRUE);
}
- adapter->timeout_scale = scale;
- adapter->signal_scale = g_signal_connect(G_OBJECT(scale), "value-changed",
- G_CALLBACK(scale_callback), adapter);
+ adapter->button_discoverable = button;
+ adapter->signal_discoverable = g_signal_connect(G_OBJECT(button), "toggled",
+ G_CALLBACK(mode_callback), adapter);
- g_signal_connect(G_OBJECT(scale), "format-value",
- G_CALLBACK(format_callback), adapter);
-
- if (discoverable == FALSE || timeout == 0)
- gtk_widget_set_sensitive(GTK_WIDGET(scale), FALSE);
+ gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
vbox = gtk_vbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(mainbox), vbox, TRUE, TRUE, 0);
@@ -708,54 +545,23 @@
static void update_visibility(struct adapter_data *adapter)
{
- GtkWidget *scale = adapter->timeout_scale;
- GtkWidget *button;
- gboolean sensitive;
- gdouble value;
-
- if (adapter->discoverable == TRUE) {
- if (adapter->timeout_value == 0)
- value = 0;
- else if (adapter->timeout_value < 60)
- value = 1;
- else if (adapter->timeout_value > 60 * 30)
- value = 30;
- else
- value = adapter->timeout_value / 60;
-
- if (adapter->timeout_value > 0) {
- button = adapter->button_timeout;
- sensitive = TRUE;
- } else {
- button = adapter->button_always;
- sensitive = FALSE;
- }
-
- if (adapter->timeout_remain == 0)
- g_timeout_add_seconds(1, counter_callback, adapter);
+ gboolean inconsistent, enabled;
+ block_signals(adapter);
- adapter->timeout_remain = adapter->timeout_value;
+ /* FIXME, the whole page should be off */
+ gtk_widget_set_sensitive (adapter->button_discoverable, adapter->powered);
+ if (adapter->discoverable != FALSE && adapter->timeout_value == 0) {
+ inconsistent = FALSE;
+ enabled = TRUE;
+ } else if (adapter->discoverable == FALSE) {
+ inconsistent = enabled = FALSE;
} else {
- value = 0.0;
-
- if (adapter->powered == FALSE)
- button = adapter->button_dummy;
- else
- button = adapter->button_hidden;
-
- sensitive = FALSE;
- adapter->timeout_remain = 0;
+ inconsistent = enabled = TRUE;
}
- block_signals(adapter);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
- gtk_range_set_value(GTK_RANGE(scale), value);
- gtk_range_set_fill_level(GTK_RANGE(scale), value);
- if (sensitive == FALSE) {
- gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE);
- gtk_scale_set_draw_value(GTK_SCALE(scale), TRUE);
- }
- gtk_widget_set_sensitive(GTK_WIDGET(scale), sensitive);
+ gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (adapter->button_discoverable), inconsistent);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (adapter->button_discoverable), enabled);
+
unblock_signals(adapter);
}
@@ -795,11 +601,6 @@
adapter->timeout_value = timeout;
- if (adapter->timeout_remain == 0)
- g_timeout_add_seconds(1, counter_callback, adapter);
-
- adapter->timeout_remain = timeout;
-
update_visibility(adapter);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]