[maemo-commits] [maemo-commits] r11520 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue May 8 17:05:52 EEST 2007
- Previous message: [maemo-commits] r11518 - in projects/haf/trunk/hildon-theme-layout-4: . data
- Next message: [maemo-commits] r11521 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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)); }
- Previous message: [maemo-commits] r11518 - in projects/haf/trunk/hildon-theme-layout-4: . data
- Next message: [maemo-commits] r11521 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]