X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=hildon%2Fhildon-edit-toolbar.c;h=7db0ecc501a0c8317d615272b37b0c15d926292e;hb=5c9192d464868f298838bc762f921ea1ff79d5f8;hp=c288c71d2f42869024b9c5bf677c2f160bc4a5bf;hpb=30145d2600fdb0a434350f631064cbfbbf9f03eb;p=hildon diff --git a/hildon/hildon-edit-toolbar.c b/hildon/hildon-edit-toolbar.c index c288c71..7db0ecc 100644 --- a/hildon/hildon-edit-toolbar.c +++ b/hildon/hildon-edit-toolbar.c @@ -1,7 +1,7 @@ /* * This file is a part of hildon * - * Copyright (C) 2008 Nokia Corporation, all rights reserved. + * Copyright (C) 2008, 2009 Nokia Corporation, all rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser Public License as published by @@ -33,6 +33,10 @@ * To add a #HildonEditToolbar to a window use * hildon_window_set_edit_toolbar(). * + * This toolbar is meant to replace the window title bar by emulating + * its appearance, so you should put the window in full screen mode + * with gtk_window_fullscreen(). + * * * HildonEditToolbar example * @@ -59,6 +63,8 @@ */ #include "hildon-edit-toolbar.h" +#include "hildon-edit-toolbar-private.h" +#include "hildon-private.h" #include "hildon-gtk.h" G_DEFINE_TYPE (HildonEditToolbar, hildon_edit_toolbar, GTK_TYPE_HBOX); @@ -66,6 +72,10 @@ G_DEFINE_TYPE (HildonEditToolbar, hildon_edit_ #define TOOLBAR_LEFT_PADDING 24 #define TOOLBAR_RIGHT_PADDING 8 +#define HILDON_EDIT_TOOLBAR_ANIMATION_FRAMERATE ((float)1000/150) +#define HILDON_EDIT_TOOLBAR_ANIMATION_TMPL "indicator_update%d" +#define HILDON_EDIT_TOOLBAR_ANIMATION_NFRAMES 8 + #define HILDON_EDIT_TOOLBAR_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \ HILDON_TYPE_EDIT_TOOLBAR, HildonEditToolbarPrivate)); @@ -74,7 +84,9 @@ typedef struct _HildonEditToolbarPrivate Hildon struct _HildonEditToolbarPrivate { + GtkBox *hbox; GtkLabel *label; + GtkWidget *animation; GtkButton *button; GtkButton *arrow; }; @@ -209,11 +221,14 @@ hildon_edit_toolbar_init (HildonEditToolbar *self) GtkWidget *separator; GtkAlignment *align; GtkBox *hbox = GTK_BOX (self); - GtkBox *hbox2; - hbox2 = GTK_BOX (gtk_hbox_new (FALSE, 0)); + priv->hbox = GTK_BOX (gtk_hbox_new (FALSE, 0)); align = GTK_ALIGNMENT (gtk_alignment_new (0, 0.5, 1, 1)); priv->label = GTK_LABEL (gtk_label_new (NULL)); + priv->animation = hildon_private_create_animation ( + HILDON_EDIT_TOOLBAR_ANIMATION_FRAMERATE, + HILDON_EDIT_TOOLBAR_ANIMATION_TMPL, + HILDON_EDIT_TOOLBAR_ANIMATION_NFRAMES); priv->button = GTK_BUTTON (hildon_gtk_button_new (HILDON_SIZE_AUTO)); separator = gtk_vseparator_new (); priv->arrow = GTK_BUTTON (gtk_button_new ()); @@ -230,15 +245,19 @@ hildon_edit_toolbar_init (HildonEditToolbar *self) gtk_widget_set_name (GTK_WIDGET (self), "toolbar-edit-mode"); gtk_widget_set_name (GTK_WIDGET (priv->arrow), "hildon-edit-toolbar-arrow"); - gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (hbox2)); - gtk_box_pack_start (hbox2, GTK_WIDGET (priv->label), TRUE, TRUE, 0); - gtk_box_pack_start (hbox2, GTK_WIDGET (priv->button), FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (align), GTK_WIDGET (priv->hbox)); + gtk_box_pack_start (priv->hbox, GTK_WIDGET (priv->label), TRUE, TRUE, 0); + gtk_box_pack_start (priv->hbox, priv->animation, TRUE, TRUE, 10); + gtk_box_pack_start (priv->hbox, GTK_WIDGET (priv->button), FALSE, FALSE, 0); + + gtk_widget_set_no_show_all (priv->animation, TRUE); gtk_box_pack_start (hbox, GTK_WIDGET (align), TRUE, TRUE, 0); gtk_box_pack_start (hbox, separator, FALSE, FALSE, 0); gtk_box_pack_start (hbox, GTK_WIDGET (priv->arrow), FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (priv->label), 0, 0.5); + gtk_misc_set_alignment (GTK_MISC (priv->animation), 0, 0.5); gtk_widget_show_all (GTK_WIDGET (align)); gtk_widget_show_all (separator); @@ -323,3 +342,21 @@ hildon_edit_toolbar_new_with_text (const gchar *label, return toolbar; } + +void G_GNUC_INTERNAL +hildon_edit_toolbar_set_progress_indicator (HildonEditToolbar *toolbar, + gboolean show) +{ + HildonEditToolbarPrivate *priv; + g_return_if_fail (HILDON_IS_EDIT_TOOLBAR (toolbar)); + priv = HILDON_EDIT_TOOLBAR_GET_PRIVATE (toolbar); + if (show) { + gtk_widget_show (priv->animation); + gtk_box_set_child_packing (priv->hbox, GTK_WIDGET (priv->label), + FALSE, FALSE, 0, GTK_PACK_START); + } else { + gtk_box_set_child_packing (priv->hbox, GTK_WIDGET (priv->label), + TRUE, TRUE, 0, GTK_PACK_START); + gtk_widget_hide (priv->animation); + } +}