[maemo-commits] [maemo-commits] r9202 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Jan 19 17:41:36 EET 2007
- Previous message: [maemo-commits] r9201 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r9204 - in projects/haf/trunk/maemo-af-desktop: . hildon-status-bar
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-01-19 17:41:34 +0200 (Fri, 19 Jan 2007) New Revision: 9202 Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.c projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.h projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-window.c Log: 2007-01-19 Johan Bilien <johan.bilien at nokia.com> * src/hd-home-background-dialog.c: - added osso-context property, use it for help topics. - added background property. - setup the background dialog according to loaded background, and track changes to the widgets. * src/hd-home-background.[ch]: Added _copy method. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-19 15:35:21 UTC (rev 9201) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-19 15:41:34 UTC (rev 9202) @@ -1,3 +1,12 @@ +2007-01-19 Johan Bilien <johan.bilien at nokia.com> + + * src/hd-home-background-dialog.c: + - added osso-context property, use it for help topics. + - added background property. + - setup the background dialog according to loaded background, + and track changes to the widgets. + * src/hd-home-background.[ch]: Added _copy method. + 2007-01-18 Johan Bilien <johan.bilien at nokia.com> * background-manager/*: Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c 2007-01-19 15:35:21 UTC (rev 9201) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background-dialog.c 2007-01-19 15:41:34 UTC (rev 9202) @@ -57,6 +57,7 @@ #include "hd-home-background-dialog.h" #include "hd-home-l10n.h" +#include "hd-home-background.h" #include "background-manager/hildon-background-manager.h" #define BG_DESKTOP_GROUP "Desktop Entry" @@ -98,7 +99,9 @@ enum { PROP_0, - PROP_BACKGROUND_DIR + PROP_BACKGROUND_DIR, + PROP_OSSO_CONTEXT, + PROP_BACKGROUND }; struct _HDHomeBackgroundDialogPrivate @@ -109,6 +112,10 @@ GtkWidget *color_button; GtkWidget *img_combo; GtkWidget *mode_combo; + osso_context_t *osso_context; + + HDHomeBackground *background; + HDHomeBackground *original_background; }; static void @@ -135,8 +142,22 @@ hd_home_background_dialog_background_dir_changed (HDHomeBackgroundDialog *dialog); +static void +hd_home_background_dialog_set_background (HDHomeBackgroundDialog *dialog, + HDHomeBackground *background); +static void +hd_home_background_dialog_sync_from_background (HDHomeBackgroundDialog *dialog); static void +hd_home_background_dialog_filename_changed (HDHomeBackgroundDialog *dialog); + +static void +hd_home_background_dialog_color_changed (HDHomeBackgroundDialog *dialog); + +static void +hd_home_background_dialog_mode_changed (HDHomeBackgroundDialog *dialog); + +static void hd_home_background_dialog_class_init (HDHomeBackgroundDialogClass *klass) { GParamSpec *pspec; @@ -173,7 +194,27 @@ g_object_class_install_property (object_class, PROP_BACKGROUND_DIR, pspec); + + pspec = g_param_spec_pointer ("osso-context", + "OSSO Context", + "OSSO Context", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property (object_class, + PROP_OSSO_CONTEXT, + pspec); + + pspec = g_param_spec_object ("background", + "Background", + "Current background", + HD_TYPE_HOME_BACKGROUND, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + g_object_class_install_property (object_class, + PROP_BACKGROUND, + pspec); + + g_type_class_add_private (klass, sizeof (HDHomeBackgroundDialogPrivate)); } @@ -212,36 +253,24 @@ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); gtk_window_set_title (GTK_WINDOW (dialog), HH_SET_BG_TITLE); - -#if 0 - /* Add help button */ - ossohelp_dialog_help_enable (GTK_DIALOG (dialog), - HILDON_HOME_SET_BACKGROUND_HELP_TOPIC, - home_get_osso_context ()); -#endif /* Hildon Caption HBoxes */ hbox_color = gtk_hbox_new (FALSE, 10); hbox_image = gtk_hbox_new (FALSE, 10); hbox_mode = gtk_hbox_new (FALSE, 10); - -#if 0 - /* Widgets for Hildon Captions in Set Background Image dialog */ - background_manager_get_color (bm, ¤t_color); - priv->color_button = hildon_color_button_new_with_color (¤t_color); -#endif priv->color_button = hildon_color_button_new (); - priv->img_combo = - gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->combobox_contents)); + g_signal_connect_swapped (priv->color_button, "notify::color", + G_CALLBACK (hd_home_background_dialog_color_changed), + dialog); -#if 0 - if(!background_manager_get_image_uri (bm) || - g_str_equal(background_manager_get_image_uri (bm), - HILDON_HOME_BACKGROUND_NO_IMAGE)) -#endif - + priv->img_combo = gtk_combo_box_new (); + + g_signal_connect_swapped (priv->img_combo, "changed", + G_CALLBACK (hd_home_background_dialog_filename_changed), + dialog); + renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->img_combo), renderer, @@ -262,11 +291,9 @@ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->mode_combo), image_modes[BACKGROUND_TILED]); -#if 0 - /* Centered is a default scaling value */ - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox_mode_select), - background_manager_get_mode (bm)); -#endif + g_signal_connect_swapped (priv->mode_combo, "changed", + G_CALLBACK (hd_home_background_dialog_mode_changed), + dialog); /* Hildon captions in Set Background Image dialog */ group = GTK_SIZE_GROUP (gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL)); @@ -301,6 +328,8 @@ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox_image); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox_mode); + gtk_widget_show_all (GTK_DIALOG (dialog)->vbox); + hildon_caption_set_child_expand (HILDON_CAPTION (image_caption), TRUE); hildon_caption_set_child_expand (HILDON_CAPTION (mode_caption), TRUE); @@ -314,6 +343,10 @@ const GValue *value, GParamSpec *pspec) { + HDHomeBackgroundDialogPrivate *priv; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (gobject); + switch (prop_id) { case PROP_BACKGROUND_DIR: @@ -321,6 +354,19 @@ HD_HOME_BACKGROUND_DIALOG (gobject), g_value_get_string (value)); break; + case PROP_OSSO_CONTEXT: + priv->osso_context = g_value_get_pointer (value); + /* Add help button */ + if (priv->osso_context) + ossohelp_dialog_help_enable (GTK_DIALOG (gobject), + HH_HELP_SET_BACKGROUND, + priv->osso_context); + break; + case PROP_BACKGROUND: + hd_home_background_dialog_set_background ( + HD_HOME_BACKGROUND_DIALOG (gobject), + g_value_get_object (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -342,6 +388,12 @@ case PROP_BACKGROUND_DIR: g_value_set_string (value, priv->background_dir); break; + case PROP_OSSO_CONTEXT: + g_value_set_pointer (value, priv->osso_context); + break; + case PROP_BACKGROUND: + g_value_set_object (value, priv->background); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -509,8 +561,49 @@ } +static void +hd_home_background_dialog_filename_changed (HDHomeBackgroundDialog *dialog) +{ +} static void +hd_home_background_dialog_color_changed (HDHomeBackgroundDialog *dialog) +{ + HDHomeBackgroundDialogPrivate *priv; + GdkColor *color; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (!priv->background) + return; + + color = + hildon_color_button_get_color (HILDON_COLOR_BUTTON (priv->color_button)); + + g_object_set (G_OBJECT (priv->background), + "color", color, + NULL); +} + +static void +hd_home_background_dialog_mode_changed (HDHomeBackgroundDialog *dialog) +{ + HDHomeBackgroundDialogPrivate *priv; + BackgroundMode mode; + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (!priv->background) + return; + + mode = gtk_combo_box_get_active (GTK_COMBO_BOX (priv->mode_combo)); + + g_object_set (G_OBJECT (priv->background), + "mode", mode, + NULL); +} + +static void hd_home_background_dialog_background_dir_changed (HDHomeBackgroundDialog *dialog) { @@ -521,17 +614,21 @@ const gchar *image_desc_file = NULL; GKeyFile *kfile; - g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog) && dir); + g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog)); priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); if (priv->combobox_contents) gtk_list_store_clear (priv->combobox_contents); else - priv->combobox_contents = - gtk_list_store_new (3, - G_TYPE_STRING, /*localised descriptive name */ - G_TYPE_STRING, /* image file path & name */ - G_TYPE_INT /* image priority */); + { + priv->combobox_contents = + gtk_list_store_new (3, + G_TYPE_STRING, /*localised descriptive name */ + G_TYPE_STRING, /* image file path & name */ + G_TYPE_INT /* image priority */); + gtk_combo_box_set_model (GTK_COMBO_BOX (priv->img_combo), + GTK_TREE_MODEL (priv->combobox_contents)); + } if (!priv->background_dir) return; @@ -673,6 +770,60 @@ } static void +hd_home_background_dialog_sync_from_background (HDHomeBackgroundDialog *dialog) +{ + HDHomeBackgroundDialogPrivate *priv; + gchar *filename; + GdkColor *color; + BackgroundMode mode; + GtkTreeIter iter; + + g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog)); + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (!priv->background) + return; + + g_object_get (G_OBJECT (priv->background), + "color", &color, + "filename", &filename, + "mode", &mode, + NULL); + + if (filename) + { + gchar *image_name; + GError *error = NULL; + + image_name = g_filename_from_uri (filename, NULL, &error); + if (error) + { + g_warning ("Could not get image name: %s", error->message); + g_error_free (error); + image_name = g_filename_display_basename (filename); + } + + gtk_list_store_append (priv->combobox_contents, &iter); + + gtk_list_store_set (priv->combobox_contents, + &iter, + BG_IMAGE_FILENAME, filename, + BG_IMAGE_NAME, image_name, + BG_IMAGE_PRIORITY, G_MAXINT, + -1); + + g_free (image_name); + g_free (filename); + } + + if (color) + hildon_color_button_set_color (HILDON_COLOR_BUTTON (priv->color_button), + color); + + gtk_combo_box_set_active (GTK_COMBO_BOX (priv->mode_combo), mode); +} + +static void hd_home_background_dialog_set_background_dir (HDHomeBackgroundDialog *dialog, const gchar *dir) { @@ -692,3 +843,26 @@ } } +static void +hd_home_background_dialog_set_background (HDHomeBackgroundDialog *dialog, + HDHomeBackground *background) +{ + HDHomeBackgroundDialogPrivate *priv; + + g_return_if_fail (HD_IS_HOME_BACKGROUND_DIALOG (dialog) && + HD_IS_HOME_BACKGROUND (background)); + + priv = HD_HOME_BACKGROUND_DIALOG_GET_PRIVATE (dialog); + + if (priv->background) + g_object_unref (priv->background); + + priv->background = g_object_ref (background); + + if (!priv->original_background) + priv->original_background = hd_home_background_copy (background); + + g_object_notify (G_OBJECT (dialog), "background"); + hd_home_background_dialog_sync_from_background (dialog); + +} Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.c 2007-01-19 15:35:21 UTC (rev 9201) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.c 2007-01-19 15:41:34 UTC (rev 9202) @@ -697,3 +697,27 @@ (org_maemo_hildon_background_manager_set_background_reply) hd_home_background_apply_async_dbus_callback, data); } + +HDHomeBackground * +hd_home_background_copy (const HDHomeBackground *src) +{ + HDHomeBackgroundPrivate *priv; + HDHomeBackground *dest; + + g_return_val_if_fail (HD_IS_HOME_BACKGROUND (src), NULL); + + priv = src->priv; + + dest = g_object_new (HD_TYPE_HOME_BACKGROUND, + "mode", priv->mode, + "color", priv->color, + "filename", priv->filename, + "west-border", priv->west_border, + "east-border", priv->east_border, + "south-border", priv->south_border, + "north-border", priv->north_border, + NULL); + + return dest; + +} Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.h 2007-01-19 15:35:21 UTC (rev 9201) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-background.h 2007-01-19 15:41:34 UTC (rev 9202) @@ -76,6 +76,9 @@ cb, gpointer user_data); +HDHomeBackground * + hd_home_background_copy (const HDHomeBackground *src); + G_END_DECLS #endif /* __HD_HOME_BACKGROUND_H__ */ Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-window.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-window.c 2007-01-19 15:35:21 UTC (rev 9201) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/src/hd-home-window.c 2007-01-19 15:41:34 UTC (rev 9202) @@ -41,6 +41,7 @@ #include "hd-home-l10n.h" #include "hd-home-background.h" +#include "hd-home-background-dialog.h" /* FIXME */ #define HCP_LIBRARY_PATH "/usr/lib/hildon-control-panel" @@ -981,4 +982,16 @@ static void hd_home_window_set_background_activate (HDHomeWindow *window) { + HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (window); + GtkWidget *dialog; + + dialog = g_object_new (HD_TYPE_HOME_BACKGROUND_DIALOG, + "osso-context", priv->osso_context, + "background-dir", HD_DESKTOP_BACKGROUNDS_PATH, + "background", priv->background, + NULL); + + gtk_dialog_run (GTK_DIALOG (dialog)); + + gtk_widget_destroy (dialog); }
- Previous message: [maemo-commits] r9201 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r9204 - in projects/haf/trunk/maemo-af-desktop: . hildon-status-bar
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]