#ifndef _EFL_UI_EOT_H_
#define _EFL_UI_EOT_H_

#ifndef _EFL_UI_EOT_TYPES
#define _EFL_UI_EOT_TYPES

/** Return error code when setting the style on a widget.
 *
 * @ingroup Efl_Ui_Theme
 */
typedef enum
{
  EFL_UI_THEME_APPLY_FAILED = 0, /**< Failed to apply theme. The widget may
                                  * become unusable. */
  EFL_UI_THEME_APPLY_DEFAULT = 1, /**< Successfully applied the default style.
                                   * The widget may look different from the
                                   * rest of the UI if a custom theme is in
                                   * use, but it should be usable. */
  EFL_UI_THEME_APPLY_SUCCESS = 3 /**< Successfully applied the requested style
                                  * from the current theme. */
} Efl_Ui_Theme_Apply;

/** Focus directions.
 *
 * @ingroup Efl_Ui_Focus
 */
typedef enum
{
  EFL_UI_FOCUS_DIRECTION_PREVIOUS = 0, /**< previous direction */
  EFL_UI_FOCUS_DIRECTION_NEXT = 1, /**< next direction */
  EFL_UI_FOCUS_DIRECTION_UP = 2, /**< up direction */
  EFL_UI_FOCUS_DIRECTION_DOWN = 3, /**< down direction */
  EFL_UI_FOCUS_DIRECTION_RIGHT = 4, /**< right direction */
  EFL_UI_FOCUS_DIRECTION_LEFT = 5, /**< left direction */
  EFL_UI_FOCUS_DIRECTION_LAST = 6 /**< last direction */
} Efl_Ui_Focus_Direction;

/** Focus region show mode.
 *
 * @ingroup Efl_Ui
 */
typedef enum
{
  EFL_UI_INTEREST_REGION_MODE_WIDGET = 0, /**< As a widget. */
  EFL_UI_INTEREST_REGION_MODE_ITEM /**< As an item. */
} Efl_Ui_Interest_Region_Mode;

/** Focus Movement Policy.
 *
 * @since 1.10
 *
 * @ingroup Efl_Ui_Focus
 */
typedef enum
{
  EFL_UI_FOCUS_MOVE_POLICY_CLICK = 0, /**< Move focus by mouse click or touch.
                                       * Elementary focus is set on mouse click
                                       * and this is checked at mouse up time.
                                       * (default) */
  EFL_UI_FOCUS_MOVE_POLICY_IN, /**< Move focus by mouse in. Elementary focus is
                                * set on mouse move when the mouse pointer is
                                * moved into an object. */
  EFL_UI_FOCUS_MOVE_POLICY_KEY_ONLY /**< Move focus by key. Elementary focus is
                                     * set on key input like Left, Right, Up,
                                     * Down, Tab, or Shift+Tab. */
} Efl_Ui_Focus_Move_Policy;

/** Slider's indicator visiblity mode.
 *
 * @since 1.13
 *
 * @ingroup Efl_Ui
 */
typedef enum
{
  EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_DRAG = 0, /**< show indicator on mouse
                                                     * down or change in slider
                                                     * value */
  EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS, /**< Always show the indicator.
                                                */
  EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS, /**< Show the indicator on
                                                  * focus */
  EFL_UI_SLIDER_INDICATOR_VISIBLE_MODE_NONE /**< Never show the indicator */
} Efl_Ui_Slider_Indicator_Visible_Mode;

/** Focus Autoscroll Mode
 *
 * @since 1.10
 *
 * @ingroup Efl_Ui_Focus
 */
typedef enum
{
  EFL_UI_FOCUS_AUTOSCROLL_MODE_SHOW = 0, /**< Directly show the focused region
                                          * or item automatically. */
  EFL_UI_FOCUS_AUTOSCROLL_MODE_NONE, /**< Do not show the focused region or item
                                      * automatically. */
  EFL_UI_FOCUS_AUTOSCROLL_MODE_BRING_IN /**< Bring in the focused region or item
                                         * automatically which might invole the
                                         * scrolling. */
} Efl_Ui_Focus_Autoscroll_Mode;

/** Software cursor mode.
 *
 * @since 1.7
 *
 * @ingroup Efl_Ui
 */
typedef enum
{
  EFL_UI_SOFTCURSOR_MODE_AUTO = 0, /**< Auto-detect if a software cursor should
                                    * be used (default). */
  EFL_UI_SOFTCURSOR_MODE_ON, /**< Always use a softcursor. */
  EFL_UI_SOFTCURSOR_MODE_OFF /**< Never use a softcursor. */
} Efl_Ui_Softcursor_Mode;

/** Accessibility
 *
 * @ingroup Efl_Ui
 */
typedef enum
{
  EFL_UI_ACTIVATE_DEFAULT = 0, /**< Activate default */
  EFL_UI_ACTIVATE_UP, /**< Activate up */
  EFL_UI_ACTIVATE_DOWN, /**< Activate down */
  EFL_UI_ACTIVATE_RIGHT, /**< Activate right */
  EFL_UI_ACTIVATE_LEFT, /**< Activate left */
  EFL_UI_ACTIVATE_BACK /**< Activate back */
} Efl_Ui_Activate;

/**
 * @brief Widget orientation mode, or how the theme handles screen orientation.
 *
 * @note Support for this feature is highly dependent on the theme in use. At
 * the time of writing, the default theme for EFL does not implement support
 * for orientation modes.
 *
 * @ingroup Efl_Ui
 */
typedef enum
{
  EFL_UI_WIDGET_ORIENTATION_MODE_DEFAULT = 0, /**< Default or automatic mode: if
                                               * the widget's theme supports
                                               * orientation, it will be
                                               * handled automatically. */
  EFL_UI_WIDGET_ORIENTATION_MODE_DISABLED /**< No signal is sent to the widget's
                                           * theme. Widget's theme will not
                                           * change according to the window or
                                           * screen orientation. */
} Efl_Ui_Widget_Orientation_Mode;


#endif

#endif
