[maemo-commits] [maemo-commits] r10356 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Mar 5 11:41:41 EET 2007
Author: jobi
Date: 2007-03-05 11:41:37 +0200 (Mon, 05 Mar 2007)
New Revision: 10356

Modified:
   projects/haf/trunk/hildon-desktop/ChangeLog
   projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-applet.c
   projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c
   projects/haf/trunk/hildon-desktop/src/hd-home-window.c
Log:

2007-03-05  Johan Bilien  <johan.bilien at nokia.com>

	* libhildondesktop/hildon-home-applet.c:
	- Made the drag handle have its own icon
	* libhildondesktop/hildon-home-window.c:
	- Do not go to layout mode if it sucks
	* src/hd-home-window.c:
	- Added "layout-mode-sucks" property
	- adapt menus to this property



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-03-05 09:09:29 UTC (rev 10355)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-03-05 09:41:37 UTC (rev 10356)
@@ -1,5 +1,15 @@
-2007-03-01  Johan Bilien  <johan.bilien at nokia.com>
+2007-03-05  Johan Bilien  <johan.bilien at nokia.com>
 
+	* libhildondesktop/hildon-home-applet.c:
+	- Made the drag handle have its own icon
+	* libhildondesktop/hildon-home-window.c:
+	- Do not go to layout mode if it sucks
+	* src/hd-home-window.c:
+	- Added "layout-mode-sucks" property
+	- adapt menus to this property
+
+2007-03-05  Johan Bilien  <johan.bilien at nokia.com>
+
 	* libhildondesktop/hildon-home-titlebar.c:
 	- add image as child rather than button icon for the accept and
 	cancel buttons (hildon themes don't support button icons)

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-applet.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-applet.c	2007-03-05 09:09:29 UTC (rev 10355)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-applet.c	2007-03-05 09:41:37 UTC (rev 10356)
@@ -45,6 +45,9 @@
 #define APPLET_CLOSE_BUTTON_ICON    "qgn_home_layoutmode_close"
 #define APPLET_CLOSE_BUTTON_WIDTH   26
 #define APPLET_CLOSE_BUTTON_HEIGHT  26
+#define APPLET_DRAG_HANDLE_ICON     "qgn_list_presence_invisible"
+#define APPLET_DRAG_HANDLE_WIDTH    26
+#define APPLET_DRAG_HANDLE_HEIGHT   26
 
 #define GRID_SIZE                       10
 
@@ -82,6 +85,7 @@
   GdkWindow    *close_button_window;
   GdkPixbuf    *resize_handle;
   GdkWindow    *resize_handle_window;
+  GdkPixbuf    *drag_handle;
   GdkWindow    *drag_handle_window;
 
   GdkWindow    *event_window;
@@ -359,7 +363,7 @@
                                  "Layout mode sucks",
                                  "Whether or not the layout mode "
                                  "is considered to suck",
-                                 /*TRUE well really it should*/ FALSE,
+                                 TRUE,
                                  G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
   g_object_class_install_property (object_class,
@@ -417,6 +421,20 @@
       g_error_free (error);
       error = NULL;
     }
+  
+  applet_class->drag_handle =
+      gtk_icon_theme_load_icon (icon_theme,
+                                APPLET_DRAG_HANDLE_ICON,
+                                APPLET_DRAG_HANDLE_WIDTH,
+                                GTK_ICON_LOOKUP_NO_SVG,
+                                &error);
+  if (error)
+    {
+      g_warning ("Could not load drag handle icon: %s", error->message);
+      applet_class->drag_handle = NULL;
+      g_error_free (error);
+      error = NULL;
+    }
 }
 
 static void
@@ -445,14 +463,17 @@
       priv->resize_handle = klass->resize_handle;
     }
   
+  if (klass->drag_handle)
+    {
+      g_object_ref (klass->drag_handle);
+      priv->drag_handle = klass->drag_handle;
+    }
+  
   gtk_widget_add_events (GTK_WIDGET (self), GDK_VISIBILITY_NOTIFY_MASK);
 
   /* FIXME remove this from the theme */
   gtk_widget_set_name (GTK_WIDGET (self), "osso-home-layoutmode-applet");
 
-  fprintf (stderr, "Layout mode sucks: %i\n", priv->layout_mode_sucks);
-
-
 }
 
 static void
