elm_win: add elm_win_indcator_type and elm_win_indicator_enabled into window's eo.

elm_window will be changed to control layout related with conformant.
remove opacity and overlap mode and add type set.
This commit is contained in:
Ji-Youn Park 2016-05-23 19:44:54 +08:30
parent 4bdb1f73b8
commit 0c6b0efaee
3 changed files with 186 additions and 121 deletions

View File

@ -5116,76 +5116,32 @@ _elm_win_keyboard_win_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
}
EOLIAN static void
_elm_win_indicator_mode_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Elm_Win_Indicator_Mode mode)
{
if (mode == sd->indmode) return;
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
#endif
sd->indmode = mode;
#ifdef HAVE_ELEMENTARY_X
if (sd->x.xwin)
{
if (sd->indmode == ELM_WIN_INDICATOR_SHOW)
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_ON);
else if (sd->indmode == ELM_WIN_INDICATOR_HIDE)
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
}
#endif
eo_event_callback_call
(obj, ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL);
}
EOLIAN static Elm_Win_Indicator_Mode
_elm_win_indicator_mode_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
{
return sd->indmode;
}
EOLIAN static void
_elm_win_indicator_opacity_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Elm_Win_Indicator_Opacity_Mode mode)
{
if (mode == sd->ind_o_mode) return;
sd->ind_o_mode = mode;
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
if (sd->ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_OPAQUE);
else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSLUCENT)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSLUCENT);
else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSPARENT);
}
#endif
eo_event_callback_call
(obj, ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL);
}
EOLIAN static Elm_Win_Indicator_Opacity_Mode
_elm_win_indicator_opacity_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
{
return sd->ind_o_mode;
}
EOLIAN static void
_elm_win_indicator_overlap_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED, Elm_Win_Indicator_Overlap_Mode mode EINA_UNUSED)
_elm_win_indicator_enabled_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED, Eina_Bool enable EINA_UNUSED)
{
//TODO: this mode will be implemented after removing the conformant.
return;
}
EOLIAN static Elm_Win_Indicator_Overlap_Mode
_elm_win_indicator_overlap_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED)
EOLIAN static Eina_Bool
_elm_win_indicator_enabled_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED)
{
//TODO: this mode will be implemented after removing the conformant.
return ELM_WIN_INDICATOR_OVERLAP_UNKNOWN;
return EINA_FALSE;
}
EOLIAN static void
_elm_win_indicator_type_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED, Elm_Win_Indicator_Type type EINA_UNUSED)
{
//TODO: this mode will be implemented after removing the conformant.
return;
}
EOLIAN static Elm_Win_Indicator_Type
_elm_win_indicator_type_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd EINA_UNUSED)
{
//TODO: this mode will be implemented after removing the conformant.
return ELM_WIN_INDICATOR_TYPE_UNKNOWN;
}
EOLIAN static void
@ -6014,6 +5970,77 @@ elm_win_quickpanel_zone_get(const Evas_Object *obj)
return 0;
}
EAPI void
elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode)
{
ELM_WIN_CHECK(obj);
ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
if (mode == sd->indmode) return;
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
#endif
sd->indmode = mode;
#ifdef HAVE_ELEMENTARY_X
if (sd->x.xwin)
{
if (sd->indmode == ELM_WIN_INDICATOR_SHOW)
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_ON);
else if (sd->indmode == ELM_WIN_INDICATOR_HIDE)
ecore_x_e_illume_indicator_state_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
}
#endif
eo_event_callback_call
(obj, ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL);
}
EAPI Elm_Win_Indicator_Mode
elm_win_indicator_mode_get(const Evas_Object *obj)
{
ELM_WIN_CHECK(obj) EINA_FALSE;
ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, ELM_WIN_INDICATOR_UNKNOWN);
return sd->indmode;
}
EAPI void
elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode mode)
{
ELM_WIN_CHECK(obj);
ELM_WIN_DATA_GET_OR_RETURN(obj, sd);
if (mode == sd->ind_o_mode) return;
sd->ind_o_mode = mode;
#ifdef HAVE_ELEMENTARY_X
_internal_elm_win_xwindow_get(sd);
if (sd->x.xwin)
{
if (sd->ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_OPAQUE);
else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSLUCENT)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSLUCENT);
else if (sd->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)
ecore_x_e_illume_indicator_opacity_set
(sd->x.xwin, ECORE_X_ILLUME_INDICATOR_TRANSPARENT);
}
#endif
eo_event_callback_call
(obj, ELM_WIN_EVENT_INDICATOR_PROP_CHANGED, NULL);
}
EAPI Elm_Win_Indicator_Opacity_Mode
elm_win_indicator_opacity_get(const Evas_Object *obj)
{
ELM_WIN_CHECK(obj) EINA_FALSE;
ELM_WIN_DATA_GET_OR_RETURN_VAL(obj, sd, ELM_WIN_INDICATOR_OPACITY_UNKNOWN);
return sd->ind_o_mode;
}
#ifndef EFL_TEAMWORK_VERSION
# define EFL_TEAMWORK_VERSION 2
#endif

