2008-09-24 Alberto Garcia <agarcia@igalia.com>
authorAlberto Garcia <agarcia@igalia.com>
Wed, 24 Sep 2008 14:13:05 +0000 (14:13 +0000)
committerAlberto Garcia <agarcia@igalia.com>
Wed, 24 Sep 2008 14:13:05 +0000 (14:13 +0000)
* src/hildon-app-menu.h
* src/hildon-app-menu.c
(hildon_app_menu_insert, hildon_app_menu_reorder_child)
(hildon_app_menu_append, hildon_app_menu_prepend):
New methods to prepend, insert and move items in the menu.

ChangeLog
src/hildon-app-menu.c
src/hildon-app-menu.h

index 8cf93d5..115fcf5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-09-24  Alberto Garcia  <agarcia@igalia.com>
+
+       * src/hildon-app-menu.h
+       * src/hildon-app-menu.c
+       (hildon_app_menu_insert, hildon_app_menu_reorder_child)
+       (hildon_app_menu_append, hildon_app_menu_prepend):
+       New methods to prepend, insert and move items in the menu.
+
 2008-09-24  Claudio Saavedra  <csaavedra@igalia.com>
 
        * src/hildon-wizard-dialog.c:
index 2b62e3b..3a34920 100644 (file)
@@ -121,15 +121,17 @@ hildon_app_menu_new                             (void)
 }
 
 /**
- * hildon_app_menu_append:
+ * hildon_app_menu_insert:
  * @menu : A #HildonAppMenu
  * @item : A #GtkButton to add to the #HildonAppMenu
+ * @position : The position in the item list where @item is added (from 0 to n-1).
  *
- * Adds the @item to @menu.
+ * Adds @item to @menu at the position indicated by @position.
  */
 void
-hildon_app_menu_append                          (HildonAppMenu *menu,
-                                                 GtkButton *item)
+hildon_app_menu_insert                          (HildonAppMenu *menu,
+                                                 GtkButton     *item,
+                                                 gint           position)
 {
     HildonAppMenuPrivate *priv;
 
@@ -140,7 +142,7 @@ hildon_app_menu_append                          (HildonAppMenu *menu,
 
     /* Add the item to the menu */
     gtk_widget_show (GTK_WIDGET (item));
-    priv->buttons = g_list_append (priv->buttons, item);
+    priv->buttons = g_list_insert (priv->buttons, item, position);
     hildon_app_menu_construct_child (menu);
 
     /* Close the menu when the button is clicked */
@@ -149,6 +151,64 @@ hildon_app_menu_append                          (HildonAppMenu *menu,
 }
 
 /**
+ * hildon_app_menu_append:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to add to the #HildonAppMenu
+ *
+ * Adds @item to the end of the menu's item list.
+ */
+void
+hildon_app_menu_append                          (HildonAppMenu *menu,
+                                                 GtkButton     *item)
+{
+    hildon_app_menu_insert (menu, item, -1);
+}
+
+/**
+ * hildon_app_menu_prepend:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to add to the #HildonAppMenu
+ *
+ * Adds @item to the beginning of the menu's item list.
+ */
+void
+hildon_app_menu_prepend                         (HildonAppMenu *menu,
+                                                 GtkButton     *item)
+{
+    hildon_app_menu_insert (menu, item, 0);
+}
+
+/**
+ * hildon_app_menu_reorder_child:
+ * @menu : A #HildonAppMenu
+ * @item : A #GtkButton to move
+ * @position : The new position to place @item (from 0 to n-1).
+ *
+ * Moves a #GtkButton to a new position within #HildonAppMenu.
+ */
+void
+hildon_app_menu_reorder_child                   (HildonAppMenu *menu,
+                                                 GtkButton     *item,
+                                                 gint           position)
+{
+    HildonAppMenuPrivate *priv;
+
+    g_return_if_fail (HILDON_IS_APP_MENU (menu));
+    g_return_if_fail (GTK_IS_BUTTON (item));
+    g_return_if_fail (position >= 0);
+
+    priv = HILDON_APP_MENU_GET_PRIVATE (menu);
+
+    g_return_if_fail (g_list_find (priv->buttons, item));
+
+    /* Move the item */
+    priv->buttons = g_list_remove (priv->buttons, item);
+    priv->buttons = g_list_insert (priv->buttons, item, position);
+
+    hildon_app_menu_construct_child (menu);
+}
+
+/**
  * hildon_app_menu_add_filter:
  * @menu : A #HildonAppMenu
  * @filter : A #GtkButton to add to the #HildonAppMenu.
index 2226948..998eb31 100644 (file)
@@ -66,11 +66,25 @@ hildon_app_menu_new                             (void);
 
 void
 hildon_app_menu_append                          (HildonAppMenu *menu,
-                                                 GtkButton *item);
+                                                 GtkButton     *item);
+
+void
+hildon_app_menu_prepend                         (HildonAppMenu *menu,
+                                                 GtkButton     *item);
+
+void
+hildon_app_menu_insert                          (HildonAppMenu *menu,
+                                                 GtkButton     *item,
+                                                 gint           position);
+
+void
+hildon_app_menu_reorder_child                   (HildonAppMenu *menu,
+                                                 GtkButton     *item,
+                                                 gint           position);
 
 void
 hildon_app_menu_add_filter                      (HildonAppMenu *menu,
-                                                 GtkButton *filter);
+                                                 GtkButton     *filter);
 
 G_END_DECLS