[maemo-commits] [maemo-commits] r9351 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Jan 25 17:57:44 EET 2007
- Previous message: [maemo-commits] r9350 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Next message: [maemo-commits] r9352 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart Date: 2007-01-25 17:57:42 +0200 (Thu, 25 Jan 2007) New Revision: 9351 Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.h Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/Makefile.am Log: * libhildondesktop/hildon-desktop-panel-window-dialog.[ch]: - Added new panel window with dialog hint * libhildondesktop/Makefile.am * ChangeLog updated. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-25 14:54:23 UTC (rev 9350) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/ChangeLog 2007-01-25 15:57:42 UTC (rev 9351) @@ -1,5 +1,10 @@ 2007-01-24 Moises Martinez <moises.martinez at nokia.com> + * libhildondesktop/hildon-desktop-panel-window-dialog.[ch]: + - Added new panel window with dialog hint + +2007-01-24 Moises Martinez <moises.martinez at nokia.com> + * libhildondesktop/hildon-desktop-panel-expandable.c: - Fixed positioning in extended panel (GtkTable). - Fixed positioning in extended window. Modified: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/Makefile.am =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/Makefile.am 2007-01-25 14:54:23 UTC (rev 9350) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/Makefile.am 2007-01-25 15:57:42 UTC (rev 9351) @@ -12,6 +12,7 @@ hildon-desktop-item-socket.h \ hildon-desktop-plugin.h \ hildon-desktop-panel-window.h \ + hildon-desktop-panel-window-dialog.h \ hildon-desktop-panel.h \ hildon-desktop-multiscreen.h \ hildon-desktop-panel-expandable.h \ @@ -79,6 +80,8 @@ hildon-desktop-panel.c \ hildon-desktop-panel-window.h \ hildon-desktop-panel-window.c \ + hildon-desktop-panel-window-dialog.h \ + hildon-desktop-panel-window-dialog.c \ hildon-desktop-panel-expandable.h \ hildon-desktop-panel-expandable.c \ hildon-desktop-multiscreen.h \ Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c 2007-01-25 14:54:23 UTC (rev 9350) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.c 2007-01-25 15:57:42 UTC (rev 9351) @@ -0,0 +1,203 @@ +/* + * This file is part of maemo-af-desktop + * + * Copyright (C) 2006 Nokia Corporation. + * + * Author: Moises Martinez <moises.martinez at nokia.com> + * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#include <gtk/gtk.h> +#include <gdk/gdk.h> +#include <libhildonwm/hd-wm.h> + +#include "hildon-desktop-panel-window-dialog.h" +#include "hildon-desktop-panel-expandable.h" + +#define HILDON_DESKTOP_PANEL_WINDOW_DIALOG_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG, HildonDesktopPanelWindowDialogPrivate)) + +G_DEFINE_TYPE (HildonDesktopPanelWindowDialog, hildon_desktop_panel_window_dialog, HILDON_DESKTOP_TYPE_PANEL_WINDOW); + +enum +{ + PROP_0, + PROP_FULLSCREEN +}; + +struct _HildonDesktopPanelWindowDialogPrivate +{ + gboolean show_in_fullscreen; + + HDWM *hdwm; +}; + +static GObject *hildon_desktop_panel_window_dialog_constructor (GType gtype, + guint n_params, + GObjectConstructParam *params); + +/*static void set_focus_forall_cb (GtkWidget *widget, gpointer data);*/ +static void hildon_desktop_panel_window_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); +static void hildon_desktop_panel_window_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); + +static void hildon_desktop_window_dialog_fullscreen_cb (HDWM *hdwm, gboolean fullscreen, gpointer _window); + +static void +hildon_desktop_panel_window_dialog_class_init (HildonDesktopPanelWindowDialogClass *dskwindow_class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (dskwindow_class); + + g_type_class_add_private (dskwindow_class, sizeof (HildonDesktopPanelWindowDialogPrivate)); + + object_class->constructor = hildon_desktop_panel_window_dialog_constructor; + object_class->set_property = hildon_desktop_panel_window_dialog_set_property; + object_class->get_property = hildon_desktop_panel_window_dialog_get_property; + + g_object_class_install_property (object_class, + PROP_FULLSCREEN, + g_param_spec_boolean( + "show-fullscreen", + "show-fullscreen", + "Window is showed in fullscreen" + "dock panel", + FALSE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + +} + +static void +hildon_desktop_panel_window_dialog_init (HildonDesktopPanelWindowDialog *window) +{ + g_return_if_fail (window); + + window->priv = HILDON_DESKTOP_PANEL_WINDOW_DIALOG_GET_PRIVATE (window); + + window->priv->hdwm = hd_wm_get_singleton (); + + /* FIXME: what do we do with focus??? */ +} + +static GObject * +hildon_desktop_panel_window_dialog_constructor (GType gtype, + guint n_params, + GObjectConstructParam *params) +{ + GObject *object; + HildonDesktopPanelWindowDialog *window; + GtkWidget *widget; + + object = G_OBJECT_CLASS (hildon_desktop_panel_window_dialog_parent_class)->constructor (gtype, + n_params, + params); + + widget = GTK_WIDGET (object); + window = HILDON_DESKTOP_PANEL_WINDOW_DIALOG (object); + + GTK_WINDOW (window)->type = GTK_WINDOW_TOPLEVEL; + + gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); + gtk_window_set_decorated (GTK_WINDOW (window), FALSE); + + if (HILDON_DESKTOP_WINDOW (window)->container != NULL) + gtk_container_remove (GTK_CONTAINER (window), GTK_WIDGET (HILDON_DESKTOP_WINDOW (window)->container)); + + gtk_widget_push_composite_child (); + + HILDON_DESKTOP_WINDOW (window)->container = + g_object_new (HILDON_DESKTOP_TYPE_PANEL_EXPANDABLE, "items_row", 7 ,NULL); + + gtk_container_add (GTK_CONTAINER (window), + GTK_WIDGET (HILDON_DESKTOP_WINDOW (window)->container)); + + gtk_widget_show (GTK_WIDGET (HILDON_DESKTOP_WINDOW (window)->container)); + + gdk_window_set_transient_for (GTK_WIDGET (window)->window, gdk_get_default_root_window ()); + + gtk_widget_pop_composite_child (); + + g_signal_connect (window->priv->hdwm, + "fullscreen", + G_CALLBACK (hildon_desktop_window_dialog_fullscreen_cb), + (gpointer)window); + + return object; +} + +static void +hildon_desktop_window_dialog_fullscreen_cb (HDWM *hdwm, gboolean fullscreen, gpointer _window) +{ + HildonDesktopPanelWindowDialog *window = HILDON_DESKTOP_PANEL_WINDOW_DIALOG (_window); + + window->priv->show_in_fullscreen = fullscreen; + g_object_notify (G_OBJECT (window),"show-fullscreen"); + + if (fullscreen) + { + /*TODO: Unmap the window set the hint to DOCK and map again*/ + } + else + { + /*TODO: Unmap the window set the hint to DIALOG and map again */ + } +} +static void +hildon_desktop_panel_window_dialog_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + HildonDesktopPanelWindowDialog *window = HILDON_DESKTOP_PANEL_WINDOW_DIALOG (object); + + switch (prop_id) + { + case PROP_FULLSCREEN: + g_value_set_boolean (value, window->priv->show_in_fullscreen); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +hildon_desktop_panel_window_dialog_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + HildonDesktopPanelWindowDialog *window = HILDON_DESKTOP_PANEL_WINDOW_DIALOG (object); + + switch (prop_id) + { + case PROP_FULLSCREEN: + window->priv->show_in_fullscreen = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +GtkWidget * +hildon_desktop_panel_window_dialog_new () +{ + GtkWidget *window; + window = g_object_new (HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG, NULL); + return window; +} Added: projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.h =================================================================== --- projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.h 2007-01-25 14:54:23 UTC (rev 9350) +++ projects/haf/branches/maemo-af-desktop/hildon-desktop/libhildondesktop/hildon-desktop-panel-window-dialog.h 2007-01-25 15:57:42 UTC (rev 9351) @@ -0,0 +1,64 @@ +/* + * This file is part of maemo-af-desktop + * + * Copyright (C) 2006 Nokia Corporation. + * + * Author: Moises Martinez <moises.martinez at nokia.com> + * Contact: Karoliina Salminen <karoliina.t.salminen at nokia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +#ifndef __HILDON_DESKTOP_PANEL_WINDOW_DIALOG_H__ +#define __HILDON_DESKTOP_PANEL_WINDOW_DIALOG_H__ + +#include <gtk/gtkwindow.h> + +#include <libhildondesktop/hildon-desktop-panel-window.h> + +G_BEGIN_DECLS + +typedef struct _HildonDesktopPanelWindowDialog HildonDesktopPanelWindowDialog; +typedef struct _HildonDesktopPanelWindowDialogClass HildonDesktopPanelWindowDialogClass; +typedef struct _HildonDesktopPanelWindowDialogPrivate HildonDesktopPanelWindowDialogPrivate; + +#define HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG (hildon_desktop_panel_window_dialog_get_type()) +#define HILDON_DESKTOP_PANEL_WINDOW_DIALOG(obj) (GTK_CHECK_CAST (obj, HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG, HildonDesktopPanelWindowDialog)) +#define HILDON_DESKTOP_PANEL_WINDOW_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG, HildonDesktopPanelWindowDialogClass)) +#define HILDON_DESKTOP_IS_PANEL_WINDOW_DIALOG(obj) (GTK_CHECK_TYPE (obj, HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG)) +#define HILDON_DESKTOP_IS_PANEL_WINDOW_DIALOG_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), HILDON_DESKTOP_TYPE_PANEL_WINDOW_DIALOG)) + +struct _HildonDesktopPanelWindowDialog +{ + HildonDesktopPanelWindow parent; + + HildonDesktopPanelWindowDialogPrivate *priv; +}; + +struct _HildonDesktopPanelWindowDialogClass +{ + HildonDesktopPanelWindowClass parent_class; + +}; + +GType hildon_desktop_panel_window_dialog_get_type (void); + +GtkWidget *hildon_desktop_panel_window_dialog_new (void); + +G_END_DECLS + +#endif /* __HILDON_DESKTOP_PANEL_WINDOW_DIALOG_H__ */
- Previous message: [maemo-commits] r9350 - in projects/haf/trunk/maemo-af-desktop: . hildon-navigator
- Next message: [maemo-commits] r9352 - in projects/haf/branches/maemo-af-desktop/hildon-desktop: . libhildondesktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]