[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.org
Date: Thu Jan 25 17:57:44 EET 2007
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__ */


More information about the maemo-commits mailing list