View File

@ -97,48 +97,20 @@ enum Elm.Win.Keyboard_Mode
j2me [[J2ME keyboard layout]]
}
enum Elm.Win.Indicator_Mode
enum Elm.Win.Indicator_Type
{
[[In some environments, like phones, you may have an indicator that
shows battery status, reception, time etc. This is the indicator.
Sometimes you don't want it because you provide the same functionality
inside your app, so this will request that the indicator is hidden in
this circumstance. The default is depend on the environments.
For example, like phones, default is to have the indicator shown.
But like TV, default is to have the indicator hidden.
]]
[[Defines the type indicator that can be shown]]
legacy: elm_win_indicator;
unknown, [[Unknown indicator state]]
hide, [[Hides the indicator]]
show [[Shows the indicator]]
}
enum Elm.Win.Indicator_Opacity_Mode
{
[[Defines the opacity modes of indicator that can be shown]]
legacy: elm_win_indicator;
opacity_unknown, [[Unknown indicator opacity mode]]
opaque, [[Opacifies the indicator]]
translucent, [[Be translucent the indicator]]
transparent [[Transparentizes the indicator]]
}
enum Elm.Win.Indicator_Overlap_Mode
{
[[Defines the overlap modes of indicator that can be shown.
Using this mode, user can determine whether the content of window
overlaps with indicator or not.]]
legacy: elm_win_indicator;
overlap_unknown, [[Unknown indicator overlap mode]]
overlap, [[Indicator can be overlapped with the content of window.
Content can be placed under the indicator in z-order.]]
nooverlap, [[Indicator can not be overlapped with the content of window.
The Y coordinate of content is same as (Y coordinate of indicator + indicator height)]]
type_unknown, [[Unknown indicator type]]
bg_opaque, [[The icon of indicator is opaque, the background of indicator is also opaque.
The content of window is located the end of indicator.
The area of indicator and window content are not overlapped]]
bg_transparent, [[The icon of indicator is opaque, but the background is transparent.
The content of window is located under the indicator in Z-order.
The area of indicator and window content are overlapped]]
hidden [[The indicator is hidden, So user can see only the content of window like the video mode.
If user flicks the upper side of window, the incator is shown temporarily.]]
}
/**
@ -183,37 +155,36 @@ class Elm.Win (Elm.Widget, Elm.Interface.Atspi.Window,
eo_prefix: elm_obj_win;
event_prefix: elm_win;
methods {
@property indicator_mode {
@property indicator_enabled {
set {
[[Sets the indicator mode of the window.]]
[[In some environments, like phones, you may have an indicator that
shows battery status, reception, time etc. This is the indicator.
Sometimes you don't want it because you provide the same functionality
inside your app, so this will request that the indicator is disabled in
this circumstance. The default is depend on the environments.
For example, like phones, default is to enable the indicator.
But like TV, default is to disable the indicator.
Sets the indicator enable of the window.]]
}
get {
[[Get the indicator mode of the window.]]
[[Get the indicator enable of the window.]]
}
values {
mode: Elm.Win.Indicator_Mode; [[The mode, one of #Elm_Win_Indicator_Mode.]]
enabled: bool; [[If true, the indicator is enabled,
If false, the indicator is disabled.]]
}
}
@property indicator_opacity {
@property indicator_type {
set {
[[Sets the indicator opacity mode of the window.]]
[[Sets the indicator type of the window.]]
}
get {
[[Get the indicator opacity mode of the window.]]
[[Get the indicator type of the window.]]
}
values {
mode: Elm.Win.Indicator_Opacity_Mode; [[The mode, one of #Elm_Win_Indicator_Opacity_Mode.]]
}
}
@property indicator_overlap {
set {
[[Sets the indicator overlap mode of the window.]]
}
get {
[[Get the indicator overlap mode of the window.]]
}
values {
mode: Elm.Win.Indicator_Overlap_Mode; [[The mode, one of #Elm_Win_Indicator_Overlap_Mode.]]
type: Elm.Win.Indicator_Type; [[The type, one of #Elm_Win_Indicator_Type.]]
}
}
@property keyboard_win {

View File

@ -1,5 +1,36 @@
#include "elm_win.eo.legacy.h"
/**
* @brief In some environments, like phones, you may have an indicator that
* shows battery status, reception, time etc. This is the indicator.
*
* Sometimes you don't want it because you provide the same functionality
* inside your app, so this will request that the indicator is hidden in this
* circumstance. The default is depend on the environments. For example, like
* phones, default is to have the indicator shown. But like TV, default is to
* have the indicator hidden.
*
* @ingroup Elm_Win
*/
typedef enum
{
ELM_WIN_INDICATOR_UNKNOWN = 0, /** Unknown indicator state */
ELM_WIN_INDICATOR_HIDE, /** Hides the indicator */
ELM_WIN_INDICATOR_SHOW /** Shows the indicator */
} Elm_Win_Indicator_Mode;
/** Defines the opacity modes of indicator that can be shown
*
* @ingroup Elm_Win
*/
typedef enum
{
ELM_WIN_INDICATOR_OPACITY_UNKNOWN = 0, /** Unknown indicator opacity mode */
ELM_WIN_INDICATOR_OPAQUE, /** Opacifies the indicator */
ELM_WIN_INDICATOR_TRANSLUCENT, /** Be translucent the indicator */
ELM_WIN_INDICATOR_TRANSPARENT /** Transparentizes the indicator */
} Elm_Win_Indicator_Opacity_Mode;
/**
* Adds a window object. If this is the first window created, pass NULL as
* @p parent.
@ -463,3 +494,39 @@ EAPI void elm_win_quickpanel_priority_minor_set(Evas_Object *obj, int priority);
*/
EAPI int elm_win_quickpanel_priority_minor_get(const Evas_Object *obj);
/**
* @brief Sets the indicator mode of the window.
*
* @param[in] mode The mode, one of #Elm_Win_Indicator_Mode.
*
* @ingroup Elm_Win
*/
EAPI void elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode);
/**
* @brief Get the indicator mode of the window.
*
* @return The mode, one of #Elm_Win_Indicator_Mode.
*
* @ingroup Elm_Win
*/
EAPI Elm_Win_Indicator_Mode elm_win_indicator_mode_get(const Evas_Object *obj);
/**
* @brief Sets the indicator opacity mode of the window.
*
* @param[in] mode The mode, one of #Elm_Win_Indicator_Opacity_Mode.
*
* @ingroup Elm_Win
*/
EAPI void elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode mode);
/**
* @brief Get the indicator opacity mode of the window.
*
* @return The mode, one of #Elm_Win_Indicator_Opacity_Mode.
*
* @ingroup Elm_Win
*/
EAPI Elm_Win_Indicator_Opacity_Mode elm_win_indicator_opacity_get(const Evas_Object *obj);