[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.org
Date: Fri Jan 19 17:41:36 EET 2007
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, &current_color);
-  priv->color_button = hildon_color_button_new_with_color (&current_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);
 }


More information about the maemo-commits mailing list