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);
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);
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);
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);
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);
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);
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);
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);
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);
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
-
_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;
-
- 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;
- }
+ ax = sd->horizontal_align;
+ ay = sd->vertical_align;
+ if ((elm_widget_mirrored_get(obj)) && (ax != ELM_NOTIFY_ALIGN_FILL)) ax = 1.0 - ax;
+
+ 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);
}
/**
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;
-
- case ELM_NOTIFY_ORIENT_CENTER:
- evas_object_move(sd->notify, x + offx, y + offy);
- break;
-
- case ELM_NOTIFY_ORIENT_BOTTOM:
- evas_object_move(sd->notify, x + offx, y + h - minh);
- break;
-
- 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;
+ 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_TOP_LEFT:
- evas_object_move(sd->notify, x, y);
- break;
+ if (ax == ELM_NOTIFY_ALIGN_FILL) minw = w;
+ if (ay == ELM_NOTIFY_ALIGN_FILL) minh = h;
- case ELM_NOTIFY_ORIENT_TOP_RIGHT:
- evas_object_move(sd->notify, x + w - minw, y);
- break;
+ x = x + ((w - minw) * ax);
+ y = y + ((h - minh) * ay);
- 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
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);
_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)
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;
}
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);
}
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
return sd->parent;
}
-EAPI void
+EINA_DEPRECATED EAPI void
elm_notify_orient_set(Evas_Object *obj,
Elm_Notify_Orient orient)
{
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;
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;
+}