[maemo-commits] [maemo-commits] r12233 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Jun 11 18:41:22 EEST 2007
- Previous message: [maemo-commits] r12232 - in projects/haf/trunk/hildon-theme-layout-4: . rc
- Next message: [maemo-commits] r12234 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-06-11 18:41:19 +0300 (Mon, 11 Jun 2007) New Revision: 12233 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h projects/haf/trunk/hildon-desktop/src/hd-home-window.c Log: 2007-06-11 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-window.c: - add _cancel_note_show/hide to show the background loading progress - show the note if the loading did not complete within 1s - do not apply if the background if it was cancelled from the note. Fixes: NB#54014 Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-11 14:39:15 UTC (rev 12232) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-11 15:41:19 UTC (rev 12233) @@ -1,5 +1,13 @@ 2007-06-11 Johan Bilien <johan.bilien at nokia.com> + * src/hd-home-window.c: + - add _cancel_note_show/hide to show the background loading progress + - show the note if the loading did not complete within 1s + - do not apply if the background if it was cancelled from the note. + Fixes: NB#54014 + +2007-06-11 Johan Bilien <johan.bilien at nokia.com> + * src/hd-applications-menu.c: - unprotect spawned processes from the OOM shield. Fixes: NB#25830 Modified: projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h 2007-06-11 14:39:15 UTC (rev 12232) +++ projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h 2007-06-11 15:41:19 UTC (rev 12233) @@ -89,6 +89,9 @@ #define HH_SET_BG_MODE_STRETCHED _MAD("home_va_set_backgr_stretched") #define HH_SET_BG_MODE_TILED _MAD("home_va_set_backgr_tiled") +/* cancel background loading note */ +#define HH_CANCEL_BG_TEXT _MAD("home_nw_loading_image") + /* generic notification dialogs */ #define HH_LOW_MEMORY_TEXT _KE_RECV("memr_ib_operation_disabled") #define HH_FLASH_FULL_TEXT _KE_RECV("cerm_device_memory_full") Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-06-11 14:39:15 UTC (rev 12232) +++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c 2007-06-11 15:41:19 UTC (rev 12233) @@ -114,6 +114,12 @@ gboolean selecting_applets; guint save_area_timeout; + + /* Cancelling the background loading */ + GtkWidget *cancel_note; + guint background_loading_timeout; + guint cancel_note_update_timeout; + gboolean background_cancelled; }; /* Properties */ @@ -274,6 +280,12 @@ static void hd_home_window_button2_clicked (HildonHomeWindow *window); +static void +hd_home_window_cancel_note_hide (HDHomeWindow *window); + +static void +hd_home_window_cancel_note_show (HDHomeWindow *window); + #if 0 static void hd_home_window_adjust_alpha_activate (HDHomeWindow *window); @@ -638,6 +650,23 @@ HDHomeWindowPrivate *priv; g_debug ("Background applied!"); + priv = HD_HOME_WINDOW_GET_PRIVATE (window); + + if (priv->background_loading_timeout > 0) + { + g_source_remove (priv->background_loading_timeout); + priv->background_loading_timeout = 0; + } + + if (priv->background_cancelled) + { + priv->background_cancelled = FALSE; + return; + } + + if (GTK_IS_WIDGET (priv->cancel_note)) + hd_home_window_cancel_note_hide (window); + if (error) { g_warning ("Got error when apply background: %s", @@ -648,8 +677,6 @@ gdk_window_clear (GTK_WIDGET (window)->window); gtk_widget_queue_draw (GTK_WIDGET (window)); - priv = HD_HOME_WINDOW_GET_PRIVATE (window); - if (background != priv->background) { if (priv->background) @@ -668,11 +695,16 @@ HDHomeWindowPrivate *priv; gchar *conffile; GError *save_error = NULL; + gboolean background_cancelled; + priv = HD_HOME_WINDOW_GET_PRIVATE (window); + + background_cancelled = priv->background_cancelled; + background_apply_callback (background, pixmap_xid, error, window); /* Do not save if an error occurred */ - if (error) + if (error || background_cancelled) return; conffile = g_build_path (G_DIR_SEPARATOR_S, @@ -681,8 +713,6 @@ HD_HOME_BACKGROUND_CONF_FILE, NULL); - priv = HD_HOME_WINDOW_GET_PRIVATE (window); - hd_home_background_save (priv->background, conffile, &save_error); @@ -1669,6 +1699,17 @@ g_signal_emit_by_name (window, "layout-mode-accept"); } +static gboolean +hd_home_window_set_background_timeout (HDHomeWindow *window) +{ + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + + priv->background_loading_timeout = 0; + + hd_home_window_cancel_note_show (window); + return FALSE; +} + static void hd_home_window_set_background_reponse (HDHomeWindow *window, gint response, @@ -1690,33 +1731,54 @@ g_debug ("BACKGROUND_OK"); if (!hd_home_background_equal (priv->background, background)) - hd_home_background_apply_async - (background, - GTK_WIDGET (window)->window, - workarea, - (HDHomeBackgroundApplyCallback)background_apply_and_save_callback, - window); + { + priv->background_loading_timeout = + g_timeout_add (1000, + (GSourceFunc) + hd_home_window_set_background_timeout, + window); + hd_home_background_apply_async + (background, + GTK_WIDGET (window)->window, + workarea, + (HDHomeBackgroundApplyCallback)background_apply_and_save_callback, + window); + } g_object_unref (priv->previous_background); break; case HILDON_HOME_SET_BG_RESPONSE_PREVIEW: - hd_home_background_apply_async - (background, - GTK_WIDGET (window)->window, - workarea, - (HDHomeBackgroundApplyCallback)background_apply_callback, - window); + { + priv->background_loading_timeout = + g_timeout_add (1000, + (GSourceFunc) + hd_home_window_set_background_timeout, + window); + hd_home_background_apply_async + (background, + GTK_WIDGET (window)->window, + workarea, + (HDHomeBackgroundApplyCallback)background_apply_callback, + window); + } break; case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: if (!hd_home_background_equal (priv->background, priv->previous_background)) - hd_home_background_apply_async - (priv->previous_background, - GTK_WIDGET (window)->window, - workarea, - (HDHomeBackgroundApplyCallback)background_apply_callback, - window); + { + priv->background_loading_timeout = + g_timeout_add (1000, + (GSourceFunc) + hd_home_window_set_background_timeout, + window); + hd_home_background_apply_async + (priv->previous_background, + GTK_WIDGET (window)->window, + workarea, + (HDHomeBackgroundApplyCallback)background_apply_callback, + window); + } gtk_widget_hide (GTK_WIDGET (dialog)); g_object_unref (priv->previous_background); @@ -1788,7 +1850,89 @@ } #endif +static void +hd_home_window_cancel_note_hide (HDHomeWindow *window) +{ + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + if (priv->cancel_note_update_timeout > 0) + { + g_source_remove (priv->cancel_note_update_timeout); + priv->cancel_note_update_timeout = 0; + } + + if (GTK_IS_WIDGET (priv->cancel_note)) + { + gtk_widget_destroy (priv->cancel_note); + priv->cancel_note = NULL; + } +} + +static void +hd_home_window_cancel_note_response (HDHomeWindow *window) +{ + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + + hd_home_window_cancel_note_hide (window); + + priv->background_cancelled = TRUE; +} + +static gboolean +hd_home_window_cancel_note_update (GtkWidget *prog_bar) +{ + if (!GTK_IS_PROGRESS_BAR (prog_bar)) + return FALSE; + + gtk_progress_bar_pulse (GTK_PROGRESS_BAR (prog_bar)); + return TRUE; +} + +static void +hd_home_window_cancel_note_show (HDHomeWindow *window) +{ + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + GtkWidget *label, *prog_bar; + + if (priv->cancel_note) + return; + + priv->cancel_note = + gtk_dialog_new_with_buttons ("", + NULL, + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + HH_SET_BG_CANCEL, GTK_RESPONSE_CANCEL, + NULL); + + label = gtk_label_new (HH_CANCEL_BG_TEXT); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (priv->cancel_note)->vbox), + label); + + prog_bar = gtk_progress_bar_new (); + gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (prog_bar), 0.2); + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (prog_bar), 0.2); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (priv->cancel_note)->vbox), + prog_bar); + + priv->cancel_note_update_timeout = + g_timeout_add (500, + (GSourceFunc)hd_home_window_cancel_note_update, + prog_bar); + + gtk_dialog_set_has_separator (GTK_DIALOG (priv->cancel_note), FALSE); + + g_signal_connect_swapped (priv->cancel_note, "response", + G_CALLBACK (hd_home_window_cancel_note_response), + window); + + gtk_widget_realize (priv->cancel_note); + gdk_window_set_decorations (priv->cancel_note->window, + GDK_DECOR_BORDER); + + gtk_widget_show_all (priv->cancel_note); +} + #if 0 static void scale_changed (GtkRange *range, GtkWidget *area)
- Previous message: [maemo-commits] r12232 - in projects/haf/trunk/hildon-theme-layout-4: . rc
- Next message: [maemo-commits] r12234 - in projects/haf/trunk/hildon-desktop: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]