elementary - RE: [E-devel] [Patch] Align of Elm_Notify
I attached new patch. The old patch's default position and mirroring problem has been fixed. I added new 2 APIs for supporting various notify's postion. EAPI void elm_notify_align_set(Evas_Object *obj, double horizontal, double vertical); EAPI void elm_notify_align_get(const Evas_Object *obj, double *horizontal, double *vertical); And below 2 APIs will be deprecated. EINA_DEPRECATED EAPI void elm_notify_orient_set(Evas_Object *obj, Elm_Notify_Orient orient); EINA_DEPRECATED EAPI Elm_Notify_Orient elm_notify_orient_get(const Evas_Object *obj); Please review this patch. Thanks:) Signed-Off-By: Seunggyun Kim<sgyun.kim@samsung.com> SVN revision: 78655
This commit is contained in:
parent
71840e45d5
commit
831b094697
|
@ -50,8 +50,10 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(tb);
|
||||
|
||||
// Notify top
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_align_set(notify, 0.5, 0.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -70,15 +72,18 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Top");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 1, 0, 1, 1);
|
||||
elm_table_pack(tb, bt, 2, 1, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify bottom
|
||||
notify = elm_notify_add(win);
|
||||
elm_notify_allow_events_set(notify, EINA_FALSE);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
|
||||
elm_notify_align_set(notify, 0.5, 1.0);
|
||||
|
||||
elm_notify_timeout_set(notify, 5.0);
|
||||
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
|
||||
evas_object_smart_callback_add(notify, "block,clicked", _notify_block, NULL);
|
||||
|
@ -101,14 +106,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Bottom");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 1, 2, 1, 1);
|
||||
elm_table_pack(tb, bt, 2, 3, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify left
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_LEFT);
|
||||
elm_notify_align_set(notify, 0.0, 0.5);
|
||||
elm_notify_timeout_set(notify, 10.0);
|
||||
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
|
||||
|
||||
|
@ -129,14 +136,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Left");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 0, 1, 1, 1);
|
||||
elm_table_pack(tb, bt, 1, 2, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify center
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_CENTER);
|
||||
elm_notify_align_set(notify, 0.5, 0.5);
|
||||
elm_notify_timeout_set(notify, 10.0);
|
||||
evas_object_smart_callback_add(notify, "timeout", _notify_timeout, NULL);
|
||||
|
||||
|
@ -157,14 +166,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Center");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 1, 1, 1, 1);
|
||||
elm_table_pack(tb, bt, 2, 2, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify right
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_RIGHT);
|
||||
elm_notify_align_set(notify, 1.0, 0.5);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -183,14 +194,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Right");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 2, 1, 1, 1);
|
||||
elm_table_pack(tb, bt, 3, 2, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify top left
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_TOP_LEFT);
|
||||
elm_notify_align_set(notify, 0.0, 0.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -209,14 +222,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Top Left");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 0, 0, 1, 1);
|
||||
elm_table_pack(tb, bt, 1, 1, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify top right
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_TOP_RIGHT);
|
||||
elm_notify_align_set(notify, 1.0, 0.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -235,14 +250,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Top Right");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 2, 0, 1, 1);
|
||||
elm_table_pack(tb, bt, 3, 1, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify bottom left
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM_LEFT);
|
||||
elm_notify_align_set(notify, 0.0, 1.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -261,14 +278,16 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Bottom Left");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 0, 2, 1, 1);
|
||||
elm_table_pack(tb, bt, 1, 3, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify bottom right
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM_RIGHT);
|
||||
elm_notify_align_set(notify, 1.0, 1.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
|
@ -287,14 +306,132 @@ test_notify(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
|||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Bottom Right");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 2, 2, 1, 1);
|
||||
elm_table_pack(tb, bt, 3, 3, 1, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify top fill
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_align_set(notify, ELM_NOTIFY_ALIGN_FILL, 0.0);
|
||||
elm_notify_timeout_set(notify, 5.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
elm_box_horizontal_set(bx, EINA_TRUE);
|
||||
evas_object_show(bx);
|
||||
|
||||
lb = elm_label_add(win);
|
||||
elm_object_text_set(lb, "Fill top. This notify fills horizontal area.<br/>"
|
||||
"<b>elm_notify_align_set(notify, ELM_NOTIFY_ALIGN_FILL, 0.0); </b>");
|
||||
elm_box_pack_end(bx, lb);
|
||||
evas_object_show(lb);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Close");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
|
||||
elm_object_text_set(bt, "Top fill");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 1, 0, 3, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify bottom fill
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_align_set(notify, ELM_NOTIFY_ALIGN_FILL, 1.0);
|
||||
elm_notify_timeout_set(notify, 5.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
elm_box_horizontal_set(bx, EINA_TRUE);
|
||||
evas_object_show(bx);
|
||||
|
||||
lb = elm_label_add(win);
|
||||
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(lb, 0.0, 0.5);
|
||||
elm_object_text_set(lb, "Fill Bottom. This notify fills horizontal area.<br/>"
|
||||
"<b>elm_notify_align_set(notify, ELM_NOTIFY_ALIGN_FILL, 1.0); </b>");
|
||||
elm_box_pack_end(bx, lb);
|
||||
evas_object_show(lb);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Close");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, 0.5);
|
||||
elm_object_text_set(bt, "Bottom fill");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 1, 4, 3, 1);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify left fill
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_align_set(notify, 0.0, EVAS_HINT_FILL);
|
||||
elm_notify_timeout_set(notify, 5.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
evas_object_show(bx);
|
||||
|
||||
lb = elm_label_add(win);
|
||||
elm_object_text_set(lb, "Left fill.");
|
||||
elm_box_pack_end(bx, lb);
|
||||
evas_object_show(lb);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Close");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, 0.5, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Left fill");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 0, 1, 1, 3);
|
||||
evas_object_show(bt);
|
||||
|
||||
// Notify right fill
|
||||
notify = elm_notify_add(win);
|
||||
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_notify_align_set(notify, 1.0, EVAS_HINT_FILL);
|
||||
elm_notify_timeout_set(notify, 5.0);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_object_content_set(notify, bx);
|
||||
evas_object_show(bx);
|
||||
|
||||
lb = elm_label_add(win);
|
||||
elm_object_text_set(lb, "Right fill.");
|
||||
elm_box_pack_end(bx, lb);
|
||||
evas_object_show(lb);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Close");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt_close, notify);
|
||||
elm_box_pack_end(bx, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
evas_object_size_hint_align_set(bt, 0.5, EVAS_HINT_FILL);
|
||||
elm_object_text_set(bt, "Right fill");
|
||||
evas_object_smart_callback_add(bt, "clicked", _bt, notify);
|
||||
elm_table_pack(tb, bt, 4, 1, 1, 3);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_show(win);
|
||||
evas_object_resize(win, 300, 350);
|
||||
evas_object_resize(win, 400, 400);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -421,3 +421,35 @@ EINA_DEPRECATED EAPI void elm_calendar_day_selection_disabled_se
|
|||
*/
|
||||
EINA_DEPRECATED EAPI Eina_Bool elm_calendar_day_selection_disabled_get(const Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* @deprecated Possible orient values for notify.
|
||||
*
|
||||
* This values should be used in conjunction to elm_notify_orient_set() to
|
||||
* set the position in which the notify should appear(relative to its parent)
|
||||
* and in conjunction with elm_notify_orient_get() to know where the notify
|
||||
* is appearing.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ELM_NOTIFY_ORIENT_TOP, /**< Notify should appear in the top of parent, default */
|
||||
ELM_NOTIFY_ORIENT_CENTER, /**< Notify should appear in the center of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM, /**< Notify should appear in the bottom of parent */
|
||||
ELM_NOTIFY_ORIENT_LEFT, /**< Notify should appear in the left of parent */
|
||||
ELM_NOTIFY_ORIENT_RIGHT, /**< Notify should appear in the right of parent */
|
||||
ELM_NOTIFY_ORIENT_TOP_LEFT, /**< Notify should appear in the top left of parent */
|
||||
ELM_NOTIFY_ORIENT_TOP_RIGHT, /**< Notify should appear in the top right of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM_LEFT, /**< Notify should appear in the bottom left of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM_RIGHT, /**< Notify should appear in the bottom right of parent */
|
||||
ELM_NOTIFY_ORIENT_LAST /**< Sentinel value, @b don't use */
|
||||
} Elm_Notify_Orient;
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated Use elm_notify_align_set instead.
|
||||
*/
|
||||
EINA_DEPRECATED EAPI void elm_notify_orient_set(Evas_Object *obj, Elm_Notify_Orient orient);
|
||||
|
||||
/**
|
||||
* @deprecated Use elm_notify_align_get instead.
|
||||
*/
|
||||
EINA_DEPRECATED EAPI Elm_Notify_Orient elm_notify_orient_get(const Evas_Object *obj);
|
||||
|
|
|
@ -73,56 +73,24 @@ static void
|
|||
_notify_theme_apply(Evas_Object *obj)
|
||||
{
|
||||
const char *style = elm_widget_style_get(obj);
|
||||
double ax, ay;
|
||||
|
||||
ELM_NOTIFY_DATA_GET(obj, sd);
|
||||
|
||||
switch (sd->orient)
|
||||
{
|
||||
case ELM_NOTIFY_ORIENT_TOP:
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "top", style);
|
||||
break;
|
||||
ax = sd->horizontal_align;
|
||||
ay = sd->vertical_align;
|
||||
if ((elm_widget_mirrored_get(obj)) && (ax != ELM_NOTIFY_ALIGN_FILL)) ax = 1.0 - ax;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_CENTER:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "center", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "bottom", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LEFT:
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "left", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_RIGHT:
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "right", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_LEFT:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "top_left", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_RIGHT:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "top_right", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_LEFT:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "bottom_left", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_RIGHT:
|
||||
elm_widget_theme_object_set
|
||||
(obj, sd->notify, "notify", "bottom_right", style);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LAST:
|
||||
break;
|
||||
}
|
||||
if (ay == 0.0)
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "top", style);
|
||||
else if (ay == 1.0)
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "bottom", style);
|
||||
else if (ax == 0.0)
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "left", style);
|
||||
else if (ax == 1.0)
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "right", style);
|
||||
else
|
||||
elm_widget_theme_object_set(obj, sd->notify, "notify", "center", style);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -140,60 +108,27 @@ _notify_theme_apply(Evas_Object *obj)
|
|||
static void
|
||||
_notify_move_to_orientation(Evas_Object *obj)
|
||||
{
|
||||
int offx;
|
||||
int offy;
|
||||
Evas_Coord minw = -1, minh = -1;
|
||||
Evas_Coord x, y, w, h;
|
||||
double ax, ay;
|
||||
|
||||
ELM_NOTIFY_DATA_GET(obj, sd);
|
||||
|
||||
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
||||
edje_object_size_min_get(sd->notify, &minw, &minh);
|
||||
edje_object_size_min_restricted_calc(sd->notify, &minw, &minh, minw, minh);
|
||||
offx = (w - minw) / 2;
|
||||
offy = (h - minh) / 2;
|
||||
|
||||
switch (_notify_orientation_rtl_fix(obj, sd->orient))
|
||||
{
|
||||
case ELM_NOTIFY_ORIENT_TOP:
|
||||
evas_object_move(sd->notify, x + offx, y);
|
||||
break;
|
||||
ax = sd->horizontal_align;
|
||||
ay = sd->vertical_align;
|
||||
if ((elm_widget_mirrored_get(obj)) && (ax != ELM_NOTIFY_ALIGN_FILL)) ax = 1.0 - ax;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_CENTER:
|
||||
evas_object_move(sd->notify, x + offx, y + offy);
|
||||
break;
|
||||
if (ax == ELM_NOTIFY_ALIGN_FILL) minw = w;
|
||||
if (ay == ELM_NOTIFY_ALIGN_FILL) minh = h;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM:
|
||||
evas_object_move(sd->notify, x + offx, y + h - minh);
|
||||
break;
|
||||
x = x + ((w - minw) * ax);
|
||||
y = y + ((h - minh) * ay);
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LEFT:
|
||||
evas_object_move(sd->notify, x, y + offy);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_RIGHT:
|
||||
evas_object_move(sd->notify, x + w - minw, y + offy);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_LEFT:
|
||||
evas_object_move(sd->notify, x, y);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_RIGHT:
|
||||
evas_object_move(sd->notify, x + w - minw, y);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_LEFT:
|
||||
evas_object_move(sd->notify, x, y + h - minh);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_RIGHT:
|
||||
evas_object_move(sd->notify, x + w - minw, y + h - minh);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LAST:
|
||||
break;
|
||||
}
|
||||
evas_object_move(sd->notify, x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -262,6 +197,9 @@ _calc(Evas_Object *obj)
|
|||
edje_object_size_min_get(sd->notify, &minw, &minh);
|
||||
edje_object_size_min_restricted_calc(sd->notify, &minw, &minh, minw, minh);
|
||||
|
||||
if (sd->horizontal_align == ELM_NOTIFY_ALIGN_FILL) minw = w;
|
||||
if (sd->vertical_align == ELM_NOTIFY_ALIGN_FILL) minh = h;
|
||||
|
||||
if (sd->content)
|
||||
{
|
||||
_notify_move_to_orientation(obj);
|
||||
|
@ -278,15 +216,6 @@ _changed_size_hints_cb(void *data,
|
|||
_calc(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_content_resize_cb(void *data,
|
||||
Evas *e __UNUSED__,
|
||||
Evas_Object *obj __UNUSED__,
|
||||
void *event_info __UNUSED__)
|
||||
{
|
||||
_calc(data);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_elm_notify_smart_sub_object_del(Evas_Object *obj,
|
||||
Evas_Object *sobj)
|
||||
|
@ -301,8 +230,6 @@ _elm_notify_smart_sub_object_del(Evas_Object *obj,
|
|||
evas_object_event_callback_del_full
|
||||
(sobj, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints_cb, obj);
|
||||
evas_object_event_callback_del_full
|
||||
(sobj, EVAS_CALLBACK_RESIZE, _content_resize_cb, obj);
|
||||
sd->content = NULL;
|
||||
}
|
||||
|
||||
|
@ -482,8 +409,6 @@ _elm_notify_smart_content_set(Evas_Object *obj,
|
|||
evas_object_event_callback_add
|
||||
(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints_cb, obj);
|
||||
evas_object_event_callback_add
|
||||
(content, EVAS_CALLBACK_RESIZE, _content_resize_cb, obj);
|
||||
edje_object_part_swallow(sd->notify, "elm.swallow.content", content);
|
||||
}
|
||||
|
||||
|
@ -533,12 +458,14 @@ _elm_notify_smart_add(Evas_Object *obj)
|
|||
|
||||
priv->notify = edje_object_add(evas_object_evas_get(obj));
|
||||
priv->orient = -1;
|
||||
priv->horizontal_align = 0.5;
|
||||
priv->vertical_align = 0.0;
|
||||
|
||||
evas_object_event_callback_add
|
||||
(obj, EVAS_CALLBACK_RESTACK, _restack_cb, obj);
|
||||
|
||||
elm_widget_can_focus_set(obj, EINA_FALSE);
|
||||
elm_notify_orient_set(obj, ELM_NOTIFY_ORIENT_TOP);
|
||||
elm_notify_align_set(obj, 0.5, 0.0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -674,7 +601,7 @@ elm_notify_parent_get(const Evas_Object *obj)
|
|||
return sd->parent;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
EINA_DEPRECATED EAPI void
|
||||
elm_notify_orient_set(Evas_Object *obj,
|
||||
Elm_Notify_Orient orient)
|
||||
{
|
||||
|
@ -684,11 +611,50 @@ elm_notify_orient_set(Evas_Object *obj,
|
|||
if (sd->orient == orient) return;
|
||||
sd->orient = orient;
|
||||
|
||||
_notify_theme_apply(obj);
|
||||
_calc(obj);
|
||||
switch (_notify_orientation_rtl_fix(obj, sd->orient))
|
||||
{
|
||||
case ELM_NOTIFY_ORIENT_TOP:
|
||||
elm_notify_align_set(obj, 0.5, 0.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_CENTER:
|
||||
elm_notify_align_set(obj, 0.5, 0.5);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM:
|
||||
elm_notify_align_set(obj, 0.5, 1.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LEFT:
|
||||
elm_notify_align_set(obj, 0.0, 0.5);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_RIGHT:
|
||||
elm_notify_align_set(obj, 1.0, 0.5);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_LEFT:
|
||||
elm_notify_align_set(obj, 0.0, 0.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_TOP_RIGHT:
|
||||
elm_notify_align_set(obj, 1.0, 0.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_LEFT:
|
||||
elm_notify_align_set(obj, 0.0, 1.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_BOTTOM_RIGHT:
|
||||
elm_notify_align_set(obj, 1.0, 1.0);
|
||||
break;
|
||||
|
||||
case ELM_NOTIFY_ORIENT_LAST:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EAPI Elm_Notify_Orient
|
||||
EINA_DEPRECATED EAPI Elm_Notify_Orient
|
||||
elm_notify_orient_get(const Evas_Object *obj)
|
||||
{
|
||||
ELM_NOTIFY_CHECK(obj) - 1;
|
||||
|
@ -747,3 +713,26 @@ elm_notify_allow_events_get(const Evas_Object *obj)
|
|||
|
||||
return sd->allow_events;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_notify_align_set(Evas_Object *obj, double horizontal, double vertical)
|
||||
{
|
||||
ELM_NOTIFY_CHECK(obj);
|
||||
ELM_NOTIFY_DATA_GET(obj, sd);
|
||||
|
||||
sd->horizontal_align = horizontal;
|
||||
sd->vertical_align = vertical;
|
||||
|
||||
_notify_theme_apply(obj);
|
||||
_calc(obj);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_notify_align_get(const Evas_Object *obj, double *horizontal, double *vertical)
|
||||
{
|
||||
ELM_NOTIFY_CHECK(obj);
|
||||
ELM_NOTIFY_DATA_GET(obj, sd);
|
||||
|
||||
*horizontal = sd->horizontal_align;
|
||||
*vertical = sd->vertical_align;
|
||||
}
|
||||
|
|
|
@ -32,27 +32,7 @@
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Possible orient values for notify.
|
||||
*
|
||||
* This values should be used in conjunction to elm_notify_orient_set() to
|
||||
* set the position in which the notify should appear(relative to its parent)
|
||||
* and in conjunction with elm_notify_orient_get() to know where the notify
|
||||
* is appearing.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ELM_NOTIFY_ORIENT_TOP, /**< Notify should appear in the top of parent, default */
|
||||
ELM_NOTIFY_ORIENT_CENTER, /**< Notify should appear in the center of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM, /**< Notify should appear in the bottom of parent */
|
||||
ELM_NOTIFY_ORIENT_LEFT, /**< Notify should appear in the left of parent */
|
||||
ELM_NOTIFY_ORIENT_RIGHT, /**< Notify should appear in the right of parent */
|
||||
ELM_NOTIFY_ORIENT_TOP_LEFT, /**< Notify should appear in the top left of parent */
|
||||
ELM_NOTIFY_ORIENT_TOP_RIGHT, /**< Notify should appear in the top right of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM_LEFT, /**< Notify should appear in the bottom left of parent */
|
||||
ELM_NOTIFY_ORIENT_BOTTOM_RIGHT, /**< Notify should appear in the bottom right of parent */
|
||||
ELM_NOTIFY_ORIENT_LAST /**< Sentinel value, @b don't use */
|
||||
} Elm_Notify_Orient;
|
||||
#define ELM_NOTIFY_ALIGN_FILL -1.0 /**< Use with elm_notify_align_set() */
|
||||
|
||||
/**
|
||||
* @brief Add a new notify to the parent
|
||||
|
@ -89,32 +69,6 @@ EAPI void elm_notify_parent_set(Evas_Object *obj, Evas_O
|
|||
*/
|
||||
EAPI Evas_Object *elm_notify_parent_get(const Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* @brief Set the orientation
|
||||
*
|
||||
* @param obj The notify object
|
||||
* @param orient The new orientation
|
||||
*
|
||||
* Sets the position in which the notify will appear in its parent.
|
||||
*
|
||||
* @see @ref Elm_Notify_Orient for possible values.
|
||||
*
|
||||
* @ingroup Notify
|
||||
*/
|
||||
EAPI void elm_notify_orient_set(Evas_Object *obj, Elm_Notify_Orient orient);
|
||||
|
||||
/**
|
||||
* @brief Return the orientation
|
||||
* @param obj The notify object
|
||||
* @return The orientation of the notification
|
||||
*
|
||||
* @see elm_notify_orient_set()
|
||||
* @see Elm_Notify_Orient
|
||||
*
|
||||
* @ingroup Notify
|
||||
*/
|
||||
EAPI Elm_Notify_Orient elm_notify_orient_get(const Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* @brief Set the time interval after which the notify window is going to be
|
||||
* hidden.
|
||||
|
@ -173,6 +127,31 @@ EAPI void elm_notify_allow_events_set(Evas_Object *obj,
|
|||
*/
|
||||
EAPI Eina_Bool elm_notify_allow_events_get(const Evas_Object *obj);
|
||||
|
||||
/**
|
||||
* @brief Set the alignment of the notify object
|
||||
*
|
||||
* @param obj The notify object
|
||||
* @param horizontal The horizontal alignment of the notification
|
||||
* @param vertical The vertical alignment of the notification
|
||||
*
|
||||
* Sets the alignment in which the notify will appear in its parent.
|
||||
*
|
||||
* @ingroup Notify
|
||||
*/
|
||||
EAPI void elm_notify_align_set(Evas_Object *obj, double horizontal, double vertical);
|
||||
|
||||
/**
|
||||
* @brief Get the alignment of the notify object
|
||||
* @param obj The notify object
|
||||
* @param horizontal The horizontal alignment of the notification
|
||||
* @param vertical The vertical alignment of the notification
|
||||
*
|
||||
* @see elm_notify_align_set()
|
||||
*
|
||||
* @ingroup Notify
|
||||
*/
|
||||
EAPI void elm_notify_align_get(const Evas_Object *obj, double *horizontal, double *vertical);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -128,6 +128,7 @@ struct _Elm_Notify_Smart_Data
|
|||
Elm_Notify_Orient orient;
|
||||
|
||||
double timeout;
|
||||
double horizontal_align, vertical_align;
|
||||
Ecore_Timer *timer;
|
||||
|
||||
Eina_Bool allow_events : 1;
|
||||
|
|
Loading…
Reference in New Issue