Adding Lucas patch to enable settable timeout on the banners and settable icon.
authorMichael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
Fri, 16 Feb 2007 11:57:04 +0000 (11:57 +0000)
committerMichael Dominic Kostrzewa <michael.kostrzewa@nokia.com>
Fri, 16 Feb 2007 11:57:04 +0000 (11:57 +0000)
ChangeLog.2
doc/Makefile.am
doc/hildon-docs.sgml
doc/visual_index.xml
examples/hildon-banner-example.c
src/hildon-banner-private.h
src/hildon-banner.c
src/hildon-banner.h

index 140b409..acae844 100644 (file)
@@ -1,3 +1,16 @@
+2007-02-16  Michael Dominic Kostrzewa  <michael.kostrzewa@nokia.com> 
+
+       * doc/Makefile.am:
+       * doc/hildon-docs.sgml:
+       * doc/visual_index.xml: Documentation fixes.
+       
+       * src/hildon-banner-private.h:
+       * src/hildon-banner.c:
+       * src/hildon-banner.h: Adding Lucas patch to enable settable timeout
+       on the banners and settable icon.
+       
+       * examples/hildon-banner-example.c: Set timeout manually.
+
 2007-02-15  Michael Dominic Kostrzewa  <michael.kostrzewa@nokia.com> 
 
        * src/hildon-color-chooser-dialog.h:
index bf08bd8..ba72fd7 100644 (file)
@@ -11,11 +11,13 @@ SCAN_OPTIONS                                        =
 
 SCANOBJ_OPTIONS                                        =--type-init-func="gtk_type_init(0)"
 
-DOC_SOURCE_DIR                                 =../src
+DOC_SOURCE_DIR                                 = $(top_srcdir)/src
+DOC_BUILD_DIR                                  = $(top_builddir)/src
 