@@ -632,7 +653,7 @@
         {
           priv->drag_handle_window =
               hildon_home_applet_create_icon_window (HILDON_HOME_APPLET (widget),
-                                                     priv->resize_handle,
+                                                     priv->drag_handle,
                                                      0,
                                                      0);
           

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c	2007-03-05 09:09:29 UTC (rev 10355)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c	2007-03-05 09:41:37 UTC (rev 10356)
@@ -122,8 +122,13 @@
           HildonHomeWindow *window)
 {
   HildonHomeWindowPrivate *priv = window->priv;
+  gboolean layout_mode_sucks;
 
-  if (HILDON_IS_HOME_AREA (priv->applet_area))
+  g_object_get (applet,
+                "layout-mode-sucks", &layout_mode_sucks,
+                NULL);
+
+  if (HILDON_IS_HOME_AREA (priv->applet_area) && !layout_mode_sucks)
     {
       HildonHomeArea *area =  HILDON_HOME_AREA (priv->applet_area);
 

Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-03-05 09:09:29 UTC (rev 10355)
+++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-03-05 09:41:37 UTC (rev 10356)
@@ -80,6 +80,8 @@
   osso_context_t   *osso_context;
 #endif
 
+  gboolean          layout_mode_sucks;
+
   GtkWidget        *settings_item;
   GtkWidget        *settings_menu;
   GtkWidget        *layout_mode_item;
@@ -99,6 +101,7 @@
 {
   PROP_0,
   PROP_OSSO_CONTEXT,
+  PROP_LAYOUT_MODE_SUCKS,
   PROP_BACKGROUND
 };
 
@@ -241,6 +244,15 @@
   g_object_class_install_property (object_class,
                                    PROP_BACKGROUND,
                                    pspec);
+  
+  pspec = g_param_spec_boolean ("layout-mode-sucks",
+                                "Layout mode sucks",
+                                "Whether or not the layout mode sucks",
+                                TRUE,
+                               (G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+  g_object_class_install_property (object_class,
+                                   PROP_LAYOUT_MODE_SUCKS,
+                                   pspec);
 
   g_type_class_add_private (window_class, sizeof (HDHomeWindowPrivate));
 
@@ -357,6 +369,7 @@
                              GParamSpec   *pspec)
 {
   HDHomeWindow *window = HD_HOME_WINDOW (gobject);
+  HDHomeWindowPrivate *priv = HD_HOME_WINDOW_GET_PRIVATE (gobject);
 
   switch (prop_id)
   {
@@ -374,6 +387,10 @@
                                      g_value_get_object (value));
       break;
 
+    case PROP_LAYOUT_MODE_SUCKS:
+      priv->layout_mode_sucks = g_value_get_boolean (value);
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -395,6 +412,10 @@
       g_value_set_pointer (value, priv->osso_context);
       break;
 #endif
+    
+    case PROP_LAYOUT_MODE_SUCKS:
+      g_value_set_boolean (value, priv->layout_mode_sucks);
+      break;
       
     case PROP_BACKGROUND:
       g_value_set_object (value, priv->background);
@@ -674,22 +695,45 @@
   priv->settings_item = menu_item;
   priv->settings_menu = settings_menu;
 
-  /* layout mode */
-  menu_item = gtk_menu_item_new_with_label (HH_MENU_EDIT_LAYOUT);
-  g_signal_connect_swapped (menu_item, "activate",
-                            G_CALLBACK (hildon_home_window_layout_mode_activate),
-                            window);
+  if (!priv->layout_mode_sucks)
+    {
+      /* layout mode */
+      menu_item = gtk_menu_item_new_with_label (HH_MENU_EDIT_LAYOUT);
+      g_signal_connect_swapped (menu_item, "activate",
+                                G_CALLBACK (hildon_home_window_layout_mode_activate),
+                                window);
 #ifdef HAVE_LIBHILDON
-  hildon_helper_set_insensitive_message (menu_item, HH_LAYOUT_UNAVAIL_BANNER);
+      hildon_helper_set_insensitive_message (menu_item, HH_LAYOUT_UNAVAIL_BANNER);
 #else
-  g_signal_connect_swapped (menu_item, "insensitive-press",
-                            G_CALLBACK (hd_home_window_layout_insensitive_press_cb),
-                            window);
+      g_signal_connect_swapped (menu_item, "insensitive-press",
+                                G_CALLBACK (hd_home_window_layout_insensitive_press_cb),
+                                window);
 #endif
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-  gtk_widget_set_sensitive (menu_item, FALSE);
-  gtk_widget_show (menu_item);
-  priv->layout_mode_item = menu_item;
+      gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+      gtk_widget_set_sensitive (menu_item, FALSE);
+      gtk_widget_show (menu_item);
+      priv->layout_mode_item = menu_item;
+    }
+
+  else
+    {
+      GtkWidget *area;
+
+      menu_item = gtk_check_menu_item_new_with_label (HH_MENU_LAYOUT_SNAP_TO_GRID);
+      gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+      g_signal_connect_swapped (menu_item, "toggled",
+                                G_CALLBACK (hd_home_window_snap_toggled),
+                                window);
+      area = hildon_home_window_get_area (HILDON_HOME_WINDOW (window));
+      if (area)
+        {
+          gboolean snap_to_grid;
+          g_object_get (G_OBJECT (area), "snap-to-grid", &snap_to_grid, NULL);
+          gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+                                          snap_to_grid);
+        }
+      gtk_widget_show (menu_item);
+    }
   
   /* tools sub-menu */
   tools_menu = gtk_menu_new ();


More information about the maemo-commits mailing list