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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue May 8 17:05:52 EEST 2007
Author: jobi
Date: 2007-05-08 17:05:51 +0300 (Tue, 08 May 2007)
New Revision: 11520

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

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

	* libhildondesktop/hildon-home-titlebar.[ch]:
	- removed all layout mode-related logic
	* libhildondesktop/hildon-home-window.[ch]:
	- added "menu" and "title" properties, proxied to the titlebar
	- added _toggle_menu, proxied to the titlebar
	* src/hd-home-window.c:
	- act on the window rather than the titlebar



Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/ChangeLog	2007-05-08 14:05:51 UTC (rev 11520)
@@ -1,5 +1,15 @@
 2007-05-08  Johan Bilien  <johan.bilien at nokia.com>
 
+	* libhildondesktop/hildon-home-titlebar.[ch]:
+	- removed all layout mode-related logic
+	* libhildondesktop/hildon-home-window.[ch]:
+	- added "menu" and "title" properties, proxied to the titlebar
+	- added _toggle_menu, proxied to the titlebar
+	* src/hd-home-window.c:
+	- act on the window rather than the titlebar
+
+2007-05-08  Johan Bilien  <johan.bilien at nokia.com>
+
 	* src/hd-home-window.[ch], libhildondesktop/hildon-home-window.[ch]:
 	- moved all notions of layout mode to the HDHomeWindow
 	- moved all notions of system state to the HDHomeWindow

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.c	2007-05-08 14:05:51 UTC (rev 11520)
@@ -44,7 +44,6 @@
 #endif
 
 #include "hildon-home-titlebar.h"
-#include "hildon-home-area.h"
 #include "hildon-home-window.h"
 
 #define HILDON_HOME_TITLEBAR_HEIGHT	60
@@ -69,52 +68,20 @@
 
 #define HH_TITLEBAR_MENU_WIDGET_NAME    "menu_force_with_corners"
 
-
-GType
-hildon_home_titlebar_mode_get_type (void)
-{
-  static GType etype = 0;
-
-  if (!etype)
-    {
-      static const GEnumValue values[] =
-      {
-        { HILDON_DESKTOP_HOME_TITLEBAR_NORMAL, "HILDON_DESKTOP_HOME_TITLEBAR_NORMAL", "normal" },
-	{ HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT, "HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT", "layout" },
-	{ 0, NULL, NULL }
-      };
-
-      etype = g_enum_register_static ("HildonHomeTitlebarMode", values);
-    }
-
-  return etype;
-}
-
 #define HILDON_HOME_TITLEBAR_GET_PRIVATE(obj) \
 (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_HOME_TITLEBAR, HildonHomeTitlebarPrivate))
 
 struct _HildonHomeTitlebarPrivate
 {
-  HildonHomeTitlebarMode mode;
-  
-  GtkWidget *label;
+  GtkWidget    *label;
 
-  gchar *normal_text;
-  gchar *layout_text;
-  
-  GtkWidget *menu;
-  GtkWidget *tools_menu;
-  GtkWidget *settings_menu;
+  gchar        *title;
 
-  GtkWidget *select_applets_item;
-  GtkWidget *layout_mode_item;
-  GtkWidget *settings_item;
+  GtkWidget    *menu;
 
-  GtkWidget *layout_menu;
+  GtkWidget    *button1;
+  GtkWidget    *button2;
 
-  GtkWidget *layout_cancel;
-  GtkWidget *layout_accept;
-
   guint menu_key_pressed : 1;
   guint menu_popup_status : 1;
 };
@@ -123,19 +90,14 @@
 {
   PROP_0,
 
-  PROP_MODE,
   PROP_MENU,
-  PROP_MENU_TITLE,
-  PROP_LAYOUT_MENU,
-  PROP_LAYOUT_MENU_TITLE
+  PROP_TITLE,
 };
 
 enum
 {
-  LAYOUT_ACCEPT,
-  LAYOUT_CANCEL,
-  APPLET_ADDED,
-  APPLET_REMOVED,
+  BUTTON1_CLICKED,
+  BUTTON2_CLICKED,
 
   LAST_SIGNAL
 };
@@ -149,8 +111,7 @@
 {
   HildonHomeTitlebarPrivate *priv = HILDON_HOME_TITLEBAR (object)->priv;
 
-  g_free (priv->normal_text);
-  g_free (priv->layout_text);
+  g_free (priv->title);
 
   G_OBJECT_CLASS (hildon_home_titlebar_parent_class)->finalize (object);
 }
@@ -162,9 +123,6 @@
 
   if (titlebar->priv->menu)
     gtk_menu_detach (GTK_MENU (titlebar->priv->menu));
-  
-  if (titlebar->priv->layout_menu)
-    gtk_menu_detach (GTK_MENU (titlebar->priv->layout_menu));
 
   GTK_OBJECT_CLASS (hildon_home_titlebar_parent_class)->destroy (object);
 }
@@ -188,13 +146,13 @@
 {
   GtkWidget *widget = GTK_WIDGET (user_data);
   gint h_offset, v_offset;
-  
+
   gdk_window_get_origin (widget->window, x, y);
   gtk_widget_style_get (GTK_WIDGET (menu),
 			"horizontal-offset", &h_offset,
 			"vertical-offset", &v_offset,
 			NULL);
- 
+
   *x += widget->allocation.x + h_offset;
   *y += widget->allocation.y + widget->allocation.height + v_offset;
 
@@ -202,17 +160,15 @@
 }
 
 static void