-HFILE_GLOB                                     =$(top_srcdir)/src/*.h
 
-CFILE_GLOB                                     =$(top_srcdir)/src/*.c
+HFILE_GLOB                                     = $(top_srcdir)/src/*.h
+
+CFILE_GLOB                                     = $(top_srcdir)/src/*.c
 
 IGNORE_HFILES                                  = hildon-banner-private.h               \
                                                  hildon-calendar-popup-private.h       \
@@ -48,19 +50,23 @@ IGNORE_HFILES                                       = hildon-banner-private.h               \
 
 INCLUDES                                       = $(GTK_CFLAGS) -I$(top_srcdir)
 
-GTKDOC_LIBS                                    = $(GTK_LIBS) ../src/libhildon_@PACKAGE_VERSION_MAJOR@.la 
-
-MKDB_OPTIONS                                   =--sgml-mode
+MKDB_OPTIONS                                   =--sgml-mode --output-format=xml
 
 content_files                                  = version.xml \
                                                  visual_index.xml
 
+GTKDOC_CFLAGS                                  = $(HILDON_OBJ_CFLAGS)
+
+GTKDOC_LIBS                                    = $(HILDON_OBJ_LIBS)
+
 version.xml: ../configure.ac
        @echo $(VERSION) > version.xml
 
 html: html-build.stamp
 
-HTML_IMAGES                                    = $(srcdir)/images/calendar-popup.png
+HTML_IMAGES                                    = $(srcdir)/images/calendar-popup.png   \
+                                                 $(srcdir)/images/caption.png          \
+                                                 $(srcdir)/images/code-dialog.png
 
 FIXXREF_OPTIONS                                        =
 
index 33ce196..6c54334 100644 (file)
@@ -12,7 +12,6 @@
   <chapter>
     <title>Object Hierarchy</title>
     <xi:include href="xml/tree_index.sgml"/>
-    <xi:include href="visual_index.xml"/>
   </chapter>
 
   <chapter>
index 0d083c1..89fab49 100644 (file)
@@ -1,68 +1,68 @@
 <para role="gallery">
   <link linkend="HildonCalendarPopup">
-          <inlinegraphic fileref="images/calendar-popup.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/calendar-popup.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonCaption">
-          <inlinegraphic fileref="images/caption.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/caption.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonCodeDialog">
-          <inlinegraphic fileref="images/code-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/code-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonColorButton">
-          <inlinegraphic fileref="images/color-button.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/color-button.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonColorChooserDialog">
-          <inlinegraphic fileref="images/color-chooser-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/color-chooser-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonCalorChooser">
-          <inlinegraphic fileref="images/color-chooser.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/color-chooser.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonCantrolbar">
-          <inlinegraphic fileref="images/controlbar.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/controlbar.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonDateEditor">
-          <inlinegraphic fileref="images/date-editor.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/date-editor.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonFontSelectionDialog">
-          <inlinegraphic fileref="images/font-selection-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/font-selection-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonGetPasswordDialog">
-          <inlinegraphic fileref="images/get-password-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/get-password-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonHVolumebar">
-          <inlinegraphic fileref="images/hvolumebar.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/hvolumebar.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonDialog">
-          <inlinegraphic fileref="images/login-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/login-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonNote">
-          <inlinegraphic fileref="images/note.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/note.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonNumberEditor">
-          <inlinegraphic fileref="images/number-editor.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/number-editor.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonRangeEditor">
-          <inlinegraphic fileref="images/range-editor.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/range-editor.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonSeekbar">
-          <inlinegraphic fileref="images/seekbar.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/seekbar.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonSetPasswordDialog">
-          <inlinegraphic fileref="images/set-password-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/set-password-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonSortDialog">
-          <inlinegraphic fileref="images/sort-dialog.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/sort-dialog.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonTimeEditor">
-          <inlinegraphic fileref="images/time-editor.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/time-editor.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonTimePicker">
-          <inlinegraphic fileref="images/time-picker.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/time-picker.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonVVolumebar">
-          <inlinegraphic fileref="images/vvolumebar.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/vvolumebar.png" format="PNG"></inlinegraphic>
   </link> 
   <link linkend="HildonWeekdayPicker">
-          <inlinegraphic fileref="images/weekday-picker.png" format="PNG"></inlinegraphic>
+          <inlinegraphic fileref="html/weekday-picker.png" format="PNG"></inlinegraphic>
   </link> 
 </para>
index c722c49..861eb40 100644 (file)
@@ -45,7 +45,8 @@ on_progress_idle                                (GtkWidget *banner)
 static gboolean
 on_information_clicked                          (GtkWidget *widget)
 {
-    hildon_banner_show_information (widget, NULL, "Information banner"); 
+    GtkWidget* banner = hildon_banner_show_information (widget, NULL, "Information banner"); 
+    hildon_banner_set_timeout (HILDON_BANNER (banner), 9000);
     return TRUE;
 }
 
index 84f41a4..718aa4d 100644 (file)
@@ -40,6 +40,7 @@ struct                                          _HildonBannerPrivate
     GtkWidget *layout;
     guint timeout_id;
     gboolean is_timed;
+    guint    timeout;
     GtkWindow *parent;
 };
 
index 5a906dd..81db2e1 100644 (file)
@@ -66,7 +66,7 @@
 
 /* default timeout */
 
-#define                                         HILDON_BANNER_TIMEOUT 3000
+#define                                         HILDON_BANNER_DEFAULT_TIMEOUT 3000
 
 /* default icons */
 
@@ -78,7 +78,8 @@ enum
 {
     PROP_0,
     PROP_PARENT_WINDOW, 
-    PROP_IS_TIMED
+    PROP_IS_TIMED,
+    PROP_TIMEOUT
 };
 
 static GtkWidget*                               global_timed_banner = NULL;
@@ -356,8 +357,8 @@ hildon_banner_ensure_timeout                    (HildonBanner *self)
     HildonBannerPrivate *priv = HILDON_BANNER_GET_PRIVATE (self);
     g_assert (priv);
 
-    if (priv->timeout_id == 0 && priv->is_timed)
-        priv->timeout_id = g_timeout_add (HILDON_BANNER_TIMEOUT, 
+    if (priv->timeout_id == 0 && priv->is_timed && priv->timeout > 0)
+        priv->timeout_id = g_timeout_add (priv->timeout, 
                 hildon_banner_timeout, self);
 }
 
