class Elm_Progressbar (Elm_Layout, Elm_Interface_Atspi_Value)
{
   eo_prefix: elm_obj_progressbar;
   properties {
      span_size {
         set {
            /*@
            @brief Set the (exact) length of the bar region of a given progress bar
            widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark This sets the minimum width (when in horizontal mode) or height
            (when in vertical mode) of the actual bar area of the progress
            bar @p obj. This in turn affects the object's minimum size. Use
            this when you're not setting other size hints expanding on the
            given direction (like weight and alignment hints) and you would
            like it to have a specific size.

            @remark Icon, label and unit text around @p obj will require their
            own space, which will make @p obj to require more the @p size,
            actually.

            @see elm_progressbar_span_size_get()

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get the length set for the bar region of a given progress bar
            widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return The length of the progress bar's bar region

            @remark If that size was not set previously, with
            elm_progressbar_span_size_set(), this call will return @c 0.

            @ingroup Progressbar */
         }
         values {
            Evas_Coord size; /*@ The length of the progress bar's bar region */
         }
      }
      pulse {
         set {
            /*@
            @brief Set whether a given progress bar widget is at "pulsing mode" or
            not.

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark By default, progress bars will display values from the low to
            high value boundaries. There are, though, contexts in which the
            progress of a given task is @b unknown. For such cases,
            one can set a progress bar widget to a "pulsing state", to give
            the user an idea that some computation is being held, but
            without exact progress values. In the default theme, it will
            animate its bar with the contents filling in constantly and back
            to non-filled, in a loop. To start and stop this pulsing
            animation, one has to explicitly call elm_progressbar_pulse().

            @see elm_progressbar_pulse_get()
            @see elm_progressbar_pulse()

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get whether a given progress bar widget is at "pulsing mode" or
            not.

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return @c EINA_TRUE, if @p obj is in pulsing mode, @c EINA_FALSE
            if it's in the default one (and on errors)

            @ingroup Progressbar */
         }
         values {
            bool pulse; /*@ @c EINA_TRUE to put @p obj in pulsing mode,
            @c EINA_FALSE to put it back to its default one */
         }
      }
      value {
         set {
            /*@
            @brief Set the progress value (in percentage) on a given progress bar
            widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark Use this call to set progress bar levels.

            @remark If you passes a value out of the specified range for @p
            val, it will be interpreted as the @b closest of the @b boundary
            values in the range.

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get the progress value (in percentage) on a given progress bar
            widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return The value of the progressbar

            @see elm_progressbar_value_set() for more details

            @ingroup Progressbar */
         }
         values {
            double val; /*@ The progress value (@b must be between @c 0.0 and @c
            1.0) */
         }
      }
      inverted {
         set {
            /*@
            @brief Invert a given progress bar widget's displaying values order

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark A progress bar may be @b inverted, in which state it gets its
            values inverted, with high values being on the left or top and
            low values on the right or bottom, as opposed to normally have
            the low values on the former and high values on the latter,
            respectively, for horizontal and vertical modes.

            @see elm_progressbar_inverted_get()

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get whether a given progress bar widget's displaying values are
            inverted or not

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return @c EINA_TRUE, if @p obj has inverted values,
            @c EINA_FALSE otherwise (and on errors)

            @see elm_progressbar_inverted_set() for more details

            @ingroup Progressbar */
         }
         values {
            bool inverted; /*@ Use @c EINA_TRUE to make @p obj inverted,
            @c EINA_FALSE to bring it back to default, non-inverted values. */
         }
      }
      horizontal {
         set {
            /*@
            @brief Set the orientation of a given progress bar widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark Use this function to change how your progress bar is to be
            disposed: vertically or horizontally.

            @see elm_progressbar_horizontal_get()

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get the orientation of a given progress bar widget

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
            @c EINA_FALSE if it's @b vertical (and on errors)

            @see elm_progressbar_horizontal_set() for more details

            @ingroup Progressbar */
         }
         values {
            bool horizontal; /*@ Use @c EINA_TRUE to make @p obj to be
            @b horizontal, @c EINA_FALSE to make it @b vertical */
         }
      }
      unit_format {
         set {
            /*@
            @brief Set the format string for a given progress bar widget's units
            label

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark If @c NULL is passed on @p format, it will make @p obj's units
            area to be hidden completely. If not, it'll set the <b>format
            string</b> for the units label's @b text. The units label is
            provided a floating point value, so the units text is up display
            at most one floating point value. Note that the units label is
            optional. Use a format string such as "%1.2f meters" for
            example.

            @remark The default format string for a progress bar is an integer
            percentage, as in @c "%.0f %%".

            @see elm_progressbar_unit_format_get()

            @ingroup Progressbar */
         }
         get {
            /*@
            @brief Get the format string set for a given progress bar widget's
            units label

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @return The format set string for @p obj's units label or
            @c NULL, if none was set (and on errors)

            @see elm_progressbar_unit_format_set() for more details

            @ingroup Progressbar */
         }
         values {
            const(char)* units; /*@ The format string for @p obj's units label */
         }
      }
      unit_format_function {
         set {
            /*@
            @brief Set the format function pointer for the units label

            @if MOBILE @since_tizen 2.3
            @elseif WEARABLE @since_tizen 2.3.1
            @endif

            @remark Set the callback function to format the unit string.

            @see elm_progressbar_unit_format_set() for more info on how this works.

            @since 1.7

            @ingroup Progressbar */
         }
         values {
            progressbar_func_type func; /*@ The unit format function */
            progressbar_freefunc_type free_func; /*@ The freeing function for the format string. */
         }
      }
   }
   methods {
      part_value_set {
         /*@
         @internal

         Set the progress value (in percentage) on a given progress bar
         widget for the given part name

         @since 1.8

         Use this call to set progress bar status for more than one progress status .

         @ingroup Progressbar */

         params {
            @in const(char)* part; /*@ The partname to which val have to set */
            @in double val; /*@ The progress value (@b must be between @c 0.0 and @c
            1.0) */
         }
      }
      part_value_get @const {
         /*@
         @internal

         Get the progress value (in percentage) on a given progress bar
         widget for a particular part

         @since 1.8

         @return The value of the progressbar

         @see elm_progressbar_value_set() for more details

         @ingroup Progressbar */
         return: double;
         params {
            @in const(char)* part; /*@ The part name of the progress bar */
         }
      }
      pulse {
         /*@
         @brief Start/stop a given progress bar "pulsing" animation, if its
         under that mode

         @if MOBILE @since_tizen 2.3
         @elseif WEARABLE @since_tizen 2.3.1
         @endif

         @remark This call won't do anything if @p obj is not under "pulsing mode".

         @see elm_progressbar_pulse_set() for more details.

         @ingroup Progressbar */

         params {
            @in bool state; /*@ @c EINA_TRUE, to @b start the pulsing animation,
            @c EINA_FALSE to @b stop it */
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Elm_Widget.theme_apply;
      Elm_Widget.focus_next_manager_is;
      Elm_Widget.focus_direction_manager_is;
      Elm_Widget.sub_object_del;
      Elm_Container.content_set;
      Elm_Layout.text_aliases.get;
      Elm_Layout.content_aliases.get;
      Elm_Layout.sizing_eval;
      Elm_Interface_Atspi_Value.value_and_text.get;
   }
   events {
      changed;
      language,changed;
      access,changed;
      focused;
      unfocused;
   }

}