-layout_accept_clicked_cb (GtkWidget *widget,
-			  gpointer   data)
+button1_clicked_cb (HildonHomeTitlebar *titlebar)
 {
-  g_signal_emit (data, titlebar_signals[LAYOUT_ACCEPT], 0);
+  g_signal_emit (titlebar, titlebar_signals[BUTTON1_CLICKED], 0);
 }
 
 static void
-layout_cancel_clicked_cb (GtkWidget *widget,
-			  gpointer   data)
+button2_clicked_cb (HildonHomeTitlebar *titlebar)
 {
-  g_signal_emit (data, titlebar_signals[LAYOUT_CANCEL], 0);
+  g_signal_emit (titlebar, titlebar_signals[BUTTON2_CLICKED], 0);
 }
 
 static gboolean
@@ -246,9 +202,9 @@
     {
       return TRUE;
     }
-      
+
   hildon_home_titlebar_toggle_menu (titlebar);
-  
+
   return FALSE;
 }
 
@@ -262,27 +218,14 @@
 
   switch (prop_id)
     {
-    case PROP_MODE:
-      hildon_home_titlebar_set_mode (titlebar,
-		                     g_value_get_enum (value));
-      break;
     case PROP_MENU:
       hildon_home_titlebar_set_menu (titlebar,
                                      GTK_WIDGET (g_value_get_object (value)));
       break;
-    case PROP_MENU_TITLE:
-      hildon_home_titlebar_set_menu_title (titlebar,
-                                           g_value_get_string (value));
+    case PROP_TITLE:
+      hildon_home_titlebar_set_title (titlebar,
+                                      g_value_get_string (value));
       break;
-    case PROP_LAYOUT_MENU:
-      hildon_home_titlebar_set_layout_menu (titlebar,
-                                            GTK_WIDGET (g_value_get_object (value)));
-      break;
-
-    case PROP_LAYOUT_MENU_TITLE:
-      hildon_home_titlebar_set_layout_menu_title (titlebar,
-                                                  g_value_get_string (value));
-      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -299,21 +242,12 @@
 
   switch (prop_id)
     {
-    case PROP_MODE:
-      g_value_set_enum (value, titlebar->priv->mode);
-      break;
     case PROP_MENU:
       g_value_set_object (value, titlebar->priv->menu);
       break;
-    case PROP_MENU_TITLE:
-      g_value_set_string (value, titlebar->priv->normal_text);
+    case PROP_TITLE:
+      g_value_set_string (value, titlebar->priv->title);
       break;
-    case PROP_LAYOUT_MENU:
-      g_value_set_object (value, titlebar->priv->layout_menu);
-      break;
-    case PROP_LAYOUT_MENU_TITLE:
-      g_value_set_string (value, titlebar->priv->layout_text);
-      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
       break;
@@ -337,70 +271,39 @@
   widget_class->button_press_event = hildon_home_titlebar_button_press_event;
   widget_class->button_release_event = hildon_home_titlebar_button_release_event;
 
-  pspec = g_param_spec_enum ("mode",
-                             "Mode",
-                             "Titlebar mode",
-                             HILDON_TYPE_HOME_TITLEBAR_MODE,
-                             HILDON_DESKTOP_HOME_TITLEBAR_NORMAL,
-                             G_PARAM_READWRITE);
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_MODE,
-                                   pspec);
-
   pspec = g_param_spec_object ("menu",
                                "Menu",
-                               "Menu used in normal mode",
+                               "Menu",
                                GTK_TYPE_MENU,
                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
   g_object_class_install_property (gobject_class,
                                    PROP_MENU,
                                    pspec);
-  
-  pspec = g_param_spec_object ("layout-menu",
-                               "Layout mode menu",
-                               "Menu used in layout mode",
-                               GTK_TYPE_MENU,
-                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
-  g_object_class_install_property (gobject_class,
-                                   PROP_LAYOUT_MENU,
-                                   pspec);
-  
-  pspec = g_param_spec_string ("menu-title",
-                               "Menu title",
-                               "Menu title used in normal mode",
+  pspec = g_param_spec_string ("title",
+                               "Title",
+                               "Title",
                                "",
                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
   g_object_class_install_property (gobject_class,
-                                   PROP_MENU_TITLE,
+                                   PROP_TITLE,
                                    pspec);
-  
-  pspec = g_param_spec_string ("layout-menu-title",
-                               "Layout mode menu title",
-                               "Menu title used in layout mode",
-                               "",
-                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
 
-  g_object_class_install_property (gobject_class,
-                                   PROP_LAYOUT_MENU_TITLE,
-                                   pspec);
-
-  titlebar_signals[LAYOUT_ACCEPT] =
-      g_signal_new ("layout-accept",
+  titlebar_signals[BUTTON1_CLICKED] =
+      g_signal_new ("button1-clicked",
                     G_TYPE_FROM_CLASS (klass),
                     G_SIGNAL_RUN_LAST,
-                    G_STRUCT_OFFSET (HildonHomeTitlebarClass, layout_accept),
+                    G_STRUCT_OFFSET (HildonHomeTitlebarClass, button1_clicked),
                     NULL, NULL,
                     g_cclosure_marshal_VOID__VOID,
                     G_TYPE_NONE, 0);
-  titlebar_signals[LAYOUT_CANCEL] =
-      g_signal_new ("layout-cancel",
+  titlebar_signals[BUTTON2_CLICKED] =
+      g_signal_new ("button2-clicked",
                     G_TYPE_FROM_CLASS (klass),
                     G_SIGNAL_RUN_LAST,
-                    G_STRUCT_OFFSET (HildonHomeTitlebarClass, layout_cancel),
+                    G_STRUCT_OFFSET (HildonHomeTitlebarClass, button2_clicked),
                     NULL, NULL,
                     g_cclosure_marshal_VOID__VOID,
                     G_TYPE_NONE, 0);
@@ -417,7 +320,6 @@
 
   titlebar->priv = priv = HILDON_HOME_TITLEBAR_GET_PRIVATE (titlebar);
 
-  priv->mode = HILDON_DESKTOP_HOME_TITLEBAR_NORMAL;
   priv->menu_key_pressed = FALSE;
   priv->menu_popup_status = FALSE;
 
@@ -442,7 +344,7 @@
   gtk_box_pack_start (GTK_BOX (hbox), align, FALSE, FALSE, 0);
   gtk_widget_show (align);
 
-  priv->label = gtk_label_new (priv->normal_text);
+  priv->label = gtk_label_new (priv->title);
   gtk_widget_set_composite_name (priv->label, "hildon-home-titlebar-label");
   gtk_misc_set_alignment (GTK_MISC (priv->label), 0.0, 0.5);
 
@@ -478,31 +380,34 @@
   gtk_container_add (GTK_CONTAINER (align), hbox);
   gtk_widget_show (hbox);
 
-  priv->layout_accept = gtk_button_new ();
-  gtk_container_add (GTK_CONTAINER (priv->layout_accept),
+  priv->button1 = gtk_button_new ();
+  gtk_container_add (GTK_CONTAINER (priv->button1),
                      gtk_image_new_from_icon_name (LAYOUT_MODE_ACCEPT_BUTTON,
                                                    GTK_ICON_SIZE_BUTTON));
-  gtk_widget_set_size_request (priv->layout_accept,
+  gtk_widget_set_size_request (priv->button1,
                                LAYOUT_MODE_BUTTON_SIZE,
                                LAYOUT_MODE_BUTTON_SIZE);
-  g_signal_connect (priv->layout_accept, "clicked",
-                    G_CALLBACK (layout_accept_clicked_cb),
-                    titlebar);
-  gtk_box_pack_start (GTK_BOX (hbox), priv->layout_accept, FALSE, FALSE, 0);
+  g_signal_connect_swapped (priv->button1, "clicked",
+                            G_CALLBACK (button1_clicked_cb),
+                            titlebar);
 
 
-  priv->layout_cancel = gtk_button_new ();
-  gtk_container_add (GTK_CONTAINER (priv->layout_cancel),
+  gtk_box_pack_start (GTK_BOX (hbox), priv->button1, FALSE, FALSE, 0);
+
+
+  priv->button2 = gtk_button_new ();
+  gtk_container_add (GTK_CONTAINER (priv->button2),
                      gtk_image_new_from_icon_name (LAYOUT_MODE_CANCEL_BUTTON,
                                                    GTK_ICON_SIZE_BUTTON));
-  gtk_widget_set_size_request (priv->layout_cancel,
+  gtk_widget_set_size_request (priv->button2,
                                LAYOUT_MODE_BUTTON_SIZE,
                                LAYOUT_MODE_BUTTON_SIZE);
-  g_signal_connect (priv->layout_cancel, "clicked",
-                    G_CALLBACK (layout_cancel_clicked_cb),
-                    titlebar);
-  gtk_box_pack_start (GTK_BOX (hbox), priv->layout_cancel, FALSE, FALSE, 0);
 
+  gtk_box_pack_start (GTK_BOX (hbox), priv->button2, FALSE, FALSE, 0);
+  g_signal_connect_swapped (priv->button2, "clicked",
+                            G_CALLBACK (button2_clicked_cb),
+                            titlebar);
+
   gtk_widget_pop_composite_child ();
 }
 
@@ -510,79 +415,18 @@
 hildon_home_titlebar_new ()
 {
   return g_object_new (HILDON_TYPE_HOME_TITLEBAR,
-                       "mode", HILDON_DESKTOP_HOME_TITLEBAR_NORMAL,
                        NULL);
 }
 
-
 void
-hildon_home_titlebar_set_mode (HildonHomeTitlebar     *titlebar,
-                               HildonHomeTitlebarMode  mode)
-{
-  HildonHomeTitlebarPrivate *priv;
-
-  g_return_if_fail (HILDON_IS_HOME_TITLEBAR (titlebar));
-
-  priv = titlebar->priv;
-
-  if (priv->mode != mode)
-    {
-      g_object_ref (titlebar);
-
-      priv->mode = mode;
-
-      switch (mode)
-        {
-	  case HILDON_DESKTOP_HOME_TITLEBAR_NORMAL:
-              gtk_label_set_text (GTK_LABEL (priv->label),
-                                  priv->normal_text);
-
-              gtk_widget_hide (priv->layout_accept);
-              gtk_widget_hide (priv->layout_cancel);
-              break;
-          case HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT:
-              gtk_label_set_text (GTK_LABEL (priv->label),
-                                  priv->layout_text);
-
-              gtk_widget_show_all (priv->layout_accept);
-              gtk_widget_show_all (priv->layout_cancel);
-              gtk_widget_grab_focus (priv->layout_cancel);
-              break;
-          default:
-              g_assert_not_reached ();
-              break;
-        }
-
-      g_object_notify (G_OBJECT (titlebar), "mode");
-      g_object_unref (titlebar);
-    }
-}
-
-void
 hildon_home_titlebar_toggle_menu (HildonHomeTitlebar *titlebar)
 {
-  GtkMenu * menu = NULL;
-  HildonHomeTitlebarPrivate *priv = titlebar->priv;
+  HildonHomeTitlebarPrivate    *priv = titlebar->priv;
+  GtkMenu                      *menu = GTK_MENU (priv->menu);
 
-  switch (priv->mode)
-    {
-      case HILDON_DESKTOP_HOME_TITLEBAR_NORMAL:
-          menu = GTK_MENU (priv->menu);
-          break;
-      case HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT:
-          menu = GTK_MENU (priv->layout_menu);
-          break;
-      default:
-          g_assert_not_reached ();
-          break;
-    }
-
   if (!menu)
     {
-      g_warning ("Titlebar mode `%s', but no menu defined",
-                 priv->mode == HILDON_DESKTOP_HOME_TITLEBAR_NORMAL ? "normal"
-                 : "layout");
-
+      g_warning ("Titlebar menu toggled but no menu defined");
       return;
     }
 
@@ -640,81 +484,27 @@
 }
 
 void
-hildon_home_titlebar_set_layout_menu (HildonHomeTitlebar *titlebar,
-                                      GtkWidget *menu)
+hildon_home_titlebar_set_title (HildonHomeTitlebar *titlebar,
+                                const gchar *label)
 {
   HildonHomeTitlebarPrivate *priv;
 
   g_return_if_fail (HILDON_IS_HOME_TITLEBAR (titlebar));
-  
-  if (!GTK_IS_MENU (menu))
-    return;
 
-  priv = HILDON_HOME_TITLEBAR_GET_PRIVATE (titlebar);
-
-  if (priv->layout_menu)
-    gtk_menu_detach (GTK_MENU (priv->layout_menu));
-
-  priv->layout_menu = menu;
-
-  gtk_widget_set_name (menu, HH_TITLEBAR_MENU_WIDGET_NAME);
-  g_signal_connect (menu, "deactivate",
-                    G_CALLBACK (titlebar_menu_deactivate_cb),
-                    titlebar);
-
-  g_object_notify (G_OBJECT (titlebar), "layout-menu");
-}
-
-void
-hildon_home_titlebar_set_menu_title (HildonHomeTitlebar *titlebar,
-                                     const gchar *label)
-{
-  HildonHomeTitlebarPrivate *priv;
-
-  g_return_if_fail (HILDON_IS_HOME_TITLEBAR (titlebar));
-
   if (!label)
     return;
 
   priv = HILDON_HOME_TITLEBAR_GET_PRIVATE (titlebar);
 
-  if (!priv->normal_text || !g_str_equal (priv->normal_text, label))
+  if (!priv->title || !g_str_equal (priv->title, label))
     {
-      g_free (priv->normal_text);
+      g_free (priv->title);
 
-      priv->normal_text = g_strdup (label);
-      
-      if (priv->mode == HILDON_DESKTOP_HOME_TITLEBAR_NORMAL)
-        gtk_label_set_text (GTK_LABEL (priv->label), priv->normal_text);
-      
-      g_object_notify (G_OBJECT (titlebar), "menu-title");
-    }
+      priv->title = g_strdup (label);
 
-}
+      gtk_label_set_text (GTK_LABEL (priv->label), label);
 
-void
-hildon_home_titlebar_set_layout_menu_title (HildonHomeTitlebar *titlebar,
-                                            const gchar *label)
-{
-  HildonHomeTitlebarPrivate *priv;
-
-  g_return_if_fail (HILDON_IS_HOME_TITLEBAR (titlebar));
-
-  if (!label)
-    return;
-
-  priv = HILDON_HOME_TITLEBAR_GET_PRIVATE (titlebar);
-
-  if (!priv->layout_text || !g_str_equal (priv->layout_text, label))
-    {
-      g_free (priv->layout_text);
-
-      priv->layout_text = g_strdup (label);
-
-      if (priv->mode == HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT)
-        gtk_label_set_text (GTK_LABEL (priv->label), priv->layout_text);
-      
-      g_object_notify (G_OBJECT (titlebar), "layout-menu-title");
+      g_object_notify (G_OBJECT (titlebar), "title");
     }
 
 }

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.h
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.h	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-titlebar.h	2007-05-08 14:05:51 UTC (rev 11520)
@@ -1,8 +1,8 @@
 /* -*- mode:C; c-file-style:"gnu"; -*- */
 /*
- * This file is part of maemo-af-desktop
+ * This file is part of hildon-desktop
  *
- * Copyright (C) 2006 Nokia Corporation.
+ * Copyright (C) 2006, 2007 Nokia Corporation.
  *
  * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com>
  *
@@ -39,13 +39,6 @@
 
 G_BEGIN_DECLS
 
-typedef enum {
-  HILDON_DESKTOP_HOME_TITLEBAR_NORMAL,
-  HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT
-} HildonHomeTitlebarMode;
-
-GType hildon_home_titlebar_mode_get_type (void) G_GNUC_CONST;
-
 typedef struct _HildonHomeTitlebar		HildonHomeTitlebar;
 typedef struct _HildonHomeTitlebarClass		HildonHomeTitlebarClass;
 typedef struct _HildonHomeTitlebarPrivate	HildonHomeTitlebarPrivate;
@@ -61,43 +54,22 @@
 {
   GtkEventBoxClass parent_class;
 
-  void (*layout_accept)           (HildonHomeTitlebar *titlebar);
-  void (*layout_cancel)           (HildonHomeTitlebar *titlebar);
-  
-  void (*select_applets_activate) (HildonHomeTitlebar *titlebar);
-  void (*layout_mode_activate)    (HildonHomeTitlebar *titlebar);
-  void (*applet_activate)         (HildonHomeTitlebar *titlebar,
-		  	           const gchar        *applet_path);
-  void (*help_activate)           (HildonHomeTitlebar *titlebar);
-  void (*set_background_activate) (HildonHomeTitlebar *titlebar);
-  
-  void (*applet_added)            (HildonHomeTitlebar *titlebar,
-                                   HildonHomeArea     *area);
-  void (*applet_removed)          (HildonHomeTitlebar *titlebar,
-                                   HildonHomeArea     *area);
+  void (*button1_clicked)           (HildonHomeTitlebar *titlebar);
+  void (*button2_clicked)           (HildonHomeTitlebar *titlebar);
+
 };
 
 GType      hildon_home_titlebar_get_type        (void) G_GNUC_CONST;
 GtkWidget *hildon_home_titlebar_new             (void);
 
-void       hildon_home_titlebar_set_mode        (HildonHomeTitlebar     *titlebar,
-						 HildonHomeTitlebarMode  mode);
-
-
 void       hildon_home_titlebar_toggle_menu     (HildonHomeTitlebar     *titlebar);
 
 void       hildon_home_titlebar_set_menu        (HildonHomeTitlebar     *titlebar,
                                                  GtkWidget              *menu);
 
-void       hildon_home_titlebar_set_layout_menu (HildonHomeTitlebar     *titlebar,
-                                                 GtkWidget              *menu);
 
-void        hildon_home_titlebar_set_menu_title (HildonHomeTitlebar     *titlebar,
-                                                 const gchar            *title);
-void        hildon_home_titlebar_set_layout_menu_title
-                                                 (HildonHomeTitlebar     *titlebar,
-                                                 const gchar            *title);
-
+void        hildon_home_titlebar_set_title (HildonHomeTitlebar     *titlebar,
+                                            const gchar            *title);
 G_END_DECLS
 
 #endif /* __HILDON_HOME_TITLEBAR_H__ */

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.c	2007-05-08 14:05:51 UTC (rev 11520)
@@ -44,6 +44,16 @@
 #define HILDON_HOME_WINDOW_GET_PRIVATE(obj) \
 (G_TYPE_INSTANCE_GET_PRIVATE ((obj), HILDON_TYPE_HOME_WINDOW, HildonHomeWindowPrivate))
 
+enum
+{
+  BUTTON1_CLICKED,
+  BUTTON2_CLICKED,
+
+  LAST_SIGNAL
+};
+
+static guint window_signals[LAST_SIGNAL] = { 0 };
+
 struct _HildonHomeWindowPrivate
 {
   GtkWidget    *titlebar;
@@ -61,7 +71,9 @@
 {
   PROP_0,
 
-  PROP_WORK_AREA
+  PROP_WORK_AREA,
+  PROP_TITLE,
+  PROP_MENU
 };
 
 static void
@@ -87,13 +99,24 @@
                                  const GValue *value,
                                  GParamSpec   *pspec)
 {
+  HildonHomeWindowPrivate      *priv = HILDON_HOME_WINDOW_GET_PRIVATE (gobject);
   switch (prop_id)
     {
+      case PROP_MENU:
+          hildon_home_window_set_menu (HILDON_HOME_WINDOW (gobject),
+                                       GTK_MENU (g_value_get_object (value)));
+          break;
       case PROP_WORK_AREA:
           hildon_home_window_set_work_area (HILDON_HOME_WINDOW (gobject),
                                             (GdkRectangle *)
                                               g_value_get_pointer (value));
           break;
+      case PROP_TITLE:
+          g_debug ("Setting title %s", g_value_get_string (value));
+          g_object_set (priv->titlebar,
+                        "title", g_value_get_string (value),
+                        NULL);
+          break;
       default:
           G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
           break;
@@ -113,9 +136,26 @@
 
   switch (prop_id)
     {
+      case PROP_MENU:
+            {
+              GtkWidget *menu;
+              menu = hildon_home_window_get_menu (HILDON_HOME_WINDOW (gobject));
+              g_value_set_object (value, menu);
+            }
+          break;
       case PROP_WORK_AREA:
           g_value_set_pointer (value, priv->work_area);
           break;
+      case PROP_TITLE:
+            {
+              gchar *title;
+              g_object_get (priv->titlebar,
+                            "title", &title,
+                            NULL);
+              g_value_set_string (value, title);
+            }
+          break;
+
       default:
           G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
           break;
@@ -311,6 +351,40 @@
                                    PROP_WORK_AREA,
                                    pspec);
 
+  pspec =  g_param_spec_object ("menu",
+                                "menu",
+                                "menu",
+                                GTK_TYPE_MENU,
+                                G_PARAM_READWRITE);
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_WORK_AREA,
+                                   pspec);
+
+  /* Overriden from GtkWindow */
+  g_object_class_override_property (gobject_class,
+                                    PROP_TITLE,
+                                    "title");
+
+  window_signals[BUTTON1_CLICKED] =
+      g_signal_new ("button1-clicked",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST,
+                    G_STRUCT_OFFSET (HildonHomeWindowClass, button1_clicked),
+                    NULL, NULL,
+                    g_cclosure_marshal_VOID__VOID,
+                    G_TYPE_NONE, 0);
+
+  window_signals[BUTTON2_CLICKED] =
+      g_signal_new ("button2-clicked",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST,
+                    G_STRUCT_OFFSET (HildonHomeWindowClass, button2_clicked),
+                    NULL, NULL,
+                    g_cclosure_marshal_VOID__VOID,
+                    G_TYPE_NONE, 0);
+
+
   g_type_class_add_private (klass, sizeof (HildonHomeWindowPrivate));
 }
 
@@ -371,12 +445,43 @@
                        NULL);
 }
 
-GtkWidget *hildon_home_window_get_titlebar (HildonHomeWindow *window)
+void
+hildon_home_window_set_menu (HildonHomeWindow *window, GtkMenu *menu)
 {
   HildonHomeWindowPrivate      *priv;
+  g_return_if_fail (HILDON_IS_HOME_WINDOW (window) &&
+                    GTK_IS_MENU (menu));
 
+  priv = HILDON_HOME_WINDOW_GET_PRIVATE (window);
+  g_object_set (priv->titlebar,
+                "menu", menu,
+                NULL);
+
+  g_object_notify (G_OBJECT (window), "menu");
+}
+
+GtkWidget *
+hildon_home_window_get_menu (HildonHomeWindow *window)
+{
+  HildonHomeWindowPrivate      *priv;
+  GtkWidget                    *menu;
   g_return_val_if_fail (HILDON_IS_HOME_WINDOW (window), NULL);
 
   priv = HILDON_HOME_WINDOW_GET_PRIVATE (window);
-  return priv->titlebar;
+  g_object_get (priv->titlebar,
+                "menu", &menu,
+                NULL);
+
+  return menu;
 }
+
+void
+hildon_home_window_toggle_menu (HildonHomeWindow *window)
+{
+  HildonHomeWindowPrivate      *priv;
+  g_return_if_fail (HILDON_IS_HOME_WINDOW (window));
+
+  priv = HILDON_HOME_WINDOW_GET_PRIVATE (window);
+
+  hildon_home_titlebar_toggle_menu (HILDON_HOME_TITLEBAR (priv->titlebar));
+}

Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.h
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.h	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-window.h	2007-05-08 14:05:51 UTC (rev 11520)
@@ -51,14 +51,21 @@
 {
   HildonDesktopWindowClass parent_class;
 
+  void (*button1_clicked)       (HildonHomeWindow *window);
+  void (*button2_clicked)       (HildonHomeWindow *window);
+
 };
 
 GType hildon_home_window_get_type                  (void) G_GNUC_CONST;
 
 GtkWidget *hildon_home_window_new                  (void);
 
-GtkWidget *hildon_home_window_get_titlebar         (HildonHomeWindow *window);
 
+GtkWidget *hildon_home_window_get_menu             (HildonHomeWindow *window);
+void       hildon_home_window_set_menu             (HildonHomeWindow *window,
+                                                    GtkMenu          *menu);
+void       hildon_home_window_toggle_menu          (HildonHomeWindow *window);
+
 G_END_DECLS
 
 #endif /* __HILDON_HOME_WINDOW_H__ */

Modified: projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/src/hd-home-l10n.h	2007-05-08 14:05:51 UTC (rev 11520)
@@ -37,9 +37,9 @@
 #define _KE_RECV(a)                 dgettext("ke-recv", (a))
 
 /* title bar menu */
-#define HH_MENU_TITLE               _MAD("home_ap_home_view")        
+#define HH_MENU_TITLE               _MAD("home_ap_home_view")
 
-#define HH_MENU_SELECT              _MAD("home_me_select_applets") 
+#define HH_MENU_SELECT              _MAD("home_me_select_applets")
 #define HH_MENU_APPLET_SETTINGS     _MAD("home_me_applet_settings")
 #define HH_MENU_EDIT_LAYOUT         _MAD("home_me_edit_layout")
 #define HH_MENU_TOOLS               _MAD("home_me_tools")
@@ -83,11 +83,11 @@
 #define HH_SET_BG_COLOR_TITLE     _MAD("home_fi_set_backgr_color")
 #define HH_SET_BG_IMAGE_TITLE     _MAD("home_fi_set_backgr_image")
 #define HH_SET_BG_IMAGE_NONE      _MAD("home_va_set_backgr_none")
-#define HH_SET_BG_MODE_TITLE      _MAD("home_fi_set_backgr_mode") 
+#define HH_SET_BG_MODE_TITLE      _MAD("home_fi_set_backgr_mode")
 #define HH_SET_BG_MODE_CENTERED   _MAD("home_va_set_backgr_centered")
 #define HH_SET_BG_MODE_SCALED     _MAD("home_va_set_backgr_scaled")
 #define HH_SET_BG_MODE_STRETCHED  _MAD("home_va_set_backgr_stretched")
-#define HH_SET_BG_MODE_TILED      _MAD("home_va_set_backgr_tiled") 
+#define HH_SET_BG_MODE_TILED      _MAD("home_va_set_backgr_tiled")
 
 /* generic notification dialogs */
 #define HH_LOW_MEMORY_TEXT          _KE_RECV("memr_ib_operation_disabled")

Modified: projects/haf/trunk/hildon-desktop/src/hd-home-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-05-08 12:02:55 UTC (rev 11519)
+++ projects/haf/trunk/hildon-desktop/src/hd-home-window.c	2007-05-08 14:05:51 UTC (rev 11520)
@@ -43,7 +43,6 @@
 #include <libhildonwm/hd-wm.h>
 
 #include <libhildondesktop/hildon-home-area.h>
-#include <libhildondesktop/hildon-home-titlebar.h>
 #include <libhildondesktop/hildon-desktop-home-item.h>
 
 #include <gtk/gtkcheckmenuitem.h>
@@ -100,6 +99,9 @@
 
   gboolean          layout_mode_sucks;
 
+  GtkWidget        *normal_menu;
+  GtkWidget        *layout_menu;
+
   GtkWidget        *settings_item;
   GtkWidget        *settings_menu;
   GtkWidget        *layout_mode_item;
@@ -271,6 +273,12 @@
 static void
 hd_home_window_load_area_layout (HDHomeWindow *window);
 
+static void
+hd_home_window_button1_clicked (HildonHomeWindow *window);
+
+static void
+hd_home_window_button2_clicked (HildonHomeWindow *window);
+
 #if 0
 static void
 hd_home_window_adjust_alpha_activate (HDHomeWindow *window);
@@ -299,9 +307,11 @@
   widget_class->realize   = hd_home_window_realize;
   widget_class->unrealize = hd_home_window_unrealize;
 
+  hhwindow_class->button1_clicked = hd_home_window_button1_clicked;
+  hhwindow_class->button2_clicked = hd_home_window_button2_clicked;
+
   window_class->layout_mode_accept = hd_home_window_layout_mode_accept;
   window_class->layout_mode_cancel = hd_home_window_layout_mode_cancel;
-
   window_class->background         = hd_home_window_background;
   window_class->system_inactivity  = hd_home_window_system_inactivity;
 
@@ -417,36 +427,29 @@
   HDHomeWindow         *window;
   HDHomeWindowPrivate  *priv;
   HildonHomeWindow     *hhwindow;
-  GtkWidget            *titlebar;
-  GtkWidget            *menu;
   GtkWidget            *area;
   HDHomeBackground     *background = NULL;
   GError               *error = NULL;
   gchar                *conffile;
 
-
   retval = G_OBJECT_CLASS (hd_home_window_parent_class)->constructor (gtype,
                                                                       n_params,
                                                                       params);
 
   window = HD_HOME_WINDOW (retval);
   hhwindow = HILDON_HOME_WINDOW (retval);
+  priv = HD_HOME_WINDOW_GET_PRIVATE (retval);
 
-  titlebar = hildon_home_window_get_titlebar (hhwindow);
+  priv->normal_menu = hd_home_window_build_main_menu (window);
+  hildon_home_window_set_menu (hhwindow, GTK_MENU (priv->normal_menu));
 
-  menu = hd_home_window_build_main_menu (window);
-  hildon_home_titlebar_set_menu (HILDON_HOME_TITLEBAR (titlebar), menu);
+  priv->layout_menu = hd_home_window_build_layout_menu (window);
 
-  menu = hd_home_window_build_layout_menu (window);
-  hildon_home_titlebar_set_layout_menu (HILDON_HOME_TITLEBAR (titlebar), menu);
+  g_object_set (window,
+                "menu", priv->normal_menu,
+                "title", HH_MENU_TITLE,
+                NULL);
 
-  hildon_home_titlebar_set_menu_title (HILDON_HOME_TITLEBAR (titlebar),
-                                       HH_MENU_TITLE);
-  hildon_home_titlebar_set_layout_menu_title (HILDON_HOME_TITLEBAR (titlebar),
-                                              HH_MENU_LAYOUT_TITLE);
-
-  priv = HD_HOME_WINDOW_GET_PRIVATE (retval);
-
   area = hildon_home_area_new ();
   gtk_widget_show (area);
 
@@ -473,15 +476,6 @@
                             G_CALLBACK (hd_home_window_layout_mode_ended),
                             window);
 
-  g_signal_connect_swapped (titlebar, "layout-accept",
-                            G_CALLBACK (hd_home_window_accept_layout),
-                            window);
-
-  g_signal_connect_swapped (titlebar, "layout-cancel",
-                            G_CALLBACK (hd_home_window_cancel_layout),
-                            window);
-
-
   if (priv->layout_mode_sucks)
     {
       g_signal_connect_swapped (area, "applet-change-end",
@@ -864,28 +858,19 @@
 hd_home_window_key_press_event (GtkWidget *widget,
                                 GdkEventKey *event)
 {
-  GtkWidget *titlebar =
-      hildon_home_window_get_titlebar (HILDON_HOME_WINDOW (widget));
-  GtkWidget *area = GTK_BIN (widget)->child;
-
   switch (event->keyval)
     {
       case HILDON_HARDKEY_MENU:
-          hildon_home_titlebar_toggle_menu (HILDON_HOME_TITLEBAR (titlebar));
+          hildon_home_window_toggle_menu (HILDON_HOME_WINDOW (widget));
           break;
       case HILDON_HARDKEY_ESC:
-          /* FIXME: Have a signal in HomeWindow instead */
-          if (hildon_home_area_get_layout_mode (HILDON_HOME_AREA(area)))
-            g_signal_emit_by_name (G_OBJECT (titlebar), "layout-cancel");
+          hd_home_window_cancel_layout (HD_HOME_WINDOW (widget));
 
           break;
       default:
-          if (GTK_WIDGET_CLASS (hd_home_window_parent_class)->key_press_event)
             return GTK_WIDGET_CLASS (
                      hd_home_window_parent_class)->key_press_event (widget,
                                                                     event);
-          else
-            return FALSE;
     }
 
   return TRUE;
@@ -1006,7 +991,6 @@
       gtk_widget_show (menu_item);
     }
 
-  
   menu_item = gtk_menu_item_new_with_label ("Adjust transparency");
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
   g_signal_connect_swapped (menu_item, "activate",
@@ -1071,7 +1055,7 @@
                             window);
   gtk_widget_show (mi);
 #endif
-  
+
   return menu;
 }
 
@@ -1173,7 +1157,7 @@
 {
   hd_home_window_applet_activate (window,
                                   HCP_PLUGIN_PATH_CALIBRATION);
-      
+
 }
 #endif
 
@@ -1266,6 +1250,19 @@
 }
 
 static void
+hd_home_window_button1_clicked (HildonHomeWindow *window)
+{
+  hd_home_window_accept_layout (HD_HOME_WINDOW (window));
+}
+
+static void
+hd_home_window_button2_clicked (HildonHomeWindow *window)
+{
+  hd_home_window_cancel_layout (HD_HOME_WINDOW (window));
+}
+
+
+static void
 hd_home_window_snap_toggled (HDHomeWindow *window, GtkCheckMenuItem *item)
 {
   GtkWidget *area;
@@ -1318,23 +1315,26 @@
 static void
 hd_home_window_layout_mode_started (HDHomeWindow *window)
 {
-  GtkWidget    *titlebar;
+  HDHomeWindowPrivate  *priv = HD_HOME_WINDOW_GET_PRIVATE (window);
 
-  titlebar = hildon_home_window_get_titlebar (HILDON_HOME_WINDOW (window));
-  hildon_home_titlebar_set_mode (HILDON_HOME_TITLEBAR (titlebar),
-                                 HILDON_DESKTOP_HOME_TITLEBAR_NORMAL);
+  g_object_set (window,
+                "title", HH_MENU_LAYOUT_TITLE,
+                "menu",  priv->layout_menu,
+                NULL);
 }
 
 static void
 hd_home_window_layout_mode_ended (HDHomeWindow *window)
 {
-  GtkWidget    *titlebar;
+  HDHomeWindowPrivate  *priv = HD_HOME_WINDOW_GET_PRIVATE (window);
 
   hd_home_window_destroy_banner (window);
 
-  titlebar = hildon_home_window_get_titlebar (HILDON_HOME_WINDOW (window));
-  hildon_home_titlebar_set_mode (HILDON_HOME_TITLEBAR (titlebar),
-                                 HILDON_DESKTOP_HOME_TITLEBAR_LAYOUT);
+  g_object_set (window,
+                "title", HH_MENU_TITLE,
+                "menu",  priv->normal_menu,
+                NULL);
+
 }
 
 static gboolean
@@ -1405,7 +1405,7 @@
     {
       HildonDesktopHomeItem    *applet;
       GtkWidget                *item;
-  
+
       if (!HILDON_DESKTOP_IS_HOME_ITEM (l->data))
         continue;
       applet = HILDON_DESKTOP_HOME_ITEM (l->data);
@@ -1438,25 +1438,9 @@
 
   if (priv->osso_context != osso_context)
   {
-    GtkWidget *titlebar;
-
     priv->osso_context = osso_context;
     g_object_notify (G_OBJECT (window), "osso-context");
 
-    titlebar = hildon_home_window_get_titlebar (HILDON_HOME_WINDOW (window));
-
-    if (HILDON_IS_HOME_TITLEBAR (titlebar))
-    {
-#ifdef HAVE_LIBHILDONHELP
-      g_signal_connect_swapped (titlebar, "help-activate",
-                                G_CALLBACK (hd_home_window_help_activate),
-                                window);
-#endif
-
-      g_signal_connect_swapped (titlebar, "applet-activate",
-                                G_CALLBACK (hd_home_window_applet_activate),
-                                window);
-    }
   }
 }
 #endif
@@ -1788,9 +1772,9 @@
   GtkWidget *note = NULL;
 
   note = hildon_note_new_information (NULL, text);
-		    
+
   gtk_dialog_run (GTK_DIALOG (note));
-  if (note) 
+  if (note)
     gtk_widget_destroy (GTK_WIDGET (note));
 }
 


More information about the maemo-commits mailing list