@@ -374,6 +375,10 @@ hildon_banner_set_property                      (GObject *object,
 
     switch (prop_id) {
 
+        case PROP_TIMEOUT:
+             priv->timeout = g_value_get_uint (value);
+             break;
         case PROP_IS_TIMED:
             priv->is_timed = g_value_get_boolean (value);
 
@@ -417,6 +422,10 @@ hildon_banner_get_property                      (GObject *object,
 
     switch (prop_id)
     {
+        case PROP_TIMEOUT:
+             g_value_set_uint (value, priv->timeout);
+             break;
         case PROP_IS_TIMED:
             g_value_set_boolean (value, priv->is_timed);
             break;
@@ -674,6 +683,22 @@ hildon_banner_class_init                        (HildonBannerClass *klass)
                 "Whether or not the notification goes away automatically "
                 "after the specified time has passed",
                 FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+    /**
+     * HildonBanner:timeout:
+     *
+     * The time before making the banner banner go away. This needs 
+     * to be adjusted before the banner is mapped to the screen.
+     *                      
+     */
+    g_object_class_install_property (object_class, PROP_TIMEOUT,
+            g_param_spec_uint ("timeout",
+                "Timeout",
+                "The time before making the banner banner go away",
+                0,
+                10000,
+                HILDON_BANNER_DEFAULT_TIMEOUT,
+                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
 }
 
 static void 
@@ -763,16 +788,18 @@ hildon_banner_get_instance_for_widget           (GtkWidget *widget,
  * spawn a new banner before the earlier one has timed out, the
  * previous one will be replaced.
  *
+ * Returns: The newly created banner
+ *
  */
-void 
+GtkWidget*
 hildon_banner_show_information                  (GtkWidget *widget, 
                                                  const gchar *icon_name,
                                                  const gchar *text)
 {
     HildonBanner *banner;
 
-    g_return_if_fail (icon_name == NULL || icon_name[0] != 0);
-    g_return_if_fail (text != NULL);
+    g_return_val_if_fail (icon_name == NULL || icon_name[0] != 0, NULL);
+    g_return_val_if_fail (text != NULL, NULL);
 
     /* Prepare banner */
     banner = hildon_banner_get_instance_for_widget (widget, TRUE);
@@ -787,6 +814,8 @@ hildon_banner_show_information                  (GtkWidget *widget,
 
     /* Show the banner, since caller cannot do that */
     gtk_widget_show_all (GTK_WIDGET (banner));
+
+    return (GtkWidget *) banner;
 }
 
 /**
@@ -799,25 +828,29 @@ hildon_banner_show_information                  (GtkWidget *widget,
  * A helper function for #hildon_banner_show_information with
  * string formatting.
  *
+ * Returns: the newly created banner
  */
-void       
+GtkWidget* 
 hildon_banner_show_informationf                 (GtkWidget *widget, 
                                                  const gchar *icon_name,
                                                  const gchar *format, 
                                                  ...)
 {
-    g_return_if_fail (format != NULL);
+    g_return_val_if_fail (format != NULL, NULL);
 
     gchar *message;
     va_list args;
+    GtkWidget *banner;
 
     va_start (args, format);
     message = g_strdup_vprintf (format, args);
     va_end (args);
 
-    hildon_banner_show_information (widget, icon_name, message);
+    banner = hildon_banner_show_information (widget, icon_name, message);
 
     g_free (message);
+
+    return banner;
 }
 
 /**
@@ -832,16 +865,18 @@ hildon_banner_show_informationf                 (GtkWidget *widget,
  * spawn a new banner before the earlier one has timed out, the
  * previous one will be replaced.
  *
+ * Returns: the newly created banner
+ *
  */
-void 
+GtkWidget*
 hildon_banner_show_information_with_markup      (GtkWidget *widget, 
                                                  const gchar *icon_name, 
                                                  const gchar *markup)
 {
     HildonBanner *banner;
 
-    g_return_if_fail (icon_name == NULL || icon_name[0] != 0);
-    g_return_if_fail (markup != NULL);
+    g_return_val_if_fail (icon_name == NULL || icon_name[0] != 0, NULL);
+    g_return_val_if_fail (markup != NULL, NULL);
 
     /* Prepare banner */
     banner = hildon_banner_get_instance_for_widget (widget, TRUE);
@@ -857,6 +892,8 @@ hildon_banner_show_information_with_markup      (GtkWidget *widget,
 
     /* Show the banner, since caller cannot do that */
     gtk_widget_show_all (GTK_WIDGET (banner));
+
+    return (GtkWidget *) banner;
 }
 
 /**
@@ -1051,3 +1088,84 @@ hildon_banner_set_fraction                      (HildonBanner *self,
     gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->main_item), fraction);
 }
 
+/**
+ * hildon_banner_set_timeout:
+ * @self: a #HildonBanner widget
+ * @timeout: timeout to set in miliseconds.
+ *
+ * Sets the timeout on the banner. After the given amount of miliseconds
+ * has elapsed the banner will go away. Note that settings this only makes
+ * sense on the banners that are timed and that have not been yet displayed
+ * on the screen.
+ *
+ */
+void
+hildon_banner_set_timeout                       (HildonBanner *self,
+                                                 guint timeout)
+{
+    HildonBannerPrivate *priv;
+
+    g_return_if_fail (HILDON_IS_BANNER (self));
+    priv = HILDON_BANNER_GET_PRIVATE (self);
+    g_assert (priv);
+
+    priv->timeout = timeout;
+}
+
+/**
+ * hildon_banner_set_icon:
+ * @self: a #HildonBanner widget
+ * @icon_name: the name of icon to use. Can be %NULL for default icon
+ *
+ * Sets the icon to be used in the banner.
+ *
+ */
+void 
+hildon_banner_set_icon                          (HildonBanner *self, 
+                                                 const gchar  *icon_name)
+{
+    HildonBannerPrivate *priv;
+
+    g_return_if_fail (HILDON_IS_BANNER (self));
+    priv = HILDON_BANNER_GET_PRIVATE (self);
+    g_assert (priv);
+
+    hildon_banner_ensure_child (self, NULL, 0, GTK_TYPE_IMAGE, 
+            "pixel-size", HILDON_ICON_PIXEL_SIZE_NOTE, 
+            "icon-name", icon_name ? icon_name : HILDON_BANNER_DEFAULT_ICON,
+            "yalign", 0.0, 
+            NULL);
+}
+
+/**
+ * hildon_banner_set_icon_from_file:
+ * @self: a #HildonBanner widget
+ * @icon_file: the filename of icon to use. Can be %NULL for default icon
+ *
+ * Sets the icon from its filename to be used in the banner.
+ *
+ */
+void 
+hildon_banner_set_icon_from_file                (HildonBanner *self, 
+                                                 const gchar  *icon_file)
+{
+    HildonBannerPrivate *priv;
+
+    g_return_if_fail (HILDON_IS_BANNER (self));
+    priv = HILDON_BANNER_GET_PRIVATE (self);
+    g_assert (priv);
+
+    if (icon_file != NULL) {
+        hildon_banner_ensure_child (self, NULL, 0, GTK_TYPE_IMAGE, 
+                "pixel-size", HILDON_ICON_PIXEL_SIZE_NOTE, 
+                "file", icon_file,
+                "yalign", 0.0, 
+                NULL);
+    } else {
+        hildon_banner_ensure_child (self, NULL, 0, GTK_TYPE_IMAGE, 
+                "pixel-size", HILDON_ICON_PIXEL_SIZE_NOTE, 
+                "icon-name", HILDON_BANNER_DEFAULT_ICON,
+                "yalign", 0.0, 
+                NULL);
+    }
+}
index 83648fa..81c6f1e 100644 (file)
@@ -60,18 +60,18 @@ struct                                          _HildonBannerClass
 GType G_GNUC_CONST
 hildon_banner_get_type                          (void);
 
-void       
+GtkWidget* 
 hildon_banner_show_information                  (GtkWidget *widget, 
                                                  const gchar *icon_name,
                                                  const gchar *text);
 
-void 
+GtkWidget*
 hildon_banner_show_informationf                 (GtkWidget *widget, 
                                                  const gchar *icon_name,
                                                  const gchar *format, 
                                                  ...);
 
-void       
+GtkWidget*       
 hildon_banner_show_information_with_markup      (GtkWidget *widget, 
                                                  const gchar *icon_name,
                                                  const gchar *markup);
@@ -98,6 +98,18 @@ void
 hildon_banner_set_fraction                      (HildonBanner *self,
                                                  gdouble fraction);
 
+void     
+hildon_banner_set_icon                          (HildonBanner *self,
+                                                 const gchar *icon_name);
+
+void     
+hildon_banner_set_icon_from_file                (HildonBanner *self,
+                                                 const gchar *icon_file);
+
+void
+hildon_banner_set_timeout                       (HildonBanner *self,
+                                                 guint timeout);
+
 G_END_DECLS
 
 #endif                                          /* __HILDON_BANNER_H__ */