enum Elm.Dayselector.Day
{
   [[Identifies the day of the week. API can call the selection/unselection
     of day with this as a parameter.

     See also @Elm.Dayselector.day_selected_set, @Elm.Dayselector.day_selected_get.
   ]]

   legacy: elm_dayselector;
   sun = 0,[[Indicates Sunday.]]
   mon,    [[Indicates Monday.]]
   tue,    [[Indicates Tuesday.]]
   wed,    [[Indicates Wednesday.]]
   thu,    [[Indicates Thursday.]]
   fri,    [[Indicates Friday.]]
   sat,    [[Indicates Saturday.]]
   max     [[Sentinel value, don't use.]]
}

class Elm.Dayselector (Elm.Layout)
{
   eo_prefix: elm_obj_dayselector;
   methods {
      @property week_start {
         set @internal {
            [[Set the starting day of Dayselector.

              See also @Elm.Dayselector.Day,
              @.week_start.get.
            ]]
         }
         get @internal {
            [[Get the starting day of Dayselector.

              See also @Elm.Dayselector.Day,
              @.week_start.set.
            ]]
         }
         values {
            day: Elm.Dayselector.Day; [[Dayselector_Day the first day that the user wants to display.]]
         }
      }
      @property weekend_length {
         set @internal {
            [[Set the weekend length of Dayselector.

              See also @.weekend_length.get.
            ]]
         }
         get @internal {
            [[Get the weekend length of Dayselector.

              See also @Elm.Dayselector.Day,
              @.weekend_length.set.
            ]]
         }
         values {
            length: uint; [[Weekend length, number of days as an integer.]]
         }
      }
      @property weekend_start {
         set @internal {
            [[Set the weekend starting day of Dayselector.

              See also @Elm.Dayselector.Day,
              @.weekend_start.get.
            ]]
         }
         get @internal {
            [[Get the weekend starting day of Dayselector.

              See also @Elm.Dayselector.Day,
              @.weekend_start.set.
            ]]
         }
         values {
            day: Elm.Dayselector.Day; [[Dayselector_Day the first day from where weekend starts.]]
         }
      }
      weekdays_names_set @internal {
         [[Set weekdays names to be displayed by the Dayselector.

           By default or if weekdays is $null, weekdays abbreviations get from system are displayed:
           E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"

           The first string should be related to Sunday, the second to Monday...

           See also @.weekdays_names_get,
           @.weekend_start.set.

           @since 1.8
         ]]
           /* FIXME-doc
            *
            * The usage should be like this:
            * @code
            * const char *weekdays[] =
            * {
            * "Sunday", "Monday", "Tuesday", "Wednesday",
            * "Thursday", "Friday", "Saturday"
            * };
            * elm_dayselector_wekdays_names_set(calendar, weekdays);
            * @endcode
            */

         params {
            @in weekdays: const(char)* * @nullable; [[Array of seven strings to be used as weekday names.
            Warning: It must have 7 elements, or it will access invalid memory.
            Warning: The strings must be NULL terminated ('@\0').]]
         }
      }
      weekdays_names_get @const {
         [[Get weekdays names displayed by the calendar.

           By default, weekdays abbreviations get from system are displayed:
           E.g. for an en_US locale: "Sun, Mon, Tue, Wed, Thu, Fri, Sat"
           The first string is related to Sunday, the second to Monday...

           See also @.weekdays_names_set.

           @since 1.8
         ]]
         return: own(list<own(Eina_Stringshare *)> *) @warn_unused; [[A list of seven strings to be used as weekday names.]]
      }
      day_selected_set @internal {
         [[Set the state of given Dayselector_Day.

           See also @Elm.Dayselector.Day,
           @.day_selected_get.
         ]]
         params {
            @in day: Elm.Dayselector.Day; [[Dayselector_Day that the user want to set state.]]
            @in selected: bool; [[state of the day. $true is selected.]]
         }
      }
      day_selected_get @const {
         [[Get the state of given Dayselector_Day.

           See also @Elm.Dayselector.Day,
           @.day_selected_set.
         ]]
         return: bool;
         params {
            @in day: Elm.Dayselector.Day; [[Dayselector_Day that the user want to know state.]]
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Elm.Widget.theme_apply;
      Elm.Widget.focus_direction_manager_is;
      Elm.Widget.translate;
      Elm.Container.content_unset;
      Elm.Container.content_set;
      Elm.Layout.sizing_eval;
   }
   events {
      dayselector,changed;
      language,changed;
      access,changed;
   }

}
