/**
 * hildon_app_menu_add_filter:
 * @menu : A #HildonAppMenu
 * @filter : A #GtkButton to add to the #HildonAppMenu.
 *
 * Adds the @filter to @menu.
 *
 * Since: 2.2
 */
void
hildon_app_menu_add_filter                      (HildonAppMenu *menu,
                                                 GtkButton *filter)
{
    HildonAppMenuPrivate *priv;

    g_return_if_fail (HILDON_IS_APP_MENU (menu));
    g_return_if_fail (GTK_IS_BUTTON (filter));

    priv = HILDON_APP_MENU_GET_PRIVATE(menu);

    /* Force widget size */
    hildon_gtk_widget_set_theme_size (GTK_WIDGET (filter),
                                      HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH);

    /* Add the filter to the menu */
    g_object_ref_sink (filter);
    priv->filters = g_list_append (priv->filters, filter);
    if (GTK_WIDGET_VISIBLE (filter))
        hildon_app_menu_repack_filters (menu);

    /* Enable accelerators */
    g_signal_connect (filter, "can-activate-accel", G_CALLBACK (can_activate_accel), NULL);

    /* Close the menu when the button is clicked */
    g_signal_connect_swapped (filter, "clicked", G_CALLBACK (gtk_widget_hide), menu);
    g_signal_connect (filter, "notify::visible", G_CALLBACK (filter_visibility_changed), menu);

    /* Remove filter from list when it is destroyed */
    g_object_weak_ref (G_OBJECT (filter), (GWeakNotify) remove_item_from_list, &(priv->filters));
    g_object_weak_ref (G_OBJECT (filter), (GWeakNotify) emit_menu_changed, menu);

    g_signal_emit (menu, app_menu_signals[CHANGED], 0);
}
Example #2
0
static void
he_check_button_set_property                      (GObject      *object,
                                                 guint         prop_id,
                                                 const GValue *value,
                                                 GParamSpec   *pspec)
{
    HeCheckButton *button = HE_CHECK_BUTTON (object);

    switch (prop_id)
    {
    case PROP_TITLE:
        he_check_button_set_title (button, g_value_get_string (value));
        break;
    case PROP_VALUE:
        he_check_button_set_value (button, g_value_get_string (value));
        break;
    case PROP_SIZE:
        hildon_gtk_widget_set_theme_size (GTK_WIDGET (button), g_value_get_flags (value));
        break;
    case PROP_ARRANGEMENT:
        he_check_button_set_arrangement (button, g_value_get_enum (value));
        break;
    case PROP_STYLE:
        he_check_button_set_style (button, g_value_get_enum (value));
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;
    }
}
static void
set_property                                    (GObject      *object,
                                                 guint         prop_id,
                                                 const GValue *value,
                                                 GParamSpec   *pspec)
{
    HildonSizeType size;

    switch (prop_id)
    {
    case PROP_SIZE:
	size = g_value_get_flags (value);
	/* If this is auto height, default to finger height. */
	if (!(size & (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_THUMB_HEIGHT)))
	  size |= HILDON_SIZE_FINGER_HEIGHT;
	hildon_gtk_widget_set_theme_size (GTK_WIDGET (object), size);
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;
    }
}