[maemo-commits] [maemo-commits] r18834 - in projects/haf/trunk/hildon-control-panel: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Fri Jul 3 11:58:11 EEST 2009
Author: paradi
Date: 2009-07-03 11:58:08 +0300 (Fri, 03 Jul 2009)
New Revision: 18834

Modified:
   projects/haf/trunk/hildon-control-panel/ChangeLog
   projects/haf/trunk/hildon-control-panel/src/hcp-app-view.c
   projects/haf/trunk/hildon-control-panel/src/hcp-app.c
   projects/haf/trunk/hildon-control-panel/src/hcp-app.h
   projects/haf/trunk/hildon-control-panel/src/hcp-grid.c
   projects/haf/trunk/hildon-control-panel/src/hcp-grid.h
   projects/haf/trunk/hildon-control-panel/src/hcp-window.c
Log:
Reverted changes to old UI.



Modified: projects/haf/trunk/hildon-control-panel/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-control-panel/ChangeLog	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/ChangeLog	2009-07-03 08:58:08 UTC (rev 18834)
@@ -1,3 +1,7 @@
+2009-07-03 Peter Aradi <peter.aradi at maemo.org>
+
+	Reverted changes to old UI.
+
 2009-07-01 Aapo Kojo <aapo.kojo at nokia.com>
 
 	Release 2.2.10

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-app-view.c
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-app-view.c	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-app-view.c	2009-07-03 08:58:08 UTC (rev 18834)
@@ -75,25 +75,47 @@
 {
   GtkWidget *grid;
 
-  grid = hcp_grid_new ();
+  grid = hcp_grid_new (HILDON_UI_MODE_NORMAL);
   gtk_widget_set_name (grid, "hildon-control-panel-grid");
 
   return grid;
 }
 
+static GtkWidget*
+hcp_app_view_create_separator (const gchar *label)
+{
+  GtkWidget *hbox = gtk_hbox_new (FALSE, 5);
+  GtkWidget *separator_1 = gtk_hseparator_new ();
+  GtkWidget *separator_2 = gtk_hseparator_new ();
+  GtkWidget *label_1 = gtk_label_new (label);
+
+  gtk_widget_set_name (separator_1, "hildon-control-panel-separator");
+  gtk_widget_set_name (separator_2, "hildon-control-panel-separator");
+  gtk_box_pack_start (GTK_BOX(hbox), separator_1, TRUE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX(hbox), label_1, FALSE, FALSE, 5);
+  gtk_box_pack_start (GTK_BOX(hbox), separator_2, TRUE, TRUE, 0);
+
+  return hbox;
+}
+
 static HCPApp *
