X-Git-Url: http://git.maemo.org/git/?p=sbrightapplet;a=blobdiff_plain;f=src%2Fsimple-brightness-applet.c;h=97a6f053fd0fabb3add0a9cb561e062afb14ccfc;hp=8dba3ee3babbb821a917ae443f95e19f4ce09cf8;hb=ee71c988335b819fc439b2a17537fd8d22d7f433;hpb=ec9329ec7bdd7573643ec4d5a1153705743b073d diff --git a/src/simple-brightness-applet.c b/src/simple-brightness-applet.c index 8dba3ee..97a6f05 100644 --- a/src/simple-brightness-applet.c +++ b/src/simple-brightness-applet.c @@ -1,7 +1,7 @@ /* * simple-brightness-applet - simple statusarea applet that allows the user to select the brightness from a range of 1-5 * - * Copyright (c) 2009 Faheem Pervez + * Copyright (c) 2009-2010 Faheem Pervez * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,12 +20,13 @@ * */ -#ifdef HAVE_CONFIG_H +//#ifdef HAVE_CONFIG_H #include -#endif +//#endif #include "simple-brightness-applet.h" +#include #include #include #include @@ -58,7 +59,7 @@ struct _SimpleBrightnessAppletPrivate guint gconfnotify_id; guint display_keepalive_timeout; - gboolean dispchkbtn_active; + gboolean keepdispon_active; osso_context_t *osso_context; }; @@ -66,12 +67,25 @@ struct _SimpleBrightnessAppletPrivate 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) @@ -98,51 +112,48 @@ static void simple_brightness_applet_on_settings_button_clicked (GtkWidget *butt 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); } @@ -159,15 +170,15 @@ static void simple_brightness_applet_on_button_clicked (GtkWidget *button, Simpl gtk_window_set_destroy_with_parent (GTK_WINDOW (plugin->priv->settings_dialog), TRUE); settings_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); - gtk_button_set_label (GTK_BUTTON (settings_button), "Open Display Settings..."); + gtk_button_set_label (GTK_BUTTON (settings_button), _("Open Display Settings...")); gtk_button_set_image (GTK_BUTTON (settings_button), gtk_image_new_from_icon_name ("general_brightness", HILDON_ICON_SIZE_THUMB)); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (plugin->priv->settings_dialog)->vbox), settings_button, TRUE, TRUE, 0); g_signal_connect (settings_button, "clicked", G_CALLBACK (simple_brightness_applet_on_settings_button_clicked), plugin); 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_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); @@ -204,9 +215,7 @@ static void simple_brightness_applet_class_init (SimpleBrightnessAppletClass *kl 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) { @@ -215,7 +224,10 @@ static void simple_brightness_applet_init (SimpleBrightnessApplet *plugin) return; memset (plugin->priv, 0, sizeof (SimpleBrightnessAppletPrivate)); - plugin->priv->dispchkbtn_active = FALSE; + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + plugin->priv->keepdispon_active = FALSE; plugin->priv->osso_context = osso_initialize (PACKAGE, PACKAGE_VERSION, TRUE, NULL); if (G_UNLIKELY (!plugin->priv->osso_context)) @@ -238,7 +250,7 @@ static void simple_brightness_applet_finalize (GObject *object) 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) { @@ -253,7 +265,7 @@ static void simple_brightness_applet_finalize (GObject *object) } 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); }