X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=hildon%2Fhildon-note.c;h=7ffc0af41f4a050d78ea21cd3df910ad27c01e2e;hb=f318528f871c4839e3f36d18cfe6fb126684da74;hp=2c1efde919d2175b29e3aa2e285ebaaa7bcf0c3e;hpb=fb5b64528723fe1399d169a04d9f20dae39bea8d;p=hildon diff --git a/hildon/hildon-note.c b/hildon/hildon-note.c index 2c1efde..7ffc0af 100644 --- a/hildon/hildon-note.c +++ b/hildon/hildon-note.c @@ -88,7 +88,7 @@ #include "hildon-note.h" #include "hildon-defines.h" #include "hildon-sound.h" -#include "hildon-banner.h" +#include "hildon-gtk.h" #include "hildon-enum-types.h" #include "hildon-note-private.h" @@ -114,6 +114,9 @@ static void hildon_note_rebuild (HildonNote *note); static void +hildon_note_set_padding (HildonNote *note); + +static void hildon_note_rename (HildonNote *note); static void @@ -126,6 +129,10 @@ static void hildon_note_unrealize (GtkWidget *widget); static void +hildon_note_size_request (GtkWidget *note, + GtkRequisition *req); + +static void label_size_request (GtkWidget *label, GtkRequisition *req, GtkWidget *note); @@ -288,6 +295,21 @@ hildon_note_get_property (GObject *object, } } +#ifdef MAEMO_GTK +static GObject * +hildon_note_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + object = (* G_OBJECT_CLASS (parent_class)->constructor) + (type, n_construct_properties, construct_params); + hildon_note_set_padding (HILDON_NOTE (object)); + + return object; +} +#endif /* MAEMO_GTK */ + /** * hildon_note_get_type: * @@ -333,8 +355,12 @@ hildon_note_class_init (HildonNoteClass *class) object_class->finalize = hildon_note_finalize; object_class->set_property = hildon_note_set_property; object_class->get_property = hildon_note_get_property; +#ifdef MAEMO_GTK + object_class->constructor = hildon_note_constructor; +#endif /* MAEMO_GTK */ widget_class->realize = hildon_note_realize; widget_class->unrealize = hildon_note_unrealize; + widget_class->size_request = hildon_note_size_request; /** * HildonNote:type: @@ -397,7 +423,7 @@ hildon_note_class_init (HildonNoteClass *class) /** * HildonNote:progressbar: * - * If set, a #GtkProgressBar visible in the note. + * If set, a #GtkProgressBar is displayed in the note. */ g_object_class_install_property (object_class, PROP_HILDON_NOTE_PROGRESSBAR, @@ -534,16 +560,25 @@ hildon_note_orientation_update (HildonNote *note, GdkScreen *screen) } static void +hildon_note_size_request (GtkWidget *note, + GtkRequisition *req) +{ + GTK_WIDGET_CLASS (parent_class)->size_request (note, req); + req->width = gdk_screen_get_width (gtk_widget_get_screen (note)); +} + +static void screen_size_changed (GdkScreen *screen, GtkWidget *note) { HildonNotePrivate *priv = HILDON_NOTE_GET_PRIVATE (note); - gint screen_width = gdk_screen_get_width (screen); - gint text_width = screen_width - HILDON_INFORMATION_NOTE_MARGIN * 2; + + hildon_note_rename (HILDON_NOTE (note)); if (priv->note_n == HILDON_NOTE_TYPE_INFORMATION || priv->note_n == HILDON_NOTE_TYPE_INFORMATION_THEME) { - g_object_set (note, "width-request", screen_width, NULL); + gint screen_width = gdk_screen_get_width (screen); + gint text_width = screen_width - HILDON_INFORMATION_NOTE_MARGIN * 2; g_object_set (priv->label, "width-request", text_width, NULL); return; @@ -591,6 +626,8 @@ hildon_note_realize (GtkWidget *widget) GdkScreen *screen = gtk_widget_get_screen (widget); g_signal_connect (screen, "size-changed", G_CALLBACK (screen_size_changed), widget); screen_size_changed (screen, widget); + + hildon_gtk_window_set_portrait_flags (GTK_WINDOW (widget), HILDON_PORTRAIT_MODE_SUPPORT); } static void @@ -628,13 +665,16 @@ hildon_note_rename (HildonNote *note) GEnumValue *value; GEnumClass *enum_class; gchar *name; + GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (note)); + gboolean portrait = gdk_screen_get_width (screen) < gdk_screen_get_height (screen); + const gchar *portrait_suffix = portrait ? "-portrait" : NULL; HildonNotePrivate *priv = HILDON_NOTE_GET_PRIVATE (note); enum_class = g_type_class_ref (HILDON_TYPE_NOTE_TYPE); value = g_enum_get_value (enum_class, priv->note_n); - name = g_strconcat ("HildonNote-", value->value_nick, NULL); + name = g_strconcat ("HildonNote-", value->value_nick, portrait_suffix, NULL); gtk_widget_set_name (GTK_WIDGET (note), name); g_free (name); @@ -645,6 +685,39 @@ hildon_note_rename (HildonNote *note) g_type_class_unref (enum_class); } +#ifdef MAEMO_GTK +static void +hildon_note_set_padding (HildonNote *note) +{ + HildonNotePrivate *priv; + + priv = HILDON_NOTE_GET_PRIVATE (note); + + switch (priv->note_n) { + case HILDON_NOTE_TYPE_INFORMATION: + case HILDON_NOTE_TYPE_INFORMATION_THEME: + gtk_dialog_set_padding (GTK_DIALOG (note), + HILDON_MARGIN_DOUBLE, + HILDON_MARGIN_DOUBLE, + 0, + 0); + break; + + case HILDON_NOTE_TYPE_CONFIRMATION: + case HILDON_NOTE_TYPE_CONFIRMATION_BUTTON: + gtk_dialog_set_padding (GTK_DIALOG (note), + HILDON_MARGIN_DOUBLE, + HILDON_MARGIN_DEFAULT, + HILDON_MARGIN_DOUBLE, + HILDON_MARGIN_DOUBLE); + break; + + default: + break; + } +} +#endif /* MAEMO_GTK */ + static void hildon_note_rebuild (HildonNote *note) { @@ -728,6 +801,10 @@ hildon_note_rebuild (HildonNote *note) if (priv->progressbar) gtk_box_pack_start (GTK_BOX (priv->box), priv->progressbar, FALSE, FALSE, 0); +#ifdef MAEMO_GTK + hildon_note_set_padding (note); +#endif /* MAEMO_GTK */ + gtk_container_add (GTK_CONTAINER (dialog->vbox), priv->event_box); gtk_widget_show_all (priv->event_box); @@ -755,7 +832,7 @@ hildon_note_rebuild (HildonNote *note) * it would only contain the "additional" buttons? However, changing * this would break those applications that rely on current behaviour. * - * Returns: A #GtkWidget pointer of the note + * Returns: A new #HildonNote. */ GtkWidget* hildon_note_new_confirmation_add_buttons (GtkWindow *parent, @@ -811,12 +888,12 @@ hildon_note_new_confirmation_add_buttons (GtkWindow *parent, * important so that the window manager could handle the windows * correctly. In GTK the X window ID can be checked using * GDK_WINDOW_XID(GTK_WIDGET(parent)->window). - * @description: the message to confirm + * @description: the message to confirm. * * Create a new confirmation note. Confirmation note has a text (description) * that you specify and two buttons. * - * Returns: a #GtkWidget pointer of the note + * Returns: a new #HildonNote. */ GtkWidget* hildon_note_new_confirmation (GtkWindow *parent, @@ -853,7 +930,7 @@ hildon_note_new_confirmation (GtkWindow *parent, * Deprecated: Since 2.2, icons are not shown in confirmation notes. Icons set * with this function will be ignored. Use hildon_note_new_confirmation() instead. * - * Returns: a #GtkWidget pointer of the note + * Returns: a new #HildonNote. */ GtkWidget* hildon_note_new_confirmation_with_icon_name (GtkWindow *parent, @@ -875,12 +952,12 @@ hildon_note_new_confirmation_with_icon_name (GtkWindow *parent, * important so that the window manager could handle the windows * correctly. In GTK the X window ID can be checked using * GDK_WINDOW_XID(GTK_WIDGET(parent)->window). - * @description: the message to confirm + * @description: the message to confirm. * - * Create a new information note. Information note has a text (description) + * Create a new information note. Information note has text (a description) * that you specify and an OK button. * - * Returns: a #GtkWidget pointer of the note + * Returns: a new #HildonNote. */ GtkWidget* hildon_note_new_information (GtkWindow *parent, @@ -908,16 +985,17 @@ hildon_note_new_information (GtkWindow *parent, * important so that the window manager could handle the windows * correctly. In GTK the X window ID can be checked using * GDK_WINDOW_XID(GTK_WIDGET(parent)->window). - * @description: the message to confirm - * @icon_name: icon to be displayed. If NULL, default icon is used. + * @description: the message to confirm. + * @icon_name: icon to be displayed. If %NULL, the default icon is used. * - * Create a new information note. Information note has text(description) + * Create a new information note. An information note has text (a description) * that you specify, an OK button and an icon. * * Deprecated: Since 2.2, icons are not shown in confirmation notes. Icons set - * with this function will be ignored. Use hildon_note_new_information() instead. + * with this function will be ignored. Use hildon_note_new_information() + * instead. * - * Returns: a #GtkWidget pointer of the note + * Returns: a new #HildonNote. */ GtkWidget* hildon_note_new_information_with_icon_name (GtkWindow * parent, @@ -941,7 +1019,7 @@ hildon_note_new_information_with_icon_name (GtkWindow * parent, * important so that the window manager could handle the windows * correctly. In GTK the X window ID can be checked using * GDK_WINDOW_XID(GTK_WIDGET(parent)->window). - * @description: the action to cancel + * @description: the action to cancel. * @progressbar: a pointer to #GtkProgressBar to be filled with the * progressbar assigned to this note. Use this to set the fraction of * progressbar done. This parameter can be %NULL as well, in which @@ -978,8 +1056,8 @@ hildon_note_new_cancel_with_progress_bar (GtkWindow *parent, /** * hildon_note_set_button_text: - * @note: a #HildonNote - * @text: sets the button text and if there is two buttons in dialog, + * @note: a #HildonNote. + * @text: sets the button text. If there are two buttons in dialog, * the button texts will be <text>, "Cancel". * * Sets the text of the button in @note. @@ -1006,9 +1084,9 @@ hildon_note_set_button_text (HildonNote *note, /** * hildon_note_set_button_texts: - * @note: a #HildonNote - * @text_ok: the new text of the default OK button - * @text_cancel: the new text of the default cancel button + * @note: a #HildonNote. + * @text_ok: the new text of the default OK button. + * @text_cancel: the new text of the default cancel button. * * Sets the text for the buttons in @note. */