-hcp_app_view_get_selected_app (GtkWidget *widget, gpointer pos)
+hcp_app_view_get_selected_app (GtkWidget *widget, GtkTreePath *path)
 {
   GtkTreeModel *model;
   HCPApp *app = NULL;
   GtkTreeIter iter;
-  gint item_pos = GPOINTER_TO_INT(pos);
+  gint item_pos;
 
   g_return_val_if_fail (widget, NULL);
-  g_return_val_if_fail (HCP_IS_GRID (widget), NULL);
+  g_return_val_if_fail (GTK_IS_ICON_VIEW (widget), NULL);
+  g_return_val_if_fail (path, NULL);
 
-  model = hcp_grid_get_model (HCP_GRID(widget));
+  model = gtk_icon_view_get_model (GTK_ICON_VIEW (widget));
 
+  if (path == NULL) return NULL;
+
+  item_pos = gtk_tree_path_get_indices (path) [0];
+
   if (gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (model), 
                                      &iter, NULL, item_pos)) {
     gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 
@@ -106,11 +128,12 @@
 
 static void
 hcp_app_view_launch_app (GtkWidget *widget, 
-                         gpointer pos,
+                         GtkTreePath *path, 
                          gpointer user_data)
 {
-  HCPApp *app = hcp_app_view_get_selected_app (widget, pos);
 
+  HCPApp *app = hcp_app_view_get_selected_app (widget, path);
+
   /* important for state saving of executed app */
   g_signal_emit (G_OBJECT (widget->parent), 
                  signals[SIGNAL_FOCUS_CHANGED], 
@@ -129,7 +152,7 @@
   gchar *name = NULL;
   gchar *text_domain = NULL;
 
-  store = hcp_grid_get_model(grid);
+  store = gtk_icon_view_get_model (GTK_ICON_VIEW (grid));
 
   g_object_get (G_OBJECT (app),
                 "name", &name,
@@ -162,7 +185,7 @@
   /* If a group has items */
   if (category->apps)
   {
-    GtkWidget *grid, *frame;
+    GtkWidget *grid, *separator;
     GtkListStore *store;
     GList *focus_chain = NULL;
 
@@ -172,20 +195,21 @@
     g_signal_connect (grid, "item-activated",
                       G_CALLBACK (hcp_app_view_launch_app),
                       NULL);
+  
+    /* If we are creating a group with a defined name, we use
+     * it in the separator */
+    separator = hcp_app_view_create_separator (_(category->name));
 
-    /* frame title is used instead of separator */
-    frame = gtk_frame_new (_(category->name));
-    gtk_frame_set_label_align (GTK_FRAME(frame), 0.5, 0.5);
-    gtk_container_add (GTK_CONTAINER(frame), grid);
+    /* Pack the separator and the corresponding grid to the vbox */
+    gtk_box_pack_start (GTK_BOX (view), separator, FALSE, FALSE, 0);
+    gtk_box_pack_start (GTK_BOX (view), grid, FALSE, TRUE, 0);
 
-    gtk_box_pack_start (GTK_BOX (view), frame, FALSE, TRUE, 0);
-
     gtk_container_get_focus_chain (GTK_CONTAINER (view), &focus_chain);
     focus_chain = g_list_append (focus_chain, grid);
     gtk_container_set_focus_chain (GTK_CONTAINER (view), focus_chain);
     g_list_free (focus_chain);
 
-    hcp_grid_set_model (HCP_GRID(grid), 
+    gtk_icon_view_set_model (GTK_ICON_VIEW (grid), 
                              GTK_TREE_MODEL (store));
 
     g_slist_foreach (category->apps,
@@ -208,7 +232,7 @@
 
   g_object_set (G_OBJECT (view), 
                 "homogeneous", FALSE,
-                "spacing", 35, 
+                "spacing", 6, 
                 NULL);
 }
 

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-app.c
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-app.c	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-app.c	2009-07-03 08:58:08 UTC (rev 18834)
@@ -494,6 +494,27 @@
 }
 
 void
+hcp_app_focus (HCPApp *app)
+{
+  HCPAppPrivate *priv;
+
+  g_return_if_fail (app);
+  g_return_if_fail (HCP_IS_APP (app));
+
+  priv = app->priv;
+
+  if (priv->grid) 
+  {
+    GtkTreePath *path;
+
+    gtk_widget_grab_focus (priv->grid);
+    path = gtk_tree_path_new_from_indices (priv->item_pos, -1);
+    gtk_icon_view_select_path (GTK_ICON_VIEW (priv->grid), path);
+    gtk_tree_path_free (path);
+  }
+}
+
+void
 hcp_app_save_state (HCPApp *app)
 {
   HCPAppPrivate *priv;

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-app.h
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-app.h	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-app.h	2009-07-03 08:58:08 UTC (rev 18834)
@@ -70,6 +70,8 @@
 void         hcp_app_launch         (HCPApp   *app, 
                                      gboolean  user_activated);
 
+void         hcp_app_focus          (HCPApp   *app); 
+
 void         hcp_app_save_state     (HCPApp   *app);
 
 gboolean     hcp_app_is_running     (HCPApp   *app);

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-grid.c
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-grid.c	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-grid.c	2009-07-03 08:58:08 UTC (rev 18834)
@@ -39,41 +39,22 @@
 #define HCP_GRID_GET_PRIVATE(object) \
   (G_TYPE_INSTANCE_GET_PRIVATE ((object), HCP_TYPE_GRID, HCPGridPrivate))
 
-G_DEFINE_TYPE (HCPGrid, hcp_grid, GTK_TYPE_TABLE)
+G_DEFINE_TYPE (HCPGrid, hcp_grid, GTK_TYPE_ICON_VIEW)
 
-#define HCP_GRID_ITEM_WIDTH  372
+#define HCP_GRID_ITEM_WIDTH  328 
 #define HCP_GRID_X_PADDING   4
 #define HCP_GRID_Y_PADDING   2
-#define HCP_ICON_SIZE        HILDON_ICON_PIXEL_SIZE_FINGER
-typedef enum
-{
-  SIGNAL_ITEM_ACTIVATED,
-  N_SIGNALS
-} HCPGridSignals;
+#define HCP_ICON_SIZE        HILDON_ICON_PIXEL_SIZE_THUMB
 
-static gint signals[N_SIGNALS];
-
 struct _HCPGridPrivate {
+  GtkCellRenderer *text_cell;
+  GtkCellRenderer *pixbuf_cell;
   gboolean         can_move_focus;
   gboolean         focused_in;
+/*  gint             row_height;*/
   gint             icon_size;
-  GtkTreeModel     *model;
 };
 
-static void
-hcp_grid_button_clicked (GtkButton* button,
-                         gpointer pos)
-{
-  g_return_if_fail (button);
-  g_return_if_fail (GTK_IS_BUTTON(button));
-
-  GtkWidget* grid = gtk_widget_get_parent (GTK_WIDGET(button));
-
-  g_return_if_fail (grid);
-  g_return_if_fail (HCP_IS_GRID(grid));
-  g_signal_emit (grid, signals[SIGNAL_ITEM_ACTIVATED], 0, pos);
-}
-
 static gboolean
 hcp_grid_update_icon (GtkTreeModel *model,
                       GtkTreePath  *path,
@@ -89,6 +70,8 @@
   g_return_val_if_fail (user_data, TRUE);
   g_return_val_if_fail (HCP_IS_GRID (user_data), TRUE);
 
+/*  priv = HCP_GRID (user_data)->priv; */
+
   gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
                       HCP_STORE_APP, &app,
                       -1);
@@ -118,8 +101,9 @@
 
     icon_pixbuf = gtk_icon_theme_load_icon (icon_theme,
                                             HCP_DEFAULT_ICON_BASENAME,
-                                            HCP_ICON_SIZE,
-                                            0,
+                                        /*    priv->icon_size, */
+     					    HCP_ICON_SIZE,
+                                            0, 
                                             &error);
 
     if (icon_pixbuf == NULL) 
@@ -133,44 +117,6 @@
                       HCP_STORE_ICON, icon_pixbuf, 
                       -1);
 
-  /* refreshing buttons */
-  gchar *l;
-  gtk_tree_model_get (GTK_TREE_MODEL (model), iter, 
-                      HCP_STORE_LABEL, &l,
-                      -1);
-
-  GtkWidget *label = gtk_label_new(l);
-
-  GtkWidget *image = gtk_image_new_from_pixbuf (icon_pixbuf);
-
-  GtkWidget *hbox = gtk_hbox_new (FALSE, HILDON_MARGIN_DEFAULT);
-
-  GtkWidget *align = gtk_alignment_new (0,0.5,0,0);
-  gtk_alignment_set_padding (GTK_ALIGNMENT(align), 0, 0, 0, HILDON_MARGIN_DOUBLE);
-
-  gtk_widget_set_size_request (label, 290, -1);
-  gtk_misc_set_alignment (GTK_MISC(label), 0,0.5);
-
-  gtk_box_pack_start (GTK_BOX(hbox), image, FALSE, FALSE, 0);
-  gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
-  gtk_label_set_line_wrap (GTK_LABEL(label), FALSE);
-
-  gtk_container_add (GTK_CONTAINER(align), hbox);
-
-  GtkWidget *button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT);
-  gtk_widget_set_size_request (button, HCP_GRID_ITEM_WIDTH, -1);
-
-  gtk_container_add (GTK_CONTAINER(button), align);
-
-  gint *i;
-  i = gtk_tree_path_get_indices (path);
-  gtk_table_attach_defaults (GTK_TABLE(user_data), button, *i%2, *i%2+1, *i/2, *i/2+1);
-
-  g_signal_connect (button, "clicked",
-                      G_CALLBACK (hcp_grid_button_clicked),
-                      GINT_TO_POINTER(*i));
-
   g_free (icon);
 
   return FALSE;
@@ -179,15 +125,6 @@
 static void
 hcp_grid_class_init (HCPGridClass *klass)
 {
-  signals[SIGNAL_ITEM_ACTIVATED] =
-        g_signal_new ("item-activated",
-                      G_OBJECT_CLASS_TYPE (klass),
-                      G_SIGNAL_RUN_FIRST,
-                      0,
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__POINTER,
-                      G_TYPE_NONE, 1,
-                      G_TYPE_POINTER);
 
   g_type_class_add_private (klass, sizeof (HCPGridPrivate));
 
@@ -197,54 +134,69 @@
 hcp_grid_init (HCPGrid *grid)
 {
   grid->priv = HCP_GRID_GET_PRIVATE (grid);
-
+ 
   grid->priv->can_move_focus = FALSE;
   grid->priv->focused_in = FALSE;
 
   grid->priv->icon_size = HCP_ICON_SIZE;
 
-  g_object_set (grid, 
-		"n-rows", 1, 
-		"n-columns", 2, 
-		"homogeneous", TRUE,
+  grid->priv->pixbuf_cell = gtk_cell_renderer_pixbuf_new ();
+
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (grid), 
+		  	      grid->priv->pixbuf_cell, 
+			      FALSE);
+
+  g_object_set (grid->priv->pixbuf_cell, 
+		"xpad", HCP_GRID_X_PADDING, 
+		"ypad", HCP_GRID_Y_PADDING, 
                 NULL);
 
-/*  gtk_table_set_col_spacings (GTK_TABLE(grid), 8); */
+  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (grid),
+                                  grid->priv->pixbuf_cell, 
+			          "pixbuf", 0,
+                                  NULL);
 
-}
+  grid->priv->text_cell = gtk_cell_renderer_text_new ();
+  gtk_cell_renderer_set_fixed_size (grid->priv->text_cell, 248,-1);
 
-GtkTreeModel *
-hcp_grid_get_model (HCPGrid *grid)
-{
-  g_return_val_if_fail (HCP_GRID(grid), NULL);
+  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (grid), 
+		  	      grid->priv->text_cell, 
+			      FALSE);
 
-  return grid->priv->model;
-}
+  g_object_set (grid->priv->text_cell, 
+                "yalign", 0.5,
+                NULL);
 
-void
-hcp_grid_set_model (HCPGrid *grid, GtkTreeModel *model)
-{
-  g_return_if_fail (HCP_GRID(grid));
-  g_return_if_fail (model == NULL || GTK_IS_TREE_MODEL (model));
+  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (grid),
+                                  grid->priv->text_cell, 
+				  "text", 1, 
+				  NULL);  
 
-  if (grid->priv->model == model)
-    return;
+  gtk_icon_view_set_margin (GTK_ICON_VIEW (grid), 0);
 
-/* TODO free up previous model. disconnect handlers? */
+  gtk_icon_view_set_column_spacing (GTK_ICON_VIEW (grid), 8);
+  gtk_icon_view_set_row_spacing (GTK_ICON_VIEW (grid), 0);
+  gtk_icon_view_set_spacing (GTK_ICON_VIEW (grid), 6);
 
-  grid->priv->model = model;
-}
+  gtk_icon_view_set_orientation (GTK_ICON_VIEW (grid), 
+                                 GTK_ORIENTATION_HORIZONTAL);
 
+  gtk_icon_view_set_columns (GTK_ICON_VIEW (grid),
+                             HCP_GRID_NUM_COLUMNS);
 
+  /* FIXME: This should not be hardcoded. It should be defined 
+     based on HCPAppView width. */
+  gtk_icon_view_set_item_width (GTK_ICON_VIEW (grid), 
+		  		HCP_GRID_ITEM_WIDTH);
+ 
+}
 void
 hcp_grid_refresh_icons (HCPGrid* grid)
 {
   GtkTreeModel* model;
 
-  model = hcp_grid_get_model (HCP_GRID(grid));
-
+  model = gtk_icon_view_get_model (GTK_ICON_VIEW (grid));
   gtk_tree_model_foreach (model, hcp_grid_update_icon, grid);
-
   GtkRequisition req;
   gtk_widget_size_request (GTK_WIDGET(grid), &req);
   GtkAllocation alloc = {0,0,req.width, req.height};
@@ -253,7 +205,7 @@
 }
 
 GtkWidget *
-hcp_grid_new (void)
+hcp_grid_new (HildonUIMode uimode)
 {
   GtkWidget *grid = g_object_new (HCP_TYPE_GRID, NULL);
 

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-grid.h
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-grid.h	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-grid.h	2009-07-03 08:58:08 UTC (rev 18834)
@@ -25,6 +25,7 @@
 #define HCP_GRID_H
 
 #include <gtk/gtk.h>
+
 G_BEGIN_DECLS
 
 typedef struct _HCPGridPrivate HCPGridPrivate;
@@ -41,12 +42,12 @@
 #define HCP_GRID_NUM_COLUMNS       2
 
 typedef struct {
-  GtkTable parent;
+  GtkIconView parent;
   HCPGridPrivate* priv;
 } HCPGrid;
 
 typedef struct {
-  GtkTableClass parent_class;
+  GtkIconViewClass parent_class;
 } HCPGridClass;
 
 GType hcp_grid_get_type (void);
@@ -58,10 +59,9 @@
   HCP_STORE_NUM_COLUMNS
 } HCPStoreColumn;
 
-GtkWidget* hcp_grid_new (void);
+GtkWidget* hcp_grid_new (HildonUIMode);
 void hcp_grid_refresh_icons (HCPGrid*);
-void hcp_grid_set_model (HCPGrid *grid, GtkTreeModel *model);
-GtkTreeModel* hcp_grid_get_model (HCPGrid *grid);
+
 G_END_DECLS
 
 #endif /* HCP_GRID_H */

Modified: projects/haf/trunk/hildon-control-panel/src/hcp-window.c
===================================================================
--- projects/haf/trunk/hildon-control-panel/src/hcp-window.c	2009-07-03 06:59:59 UTC (rev 18833)
+++ projects/haf/trunk/hildon-control-panel/src/hcp-window.c	2009-07-03 08:58:08 UTC (rev 18834)
@@ -475,6 +475,9 @@
 
   g_free (focused);
 
+  if (app)
+    hcp_app_focus (app);
+
   hcp_window_enforce_state (window);
 }
 
