From 6ea1ff260dc3aaa87024daf08dac706a48b39d84 Mon Sep 17 00:00:00 2001 From: Alberto Garcia Date: Wed, 24 Sep 2008 14:13:05 +0000 Subject: [PATCH] 2008-09-24 Alberto Garcia * 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 | 8 ++++++ src/hildon-app-menu.c | 70 +++++++++++++++++++++++++++++++++++++++++++++---- src/hildon-app-menu.h | 18 +++++++++++-- 3 files changed, 89 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8cf93d5..115fcf5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-09-24 Alberto Garcia + + * 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 * src/hildon-wizard-dialog.c: diff --git a/src/hildon-app-menu.c b/src/hildon-app-menu.c index 2b62e3b..3a34920 100644 --- a/src/hildon-app-menu.c +++ b/src/hildon-app-menu.c @@ -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. diff --git a/src/hildon-app-menu.h b/src/hildon-app-menu.h index 2226948..998eb31 100644 --- a/src/hildon-app-menu.h +++ b/src/hildon-app-menu.h @@ -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 -- 1.7.9.5