guint gconfnotify_id;
guint display_keepalive_timeout;
- gboolean dispchkbtn_active;
+ gboolean keepdispon_active;
osso_context_t *osso_context;
};
static void simple_brightness_applet_finalize (GObject *object);
/* Callbacks: */
-static gboolean simple_brightness_applet_keep_backlight_alive (SimpleBrightnessApplet *plugin)
+static inline void simple_brightness_applet_show_fail_msg (void)
{
- g_return_val_if_fail (plugin->priv->osso_context, FALSE);
+ hildon_banner_show_information (NULL, NULL, "Failed to keep backlight on");
+}
+static gboolean simple_brightness_applet_keep_backlight_alive (SimpleBrightnessApplet *plugin)
+{
osso_display_state_on (plugin->priv->osso_context);
- return (osso_display_blanking_pause (plugin->priv->osso_context) == OSSO_OK);
+ if (osso_display_blanking_pause (plugin->priv->osso_context) != OSSO_OK)
+ {
+ simple_brightness_applet_show_fail_msg ();
+ plugin->priv->display_keepalive_timeout = 0;
+ g_signal_handler_block (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id);
+ plugin->priv->keepdispon_active = FALSE;
+ hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), FALSE);
+ g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id);
+ return FALSE;
+ }
+ return TRUE;
}
static void simple_brightness_applet_on_gconf_value_changed (GConfClient *gconf_client G_GNUC_UNUSED, guint cnxn_id G_GNUC_UNUSED, GConfEntry *entry G_GNUC_UNUSED, SimpleBrightnessApplet *plugin)
static void simple_brightness_applet_on_dispchkbtn_toggled (GtkWidget *button G_GNUC_UNUSED, SimpleBrightnessApplet *plugin)
{
- GdkPixbuf *pixbuf = NULL;
-
- plugin->priv->dispchkbtn_active = hildon_check_button_get_active (HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn));
+ GdkPixbuf *pixbuf;
+ plugin->priv->keepdispon_active = hildon_check_button_get_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn));
g_signal_handler_block (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id);
-
gtk_widget_hide(plugin->priv->settings_dialog);
- if (plugin->priv->dispchkbtn_active)
- {
- simple_brightness_applet_keep_backlight_alive(plugin);
- plugin->priv->display_keepalive_timeout = g_timeout_add_seconds(50, (GSourceFunc) simple_brightness_applet_keep_backlight_alive, plugin);
- if (plugin->priv->display_keepalive_timeout == 0)
+ if (plugin->priv->keepdispon_active)
{
- hildon_banner_show_information(NULL, NULL, "Failed to keep backlight on");
- plugin->priv->dispchkbtn_active = FALSE;
- hildon_check_button_set_active(HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active);
- g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id);
- return;
- }
+ simple_brightness_applet_keep_backlight_alive (plugin);
+ plugin->priv->display_keepalive_timeout = g_timeout_add_seconds (50, (GSourceFunc) simple_brightness_applet_keep_backlight_alive, plugin);
+ if (plugin->priv->display_keepalive_timeout == 0)
+ {
+ plugin->priv->keepdispon_active = FALSE;
+ hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), FALSE);
+ simple_brightness_applet_show_fail_msg ();
+ goto finish;
+ }
- gtk_widget_set_name(plugin->priv->applet_button, "hildon-reject-button-finger");
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(), "general_brightness", 18, 0, NULL);
+ gtk_widget_set_name (plugin->priv->applet_button, "hildon-reject-button-finger");
+ pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "general_brightness", 18, 0, NULL);
if (pixbuf)
{
- hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), pixbuf);
+ hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), pixbuf);
g_object_unref (pixbuf);
- pixbuf = NULL;
}
}
else
{
- if(g_source_remove(plugin->priv->display_keepalive_timeout))
- {
- gtk_widget_set_name(plugin->priv->applet_button, "GtkButton-finger");
- hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), NULL);
- plugin->priv->display_keepalive_timeout = 0;
- }
- else
- {
- plugin->priv->dispchkbtn_active = TRUE;
- hildon_check_button_set_active(HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active);
- }
+ if (g_source_remove (plugin->priv->display_keepalive_timeout))
+ {
+ gtk_widget_set_name (plugin->priv->applet_button, "GtkButton-finger");
+ hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), NULL);
+ plugin->priv->display_keepalive_timeout = 0;
+ }
+ else
+ {
+ plugin->priv->keepdispon_active = TRUE;
+ hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->keepdispon_active);
+ }
}
+finish:
g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id);
gtk_widget_destroy(plugin->priv->settings_dialog);
}
plugin->priv->dispchkbtn = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH);
gtk_button_set_label (GTK_BUTTON (plugin->priv->dispchkbtn), "Keep display on");
gtk_button_set_alignment (GTK_BUTTON (plugin->priv->dispchkbtn), 0.5f, 0.5f);
- hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active);
+ hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->keepdispon_active);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (plugin->priv->settings_dialog)->vbox), plugin->priv->dispchkbtn, TRUE, TRUE, 0);
plugin->priv->dispchkbtn_toggled_id = g_signal_connect (plugin->priv->dispchkbtn, "toggled", G_CALLBACK (simple_brightness_applet_on_dispchkbtn_toggled), plugin);
g_type_class_add_private (klass, sizeof (SimpleBrightnessAppletPrivate));
}
-static void simple_brightness_applet_class_finalize (SimpleBrightnessAppletClass *klass G_GNUC_UNUSED)
-{
-}
+static void simple_brightness_applet_class_finalize (SimpleBrightnessAppletClass *klass G_GNUC_UNUSED) {}
static void simple_brightness_applet_init (SimpleBrightnessApplet *plugin)
{
return;
memset (plugin->priv, 0, sizeof (SimpleBrightnessAppletPrivate));
- plugin->priv->dispchkbtn_active = FALSE;
+ plugin->priv->keepdispon_active = FALSE;
plugin->priv->osso_context = osso_initialize (PACKAGE, PACKAGE_VERSION, TRUE, NULL);
if (G_UNLIKELY (!plugin->priv->osso_context))
g_signal_handler_disconnect (plugin->priv->brightness_ctrlbar, plugin->priv->brightness_ctrlbar_valchanged_id);
if (plugin->priv->display_keepalive_timeout != 0)
- g_source_remove(plugin->priv->display_keepalive_timeout);
+ g_source_remove (plugin->priv->display_keepalive_timeout);
if (plugin->priv->gconfnotify_id != 0)
{
}
if (plugin->priv->osso_context)
- osso_deinitialize(plugin->priv->osso_context);
+ osso_deinitialize (plugin->priv->osso_context);
G_OBJECT_CLASS (simple_brightness_applet_parent_class)->finalize (object);
}