@@ -511,10 +514,28 @@
 
   priv = window->priv;
 
+  /* Why is this not read from the gtkrc?? -- Jobi */
+#if 0 
+  /* Control Panel Grid */
+  gtk_rc_parse_string ("  style \"hildon-control-panel-grid\" {"
+              "    CPGrid::n_columns = 2"
+          "    CPGrid::label_pos = 1"
+	      "    GtkWidget::hildon-mode = 1"
+          "  }"
+          " widget \"*.hildon-control-panel-grid\" "
+          "    style \"hildon-control-panel-grid\"");
+  /* Separators style */
+  gtk_rc_parse_string ("  style \"hildon-control-panel-separator\" {"
+          "    GtkSeparator::hildonlike-drawing = 1"
+                      "  }"
+          " widget \"*.hildon-control-panel-separator\" "
+                      "    style \"hildon-control-panel-separator\"");
+#endif
+  
   program = HILDON_PROGRAM (hildon_program_get_instance ());
 
   hildon_program_add_window (program, HILDON_WINDOW (window));
-
+  
   gtk_window_set_title (GTK_WINDOW (window),
                         HCP_TITLE);
 
@@ -569,11 +590,11 @@
   gtk_container_add (GTK_CONTAINER (window), scrolled_window);
 
   GtkWidget *align = gtk_alignment_new (0,0,0,0);
+  gtk_alignment_set_padding (GTK_ALIGNMENT(align),0,0, 68,0);
 
-  gtk_alignment_set_padding (GTK_ALIGNMENT(align),0,0, HILDON_MARGIN_TRIPLE,HILDON_MARGIN_TRIPLE);
-
   gtk_container_add (GTK_CONTAINER(align), GTK_WIDGET(priv->view));
 
+  /*gtk_container_add (GTK_CONTAINER(view), align); */
   hildon_pannable_area_add_with_viewport (
           HILDON_PANNABLE_AREA (scrolled_window),
           align);

More information about the maemo-commits mailing list