/po/stamp-po
/doc/Doxyfile
/src/examples/actionslider_example_01
++<<<<<<< HEAD
+/doc/widget_preview_button1
+/doc/widget_preview_button2
+/doc/widget_preview_button3
+/config.guess.cdbs-orig
+/config.sub.cdbs-orig
+/config/slp/base.cfg
+/debian/files
+/debian/*.log
+/debian/*.substvars
+/debian/libelm-bin/
+/debian/libelm-dbg/
+/debian/libelm-dev/
+/debian/*.debhelper
+/debian/libelm/
+/debian/stamp-*
+/debian/tmp/
++=======
+ /doc/widget_preview_*
+ /doc/widgets/widget_preview_*
+ src/examples/bg_example_01
+ src/examples/bg_example_02
+ src/examples/bg_example_03
+ src/examples/box_example_02
+ src/examples/bubble_example_01
+ src/examples/button_example_01
+ src/examples/calendar_example_01
+ src/examples/calendar_example_02
+ src/examples/calendar_example_03
+ src/examples/calendar_example_04
+ src/examples/calendar_example_05
+ src/examples/calendar_example_06
+ src/examples/check_example_01
+ src/examples/clock_example
+ src/examples/colorselector_example_01
+ src/examples/conformant_example_01
+ src/examples/conformant_example_02
+ src/examples/ctxpopup_example_01
+ src/examples/datetime_example
+ src/examples/diskselector_example_01
+ src/examples/diskselector_example_02
+ src/examples/efl_thread_1
+ src/examples/efl_thread_2
+ src/examples/efl_thread_3
+ src/examples/efl_thread_4
+ src/examples/efl_thread_5
+ src/examples/efl_thread_6
+ src/examples/entry_example
+ src/examples/fileselector_button_example
+ src/examples/fileselector_entry_example
+ src/examples/fileselector_example
+ src/examples/flip_example_01
+ src/examples/flipselector_example
+ src/examples/frame_example_01
+ src/examples/general_funcs_example
+ src/examples/gengrid_example
+ src/examples/genlist_example_01
+ src/examples/genlist_example_02
+ src/examples/genlist_example_03
+ src/examples/genlist_example_04
+ src/examples/genlist_example_05
+ src/examples/hover_example_01
+ src/examples/hoversel_example_01
+ src/examples/icon_example_01
+ src/examples/image_example_01
+ src/examples/index_example_01
+ src/examples/index_example_02
+ src/examples/inwin_example
+ src/examples/label_example_01
+ src/examples/layout_example_01
+ src/examples/layout_example_02
+ src/examples/layout_example_03
+ src/examples/list_example_01
+ src/examples/list_example_02
+ src/examples/list_example_03
+ src/examples/map_example_01
+ src/examples/map_example_02
+ src/examples/map_example_03
+ src/examples/mapbuf_example
+ src/examples/menu_example_01
+ src/examples/notify_example_01
+ src/examples/panel_example_01
+ src/examples/panes_example
+ src/examples/photocam_example_01
+ src/examples/popup_example_01
+ src/examples/popup_example_02
+ src/examples/popup_example_03
+ src/examples/progressbar_example
+ src/examples/radio_example_01
+ src/examples/scroller_example_01
+ src/examples/segment_control_example
+ src/examples/separator_example_01
+ src/examples/slider_example
+ src/examples/slideshow_example
+ src/examples/spinner_example
+ src/examples/table_example_01
+ src/examples/table_example_02
+ src/examples/theme_example_01
+ src/examples/theme_example_02
+ src/examples/thumb_example_01
+ src/examples/toggle_example_01
+ src/examples/toolbar_example_01
+ src/examples/toolbar_example_02
+ src/examples/toolbar_example_03
+ src/examples/transit_example_01
+ src/examples/transit_example_02
+ src/examples/transit_example_03
+ src/examples/transit_example_04
+ src/examples/web_example
+ src/examples/win_example
+ src/examples/dayselector_example
++>>>>>>> remotes/origin/upstream
Hyunsil Park <hyunsil.park@samsung.com>
Goun Lee <gouni.lee@samsung.com>
Mikael Sans <sans.mikael@gmail.com>
++<<<<<<< HEAD
++=======
+ Doyoun Kang <doyoun.kang@samsung.com>
+ M.V.K. Sumanth <sumanth.m@samsung.com> <mvksumanth@gmail.com>
++>>>>>>> remotes/origin/upstream
++<<<<<<< HEAD
+Elementary - a basic widget set that is easy to use based on EFL for mobile
+touch-screen devices.
+
++=======
+ Elementary - a basic widget set library that is easy to use and is based on EFL.
+ It provides the basic building blocks for creating applications and user interfaces.
+
+ For more details about elementary widgets and how to use them kindly refer to the
+ following link.
+
+ http://docs.enlightenment.org/auto/elementary/
++>>>>>>> remotes/origin/upstream
MAINTAINERCLEANFILES = Makefile.in
++<<<<<<< HEAD
+SUBDIRS = default standard illume slp
++=======
+ SUBDIRS = default standard illume
++>>>>>>> remotes/origin/upstream
EET_EET = @eet_eet@
value "zoom_friction" double: 0.5;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.25;
++<<<<<<< HEAD
++=======
+ value "scroll_smooth_amount" double: 0.0;
+ value "scroll_smooth_history_weight" double: 0.3;
+ value "scroll_smooth_future_time" double: 0.0;
+ value "scroll_smooth_time_window" double: 0.2;
++>>>>>>> remotes/origin/upstream
value "scale" double: 1.0;
value "bgpixmap" int: 0;
value "compositing" int: 1;
value "finger_size" int: 40;
value "fps" double: 60.0;
value "theme" string: "default";
++<<<<<<< HEAD
+ value "modules" string: "";
++=======
+ value "modules" string: "datetime_input_ctxpopup>datetime/api";
++>>>>>>> remotes/origin/upstream
value "tooltip_delay" double: 1.0;
value "cursor_engine_only" uchar: 1;
value "focus_highlight_enable" uchar: 0;
value "glayer_rotate_angular_tolerance" double: 2.0;
value "glayer_line_min_length" double: 1.0;
value "glayer_line_distance_tolerance" double: 3.0;
++<<<<<<< HEAD
+ value "glayer_line_angular_tolerance" double: 20.0
+ value "glayer_flick_time_limit_ms" uint: 120; /* ms to finish flick */
+ value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap */
+ value "glayer_continues_enable" uchar: 1; /* Continues gesture enabled */
++=======
+ value "glayer_line_angular_tolerance" double: 20.0;
+ value "glayer_flick_time_limit_ms" uint: 120; /* ms to finish flick */
+ value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap */
+ value "glayer_continues_enable" uchar: 1; /* Continues gesture enabled */
+ value "week_start" int: 1;
+ value "weekend_start" int: 6;
+ value "weekend_len" int: 2;
++>>>>>>> remotes/origin/upstream
}
value "zoom_friction" double: 0.5;
value "thumbscroll_border_friction" double: 0.5;
value "thumbscroll_sensitivity_friction" double: 0.25;
++<<<<<<< HEAD
+ value "scroll_smooth_time_interval" double: 0.008;
++=======
++>>>>>>> remotes/origin/upstream
value "scroll_smooth_amount" double: 1.0;
value "scroll_smooth_history_weight" double: 0.3;
value "scroll_smooth_future_time" double: 0.0;
value "finger_size" int: 40;
value "fps" double: 60.0;
value "theme" string: "default";
++<<<<<<< HEAD
+ value "modules" string: "";
++=======
+ value "modules" string: "datetime_input_ctxpopup>datetime/api";
++>>>>>>> remotes/origin/upstream
value "tooltip_delay" double: 1.0;
value "cursor_engine_only" uchar: 1;
value "focus_highlight_enable" uchar: 0;
value "glayer_flick_time_limit_ms" uint: 100; /* ms to finish flick */
value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap */
value "glayer_continues_enable" uchar: 1; /* Continues gesture enabled */
++<<<<<<< HEAD
++=======
+ value "week_start" int: 1;
+ value "weekend_start" int: 6;
+ value "weekend_len" int: 2;
++>>>>>>> remotes/origin/upstream
}
value "finger_size" int: 5;
value "fps" double: 60.0;
value "theme" string: "default-desktop";
++<<<<<<< HEAD
+ value "modules" string: "";
++=======
+ value "modules" string: "datetime_input_ctxpopup>datetime/api";
++>>>>>>> remotes/origin/upstream
value "tooltip_delay" double: 1.0;
value "cursor_engine_only" uchar: 1;
value "focus_highlight_enable" uchar: 0;
value "glayer_flick_time_limit_ms" uint: 120; /* ms to finish flick */
value "glayer_long_tap_start_timeout" double: 1.2; /* sec to start long-tap */
value "glayer_continues_enable" uchar: 1; /* Continues gesture enabled */
++<<<<<<< HEAD
++=======
+ value "week_start" int: 1;
+ value "weekend_start" int: 6;
+ value "weekend_len" int: 2;
++>>>>>>> remotes/origin/upstream
}
have_windows="no"
have_dlopen="no"
case "$host_os" in
++<<<<<<< HEAD
+ mingw32ce* | cegcc*)
++=======
+ mingw32ce*)
++>>>>>>> remotes/origin/upstream
PKG_CHECK_MODULES([EVIL], [evil])
AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed.])
lt_enable_auto_import="-Wl,--enable-auto-import"
have_socket="yes"
;;
esac
++<<<<<<< HEAD
+AC_CHECK_FUNCS(strcasestr, AC_DEFINE(HAVE_STRCASESTR))
++=======
++>>>>>>> remotes/origin/upstream
AM_CONDITIONAL([BUILD_RUN], [test "x$have_socket" = "xyes"])
AM_CONDITIONAL([BUILD_MODULES], [test "x$have_dlopen" = "xyes"])
m4_ifdef([v_mic],
[
++<<<<<<< HEAD
++=======
+ EFL_COMPILER_FLAG([-Wshadow])
++>>>>>>> remotes/origin/upstream
EFL_COMPILER_FLAG([-Wall])
EFL_COMPILER_FLAG([-W])
])
AC_MSG_ERROR([ecore-x support requested, but not found by pkg-config.])
fi
++<<<<<<< HEAD
+have_conformant_autoscroll="no"
+want_conformant_autoscroll="yes"
+AC_ARG_ENABLE([ecore-x],
+ [AC_HELP_STRING([--disable-ecore-x], [disable ecore-x support. @<:@default=detect@:>@])],
+ [want_conformant_autoscroll=$enableval], [])
+
+if test "x$want_conformant_autoscroll" != "xno"; then
+ PKG_CHECK_MODULES([ELEMENTARY_X],
+ [ecore-x >= 1.0.0],
+ [
+ AC_DEFINE(HAVE_CONFORMANT_AUTOSCROLL, 1, [autoscroll with conformant])
+ have_conformant_autoscroll="yes"
+ requirement_elm="ecore-x >= 1.0.0 ${requirement_elm}"
+ ],
+ [have_conformant_autoscroll="no"]
+ )
+else
+ have_conformant_autoscroll="no"
+fi
+if test "x$want_conformant_autoscroll" = "xyes" -a "x$have_conformant_autoscroll" = "xno"; then
+ AC_MSG_ERROR([ecore-x support requested, but not found by pkg-config.])
+fi
++=======
++>>>>>>> remotes/origin/upstream
have_elementary_fb="no"
want_elementary_fb="auto"
AC_DEFINE(HAVE_MMAN_H, 1, [Have sys/mman.h header file])
fi
++<<<<<<< HEAD
++=======
+ AC_CHECK_HEADERS([locale.h langinfo.h])
+
++>>>>>>> remotes/origin/upstream
my_libs="-lm"
AC_SUBST(my_libs)
AC_SUBST(requirement_elm)
src/bin/Makefile
src/modules/Makefile
src/modules/access_output/Makefile
++<<<<<<< HEAD
+src/modules/test_entry/Makefile
+src/modules/test_map/Makefile
+src/modules/ctxpopup_copypasteUI/Makefile
++=======
+ src/modules/datetime_input_ctxpopup/Makefile
+ src/modules/test_entry/Makefile
+ src/modules/test_map/Makefile
++>>>>>>> remotes/origin/upstream
src/edje_externals/Makefile
src/examples/Makefile
data/Makefile
config/default/Makefile
config/standard/Makefile
config/illume/Makefile
++<<<<<<< HEAD
+config/slp/Makefile
++=======
++>>>>>>> remotes/origin/upstream
$po_makefile_in
])
ico_button.png \
ico_check.png \
ico_clock.png \
++<<<<<<< HEAD
+ico_colorpalette.png\
+ico_datefield.png \
ico_fileselector.png \
ico_fileselector_button.png \
+ico_gengrid.png \
ico_genlist.png \
ico_hoversel.png \
+ico_icon.png \
ico_list.png \
ico_map.png \
+ico_nocontents.png \
+ico_page_control.png \
++=======
++ico_fileselector.png \
++ico_fileselector_button.png \
++ico_genlist.png \
++ico_hoversel.png \
++ico_list.png \
++ico_map.png \
++>>>>>>> remotes/origin/upstream
ico_notepad.png \
ico_photocam.png \
ico_progressbar.png \
ico_radio.png \
ico_scrolled_entry.png \
++<<<<<<< HEAD
+ico_scroller.png \
++=======
++>>>>>>> remotes/origin/upstream
ico_slider.png \
ico_slideshow.png \
ico_spinner.png \
ICON("button")
ICON("check")
ICON("clock")
++<<<<<<< HEAD
+ICON("colorpalette")
+ICON("datefield")
ICON("fileselector")
ICON("fileselector_button")
+ICON("gengrid")
ICON("genlist")
ICON("hoversel")
+ICON("icon")
ICON("list")
ICON("map")
ICON("notepad")
+ICON("multibuttonentry")
+ICON("nocontents")
+ICON("page_control")
++=======
++ICON("fileselector")
++ICON("fileselector_button")
++ICON("genlist")
++ICON("hoversel")
++ICON("list")
++ICON("map")
++ICON("notepad")
++>>>>>>> remotes/origin/upstream
ICON("photocam")
ICON("progressbar")
ICON("radio")
ICON("scrolled_entry")
++<<<<<<< HEAD
+ICON("scroller")
+ICON("searchbar")
++=======
++>>>>>>> remotes/origin/upstream
ICON("slider")
ICON("slideshow")
ICON("spinner")
icon_right_arrow.png \
bubble.png \
bubble_sh.png \
++<<<<<<< HEAD
+copy&paste_icon_clipboard.png \
+copy&paste_icon_search.png \
+copy&paste_icon_share.png \
++=======
++>>>>>>> remotes/origin/upstream
mystrale.jpg \
mystrale_2.jpg \
twofish.jpg \
relative: 0.7 340/400;
to: "bg";
}
++<<<<<<< HEAD
++=======
+ align: 0.5 0.0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "btn1_bottom_padding";
widgets/slider.edc \
widgets/button.edc \
widgets/gengrid.edc \
++<<<<<<< HEAD
+widgets/pager.edc \
++=======
++>>>>>>> remotes/origin/upstream
widgets/slideshow.edc \
widgets/calendar.edc \
widgets/genlist.edc \
widgets/entry.edc \
widgets/map.edc \
widgets/scroller.edc \
++<<<<<<< HEAD
++=======
+ widgets/pointer.edc \
+ widgets/datetime.edc \
+ widgets/dayselector.edc \
+ widgets/popup.edc \
++>>>>>>> remotes/origin/upstream
ews.edc \
arrow_down.png \
arrow_up.png \
mp_prev.png \
mp_rewind.png \
mp_stop.png \
++<<<<<<< HEAD
+access_glow.png
++=======
+ access_glow.png \
+ pointer_glint_01.png \
+ pointer_glint_02.png \
+ pointer_glint_03.png \
+ pointer_glint_04.png \
+ pointer_glint_05.png \
+ pointer_glint_06.png \
+ pointer_glint_07.png \
+ pointer_glint_08.png \
+ pointer_glint_09.png \
+ pointer_glint_10.png \
+ pointer_glint_11.png \
+ pointer_glint_12.png \
+ pointer_glow.png \
+ pointer.png
++>>>>>>> remotes/origin/upstream
default.edj: Makefile $(EXTRA_DIST)
$(EDJE_CC) $(EDJE_FLAGS) \
#include "widgets/button.edc"
#include "widgets/toggle.edc"
#include "widgets/clock.edc"
++<<<<<<< HEAD
++=======
+ #include "widgets/datetime.edc"
+ #include "widgets/dayselector.edc"
++>>>>>>> remotes/origin/upstream
#include "widgets/menu.edc"
#include "widgets/frame.edc"
#include "widgets/tooltip.edc"
#include "widgets/genlist.edc"
#include "widgets/check.edc"
#include "widgets/radio.edc"
++<<<<<<< HEAD
+#include "widgets/pager.edc"
++=======
++>>>>>>> remotes/origin/upstream
#include "widgets/progressbar.edc"
#include "widgets/separator.edc"
#include "widgets/spinner.edc"
#include "widgets/video.edc"
#include "widgets/naviframe.edc"
#include "widgets/multibuttonentry.edc"
++<<<<<<< HEAD
+#include "ews.edc"
+
++=======
+ #include "widgets/popup.edc"
+ #include "ews.edc"
+ #include "widgets/pointer.edc"
++>>>>>>> remotes/origin/upstream
}
group { name: "elm/button/base/default";
++<<<<<<< HEAD
++=======
+ alias: "elm/button/base/popup_button/default";
++>>>>>>> remotes/origin/upstream
images {
image: "bt_base1.png" COMP;
image: "bt_base2.png" COMP;
source: "elm";
action: STATE_SET "default" 0.0;
target: "ctxpopup_bg";
++<<<<<<< HEAD
++=======
+ transition: LINEAR 0.25;
++>>>>>>> remotes/origin/upstream
}
}
}
rel1 { to:"base"; relative: 0 0; }
rel2 { to:"base"; relative: 0 1; }
}
++<<<<<<< HEAD
+ description { state: "up" 0.0;
++=======
+ description { state: "show_up" 0.0;
++>>>>>>> remotes/origin/upstream
color: 255 255 255 0;
rel1 { to:"arrow_area_down"; relative: 0 1; }
rel2 { to:"arrow_area_down"; relative: 1 1; }
}
++<<<<<<< HEAD
+ description { state: "left" 0.0;
++=======
+ description { state: "show_left" 0.0;
++>>>>>>> remotes/origin/upstream
color: 255 255 255 0;
rel1 { to:"arrow_area_right"; relative: 1 0; }
rel2 { to:"arrow_area_right"; relative: 1 1; }
}
++<<<<<<< HEAD
+ description { state: "right" 0.0;
++=======
+ description { state: "show_right" 0.0;
++>>>>>>> remotes/origin/upstream
color: 255 255 255 0;
rel1 { to:"arrow_area_left"; relative: 0 0; }
rel2 { to:"arrow_area_left"; relative: 0 1; }
}
++<<<<<<< HEAD
+ description { state: "down" 0.0;
++=======
+ description { state: "show_down" 0.0;
++>>>>>>> remotes/origin/upstream
color: 255 255 255 0;
rel1 { to:"arrow_area_up"; relative: 0 0; }
rel2 { to:"arrow_area_up"; relative: 1 0; }
}
++<<<<<<< HEAD
++=======
+ description { state: "hide_up" 0.0;
+ color: 255 255 255 255;
+ rel1 { to:"arrow_area_down"; relative: 0 1; }
+ rel2 { to:"arrow_area_down"; relative: 1 1; }
+ }
+ description { state: "hide_left" 0.0;
+ color: 255 255 255 255;
+ rel1 { to:"arrow_area_right"; relative: 1 0; }
+ rel2 { to:"arrow_area_right"; relative: 1 1; }
+ }
+ description { state: "hide_right" 0.0;
+ color: 255 255 255 255;
+ rel1 { to:"arrow_area_left"; relative: 0 0; }
+ rel2 { to:"arrow_area_left"; relative: 0 1; }
+ }
+ description { state: "hide_down" 0.0;
+ color: 255 255 255 255;
+ rel1 { to:"arrow_area_up"; relative: 0 0; }
+ rel2 { to:"arrow_area_up"; relative: 1 0; }
+ }
++>>>>>>> remotes/origin/upstream
description { state: "visible" 0.0;
color: 255 255 255 255;
rel1 { to_x:"arrow_area_left"; to_y:"arrow_area_up"; }
transition: LINEAR 0.25;
target: "ctxpopup_clip";
}
++<<<<<<< HEAD
+ program { name: "up";
+ signal: "elm,state,show,up";
+ source: "elm";
+ action: STATE_SET "up" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "left";
+ signal: "elm,state,show,left";
+ source: "elm";
+ action: STATE_SET "left" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "right";
+ signal: "elm,state,show,right";
+ source: "elm";
+ action: STATE_SET "right" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "down";
+ signal: "elm,state,show,down";
+ source: "elm";
+ action: STATE_SET "down" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
++=======
+ program { name: "show_up";
+ signal: "elm,state,show,up";
+ source: "elm";
+ action: STATE_SET "show_up" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "show_left";
+ signal: "elm,state,show,left";
+ source: "elm";
+ action: STATE_SET "show_left" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "show_right";
+ signal: "elm,state,show,right";
+ source: "elm";
+ action: STATE_SET "show_right" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "show_down";
+ signal: "elm,state,show,down";
+ source: "elm";
+ action: STATE_SET "show_down" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ }
+ program { name: "hide_up";
+ signal: "elm,state,hide,up";
+ source: "elm";
+ action: STATE_SET "hide_up" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ after: "hide_finished";
+ }
+ program { name: "hide_left";
+ signal: "elm,state,hide,left";
+ source: "elm";
+ action: STATE_SET "hide_left" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ after: "hide_finished";
+ }
+ program { name: "hide_right";
+ signal: "elm,state,hide,right";
+ source: "elm";
+ action: STATE_SET "hide_right" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ after: "hide_finished";
+ }
+ program { name: "hide_down";
+ signal: "elm,state,hide,down";
+ source: "elm";
+ action: STATE_SET "hide_down" 0.0;
+ transition: LINEAR 0.25;
+ target: "ctxpopup_clip";
+ after: "hide_finished";
+ }
+ program { name: "hide_finished";
+ action: SIGNAL_EMIT "elm,action,hide,finished" "";
+ }
+
++>>>>>>> remotes/origin/upstream
}
}
///////////////////////////////////////////////////////////////////////////////
description { state: "default" 0.0;
rel1.offset: 2 2;
rel2.offset: -3 -3;
++<<<<<<< HEAD
++=======
+ color: 255 255 255 0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "clipper";
styles
{
style { name: "entry_textblock_style";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#000 wrap=word text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#000 wrap=word text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#800 underline=on underline_color=#8008";
tag: "hilight" "+ font_weight=Bold";
tag: "preedit_sel" "+ backing=on backing_color=#000 color=#FFFFFF";
}
style { name: "entry_textblock_disabled_style";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#00000080 wrap=word text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#00000080 wrap=word text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#00000080 underline=on underline_color=#00000080";
tag: "hilight" "+ font_weight=Bold";
styles
{
style { name: "entry_textblock_style_mixedwrap";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#000 wrap=mixed text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#000 wrap=mixed text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#800 underline=on underline_color=#8008";
tag: "hilight" "+ font_weight=Bold";
tag: "preedit_sel" "+ backing=on backing_color=#000 color=#FFFFFF";
}
style { name: "entry_textblock_disabled_style_mixedwrap";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#00000080 wrap=char text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#00000080 wrap=char text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#00000080 underline=on underline_color=#00000080";
tag: "hilight" "+ font_weight=Bold";
styles
{
style { name: "entry_textblock_style_charwrap";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#000 wrap=char text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#000 wrap=char text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#800 underline=on underline_color=#8008";
tag: "hilight" "+ font_weight=Bold";
tag: "preedit_sel" "+ backing=on backing_color=#000 color=#FFFFFF";
}
style { name: "entry_textblock_disabled_style_charwrap";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#00000080 wrap=char text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#00000080 wrap=char text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#00000080 underline=on underline_color=#00000080";
tag: "hilight" "+ font_weight=Bold";
styles
{
style { name: "entry_single_textblock_style";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#000 wrap=none text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#000 wrap=none text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#800 underline=on underline_color=#8008";
tag: "hilight" "+ font_weight=Bold";
tag: "preedit_sel" "+ backing=on backing_color=#000 color=#FFFFFF";
}
style { name: "entry_single_textblock_disabled_style";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#00000080 wrap=none text_class=entry";
++=======
+ base: "font=Sans font_size=10 color=#00000080 wrap=none text_class=entry left_margin=4 right_margin=4";
++>>>>>>> remotes/origin/upstream
tag: "em" "+ font_style=Oblique";
tag: "link" "+ color=#00000080 underline=on underline_color=#00000080";
tag: "hilight" "+ font_weight=Bold";
part { name: "arrow_top";
mouse_events: 0;
++<<<<<<< HEAD
++=======
+ clip_to: "disclip";
++>>>>>>> remotes/origin/upstream
scale: 1;
description { state: "default" 0.0;
min: 15 15;
}
part { name: "arrow_bottom";
mouse_events: 0;
++<<<<<<< HEAD
++=======
+ clip_to: "disclip";
++>>>>>>> remotes/origin/upstream
scale: 1;
description { state: "default" 0.0;
min: 15 15;
type: RECT;
mouse_events: 0;
name: "top_clipper";
++<<<<<<< HEAD
++=======
+ clip_to: "disclip";
++>>>>>>> remotes/origin/upstream
description {
state: "default" 0.0;
rel1.to: "t";
type: RECT;
mouse_events: 0;
name: "bottom_clipper";
++<<<<<<< HEAD
++=======
+ clip_to: "disclip";
++>>>>>>> remotes/origin/upstream
description {
state: "default" 0.0;
rel1.to: "b";
visible: 1;
}
}
++<<<<<<< HEAD
++=======
+
+ part {
+ type: RECT;
+ name: "disclip";
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "enabled" 0.0;
+ color: 100 100 100 100;
+ }
+ }
+
+ part {
+ type: RECT;
+ name: "event_blocker";
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description {
+ state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
}
programs {
source: "b";
action: SIGNAL_EMIT "elm,action,down,stop" "";
}
++<<<<<<< HEAD
++=======
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "disclip";
+ target: "event_blocker";
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ target: "event_blocker";
+ }
++>>>>>>> remotes/origin/upstream
}
}
++<<<<<<< HEAD
+ group { name: "elm/genlist/item/default/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "reorder_bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -7 -7;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 9 9;
+ }
+ image {
+ normal: "bt_bases.png";
+ border: 6 6 6 6;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 1.0;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ set_state(PART:"elm.text", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ set_state(PART:"elm.text", "default", vl);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ }
+ }
+ group { name: "elm/genlist/item/group_index/default";
+ alias: "elm/genlist/item_compress/group_index/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "group_index.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "group_index.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress/message/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.title.1 elm.title.2 elm.text";
+// data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ styles {
+ style { name: "genlist_textblock_style";
+ base: "font=Sans font_size=10 color=#000 wrap=char text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ }
+ style { name: "genlist_textblock_style2";
+ base: "font=Sans font_size=10 color=#fff wrap=char text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.title.1";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+// min: 16 16;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ align: 0.0 0.0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+// min: 1 1;
+ align: 0.0 0.0;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.title.2";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.title.1";
+ relative: 0.0 1.0;
+ offset: 4 0;
+ }
+ rel2 {
+ to_y: "elm.title.1";
+ relative: 1.0 1.0;
+ offset: -5 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ align: 0.0 0.0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+// min: 1 1;
+ align: 0.0 0.0;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// fixed: 0 1;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.title.2";
+ relative: 0.0 1.0;
+ offset: 4 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ align: 0.0 0.0;
+ text {
+ style: "genlist_textblock_style";
+ min: 0 1;
+// min: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_textblock_style2";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.title.1";
+ target: "elm.title.2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.title.1";
+ target: "elm.title.2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/default/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+// min: 1 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/default/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_left.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_left.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ description { state: "active" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "active", vl);
+ }
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "default", vl);
+ }
+ }
+ program { name: "to_rtl";
+ signal: "edje,state,rtl";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.0) {
+ set_state(PART:"arrow", st, 0.1);
+ }
+ }
+ }
+ program { name: "to_ltr";
+ signal: "edje,state,ltr";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.1) {
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_compress/default/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_left.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_left.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ description { state: "active" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "active", vl);
+ }
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "default", vl);
+ }
+ }
+ program { name: "to_rtl";
+ signal: "edje,state,rtl";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.0) {
+ set_state(PART:"arrow", st, 0.1);
+ }
+ }
+ }
+ program { name: "to_ltr";
+ signal: "edje,state,ltr";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.1) {
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ }
+ }
+ }
+ group { name: "elm/genlist/item/default_style/default";
+ styles
+ {
+ style { name: "genlist_style";
+ base: "font=Sans font_size=10 align=left valign=0.5 color=#000 text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ tag: "tab" "\t";
+ }
+ style { name: "genlist_selected_style";
+ base: "font=Sans font_size=10 align=left valign=0.5 color=#fff text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ tag: "tab" "\t";
+ }
+ }
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/default_style/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/default_style/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/default_style/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+
+ group { name: "elm/genlist/item/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_compress/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+// min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/icon_top_text_bottom/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 0.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/icon_top_text_bottom/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 0.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/icon_top_text_bottom/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/icon_top_text_bottom/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+// min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+
+///////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/genlist/tree_compress_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+// data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+// min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+// min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.album-artist";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.album-artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.album-artist";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.album-artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media-album/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.trackno elm.text.length";
+ data.item: "states" "elm.state.trackno";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ script {
+ public dot_visible;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part {
+ name: "elm.text.trackno";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 {
+ to_y: "elm.text.title";
+ relative: 0.0 0.0;
+ offset: 5 0;
+ }
+ rel2 {
+ to_y: "elm.text.title";
+ relative: 0.0 1.0;
+ offset: 20 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part {
+ name: "dot";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ visible: 0;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 0.0;
+ offset: 1 0;
+ }
+ rel2 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 1.0;
+ offset: 1 0;
+
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.0 0.5;
+ text: ".";
+ }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ visible: 1;
+ }
+ }
+ programs {
+ program {
+ signal: "elm,state,elm.state.trackno,active";
+ source: "elm";
+ script {
+ set_state(PART:"dot", "visible", 0.0);
+ set_int(dot_visible, 1);
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "dot";
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.length";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.trackno";
+ target: "elm.text.length";
+ after: "dot_active";
+ }
+ program {
+ name: "dot_active";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "selected", 0.0);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ transition: LINEAR 0.1;
+ after: "dot_passive";
+ }
+ program {
+ name: "dot_passive";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "visible", 0.0);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media-album/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.trackno elm.text.length";
+ data.item: "states" "elm.state.trackno";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ script {
+ public dot_visible;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part {
+ name: "elm.text.trackno";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 {
+ to_y: "elm.text.title";
+ relative: 0.0 0.0;
+ offset: 5 0;
+ }
+ rel2 {
+ to_y: "elm.text.title";
+ relative: 0.0 1.0;
+ offset: 20 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part {
+ name: "dot";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ visible: 0;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 0.0;
+ offset: 1 0;
+ }
+ rel2 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 1.0;
+ offset: 1 0;
+
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.0 0.5;
+ text: ".";
+ }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ visible: 1;
+ }
+ }
+ programs {
+ program {
+ signal: "elm,state,elm.state.trackno,active";
+ source: "elm";
+ script {
+ set_state(PART:"dot", "visible", 0.0);
+ set_int(dot_visible, 1);
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "dot";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.length";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ after: "dot_active";
+ }
+ program {
+ name: "dot_active";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "selected", 0.0);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ transition: LINEAR 0.1;
+ after: "dot_passive";
+ }
+ program {
+ name: "dot_passive";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "visible", 0.0);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media-preview/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.artist";
+ data.item: "contents" "elm.swallow.preview";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.preview";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ min: 68 68;
+ max: 68 68;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media-preview/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.artist";
+ data.item: "contents" "elm.swallow.preview";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.preview";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ min: 68 68;
+ max: 68 68;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/mode/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.mode";
+ data.item: "contents" "elm.swallow.mode";
+ data.item: "mode_part" "elm.swallow.origin";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.text.mode";
+ clip_to: "disclip";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2.relative: 0.5 1.0;
+ color: 0 0 0 255;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part { name: "elm.swallow.mode";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.relative: 0.5 0.0;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ // Transparent part between base parts and slidable parts
+ part { name: "event_block_layer";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 0 0 0 0;
+ }
+ description { state: "repeat_events" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "pers";
+ clip_to: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.relative: 0.0 1.0;
+ }
+ }
+ part { name: "elm.swallow.origin";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ }
+ description { state: "slide" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1 0;
+ rel2.relative: 2 1;
+ }
+ description { state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 0.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ description { state: "rotate" 1.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 90.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "slide_right";
+ signal: "elm,state,slide,active";
+ source: "elm";
+ action: STATE_SET "slide" 0.0;
+ target: "elm.swallow.origin";
+ transition: ACCELERATE 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "unblock_event";
+ action: STATE_SET "repeat_events" 0.0;
+ target: "event_block_layer";
+ }
+ program {
+ name: "slide_left";
+ signal: "elm,state,slide,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "slide_left2";
+ }
+ program {
+ name: "slide_left2";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ transition: DECELERATE 0.5;
+ after: "slide_left_finished";
+ }
+ program {
+ name: "slide_left_finished";
+ action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+ }
+ program {
+ name: "rotate_on";
+ signal: "elm,state,rotate,active";
+ source: "elm";
+ action: STATE_SET "rotate" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_on2";
+ }
+ program {
+ name: "rotate_on2";
+ action: STATE_SET "rotate" 1.0;
+ target: "elm.swallow.origin";
+ transition: LINEAR 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "rotate_off";
+ signal: "elm,state,rotate,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "rotate_off2";
+ }
+ program {
+ name: "rotate_off2";
+ action: STATE_SET "rotate" 0.0;
+ transition: LINEAR 0.5;
+ target: "elm.swallow.origin";
+ after: "rotate_off3";
+ }
+ program {
+ name: "rotate_off3";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_off_finished";
+ }
+ program {
+ name: "rotate_off_finished";
+ action: SIGNAL_EMIT "elm,state,rotate,passive,finished" "elm";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_odd/mode/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.mode";
+ data.item: "contents" "elm.swallow.mode";
+ data.item: "mode_part" "elm.swallow.origin";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.text.mode";
+ clip_to: "disclip";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2.relative: 0.5 1.0;
+ color: 0 0 0 255;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part { name: "elm.swallow.mode";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.relative: 0.5 0.0;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ // Transparent part between base parts and slidable parts
+ part { name: "event_block_layer";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 0 0 0 0;
+ }
+ description { state: "repeat_events" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "pers";
+ clip_to: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.relative: 0.0 1.0;
+ }
+ }
+ part { name: "elm.swallow.origin";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ }
+ description { state: "slide" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1 0;
+ rel2.relative: 2 1;
+ }
+ description { state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 0.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ description { state: "rotate" 1.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 90.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "slide_right";
+ signal: "elm,state,slide,active";
+ source: "elm";
+ action: STATE_SET "slide" 0.0;
+ target: "elm.swallow.origin";
+ transition: ACCELERATE 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "unblock_event";
+ action: STATE_SET "repeat_events" 0.0;
+ target: "event_block_layer";
+ }
+ program {
+ name: "slide_left";
+ signal: "elm,state,slide,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "slide_left2";
+ }
+ program {
+ name: "slide_left2";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ transition: DECELERATE 0.5;
+ after: "slide_left_finished";
+ }
+ program {
+ name: "slide_left_finished";
+ action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+ }
+ program {
+ name: "rotate_on";
+ signal: "elm,state,rotate,active";
+ source: "elm";
+ action: STATE_SET "rotate" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_on2";
+ }
+ program {
+ name: "rotate_on2";
+ action: STATE_SET "rotate" 1.0;
+ target: "elm.swallow.origin";
+ transition: LINEAR 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "rotate_off";
+ signal: "elm,state,rotate,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "rotate_off2";
+ }
+ program {
+ name: "rotate_off2";
+ action: STATE_SET "rotate" 0.0;
+ transition: LINEAR 0.5;
+ target: "elm.swallow.origin";
+ after: "rotate_off3";
+ }
+ program {
+ name: "rotate_off3";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_off_finished";
+ }
+ program {
+ name: "rotate_off_finished";
+ action: SIGNAL_EMIT "elm,state,rotate,passive,finished" "elm";
+ }
+ }
+ }
+
++=======
+ group { name: "elm/genlist/item/default/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ data.item: "flips" "elm.text.flip";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "reorder_bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -7 -7;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 9 9;
+ }
+ image {
+ normal: "bt_bases.png";
+ border: 6 6 6 6;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 1.0;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ description { state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ description { state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ description { state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.text.flip";
+ clip_to: "disclip";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1.to_y: "elm.text";
+ rel2.to_y: "elm.text";
+ }
+ description { state: "flip_enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ set_state(PART:"elm.text", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ set_state(PART:"elm.text", "default", vl);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program { name: "flip_enabled";
+ signal: "elm,state,flip,enabled";
+ source: "elm";
+ action: STATE_SET "flip_enabled" 0.0;
+ target: "elm.text";
+ target: "elm.text.flip";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ }
+ program { name: "flip_disabled";
+ signal: "elm,state,flip,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.text";
+ target: "elm.text.flip";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ }
+ }
+ }
+ group { name: "elm/genlist/item/group_index/default";
+ alias: "elm/genlist/item_compress/group_index/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "group_index.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "group_index.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress/message/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.title.1 elm.title.2 elm.text";
+ // data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ styles {
+ style { name: "genlist_textblock_style";
+ base: "font=Sans font_size=10 color=#000 wrap=char text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ }
+ style { name: "genlist_textblock_style2";
+ base: "font=Sans font_size=10 color=#fff wrap=char text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.title.1";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ // min: 16 16;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ align: 0.0 0.0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ // min: 1 1;
+ align: 0.0 0.0;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.title.2";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.title.1";
+ relative: 0.0 1.0;
+ offset: 4 0;
+ }
+ rel2 {
+ to_y: "elm.title.1";
+ relative: 1.0 1.0;
+ offset: -5 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ align: 0.0 0.0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ // min: 1 1;
+ align: 0.0 0.0;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // fixed: 0 1;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.title.2";
+ relative: 0.0 1.0;
+ offset: 4 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ align: 0.0 0.0;
+ text {
+ style: "genlist_textblock_style";
+ min: 0 1;
+ // min: 1 1;
+ align: 0.0 0.0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_textblock_style2";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.title.1";
+ target: "elm.title.2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.title.1";
+ target: "elm.title.2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/default/default";
+ inherit: "elm/genlist/item/default/default";
+ data.item: "texts" "elm.text";
+ parts {
+ part { name: "elm.text";
+ description { state: "default" 0.0;
+ text {
+ min: 0 1;
+ }
+ }
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/default/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_left.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "reorder_bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -7 -7;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 9 9;
+ }
+ image {
+ normal: "bt_bases.png";
+ border: 6 6 6 6;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_left.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ description { state: "active" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "active", vl);
+ }
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "default", vl);
+ }
+ }
+ program { name: "to_rtl";
+ signal: "edje,state,rtl";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.0) {
+ set_state(PART:"arrow", st, 0.1);
+ }
+ }
+ }
+ program { name: "to_ltr";
+ signal: "edje,state,ltr";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.1) {
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_compress/default/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_left.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_left.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ description { state: "active" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "active", vl);
+ }
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "default", vl);
+ }
+ }
+ program { name: "to_rtl";
+ signal: "edje,state,rtl";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.0) {
+ set_state(PART:"arrow", st, 0.1);
+ }
+ }
+ }
+ program { name: "to_ltr";
+ signal: "edje,state,ltr";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.1) {
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ }
+ }
+ }
+ group { name: "elm/genlist/item/default_style/default";
+ styles
+ {
+ style { name: "genlist_style";
+ base: "font=Sans font_size=10 align=left valign=0.5 color=#000 text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ tag: "tab" "\t";
+ }
+ style { name: "genlist_selected_style";
+ base: "font=Sans font_size=10 align=left valign=0.5 color=#fff text_class=list_item";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ tag: "tab" "\t";
+ }
+ }
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/default_style/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/default_style/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/default_style/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 16 28;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXTBLOCK;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 0 1;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ to_y: "base";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ to_y: "base";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ text {
+ style: "genlist_style";
+ min: 1 1;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "genlist_selected_style";
+ }
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+
+ group { name: "elm/genlist/item/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_compress/double_label/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/icon_top_text_bottom/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 0.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_odd/icon_top_text_bottom/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 0.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/tree/icon_top_text_bottom/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+ group { name: "elm/genlist/tree_odd/icon_top_text_bottom/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.5 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -4 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_y: "elm.swallow.icon";
+ relative: 0.0 1.0;
+ offset: 0 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ // min: 0 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+
+ ///////////////////////////////////////////////////////////////////////////////
+ group { name: "elm/genlist/tree_compress_odd/double_label/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text elm.text.sub";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ // data.item: "states" "";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.sub";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ // min: 16 16;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.5;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ // min: 1 1;
+ min: 0 1;
+ align: 0.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ target: "elm.text.sub";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ target: "arrow";
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "arrow";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.album-artist";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.album-artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.album-artist";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.album-artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.album-artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media-album/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.trackno elm.text.length";
+ data.item: "states" "elm.state.trackno";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ script {
+ public dot_visible;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part {
+ name: "elm.text.trackno";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 {
+ to_y: "elm.text.title";
+ relative: 0.0 0.0;
+ offset: 5 0;
+ }
+ rel2 {
+ to_y: "elm.text.title";
+ relative: 0.0 1.0;
+ offset: 20 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part {
+ name: "dot";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ visible: 0;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 0.0;
+ offset: 1 0;
+ }
+ rel2 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 1.0;
+ offset: 1 0;
+
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.0 0.5;
+ text: ".";
+ }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ visible: 1;
+ }
+ }
+ programs {
+ program {
+ signal: "elm,state,elm.state.trackno,active";
+ source: "elm";
+ script {
+ set_state(PART:"dot", "visible", 0.0);
+ set_int(dot_visible, 1);
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "dot";
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.length";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.trackno";
+ target: "elm.text.length";
+ after: "dot_active";
+ }
+ program {
+ name: "dot_active";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "selected", 0.0);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ transition: LINEAR 0.1;
+ after: "dot_passive";
+ }
+ program {
+ name: "dot_passive";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "visible", 0.0);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media-album/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.trackno elm.text.length";
+ data.item: "states" "elm.state.trackno";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ script {
+ public dot_visible;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part {
+ name: "elm.text.trackno";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ align: 0.0 0.0;
+ fixed: 1 0;
+ rel1 {
+ to_y: "elm.text.title";
+ relative: 0.0 0.0;
+ offset: 5 0;
+ }
+ rel2 {
+ to_y: "elm.text.title";
+ relative: 0.0 1.0;
+ offset: 20 0;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 1.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part {
+ name: "dot";
+ type: TEXT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ color: 255 255 255 255;
+ visible: 0;
+ fixed: 1 1;
+ align: 0.0 0.0;
+ rel1 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 0.0;
+ offset: 1 0;
+ }
+ rel2 {
+ to_x: "elm.text.trackno";
+ to_y: "elm.text.title";
+ relative: 1.0 1.0;
+ offset: 1 0;
+
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.0 0.5;
+ text: ".";
+ }
+ }
+ description {
+ state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ visible: 1;
+ }
+ }
+ programs {
+ program {
+ signal: "elm,state,elm.state.trackno,active";
+ source: "elm";
+ script {
+ set_state(PART:"dot", "visible", 0.0);
+ set_int(dot_visible, 1);
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "dot";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.length";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ after: "dot_active";
+ }
+ program {
+ name: "dot_active";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "selected", 0.0);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.length";
+ target: "elm.text.trackno";
+ transition: LINEAR 0.1;
+ after: "dot_passive";
+ }
+ program {
+ name: "dot_passive";
+ script {
+ if (get_int(dot_visible) == 1)
+ set_state(PART:"dot", "visible", 0.0);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_compress/media-preview/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.artist";
+ data.item: "contents" "elm.swallow.preview";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.preview";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ min: 68 68;
+ max: 68 68;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+ group { name: "elm/genlist/item_compress_odd/media-preview/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.title elm.text.artist";
+ data.item: "contents" "elm.swallow.preview";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part { name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ }
+ part { name: "elm.swallow.preview";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ min: 68 68;
+ max: 68 68;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ }
+ }
+ part { name: "elm.text.title";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 0.5;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ }
+ part { name: "elm.text.artist";
+ clip_to: "disclip";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.preview";
+ relative: 1.0 0.5;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 8;
+ min: 0 1;
+ align: 0.0 0.5;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 128 128 128 255;
+ color3: 0 0 0 32;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text.title";
+ target: "elm.text.artist";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/mode/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.mode";
+ data.item: "contents" "elm.swallow.mode";
+ data.item: "mode_part" "elm.swallow.origin";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.text.mode";
+ clip_to: "disclip";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2.relative: 0.5 1.0;
+ color: 0 0 0 255;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part { name: "elm.swallow.mode";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.relative: 0.5 0.0;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ // Transparent part between base parts and slidable parts
+ part { name: "event_block_layer";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 0 0 0 0;
+ }
+ description { state: "repeat_events" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "pers";
+ clip_to: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.relative: 0.0 1.0;
+ }
+ }
+ part { name: "elm.swallow.origin";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ }
+ description { state: "slide" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1 0;
+ rel2.relative: 2 1;
+ }
+ description { state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 0.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ description { state: "rotate" 1.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 90.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ }
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "slide_right";
+ signal: "elm,state,slide,active";
+ source: "elm";
+ action: STATE_SET "slide" 0.0;
+ target: "elm.swallow.origin";
+ transition: ACCELERATE 0.5 CURRENT;
+ after: "unblock_event";
+ }
+ program {
+ name: "unblock_event";
+ action: STATE_SET "repeat_events" 0.0;
+ target: "event_block_layer";
+ }
+ program {
+ name: "slide_left";
+ signal: "elm,state,slide,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "slide_left2";
+ }
+ program {
+ name: "slide_left2";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ transition: DECELERATE 0.5 CURRENT;
+ after: "slide_left_finished";
+ }
+ program {
+ name: "slide_left_finished";
+ action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+ }
+ program {
+ name: "rotate_on";
+ signal: "elm,state,rotate,active";
+ source: "elm";
+ action: STATE_SET "rotate" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_on2";
+ }
+ program {
+ name: "rotate_on2";
+ action: STATE_SET "rotate" 1.0;
+ target: "elm.swallow.origin";
+ transition: LINEAR 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "rotate_off";
+ signal: "elm,state,rotate,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "rotate_off2";
+ }
+ program {
+ name: "rotate_off2";
+ action: STATE_SET "rotate" 0.0;
+ transition: LINEAR 0.5;
+ target: "elm.swallow.origin";
+ after: "rotate_off3";
+ }
+ program {
+ name: "rotate_off3";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_off_finished";
+ }
+ program {
+ name: "rotate_off_finished";
+ action: SIGNAL_EMIT "elm,state,rotate,passive,finished" "elm";
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item_odd/mode/default";
+ data.item: "stacking" "below";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text.mode";
+ data.item: "contents" "elm.swallow.mode";
+ data.item: "mode_part" "elm.swallow.origin";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_2.png" COMP;
+ }
+
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ }
+ part { name: "elm.text.mode";
+ clip_to: "disclip";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel2.relative: 0.5 1.0;
+ color: 0 0 0 255;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.5 0.5;
+ text_class: "list_item";
+ }
+ }
+ }
+ part { name: "elm.swallow.mode";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.relative: 0.5 0.0;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ // Transparent part between base parts and slidable parts
+ part { name: "event_block_layer";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 1;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ color: 0 0 0 0;
+ }
+ description { state: "repeat_events" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "pers";
+ clip_to: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.relative: 0.0 1.0;
+ }
+ }
+ part { name: "elm.swallow.origin";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ }
+ description { state: "slide" 0.0;
+ inherit: "default" 0.0;
+ rel1.relative: 1 0;
+ rel2.relative: 2 1;
+ }
+ description { state: "rotate" 0.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 0.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ description { state: "rotate" 1.0;
+ inherit: "default" 0.0;
+ map {
+ perspective: "pers";
+ on: 1;
+ smooth: 1;
+ perspective_on: 1;
+ backface_cull: 1;
+ rotation {
+ center: "pers";
+ x: 90.0;
+ y: 0.0;
+ z: 0.0;
+ }
+ }
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "slide_right";
+ signal: "elm,state,slide,active";
+ source: "elm";
+ action: STATE_SET "slide" 0.0;
+ target: "elm.swallow.origin";
+ transition: ACCELERATE 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "unblock_event";
+ action: STATE_SET "repeat_events" 0.0;
+ target: "event_block_layer";
+ }
+ program {
+ name: "slide_left";
+ signal: "elm,state,slide,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "slide_left2";
+ }
+ program {
+ name: "slide_left2";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ transition: DECELERATE 0.5;
+ after: "slide_left_finished";
+ }
+ program {
+ name: "slide_left_finished";
+ action: SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+ }
+ program {
+ name: "rotate_on";
+ signal: "elm,state,rotate,active";
+ source: "elm";
+ action: STATE_SET "rotate" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_on2";
+ }
+ program {
+ name: "rotate_on2";
+ action: STATE_SET "rotate" 1.0;
+ target: "elm.swallow.origin";
+ transition: LINEAR 0.5;
+ after: "unblock_event";
+ }
+ program {
+ name: "rotate_off";
+ signal: "elm,state,rotate,passive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "event_block_layer";
+ after: "rotate_off2";
+ }
+ program {
+ name: "rotate_off2";
+ action: STATE_SET "rotate" 0.0;
+ transition: LINEAR 0.5;
+ target: "elm.swallow.origin";
+ after: "rotate_off3";
+ }
+ program {
+ name: "rotate_off3";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.origin";
+ after: "rotate_off_finished";
+ }
+ program {
+ name: "rotate_off_finished";
+ action: SIGNAL_EMIT "elm,state,rotate,passive,finished" "elm";
+ }
+ }
+ }
+ group { name: "elm/genlist/item/edit/default";
+ data.item: "contents" "elm.edit.icon.1 elm.edit.icon.2";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ }
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ to_x: "elm.padding.right";
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ description {
+ state: "selected" 1.0;
+ inherit: "selected" 0.0;
+ }
+ }
+ part { name: "elm.padding.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 10 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel2.relative: 0.0 1.0;
+ }
+ }
+ part { name: "elm.padding.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 1.0 0.0;
+ rel1.relative: 1.0 0.0;
+ }
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "elm.edit.icon.1";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ color: 255 255 255 255;
+ rel1 {
+ to_x: "elm.padding.left";
+ relative: 1.0 0.0;
+ }
+ rel2 {
+ to_x: "elm.padding.left";
+ relative: 1.0 1.0;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ align: 0.0 0.5;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "elm.padding.icon1.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.edit.icon.1";
+ }
+ rel2.to_x: "elm.edit.icon.1";
+ }
+ }
+ part { name: "elm.swallow.edit.content";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "elm.padding.icon1.right";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.icon2.left";
+ }
+ }
+ description { state: "flipped" 0.0;
+ inherit: "default" 0.0;
+ rel1.to_x: "elm.padding.left";
+ rel2 {
+ relative: 1.3 1.0;
+ to_x: "elm.padding.right";
+ }
+ }
+ }
+ part { name: "elm.padding.icon2.left";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
+ visible: 0;
+ color: 255 0 255 255;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.edit.icon.2";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.edit.icon.2";
+ }
+ }
+ }
+ part { name: "elm.edit.icon.2";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 0.0 0.0;
+ to_x: "elm.padding.right";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "elm.padding.right";
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.5;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "selected", vl);
+ set_state(PART:"fg1", "selected", vl);
+ set_state(PART:"fg2", "selected", vl);
+ }
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"base", st, 30, vl);
+ set_state(PART:"bg", "default", vl);
+ set_state(PART:"fg1", "default", vl);
+ set_state(PART:"fg2", "default", vl);
+ }
+ }
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ // edit mode signal
+ program { name: "edit_mode_enabled_effect";
+ signal: "elm,state,edit,enabled,effect";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ }
+ program { name: "edit_mode_disabled_effect";
+ signal: "elm,state,edit,disabled,effect";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.7;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ }
+ program { name: "edit_mode_enabled";
+ signal: "elm,state,edit,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ }
+ program { name: "edit_mode_disabled";
+ signal: "elm,state,edit,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ }
+ program {
+ name: "enable_flip_mode";
+ signal: "elm,state,flip,enabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ after: "enable_flip_mode_next";
+ }
+ program {
+ name: "enable_flip_mode_next";
+ action: STATE_SET "flipped" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.swallow.edit.content";
+ }
+ program {
+ name: "disable_flip_mode";
+ signal: "elm,state,flip,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.swallow.edit.content";
+ target: "elm.edit.icon.1";
+ target: "elm.edit.icon.2";
+ }
+ }
+ }
+
+ #define GENLIST_PART_MAP_START( param_x, param_y, param_z ) \
+ description { state: "map_transition" 0.0; \
+ inherit: "default" 0.0; \
+ color: 50 50 50 100; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ visible: 0; \
+ }
+
+ #define GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \
+ description { \
+ state: "map_rotate" 0.0; \
+ inherit: "default" 0.0; \
+ map { \
+ perspective: "point"; \
+ on: 1; \
+ smooth: 1; \
+ perspective_on: 1; \
+ backface_cull: 1; \
+ rotation { \
+ center: "point"; \
+ x: param_x; \
+ y: param_y; \
+ z: param_z; \
+ } \
+ } \
+ }
+
+ group { name: "elm/genlist/tree/tree_effect/default";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.swallow.icon elm.swallow.end";
+ data.item: "treesize" "20";
+ images {
+ image: "bt_sm_base1.png" COMP;
+ image: "bt_sm_shine.png" COMP;
+ image: "bt_sm_hilight.png" COMP;
+ image: "ilist_1.png" COMP;
+ image: "ilist_2.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ image: "icon_arrow_left.png" COMP;
+ image: "icon_arrow_right.png" COMP;
+ image: "icon_arrow_down.png" COMP;
+ }
+ parts {
+ part { name: "point";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 0.0; }
+ }
+ }
+ part {
+ name: "event";
+ type: RECT;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "reorder_bg";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -7 -7;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 9 9;
+ }
+ image {
+ normal: "bt_bases.png";
+ border: 6 6 6 6;
+ }
+ }
+ description { state: "enabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ offset: 0 0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ offset: -1 0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description {
+ state: "default" 1.0;
+ inherit: "default" 0.0;
+ image.normal: "ilist_2.png";
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "bg";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -5 -5;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_sm_base1.png";
+ border: 6 6 6 6;
+ }
+ image.middle: SOLID;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: -2 -2;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: 1 1;
+ }
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "elm.swallow.pad";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "arrow";
+ clip_to: "disclip";
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ aspect: 1.0 1.0;
+ rel1 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 0.0;
+ offset: -1 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.pad";
+ relative: 1.0 1.0;
+ offset: -1 -5;
+ }
+ image.normal: "icon_arrow_right.png";
+ }
+ description { state: "default" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_left.png";
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ description { state: "active" 0.1;
+ inherit: "default" 0.0;
+ image.normal: "icon_arrow_down.png";
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "elm.swallow.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 0.0 0.5;
+ rel1 {
+ to_x: "arrow";
+ relative: 1.0 0.0;
+ offset: 4 4;
+ }
+ rel2 {
+ to_x: "arrow";
+ relative: 1.0 1.0;
+ offset: 4 -5;
+ }
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "elm.swallow.end";
+ clip_to: "disclip";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ align: 1.0 0.5;
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ rel1 {
+ relative: 1.0 0.0;
+ offset: -5 4;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -5 -5;
+ }
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "elm.text";
+ clip_to: "disclip";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to_x: "elm.swallow.icon";
+ relative: 1.0 0.0;
+ offset: 0 4;
+ }
+ rel2 {
+ to_x: "elm.swallow.end";
+ relative: 0.0 1.0;
+ offset: -1 -5;
+ }
+ color: 0 0 0 255;
+ color3: 0 0 0 0;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: -1.0 0.5;
+ text_class: "list_item";
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "fg1";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.relative: 1.0 0.5;
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_hilight.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "fg2";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ image {
+ normal: "bt_sm_shine.png";
+ border: 6 6 6 0;
+ }
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ GENLIST_PART_MAP_START(-90.0, 0.0, 0.0)
+ GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0)
+ }
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ }
+ programs {
+ // signal: elm,state,%s,active
+ // a "check" item named %s went active
+ // signal: elm,state,%s,passive
+ // a "check" item named %s went passive
+ // default is passive
+ program {
+ name: "odd";
+ signal: "elm,state,odd";
+ source: "elm";
+ action: STATE_SET "default" 1.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "even";
+ signal: "elm,state,even";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "base_sh";
+ target: "base";
+ }
+ program {
+ name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ }
+ program {
+ name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ target: "fg1";
+ target: "fg2";
+ target: "elm.text";
+ transition: LINEAR 0.1;
+ }
+ program {
+ name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ program {
+ name: "go_reorder_disabled";
+ signal: "elm,state,reorder,disabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "go_reorder_enabled";
+ signal: "elm,state,reorder,enabled";
+ source: "elm";
+ action: STATE_SET "enabled" 0.0;
+ target: "reorder_bg";
+ transition: DECELERATE 0.5;
+ }
+ program {
+ name: "expand";
+ signal: "mouse,up,1";
+ source: "arrow";
+ action: SIGNAL_EMIT "elm,action,expand,toggle" "elm";
+ }
+ program {
+ name: "go_expanded";
+ signal: "elm,state,expanded";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "active", vl);
+ }
+ }
+ program {
+ name: "go_contracted";
+ signal: "elm,state,contracted";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ set_state(PART:"arrow", "default", vl);
+ }
+ }
+ program { name: "to_rtl";
+ signal: "edje,state,rtl";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.0) {
+ set_state(PART:"arrow", st, 0.1);
+ }
+ }
+ }
+ program { name: "to_ltr";
+ signal: "edje,state,ltr";
+ source: "edje";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"arrow", st, 30, vl);
+ if (vl == 0.1) {
+ set_state(PART:"arrow", st, 0.0);
+ }
+ }
+ }
+ program {
+ name: "rotaion_transition";
+ signal: "flip_item";
+ action: STATE_SET "map_transition" 0.0;
+ after: "rotation";
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "rotation";
+ action: STATE_SET "map_rotate" 0.0;
+ transition: LINEAR 0.2;
+ after: "rotation_end";
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "rotation_end";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "rotation_transition2";
+ signal: "elm,state,contract_flip";
+ action: STATE_SET "map_rotate" 0.0;
+ after: "rotation2";
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "rotation2";
+ action: STATE_SET "map_transition" 0.0;
+ transition: LINEAR 0.5;
+ after: "rotation3";
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "rotation3";
+ action: STATE_SET "hide" 0.0;
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "show";
+ signal: "elm,state,show";
+ action: STATE_SET "default" 0.0;
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ program {
+ name: "hide";
+ signal: "elm,state,hide";
+ action: STATE_SET "hide" 0.0;
+ target: "reorder_bg";
+ target: "base_sh";
+ target: "base";
+ target: "bg";
+ target: "arrow";
+ target: "elm.swallow.pad";
+ target: "elm.swallow.icon";
+ target: "elm.swallow.end";
+ target: "elm.text";
+ target: "fg1";
+ target: "fg2";
+ }
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
}
}
++<<<<<<< HEAD
+ part { name: "over1";
++=======
+ part { name: "over1";
++>>>>>>> remotes/origin/upstream
mouse_events: 0;
clip_to: "clip2";
description { state: "default" 0.0;
}
}
}
++<<<<<<< HEAD
++=======
+ group { name: "elm/index/base/horizontal/default";
+ images {
+ image: "bt_base1.png" COMP;
+ image: "bt_base2.png" COMP;
+ image: "bt_hilight.png" COMP;
+ image: "bt_shine.png" COMP;
+ }
+ parts {
+ part { name: "clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ description { state: "active" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "clip2";
+ type: RECT;
+ mouse_events: 0;
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ visible: 0;
+ color: 255 255 255 0;
+ }
+ description { state: "active" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "elm.swallow.index.0";
+ type: SWALLOW;
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ align: 0.5 1.0;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.5 1;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 0.5 1;
+ offset: -1 -1;
+ }
+ }
+ }
+ part { name: "button_image";
+ mouse_events: 1;
+ clip_to: "clip2";
+ description { state: "default" 0.0;
+ rel1 {
+ to: "elm.text";
+ offset: -5 -5;
+ }
+ rel2 {
+ to: "elm.text";
+ offset: 4 4;
+ }
+ image {
+ normal: "bt_base2.png";
+ border: 7 7 7 7;
+ }
+ image.middle: SOLID;
+ }
+ }
+ part { name: "elm.text.body";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "clip2";
+ description { state: "default" 0.0;
+ align: 0.5 1;
+ fixed: 1 1;
+ rel1 {
+ to: "elm.text";
+ relative: 0.0 0.0;
+ }
+ rel2 {
+ to: "elm.text";
+ relative: 0.1 0.0;
+ }
+ color: 224 224 224 255;
+ color3: 0 0 0 64;
+ text {
+ font: "Sans,Edje-Vera";
+ size: 20;
+ min: 1 1;
+ align: 0.5 1;
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ effect: SOFT_SHADOW;
+ mouse_events: 0;
+ scale: 1;
+ clip_to: "clip2";
+ description { state: "default" 0.0;
+ align: 0.5 1;
+ fixed: 1 1;
+ rel1 {
+ to_x: "elm.dragable.pointer";
+ to_y: "elm.swallow.event.0";
+ relative: 0.5 0;
+ offset: 0 -16;
+ }
+ rel2 {
+ to_x: "elm.dragable.pointer";
+ to_y: "elm.swallow.event.0";
+ relative: 0.5 0;
+ offset: -1 -16;
+ }
+ color: 255 0 0 255;
+ color3: 0 0 0 64;
+ text {
+ font: "Sans,Edje-Vera";
+ size: 20;
+ min: 1 1;
+ align: 0.5 1;
+ }
+ }
+ }
+ part { name: "over1";
+ mouse_events: 0;
+ clip_to: "clip2";
+ description { state: "default" 0.0;
+ rel1 {
+ to: "button_image";
+ }
+ rel2 {
+ to: "button_image";
+ relative: 0.5 1;
+ }
+ image {
+ normal: "bt_hilight.png";
+ border: 7 7 7 0;
+ }
+ }
+ }
+ part { name: "over2";
+ mouse_events: 1;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ clip_to: "clip2";
+ description { state: "default" 0.0;
+ rel1 {
+ to: "button_image";
+ }
+ rel2 {
+ to: "button_image";
+ }
+ image {
+ normal: "bt_shine.png";
+ border: 7 7 7 7;
+ }
+ }
+ }
+ part { name: "elm.dragable.pointer";
+ type: RECT;
+ mouse_events: 0;
+ dragable {
+ x: 1 1 0;
+ y: 1 1 0;
+ }
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ min: 8 8;
+ max: 8 8;
+ visible: 0;
+ rel1 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ offset: 0 0;
+ }
+ }
+ }
+ part { name: "elm.swallow.event.0";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ align: 0.5 1;
+ fixed: 1 1;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: -1 0;
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ offset: -1 -1;
+ }
+ }
+ }
+ }
+ programs {
+ program { name: "active";
+ signal: "elm,state,active";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ transition: DECELERATE 0.5;
+ target: "clip";
+ }
+ program { name: "inactive";
+ signal: "elm,state,inactive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "clip";
+ }
+ program { name: "active2";
+ signal: "elm,indicator,state,active";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ transition: DECELERATE 0.5;
+ target: "clip2";
+ }
+ program { name: "inactive2";
+ signal: "elm,indicator,state,inactive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "clip2";
+ }
+ }
+ }
+ group { name: "elm/index/item/horizontal/default";
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ images {
+ image: "ilist_1.png" COMP;
+ image: "ilist_item_shadow.png" COMP;
+ }
+ parts {
+ part {
+ name: "base_sh";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 10;
+ fixed: 1 1;
+ rel1 {
+ to: "base";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to: "base";
+ relative: 1.0 1.0;
+ }
+ image {
+ normal: "ilist_item_shadow.png";
+ }
+ fill.smooth: 0;
+ }
+ }
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_1.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ offset: 0 -16;
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "base";
+ relative: 0.25 0.0;
+ }
+ rel2 {
+ to: "base";
+ relative: 0.75 1.0;
+ }
+ color: 0 0 0 128;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.5 0.5;
+ }
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 255;
+ }
+ }
+ }
+ programs {
+ program { name: "active";
+ signal: "elm,state,active";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.text";
+ target: "base";
+ }
+ program { name: "inactive";
+ signal: "elm,state,inactive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.text";
+ target: "base";
+ }
+ }
+ }
+ group { name: "elm/index/item_odd/horizontal/default";
+ data.item: "stacking" "below";
+ images {
+ image: "ilist_2.png" COMP;
+ }
+ parts {
+ part {
+ name: "base";
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "ilist_2.png";
+ border: 2 2 2 2;
+ }
+ fill.smooth: 0;
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ offset: 0 -16;
+ }
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ to: "base";
+ relative: 0.25 0.0;
+ }
+ rel2 {
+ to: "base";
+ relative: 0.75 1.0;
+ }
+ color: 0 0 0 128;
+ text {
+ font: "Sans";
+ size: 10;
+ min: 1 1;
+ align: 0.5 0.5;
+ }
+ }
+ description { state: "active" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 255;
+ }
+ }
+ }
+ programs {
+ program { name: "active";
+ signal: "elm,state,active";
+ source: "elm";
+ action: STATE_SET "active" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.text";
+ target: "base";
+ }
+ program { name: "inactive";
+ signal: "elm,state,inactive";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ transition: DECELERATE 0.5;
+ target: "elm.text";
+ target: "base";
+ }
+ }
+ }
++>>>>>>> remotes/origin/upstream
data.item: "max_font_size" "60";
styles {
style { name: "textblock_style";
++<<<<<<< HEAD
+ base: "font=Sans font_size=10 color=#000 text_class=label";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part { name: "label.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1 { relative: 0 0; to: "label.swallow.background"; }
+ rel2 { relative: 1 1; to: "label.swallow.background"; }
++=======
+ base: "font=Sans font_size=10 color=#000 text_class=label left_margin=4 right_margin=4";
+ tag: "hilight" "+ font_weight=Bold";
+ tag: "b" "+ font_weight=Bold";
+ }
+ }
+ parts {
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "elm.text";
data.item: "max_font_size" "60";
styles {
style { name: "textblock_style2";
++<<<<<<< HEAD
+ base: "font=Sans:style=Bold font_size=10 align=center color=#fff wrap=word text_class=label";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "hilight" "+ color=#ffff";
+ tag: "b" "+ color=#ffff";
+ tag: "tab" "\t";
+ }
+ }
+ parts {
+ part { name: "label.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ visible: 1;
+ rel1 { relative: 0 0; to: "elm.text"; }
+ rel2 { relative: 1 1; to: "elm.text"; }
+ }
+ }
++=======
+ base: "font=Sans:style=Bold font_size=10 align=center color=#fff wrap=word text_class=label left_margin=4 right_margin=4";
+ tag: "hilight" "+ color=#ffff";
+ tag: "b" "+ color=#ffff";
+ }
+ }
+ parts {
++>>>>>>> remotes/origin/upstream
part { name: "elm.text";
type: TEXTBLOCK;
scale: 1;
}
parts {
++<<<<<<< HEAD
+ part { name: "label.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 { relative: 0 0; to: "label.swallow.background"; }
+ rel2 { relative: 1 1; to: "label.swallow.background"; }
++=======
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "elm.text";
}
parts {
++<<<<<<< HEAD
+ part { name: "label.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 { relative: 0 0; to: "label.swallow.background"; }
+ rel2 { relative: 1 1; to: "label.swallow.background"; }
++=======
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "elm.text";
}
parts {
++<<<<<<< HEAD
+ part { name: "label.swallow.background";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ visible: 1;
+ color: 255 255 255 255;
+ rel1 { relative: 0 0; to: "label.swallow.background"; }
+ rel2 { relative: 1 1; to: "label.swallow.background"; }
++=======
+ part { name: "label.text.clip";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "elm.text";
}
}
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
description { state: "default" 0.0;
min: 40 40;
max: 40 40;
++<<<<<<< HEAD
+ fixed: 1 1;
++=======
+ fixed: 1 1;
++>>>>>>> remotes/origin/upstream
align: 1 0.5;
rel1.to: "elm.text.title";
rel1.relative: 0 0;
{
state: "default" 0.0;
color: 255 255 255 0;
++<<<<<<< HEAD
+ rel1.relative: 0.0 0.0;
+ rel1.offset: 0 0;
+ rel2.relative: 1.0 1.0;
++=======
++>>>>>>> remotes/origin/upstream
rel2.offset: -1 -1;
}
description
}
part
{
++<<<<<<< HEAD
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel2.offset: -20 -1;
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "clipper";
type: RECT;
mouse_events: 0;
}
part
{
++<<<<<<< HEAD
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "btn";
type: IMAGE;
mouse_events: 1;
image.normal: "icon_arrow_right.png";
}
}
++<<<<<<< HEAD
++=======
+ part
+ {
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel2.offset: -20 -1;
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
programs
{
state: "hidden" 0.0;
inherit: "default" 0.0;
rel1.relative: 0.0 -1.0;
++<<<<<<< HEAD
+ rel1.offset: 0 21;
++=======
+ rel1.offset: 0 -21;
++>>>>>>> remotes/origin/upstream
rel2.relative: 1.0 0.0;
rel2.offset: -1 20;
}
}
part
{
++<<<<<<< HEAD
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel2.offset: -1 -20;
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "clipper";
type: RECT;
mouse_events: 0;
}
part
{
++<<<<<<< HEAD
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "btn";
type: IMAGE;
mouse_events: 1;
description
{
state: "default" 0.0;
++<<<<<<< HEAD
+ max: 32 48;
+ fixed: 1 1;
+ align: 0.5 1.0;
+ rel1
+ {
+ relative: 0.0 1.0;
+ offset: -2 2;
++=======
+ max: 48 32;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1
+ {
+ relative: 0.0 1.0;
+ offset: 0 -6;
++>>>>>>> remotes/origin/upstream
to_y: "base";
}
rel2.to_y: "bg";
image
{
normal: "bt_base1.png";
++<<<<<<< HEAD
+ border: 12 4 5 0;
++=======
+ border: 12 4 0 5;
++>>>>>>> remotes/origin/upstream
}
fill.smooth: 0;
}
image.normal: "icon_arrow_down.png";
}
}
++<<<<<<< HEAD
++=======
+ part
+ {
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel2.to: "bg";
+ rel2.offset: -1 -20;
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
programs
{
state: "hidden" 0.0;
inherit: "default" 0.0;
rel1.relative: 0.0 1.0;
++<<<<<<< HEAD
+ rel1.offset: 0 20;
+ rel2.relative: 1.0 2.0;
+ rel2.offset: -1 21;
+ }
+ }
+ part
+ {
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel1.offset: -1 -20;
+ rel2.to: "bg";
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
++=======
+ rel1.offset: -1 -24;
+ rel2.relative: 1.0 2.0;
+ rel2.offset: 0 -21;
++>>>>>>> remotes/origin/upstream
}
}
part
}
part
{
++<<<<<<< HEAD
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "btn";
type: IMAGE;
mouse_events: 1;
description
{
state: "default" 0.0;
++<<<<<<< HEAD
+ max: 32 48;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1
+ {
+ relative: 0.0 -1.0;
+ offset: -2 0;
+ to_y: "base";
+ }
+ rel2.to_y: "bg";
+ image
+ {
+ normal: "bt_base1.png";
+ border: 12 4 0 5;
++=======
+ max: 48 32;
+ fixed: 1 1;
+ align: 0.5 0.0;
+ rel1.to_y: "bg";
+ rel2{
+ relative: 1.0 0.0;
+ offset: 0 5;
+ to_y: "base";
+ }
+ image
+ {
+ normal: "bt_base1.png";
+ border: 4 12 5 0;
++>>>>>>> remotes/origin/upstream
}
fill.smooth: 0;
}
image.normal: "icon_arrow_up.png";
}
}
++<<<<<<< HEAD
++=======
+ part
+ {
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel1.offset: -1 20;
+ rel2.to: "bg";
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
programs
{
}
part
{
++<<<<<<< HEAD
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel1.offset: 20 0;
+ rel2.to: "bg";
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "clipper";
type: RECT;
mouse_events: 0;
}
part
{
++<<<<<<< HEAD
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
+ part
+ {
++=======
++>>>>>>> remotes/origin/upstream
name: "btn";
type: IMAGE;
mouse_events: 1;
image.normal: "icon_arrow_left.png";
}
}
++<<<<<<< HEAD
++=======
+ part
+ {
+ name: "base";
+ type: IMAGE;
+ mouse_events: 0;
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "bg";
+ rel1.offset: 20 0;
+ rel2.to: "bg";
+ image
+ {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
+ }
+ }
+ part
+ {
+ name: "elm.swallow.content";
+ type: SWALLOW;
+ clip_to: "clipper";
+ description
+ {
+ state: "default" 0.0;
+ rel1.to: "clipper";
+ rel2.to: "clipper";
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
programs
{
image: "bt_hilight.png" COMP;
image: "bt_shine.png" COMP;
image: "bt_glow.png" COMP;
++<<<<<<< HEAD
+ image: "bt_dis_base.png" COMP;
+ image: "bt_dis_hilight.png" COMP;
++=======
++>>>>>>> remotes/origin/upstream
image: "arrow_right.png" COMP;
image: "arrow_left.png" COMP;
}
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
++<<<<<<< HEAD
+ image {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
++=======
+ visible: 0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "over1";
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
++<<<<<<< HEAD
+ image {
+ normal: "bt_dis_hilight.png";
+ border: 4 4 4 0;
+ }
++=======
+ visible: 0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "over2";
color: 255 255 255 255;
}
}
++<<<<<<< HEAD
++=======
+ part { name:"bar_disabled";
+ type: RECT;
+ description { state:"default" 0.0;
+ rel1.to_x: "elm.bar";
+ rel2.to_x: "elm.bar";
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
++>>>>>>> remotes/origin/upstream
//Arrow
part {
}
}
}
++<<<<<<< HEAD
++=======
+ //fix the pane
+ program {
+ name: "panes_fixed";
+ signal: "elm.panes.fixed";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "elm.bar";
+ target: "over1";
+ target: "bar_disabled";
+ }
+ //allow the movement by interaction
+ program {
+ name: "panes_unfixed";
+ signal: "elm.panes.unfixed";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.bar";
+ target: "over1";
+ target: "bar_disabled";
+ }
++>>>>>>> remotes/origin/upstream
}
}
image: "bt_hilight.png" COMP;
image: "bt_shine.png" COMP;
image: "bt_glow.png" COMP;
++<<<<<<< HEAD
+ image: "bt_dis_base.png" COMP;
+ image: "bt_dis_hilight.png" COMP;
++=======
++>>>>>>> remotes/origin/upstream
image: "arrow_up.png" COMP;
image: "arrow_down.png" COMP;
}
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
++<<<<<<< HEAD
+ image {
+ normal: "bt_dis_base.png";
+ border: 4 4 4 4;
+ }
++=======
+ visible: 0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "over1";
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
++<<<<<<< HEAD
+ image {
+ normal: "bt_dis_hilight.png";
+ border: 4 4 4 0;
+ }
++=======
+ visible: 0;
++>>>>>>> remotes/origin/upstream
}
}
part { name: "over2";
color: 255 255 255 255;
}
}
++<<<<<<< HEAD
++=======
+ part { name:"bar_disabled";
+ type: RECT;
+ description { state:"default" 0.0;
+ rel1.to_y: "elm.bar";
+ rel2.to_y: "elm.bar";
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
++>>>>>>> remotes/origin/upstream
//Arrow
part {
target: "arrow_left";
transition: DECELERATE 0.4;
}
++<<<<<<< HEAD
++=======
+ //fix the pane
+ program {
+ name: "panes_fixed";
+ signal: "elm.panes.fixed";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "elm.bar";
+ target: "over1";
+ target: "bar_disabled";
+ }
+ //allow the movement by interaction
+ program {
+ name: "panes_unfixed";
+ signal: "elm.panes.unfixed";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.bar";
+ target: "over1";
+ target: "bar_disabled";
+ }
++>>>>>>> remotes/origin/upstream
}
}
clip_to: "elm.icon.clipper";
description { state: "default" 0.0;
align: 0.5 0.5;
++<<<<<<< HEAD
+ fixed: 0 0;
++=======
++>>>>>>> remotes/origin/upstream
rel1 {
relative: 0.0 0.0;
offset: 2 2;
clip_to: "elm.icon_new.clipper";
description { state: "default" 0.0;
align: 0.5 0.5;
++<<<<<<< HEAD
+ fixed: 0 0;
++=======
++>>>>>>> remotes/origin/upstream
rel1 {
relative: 0.0 0.0;
offset: 2 2;
transition: LINEAR 0.1;
}
program { name: "go";
++<<<<<<< HEAD
+ signal: "mouse,up,1";
++=======
+ signal: "mouse,clicked,1";
++>>>>>>> remotes/origin/upstream
source: "event";
action: SIGNAL_EMIT "elm,action,click" "elm";
}
}
group { name: "elm/toolbar/item/item_horizontal";
++<<<<<<< HEAD
+ inherit: "elm/toolbar/item/default";
+ parts.part { name: "elm.swallow.icon";
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1.offset: 3 3;
+ rel1.relative: 0 0;
+ rel2.offset: -4 -4;
+ rel2.relative: 1 1;
+ color: 0 0 0 0;
+ }
+ }
+ parts.part { name: "elm.text";
+ description { state: "default" 0.0;
+ align: 1 0.5;
+ min: 0 1;
+ rel1.offset: 1 0;
+ rel1.relative: 1 0.5;
+ rel1.to_x: "elm.swallow.icon";
+ text.align: 0 0.5;
+ }
+ }
++=======
+ inherit: "elm/toolbar/item/default";
+ parts {
+ part { name: "elm.swallow.icon";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ aspect: 1 1;
+ aspect_preference: VERTICAL;
+ align: 0.0 0.5;
+ rel1.offset: 3 3;
+ rel1.relative: 0 0;
+ rel2.offset: 3 -4;
+ rel2.relative: 0 1;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "elm.swallow.icon_new";
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ }
+ }
+ part { name: "elm.text";
+ description { state: "default" 0.0;
+ align: 1 0.5;
+ min: 0 1;
+ rel1.offset: 1 0;
+ rel1.relative: 1.0 0.0;
+ rel1.to_x: "elm.swallow.icon";
+ rel2.relative: 1.0 1.0;
+ text.align: 0 0.5;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ text.min: 1 1;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ visible: 1;
+ text.min: 1 1;
+ }
+ }
+ part { name: "elm.text_new";
+ description { state: "default" 0.0;
+ align: 1 0.5;
+ min: 0 1;
+ rel1.offset: 1 0;
+ rel1.relative: 1.0 0.0;
+ rel1.to_x: "elm.swallow.icon";
+ rel2.relative: 1.0 1.0;
+ text.align: 0 0.5;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ text.min: 1 1;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ color3: 0 0 0 0;
+ visible: 1;
+ text.min: 1 1;
+ }
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
group { name: "elm/toolbar/separator/default";
group { name: "elm/toolbar/object/default";
parts {
part { name: "elm.swallow.object"; // object group
++<<<<<<< HEAD
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
++=======
+ type: SWALLOW;
+ description { state: "default" 0.0;
++>>>>>>> remotes/origin/upstream
}
}
}
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
frame:preview-00.png:widget_preview_frame:100:50 \
label:preview-00.png:widget_preview_label:70:30 \
clock:preview-00.png:widget_preview_clock:200:100 \
++<<<<<<< HEAD
++=======
+ datetime:preview-00.png:widget_preview_datetime1:360:60 \
+ datetime:preview-01.png:widget_preview_datetime2:200:60 \
+ datetime:preview-02.png:widget_preview_datetime3:200:60 \
+ dayselector:preview-00.png:widget_preview_dayselector:350:50 \
++>>>>>>> remotes/origin/upstream
slider:preview-00.png:widget_preview_slider:200:100 \
panes:preview-00.png:widget_preview_panes:200:100 \
toolbar:preview-00.png:widget_preview_toolbar:300:100 \
progressbar:preview-00.png:widget_preview_progressbar:150:50 \
box:preview-00.png:widget_preview_box:200:160 \
notify:preview-00.png:widget_preview_notify:60:30 \
++<<<<<<< HEAD
++=======
+ popup:preview-00.png:widget_preview_popup:480:400 \
++>>>>>>> remotes/origin/upstream
slideshow:preview-00.png:widget_preview_slideshow:50:50 \
photocam:preview-00.png:widget_preview_photocam:243:162 \
inwin:preview-00.png:widget_preview_inwin1:200:160 \
*
* @ref clock_example
*
++<<<<<<< HEAD
++=======
+ * @ref datetime_example
+ *
+ * @ref dayselector_example
+ *
++>>>>>>> remotes/origin/upstream
* @ref mapbuf_example
* @ref map_example_01
*/
/**
++<<<<<<< HEAD
++=======
+ * @page datetime_example Datetime widget example
+ *
+ * This code places three Elementary Datetime widgets on a window, each of
+ * them exemplifying the widget's different usage.
+ *
+ * The first of them is <b>"only Date display"</b>:
+ * @dontinclude datetime_example.c
+ * @skip only DATE
+ * @until evas_object_show
+ *
+ * For <b>"only Time display"</b>, see the second datetime:
+ * @dontinclude datetime_example.c
+ * @skip only TIME
+ * @until evas_object_show
+ *
+ * The third one will display datetime shows both <b>Date and Time</b>, corresponding format will be
+ * taken from system @b locale. Note, besides, that the strings are different
+ * for different language settings.
+ *
+ * <b>Datetime format</b> can be programmatically set by using
+ * elm_datetime_format_set():
+ * @dontinclude datetime_example.c
+ * @skip DATE and TIME
+ * @until evas_object_show
+ * The default format of any locale consists:
+ * - Year Field
+ * - Month Field
+ * - Date Field
+ * - Hour Field(12hr/24hr format)
+ * - Minute Field
+ * - AM/PM (if exists).
+ *
+ * This is how the example program's window looks like with the datetime widget
+ * showing only date, only time and both date & time:
+ *
+ * @image html screenshots/datetime_example.png
+ * @image latex screenshots/datetime_example.eps width=\textwidth
+ *
+ * See the full @ref datetime_example_c "source code" for
+ * this example.
+ *
+ * @example datetime_example.c
+ */
+
+ /**
+ * @page dayselector_example Dayselector widget example
+ *
+ * This code places two Elementary dayselector widgets on a window, each of
+ * them exemplifying the different widget styles.
+ *
+ * The first of them is the dayselector in default style:
+ * @dontinclude dayselector_example.c
+ * @skip weekdays starting from Sunday
+ * @until evas_object_show
+ *
+ * As you see, the default style displays the weekdays starting from Sunday.
+ *
+ * One can select/unselect a day just by clicking on the day object.
+ * The selection toggles once it is being pressed.
+ *
+ *
+ * For showing weekdays starting from Monday, see the second dayselector:
+ * @dontinclude dayselector_example.c
+ * @skip weekdays starting from Monday
+ * @until evas_object_show
+ *
+ *
+ * The following code exemplifies the selection APIs of Dayselector:
+ * @dontinclude dayselector_example.c
+ * @skip Callback function
+ * @until End of clicked callback
+ *
+ *
+ * See the full @ref dayselector_example.c "example", whose window should
+ * look like this picture:
+ *
+ * @image html screenshots/dayselector_example.png
+ * @image latex screenshots/dayselector_example.eps width=\textwidth
+ *
+ * See the full @ref dayselector_example_c "source code" for this example.
+ *
+ * @example dayselector_example.c
+ */
+
+ /**
++>>>>>>> remotes/origin/upstream
* @page mapbuf_example Mapbuf Widget Example
*
* This code places a Elementary mapbuf widget on a window,
*/
/**
++<<<<<<< HEAD
+ * @page map_example_02 Map Example - Markers Usage
+ *
+ * This code places a Elementary map widget on a window,
+ * to exemplify part of the widget's API, related to markers.
+ *
+ * We'll start this example the same way
++=======
+ * @page map_example_02 Map Example - Overlay Usage
+ *
+ * This code places a Elementary map widget on a window,
+ * to exemplify part of the widget's API, related to overlays.
+ *
+ * We'll start this example in the same way
++>>>>>>> remotes/origin/upstream
* @ref map_example_01 "Map Example 1". Adding a map with buttons to control
* zoom, so if you didn't read it yet, just do it now.
* @dontinclude map_example_02.c
* @skipline elm_map_add
* @until zoom_fill
*
++<<<<<<< HEAD
+ * Markers can be placed over the map to represent anything we want. Let's
+ * say we want to represent some countries and cities with markers. To add
+ * a mark we need a marker class and also a group class.
+ *
+ * A marker class can be created as the following code does:
+ * @skipline marker_class_new
+ * @until style_set
+ *
+ * These lines create a new class, set a function to return the object
+ * to be displayed inside the bubble that opens when a user clicks over
+ * the mark, set the function to retrieve an icon to be placed inside
+ * the marker, and defines the style of this marker. It can be @c empty
+ * that will just show the icon, @c radio, that will place a blue circle,
+ * and @c radio2 that will place a green circle.
+ *
+ * The group classes can be created in a very similar way, but you won't
+ * set callback functions to get stuff to be placed inside the bubble,
+ * since clicking over a group marker will just get the content
+ * of all the markers composing the group and place on this bubble.
+ * The limit of markers to get can be set with function
+ * elm_map_max_marker_per_group_set() but we won't need on this example.
+ * But we can set the zoom required to display the marks that belongs
+ * to this group class, so if the zoom is less than this value, nothing
+ * will be show. The group marker style will be used when markers are
+ * near each other, and the count of markers grouped will be placed
+ * inside the group marker.
+ * @skipline group_class_new
+ * @until displayed_set
+ *
+ * For marker and group classes to represent a country, the same is done:
+ * @skipline marker_class_new
+ * @until displayed_set
+ *
+ * Next we'll create some markers representing cities and coutries.
+ * We'll append them in a list, to close up them later. To create a marker
+ * we need to pass the coordinates, marker class, group class and optionally,
+ * data:
+ * @skipline marker_add
+ * @until data_chile
+ * @until append
++=======
+ * Overlays can be placed over the map to represent anything we want. Let's
+ * say we want to represent some countries and cities with overlays.
+ *
+ * Before we create city or country overlays, let's create class overlays.
+ *
+ * @skipline elm_map_overlay_class_add
+ * @until elm_map_overlay_icon_set
+ * These lines create a class overlay which represents cities.
+ * This class overlay will be used for grouping city overlays.
+ * Later city overlays in the same class are appended to this class overlay.
+ * if city overlays are near each other, they will be grouped.
+ *
+ * We can set the icon for the class so that the icon will be displayed
+ * when city overlays are grouped.
+ * We can set the zoom required to display the overlays that belongs
+ * to this class, so if the zoom is less than this value, nothing
+ * will be shown.
+ *
+ * Country class can be created in the same way.
+ * @skipline elm_map_overlay_class_add
+ * @until elm_map_overlay_icon_set
+ *
+ * Next we'll create some overlays representing cities and coutries.
+ * We set the data for the overlay so that can be used later when
+ * clicked callback is called.
+ * We'll append them into city class to be grouped.
+ * We'll append them in a list, to close up them later.
+ * To create a default overlay, we need to pass the coordinates.
+ * @skipline elm_map_overlay_add
+ * @until eina_list_append
+ *
+ * We subscribe a smart callback "overlay,clicked" to create bubble on
+ * the clicked overlay.
+ * @dontinclude map_example_02.c
+ * @skipline "overlay,clicked"
+ *
+ * Finally, on our @c main function, we ask the map to show all the overlays
+ * with the biggest zoom possible, passing the list of overlays added.
+ * @skipline elm_map_overlays_show
++>>>>>>> remotes/origin/upstream
*
* We have created a specific structure for this example to store the name
* of the place and a path to a image file to represent it.
* @dontinclude map_example_02.c
* @skipline typedef
++<<<<<<< HEAD
+ * @until Marker_Data;
++=======
+ * @until Overlay_Data;
++>>>>>>> remotes/origin/upstream
*
* We'll create instances for each place:
* @skipline argentina
* @until sky_03
*
++<<<<<<< HEAD
+ * Finally, on our @c main function, we ask the map to show all the markers
+ * with the biggest zoom possible, passing the list of markers added:
+ * @skipline list_show
+ *
+ * Actually the zoom is not what we want, so after the download of the map
+ * is concluded, let's set another zoom level. For this we add a callback
+ * for @c "downloaded" signal:
+ * @skipline callback_add
+ *
+ * The callback function will simply set the zoom level we want and remove
+ * the callback, otherwise it would be called all the time, after the map
+ * is downloaded:
+ * @dontinclude map_example_02.c
+ * @skipline _map_downloaded
+ * @until }
+ *
+ * We added two kinds of callback functions when we added the markers.
+ * One will return the content of the bubbles, and other the icon to be
+ * placed inside the marker.
+ *
+ * To return an icon, all we need to do is add a elm_icon and return it:
+ * @dontinclude map_example_02.c
+ * @skip static Evas_Object
+ * @skip }
+ * @skipline static Evas_Object
+ * @until }
+ *
+ * For the content, let's return something more elaboreate. We will return
+ * a box with an image representing the place, and the name of this place:
+ * @skipline static Evas_Object
++=======
+ * To return an icon, all we need to do is to add a elm_icon and return it:
+ * @dontinclude map_example_02.c
+ * @skipline _icon_get(
+ * @until }
+ *
+ * For the content, let's return something more elaborate. We will return
+ * a box with an image representing the place, and the name of this place:
+ * @skipline _box_get(
++>>>>>>> remotes/origin/upstream
* @until }
*
* See @ref map_example_02.c "map_example_02.c" for full source,
* start point, and would like that he enters the address of his
* destination in a entry, and we'll trace a route on the map.
*
++<<<<<<< HEAD
+ * We'll start this example the same way
++=======
+ * We'll start this example in the same way
++>>>>>>> remotes/origin/upstream
* @ref map_example_01 "Map Example 1". Adding a map with buttons to control
* zoom, so if you didn't read it yet, just do it now. Actually there is
* a change, that we're aligning buttons to the top, since we wan't a
* diskselector will display first item after last, and last previous to
* the first one. So, as you can see, @b Sa will appears on left side
* of selected @b Sunday. This property is set with
++<<<<<<< HEAD
+ * elm_diskselector_round_set().
+ *
+ * Also, we decide to display only 2 character for side labels, instead of 3.
+ * For this we call elm_diskselector_side_label_length_set(). As result,
++=======
+ * elm_diskselector_round_enabled_set().
+ *
+ * Also, we decide to display only 2 character for side labels, instead of 3.
+ * For this we call elm_diskselector_side_text_max_length_set(). As result,
++>>>>>>> remotes/origin/upstream
* we'll see @b Mo displayed instead of @b Mon, when @b Monday is on a
* side position.
*
* elm_image_no_scale_set() is used just to set this value to true (we
* don't want to scale our image anyway, just resize it).
*
++<<<<<<< HEAD
+ * elm_image_scale_set() is used to allow the image to be resized to a size
++=======
+ * elm_image_resizable_set() is used to allow the image to be resized to a size
++>>>>>>> remotes/origin/upstream
* smaller than the original one, but not to a size bigger than it.
*
* elm_elm_image_smooth_set() will disable the smooth scaling, so the scale
* elm_icon_no_scale_set() is used just to set this value to true (we
* don't want to scale our icon anyway, just resize it).
*
++<<<<<<< HEAD
+ * elm_icon_scale_set() is used to allow the icon to be resized to a size
++=======
+ * elm_icon_resizable_set() is used to allow the icon to be resized to a size
++>>>>>>> remotes/origin/upstream
* smaller than the original one, but not to a size bigger than it.
*
* elm_elm_icon_smooth_set() will disable the smooth scaling, so the scale
*/
/**
++<<<<<<< HEAD
+ * @page tutorial_pager
+ * @dontinclude pager_example_01.c
+ *
+ * In this example we'll have a pager with 3 rectangles on it, one blue, one
+ * green and one blue, we'll also have 1 button for each rectangle. Pressing a
+ * button will bring the associated rectangle to the front of the pager(promote
+ * it).
+ *
+ * We start our example with some run of the mill code that you've seen in other
+ * examples:
+ * @until show
+ *
+ * And then we get right to creating our pager, setting a style and some basic
+ * properties to it:
+ * @until show
+ *
+ * Well a pager without any content is not of much use, so let's create the
+ * first of our rectangles, add it to the pager and create the button for it:
+ * @until smart_callback
+ * @note The only line of above code that directly relates to our pager is the
+ * call to elm_pager_content_push().
+ *
+ * And now we will do the same thing again twice for our next two rectangles:
+ * @until smart_callback
+ * @until smart_callback
+ *
+ * Now that we haver our widgets create we can get to running the main loop:
+ * @until ELM_MAIN
+ *
+ * We also have the callback that is called when any of the buttons is pressed,
+ * this callback is receiving the rectangle in it's @p data argument, so we
+ * check if it's already on top and if not move it there:
+ * @until }
+ *
+ * Our example will look like this:
+ *
+ * @image html screenshots/pager_example_01.png
+ * @image latex screenshots/pager_example_01.eps width=\textwidth
+ * @note Like all examples that involve animations the screenshot doesn't do it
+ * justice, seeing it in action is a must.
+ *
+ * @example pager_example_01.c
+ */
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @page tutorial_separator Separator example
* @dontinclude separator_example_01.c
*
* and the entry itself doesn't, yet, support all the needed capabilities to
* make this simpler. We begin by getting the format we are using in our
* function from the button pressed.
++<<<<<<< HEAD
+ * @skip aid->pager = pager;
++=======
+ * @skip aid->naviframe = naviframe;
++>>>>>>> remotes/origin/upstream
* @until sizeof(fmt_close)
*
* Next we need to find out if we need to insert an opening or a closing tag.
* elm_genlist_bounce_set().
*
* We also want our list to compress items if they are wider than the list
++<<<<<<< HEAD
+ * width (thus we call elm_genlist_compress_mode_set().
++=======
+ * width (thus we call elm_genlist_mode_set(obj, ELM_LIST_COMPRESS).
++>>>>>>> remotes/origin/upstream
*
* The items have different width, so they are not homogeneous:
* elm_genlist_homogeneous_set() is set to false.
* However, if the @c item1 didn't have any child previously, we have to change
* it to a parent item now. It would be easy to just change its item class to
* the parent type, but there's no way to change the item flags and make it be
++<<<<<<< HEAD
+ * of the type #ELM_GENLIST_ITEM_SUBITEMS. Thus, we have to delete it and create
++=======
+ * of the type #ELM_GENLIST_ITEM_TREE. Thus, we have to delete it and create
++>>>>>>> remotes/origin/upstream
* a new item, and add this new item to the same position that the deleted one
* was. That's the reason of the checks inside the bigger @c if.
*
*/
/**
++<<<<<<< HEAD
++=======
+ * @page popup_example_01_c popup_example_01.c
+ * @include popup_example_01.c
+ *
+ * This example will initially look like this:
+ *
+ * @image html screenshots/popup_example_01.png
+ * @image latex screenshots/popup_example_01.eps width=\textwidth
+ *
+ * Once the popup is hidden after timeout:
+ *
+ * @image html screenshots/popup_example_01_a.png
+ * @image latex screenshots/popup_example_01_a.eps width=\textwidth
+ *
+ * @example popup_example_01.c
+ */
+
+ /** @page popup_example_02_c popup_example_02.c
+ * @include popup_example_02.c
+ *
+ * This example will look like this:
+ *
+ * @image html screenshots/popup_example_02.png
+ * @image latex screenshots/popup_example_02.eps width=\textwidth
+ *
+ * @example popup_example_02.c
+ */
+
+ /**
+ * @page popup_example_03_c popup_example_03.c
+ * @include popup_example_03.c
+ *
+ * This example will look like this:
+ *
+ * @image html screenshots/popup_example_03.png
+ * @image latex screenshots/popup_example_03.eps width=\textwidth
+ *
+ * @example popup_example_03.c
+ */
+
+ /**
++>>>>>>> remotes/origin/upstream
* @page tutorial_frame Frame example
* @dontinclude frame_example_01.c
*
* accordingly and the URL bar needs to show the right address.
*
* @skip static void
++<<<<<<< HEAD
+ * @until pager_content_promote
++=======
+ * @until naviframe_item_simple_promote
++>>>>>>> remotes/origin/upstream
* @until }
*
* Other updates happen based on events from the web object, like title change
* @example clock_example.c
*/
++<<<<<<< HEAD
++=======
+ /**
+ * @page datetime_example_c Datetime example
+ * @include datetime_example.c
+ * @example datetime_example.c
+ */
+
+ /**
+ * @page dayselector_example_c Dayselector example
+ * @include dayselector_example.c
+ * @example dayselector_example.c
+ */
+
++>>>>>>> remotes/origin/upstream
/**
* @page flipselector_example_c Flipselector example
* @include flipselector_example.c
* @li @ref Start
* @li @ref Scrolling
* @li @ref Scrollhints
++<<<<<<< HEAD
+ * @li @ref UI-Mirroring
++=======
+ * @li @ref Mirroring
++>>>>>>> remotes/origin/upstream
* @li @ref Scaling
* @li @ref Styles
* @li @ref Theme
*
* @image html img/widget/ctxpopup/preview-00.png
* @image latex img/widget/ctxpopup/preview-00.eps
++<<<<<<< HEAD
++=======
+ * @li @ref Datetime
+ *
+ * @image html img/widget/datetime/preview-00.png
+ * @image latex img/widget/datetime/preview-00.eps
+ * @li @ref Dayselector
+ *
+ * @image html img/widget/dayselector/preview-00.png
+ * @image latex img/widget/dayselector/preview-00.eps
++>>>>>>> remotes/origin/upstream
* @li @ref Diskselector
*
* @image html img/widget/diskselector/preview-00.png
*
* @image html img/widget/frame/preview-00.png
* @image latex img/widget/frame/preview-00.eps
++<<<<<<< HEAD
+ * @li @ref Gengrid
+ *
+ * @image html img/widget/gengrid/preview-00.png
+ * @image latex img/widget/gengrid/preview-00.eps
+ *
+ * @li @ref Genlist
+ * @image html img/widget/genlist/preview-00.png
+ * @image latex img/widget/genlist/preview-00.eps
+ * @image html img/genlist.png
+ * @image latex img/genlist.eps
++=======
++>>>>>>> remotes/origin/upstream
*
* @li @ref GLView
* @li @ref Hover
*
* @image html img/widget/notify/preview-00.png
* @image latex img/widget/notify/preview-00.eps
++<<<<<<< HEAD
+ * @li @ref Pager
+ *
+ * @image html img/widget/pager/preview-00.png
+ * @image latex img/widget/pager/preview-00.eps
++=======
++>>>>>>> remotes/origin/upstream
* @li @ref Panel
*
* @image html img/widget/panel/preview-00.png
*
* @image html img/widget/photocam/preview-00.png
* @image latex img/widget/photocam/preview-00.eps
++<<<<<<< HEAD
++=======
+ * @li @ref Popup
+ *
+ * @image html img/widget/popup/preview-00.png
+ * @image latex img/widget/popup/preview-00.eps
++>>>>>>> remotes/origin/upstream
* @li @ref Progressbar
*
* @image html img/widget/progressbar/preview-00.png
* it provides a number of containers. It's important to note that as containers
* widgets don't have their own visual identity, so here we show one use for
* them and a diagram showing their component parts:
++<<<<<<< HEAD
++=======
+ * @li @ref Gengrid
+ *
+ * @image html img/widget/gengrid/preview-00.png
+ * @image latex img/widget/gengrid/preview-00.eps
+ * @li @ref Genlist
+ *
+ * @image html img/widget/genlist/preview-00.png
+ * @image latex img/widget/genlist/preview-00.eps
+ * @image html img/genlist.png
+ * @image latex img/genlist.eps
++>>>>>>> remotes/origin/upstream
* @li @ref Box
*
* @image html img/widget/box/preview-00.png
widget_preview_bubble1 \
widget_preview_bubble2 \
widget_preview_bubble3 \
++<<<<<<< HEAD
++=======
+ widget_preview_datetime1 \
+ widget_preview_datetime2 \
+ widget_preview_datetime3 \
++>>>>>>> remotes/origin/upstream
widget_preview_fileselector_button1 \
widget_preview_fileselector_button2 \
widget_preview_fileselector_button3 \
widget_preview_conformant \
widget_preview_index \
widget_preview_clock \
++<<<<<<< HEAD
++=======
+ widget_preview_dayselector \
++>>>>>>> remotes/origin/upstream
widget_preview_label \
widget_preview_frame \
widget_preview_slider \
widget_preview_flipselector \
widget_preview_hoversel \
widget_preview_hover \
++<<<<<<< HEAD
+widget_preview_anchorview \
+widget_preview_anchorblock \
widget_preview_flip \
+widget_preview_pager \
++=======
++widget_preview_flip \
++>>>>>>> remotes/origin/upstream
widget_preview_separator \
widget_preview_radio \
widget_preview_toggle \
widget_preview_progressbar \
widget_preview_box \
widget_preview_notify \
++<<<<<<< HEAD
++=======
+ widget_preview_popup \
++>>>>>>> remotes/origin/upstream
widget_preview_slideshow \
widget_preview_photocam \
widget_preview_inwin1 \
EXTRA_DIST = \
widget_preview_actionslider.c \
++<<<<<<< HEAD
+ widget_preview_anchorblock.c \
+ widget_preview_anchorview.c \
++=======
++>>>>>>> remotes/origin/upstream
widget_preview_bg.c \
widget_preview_bubble1.c \
widget_preview_bubble2.c \
widget_preview_mapbuf.c \
widget_preview_map.c \
widget_preview_ctxpopup.c \
++<<<<<<< HEAD
++=======
+ widget_preview_datetime1.c \
+ widget_preview_datetime2.c \
+ widget_preview_datetime3.c \
+ widget_preview_dayselector.c \
++>>>>>>> remotes/origin/upstream
widget_preview_diskselector.c \
widget_preview_entry1.c \
widget_preview_entry2.c \
widget_preview_layout.c \
widget_preview_list.c \
widget_preview_segment_control.c \
++<<<<<<< HEAD
+ widget_preview_pager.c \
++=======
+ widget_preview_popup.c \
++>>>>>>> remotes/origin/upstream
widget_preview_separator.c \
widget_preview_radio.c \
widget_preview_toggle.c \
Evas_Object *ic = elm_icon_add(ctxpopup);
elm_icon_standard_set(ic, "home");
++<<<<<<< HEAD
+elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_ctxpopup_item_append(ctxpopup, "Go to home folder", ic, NULL, NULL);
ic = elm_icon_add(ctxpopup);
elm_icon_standard_set(ic, "delete");
++<<<<<<< HEAD
+elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_ctxpopup_item_append(ctxpopup, "Delete file", ic, NULL, NULL);
ic = elm_icon_add(ctxpopup);
elm_icon_standard_set(ic, "folder");
++<<<<<<< HEAD
+elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
Elm_Object_Item *it = elm_ctxpopup_item_append(ctxpopup, "Navigate to folder", ic, NULL, NULL);
elm_object_item_disabled_set(it, EINA_TRUE);
Evas_Object *ic = elm_icon_add(win);
elm_icon_standard_set(ic, "home");
evas_object_show(ic);
++<<<<<<< HEAD
+elm_flip_content_front_set(o, ic);
+ic = elm_icon_add(win);
+elm_icon_standard_set(ic, "file");
+evas_object_show(ic);
+elm_flip_content_back_set(o, ic);
++=======
+ elm_object_part_content_set(o, "front", ic);
+ ic = elm_icon_add(win);
+ elm_icon_standard_set(ic, "file");
+ evas_object_show(ic);
+ elm_object_part_content_set(o, "back", ic);
++>>>>>>> remotes/origin/upstream
ecore_timer_add(0.35, _func, o);
{
elm_flip_go(data, ELM_FLIP_CUBE_RIGHT);
return 0;
- }
++<<<<<<< HEAD
++}
++=======
+ }
++>>>>>>> remotes/origin/upstream
evas_object_show(genlist);
Elm_Genlist_Item_Class gic;
++<<<<<<< HEAD
+Elm_Object_Item *it, *top;
++=======
+ Elm_Object_Item *glit, *glit_top;
++>>>>>>> remotes/origin/upstream
gic.item_style = "default";
gic.func.text_get = _text_get;
gic.func.content_get = _content_get;
elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
++<<<<<<< HEAD
+it = elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+top = it;
+elm_genlist_item_expanded_set(it, EINA_TRUE);
+elm_genlist_item_append(genlist, &gic, NULL, it, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+it = elm_genlist_item_append(genlist, &gic, NULL, it, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+elm_genlist_item_append(genlist, &gic, NULL, it, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+elm_genlist_item_top_show(top);
++=======
+ glit = elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit_top = glit;
+ elm_genlist_item_expanded_set(glit, EINA_TRUE);
+ elm_genlist_item_append(genlist, &gic, NULL, glit, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit = elm_genlist_item_append(genlist, &gic, NULL, glit, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_append(genlist, &gic, NULL, glit, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_append(genlist, &gic, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ elm_genlist_item_show(glit_top, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++>>>>>>> remotes/origin/upstream
#include "widget_preview_tmpl_foot.c"
elm_win_resize_object_add(win, o);
elm_icon_standard_set(o, "home");
++<<<<<<< HEAD
+elm_icon_scale_set(o, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(o, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
#include "widget_preview_tmpl_foot.c"
elm_win_resize_object_add(win, o);
elm_image_file_set(o, PACKAGE_DATA_DIR"/images/logo_small.png", NULL);
++<<<<<<< HEAD
+elm_image_scale_set(o, EINA_FALSE, EINA_FALSE);
++=======
+ elm_image_resizable_set(o, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
#include "widget_preview_tmpl_foot.c"
list_it = elm_list_item_append(o, dict[i], NULL, NULL, NULL, NULL);
snprintf(buf, sizeof(buf), "%c", dict[i][0]);
++<<<<<<< HEAD
+ elm_index_item_append(id, buf, list_it);
+ }
+
+elm_index_active_set(id, EINA_TRUE);
++=======
+ elm_index_item_append(id, buf, NULL, list_it);
+ }
+
+ elm_index_autohide_disabled_set(id, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
#include "widget_preview_tmpl_foot.c"
{
Evas_Object *ic = elm_icon_add(win);
elm_icon_standard_set(ic, "home");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(ic);
elm_table_pack(tb, ic, i, j, 1, 1);
}
%{_datadir}/elementary/config/default/*
%{_datadir}/elementary/config/illume/*
%{_datadir}/elementary/config/standard/*
++<<<<<<< HEAD
+%{_datadir}/elementary/config/slp/*
++=======
++>>>>>>> remotes/origin/upstream
%{_datadir}/elementary/edje_externals/*
%{_datadir}/elementary/images/*
%{_datadir}/elementary/objects/*
./src/bin/quicklaunch.c
./src/bin/run.c
./src/bin/test_actionslider.c
++<<<<<<< HEAD
+./src/bin/test_anchorblock.c
+./src/bin/test_anchorview.c
++=======
++>>>>>>> remotes/origin/upstream
./src/bin/test_anim.c
./src/bin/test_bg.c
./src/bin/test_box.c
./src/bin/test_menu.c
./src/bin/test_multi.c
./src/bin/test_notify.c
++<<<<<<< HEAD
+./src/bin/test_pager.c
++=======
++>>>>>>> remotes/origin/upstream
./src/bin/test_panel.c
./src/bin/test_panes.c
./src/bin/test_photo.c
./src/bin/test_transit.c
./src/bin/test_weather.c
./src/bin/test_win_state.c
++<<<<<<< HEAD
+./src/edje_externals/elm_anchorblock.c
+./src/edje_externals/elm_anchorview.c
++=======
++>>>>>>> remotes/origin/upstream
./src/edje_externals/elm_bubble.c
./src/edje_externals/elm_button.c
./src/edje_externals/elm.c
./src/edje_externals/elm_thumb.c
./src/edje_externals/elm_toggle.c
./src/edje_externals/elm_toolbar.c
++<<<<<<< HEAD
+./src/lib/elc_anchorblock.c
+./src/lib/elc_anchorview.c
++=======
++>>>>>>> remotes/origin/upstream
./src/lib/elc_ctxpopup.c
./src/lib/elc_fileselector_button.c
./src/lib/elc_fileselector.c
./src/lib/elm_calendar.c
./src/lib/elm_check.c
./src/lib/elm_clock.c
++<<<<<<< HEAD
+./src/lib/elm_cnp_helper.c
+./src/lib/elm_colorselector.c
+./src/lib/elm_config.c
+./src/lib/elm_conform.c
+./src/lib/elm_datefield.c
++=======
+ ./src/lib/elm_cnp.c
+ ./src/lib/elm_colorselector.c
+ ./src/lib/elm_config.c
+ ./src/lib/elm_conform.c
++>>>>>>> remotes/origin/upstream
./src/lib/elm_diskselector.c
./src/lib/elm_entry.c
./src/lib/elm_flip.c
./src/lib/elm_menu.c
./src/lib/elm_module.c
./src/lib/elm_notify.c
++<<<<<<< HEAD
+./src/lib/elm_pager.c
++=======
++>>>>>>> remotes/origin/upstream
./src/lib/elm_panel.c
./src/lib/elm_panes.c
./src/lib/elm_photo.c
./src/lib/elm_progressbar.c
./src/lib/elm_radio.c
./src/lib/elm_scroller.c
++<<<<<<< HEAD
+./src/lib/elm_searchbar.c
++=======
++>>>>>>> remotes/origin/upstream
./src/lib/elm_separator.c
./src/lib/elm_slider.c
./src/lib/elm_slideshow.c
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# Header entry was created by Lokalize.
#
# Vít Pelčák <vit@pelcak.org>, 2011.
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-10-23 01:31+0100\n"
"Last-Translator: Daniel Kolesa <quaker66@gmail.com>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
msgid "Home"
msgstr "Domů"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Zrušit"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr "Kliknuto"
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr "Stav: Zakázáno"
msgid "%B %Y"
msgstr "%B %Y"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr "Stav: Zapnuto"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr "Stav: Vypnuto"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr "Stav"
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr "Ověřit"
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "výchozí:LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Vybrat"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr "Stav"
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr "Ověřit"
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "výchozí:LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Kopírovat"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Vyjmout"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Vybrat"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Vložit"
msgid "Radio"
msgstr "Přepínač"
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr "ZAPNUTO"
msgid "OFF"
msgstr "VYPNUTO"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr "Vybrané"
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr "Oddělovač"
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr "Stav: Vybráno"
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr "Má nabídku"
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr "Vybrané"
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr "Oddělovač"
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr "Stav: Vybráno"
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr "Má nabídku"
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr "Položka nástrojů"
# This file is distributed under the same license as the elementary package.
# Fabian Nowak <timystery@arcor.de>, 2011.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-02-25 20:22+0100\n"
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
"Language-Team: German\n"
msgid "Home"
msgstr "Persönlicher Ordner"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Abbrechen"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "Standard: LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Kopieren"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Auswählen"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "Standard: LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Kopieren"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Ausschneiden"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Auswählen"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Einfügen"
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
++=======
+ #: src/lib/elm_toolbar.c:802
++>>>>>>> remotes/origin/upstream
#, fuzzy
msgid "Selected"
msgstr "Auswählen"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# batden <batden@orange.fr>, 2011.
# dazibao <dazibao@sfr.fr>, 2011.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-11-08 07:57+0100\n"
"Last-Translator: dazibao <dazibao@sfr.fr>\n"
"Language-Team: French <sansgourou@gmail.com>\n"
msgid "Home"
msgstr "Home"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Annuler"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Annuler"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr "Cliqué"
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr "État : désactivé"
msgid "%B %Y"
msgstr "%B %Y"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr "État : activé"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr "État : désactivé"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr "État"
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr "À cocher"
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "LTR par défaut"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Copier"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Couper"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Sélectionner"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr "État"
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr "À cocher"
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "LTR par défaut"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Copier"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Couper"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Sélectionner"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Coller"
msgid "Radio"
msgstr "Radio"
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr "OUI"
msgid "OFF"
msgstr "NON"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr "Sélectionné"
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr "Séparateur"
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr "État : sélectionné"
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr "Possède un menu"
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr "Sélectionné"
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr "Séparateur"
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr "État : sélectionné"
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr "Possède un menu"
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr "Élément outil"
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <a.hillel@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Aharon Hillel <a.hillel@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "בטל"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "בטל"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "אשר"
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "העתק"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "גזור"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "התחל בחירה"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "העתק"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "גזור"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "התחל בחירה"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "הדבק"
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
++=======
+ #: src/lib/elm_toolbar.c:802
++>>>>>>> remotes/origin/upstream
#, fuzzy
msgid "Selected"
msgstr "התחל בחירה"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# Italian translation for Elementary.
# This file is put in the public domain.
# Massimo Maiurana <maiurana@gmail.com>, 2011.
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-11-08 14:19+0100\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: none\n"
msgid "Home"
msgstr "Home"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Annulla"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Annulla"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr "Cliccato"
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr "Stato: disabilitato"
msgid "%B %Y"
msgstr "%B %Y"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr "Stato: attivo"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr "Stato: inattivo"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr "Stato"
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr "Controllo"
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "predefintito: LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Copia"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Taglia"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Seleziona"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr "Stato"
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr "Controllo"
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "predefintito: LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Copia"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Taglia"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Seleziona"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Incolla"
msgid "Radio"
msgstr "Opzione"
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr "Attivo"
msgid "OFF"
msgstr "Non attivo"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr "Selezionato"
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr "Separatore"
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr "Stato: selezionato"
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr "Include menù"
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr "Selezionato"
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr "Separatore"
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr "Stato: selezionato"
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr "Include menù"
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr "Oggetto strumento"
# This file is distributed under the same license as the Elementary package.
# Daniel Juyung Seo <seojuyung2@gmail.com>, 2011.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-02-22 09:09-0800\n"
"Last-Translator: Daniel Juyung Seo <seojuyung@gmail.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr "홈"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "취소"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "취소"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "확인"
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr "%Y년 %B"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "복사"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "잘라내기"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "선택"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "복사"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "잘라내기"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "선택"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "붙여넣기"
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
++=======
+ #: src/lib/elm_toolbar.c:802
++>>>>>>> remotes/origin/upstream
#, fuzzy
msgid "Selected"
msgstr "선택"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# This file is distributed under the same license as the elementary package.
# Fabian Nowak <timystery@arcor.de>, 2011.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-06-19 16:41+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
"Language-Team: Dutch <vistausss@gmail.com>\n"
msgid "Home"
msgstr "Persoonlijke map"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Annuleren"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "Standaard: LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Kopiëren"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Knippen"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Selecteren"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "Standaard: LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Kopiëren"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Knippen"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Selecteren"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Plakken"
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
++=======
+ #: src/lib/elm_toolbar.c:802
++>>>>>>> remotes/origin/upstream
#, fuzzy
msgid "Selected"
msgstr "Selecteren"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# Portuguese translation for Elementary.
# This file is put in the public domain.
# Sérgio Marques <smarquespt@gmail.com>, 2011.
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2011-11-17 12:25-0000\n"
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
"Language-Team: \n"
msgid "Home"
msgstr "Pasta pessoal"
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr "Cancelar"
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr "OK"
msgid "Clicked"
msgstr "Clicado"
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr "Estado: inativo"
msgid "%B %Y"
msgstr "%B %Y"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr "Estado: ligado"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr "Estado: desligado"
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr "Estado"
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr "Verificar"
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "omissão: LTR"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr "Copiar"
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr "Cortar"
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr "Selecionar"
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr "Estado"
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr "Verificar"
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "omissão: LTR"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr "Copiar"
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr "Cortar"
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr "Selecionar"
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr "Colar"
msgid "Radio"
msgstr "Opção"
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr "Ligar"
msgid "OFF"
msgstr "Desligar"
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr "Selecionado"
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr "Separador"
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr "Estado: selecionado"
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr "Tem menu"
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr "Selecionado"
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr "Separador"
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr "Estado: selecionado"
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr "Tem menu"
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr "Ferramenta"
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
# This file is distributed under the same license as the Elementary package.
# FIRST AUTHOR <tom.hacohen@partner.samsung.com>, 2010.
#
++<<<<<<< HEAD
+#: src/lib/elm_config.c:1417
++=======
+ #: src/lib/elm_config.c:1943
++>>>>>>> remotes/origin/upstream
msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
++<<<<<<< HEAD
+"POT-Creation-Date: 2012-02-05 10:59+0900\n"
++=======
+ "POT-Creation-Date: 2012-03-08 01:42+0900\n"
++>>>>>>> remotes/origin/upstream
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@partner.samsung.com>\n"
"Language-Team: General\n"
msgid "Home"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elc_fileselector.c:1001 src/lib/elm_entry.c:1468
+#: src/lib/elm_searchbar.c:211
+msgid "Cancel"
+msgstr ""
+
+#: src/lib/elc_fileselector.c:1011
++=======
+ #: src/lib/elc_fileselector.c:1009 src/lib/elm_entry.c:1357
+ msgid "Cancel"
+ msgstr ""
+
+ #: src/lib/elc_fileselector.c:1019
++>>>>>>> remotes/origin/upstream
msgid "OK"
msgstr ""
msgid "Clicked"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_button.c:408 src/lib/elm_check.c:392 src/lib/elm_radio.c:295
+#: src/lib/elm_toolbar.c:759
++=======
+ #: src/lib/elm_button.c:408 src/lib/elm_check.c:394 src/lib/elm_radio.c:295
+ #: src/lib/elm_toolbar.c:886
++>>>>>>> remotes/origin/upstream
msgid "State: Disabled"
msgstr ""
msgid "%B %Y"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:309 src/lib/elm_check.c:312 src/lib/elm_check.c:403
++=======
+ #: src/lib/elm_check.c:311 src/lib/elm_check.c:314 src/lib/elm_check.c:405
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:231 src/lib/elm_radio.c:297
msgid "State: On"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:322 src/lib/elm_check.c:325 src/lib/elm_check.c:412
++=======
+ #: src/lib/elm_check.c:324 src/lib/elm_check.c:327 src/lib/elm_check.c:414
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_radio.c:298
msgid "State: Off"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_check.c:399 src/lib/elm_check.c:409
+msgid "State"
+msgstr ""
+
+#: src/lib/elm_check.c:462
+msgid "Check"
+msgstr ""
+
+#: src/lib/elm_config.c:1354
+msgid "default:LTR"
+msgstr "default:RTL"
+
+#: src/lib/elm_datefield.c:412
+msgid "PM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:413
+msgid "AM"
+msgstr ""
+
+#: src/lib/elm_datefield.c:740
+msgid "DateTimeFormat"
+msgstr ""
+
+#: src/lib/elm_entry.c:1462
+msgid "Copy"
+msgstr ""
+
+#: src/lib/elm_entry.c:1465
+msgid "Cut"
+msgstr ""
+
+#: src/lib/elm_entry.c:1479
+msgid "Select"
+msgstr ""
+
+#: src/lib/elm_entry.c:1485
++=======
+ #: src/lib/elm_check.c:401 src/lib/elm_check.c:411
+ msgid "State"
+ msgstr ""
+
+ #: src/lib/elm_check.c:467
+ msgid "Check"
+ msgstr ""
+
+ #: src/lib/elm_config.c:1358
+ msgid "default:LTR"
+ msgstr "default:RTL"
+
+ #: src/lib/elm_entry.c:1351
+ msgid "Copy"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1354
+ msgid "Cut"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1368
+ msgid "Select"
+ msgstr ""
+
+ #: src/lib/elm_entry.c:1374
++>>>>>>> remotes/origin/upstream
msgid "Paste"
msgstr ""
msgid "Radio"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_searchbar.c:199
+msgid "Search"
+msgstr ""
+
++=======
++>>>>>>> remotes/origin/upstream
#: src/lib/elm_toggle.c:11
msgid "ON"
msgstr ""
msgid "OFF"
msgstr ""
++<<<<<<< HEAD
+#: src/lib/elm_toolbar.c:676
+msgid "Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:757
+msgid "Separator"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:761
+msgid "State: Selected"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:763
+msgid "Has menu"
+msgstr ""
+
+#: src/lib/elm_toolbar.c:821
++=======
+ #: src/lib/elm_toolbar.c:802
+ msgid "Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:884
+ msgid "Separator"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:888
+ msgid "State: Selected"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:890
+ msgid "Has menu"
+ msgstr ""
+
+ #: src/lib/elm_toolbar.c:954
++>>>>>>> remotes/origin/upstream
msgid "Tool Item"
msgstr ""
test.c \
test_3d.c \
test_actionslider.c \
++<<<<<<< HEAD
+test_anchorblock.c \
+test_anchorview.c \
++=======
++>>>>>>> remotes/origin/upstream
test_anim.c \
test_bg.c \
test_box.c \
test_conform.c \
test_ctxpopup.c \
test_cursor.c \
++<<<<<<< HEAD
+test_diskselector.c \
+test_entry.c \
+test_factory.c \
++=======
+ test_datetime.c \
+ test_dayselector.c \
+ test_diskselector.c \
+ test_entry.c \
+ test_entry_anchor.c \
+ test_entry_anchor2.c \
++>>>>>>> remotes/origin/upstream
test_fileselector_button.c \
test_fileselector.c \
test_fileselector_entry.c \
test_multibuttonentry.c \
test_naviframe.c \
test_notify.c \
++<<<<<<< HEAD
+test_pager.c \
++=======
++>>>>>>> remotes/origin/upstream
test_panel.c \
test_panes.c \
test_photo.c \
test_photocam.c \
++<<<<<<< HEAD
++=======
+ test_popup.c \
++>>>>>>> remotes/origin/upstream
test_progressbar.c \
test_radio.c \
test_scaling.c \
test_win_inline.c \
test_win_socket.c \
test_win_plug.c \
++<<<<<<< HEAD
+test_win_state.c
++=======
+ test_win_state.c \
+ test.h
++>>>>>>> remotes/origin/upstream
if HAVE_EIO
elementary_test_SOURCES += test_eio.c
elementary_testql_la_SOURCES = $(elementary_test_SOURCES)
elementary_testql_la_LIBADD = $(top_builddir)/src/lib/libelementary.la \
@ELEMENTARY_EWEATHER_LIBS@ \
++<<<<<<< HEAD
+ @EIO_LIBS@ \
+ @ELEMENTARY_WEB_LIBS@
++=======
+ @ELEMENTARY_EDBUS_LIBS@ \
+ @ELEMENTARY_EFREET_LIBS@ \
+ @ELEMENTARY_EMAP_LIBS@ \
+ @ELEMENTARY_LIBS@ \
+ @EIO_LIBS@ \
+ @ELEMENTARY_WEB_LIBS@ \
+ @my_libs@
++>>>>>>> remotes/origin/upstream
elementary_testql_la_CFLAGS =
elementary_testql_la_LDFLAGS = -module -avoid-version -no-undefined
elementary_testql_CFLAGS = -DELM_LIB_QUICKLAUNCH=1
elementary_testql_LDFLAGS =
endif
++<<<<<<< HEAD
++=======
+
+ EXTRA_DIST = \
+ test_factory.c
++>>>>>>> remotes/origin/upstream
#define ELM_LIST_DISABLE(list) \
do \
{ \
++<<<<<<< HEAD
+ const Eina_List *l = elm_list_items_get(list); \
+ if (l) \
+ { \
+ elm_list_item_show(eina_list_data_get(l)); \
++=======
+ const Eina_List *_l = elm_list_items_get(list); \
+ if (_l) \
+ { \
+ elm_list_item_show(eina_list_data_get(_l));\
++>>>>>>> remotes/origin/upstream
elm_object_disabled_set(list, EINA_TRUE); \
} \
} \
evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, 0.0); \
evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.5); \
elm_object_text_set(lb, label); \
++<<<<<<< HEAD
+ elm_object_content_set(pd, lb); \
++=======
+ elm_object_content_set(pd, lb); \
++>>>>>>> remotes/origin/upstream
evas_object_show(lb); \
} \
while (0)
static const char *theme_set = NULL;
static const char *finger_size_set = NULL;
static const char *scale_set = NULL;
++<<<<<<< HEAD
+static Fonts_Data fdata = {NULL, NULL, NULL, NULL, NULL, NULL, 0.0};
++=======
+ static Fonts_Data fndata = {NULL, NULL, NULL, NULL, NULL, NULL, 0.0};
++>>>>>>> remotes/origin/upstream
static void
_font_styles_list_sel(void *data __UNUSED__,
Elm_Text_Class_Data *tc_data;
Elm_Font_Size_Data *sd;
++<<<<<<< HEAD
+ EINA_LIST_FREE(fdata.text_classes, tc_data)
++=======
+ EINA_LIST_FREE(fndata.text_classes, tc_data)
++>>>>>>> remotes/origin/upstream
{
eina_stringshare_del(tc_data->name);
eina_stringshare_del(tc_data->desc);
free(tc_data);
}
++<<<<<<< HEAD
+ elm_font_available_hash_del(fdata.font_hash);
+ fdata.font_hash = NULL;
+
+ EINA_LIST_FREE(fdata.font_px_list, sd)
++=======
+ elm_font_available_hash_del(fndata.font_hash);
+ fndata.font_hash = NULL;
+
+ EINA_LIST_FREE(fndata.font_px_list, sd)
++>>>>>>> remotes/origin/upstream
{
eina_stringshare_del(sd->size_str);
free(sd);
}
++<<<<<<< HEAD
+ EINA_LIST_FREE(fdata.font_scale_list, sd)
++=======
+ EINA_LIST_FREE(fndata.font_scale_list, sd)
++>>>>>>> remotes/origin/upstream
{
eina_stringshare_del(sd->size_str);
free(sd);
}
++<<<<<<< HEAD
+ if (fdata.cur_font) eina_stringshare_del(fdata.cur_font);
+ fdata.cur_font = NULL;
+
+ if (fdata.cur_style) eina_stringshare_del(fdata.cur_style);
+ fdata.cur_style = NULL;
++=======
+ if (fndata.cur_font) eina_stringshare_del(fndata.cur_font);
+ fndata.cur_font = NULL;
+
+ if (fndata.cur_style) eina_stringshare_del(fndata.cur_style);
+ fndata.cur_style = NULL;
++>>>>>>> remotes/origin/upstream
elm_config_save();
elm_exit(); /* exit the program's main loop that runs in elm_run() */
void *event_info __UNUSED__)
{
Eina_Bool val = elm_check_state_get(obj);
++<<<<<<< HEAD
+ Eina_Bool sb = elm_scroll_bounce_enabled_get();
+
+ if (val == sb) return;
+ elm_scroll_bounce_enabled_all_set(val);
++=======
+ Eina_Bool sb = elm_config_scroll_bounce_enabled_get();
+
+ if (val == sb) return;
+ elm_config_scroll_bounce_enabled_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/
}
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double bf = elm_scroll_bounce_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (bf == val) return;
+ elm_scroll_bounce_friction_all_set(val);
++=======
+ double bf = elm_config_scroll_bounce_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (bf == val) return;
+ elm_config_scroll_bounce_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double ps = elm_scroll_page_scroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (ps == val) return;
+ elm_scroll_page_scroll_friction_all_set(val);
++=======
+ double ps = elm_config_scroll_page_scroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (ps == val) return;
+ elm_config_scroll_page_scroll_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double bis = elm_scroll_bring_in_scroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (bis == val) return;
+ elm_scroll_bring_in_scroll_friction_all_set(val);
++=======
+ double bis = elm_config_scroll_bring_in_scroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (bis == val) return;
+ elm_config_scroll_bring_in_scroll_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double zf = elm_scroll_zoom_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (zf == val) return;
+ elm_scroll_zoom_friction_all_set(val);
++=======
+ double zf = elm_config_scroll_zoom_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (zf == val) return;
+ elm_config_scroll_zoom_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
void *event_info __UNUSED__)
{
Eina_Bool val = elm_check_state_get(obj);
++<<<<<<< HEAD
+ Eina_Bool sb = elm_scroll_thumbscroll_enabled_get();
+
+ if (val == sb) return;
+ elm_scroll_thumbscroll_enabled_all_set(val);
++=======
+ Eina_Bool sb = elm_config_scroll_thumbscroll_enabled_get();
+
+ if (val == sb) return;
+ elm_config_scroll_thumbscroll_enabled_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
/*TODO: enable/disable subordinate sliders (make 'em support it 1st)*/
}
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double tst = elm_scroll_thumbscroll_threshold_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tst == val) return;
+ elm_scroll_thumbscroll_threshold_all_set(val);
++=======
+ double tst = elm_config_scroll_thumbscroll_threshold_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tst == val) return;
+ elm_config_scroll_thumbscroll_threshold_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double tsmt = elm_scroll_thumbscroll_momentum_threshold_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsmt == val) return;
+ elm_scroll_thumbscroll_momentum_threshold_all_set(val);
++=======
+ double tsmt = elm_config_scroll_thumbscroll_momentum_threshold_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsmt == val) return;
+ elm_config_scroll_thumbscroll_momentum_threshold_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double tsf = elm_scroll_thumbscroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsf == val) return;
+ elm_scroll_thumbscroll_friction_all_set(val);
++=======
+ double tsf = elm_config_scroll_thumbscroll_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsf == val) return;
+ elm_config_scroll_thumbscroll_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double tsbf = elm_scroll_thumbscroll_border_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsbf == val) return;
+ elm_scroll_thumbscroll_border_friction_all_set(val);
++=======
+ double tsbf = elm_config_scroll_thumbscroll_border_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tsbf == val) return;
+ elm_config_scroll_thumbscroll_border_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double tssf = elm_scroll_thumbscroll_sensitivity_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tssf == val) return;
+ elm_scroll_thumbscroll_sensitivity_friction_all_set(val);
++=======
+ double tssf = elm_config_scroll_thumbscroll_sensitivity_friction_get();
+ double val = elm_slider_value_get(obj);
+
+ if (tssf == val) return;
+ elm_config_scroll_thumbscroll_sensitivity_friction_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Eina_Bool cf = elm_cache_flush_enabled_get();
++=======
+ Eina_Bool cf = elm_config_cache_flush_enabled_get();
++>>>>>>> remotes/origin/upstream
Eina_Bool val = elm_check_state_get(obj);
if (cf == val) return;
elm_object_disabled_set((Evas_Object *)data, !val);
++<<<<<<< HEAD
+ elm_cache_flush_enabled_all_set(val);
++=======
+ elm_config_cache_flush_enabled_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double cf = elm_cache_flush_interval_get();
+ double val = elm_slider_value_get(obj);
+
+ if (cf == val) return;
+ elm_cache_flush_interval_all_set(val);
++=======
+ double cf = elm_config_cache_flush_interval_get();
+ double val = elm_slider_value_get(obj);
+
+ if (cf == val) return;
+ elm_config_cache_flush_interval_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double font_cache = elm_font_cache_get();
+ double val = elm_slider_value_get(obj);
+
+ if (font_cache == val) return;
+ elm_font_cache_all_set(val * 1024);
++=======
+ double font_cache = elm_config_cache_font_cache_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (font_cache == val) return;
+ elm_config_cache_font_cache_size_set(val * 1024);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double image_cache = elm_image_cache_get();
+ double val = elm_slider_value_get(obj);
+
+ if (image_cache == val) return;
+ elm_image_cache_all_set(val * 1024);
++=======
+ double image_cache = elm_config_cache_image_cache_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (image_cache == val) return;
+ elm_config_cache_image_cache_size_set(val * 1024);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double scale = elm_scale_get();
+ double val = elm_slider_value_get(obj);
+
+ if (scale == val) return;
+ elm_scale_all_set(val);
++=======
+ double scale = elm_config_scale_get();
+ double val = elm_slider_value_get(obj);
+
+ if (scale == val) return;
+ elm_config_scale_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double fs = elm_finger_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (fs == val) return;
+ elm_finger_size_all_set(val);
++=======
+ double fs = elm_config_finger_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (fs == val) return;
+ elm_config_finger_size_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double efc = elm_edje_file_cache_get();
+ double val = elm_slider_value_get(obj);
+
+ if (efc == val) return;
+ elm_edje_file_cache_all_set(val);
++=======
+ double efc = elm_config_cache_edje_file_cache_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (efc == val) return;
+ elm_config_cache_edje_file_cache_size_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ double ecc = elm_edje_collection_cache_get();
+ double val = elm_slider_value_get(obj);
+
+ if (ecc == val) return;
+ elm_edje_collection_cache_all_set(val);
++=======
+ double ecc = elm_config_cache_edje_collection_cache_size_get();
+ double val = elm_slider_value_get(obj);
+
+ if (ecc == val) return;
+ elm_config_cache_edje_collection_cache_size_set(val);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
elm_slider_unit_format_set(sl, "%1.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.25, 5.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scale_get());
++=======
+ elm_slider_value_set(sl, elm_config_scale_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "delay,changed", sc_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.0f");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 5, 200);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_finger_size_get());
++=======
+ elm_slider_value_set(sl, elm_config_finger_size_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
_flip_to(Evas_Object *win,
const char *name)
{
++<<<<<<< HEAD
+ Evas_Object *wid, *pager;
+ wid = evas_object_data_get(win, name);
+ pager = evas_object_data_get(win, "pager");
+ elm_pager_content_promote(pager, wid);
++=======
+ Evas_Object *wid, *naviframe;
+ wid = evas_object_data_get(win, name);
+ naviframe = evas_object_data_get(win, "naviframe");
+ elm_naviframe_item_simple_promote(naviframe, wid);
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *fclasses, *fnames, *fstyles, *fsizes;
++=======
+ Evas_Object *win, *fclasses;
++>>>>>>> remotes/origin/upstream
Elm_Text_Class_Data *tc_data, *tc;
Elm_Object_Item *list_it;
Eina_List *l;
if (!list_it) return;
tc_data = elm_object_item_data_get(list_it);
++<<<<<<< HEAD
+ fnames = evas_object_data_get(win, "font_names_list");
+ fstyles = evas_object_data_get(win, "font_styles_list");
+ fsizes = evas_object_data_get(win, "font_sizes_list");
+
+ EINA_LIST_FOREACH(fdata.text_classes, l, tc)
++=======
+ EINA_LIST_FOREACH(fndata.text_classes, l, tc)
++>>>>>>> remotes/origin/upstream
{
eina_stringshare_replace(&tc->font, tc_data->font);
eina_stringshare_replace(&tc->style, tc_data->style);
fstyles = evas_object_data_get(win, "font_styles_list");
fsizes = evas_object_data_get(win, "font_sizes_list");
++<<<<<<< HEAD
+ elm_font_overlay_unset(tc_data->name);
+
+ eina_stringshare_replace(&fdata.cur_font, NULL);
+ eina_stringshare_replace(&tc_data->font, NULL);
+ eina_stringshare_replace(&fdata.cur_style, NULL);
+ eina_stringshare_replace(&tc_data->style, NULL);
+ fdata.cur_size = 0.0;
++=======
+ elm_config_font_overlay_unset(tc_data->name);
+
+ eina_stringshare_replace(&fndata.cur_font, NULL);
+ eina_stringshare_replace(&tc_data->font, NULL);
+ eina_stringshare_replace(&fndata.cur_style, NULL);
+ eina_stringshare_replace(&tc_data->style, NULL);
+ fndata.cur_size = 0.0;
++>>>>>>> remotes/origin/upstream
tc_data->size = 0.0;
ELM_LIST_DISABLE(fnames);
Eina_List *l;
win = data;
++<<<<<<< HEAD
+ eina_stringshare_replace(&fdata.cur_font, NULL);
+ eina_stringshare_replace(&fdata.cur_style, NULL);
+ fdata.cur_size = 0.0;
+
+ EINA_LIST_FOREACH(fdata.text_classes, l, tc_data)
+ {
+ elm_font_overlay_unset(tc_data->name);
++=======
+ eina_stringshare_replace(&fndata.cur_font, NULL);
+ eina_stringshare_replace(&fndata.cur_style, NULL);
+ fndata.cur_size = 0.0;
+
+ EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)
+ {
+ elm_config_font_overlay_unset(tc_data->name);
++>>>>>>> remotes/origin/upstream
eina_stringshare_replace(&tc_data->font, NULL);
eina_stringshare_replace(&tc_data->style, NULL);
Elm_Text_Class_Data *tc_data;
Eina_List *l;
++<<<<<<< HEAD
+ EINA_LIST_FOREACH(fdata.text_classes, l, tc_data)
+ {
+ if (tc_data->font)
+ {
+ const char *name;
+
+ name = elm_font_fontconfig_name_get(tc_data->font,
+ tc_data->style);
+ elm_font_overlay_set(tc_data->name, name,
+ tc_data->size ? tc_data->size : -100);
+ elm_font_fontconfig_name_free(name);
+ }
+ else
+ elm_font_overlay_unset(tc_data->name);
+ }
+
+ elm_config_save();
+ elm_font_overlay_all_apply();
++=======
+ EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)
+ {
+ if (tc_data->font)
+ {
+ char *name;
+
+ name = elm_font_fontconfig_name_get(tc_data->font,
+ tc_data->style);
+ elm_config_font_overlay_set(tc_data->name, name,
+ tc_data->size ? tc_data->size : -100);
+ elm_font_fontconfig_name_free(name);
+ }
+ else
+ elm_config_font_overlay_unset(tc_data->name);
+ }
+
+ elm_config_save();
+ elm_config_font_overlay_apply();
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
/* TODO: apply hinting */
}
Elm_Theme *th;
int fs;
++<<<<<<< HEAD
+ scale = elm_scale_get();
+ fs = elm_finger_size_get();
+ flush_interval = elm_cache_flush_interval_get();
+ font_c = elm_font_cache_get();
+ image_c = elm_image_cache_get();
+ edje_file_c = elm_edje_file_cache_get();
+ edje_col_c = elm_edje_collection_cache_get();
+
+ s_bounce = elm_scroll_bounce_enabled_get();
+ s_bounce_friction = elm_scroll_bounce_friction_get();
+ ts = elm_scroll_thumbscroll_enabled_get();
+ ts_threshould = elm_scroll_thumbscroll_threshold_get();
+ ts_momentum_threshold = elm_scroll_thumbscroll_momentum_threshold_get();
+ ts_friction = elm_scroll_thumbscroll_friction_get();
+ ts_border_friction = elm_scroll_thumbscroll_border_friction_get();
+ ts_sensitivity_friction = elm_scroll_thumbscroll_sensitivity_friction_get();
+ page_friction = elm_scroll_page_scroll_friction_get();
+ bring_in_friction = elm_scroll_bring_in_scroll_friction_get();
+ zoom_friction = elm_scroll_zoom_friction_get();
+
+ /* gotta update root windows' atoms */
+// elm_scale_all_set(scale);
+ elm_slider_value_set(evas_object_data_get(win, "scale_slider"), scale);
+// elm_finger_size_all_set(fs);
+ elm_slider_value_set(evas_object_data_get(win, "fs_slider"), fs);
+
+// elm_cache_flush_interval_all_set(flush_interval);
+ elm_slider_value_set(evas_object_data_get(win,
+ "cache_flush_interval_slider"),
+ flush_interval);
+// elm_font_cache_all_set(font_c);
+ elm_slider_value_set(evas_object_data_get(win, "font_cache_slider"),
+ font_c / 1024.0);
+// elm_image_cache_all_set(image_c);
+ elm_slider_value_set(evas_object_data_get(win, "image_cache_slider"),
+ image_c / 1024.0);
+// elm_edje_file_cache_all_set(edje_file_c);
+ elm_slider_value_set(evas_object_data_get(win, "edje_file_cache_slider"),
+ edje_file_c);
+// elm_edje_collection_cache_all_set(edje_col_c);
++=======
+ scale = elm_config_scale_get();
+ fs = elm_config_finger_size_get();
+ flush_interval = elm_config_cache_flush_interval_get();
+ font_c = elm_config_cache_font_cache_size_get();
+ image_c = elm_config_cache_image_cache_size_get();
+ edje_file_c = elm_config_cache_edje_file_cache_size_get();
+ edje_col_c = elm_config_cache_edje_collection_cache_size_get();
+
+ s_bounce = elm_config_scroll_bounce_enabled_get();
+ s_bounce_friction = elm_config_scroll_bounce_friction_get();
+ ts = elm_config_scroll_thumbscroll_enabled_get();
+ ts_threshould = elm_config_scroll_thumbscroll_threshold_get();
+ ts_momentum_threshold = elm_config_scroll_thumbscroll_momentum_threshold_get();
+ ts_friction = elm_config_scroll_thumbscroll_friction_get();
+ ts_border_friction = elm_config_scroll_thumbscroll_border_friction_get();
+ ts_sensitivity_friction = elm_config_scroll_thumbscroll_sensitivity_friction_get();
+ page_friction = elm_config_scroll_page_scroll_friction_get();
+ bring_in_friction = elm_config_scroll_bring_in_scroll_friction_get();
+ zoom_friction = elm_config_scroll_zoom_friction_get();
+
+ /* gotta update root windows' atoms */
+ elm_slider_value_set(evas_object_data_get(win, "scale_slider"), scale);
+ elm_slider_value_set(evas_object_data_get(win, "fs_slider"), fs);
+
+ elm_slider_value_set(evas_object_data_get(win,
+ "cache_flush_interval_slider"),
+ flush_interval);
+ elm_slider_value_set(evas_object_data_get(win, "font_cache_slider"),
+ font_c / 1024.0);
+ elm_slider_value_set(evas_object_data_get(win, "image_cache_slider"),
+ image_c / 1024.0);
+ elm_slider_value_set(evas_object_data_get(win, "edje_file_cache_slider"),
+ edje_file_c);
++>>>>>>> remotes/origin/upstream
elm_slider_value_set(evas_object_data_get(win,
"edje_collection_cache_slider"),
edje_col_c);
++<<<<<<< HEAD
+// elm_scroll_bounce_enabled_all_set(s_bounce);
elm_check_state_set(evas_object_data_get(win, "scroll_bounce_check"),
s_bounce);
+// elm_scroll_bounce_friction_all_set(s_bounce_friction);
elm_slider_value_set(evas_object_data_get(win, "bounce_friction_slider"),
s_bounce_friction);
+// elm_scroll_thumbscroll_enabled_all_set(ts);
elm_check_state_set(evas_object_data_get(win, "thumbscroll_check"), ts);
+// elm_scroll_thumbscroll_threshold_all_set(ts_threshould);
elm_slider_value_set(evas_object_data_get(win,
"thumbscroll_threshold_slider"),
ts_threshould);
elm_slider_value_set(evas_object_data_get(win,
"bring_in_scroll_friction_slider"),
bring_in_friction);
+// elm_scroll_zoom_friction_all_set(zoom_friction);
++=======
++ elm_check_state_set(evas_object_data_get(win, "scroll_bounce_check"),
++ s_bounce);
++ elm_slider_value_set(evas_object_data_get(win, "bounce_friction_slider"),
++ s_bounce_friction);
++ elm_check_state_set(evas_object_data_get(win, "thumbscroll_check"), ts);
++ elm_slider_value_set(evas_object_data_get(win,
++ "thumbscroll_threshold_slider"),
++ ts_threshould);
++ elm_slider_value_set(evas_object_data_get(win,
++ "ts_momentum_threshold_slider"),
++ ts_momentum_threshold);
++ elm_slider_value_set(evas_object_data_get(win,
++ "thumbscroll_friction_slider"),
++ ts_friction);
++ elm_slider_value_set(evas_object_data_get(win, "ts_border_friction_slider"),
++ ts_border_friction);
++ elm_slider_value_set(evas_object_data_get(win, "ts_sensitivity_friction_slider"),
++ ts_sensitivity_friction);
++ elm_slider_value_set(evas_object_data_get(win,
++ "page_scroll_friction_slider"),
++ page_friction);
++ elm_slider_value_set(evas_object_data_get(win,
++ "bring_in_scroll_friction_slider"),
++ bring_in_friction);
++>>>>>>> remotes/origin/upstream
elm_slider_value_set(evas_object_data_get(win,
"zoom_scroll_friction_slider"),
zoom_friction);
curr_theme = _elm_theme_current_get(elm_theme_get(NULL));
++<<<<<<< HEAD
+// elm_theme_all_set(curr_theme);
++=======
++>>>>>>> remotes/origin/upstream
th = elm_theme_new();
elm_theme_set(th, curr_theme);
elm_theme_free(th);
eina_stringshare_del(curr_theme);
++<<<<<<< HEAD
+ curr_engine = elm_engine_current_get();
++=======
+ curr_engine = elm_config_engine_get();
++>>>>>>> remotes/origin/upstream
l_items = elm_list_items_get(evas_object_data_get(win, "engines_list"));
EINA_LIST_FOREACH(l_items, l, list_it)
{
_profile_change_do(Evas_Object *win,
const char *profile)
{
++<<<<<<< HEAD
+ elm_profile_all_set(profile);
++=======
+ elm_config_profile_set(profile);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
_config_display_update(win);
}
li = data;
selection = elm_object_item_data_get(elm_list_selected_item_get(li));
++<<<<<<< HEAD
+ if (!strcmp(elm_engine_current_get(), selection))
+ return;
+
+ elm_engine_set(selection);
++=======
+ if (!strcmp(elm_config_engine_get(), selection))
+ return;
+
+ elm_config_engine_set(selection);
++>>>>>>> remotes/origin/upstream
elm_config_save(); /* make sure new engine has its data dir */
}
li = data;
selection = elm_object_item_data_get(elm_list_selected_item_get(li));
++<<<<<<< HEAD
+ profile = elm_profile_current_get();
++=======
+ profile = elm_config_profile_get();
++>>>>>>> remotes/origin/upstream
if (!profile)
{
if (!strcmp(profile, selection))
return;
++<<<<<<< HEAD
+ elm_profile_set(selection); /* just here to update info for getters below */
++=======
+ elm_config_profile_set(selection); /* just here to update info for getters below */
++>>>>>>> remotes/origin/upstream
_profile_change_do(elm_object_top_widget_get(li), selection);
elm_config_save(); /* make sure new profile has its data dir */
li = data;
selection = elm_object_item_data_get(elm_list_selected_item_get(li));
++<<<<<<< HEAD
+ curr = elm_profile_current_get();
+
+ elm_config_save(); /* dump config into old profile's data dir */
+
+ pdir = elm_profile_dir_get(selection, EINA_TRUE);
++=======
+ curr = elm_config_profile_get();
+
+ elm_config_save(); /* dump config into old profile's data dir */
+
+ pdir = elm_config_profile_dir_get(selection, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
if (!pdir)
return;
ecore_file_recursive_rm(pdir);
++<<<<<<< HEAD
+ elm_profile_dir_free(pdir);
++=======
+ elm_config_profile_dir_free(pdir);
++>>>>>>> remotes/origin/upstream
elm_config_reload();
th = elm_object_theme_get(sample);
defth = elm_theme_get(th);
++<<<<<<< HEAD
+ elm_theme_all_set(defth);
+ elm_config_save();
++=======
+ elm_theme_set(NULL, defth);
+ elm_config_save();
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
static void
{
Evas_Object *win = elm_object_top_widget_get(obj);
Evas_Object *sample = evas_object_data_get(win, "theme_preview");
++<<<<<<< HEAD
+ Elm_Theme *th, *sth;
+ Elm_Object_Item *list_it;
+ const char *defth;
++=======
+ Elm_Theme *th;
+ Elm_Object_Item *list_it;
++>>>>>>> remotes/origin/upstream
Eina_Strbuf *newth;
Eina_List *l;
if (!sample) return;
tsel = elm_list_selected_items_get(obj);
++<<<<<<< HEAD
+ sth = elm_object_theme_get(sample);
+ defth = elm_theme_get(sth);
++=======
++>>>>>>> remotes/origin/upstream
newth = eina_strbuf_new();
EINA_SAFETY_ON_NULL_RETURN(newth);
th = elm_theme_new();
static void
_status_config_sizing(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *lb, *pd, *bx, *sl, *sp;
elm_slider_unit_format_set(sl, "%1.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.25, 5.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scale_get());
++=======
+ elm_slider_value_set(sl, elm_config_scale_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "delay,changed", sc_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.0f");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 5, 200);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_finger_size_get());
++=======
+ elm_slider_value_set(sl, elm_config_finger_size_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_data_set(win, "sizing", bx);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, bx);
++=======
+ elm_naviframe_item_simple_push(naviframe, bx);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
evas_object_show(rd);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, 1.0, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_table_pack(base, sp, 0, 2, 2, 1);
static void
_status_config_themes(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *tb, *rc, *sc, *sp, *li, *pd, *fr, *bt, *sample;
Eina_List *list, *l;
evas_object_show(fr);
sc = elm_scroller_add(win);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 0, 0);
++=======
+ elm_scroller_bounce_set(sc, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sc, 1.0, 1.0);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(fr, sc);
/////////////////////////////////////////////
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, 1.0, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_table_pack(tb, sp, 0, 2, 1, 1);
evas_object_show(bt);
evas_object_data_set(win, "themes", tb);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, tb);
++=======
+ elm_naviframe_item_simple_push(naviframe, tb);
++>>>>>>> remotes/origin/upstream
}
static void
_font_preview_update(Evas_Object *win)
{
Evas_Font_Size sz;
++<<<<<<< HEAD
+ const char *name;
+
+ if (!fdata.cur_font)
+ return;
+
+ name = elm_font_fontconfig_name_get(fdata.cur_font, fdata.cur_style);
+ sz = fdata.cur_size;
++=======
+ char *name;
+
+ if (!fndata.cur_font)
+ return;
+
+ name = elm_font_fontconfig_name_get(fndata.cur_font, fndata.cur_style);
+ sz = fndata.cur_size;
++>>>>>>> remotes/origin/upstream
if (sz < 0)
sz = (-sz * 10) / 100;
EINA_LIST_FOREACH(f_names_items, l, list_it)
{
++<<<<<<< HEAD
+ const char *l;
+
+ l = elm_object_item_text_get(list_it);
+
+ if (tc_data->font && !strcmp(l, tc_data->font))
++=======
+ const char *s;
+
+ s = elm_object_item_text_get(list_it);
+
+ if (tc_data->font && !strcmp(s, tc_data->font))
++>>>>>>> remotes/origin/upstream
{
elm_list_item_selected_set(list_it, EINA_TRUE);
elm_list_item_show(list_it);
Evas_Object *obj,
void *event_info)
{
++<<<<<<< HEAD
+ Evas_Object *style_list, *cls_list, *sizes_list, *win;
++=======
+ Evas_Object *style_list, *cls_list, *win;
++>>>>>>> remotes/origin/upstream
const char *style, *sel_font;
Elm_Text_Class_Data *tc_data;
Elm_Object_Item *list_it, *fc_list_it;
win = elm_object_top_widget_get(obj);
style_list = evas_object_data_get(win, "font_styles_list");
cls_list = evas_object_data_get(win, "font_classes_list");
++<<<<<<< HEAD
+ sizes_list = evas_object_data_get(win, "font_sizes_list");
++=======
++>>>>>>> remotes/origin/upstream
fc_list_it = elm_list_selected_item_get(cls_list);
if (!fc_list_it) return; /* should not happen, fonts list disabled in
* this case */
++<<<<<<< HEAD
+ eina_stringshare_replace(&fdata.cur_font, sel_font);
+
+ tc_data = elm_object_item_data_get(fc_list_it);
+ if (tc_data->font) eina_stringshare_del(tc_data->font);
+ if (fdata.cur_font) tc_data->font = eina_stringshare_ref(fdata.cur_font);
+
+ /* load styles list */
+ efp = eina_hash_find(fdata.font_hash, sel_font);
++=======
+ eina_stringshare_replace(&fndata.cur_font, sel_font);
+
+ tc_data = elm_object_item_data_get(fc_list_it);
+ if (tc_data->font) eina_stringshare_del(tc_data->font);
+ if (fndata.cur_font) tc_data->font = eina_stringshare_ref(fndata.cur_font);
+
+ /* load styles list */
+ efp = eina_hash_find(fndata.font_hash, sel_font);
++>>>>>>> remotes/origin/upstream
ELM_LIST_ENABLE(style_list);
elm_list_clear(style_list);
list_it = elm_list_selected_item_get(fc_list);
if (!list_it) return; /* should not happen */
++<<<<<<< HEAD
+ eina_stringshare_replace(&fdata.cur_style,
++=======
+ eina_stringshare_replace(&fndata.cur_style,
++>>>>>>> remotes/origin/upstream
elm_object_item_text_get(event_info));
ELM_LIST_ENABLE(fs_list);
tc_data = elm_object_item_data_get(list_it);
eina_stringshare_del(tc_data->style);
++<<<<<<< HEAD
+ tc_data->style = eina_stringshare_ref(fdata.cur_style);
++=======
+ tc_data->style = eina_stringshare_ref(fndata.cur_style);
++>>>>>>> remotes/origin/upstream
evas_event_freeze(evas_object_evas_get(fs_list));
edje_freeze();
if (!list_it) return; /* should not happen */
sd = elm_object_item_data_get(event_info);
++<<<<<<< HEAD
+ fdata.cur_size = sd->size;
+
+ tc_data = elm_object_item_data_get(list_it);
+ tc_data->size = fdata.cur_size;
++=======
+ fndata.cur_size = sd->size;
+
+ tc_data = elm_object_item_data_get(list_it);
+ tc_data->size = fndata.cur_size;
++>>>>>>> remotes/origin/upstream
_font_preview_update(win);
}
evas_event_freeze(evas);
edje_freeze();
++<<<<<<< HEAD
+ EINA_LIST_FOREACH(fdata.text_classes, l, tc_data)
++=======
+ EINA_LIST_FOREACH(fndata.text_classes, l, tc_data)
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, tc_data->desc, NULL, NULL,
_font_classes_list_sel, tc_data);
static void
_fonts_data_fill(Evas *evas)
{
++<<<<<<< HEAD
+ const Eina_List *fo_list, *text_classes, *l;
++=======
+ const Eina_List *fo_list, *l;
+ Eina_List *text_classes;
++>>>>>>> remotes/origin/upstream
Elm_Text_Class_Data *tc_data;
Elm_Font_Size_Data *sd;
Elm_Font_Overlay *efo;
int i;
evas_fonts = evas_font_available_list(evas);
++<<<<<<< HEAD
+ fdata.font_hash = elm_font_available_hash_add(evas_fonts);
+ evas_font_available_list_free(evas, evas_fonts);
+
+ text_classes = elm_text_classes_list_get();
+ fo_list = elm_font_overlay_list_get();
++=======
+ fndata.font_hash = elm_font_available_hash_add(evas_fonts);
+ evas_font_available_list_free(evas, evas_fonts);
+
+ text_classes = elm_config_text_classes_list_get();
+ fo_list = elm_config_font_overlay_list_get();
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(text_classes, l, etc)
{
tc_data->size = efo->size;
}
++<<<<<<< HEAD
+ fdata.text_classes = eina_list_append(fdata.text_classes, tc_data);
+ }
+
+ elm_text_classes_list_free(text_classes);
+
+ /* FIXME: hinting later */
+ /* fdata.hinting = e_config->font_hinting; */
++=======
+ fndata.text_classes = eina_list_append(fndata.text_classes, tc_data);
+ }
+
+ elm_config_text_classes_list_free(text_classes);
+
+ /* FIXME: hinting later */
+ /* fndata.hinting = e_config->font_hinting; */
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Tiny");
sd->size = -50;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Small");
sd->size = -80;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Normal");
sd->size = -100;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Big");
sd->size = -150;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Really Big");
sd->size = -190;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add("Huge");
sd->size = -250;
++<<<<<<< HEAD
+ fdata.font_scale_list = eina_list_append(fdata.font_scale_list, sd);
++=======
+ fndata.font_scale_list = eina_list_append(fndata.font_scale_list, sd);
++>>>>>>> remotes/origin/upstream
for (i = 5; i < 51; i++)
{
sd = calloc(1, sizeof(Elm_Font_Size_Data));
sd->size_str = eina_stringshare_add(str);
sd->size = i;
++<<<<<<< HEAD
+ fdata.font_px_list = eina_list_append(fdata.font_px_list, sd);
++=======
+ fndata.font_px_list = eina_list_append(fndata.font_px_list, sd);
++>>>>>>> remotes/origin/upstream
}
}
evas_event_freeze(evas);
edje_freeze();
++<<<<<<< HEAD
+ EINA_LIST_FOREACH(fdata.font_scale_list, l, size_data)
+ elm_list_item_append(size_list, size_data->size_str, NULL, NULL,
+ _font_sizes_list_sel, size_data);
+
+ EINA_LIST_FOREACH(fdata.font_px_list, l, size_data)
++=======
+ EINA_LIST_FOREACH(fndata.font_scale_list, l, size_data)
+ elm_list_item_append(size_list, size_data->size_str, NULL, NULL,
+ _font_sizes_list_sel, size_data);
+
+ EINA_LIST_FOREACH(fndata.font_px_list, l, size_data)
++>>>>>>> remotes/origin/upstream
elm_list_item_append(size_list, size_data->size_str, NULL, NULL,
_font_sizes_list_sel, size_data);
evas_event_freeze(evas);
edje_freeze();
++<<<<<<< HEAD
+ eina_hash_foreach(fdata.font_hash, _font_list_fill, &names_list);
++=======
+ eina_hash_foreach(fndata.font_hash, _font_list_fill, &names_list);
++>>>>>>> remotes/origin/upstream
names_list = eina_list_sort(names_list, eina_list_count(names_list),
_font_sort_cb);
static void
_status_config_fonts(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *base, *fr, *li, *rc, *preview, *sp, *pd, *bt, *bx;
char buf[PATH_MAX];
evas_object_data_set(win, "fonts", base);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, base);
++=======
+ elm_naviframe_item_simple_push(naviframe, base);
++>>>>>>> remotes/origin/upstream
}
static void
{
const char *cur_profile = NULL;
const char *sel_profile, *pdir;
++<<<<<<< HEAD
+ Eina_Bool cur_selected;
++=======
++>>>>>>> remotes/origin/upstream
const char *prof_name;
char buf[PATH_MAX];
Evas_Object *en;
if (!sel_profile)
return;
++<<<<<<< HEAD
+ cur_profile = elm_profile_current_get();
+ cur_selected = !strcmp(cur_profile, sel_profile);
+
+ pdir = elm_profile_dir_get(sel_profile, EINA_TRUE);
+ if (!pdir) pdir = elm_profile_dir_get(sel_profile, EINA_FALSE);
++=======
+ cur_profile = elm_config_profile_get();
+
+ pdir = elm_config_profile_dir_get(sel_profile, EINA_TRUE);
+ if (!pdir) pdir = elm_config_profile_dir_get(sel_profile, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
#ifdef ELM_EFREET
snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);
desk = efreet_desktop_new(buf);
else
{
if (desk) efreet_desktop_free(desk);
++<<<<<<< HEAD
+ pdir = elm_profile_dir_get(sel_profile, EINA_FALSE);
++=======
+ pdir = elm_config_profile_dir_get(sel_profile, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);
desk = efreet_desktop_new(buf);
if ((desk) && (desk->name)) prof_name = desk->name;
EINA_FALSE);
elm_object_disabled_set(evas_object_data_get(obj, "prof_use_btn"),
EINA_FALSE);
++<<<<<<< HEAD
+ elm_profile_dir_free(pdir);
++=======
+ elm_config_profile_dir_free(pdir);
++>>>>>>> remotes/origin/upstream
}
snprintf(buf, sizeof(buf), "<hilight>Selected profile: %s</><br/>",
elm_list_clear(l_widget);
++<<<<<<< HEAD
+ cur_profile = elm_profile_current_get();
++=======
+ cur_profile = elm_config_profile_get();
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(p_names, l, profile)
{
Elm_Object_Item *list_it;
Evas_Object *ic;
++<<<<<<< HEAD
+ pdir = elm_profile_dir_get(profile, EINA_TRUE);
+ if (!pdir) pdir = elm_profile_dir_get(profile, EINA_FALSE);
++=======
+ pdir = elm_config_profile_dir_get(profile, EINA_TRUE);
+ if (!pdir) pdir = elm_config_profile_dir_get(profile, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
label = profile;
#ifdef ELM_EFREET
else
{
if (desk) efreet_desktop_free(desk);
++<<<<<<< HEAD
+ pdir = elm_profile_dir_get(profile, EINA_FALSE);
++=======
+ pdir = elm_config_profile_dir_get(profile, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
snprintf(buf, sizeof(buf), "%s/profile.desktop", pdir);
desk = efreet_desktop_new(buf);
if ((desk) && (desk->name)) label = desk->name;
if (cur_profile && !strcmp(profile, cur_profile))
sel_it = list_it;
++<<<<<<< HEAD
+ elm_profile_dir_free(pdir);
++=======
+ elm_config_profile_dir_free(pdir);
++>>>>>>> remotes/origin/upstream
#ifdef ELM_EFREET
if (desk) efreet_desktop_free(desk);
static void
_status_config_profiles(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *li, *bx, *fr_bx1, *fr_bx2, *btn_bx, *fr, *lb, *en, *sp, *pd,
*bt;
evas_object_smart_callback_add(li, "unselected", _profiles_list_unselect_cb,
NULL);
++<<<<<<< HEAD
+ profs = elm_profile_list_get();
++=======
+ profs = elm_config_profile_list_get();
++>>>>>>> remotes/origin/upstream
evas_object_show(li);
elm_box_pack_end(fr_bx2, li);
_profiles_list_fill(li, profs);
++<<<<<<< HEAD
+ elm_profile_list_free(profs);
++=======
+ elm_config_profile_list_free(profs);
++>>>>>>> remotes/origin/upstream
edje_thaw();
evas_event_thaw(evas);
evas_object_data_set(win, "profiles", bx);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, bx);
++=======
+ elm_naviframe_item_simple_push(naviframe, bx);
++>>>>>>> remotes/origin/upstream
}
static void
_status_config_scrolling(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *lb, *pd, *bx, *sl, *sp, *ck, *sc;
evas_object_data_set(win, "scroll_bounce_check", ck);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
++<<<<<<< HEAD
+ elm_check_state_set(ck, elm_scroll_bounce_enabled_get());
++=======
+ elm_check_state_set(ck, elm_config_scroll_bounce_enabled_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ck);
evas_object_show(ck);
elm_slider_unit_format_set(sl, "%1.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.0, 4.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_bounce_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_bounce_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_data_set(win, "thumbscroll_check", ck);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
++<<<<<<< HEAD
+ elm_check_state_set(ck, elm_scroll_thumbscroll_enabled_get());
++=======
+ elm_check_state_set(ck, elm_config_scroll_thumbscroll_enabled_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ck);
evas_object_show(ck);
elm_slider_unit_format_set(sl, "%1.0f pixels");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 8.0, 50.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_thumbscroll_threshold_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_thumbscroll_threshold_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.0f pixels/s");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 10.0, 200.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_thumbscroll_momentum_threshold_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_thumbscroll_momentum_threshold_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.1f");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 15.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_thumbscroll_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_thumbscroll_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.0, 1.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_thumbscroll_border_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_thumbscroll_border_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.2f");
elm_slider_indicator_format_set(sl, "%1.2f");
elm_slider_min_max_set(sl, 0.1, 1.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_thumbscroll_sensitivity_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_thumbscroll_sensitivity_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.1f");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 5.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_page_scroll_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_page_scroll_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.1f");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 5.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_bring_in_scroll_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_bring_in_scroll_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
elm_slider_unit_format_set(sl, "%1.1f");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 5.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_scroll_zoom_friction_get());
++=======
+ elm_slider_value_set(sl, elm_config_scroll_zoom_friction_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_data_set(win, "scrolling", sc);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, sc);
++=======
+ elm_naviframe_item_simple_push(naviframe, sc);
++>>>>>>> remotes/origin/upstream
}
static char *
if (!e_names)
return;
++<<<<<<< HEAD
+ cur_engine = elm_engine_current_get();
++=======
+ cur_engine = elm_config_engine_get();
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(e_names, l, engine)
{
static void
_status_config_rendering(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *li, *bx, *fr, *sp, *pd, *bt;
Eina_List *engines;
evas_object_show(bt);
evas_object_data_set(win, "rendering", bx);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, bx);
++=======
+ elm_naviframe_item_simple_push(naviframe, bx);
++>>>>>>> remotes/origin/upstream
}
static void
_status_config_caches(Evas_Object *win,
++<<<<<<< HEAD
+ Evas_Object *pager)
++=======
+ Evas_Object *naviframe)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *lb, *pd, *bx, *sl, *sp, *ck;
elm_slider_unit_format_set(sl, "%1.0f ticks");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 8.0, 4096.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_cache_flush_interval_get());
+ elm_object_disabled_set(sl, !elm_cache_flush_enabled_get());
++=======
+ elm_slider_value_set(sl, elm_config_cache_flush_interval_get());
+ elm_object_disabled_set(sl, !elm_config_cache_flush_enabled_get());
++>>>>>>> remotes/origin/upstream
ck = elm_check_add(win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(ck, EVAS_HINT_FILL, 0.5);
elm_object_text_set(ck, "Enable Flushing");
++<<<<<<< HEAD
+ elm_check_state_set(ck, elm_cache_flush_enabled_get());
++=======
+ elm_check_state_set(ck, elm_config_cache_flush_enabled_get());
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", cf_enable, sl);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_smart_callback_add(sl, "delay,changed", cf_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.1f MB");
elm_slider_indicator_format_set(sl, "%1.1f");
elm_slider_min_max_set(sl, 0.0, 4.0);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, (double)elm_font_cache_get() / 1024.0);
++=======
+ elm_slider_value_set(sl, (double)elm_config_cache_font_cache_size_get() / 1024.0);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "delay,changed", fc_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.0f MB");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 32);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, (double)elm_image_cache_get() / 1024.0);
++=======
+ elm_slider_value_set(sl, (double)elm_config_cache_image_cache_size_get() / 1024.0);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "delay,changed", ic_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.0f files");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 32);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_edje_file_cache_get());
++=======
+ elm_slider_value_set(sl, elm_config_cache_edje_file_cache_size_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_smart_callback_add(sl, "delay,changed", efc_change, NULL);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, sp);
elm_slider_unit_format_set(sl, "%1.0f collections");
elm_slider_indicator_format_set(sl, "%1.0f");
elm_slider_min_max_set(sl, 0, 128);
++<<<<<<< HEAD
+ elm_slider_value_set(sl, elm_edje_collection_cache_get());
++=======
+ elm_slider_value_set(sl, elm_config_cache_edje_collection_cache_size_get());
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sl);
evas_object_show(sl);
evas_object_data_set(win, "caches", bx);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, bx);
++=======
+ elm_naviframe_item_simple_push(naviframe, bx);
++>>>>>>> remotes/origin/upstream
}
static void
_status_config_full(Evas_Object *win,
Evas_Object *bx0)
{
++<<<<<<< HEAD
+ Evas_Object *tb, *pager;
+ Elm_Object_Item *tb_sizing, *tb_it;
+
+ tb = elm_toolbar_add(win);
+ elm_toolbar_menu_parent_set(tb, win);
+ elm_toolbar_homogeneous_set(tb, 0);
++=======
+ Evas_Object *tb, *naviframe;
+ Elm_Object_Item *tb_sizing, *tb_it;
+
+ tb = elm_toolbar_add(win);
+ elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_toolbar_menu_parent_set(tb, win);
+ elm_toolbar_homogeneous_set(tb, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(tb, 1.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx0, tb);
evas_object_show(tb);
++<<<<<<< HEAD
+ pager = elm_pager_add(win);
+ evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_data_set(win, "pager", pager);
+
+ _status_config_themes(win, pager);
+ _status_config_fonts(win, pager);
+ _status_config_profiles(win, pager);
+ _status_config_rendering(win, pager);
+ _status_config_scrolling(win, pager);
+ _status_config_caches(win, pager);
+ _status_config_sizing(win, pager);
+
+ // FIXME uncomment after flip style fix, please
+ //elm_object_style_set(pager, "flip");
+ elm_toolbar_item_selected_set(tb_sizing, EINA_TRUE);
+ elm_box_pack_end(bx0, pager);
+ evas_object_show(pager);
++=======
+ naviframe = elm_naviframe_add(win);
+ evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_data_set(win, "naviframe", naviframe);
+
+ _status_config_themes(win, naviframe);
+ _status_config_fonts(win, naviframe);
+ _status_config_profiles(win, naviframe);
+ _status_config_rendering(win, naviframe);
+ _status_config_scrolling(win, naviframe);
+ _status_config_caches(win, naviframe);
+ _status_config_sizing(win, naviframe);
+
+ // FIXME uncomment after flip style fix, please
+ //elm_object_style_set(naviframe, "flip");
+ elm_toolbar_item_selected_set(tb_sizing, EINA_TRUE);
+ elm_box_pack_end(bx0, naviframe);
+ evas_object_show(naviframe);
++>>>>>>> remotes/origin/upstream
}
static void
}
if (!interactive)
{
++<<<<<<< HEAD
+ if (theme_set)
+ {
+ elm_theme_all_set(theme_set);
+ }
+ if (finger_size_set)
+ {
+ elm_finger_size_all_set(atoi(finger_size_set));
+ }
+ if (scale_set)
+ {
+ elm_scale_all_set(atof(scale_set));
+ }
+ if (quiet)
+ {
+ elm_exit();
+ }
++=======
+ if (theme_set) elm_theme_set(NULL, theme_set);
+ if (finger_size_set) elm_config_finger_size_set(atoi(finger_size_set));
+ if (scale_set) elm_config_scale_set(atof(scale_set));
+
+ elm_config_all_flush();
+
+ if (quiet) elm_exit();
++>>>>>>> remotes/origin/upstream
}
elm_run(); /* and run the program now and handle all events, etc. */
/* if the mainloop that elm_run() runs exists, we exit the app */
struct sockaddr_un client;
socklen_t len;
++<<<<<<< HEAD
+ elm_quicklaunch_sub_init(argc, argv);
+ elm_quicklaunch_seed();
+ len = sizeof(struct sockaddr_un);
+ fd = accept(sock, (struct sockaddr *)&client, &len);
++=======
+ len = sizeof(struct sockaddr_un);
+ fd = accept(sock, (struct sockaddr *)&client, &len);
+ elm_quicklaunch_sub_init(argc, argv);
+ // don't seed since we are doing this AFTER launch request
+ // elm_quicklaunch_seed();
++>>>>>>> remotes/origin/upstream
if (fd >= 0)
{
unsigned long bytes;
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
void test_bg_image(void *data, Evas_Object *obj, void *event_info);
void test_bg_options(void *data, Evas_Object *obj, void *event_info);
void test_icon(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
+void test_box_vert(void *data, Evas_Object *obj, void *event_info);
+void test_box_vert2(void *data, Evas_Object *obj, void *event_info);
+void test_box_horiz(void *data, Evas_Object *obj, void *event_info);
++=======
+ void test_icon_transparent(void *data, Evas_Object *obj, void *event_info);
+ void test_box_vert(void *data, Evas_Object *obj, void *event_info);
+ void test_box_vert2(void *data, Evas_Object *obj, void *event_info);
+ void test_box_pack(void *data, Evas_Object *obj, void *event_info);
+ void test_box_horiz(void *data, Evas_Object *obj, void *event_info);
+ void test_box_homo(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_box_transition(void *data, Evas_Object *obj, void *event_info);
void test_button(void *data, Evas_Object *obj, void *event_info);
void test_cnp(void *data, Evas_Object *obj, void *event_info);
void test_toggle(void *data, Evas_Object *obj, void *event_info);
void test_clock(void *data, Evas_Object *obj, void *event_info);
void test_clock2(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
++=======
+ void test_clock3(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_check(void *data, Evas_Object *obj, void *event_info);
void test_radio(void *data, Evas_Object *obj, void *event_info);
void test_layout(void *data, Evas_Object *obj, void *event_info);
void test_entry3(void *data, Evas_Object *obj, void *event_info);
void test_entry4(void *data, Evas_Object *obj, void *event_info);
void test_entry5(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
+void test_entry_notepad(void *data, Evas_Object *obj, void *event_info);
+void test_multibuttonentry(void *data, Evas_Object *obj, void *event_info);
+void test_anchorview(void *data, Evas_Object *obj, void *event_info);
+void test_anchorblock(void *data, Evas_Object *obj, void *event_info);
++=======
+ void test_entry6(void *data, Evas_Object *obj, void *event_info);
+ void test_entry7(void *data, Evas_Object *obj, void *event_info);
+ void test_entry8(void *data, Evas_Object *obj, void *event_info);
+ void test_entry_notepad(void *data, Evas_Object *obj, void *event_info);
+ void test_multibuttonentry(void *data, Evas_Object *obj, void *event_info);
+ void test_entry_anchor2(void *data, Evas_Object *obj, void *event_info);
+ void test_entry_anchor(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_toolbar(void *data, Evas_Object *obj, void *event_info);
void test_toolbar2(void *data, Evas_Object *obj, void *event_info);
void test_toolbar3(void *data, Evas_Object *obj, void *event_info);
void test_genlist12(void *data, Evas_Object *obj, void *event_info);
void test_genlist13(void *data, Evas_Object *obj, void *event_info);
void test_genlist14(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
++=======
+ void test_genlist15(void *data, Evas_Object *obj, void *event_info);
+ void test_genlist16(void *data, Evas_Object *obj, void *event_info);
+ void test_genlist17(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_gesture_layer(void *data, Evas_Object *obj, void *event_info);
void test_gesture_layer2(void *data, Evas_Object *obj, void *event_info);
void test_gesture_layer3(void *data, Evas_Object *obj, void *event_info);
void test_table4(void *data, Evas_Object *obj, void *event_info);
void test_table5(void *data, Evas_Object *obj, void *event_info);
void test_table6(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
+void test_gengrid(void *data, Evas_Object *obj, void *event_info);
+void test_gengrid2(void *data, Evas_Object *obj, void *event_info);
+void test_gengrid3(void *data, Evas_Object *obj, void *event_info);
+void test_pager(void *data, Evas_Object *obj, void *event_info);
+void test_pager_slide(void *data, Evas_Object *obj, void *event_info);
++=======
+ void test_table7(void *data, Evas_Object *obj, void *event_info);
+ void test_gengrid(void *data, Evas_Object *obj, void *event_info);
+ void test_gengrid2(void *data, Evas_Object *obj, void *event_info);
+ void test_gengrid3(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_win_state(void *data, Evas_Object *obj, void *event_info);
void test_win_state2(void *data, Evas_Object *obj, void *event_info);
void test_progressbar(void *data, Evas_Object *obj, void *event_info);
void test_flip4(void *data, Evas_Object *obj, void *event_info);
void test_flip_page(void *data, Evas_Object *obj, void *event_info);
void test_label(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
++=======
+ void test_label2(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_conformant(void *data, Evas_Object *obj, void *event_info);
void test_conformant2(void *data, Evas_Object *obj, void *event_info);
void test_multi(void *data, Evas_Object *obj, void *event_info);
void test_focus(void *data, Evas_Object *obj, void *event_info);
void test_focus2(void *data, Evas_Object *obj, void *event_info);
void test_focus3(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
++=======
+ void test_focus4(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
void test_flipselector(void *data, Evas_Object *obj, void *event_info);
void test_diskselector(void *data, Evas_Object *obj, void *event_info);
void test_colorselector(void *data, Evas_Object *obj, void *event_info);
void test_glview(void *data, Evas_Object *obj, void *event_info);
void test_3d(void *data, Evas_Object *obj, void *event_info);
void test_naviframe(void *data, Evas_Object *obj, void *event_info);
++<<<<<<< HEAD
+void test_factory(void *data, Evas_Object *obj, void *event_info);
++=======
+ //void test_factory(void *data, Evas_Object *obj, void *event_info);
+ void test_datetime(void *data, Evas_Object *obj, void *event_info);
+ void test_popup(void *data, Evas_Object *obj, void *event_info);
+ void test_dayselector(void *data, Evas_Object *obj, void *event_info);
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_EMOTION
void test_video(void *data, Evas_Object *obj, void *event_info);
#endif
*p_list = eina_list_sorted_insert(*p_list, elm_test_sort, t);
}
++<<<<<<< HEAD
+static void
+my_win_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ /* called when my_win_main is requested to be deleted */
++=======
+ void
+ my_win_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
++>>>>>>> remotes/origin/upstream
elm_exit(); /* exit the program's main loop that runs in elm_run() */
}
_ui_tg_changed(void *data, Evas_Object *obj, void *event_info)
{
(void) data; (void) event_info;
++<<<<<<< HEAD
+ elm_mirrored_set(elm_check_state_get(obj));
++=======
+ elm_config_mirrored_set(elm_check_state_get(obj));
++>>>>>>> remotes/origin/upstream
}
static void
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "UI-Mirroring:");
++<<<<<<< HEAD
+ elm_check_state_set(tg, elm_mirrored_get());
++=======
+ elm_check_state_set(tg, elm_config_mirrored_get());
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(tg, "changed", _ui_tg_changed, NULL);
elm_box_pack_end(bx0, tg);
evas_object_show(tg);
ADD_TEST(NULL, "Window / Background", "Window Plug", test_win_plug);
//------------------------------//
++<<<<<<< HEAD
+ ADD_TEST(NULL, "Images", "Icon Transparent", test_icon);
++=======
+ ADD_TEST(NULL, "Images", "Icon", test_icon);
+ ADD_TEST(NULL, "Images", "Icon Transparent", test_icon_transparent);
++>>>>>>> remotes/origin/upstream
ADD_TEST(NULL, "Images", "Icon Animation", test_icon_animated);
ADD_TEST(NULL, "Images", "Photocam", test_photocam);
ADD_TEST(NULL, "Images", "Photo", test_photo);
//------------------------------//
ADD_TEST(NULL, "Containers", "Box Vert", test_box_vert);
ADD_TEST(NULL, "Containers", "Box Vert 2", test_box_vert2);
++<<<<<<< HEAD
++ ADD_TEST(NULL, "Containers", "Box Horiz", test_box_horiz);
++=======
+ ADD_TEST(NULL, "Containers", "Box Pack", test_box_pack);
ADD_TEST(NULL, "Containers", "Box Horiz", test_box_horiz);
+ ADD_TEST(NULL, "Containers", "Box Homogeneous", test_box_homo);
++>>>>>>> remotes/origin/upstream
ADD_TEST(NULL, "Containers", "Box Transition", test_box_transition);
ADD_TEST(NULL, "Containers", "Table", test_table);
ADD_TEST(NULL, "Containers", "Table Homogeneous", test_table2);
ADD_TEST(NULL, "Containers", "Table 4", test_table4);
ADD_TEST(NULL, "Containers", "Table 5", test_table5);
ADD_TEST(NULL, "Containers", "Table 6", test_table6);
++<<<<<<< HEAD
++=======
+ ADD_TEST(NULL, "Containers", "Table 7", test_table7);
++>>>>>>> remotes/origin/upstream
ADD_TEST(NULL, "Containers", "Layout", test_layout);
ADD_TEST(NULL, "Containers", "Grid", test_grid);
ADD_TEST(NULL, "Entries", "Entry 3", test_entry3);
ADD_TEST(NULL, "Entries", "Entry 4", test_entry4);
ADD_TEST(NULL, "Entries", "Entry 5", test_entry5);
++<<<<<<< HEAD
+ ADD_TEST(NULL, "Entries", "Entry Notepad", test_entry_notepad);
+ ADD_TEST(NULL, "Entries", "Multibuttonentry", test_multibuttonentry);
++=======
+ ADD_TEST(NULL, "Entries", "Entry 6", test_entry6);
+ ADD_TEST(NULL, "Entries", "Entry 7", test_entry7);
+ ADD_TEST(NULL, "Entries", "Entry 8", test_entry8);
+ ADD_TEST(NULL, "Entries", "Entry Notepad", test_entry_notepad);
+ ADD_TEST(NULL, "Entries", "Multibuttonentry", test_multibuttonentry);
+ ADD_TEST(NULL, "Entries", "Entry Anchor", test_entry_anchor);
+ ADD_TEST(NULL, "Entries", "Entry Anchor2", test_entry_anchor2);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Buttons", "Buttons", test_button);
ADD_TEST(NULL, "Lists", "Genlist Eio", test_eio);
#endif
ADD_TEST(NULL, "Lists", "Genlist Textblock", test_genlist12);
++<<<<<<< HEAD
+ //ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Sorted", test_genlist13);
+ //ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Relative", test_genlist14);
++=======
+ ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Sorted", test_genlist13);
+ ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Relative", test_genlist14);
+ ADD_TEST(NULL, "Lists", "Genlist Edit Mode", test_genlist15);
+ ADD_TEST(NULL, "Lists", "Genlist Flip Mode", test_genlist16);
+ ADD_TEST(NULL, "Lists", "Genlist Tree Effect", test_genlist17);
++>>>>>>> remotes/origin/upstream
ADD_TEST(NULL, "Lists", "GenGrid", test_gengrid);
ADD_TEST(NULL, "Lists", "GenGrid 2", test_gengrid2);
ADD_TEST(NULL, "Lists", "GenGrid Group", test_gengrid3);
ADD_TEST(NULL, "Selectors", "Hoversel", test_hoversel);
ADD_TEST(NULL, "Selectors", "Radios", test_radio);
ADD_TEST(NULL, "Selectors", "Flip Selector", test_flipselector);
++<<<<<<< HEAD
++=======
+ ADD_TEST(NULL, "Selectors", "Dayselector", test_dayselector);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Cursors", "Cursor", test_cursor);
ADD_TEST(NULL, "Popups", "Hover 2", test_hover2);
ADD_TEST(NULL, "Popups", "Notify", test_notify);
ADD_TEST(NULL, "Popups", "Tooltip", test_tooltip);
++<<<<<<< HEAD
+ ADD_TEST(NULL, "Popups", "Tooltip2", test_tooltip2);
++=======
+ ADD_TEST(NULL, "Popups", "Tooltip 2", test_tooltip2);
+ ADD_TEST(NULL, "Popups", "Popup", test_popup);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Times & Dates", "Calendar", test_calendar);
ADD_TEST(NULL, "Times & Dates", "Calendar 2", test_calendar2);
ADD_TEST(NULL, "Times & Dates", "Clock", test_clock);
ADD_TEST(NULL, "Times & Dates", "Clock 2", test_clock2);
++<<<<<<< HEAD
+
+ //------------------------------//
+ ADD_TEST(NULL, "Text", "Anchorview", test_anchorview);
+ ADD_TEST(NULL, "Text", "Anchorblock", test_anchorblock);
+ ADD_TEST(NULL, "Text", "Label", test_label);
++=======
+ ADD_TEST(NULL, "Times & Dates", "Clock 3", test_clock3);
+ ADD_TEST(NULL, "Times & Dates", "Datetime", test_datetime);
+
+ //------------------------------//
+ ADD_TEST(NULL, "Text", "Label", test_label);
+ ADD_TEST(NULL, "Text", "Label2", test_label2);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Stored Surface Buffer", "Launcher", test_launcher);
ADD_TEST(NULL, "Focus", "Focus", test_focus);
ADD_TEST(NULL, "Focus", "Focus 2", test_focus2);
ADD_TEST(NULL, "Focus", "Focus 3", test_focus3);
++<<<<<<< HEAD
+
+ //------------------------------//
+ ADD_TEST(NULL, "Storyboard", "Naviframe", test_naviframe);
+ ADD_TEST(NULL, "Storyboard", "Pager", test_pager);
+ ADD_TEST(NULL, "Storyboard", "Pager Slide", test_pager_slide);
++=======
+ ADD_TEST(NULL, "Focus", "Focus 4", test_focus4);
+
+ //------------------------------//
+ ADD_TEST(NULL, "Storyboard", "Naviframe", test_naviframe);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Geographic", "Map", test_map);
//------------------------------//
ADD_TEST(NULL, "Helpers", "Store", test_store);
++<<<<<<< HEAD
+ ADD_TEST(NULL, "Helpers", "Factory", test_factory);
++=======
+ // ADD_TEST(NULL, "Helpers", "Factory", test_factory);
++>>>>>>> remotes/origin/upstream
//------------------------------//
ADD_TEST(NULL, "Micellaneous", "Copy And Paste", test_cnp);
}
tt = t;
++<<<<<<< HEAD
+ if (test_win_only) return;
++=======
+ if (test_win_only)
+ {
+ EINA_LIST_FREE(tests, t)
+ free (t);
+
+ return;
+ }
++>>>>>>> remotes/origin/upstream
if (tests)
{
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
{
Evas_Object *win, *bg, *bx, *sl;
++<<<<<<< HEAD
+ win = elm_win_add(NULL, "3d", ELM_WIN_BASIC);
+ elm_win_title_set(win, "3D");
++=======
+ win = elm_win_add(NULL, "box-vert", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Box Vert");
++>>>>>>> remotes/origin/upstream
elm_win_autodel_set(win, EINA_TRUE);
bg = elm_bg_add(win);
static void _pos_selected_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info)
{
++<<<<<<< HEAD
+ printf("Selection: %s\n", (char *)event_info);
+ printf("Label selected: %s\n", elm_actionslider_selected_label_get(obj));
++=======
+ Elm_Actionslider_Pos ipos, mpos, epos;
+
+ printf("Selection: %s\n", (char *)event_info);
+ printf("Label selected: %s\n", elm_actionslider_selected_label_get(obj));
+
+ ipos = elm_actionslider_indicator_pos_get(obj);
+
+ switch (ipos)
+ {
+ case ELM_ACTIONSLIDER_NONE:
+ printf("actionslider indicator pos: none!\n");
+ break;
+ case ELM_ACTIONSLIDER_LEFT:
+ printf("actionslider indicator pos: left!\n");
+ break;
+ case ELM_ACTIONSLIDER_CENTER:
+ printf("actionslider indicator pos: center!\n");
+ break;
+ case ELM_ACTIONSLIDER_RIGHT:
+ printf("actionslider indicator pos: right!\n");
+ break;
+ case ELM_ACTIONSLIDER_ALL:
+ printf("actionslider indicator pos: all!\n");
+ break;
+ }
+
+ mpos = elm_actionslider_magnet_pos_get(obj);
+
+ switch (mpos)
+ {
+ case ELM_ACTIONSLIDER_NONE:
+ printf("actionslider magnet pos: none!\n");
+ break;
+ case ELM_ACTIONSLIDER_LEFT:
+ printf("actionslider magnet pos: left!\n");
+ break;
+ case ELM_ACTIONSLIDER_CENTER:
+ printf("actionslider magnet pos: center!\n");
+ break;
+ case ELM_ACTIONSLIDER_RIGHT:
+ printf("actionslider magnet pos: right!\n");
+ break;
+ case ELM_ACTIONSLIDER_ALL:
+ printf("actionslider magnet pos: all!\n");
+ break;
+ }
+
+ epos = elm_actionslider_enabled_pos_get(obj);
+
+ if (epos)
+ {
+ printf("actionslider enabled pos: ");
+ if (epos & ELM_ACTIONSLIDER_LEFT)
+ printf("left ");
+ if (epos & ELM_ACTIONSLIDER_CENTER)
+ printf("center ");
+ if (epos & ELM_ACTIONSLIDER_RIGHT)
+ printf("right ");
+ printf("\n");
+ }
++>>>>>>> remotes/origin/upstream
}
static void
#ifndef ELM_LIB_QUICKLAUNCH
static void
++<<<<<<< HEAD
++=======
+ _cb_size_radio_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
+ {
+ Evas_Object *o_bg = data;
+ int size;
+ size = elm_radio_value_get((Evas_Object *)obj);
+ elm_bg_load_size_set(o_bg, size, size);
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_cb_radio_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
{
Evas_Object *o_bg = data;
test_bg_image(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *win, *bg;
++<<<<<<< HEAD
++=======
+ Evas_Object *box, *hbox, *o_bg;
+ Evas_Object *rd, *rdg;
++>>>>>>> remotes/origin/upstream
char buf[PATH_MAX];
win = elm_win_add(NULL, "bg-image", ELM_WIN_BASIC);
elm_win_autodel_set(win, EINA_TRUE);
bg = elm_bg_add(win);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
+ elm_bg_file_set(bg, buf, NULL);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
++<<<<<<< HEAD
++=======
+ box = elm_box_add(win);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ o_bg = elm_bg_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
+ elm_bg_file_set(o_bg, buf, NULL);
+ evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, o_bg);
+
+ hbox = elm_box_add(win);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+ evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, 50);
+ elm_object_text_set(rd, "50 x 50");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, o_bg);
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+ rdg = rd;
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, 100);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "100 x 100");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, o_bg);
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, 200);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "200 x 200");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, o_bg);
+ elm_box_pack_end(hbox, rd);
+ evas_object_show(rd);
+
+ elm_radio_value_set(rdg, 200);
+
+ elm_box_pack_end(box, hbox);
+ evas_object_show(hbox);
+
+ evas_object_show(o_bg);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_min_set(bg, 160, 160);
evas_object_size_hint_max_set(bg, 640, 640);
evas_object_resize(win, 320, 320);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
+void
+test_box_vert(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *ic;
+ char buf[PATH_MAX];
++=======
+ #define ICON_MAX 24
+
+ typedef enum
+ {
+ BOX_PACK_POSITION_START,
+ BOX_PACK_POSITION_BEFORE,
+ BOX_PACK_POSITION_AFTER,
+ BOX_PACK_POSITION_END
+ } Box_Pack_Position;
+
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ BOX_PACK_START,
+ BOX_PACK_BEFORE,
+ BOX_PACK_AFTER,
+ BOX_PADDING_SET,
+ BOX_ALIGN_SET,
+ BOX_HOMOGENEOUS_SET,
+ BOX_UNPACK_ALL,
+ BOX_CLEAR,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case BOX_PACK_START: /* Move last item to begining */
+ elm_box_unpack(api->box, eina_list_data_get(eina_list_last(items)));
+ elm_box_pack_start(api->box, eina_list_data_get(eina_list_last(items)));
+ break;
+
+ case BOX_PACK_BEFORE:
+ if(eina_list_count(items) > 1)
+ { /* Put last item before the one preceeding it */
+ elm_box_unpack(api->box, eina_list_data_get(eina_list_last(items)));
+ elm_box_pack_before(api->box,
+ eina_list_data_get(eina_list_last(items)),
+ eina_list_nth(items, eina_list_count(items)-2));
+ }
+ break;
+
+ case BOX_PACK_AFTER:
+ if(eina_list_count(items) > 1)
+ { /* Put item before last to last */
+ elm_box_unpack(api->box, eina_list_nth(items,
+ eina_list_count(items)-2));
+ elm_box_pack_after(api->box,
+ eina_list_nth(items, eina_list_count(items)-2),
+ eina_list_data_get(eina_list_last(items)));
+ }
+ break;
+
+ case BOX_PADDING_SET:
+ elm_box_padding_set(api->box, 30, 15);
+ break;
+
+ case BOX_ALIGN_SET:
+ elm_box_align_set(api->box, 0.25, 0.75);
+ break;
+
+ case BOX_HOMOGENEOUS_SET:
+ elm_box_homogeneous_set(api->box, EINA_TRUE);
+ break;
+
+ case BOX_UNPACK_ALL:
+ {
+ Eina_List *l;
+ Evas_Object *data;
+ elm_box_unpack_all(api->box);
+ EINA_LIST_REVERSE_FOREACH(items, l, data)
+ elm_box_pack_end(api->box, data);
+ }
+ break;
+
+ case BOX_CLEAR:
+ elm_box_clear(api->box);
+ break;
+
+ case API_STATE_LAST:
+
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_box_vert(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *ic, *bxx, *bt;
+ char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "box-vert", ELM_WIN_BASIC);
elm_win_title_set(win, "Box Vert");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ elm_win_resize_object_add(win, bx);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ api->box = bx;
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.0, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, EVAS_HINT_EXPAND, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
void
test_box_horiz(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *bx, *ic;
+ char buf[PATH_MAX];
++=======
+ Evas_Object *win, *bg, *bx, *ic, *bxx, *bt;
+ char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "box-horiz", ELM_WIN_BASIC);
elm_win_title_set(win, "Box Horiz");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
+
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ elm_win_resize_object_add(win, bx);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/icon_01.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/icon_02.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/icon_03.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+ static Eina_Bool radio_index[ICON_MAX];
+
+ static int
+ _index_get(void)
+ {
+ int i;
+ for (i = 0; i < ICON_MAX; i++)
+ {
+ if (!radio_index[i])
+ {
+ radio_index[i] = EINA_TRUE;
+ return i;
+ }
+
+ }
+ return -1;
+ }
+
+ static void
+ _index_remove(int i)
+ {
+ if (i >= ICON_MAX) return;
+ radio_index[i] = EINA_FALSE;
+ }
+
+ static void
+ _index_clear()
+ {
+ int i;
+ for (i = 0; i < ICON_MAX; i++)
+ radio_index[i] = EINA_FALSE;
+ }
+
+ static Evas_Object *
+ _radio_new(Evas_Object *obj)
+ {
+ Evas_Object *ic, *rd;
+ int idx;
+ char buf[PATH_MAX];
+ Evas_Object *rdg;
+
+ idx = _index_get();
+ if (idx == -1) return NULL;
+
+ ic = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/icon_%02d.png",
+ elm_app_data_dir_get(), idx);
+ elm_icon_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+ rd = elm_radio_add(obj);
+ elm_radio_state_value_set(rd, idx);
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(rd, EVAS_HINT_FILL, 0.5);
+ elm_object_part_content_set(rd, "icon", ic);
+
+ rdg = evas_object_data_get(obj, "radio-group");
+ if (rdg) elm_radio_group_add(rd, rdg);
+
+ evas_object_show(rd);
+ evas_object_show(ic);
+
+ return rd;
+ }
+
+ static void
+ _pack_start_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *rd;
+ if (!data) return;
+
+ rd = _radio_new(data);
+ if (!rd) return;
+ elm_box_pack_start(data, rd);
+ }
+
+ static void
+ _pack_before_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *rd, *selected_rd, *rdg;
+ if (!data) return;
+
+ rdg = evas_object_data_get(data, "radio-group");
+ if (!rdg) return;
+
+ selected_rd = elm_radio_selected_object_get(rdg);
+ if (!selected_rd || (selected_rd == rdg)) return;
+
+ rd = _radio_new(data);
+ if (!rd) return;
+ elm_box_pack_before(data, rd, selected_rd);
+ }
+
+ static void
+ _pack_after_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *rd, *selected_rd, *rdg;
+ if (!data) return;
+
+ rdg = evas_object_data_get(data, "radio-group");
+ if (!rdg) return;
+
+ selected_rd = elm_radio_selected_object_get(rdg);
+ if (!selected_rd || (selected_rd == rdg)) return;
+
+ rd = _radio_new(data);
+ if (!rd) return;
+ elm_box_pack_after(data, rd, selected_rd);
+ }
+
+ static void
+ _pack_end_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *rd;
+ if (!data) return;
+
+ rd = _radio_new(data);
+ if (!rd) return;
+ elm_box_pack_end(data, rd);
+ }
+
+ static void
+ _unpack_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *rdg, *selected_rd;
+ if (!data) return;
+
+ rdg = evas_object_data_get(data, "radio-group");
+ if (!rdg) return;
+
+ selected_rd = elm_radio_selected_object_get(rdg);
+ if (selected_rd == rdg) return;
+
+ _index_remove(elm_radio_value_get(selected_rd));
+ elm_box_unpack(data, selected_rd);
+ evas_object_del(selected_rd);
+ elm_radio_value_set(rdg, -1);
+ }
+
+ static void
+ _unpack_all_btn_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *radio, *rdg;
+ Eina_List *rl, *l;
+ if (!data) return;
+
+ rdg = evas_object_data_get(data, "radio-group");
+ if (!rdg) return;
+
+ _index_clear();
+ rl = elm_box_children_get(data);
+ EINA_LIST_FOREACH(rl, l, radio)
+ {
+ if (radio != rdg)
+ evas_object_del(radio);
+ }
+ elm_box_unpack_all(data);
+ elm_radio_value_set(rdg, -1);
+ }
+
+ void
+ test_box_pack(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *sc, *bt;
+ Evas_Object *box, *lbox, *rbox;
+ Evas_Object *rd, *rdg = NULL;
+ int i;
+
+ win = elm_win_util_standard_add("box-pack", "Box Pack");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_box_horizontal_set(box, EINA_TRUE);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ // left side
+ lbox = elm_box_add(win);
+ evas_object_size_hint_weight_set(lbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(lbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ sc = elm_scroller_add(win);
+ elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
+ evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ rdg = elm_radio_add(win); /* a radio for easy group handling */
+ elm_radio_state_value_set(rdg, -1);
+ evas_object_data_set(lbox, "radio-group", rdg);
+
+ for (i = 0; i < 3; i++)
+ {
+ rd = _radio_new(lbox);
+ elm_box_pack_end(lbox, rd);
+ }
+
+ elm_object_content_set(sc, lbox);
+ evas_object_show(lbox);
+ elm_box_pack_end(box, sc);
+ evas_object_show(sc);
+
+ // right side
+ rbox = elm_box_add(win);
+ evas_object_size_hint_weight_set(rbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(rbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(rbox);
+ elm_box_pack_end(box, rbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Pack Start");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _pack_start_btn_cb, lbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Pack Before");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _pack_before_btn_cb, lbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Pack After");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _pack_after_btn_cb, lbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Pack End");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _pack_end_btn_cb, lbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Unpack");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _unpack_btn_cb, lbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Unpack All");
+ evas_object_show(bt);
+ elm_box_pack_end(rbox, bt);
+ evas_object_smart_callback_add(bt, "clicked", _unpack_all_btn_cb, lbox);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
+ static void
+ _cb_check_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
+ {
+ Eina_Bool homo;
+ Evas_Object *box = data;
+
+ homo = elm_check_state_get(obj);
+ elm_box_homogeneous_set(box, homo);
+ }
+
+ void
+ test_box_homo(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win;
+ Evas_Object *box, *o_bg;
+ Evas_Object *rd;
+ char buf[PATH_MAX];
+
+ win = elm_win_util_standard_add("box-homogeneous", "Box Homogeneous");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, box);
+ evas_object_show(box);
+
+ o_bg = elm_bg_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/twofish.jpg", elm_app_data_dir_get());
+ elm_bg_file_set(o_bg, buf, NULL);
+ evas_object_size_hint_weight_set(o_bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(o_bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, o_bg);
+
+ rd = elm_check_add(win);
+ elm_object_text_set(rd, "Homogeneous");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_check_changed, box);
+ elm_box_pack_end(box, rd);
+ evas_object_show(rd);
+ evas_object_show(o_bg);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
++>>>>>>> remotes/origin/upstream
typedef struct
{
Eina_List *transitions;
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, 1.0, 1.0);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
evas_object_show(bx);
bt = elm_button_add(win);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
printf("bubble clicked\n");
}
++<<<<<<< HEAD
+void
+test_bubble(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *ic, *bb, *ct;
+ char buf[PATH_MAX];
+
+ win = elm_win_add(NULL, "box-vert", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Bubble");
+ elm_win_autodel_set(win, EINA_TRUE);
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Evas_Object *win; /* Parent Window of widgets */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ BUBBLE_SET_CORNER_1,
+ BUBBLE_SET_CORNER_2,
+ BUBBLE_SET_ICON_CONTENT,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case BUBBLE_SET_CORNER_1:
+ elm_bubble_pos_set(eina_list_nth(items, 0), ELM_BUBBLE_POS_BOTTOM_LEFT);
+ elm_object_text_set(elm_object_content_get(eina_list_nth(items, 0)),
+ "Corner: base (bottom-left) - with icon");
+ elm_bubble_pos_set(eina_list_nth(items, 1), ELM_BUBBLE_POS_TOP_RIGHT);
+ elm_object_text_set(elm_object_content_get(eina_list_nth(items, 1)),
+ "Corner: base (top-right) - no icon");
+ break;
+
+ case BUBBLE_SET_CORNER_2:
+ elm_bubble_pos_set(eina_list_nth(items, 0), ELM_BUBBLE_POS_TOP_RIGHT);
+ elm_object_text_set(elm_object_content_get(eina_list_nth(items, 0)),
+ "Corner: base (top-right) - with icon");
+ elm_bubble_pos_set(eina_list_nth(items, 1), ELM_BUBBLE_POS_BOTTOM_LEFT);
+ elm_object_text_set(elm_object_content_get(eina_list_nth(items, 1)),
+ "Corner: base (bottom-left) - no icon");
+ break;
+
+ case BUBBLE_SET_ICON_CONTENT:
+ {
+ char buf[PATH_MAX];
+ Evas_Object *ct, *ic = elm_icon_add(api->win);
+
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
+ elm_object_content_set(eina_list_nth(items, 0), ic);
+ ct = elm_label_add(api->win);
+ elm_object_text_set(ct, "Using icon as top-bubble content");
+ elm_object_content_set(eina_list_nth(items, 1), ct);
+ evas_object_size_hint_align_set(ic, 0.5, 0.5);
+ evas_object_show(ic);
+ }
+ break;
+
+ case API_STATE_LAST:
+
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+
+ void
+ test_bubble(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *ic, *bb, *ct, *bxx, *bt;
+ char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
+
+ win = elm_win_add(NULL, "box-vert", ELM_WIN_BASIC);
+ api->win = win;
+ elm_win_title_set(win, "Bubble");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ elm_win_resize_object_add(win, bx);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
elm_object_text_set(bb, "Message 1");
elm_object_part_text_set(bb, "info", "Corner: bottom_right");
elm_object_part_content_set(bb, "icon", ic);
++<<<<<<< HEAD
+ elm_bubble_corner_set(bb, "bottom_right");
++=======
+ elm_bubble_pos_set(bb, ELM_BUBBLE_POS_BOTTOM_RIGHT);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(bb, "clicked", _print_clicked, NULL);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
static void
_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ int param = (int)(data);
++=======
+ int param = (int)(long)(data);
++>>>>>>> remotes/origin/upstream
printf("clicked event on Button:%d\n", param);
}
static void
_bt_unpressed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ int param = (int)(data);
++=======
+ int param = (int)(long)(data);
++>>>>>>> remotes/origin/upstream
printf("unpressed event on Button:%d\n", param);
}
ic = elm_icon_add(bx);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
bt = elm_button_add(win);
elm_object_text_set(bt, "Icon no scale");
elm_object_part_content_set(bt, "icon", ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Disabled Button");
elm_object_part_content_set(bt, "icon", ic);
++<<<<<<< HEAD
+ elm_object_disabled_set(bt, 1);
++=======
+ elm_object_disabled_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)3);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)3);
elm_box_pack_end(bx, bt);
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
bt = elm_button_add(win);
elm_object_part_content_set(bt, "icon", ic);
++<<<<<<< HEAD
+ elm_object_disabled_set(bt, 1);
++=======
+ elm_object_disabled_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)4);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)4);
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)5);
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "repeated", _bt_repeated, NULL);
++<<<<<<< HEAD
+ elm_button_autorepeat_set(bt, 1);
++=======
+ elm_button_autorepeat_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_button_autorepeat_initial_timeout_set(bt, 2.0);
elm_button_autorepeat_gap_timeout_set(bt, 0.5);
evas_object_show(bt);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
bt = elm_button_add(win);
elm_object_part_content_set(bt, "icon", ic);
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)6);
elm_object_access_info_set(bt, "This is some custom text describing this widget");
elm_object_style_set(bt, "anchor");
elm_object_part_content_set(bt, "icon", ic);
++<<<<<<< HEAD
+ elm_object_disabled_set(bt, 1);
++=======
+ elm_object_disabled_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(bt, "clicked", _bt_clicked, (void *)9);
evas_object_smart_callback_add(bt, "unpressed", _bt_unpressed, (void *)9);
elm_box_pack_end(bx, bt);
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* box used in set_api_state */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ STATE_MARK_MONTHLY,
+ STATE_MARK_WEEKLY,
+ STATE_SUNDAY_HIGHLIGHT,
+ STATE_SELECT_DATE_DISABLED_WITH_MARKS,
+ STATE_SELECT_DATE_DISABLED_NO_MARKS,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ static Elm_Calendar_Mark *m = NULL;
+ if(!eina_list_count(items))
+ return;
+
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case STATE_MARK_MONTHLY:
+ {
+ Evas_Object *cal = eina_list_nth(items, 0);
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 9); /* Set date to DEC 31, 2010 */
+ elm_calendar_min_max_year_set(cal, 2010, 2011);
+ m = elm_calendar_mark_add(cal, "checked", gmtime(&the_time), ELM_CALENDAR_MONTHLY);
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ }
+ break;
+ case STATE_MARK_WEEKLY:
+ {
+ Evas_Object *cal = eina_list_nth(items, 0);
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 4); /* Set date to DEC 26, 2010 */
+ elm_calendar_mark_del(m);
+ m = elm_calendar_mark_add(cal, "checked", gmtime(&the_time), ELM_CALENDAR_WEEKLY);
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ }
+ break;
+ case STATE_SUNDAY_HIGHLIGHT:
+ {
+ Evas_Object *cal = eina_list_nth(items, 0);
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 3); /* Set date to DEC 25, 2010 */
+ /* elm_calendar_mark_del(m); */
+ m = elm_calendar_mark_add(cal, "holiday", gmtime(&the_time), ELM_CALENDAR_WEEKLY);
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ }
+ break;
+ case STATE_SELECT_DATE_DISABLED_WITH_MARKS:
+ {
+ Evas_Object *cal = eina_list_nth(items, 0);
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 10); /* Set date to JAN 01, 2011 */
+ elm_calendar_day_selection_disabled_set(cal, EINA_TRUE);
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ }
+ break;
+ case STATE_SELECT_DATE_DISABLED_NO_MARKS:
+ {
+ Evas_Object *cal = eina_list_nth(items, 0);
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 40); /* Set date to FEB 01, 2011 */
+ elm_calendar_marks_clear(cal);
+ elm_calendar_day_selection_disabled_set(cal, EINA_TRUE);
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ }
+ break;
+ case API_STATE_LAST:
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
++>>>>>>> remotes/origin/upstream
/* A simple test, just displaying calendar in it's default state */
void
test_calendar(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *cal;
++=======
+ Evas_Object *win, *bg, *cal, *bx, *bxx, *bt;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "calendar", ELM_WIN_BASIC);
elm_win_title_set(win, "Calendar");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ cal = elm_calendar_add(win);
+ elm_win_resize_object_add(win, cal);
+ evas_object_size_hint_weight_set(cal, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ cal = elm_calendar_add(win);
+ evas_object_size_hint_weight_set(cal, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_pack_end(bx, cal);
+
+ time_t sec_per_day = (60*60*24);
+ time_t sec_per_year = sec_per_day * 365;
+ time_t the_time = (sec_per_year * 41) + (sec_per_day * 9); /* Set date to DEC 31, 2010 */
+ elm_calendar_selected_time_set(cal, gmtime(&the_time));
+ elm_calendar_min_max_year_set(cal, 2010, 2012);
+
++>>>>>>> remotes/origin/upstream
evas_object_show(cal);
evas_object_show(win);
int year_min, year_max;
Eina_Bool sel_enabled;
const char **wds;
++<<<<<<< HEAD
+ struct tm stime;
+
+ if (!elm_calendar_selected_time_get(cal, &stime))
++=======
+ struct tm stm;
+
+ if (!elm_calendar_selected_time_get(cal, &stm))
++>>>>>>> remotes/origin/upstream
return;
interval = elm_calendar_interval_get(cal);
elm_calendar_min_max_year_get(cal, &year_min, &year_max);
++<<<<<<< HEAD
+ sel_enabled = elm_calendar_day_selection_enabled_get(cal);
+ wds = elm_calendar_weekdays_names_get(cal);
+
+ snprintf(info, sizeof(info),
+ " Day: %i, Mon: %i, Year %i, WeekDay: %i<br/>"
+ " Interval: %0.2f, Year_Min: %i, Year_Max %i, Sel Enabled : %i<br/>"
+ " Weekdays: %s, %s, %s, %s, %s, %s, %s<br/>",
+ stime.tm_mday, stime.tm_mon, stime.tm_year + 1900, stime.tm_wday,
+ interval, year_min, year_max, sel_enabled,
+ wds[0], wds[1], wds[2], wds[3], wds[4], wds[5], wds[6]);
++=======
+ sel_enabled = !elm_calendar_day_selection_disabled_get(cal);
+ wds = elm_calendar_weekdays_names_get(cal);
+
+ snprintf(info, sizeof(info),
+ " Day: %i, Mon: %i, Year %i, WeekDay: %i<br/>"
+ " Interval: %0.2f, Year_Min: %i, Year_Max %i, Sel Enabled : %i<br/>"
+ " Weekdays: %s, %s, %s, %s, %s, %s, %s<br/>",
+ stm.tm_mday, stm.tm_mon, stm.tm_year + 1900, stm.tm_wday,
+ interval, year_min, year_max, sel_enabled,
+ wds[0], wds[1], wds[2], wds[3], wds[4], wds[5], wds[6]);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, info);
}
}
static char *
++<<<<<<< HEAD
+_format_month_year(struct tm *stime)
+{
+ char buf[32];
+ if (!strftime(buf, sizeof(buf), "%b %y", stime)) return NULL;
++=======
+ _format_month_year(struct tm *stm)
+ {
+ char buf[32];
+ if (!strftime(buf, sizeof(buf), "%b %y", stm)) return NULL;
++>>>>>>> remotes/origin/upstream
return strdup(buf);
}
cal2 = elm_calendar_add(win);
evas_object_size_hint_weight_set(cal2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(cal2, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_calendar_day_selection_enabled_set(cal2, EINA_FALSE);
++=======
+ elm_calendar_day_selection_disabled_set(cal2, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(cal2);
elm_box_pack_end(bxh, cal2);
current_time = time(NULL) - 5 * 84600;
localtime_r(¤t_time, &selected_time);
mark = elm_calendar_mark_add(cal, "holiday", &selected_time,
++<<<<<<< HEAD
+ ELM_CALENDAR_WEEKLY);
++=======
+ ELM_CALENDAR_WEEKLY);
++>>>>>>> remotes/origin/upstream
current_time = time(NULL) + 1 * 84600;
localtime_r(¤t_time, &selected_time);
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+
+ static Eina_Bool eb;
+
++>>>>>>> remotes/origin/upstream
static void
changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
printf("ck2 %p is now %i\n", ck2, elm_check_state_get(ck2));
}
++<<<<<<< HEAD
++=======
+ static void
+ state_changed_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("State Pointer Value: %d\n", eb);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_check(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
ck = elm_check_add(win);
elm_object_text_set(ck, "Icon no scale");
elm_object_part_content_set(ck, "icon", ic);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
++<<<<<<< HEAD
++=======
+ ck = elm_check_add(win);
+ elm_object_text_set(ck, "Using State Pointer");
+ elm_check_state_pointer_set(ck, &eb);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ ck = elm_check_add(win);
+ elm_object_text_set(ck, "Check State Pointer Value");
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+ evas_object_smart_callback_add(ck, "changed", state_changed_cb, NULL);
+
++>>>>>>> remotes/origin/upstream
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
ck = elm_check_add(win);
elm_object_part_content_set(ck, "icon", ic);
elm_box_pack_end(bx, ck);
#include <Elementary.h>
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
++<<<<<<< HEAD
+#endif
+#ifndef ELM_LIB_QUICKLAUNCH
+void
+test_clock(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *ck;
+ unsigned int digedit;
++=======
+ #include "test.h"
+ #endif
+ #ifndef ELM_LIB_QUICKLAUNCH
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Evas_Object *box; /* Used in set_api_state */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ CLOCK_HIDE_SEC,
+ CLOCK_SHOW_AM_PM,
+ CLOCK_SHOW_SEC,
+ CLOCK_EDIT_MIN,
+ CLOCK_EDIT_HOUR,
+ CLOCK_EDIT_ALL,
+ CLOCK_EDIT_ALL_ARMY,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ Evas_Object *ck = eina_list_nth(items, 0);
+ if(!eina_list_count(items))
+ return;
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case CLOCK_HIDE_SEC:
+ elm_clock_show_seconds_set(ck, EINA_FALSE);
+ break;
+
+ case CLOCK_SHOW_AM_PM:
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
+ break;
+
+ case CLOCK_SHOW_SEC:
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ break;
+
+ case CLOCK_EDIT_MIN:
+ elm_clock_edit_set(ck, ELM_CLOCK_EDIT_MIN_DECIMAL | ELM_CLOCK_EDIT_MIN_UNIT);
+ break;
+
+ case CLOCK_EDIT_HOUR:
+ elm_clock_edit_set(ck, ELM_CLOCK_EDIT_DEFAULT);
+ elm_clock_edit_set(ck, ELM_CLOCK_EDIT_HOUR_DECIMAL | ELM_CLOCK_EDIT_HOUR_UNIT);
+ break;
+
+ case CLOCK_EDIT_ALL:
+ elm_clock_edit_set(ck, ELM_CLOCK_EDIT_ALL);
+ break;
+
+ case CLOCK_EDIT_ALL_ARMY:
+ elm_clock_show_am_pm_set(ck, EINA_FALSE);
+ break;
+
+ case API_STATE_LAST:
+
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_clock(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *ck, *bt, *bxx;
+ unsigned int digedit;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "clock", ELM_WIN_BASIC);
elm_win_title_set(win, "Clock");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ elm_win_resize_object_add(win, bx);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, EINA_TRUE);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
++>>>>>>> remotes/origin/upstream
+ ck = elm_clock_add(win);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
ck = elm_clock_add(win);
++<<<<<<< HEAD
+ elm_clock_show_am_pm_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
++=======
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
+ elm_box_pack_end(bx, ck);
+ elm_clock_time_set(ck, 17, 25, 0);
+ evas_object_show(ck);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ ck = elm_clock_add(win);
++<<<<<<< HEAD
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_show_am_pm_set(ck, 1);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_show_am_pm_set(ck, 0);
++=======
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
+ elm_box_pack_end(bx, ck);
+ elm_clock_time_set(ck, 11, 59, 57);
+ evas_object_show(ck);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ elm_clock_show_am_pm_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_clock_time_set(ck, 23, 59, 57);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
++<<<<<<< HEAD
+ elm_clock_edit_set(ck, 1);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_show_am_pm_set(ck, 1);
++=======
+ elm_clock_edit_set(ck, EINA_TRUE);
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_clock_time_set(ck, 10, 11, 12);
elm_box_pack_end(bx, ck);
evas_object_show(ck);
ck = elm_clock_add(win);
++<<<<<<< HEAD
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_edit_set(ck, 1);
+ digedit = ELM_CLOCK_HOUR_UNIT | ELM_CLOCK_MIN_UNIT | ELM_CLOCK_SEC_UNIT;
+ elm_clock_digit_edit_set(ck, digedit);
+ elm_box_pack_end(bx, ck);
++=======
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ elm_clock_edit_set(ck, EINA_TRUE);
+ digedit = ELM_CLOCK_EDIT_HOUR_UNIT | ELM_CLOCK_EDIT_MIN_UNIT | ELM_CLOCK_EDIT_SEC_UNIT;
+ elm_clock_edit_mode_set(ck, digedit);
+ elm_box_pack_end(bx, ck);
+ elm_clock_time_set(ck, 0, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_show(ck);
evas_object_show(win);
{
Evas_Object *ck = data;
++<<<<<<< HEAD
+ if (!elm_clock_edit_get(ck)) {
+ elm_object_text_set(obj, "Done");
+ elm_clock_edit_set(ck, 1);
+ return;
+ }
+ elm_object_text_set(obj, "Edit");
+ elm_clock_edit_set(ck, 0);
++=======
+ if (!elm_clock_edit_get(ck))
+ {
+ elm_object_text_set(obj, "Done");
+ elm_clock_edit_set(ck, EINA_TRUE);
+ return;
+ }
+ elm_object_text_set(obj, "Edit");
+ elm_clock_edit_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
static void
{
Evas_Object *ck = data;
++<<<<<<< HEAD
+ if (!elm_clock_show_am_pm_get(ck)) {
+ elm_object_text_set(obj, "24h");
+ elm_clock_show_am_pm_set(ck, 1);
+ return;
+ }
+ elm_object_text_set(obj, "12h");
+ elm_clock_show_am_pm_set(ck, 0);
++=======
+ if (!elm_clock_show_am_pm_get(ck))
+ {
+ elm_object_text_set(obj, "24h");
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
+ return;
+ }
+ elm_object_text_set(obj, "12h");
+ elm_clock_show_am_pm_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
void
test_clock2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *bx, *hbx, *ck, *bt;
++=======
+ Evas_Object *win, *bg, *bx, *hbx, *ck, *bt, *bxx;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "clock2", ELM_WIN_BASIC);
elm_win_title_set(win, "Clock 2");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_show_am_pm_set(ck, 1);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
+ ck = elm_clock_add(win);
+ elm_clock_time_set(ck, 0, 15, 3);
+ elm_clock_edit_mode_set(ck, ELM_CLOCK_EDIT_DEFAULT);
+ elm_clock_show_seconds_set(ck, EINA_TRUE);
+ elm_clock_show_am_pm_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ck);
evas_object_show(ck);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+ void
+ test_clock3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *ck, *lb;
+
+ win = elm_win_add(NULL, "clock3", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Clock 3");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ lb = elm_label_add(win);
+ elm_object_text_set(lb,
+ "Check time updates for an user mouse button hold."
+ );
+ evas_object_size_hint_weight_set(lb, 0.0, 0.0);
+ evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, lb);
+ evas_object_show(lb);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_edit_set(ck, EINA_TRUE);
+ elm_clock_first_interval_set(ck, 0.4);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_edit_set(ck, EINA_TRUE);
+ elm_clock_first_interval_set(ck, 1.2);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ ck = elm_clock_add(win);
+ elm_clock_show_seconds_set(ck, 1);
+ elm_clock_edit_set(ck, EINA_TRUE);
+ elm_clock_first_interval_set(ck, 2.0);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ evas_object_show(win);
+ }
++>>>>>>> remotes/origin/upstream
#endif
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+
+ static Evas_Object *glb;
+
++>>>>>>> remotes/origin/upstream
static void
_bt_copy_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *en = (Evas_Object*)(data);
const char *txt = elm_object_text_get(en);
++<<<<<<< HEAD
+ elm_cnp_selection_set(ELM_SEL_TYPE_CLIPBOARD, elm_object_parent_widget_get(en),
++=======
+ elm_object_text_set(glb, txt);
+ elm_cnp_selection_set(elm_object_parent_widget_get(en), ELM_SEL_TYPE_CLIPBOARD,
++>>>>>>> remotes/origin/upstream
ELM_SEL_FORMAT_TEXT, txt, strlen(txt));
}
{
Evas_Object *en = (Evas_Object*)(data);
++<<<<<<< HEAD
+ elm_cnp_selection_get(ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT,
+ en, NULL, NULL);
++=======
+ elm_cnp_selection_get(en, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT,
+ NULL, NULL);
+ }
+
+ static void
+ _bt_clear_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en = (Evas_Object*)(data);
+
+ elm_object_text_set(glb, "");
+ elm_object_cnp_selection_clear(elm_object_parent_widget_get(en), ELM_SEL_TYPE_CLIPBOARD);
++>>>>>>> remotes/origin/upstream
}
void
test_cnp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gd, *bt, *en;
++=======
+ Evas_Object *win, *bg, *gd, *bt, *en, *lb;
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "CopyPaste", ELM_WIN_BASIC);
elm_win_title_set(win, "CopyPaste");
elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_object_text_set(en,
+ "Elementary provides "
+ );
+ elm_grid_pack(gd, en, 10, 10, 60, 40);
++=======
+ elm_object_text_set(en, "Elementary provides ");
+ elm_grid_pack(gd, en, 10, 10, 60, 30);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
bt = elm_button_add(win);
elm_object_text_set(bt, "Copy from left entry");
evas_object_smart_callback_add(bt, "clicked", _bt_copy_clicked, en);
++<<<<<<< HEAD
+ elm_grid_pack(gd, bt, 70, 10, 22, 40);
++=======
+ elm_grid_pack(gd, bt, 70, 10, 22, 30);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Clear clipboard");
+ evas_object_smart_callback_add(bt, "clicked", _bt_clear_clicked, en);
+ elm_grid_pack(gd, bt, 70, 70, 22, 20);
++>>>>>>> remotes/origin/upstream
evas_object_show(bt);
en = elm_entry_add(win);
elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_object_text_set(en,
+ "rich copying and pasting functionality,"
+ );
+ elm_grid_pack(gd, en, 10, 50, 60, 40);
++=======
+ elm_object_text_set(en, "rich copying and pasting functionality,");
+ elm_grid_pack(gd, en, 10, 40, 60, 30);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
bt = elm_button_add(win);
elm_object_text_set(bt, "Paste to left entry");
evas_object_smart_callback_add(bt, "clicked", _bt_paste_clicked, en);
++<<<<<<< HEAD
+ elm_grid_pack(gd, bt, 70, 50, 22, 40);
+ evas_object_show(bt);
+
+ evas_object_resize(win, 480, 140);
++=======
+ elm_grid_pack(gd, bt, 70, 40, 22, 30);
+ evas_object_show(bt);
+
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "<b>Clipboard:</b>");
+ evas_object_size_hint_weight_set(lb, 0.0, 0.0);
+ evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, lb, 10, 70, 60, 10);
+ evas_object_show(lb);
+
+ glb = elm_label_add(win);
+ elm_object_text_set(glb, "");
+ evas_object_size_hint_weight_set(glb, 0.0, 0.0);
+ evas_object_size_hint_align_set(glb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, glb, 10, 80, 60, 10);
+ evas_object_show(glb);
+
+ evas_object_resize(win, 480, 200);
++>>>>>>> remotes/origin/upstream
evas_object_show(win);
}
#endif
evas_object_resize(win, 320, 480);
evas_object_show(win);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
}
#endif
win = elm_win_add(NULL, "conformant", ELM_WIN_BASIC);
elm_win_title_set(win, "Conformant");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
+ elm_win_conformant_set(win, 1);
++=======
+ elm_win_conformant_set(win, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
+ elm_entry_bounce_set(en, 1, 0);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_bounce_set(en, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, "This is the top entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
+ elm_entry_bounce_set(en, 1, 0);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_bounce_set(en, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, "This is the middle entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_bounce_set(en, 0, 1);
++=======
+ elm_entry_bounce_set(en, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en,
"This is a multi-line entry at the bottom<br/>"
"This can contain more than 1 line of text and be "
static void
popobj(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
{
++<<<<<<< HEAD
+ elm_pager_content_pop(data);
++=======
+ elm_naviframe_item_pop(data);
++>>>>>>> remotes/origin/upstream
}
void
win = elm_win_add(NULL, "conformant2", ELM_WIN_BASIC);
elm_win_title_set(win, "Conformant 2");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
+ elm_win_conformant_set(win, 1);
++=======
+ elm_win_conformant_set(win, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
+ elm_entry_bounce_set(en, 1, 0);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_bounce_set(en, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, "This is the top entry here");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
evas_object_show(en);
btn = elm_button_add(win);
++<<<<<<< HEAD
+ elm_object_focus_allow_set(btn, 0);
++=======
+ elm_object_focus_allow_set(btn, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(btn, "Delete Below");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, btn);
evas_object_show(btn);
++<<<<<<< HEAD
+ pg = elm_pager_add(win);
++=======
+ pg = elm_naviframe_add(win);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(pg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(pg, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, pg);
conform = elm_conformant_add(win);
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_pager_content_push(pg, conform);
++=======
+ elm_naviframe_item_simple_push(pg, conform);
++>>>>>>> remotes/origin/upstream
evas_object_show(conform);
bx = elm_box_add(win);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_bounce_set(en, 0, 1);
++=======
+ elm_entry_bounce_set(en, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, "This entry and button below get deleted.");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
++<<<<<<< HEAD
+ elm_object_focus_allow_set(btn, 0);
++=======
+ elm_object_focus_allow_set(btn, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(btn, "Delete this bottom bit 1");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
conform = elm_conformant_add(win);
evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_pager_content_push(pg, conform);
++=======
+ elm_naviframe_item_simple_push(pg, conform);
++>>>>>>> remotes/origin/upstream
evas_object_show(conform);
bx = elm_box_add(win);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_bounce_set(en, 0, 1);
++=======
+ elm_entry_bounce_set(en, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(en, "This entry and button below get deleted.");
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, en);
btn = elm_button_add(win);
++<<<<<<< HEAD
+ elm_object_focus_allow_set(btn, 0);
++=======
+ elm_object_focus_allow_set(btn, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(btn, "Delete this bottom bit 2");
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
{ \
ic = elm_icon_add(obj); \
elm_icon_standard_set(ic, _icon); \
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE); \
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE); \
++>>>>>>> remotes/origin/upstream
} \
else \
ic = NULL; \
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ // XXX: show all type of cursors in the elementary_test. this needs to be the first test
+
++>>>>>>> remotes/origin/upstream
typedef struct _Testitem
{
Elm_Object_Item *item;
glt_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
Elm_Object_Item *glit = event_info;
++<<<<<<< HEAD
+ Evas_Object *gl = elm_genlist_item_genlist_get(glit);
+ int val = (int) elm_object_item_data_get(glit);
+ Elm_Object_Item *glit1, *glit2, *glit3;
+
+ val *= 10;
+ glit1 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 1), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 2), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit3 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 3), glit,
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
++=======
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ int val = (int)(long) elm_object_item_data_get(glit);
+ Elm_Object_Item *glit1, *glit2, *glit3;
+
+ val *= 10;
+ glit1 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 1), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 2), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit3 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 3), glit,
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
++>>>>>>> remotes/origin/upstream
elm_genlist_item_cursor_set(glit1, ELM_CURSOR_HAND2);
elm_genlist_item_cursor_set(glit2, ELM_CURSOR_HAND2);
itct.func.text_get = glt_text_get;
glit1 = elm_genlist_item_append(gl, &itct, (void *) 1, NULL,
++<<<<<<< HEAD
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *) 2, NULL,
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
++=======
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *) 2, NULL,
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
++>>>>>>> remotes/origin/upstream
glit3 = elm_genlist_item_append(gl, &itct, (void *) 3, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
o = elm_button_add(win);
elm_object_cursor_set(o, ELM_CURSOR_HAND1);
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(o, EINA_FALSE);
++=======
+ elm_object_cursor_theme_search_enabled_set(o, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(o, "hand1");
elm_box_pack_end(bx, o);
evas_object_show(o);
o = elm_button_add(win);
elm_object_cursor_set(o, ELM_CURSOR_HAND2);
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(o, EINA_FALSE);
++=======
+ elm_object_cursor_theme_search_enabled_set(o, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(o, "hand2");
elm_box_pack_end(bx, o);
evas_object_show(o);
o = elm_button_add(win);
elm_object_cursor_set(o, "hand3");
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(o, EINA_FALSE);
++=======
+ elm_object_cursor_theme_search_enabled_set(o, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(o, "hand3");
elm_box_pack_end(bx, o);
evas_object_show(o);
o = elm_button_add(win);
elm_object_cursor_set(o, "hand3");
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(o, EINA_FALSE);
++=======
+ elm_object_cursor_theme_search_enabled_set(o, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_cursor_style_set(o, "transparent");
elm_object_text_set(o, "hand3 transparent");
elm_box_pack_end(bx, o);
o = elm_button_add(win);
elm_object_cursor_set(o, "hand3");
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(o, EINA_FALSE);
++=======
+ elm_object_cursor_theme_search_enabled_set(o, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_cursor_unset(o);
elm_object_text_set(o, "unset");
elm_box_pack_end(bx, o);
elm_box_pack_end(bx, o);
evas_object_show(o);
++<<<<<<< HEAD
+ elm_cursor_engine_only_set(0);
++=======
+ elm_config_cursor_engine_only_set(EINA_FALSE);
++>>>>>>> remotes/origin/upstream
o = elm_button_add(win);
elm_object_cursor_set(o, "hand2");
elm_object_text_set(o, "hand 2 engine only config false");
elm_box_pack_end(bx, o);
evas_object_show(o);
++<<<<<<< HEAD
+ elm_cursor_engine_only_set(1);
++=======
+ elm_config_cursor_engine_only_set(EINA_TRUE);
++>>>>>>> remotes/origin/upstream
o = elm_button_add(win);
elm_object_cursor_set(o, "hand2");
elm_object_text_set(o, "hand 2 engine only config true");
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
+ #include <Elementary_Cursor.h>
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ SCROLLER_POLICY_SET_ON,
+ SCROLLER_POLICY_SET_OFF,
+ BOUNCE_SET,
+ ITEM_LABEL_SET,
+ TOOLTIP_TEXT_SET,
+ ITEM_TOOLTIP_UNSET,
+ ITEM_CURSOR_SET,
+ ITEM_CURSOR_UNSET,
+ ITEM_ICON_SET,
+ SELECTED_SET,
+ ITEM_PREV_GET,
+ ITEM_DEL_NOT_SELECTED,
+ ITEM_DEL, /* delete when selected */
+ CLEAR,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *disks = elm_box_children_get(api->box);
+ if(!eina_list_count(disks))
+ return;
+
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case SCROLLER_POLICY_SET_ON: /* 0 */
+ { /* Get first disk */
+ Evas_Object *disk = eina_list_nth(disks, 0);
+ elm_diskselector_scroller_policy_set(disk, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
+ }
+ break;
+
+ case SCROLLER_POLICY_SET_OFF: /* 1 */
+ { /* Get first disk */
+ Evas_Object *disk = eina_list_nth(disks, 0);
+ elm_diskselector_scroller_policy_set(disk, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ }
+ break;
+
+ case BOUNCE_SET: /* 2 */
+ { /* Get second disk, cancel bounce */
+ Evas_Object *disk = eina_list_nth(disks, 1);
+ elm_diskselector_bounce_set(disk, EINA_FALSE, EINA_FALSE);
+ }
+ break;
+
+ case ITEM_LABEL_SET: /* 3 */
+ elm_object_item_text_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), "Label from API");
+ break;
+
+ case TOOLTIP_TEXT_SET: /* 4 */
+ elm_object_item_tooltip_text_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), "Tooltip from API");
+ break;
+
+ case ITEM_TOOLTIP_UNSET: /* 5 */
+ elm_object_item_tooltip_unset(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)));
+ break;
+
+ case ITEM_CURSOR_SET: /* 6 */
+ elm_object_item_cursor_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), ELM_CURSOR_HAND2);
+ break;
+
+ case ITEM_CURSOR_UNSET: /* 7 */
+ elm_object_item_cursor_unset(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)));
+ break;
+
+ case ITEM_ICON_SET: /* 8 */
+ { /* Set icon of selected item in first disk */
+ char buf[PATH_MAX];
+ Evas_Object *ic = elm_icon_add(elm_object_parent_widget_get(eina_list_nth(disks, 0)));
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_object_item_part_content_set(elm_diskselector_selected_item_get(eina_list_nth(disks, 0)), NULL, ic);
+ evas_object_show(ic);
+ }
+ break;
+
+ case SELECTED_SET: /* 9 */
+ { /* Select NEXT item of third disk */
+ elm_diskselector_item_selected_set(elm_diskselector_last_item_get(eina_list_nth(disks, 1)), EINA_TRUE);
+ elm_diskselector_item_selected_set(elm_diskselector_item_next_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))), EINA_TRUE);
+ }
+ break;
+
+ case ITEM_PREV_GET: /* 10 */
+ { /* Select PREV item of third disk */
+ elm_diskselector_item_selected_set(elm_diskselector_item_prev_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))), EINA_TRUE);
+ }
+ break;
+
+ case ITEM_DEL_NOT_SELECTED: /* 11 */
+ { /* Remove selected item of third disk */
+ elm_object_item_del(elm_diskselector_item_prev_get(elm_diskselector_selected_item_get(eina_list_nth(disks, 2))));
+ }
+ break;
+
+ case ITEM_DEL: /* 12 */
+ { /* Remove selected item of first disk */
+ elm_object_item_del(elm_diskselector_selected_item_get(eina_list_nth(disks, 1)));
+ }
+ break;
+
+ case CLEAR: /* 13 */
+ elm_diskselector_clear(eina_list_nth(disks, 0));
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
++>>>>>>> remotes/origin/upstream
static void
_disk_sel(void *data __UNUSED__, Evas_Object * obj __UNUSED__, void *event_info)
}
static Evas_Object *
++<<<<<<< HEAD
+_disk_create(Evas_Object *win, Eina_Bool round)
++=======
+ _disk_create(Evas_Object *win, Eina_Bool rnd)
++>>>>>>> remotes/origin/upstream
{
Elm_Object_Item *ds_it;
Evas_Object *di;
elm_diskselector_item_append(di, "December", NULL, NULL, NULL);
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
++<<<<<<< HEAD
+ elm_diskselector_round_set(di, round);
++=======
+ elm_diskselector_round_enabled_set(di, rnd);
++>>>>>>> remotes/origin/upstream
return di;
}
++<<<<<<< HEAD
+void
+test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *disk, *ic;
+ Elm_Object_Item *ds_it;
+ char buf[PATH_MAX];
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *disk, *ic, *bxx, *bt;
+ Elm_Object_Item *ds_it;
+ char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
int idx = 0;
char *month_list[] = {
win = elm_win_add(NULL, "diskselector", ELM_WIN_BASIC);
elm_win_title_set(win, "Disk Selector");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bg);
++<<<<<<< HEAD
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
elm_win_resize_object_add(win, bx);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
++ evas_object_show(bx);
++
++=======
+ api->box = bx;
evas_object_show(bx);
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
++>>>>>>> remotes/origin/upstream
disk = _disk_create(win, EINA_TRUE);
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
evas_object_show(disk);
evas_object_smart_callback_add(disk, "selected", _print_disk_info_cb, NULL);
++<<<<<<< HEAD
+ elm_diskselector_side_label_length_set(disk, 4);
++=======
+ elm_diskselector_side_text_max_length_set(disk, 4);
++>>>>>>> remotes/origin/upstream
disk = elm_diskselector_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 1, 1);
++=======
+ elm_icon_resizable_set(ic, 1, 1);
++>>>>>>> remotes/origin/upstream
elm_diskselector_item_append(disk, "Sunday", ic, NULL, NULL);
elm_diskselector_item_append(disk, "Monday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Tuesday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Thursday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Friday", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Saturday", NULL, NULL, NULL);
++<<<<<<< HEAD
+ elm_diskselector_round_set(disk, EINA_TRUE);
++=======
+ elm_diskselector_round_enabled_set(disk, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 1, 1);
++=======
+ elm_icon_resizable_set(ic, 1, 1);
++>>>>>>> remotes/origin/upstream
elm_diskselector_item_append(disk, "머리스타일", ic, NULL, NULL);
elm_diskselector_item_append(disk, "プロが伝授する", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "生上访要求政府", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "والشريعة", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "עִבְרִית", NULL, NULL, NULL);
elm_diskselector_item_append(disk, "Grüßen", NULL, NULL, NULL);
++<<<<<<< HEAD
+ elm_diskselector_round_set(disk, EINA_TRUE);
++=======
+ elm_diskselector_round_enabled_set(disk, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
}
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
++<<<<<<< HEAD
+ elm_diskselector_round_set(disk, EINA_TRUE);
++=======
+ elm_diskselector_round_enabled_set(disk, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
}
elm_diskselector_item_selected_set(ds_it, EINA_TRUE);
++<<<<<<< HEAD
+ elm_diskselector_round_set(disk, EINA_TRUE);
++=======
+ elm_diskselector_round_enabled_set(disk, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(disk, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(disk, EVAS_HINT_FILL, 0.5);
elm_box_pack_end(bx, disk);
return EINA_TRUE;
}
++<<<<<<< HEAD
++=======
+ static int
+ _compare_cb(const void *data1, const void *data2)
+ {
+ Elm_Object_Item *it = (Elm_Object_Item *)data1;
+ Elm_Object_Item *it2 = (Elm_Object_Item *)data2;
+ return strcoll(elm_object_item_data_get(it),
+ elm_object_item_data_get(it2));
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_ls_main_cb(void *data, Eio_File *handler __UNUSED__, const char *file)
{
eina_stringshare_add(file),
NULL,
ELM_GENLIST_ITEM_NONE,
++<<<<<<< HEAD
+ (Eina_Compare_Cb) strcoll,
++=======
+ _compare_cb,
++>>>>>>> remotes/origin/upstream
_sel_file,
NULL);
}
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en, "Disabled entry");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
+ elm_object_disabled_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_object_disabled_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_password_set(en, 1);
+ elm_entry_single_line_set(en, 1);
+ elm_object_text_set(en, "Access denied, give up!");
+ elm_object_disabled_set(en, 1);
++=======
+ elm_entry_password_set(en, EINA_TRUE);
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_object_text_set(en, "Access denied, give up!");
+ elm_object_disabled_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
++<<<<<<< HEAD
+ elm_object_disabled_set(en, 1);
++=======
+ elm_object_disabled_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_entry_context_menu_item_add(en, "Hello", NULL, ELM_ICON_NONE, NULL, NULL);
elm_entry_context_menu_item_add(en, "World", NULL, ELM_ICON_NONE, NULL, NULL);
elm_object_text_set(en,
elm_box_pack_end(bx, en);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sp);
evas_object_show(sp);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "This is a single line");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_entry_select_all(en);
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "01234");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
digits_filter_data.accepted = "0123456789";
digits_filter_data.rejected = NULL;
++<<<<<<< HEAD
+ elm_entry_text_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data);
++=======
+ elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data);
++>>>>>>> remotes/origin/upstream
/* No digits entry */
en = elm_entry_add(win);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "No numbers here");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
digits_filter_data2.accepted = NULL;
digits_filter_data2.rejected = "0123456789";
++<<<<<<< HEAD
+ elm_entry_text_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data2);
++=======
+ elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data2);
++>>>>>>> remotes/origin/upstream
/* Size limited entry */
en = elm_entry_add(win);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "Just 20 chars");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
limit_filter_data.max_char_count = 20;
limit_filter_data.max_byte_count = 0;
++<<<<<<< HEAD
+ elm_entry_text_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data);
++=======
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data);
++>>>>>>> remotes/origin/upstream
/* Byte size limited entry */
en = elm_entry_add(win);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "And now only 30 bytes");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
limit_filter_data2.max_char_count = 0;
limit_filter_data2.max_byte_count = 30;
++<<<<<<< HEAD
+ elm_entry_text_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data2);
++=======
+ elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data2);
++>>>>>>> remotes/origin/upstream
/* Single line password entry */
en_p = elm_entry_add(win);
evas_object_size_hint_align_set(en_p, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en_p, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en_p, "Password here");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en_p, 1);
+ elm_entry_password_set(en_p, 1);
++=======
+ elm_entry_single_line_set(en_p, EINA_TRUE);
+ elm_entry_password_set(en_p, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en_p);
elm_box_pack_end(bx, en_p);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
bt = elm_icon_add(win);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en, "This is a single line");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, en);
evas_object_show(en);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en, "This is a single line");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_part_content_set(ly, "element1", en);
evas_object_show(en);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+ void
+ test_entry6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *en;
+
+ win = elm_win_add(NULL, "entry6", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Entry 6");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ en = elm_entry_add(win);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(en,
+ "input_panel_enabled: TRUE.<br>"
+ "When this entry gets a focus, virtual keyboard will be shown "
+ "in illume environment.");
+ elm_box_pack_end(bx, en);
+ evas_object_show(en);
+
+ en = elm_entry_add(win);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ elm_entry_line_wrap_set(en, ELM_WRAP_CHAR);
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(en,
+ "input_panel_enabled: FALSE.<br>"
+ "This entry doesn't allow to show virtual keyboard automatically.<br>"
+ "it is used in case that wants its own keypad such as calculator.");
+ elm_entry_input_panel_enabled_set(en, EINA_FALSE);
+ elm_box_pack_end(bx, en);
+ evas_object_show(en);
+
+ evas_object_resize(win, 320, 300);
+
+ elm_object_focus_set(win, EINA_TRUE);
+ evas_object_show(win);
+ }
+
+ static void
+ changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object*)data;
+
+ elm_entry_editable_set(en, elm_check_state_get(obj));
+ }
+
+ static void
+ en_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *sp, *en;
+ sp = (Evas_Object *)data;
+ en = (Evas_Object *)obj;
+ elm_spinner_min_max_set(sp, 0, strlen(elm_object_text_get(en)));
+ }
+
+ static void
+ sp_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en, *sp;
+ en = (Evas_Object *)data;
+ sp = (Evas_Object *)obj;
+ elm_entry_cursor_pos_set(en, elm_spinner_value_get(sp));
+ elm_object_focus_set(en, EINA_TRUE);
+ }
+
+ static void
+ add_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object *)data;
+
+ elm_entry_context_menu_item_add(en, "item", NULL, ELM_ICON_NONE, NULL, NULL);
+ }
+
+ static void
+ clear_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object *)data;
+
+ elm_entry_context_menu_clear(en);
+ }
+
+ static Evas_Object *
+ item_provider(void *images __UNUSED__, Evas_Object *en, const char *item)
+ {
+ Evas_Object *o = NULL;;
+ char buf[1024];
+
+ if(!strcmp(item, "itemprovider"))
+ {
+ snprintf(buf, sizeof(buf), "%s/images/icon_00.png",
+ elm_app_data_dir_get());
+ o = evas_object_image_filled_add(evas_object_evas_get(en));
+ evas_object_image_file_set(o, buf, NULL);
+ }
+
+ return o;
+ }
+
+ static Evas_Object *
+ prepend_item_provider(void *images __UNUSED__, Evas_Object *en, const char *item)
+ {
+ Evas_Object *o = NULL;;
+ char buf[1024];
+
+ if(!strcmp(item, "itemprovider"))
+ {
+ snprintf(buf, sizeof(buf), "%s/images/icon_10.png",
+ elm_app_data_dir_get());
+ o = evas_object_image_filled_add(evas_object_evas_get(en));
+ evas_object_image_file_set(o, buf, NULL);
+ }
+
+ return o;
+ }
+
+ static void
+ prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object *)data;
+
+ elm_entry_item_provider_prepend(en, prepend_item_provider, NULL);
+ elm_object_text_set(en,
+ "Item Provider"
+ "<item size=50x50 vsize=full href=itemprovider></item>"
+ );
+ }
+
+ static void
+ remove_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object *)data;
+
+ elm_entry_item_provider_remove(en, item_provider, NULL);
+ elm_entry_item_provider_remove(en, prepend_item_provider, NULL);
+ elm_object_text_set(en,
+ "Item Provider"
+ "<item size=50x50 vsize=full href=itemprovider></item>"
+ );
+ }
+
+ static void
+ enable_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object*)data;
+
+ elm_entry_context_menu_disabled_set(en, elm_check_state_get(obj));
+ }
+
+ void
+ test_entry7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gd, *bg, *en, *tg, *lb, *sp;
+ Evas_Object *bt, *en2;
+
+ win = elm_win_util_standard_add("entry7", "Entry 7");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ gd = elm_grid_add(win);
+ elm_grid_size_set(gd, 100, 100);
+ evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gd);
+ evas_object_show(gd);
+
+ /* upper entry group */
+ bg = elm_bg_add(win);
+ elm_bg_color_set(bg, 255, 0, 0);
+ elm_grid_pack(gd, bg, 10, 10, 60, 30);
+ evas_object_show(bg);
+
+ en = elm_entry_add(win);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(en, "Editable, Cursor Positioin");
+ evas_object_show(en);
+ elm_grid_pack(gd, en, 10, 10, 60, 30);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Editable");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", changed_cb, en);
+ elm_grid_pack(gd, tg, 70, 10, 22, 10);
+ evas_object_show(tg);
+
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "Cursor position:");
+ evas_object_size_hint_weight_set(lb, 0.0, 0.0);
+ evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, lb, 70, 25, 25, 5);
+ evas_object_show(lb);
+
+ sp = elm_spinner_add(win);
+ elm_spinner_label_format_set(sp, "%1.0f");
+ elm_spinner_step_set(sp, 1);
+ elm_spinner_wrap_set(sp, ELM_WRAP_CHAR);
+ elm_spinner_min_max_set(sp, 0, strlen(elm_object_text_get(en)));
+ evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_grid_pack(gd, sp, 70, 30, 25, 10);
+ evas_object_smart_callback_add(en, "changed", en_changed_cb, sp);
+ evas_object_smart_callback_add(sp, "delay,changed", sp_changed_cb, en);
+ evas_object_show(sp);
+
+ /* bottom entry group */
+ bg = elm_bg_add(win);
+ elm_bg_color_set(bg, 0, 255, 0);
+ elm_grid_pack(gd, bg, 10, 50, 45, 30);
+ evas_object_show(bg);
+
+ en2 = elm_entry_add(win);
+ elm_entry_scrollable_set(en2, EINA_TRUE);
+ evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(en2,
+ "Item Provider"
+ "<item size=50x50 vsize=full href=itemprovider></item>"
+ );
+ elm_entry_item_provider_append(en2, item_provider, NULL);
+ elm_entry_context_menu_disabled_set(en, EINA_TRUE);
+ elm_grid_pack(gd, en2, 10, 50, 45, 30);
+ evas_object_show(en2);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Disable Context Menu");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", enable_changed_cb, en2);
+ elm_grid_pack(gd, tg, 55, 50, 40, 10);
+ evas_object_show(tg);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Add Context Menu");
+ elm_grid_pack(gd, bt, 55, 60, 40, 10);
+ evas_object_smart_callback_add(bt, "clicked", add_bt_clicked, en2);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Clear Context Menu");
+ elm_grid_pack(gd, bt, 55, 70, 40, 10);
+ evas_object_smart_callback_add(bt, "clicked", clear_bt_clicked, en2);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Prepend Item Provider");
+ elm_grid_pack(gd, bt, 10, 80, 45, 10);
+ evas_object_smart_callback_add(bt, "clicked", prepend_bt_clicked, en2);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Remove Item Provider");
+ elm_grid_pack(gd, bt, 55, 80, 40, 10);
+ evas_object_smart_callback_add(bt, "clicked", remove_bt_clicked, en2);
+ evas_object_show(bt);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
+ static void
+ filter_prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en, *en2;
+ static Elm_Entry_Filter_Accept_Set digits_filter_data;
+
+ en = (Evas_Object *)data;
+ en2 = evas_object_data_get(en, "filter-entry");
+ digits_filter_data.accepted = elm_object_text_get(en2);
+ digits_filter_data.rejected = NULL;
+
+ elm_entry_markup_filter_append(en, elm_entry_filter_accept_set,
+ &digits_filter_data);
+ elm_object_text_set(en, "Markup Filter Prepend Test:");
+ }
+
+ static void
+ filter_remove_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object *)data;
+
+ elm_entry_markup_filter_remove(en, elm_entry_filter_accept_set, NULL);
+ elm_object_text_set(en, "Markup Filter Prepend Test:");
+ }
+
+ static void
+ icon_visible_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object*)data;
+
+ elm_entry_icon_visible_set(en, elm_check_state_get(obj));
+ }
+
+ static void
+ end_visible_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object*)data;
+
+ elm_entry_end_visible_set(en, elm_check_state_get(obj));
+ }
+
+ static void
+ horizontal_bounce_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ Eina_Bool vb;
+ Eina_Bool bounce = elm_check_state_get(obj);
+ en = (Evas_Object*)data;
+
+ elm_entry_bounce_get(en, NULL, &vb);
+ elm_entry_bounce_set(en, bounce, bounce);
+ }
+
+ static void
+ vertical_bounce_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ Eina_Bool hb;
+ Eina_Bool bounce = elm_check_state_get(obj);
+ en = (Evas_Object*)data;
+
+ elm_entry_bounce_get(en, &hb, NULL);
+ elm_entry_bounce_set(en, hb, bounce);
+ }
+
+ void
+ test_entry8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gd, *rect, *en, *lb;
+ Evas_Object *bt, *en2;
+ Evas_Object *ch, *en3, *bx;
+ Evas_Object *en4;
+ static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+ win = elm_win_util_standard_add("entry8", "Entry 8");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ gd = elm_grid_add(win);
+ elm_grid_size_set(gd, 100, 100);
+ elm_win_resize_object_add(win, gd);
+ evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gd);
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ elm_grid_pack(gd, rect, 5, 5, 90, 10);
+ evas_object_color_set(rect, 125, 125, 255, 255);
+ evas_object_show(rect);
+
+ en = elm_entry_add(win);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(en, "Markup Filter Prepend Test");
+ elm_grid_pack(gd, en, 5, 5, 90, 10);
+ evas_object_show(en);
+
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "Markup Filter (20 Characters):");
+ evas_object_size_hint_weight_set(lb, 0.0, 0.0);
+ evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, lb, 5, 15, 50, 10);
+ evas_object_show(lb);
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ elm_grid_pack(gd, rect, 55, 15, 40, 10);
+ evas_object_color_set(rect, 0, 125, 255, 255);
+ evas_object_show(rect);
+
+ en2 = elm_entry_add(win);
+ elm_entry_scrollable_set(en2, EINA_TRUE);
+ elm_entry_scrollbar_policy_set(en2, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ evas_object_size_hint_weight_set(en2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ limit_filter_data.max_char_count = 20;
+ limit_filter_data.max_byte_count = 0;
+ elm_entry_markup_filter_append(en2, elm_entry_filter_limit_size, &limit_filter_data);
+ evas_object_data_set(en, "filter-entry", en2);
+ evas_object_show(en2);
+ elm_grid_pack(gd, en2, 55, 15, 40, 10);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Markup Filter Prepend");
+ elm_grid_pack(gd, bt, 5, 25, 45, 10);
+ evas_object_smart_callback_add(bt, "clicked", filter_prepend_bt_clicked, en);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Markup Filter Remove");
+ elm_grid_pack(gd, bt, 50, 25, 45, 10);
+ evas_object_smart_callback_add(bt, "clicked", filter_remove_bt_clicked, en);
+ evas_object_show(bt);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ en3 = elm_entry_add(win);
+ elm_entry_scrollable_set(en3, EINA_TRUE);
+ elm_entry_scrollbar_policy_set(en3, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ elm_entry_single_line_set(en3, EINA_TRUE);
+ evas_object_size_hint_weight_set(en3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en3, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(bx, en3);
+ evas_object_show(en3);
+ elm_grid_pack(gd, bx, 5, 35, 90, 20);
+
+ bt = elm_icon_add(win);
+ elm_icon_standard_set(bt, "home");
+ evas_object_size_hint_min_set(bt, 48, 48);
+ evas_object_color_set(bt, 255, 0, 0, 128);
+ evas_object_show(bt);
+ elm_object_part_content_set(en3, "icon", bt);
+
+ bt = elm_icon_add(win);
+ elm_icon_standard_set(bt, "delete");
+ evas_object_color_set(bt, 255, 0, 0, 128);
+ evas_object_size_hint_min_set(bt, 48, 48);
+ evas_object_show(bt);
+ elm_object_part_content_set(en3, "end", bt);
+
+ ch = elm_check_add(win);
+ evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(ch, "Icon Visible");
+ elm_check_state_set(ch, EINA_TRUE);
+ evas_object_smart_callback_add(ch, "changed", icon_visible_changed_cb, en3);
+ elm_grid_pack(gd, ch, 5, 55, 30, 10);
+ evas_object_show(ch);
+
+ ch = elm_check_add(win);
+ evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(ch, "End Visible");
+ elm_check_state_set(ch, EINA_TRUE);
+ evas_object_smart_callback_add(ch, "changed", end_visible_changed_cb, en3);
+ elm_grid_pack(gd, ch, 70, 55, 25, 10);
+ evas_object_show(ch);
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ elm_grid_pack(gd, rect, 5, 65, 90, 20);
+ evas_object_color_set(rect, 255, 125, 125, 255);
+ evas_object_show(rect);
+
+ en4 = elm_entry_add(win);
+ elm_entry_scrollable_set(en4, EINA_TRUE);
+ elm_entry_bounce_set(en4, EINA_TRUE, EINA_TRUE);
+ elm_entry_autocapital_type_set(en4, EINA_TRUE);
+ evas_object_size_hint_weight_set(en4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en4, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, en4, 5, 65, 90, 20);
+ evas_object_show(en4);
+
+ ch = elm_check_add(win);
+ evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(ch, "Horizontal Bounce Set");
+ elm_check_state_set(ch, EINA_TRUE);
+ evas_object_smart_callback_add(ch, "changed", horizontal_bounce_changed_cb, en4);
+ elm_grid_pack(gd, ch, 5, 85, 45, 10);
+ evas_object_show(ch);
+
+ ch = elm_check_add(win);
+ evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(ch, "Vertical Bounce Set");
+ elm_check_state_set(ch, EINA_TRUE);
+ evas_object_smart_callback_add(ch, "changed", vertical_bounce_changed_cb, en4);
+ elm_grid_pack(gd, ch, 50, 85, 45, 10);
+ evas_object_show(ch);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_scrolled_entry_clear(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_object_text_set(en, "");
}
++<<<<<<< HEAD
+void
+test_entry_notepad(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *bx2, *bt, *np;
++=======
+ static void
+ _scrolled_entry_save(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *en = data;
+ elm_entry_file_save(en);
+ }
+
+ static void
+ auto_save_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *en;
+ en = (Evas_Object*)data;
+
+ elm_entry_autosave_set(en, elm_check_state_get(obj));
+ }
+
+ void
+ test_entry_notepad(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *bx2, *bt, *np, *ch;
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "entry-notepad", ELM_WIN_BASIC);
elm_win_title_set(win, "Entry Notepad");
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
++<<<<<<< HEAD
++=======
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Save");
+ evas_object_smart_callback_add(bt, "clicked", _scrolled_entry_save, np);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ ch = elm_check_add(win);
+ evas_object_size_hint_weight_set(ch, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ch, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(ch, "Auto Save");
+ elm_check_state_set(ch, EINA_FALSE);
+ evas_object_smart_callback_add(ch, "changed", auto_save_changed_cb, np);
+ elm_box_pack_end(bx2, ch);
+ evas_object_show(ch);
+
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, bx2);
evas_object_show(bx2);
int i;
bx = elm_box_add(win);
++<<<<<<< HEAD
+ printf(" ADD lv 3 = %p [%i]\n", bx, (BLOK * (int)evas_object_data_get(obj, "num")));
++=======
+ printf(" ADD lv 3 = %p [%i]\n", bx, (BLOK * (int)(long)evas_object_data_get(obj, "num")));
++>>>>>>> remotes/origin/upstream
#ifdef HOMOG
elm_box_homogeneous_set(bx, EINA_TRUE);
#endif
char buf[32];
snprintf(buf, sizeof(buf), "%i",
++<<<<<<< HEAD
+ (i + (BLOK * (int)evas_object_data_get(obj, "num"))));
++=======
+ (i + (BLOK * (int)(long)evas_object_data_get(obj, "num"))));
++>>>>>>> remotes/origin/upstream
bt = elm_button_add(win);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
int i;
bx = elm_box_add(win);
++<<<<<<< HEAD
+ printf(" ADD lv 2 = %p [%i]\n", bx, (BLOK * (int)evas_object_data_get(obj, "num")));
++=======
+ printf(" ADD lv 2 = %p [%i]\n", bx, (BLOK * (int)(long)evas_object_data_get(obj, "num")));
++>>>>>>> remotes/origin/upstream
#ifdef HOMOG
elm_box_homogeneous_set(bx, EINA_TRUE);
#endif
// scrollbar will be wrong until enough
// children have been realized and the
// real size is known
++<<<<<<< HEAD
+ evas_object_data_set(fc, "num", (void *)(i + (BLOK * (int)evas_object_data_get(obj, "num"))));
++=======
+ evas_object_data_set(fc, "num", (void *)(long)(i + (BLOK * (int)(long)evas_object_data_get(obj, "num"))));
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_min_set(fc, 0, DEFSZ);
evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
int i;
bx = elm_box_add(win);
++<<<<<<< HEAD
+ printf(" ADD lv 1 = %p [%i]\n", bx, (BLOK * (int)evas_object_data_get(obj, "num")));
++=======
+ printf(" ADD lv 1 = %p [%i]\n", bx, (BLOK * (int)(long)evas_object_data_get(obj, "num")));
++>>>>>>> remotes/origin/upstream
#ifdef HOMOG
elm_box_homogeneous_set(bx, EINA_TRUE);
#endif
// scrollbar will be wrong until enough
// children have been realized and the
// real size is known
++<<<<<<< HEAD
+ evas_object_data_set(fc, "num", (void *)(i + (BLOK * (int)evas_object_data_get(obj, "num"))));
++=======
+ evas_object_data_set(fc, "num", (void *)(long)(i + (BLOK * (int)(long)evas_object_data_get(obj, "num"))));
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_min_set(fc, 0, DEFSZ);
evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
// scrollbar will be wrong until enough
// children have been realized and the
// real size is known
++<<<<<<< HEAD
+ evas_object_data_set(fc, "num", (void *)i);
++=======
+ evas_object_data_set(fc, "num", (void *)(long)i);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_min_set(fc, 0, DEFSZ);
evas_object_size_hint_weight_set(fc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(fc, EVAS_HINT_FILL, EVAS_HINT_FILL);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Evas_Object *box; /* Additional data defined by test */
+ Eina_Bool free_data; /* free data on close */
+ };
+ typedef struct _api_data api_data;
+ enum _api_state
+ {
+ ICON_UNSET,
+ WINDOW_TITLE_SET,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ /* Get first item of list of vbox children */
+ Evas_Object *fs_bt = eina_list_nth(items, 0);
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case ICON_UNSET:
+ elm_object_part_content_unset(fs_bt, NULL);
+ break;
+
+ case WINDOW_TITLE_SET:
+ elm_fileselector_button_window_title_set(fs_bt, "Custom title from API");
+ break;
+
+ case API_STATE_LAST:
+
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ create_dir_struct(void)
+ {
+ FILE *fp;
+ mkdir("/tmp/test_fs_bt", S_IRWXU);
+ fp = fopen("/tmp/test_fs_bt/a_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/k_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/m_file.txt", "w");
+ if (fp) fclose(fp);
+
+ mkdir("/tmp/test_fs_bt/a_subdir", S_IRWXU);
+ fp = fopen("/tmp/test_fs_bt/a_subdir/d_sub_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/a_subdir/j_sub_file.txt", "w");
+ if (fp) fclose(fp);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_file_chosen(void *data,
Evas_Object *obj __UNUSED__,
printf("Expandable flag set to: %s\n", value ? "false" : "true");
}
++<<<<<<< HEAD
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_fileselector_button(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *vbox, *hbox, *ic, *bt, *fs_bt, *en, *lb;
++=======
+ Evas_Object *win, *bg, *vbox, *hbox, *ic, *bt, *fs_bt, *en, *lb, *bxx;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "fileselector-button", ELM_WIN_BASIC);
elm_win_title_set(win, "File Selector Button");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ vbox = elm_box_add(win);
+ elm_win_resize_object_add(win, vbox);
+ evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(vbox);
+
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ vbox = elm_box_add(win);
+ api->box = vbox;
+ evas_object_show(vbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, vbox);
+
+ create_dir_struct(); /* Create a dir struct in /tmp */
++>>>>>>> remotes/origin/upstream
/* file selector button */
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "file");
fs_bt = elm_fileselector_button_add(win);
elm_object_text_set(fs_bt, "Select a file");
elm_object_part_content_set(fs_bt, "icon", ic);
++<<<<<<< HEAD
++=======
+ elm_fileselector_button_path_set(fs_bt, "/tmp/test_fs_bt");
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(vbox, fs_bt);
evas_object_show(fs_bt);
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
#endif
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ ICON_UNSET,
+ WINDOW_TITLE_SET,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ /* Get first item of list of vbox children */
+ Evas_Object *fs_bt = eina_list_nth(items, 0);
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case ICON_UNSET:
+ elm_object_part_content_unset(fs_bt, NULL);
+ break;
+
+ case WINDOW_TITLE_SET:
+ elm_fileselector_entry_window_title_set(fs_bt, "Custom title from API");
+ break;
+
+ case API_STATE_LAST:
+
+ break;
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ create_dir_struct(void)
+ {
+ FILE *fp;
+ mkdir("/tmp/test_fs_bt", S_IRWXU);
+ fp = fopen("/tmp/test_fs_bt/a_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/k_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/m_file.txt", "w");
+ if (fp) fclose(fp);
+
+ mkdir("/tmp/test_fs_bt/a_subdir", S_IRWXU);
+ fp = fopen("/tmp/test_fs_bt/a_subdir/d_sub_file.txt", "w");
+ if (fp) fclose(fp);
+ fp = fopen("/tmp/test_fs_bt/a_subdir/j_sub_file.txt", "w");
+ if (fp) fclose(fp);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_file_chosen(void *data,
Evas_Object *obj __UNUSED__,
printf("Disabled flag set to: %s\n", value ? "false" : "true");
}
++<<<<<<< HEAD
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_fileselector_entry(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *vbox, *hbox, *ic, *bt, *fs_en, *en, *lb;
++=======
+ Evas_Object *win, *bg, *vbox, *hbox, *ic, *bt, *fs_en, *en, *lb, *bxx;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "fileselector-entry", ELM_WIN_BASIC);
elm_win_title_set(win, "File Selector Entry");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ vbox = elm_box_add(win);
+ evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, vbox);
+ evas_object_show(vbox);
+
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ vbox = elm_box_add(win);
+ evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ api->box = vbox;
+ evas_object_show(vbox);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, vbox);
+
+ create_dir_struct(); /* Create a dir struct in /tmp */
+
++>>>>>>> remotes/origin/upstream
/* file selector entry */
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "file");
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
fs_en = elm_fileselector_entry_add(win);
++<<<<<<< HEAD
++=======
+ elm_fileselector_entry_path_set(fs_en, "/tmp/test_fs_bt");
++>>>>>>> remotes/origin/upstream
elm_object_text_set(fs_en, "Select a file");
elm_object_part_content_set(fs_en, "button icon", ic);
evas_object_size_hint_weight_set(fs_en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_01.jpg");
elm_bg_file_set(o, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl, o);
++=======
+ elm_object_part_content_set(fl, "front", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
ly = elm_layout_add(win);
elm_layout_file_set(ly, buf, "layout");
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, ly);
++=======
+ elm_object_part_content_set(fl, "back", ly);
++>>>>>>> remotes/origin/upstream
evas_object_show(ly);
bt = elm_button_add(ly);
elm_box_pack_end(o, li);
evas_object_show(li);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl, o);
++=======
+ elm_object_part_content_set(fl, "front", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
en = elm_entry_add(win);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, en);
++=======
+ elm_object_part_content_set(fl, "back", en);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
evas_object_show(fl);
elm_object_text_set(fr, "Front");
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl, fr);
++=======
+ elm_object_part_content_set(fl, "front", fr);
++>>>>>>> remotes/origin/upstream
evas_object_show(fr);
fl_f = elm_flip_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_01.jpg");
elm_bg_file_set(o, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl_f, o);
++=======
+ elm_object_part_content_set(fl_f, "front", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
o = elm_bg_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_02.jpg");
elm_bg_file_set(o, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl_f, o);
++=======
+ elm_object_part_content_set(fl_f, "back", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
fr = elm_frame_add(win);
elm_object_text_set(fr, "Back");
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, fr);
++=======
+ elm_object_part_content_set(fl, "back", fr);
++>>>>>>> remotes/origin/upstream
evas_object_show(fr);
fl_b = elm_flip_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_03.jpg");
elm_bg_file_set(o, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl_b, o);
++=======
+ elm_object_part_content_set(fl_b, "front", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
o = elm_bg_add(win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), "sky_04.jpg");
elm_bg_file_set(o, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl_b, o);
++=======
+ elm_object_part_content_set(fl_b, "back", o);
++>>>>>>> remotes/origin/upstream
evas_object_show(o);
bx2 = elm_box_add(win);
evas_object_data_set(win, "fl", fl);
elm_flip_interaction_set(fl, ELM_FLIP_INTERACTION_NONE);
++<<<<<<< HEAD
+ elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_UP, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_DOWN, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_LEFT, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(fl, ELM_FLIP_DIRECTION_RIGHT, EINA_TRUE);
+ elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_UP, 0.25);
+ elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_DOWN, 0.25);
+ elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_LEFT, 0.25);
+ elm_flip_interacton_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_RIGHT, 0.25);
++=======
+ elm_flip_interaction_direction_enabled_set(fl, ELM_FLIP_DIRECTION_UP, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(fl, ELM_FLIP_DIRECTION_DOWN, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(fl, ELM_FLIP_DIRECTION_LEFT, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(fl, ELM_FLIP_DIRECTION_RIGHT, EINA_TRUE);
+ elm_flip_interaction_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_UP, 0.25);
+ elm_flip_interaction_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_DOWN, 0.25);
+ elm_flip_interaction_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_LEFT, 0.25);
+ elm_flip_interaction_direction_hitsize_set(fl, ELM_FLIP_DIRECTION_RIGHT, 0.25);
++>>>>>>> remotes/origin/upstream
evas_object_show(fl);
im = evas_object_image_filled_add(evas_object_evas_get(win));
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "twofish.jpg");
evas_object_image_file_set(im, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl, im);
++=======
+ elm_object_part_content_set(fl, "front", im);
++>>>>>>> remotes/origin/upstream
evas_object_show(im);
#if 0
snprintf(buf, sizeof(buf), "%s/images/%s",
elm_app_data_dir_get(), "sky_04.jpg");
evas_object_image_file_set(im, buf, NULL);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, im);
++=======
+ elm_object_part_content_set(fl, "back", im);
++>>>>>>> remotes/origin/upstream
evas_object_show(im);
#else
li = elm_list_add(win);
elm_list_item_append(li, "Item 2", NULL, NULL, NULL, NULL);
elm_list_item_append(li, "Item 3 (Which is very long just for testing purposes)", NULL, NULL, NULL, NULL);
elm_list_go(li);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, li);
++=======
+ elm_object_part_content_set(fl, "back", li);
++>>>>>>> remotes/origin/upstream
evas_object_show(li);
#endif
evas_map_util_3d_perspective(m, x + (w / 2), y + (h / 2), 0, 1024);
for (i = 0; i < 4; i++)
{
++<<<<<<< HEAD
+ Evas_Coord x, y, z;
+ evas_map_point_coord_get(m, i, &x, &y, &z);
+ evas_map_point_coord_set(m, i, x, y, 0);
++=======
+ Evas_Coord xx, yy, zz;
+ evas_map_point_coord_get(m, i, &xx, &yy, &zz);
+ evas_map_point_coord_set(m, i, xx, yy, 0);
++>>>>>>> remotes/origin/upstream
}
if (evas_map_util_clockwise_get(m)) evas_object_show(sl->obj);
else evas_object_hide(sl->obj);
static void
_slice_xyz(State *st __UNUSED__, Slice *sl,
++<<<<<<< HEAD
+ double x1, double y1, double z1,
+ double x2, double y2, double z2,
+ double x3, double y3, double z3,
+ double x4, double y4, double z4)
+{
+ sl->x[0] = x1; sl->y[0] = y1; sl->z[0] = z1;
+ sl->x[1] = x2; sl->y[1] = y2; sl->z[1] = z2;
+ sl->x[2] = x3; sl->y[2] = y3; sl->z[2] = z3;
+ sl->x[3] = x4; sl->y[3] = y4; sl->z[3] = z4;
++=======
+ double xx1, double yy1, double zz1,
+ double xx2, double yy2, double zz2,
+ double xx3, double yy3, double zz3,
+ double xx4, double yy4, double zz4)
+ {
+ sl->x[0] = xx1; sl->y[0] = yy1; sl->z[0] = zz1;
+ sl->x[1] = xx2; sl->y[1] = yy2; sl->z[1] = zz2;
+ sl->x[2] = xx3; sl->y[2] = yy3; sl->z[2] = zz3;
+ sl->x[3] = xx4; sl->y[3] = yy4; sl->z[3] = zz4;
++>>>>>>> remotes/origin/upstream
}
static void
static int
_state_update(State *st)
{
++<<<<<<< HEAD
+ Evas_Coord x1, y1, x2, y2, mx, my, dst, dx, dy;
++=======
+ Evas_Coord xx1, yy1, xx2, yy2, mx, my, dst, dx, dy;
++>>>>>>> remotes/origin/upstream
Evas_Coord x, y, w, h, ox, oy, ow, oh;
int i, j, num, nn, jump, num2;
Slice *sl;
evas_object_geometry_get(st->front, &x, &y, &w, &h);
ox = x; oy = y; ow = w; oh = h;
++<<<<<<< HEAD
+ x1 = st->down_x;
+ y1 = st->down_y;
+ x2 = st->x;
+ y2 = st->y;
+
+ dx = x2 - x1;
+ dy = y2 - y1;
++=======
+ xx1 = st->down_x;
+ yy1 = st->down_y;
+ xx2 = st->x;
+ yy2 = st->y;
+
+ dx = xx2 - xx1;
+ dy = yy2 - yy1;
++>>>>>>> remotes/origin/upstream
dst = sqrt((dx * dx) + (dy * dy));
if (st->dir == -1)
{
}
if (st->dir == -1)
{
++<<<<<<< HEAD
+ if ((x1 > (w / 2)) && (dx < 0) && (abs(dx) > abs(dy))) st->dir = 0; // left
+ else if ((x1 < (w / 2)) && (dx >= 0) && (abs(dx) > abs(dy))) st->dir = 1; // right
+ else if ((y1 > (h / 2)) && (dy < 0) && (abs(dy) >= abs(dx))) st->dir = 2; // up
+ else if ((y1 < (h / 2)) && (dy >= 0) && (abs(dy) >= abs(dx))) st->dir = 3; // down
++=======
+ if ((xx1 > (w / 2)) && (dx < 0) && (abs(dx) > abs(dy))) st->dir = 0; // left
+ else if ((xx1 < (w / 2)) && (dx >= 0) && (abs(dx) > abs(dy))) st->dir = 1; // right
+ else if ((yy1 > (h / 2)) && (dy < 0) && (abs(dy) >= abs(dx))) st->dir = 2; // up
+ else if ((yy1 < (h / 2)) && (dy >= 0) && (abs(dy) >= abs(dx))) st->dir = 3; // down
++>>>>>>> remotes/origin/upstream
if (st->dir == -1) return 0;
}
if (st->dir == 0)
}
else if (st->dir == 1)
{
++<<<<<<< HEAD
+ x1 = (w - 1) - x1;
+ x2 = (w - 1) - x2;
++=======
+ xx1 = (w - 1) - xx1;
+ xx2 = (w - 1) - xx2;
++>>>>>>> remotes/origin/upstream
}
else if (st->dir == 2)
{
Evas_Coord tmp;
++<<<<<<< HEAD
+ tmp = x1; x1 = y1; y1 = tmp;
+ tmp = x2; x2 = y2; y2 = tmp;
++=======
+ tmp = xx1; xx1 = yy1; yy1 = tmp;
+ tmp = xx2; xx2 = yy2; yy2 = tmp;
++>>>>>>> remotes/origin/upstream
tmp = w; w = h; h = tmp;
}
else if (st->dir == 3)
{
Evas_Coord tmp;
++<<<<<<< HEAD
+ tmp = x1; x1 = y1; y1 = tmp;
+ tmp = x2; x2 = y2; y2 = tmp;
+ tmp = w; w = h; h = tmp;
+ x1 = (w - 1) - x1;
+ x2 = (w - 1) - x2;
+ }
+
+ if (x2 >= x1) x2 = x1 - 1;
+ mx = (x1 + x2) / 2;
+ my = (y1 + y2) / 2;
++=======
+ tmp = xx1; xx1 = yy1; yy1 = tmp;
+ tmp = xx2; xx2 = yy2; yy2 = tmp;
+ tmp = w; w = h; h = tmp;
+ xx1 = (w - 1) - xx1;
+ xx2 = (w - 1) - xx2;
+ }
+
+ if (xx2 >= xx1) xx2 = xx1 - 1;
+ mx = (xx1 + xx2) / 2;
+ my = (yy1 + yy2) / 2;
++>>>>>>> remotes/origin/upstream
if (mx < 0) mx = 0;
else if (mx >= w) mx = w - 1;
if (my < 0) my = 0;
else if (my >= h) my = h - 1;
++<<<<<<< HEAD
+ mgrad = (double)(y1 - y2) / (double)(x1 - x2);
++=======
+ mgrad = (double)(yy1 - yy2) / (double)(xx1 - xx2);
++>>>>>>> remotes/origin/upstream
if (mx < 1) mx = 1; // quick hack to keep curl line visible
}
}
++<<<<<<< HEAD
+ perc = (double)x2 / (double)x1;
+ percm = (double)mx / (double)x1;
++=======
+ perc = (double)xx2 / (double)xx1;
+ percm = (double)mx / (double)xx1;
++>>>>>>> remotes/origin/upstream
if (perc < 0.0) perc = 0.0;
else if (perc > 1.0) perc = 1.0;
if (percm < 0.0) percm = 0.0;
}
void
++<<<<<<< HEAD
+_third_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Elm_Object_Item *it;
+ Evas_Object *fp = data;
+ it = elm_flipselector_first_item_get(fp);
+ it = elm_flipselector_item_next_get(it);
+ it = elm_flipselector_item_next_get(it);
++=======
+ _last_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Elm_Object_Item *it;
+ Evas_Object *fp = data;
+ it = elm_flipselector_last_item_get(fp);
+ elm_flipselector_item_selected_set(it, EINA_TRUE);
+ }
+
+ void
+ _third_from_end_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Elm_Object_Item *it;
+ Evas_Object *fp = data;
+ it = elm_flipselector_last_item_get(fp);
+ it = elm_flipselector_item_prev_get(it);
+ it = elm_flipselector_item_prev_get(it);
++>>>>>>> remotes/origin/upstream
elm_flipselector_item_selected_set(it, EINA_TRUE);
}
}
void
++<<<<<<< HEAD
++=======
+ slider_change_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *fl = (Evas_Object *)data;
+
+ double val = elm_slider_value_get(obj);
+ elm_flipselector_first_interval_set(fl, val);
+ }
+
+ void
+ flip_next_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *fp = data;
+ elm_flipselector_flip_next(fp);
+ }
+
+ void
+ flip_prev_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *fp = data;
+ elm_flipselector_flip_prev(fp);
+ }
+
+ void
++>>>>>>> remotes/origin/upstream
test_flipselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
char buf[8];
unsigned int i;
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *bx, *fp, *bt;
++=======
+ Evas_Object *win, *bg, *bx, *fp, *bt, *bx2, *sl;
++>>>>>>> remotes/origin/upstream
static const char *lbl[] = {
"Elementary",
"Evas",
elm_box_pack_end(bx, fp);
evas_object_show(fp);
++<<<<<<< HEAD
++=======
+ bx2 = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
++>>>>>>> remotes/origin/upstream
fp = elm_flipselector_add(win);
evas_object_smart_callback_add(fp, "underflowed", _overflow_cb, NULL);
evas_object_smart_callback_add(fp, "overflowed", _underflow_cb, NULL);
evas_object_size_hint_weight_set(fp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ for (i = 2099; i >= 1990; i--)
++=======
+ for (i = 1990; i <= 2099; i++)
++>>>>>>> remotes/origin/upstream
{
snprintf(buf, 8, "%d", i);
elm_flipselector_item_append(fp, buf, _sel_cb, NULL);
}
++<<<<<<< HEAD
+ elm_box_pack_end(bx, fp);
+ evas_object_show(fp);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Select 2097");
+ evas_object_smart_callback_add(bt, "clicked", _third_cb, fp);
++=======
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Flip Prev");
+ evas_object_smart_callback_add(bt, "clicked", flip_prev_cb, fp);
+
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bx2, fp);
+ evas_object_show(fp);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Flip Next");
+ evas_object_smart_callback_add(bt, "clicked", flip_next_cb, fp);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ sl = elm_slider_add(win);
+ elm_object_text_set(sl, "Flip Iterval:");
+ elm_slider_unit_format_set(sl, "%1.2f");
+ elm_slider_min_max_set(sl, 0, 3.0);
+ elm_slider_value_set(sl, 0.85);
+ evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_pack_end(bx, sl);
+ evas_object_show(sl);
+ evas_object_smart_callback_add(sl, "changed", slider_change_cb, fp);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Select Last");
+ evas_object_smart_callback_add(bt, "clicked", _last_cb, fp);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Select 2097");
+ evas_object_smart_callback_add(bt, "clicked", _third_from_end_cb, fp);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, bt);
evas_object_show(bt);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "This is a single line");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, en);
my_show(en);
}
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 1, 1);
++=======
+ elm_scroller_bounce_set(sc, EINA_TRUE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_scroller_content_min_limit(sc, 1, 1);
elm_box_pack_end(bx2, sc);
my_show(sc);
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL,
EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 0, 1);
++=======
+ elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_scroller_content_min_limit(sc, 1, 0);
elm_box_pack_end(bx2, sc);
my_show(sc);
Evas_Object *newfocus = (Evas_Object *)edje_object_part_object_get(ed, "sky");
const char *type = evas_object_type_get(newfocus);
++<<<<<<< HEAD
+ printf("evas_object_focus_set(%p, 1) %s\n", newfocus, type);
++=======
+ printf("evas_object_focus_set(%p, EINA_TRUE) %s\n", newfocus, type);
++>>>>>>> remotes/origin/upstream
evas_object_focus_set(newfocus, EINA_TRUE);;
}
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en, "Scrolled Entry that should get focus");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(en, "Scrolled Entry that should get focus");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_part_content_set(ly, "element2", en);
bt = elm_button_add(ly);
evas_object_smart_callback_add(en, "unfocused", _unfoc, NULL);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_start(bx, en);
evas_object_show(en);
}
evas_object_smart_callback_add(en, "unfocused", _unfoc, NULL);
evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, en);
evas_object_show(en);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+
+ static void
+ highlight_enabled_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ elm_config_focus_highlight_enabled_set(elm_check_state_get(obj));
+ }
+
+ static void
+ highlight_animate_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ elm_config_focus_highlight_animate_set(elm_check_state_get(obj));
+ }
+
+ static void
+ custom_chain_unset_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *c, *child = NULL;
+ Evas_Object *bx = (Evas_Object *)data;
+ Eina_List *l, *children = NULL, *custom_chain = NULL;
+ int i = 0;
+
+ if (elm_check_state_get(obj))
+ {
+ children = elm_box_children_get(bx);
+ EINA_LIST_FOREACH(children, l, c)
+ {
+ if (i == 0)
+ {
+ child = c;
+ custom_chain = eina_list_append(custom_chain, c);
+ elm_object_focus_custom_chain_set(bx, custom_chain);
+ }
+ else if (i == 1) elm_object_focus_custom_chain_prepend(bx, c, child);
+ else if (i == 2)
+ {
+ elm_object_focus_custom_chain_append(bx, c, child);
+ child = c;
+ }
+ else if (i == 3) elm_object_focus_custom_chain_prepend(bx, c, child);
+ i++;
+ }
+ }
+ else
+ {
+ if (!elm_object_focus_custom_chain_get(bx)) return;
+ elm_object_focus_custom_chain_unset(bx);
+ }
+ }
+
+ static void
+ create_win_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gd, *bt;
+
+ win = elm_win_util_standard_add("test focus", "Test Focus");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ gd = elm_grid_add(win);
+ elm_grid_size_set(gd, 100, 100);
+ evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gd);
+ evas_object_show(gd);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Button 1");
+ elm_grid_pack(gd, bt, 10, 10, 80, 20);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Button 2");
+ elm_grid_pack(gd, bt, 10, 30, 80, 20);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Button 3");
+ elm_grid_pack(gd, bt, 10, 50, 80, 20);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Button 4");
+ elm_grid_pack(gd, bt, 10, 70, 80, 20);
+ evas_object_show(bt);
+
+ evas_object_resize(win, 160, 160);
+ evas_object_show(win);
+ }
+
+ void
+ test_focus4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gd, *tg, *bt;
+ Evas_Object *lb, *bt1, *bt2, *bt3, *bt4, *bx;
+ Eina_List *custom_chain = NULL;
+
+ win = elm_win_util_standard_add("focus4", "Focus 4");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
+ elm_config_focus_highlight_enabled_set(EINA_TRUE);
+ elm_config_focus_highlight_animate_set(EINA_TRUE);
+
+ /* First Example - Using Focus Highlight */
+ gd = elm_grid_add(win);
+ elm_grid_size_set(gd, 100, 100);
+ evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gd);
+ evas_object_show(gd);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Focus Highlight Enabled");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", highlight_enabled_cb, NULL);
+ elm_grid_pack(gd, tg, 10, 10, 50, 10);
+ evas_object_show(tg);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Focus Highlight Animate");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", highlight_animate_cb, NULL);
+ elm_grid_pack(gd, tg, 10, 20, 50, 10);
+ evas_object_show(tg);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Create Window");
+ elm_grid_pack(gd, bt, 10, 30, 80, 10);
+ evas_object_smart_callback_add(bt, "clicked", create_win_bt_clicked, NULL);
+ evas_object_show(bt);
+
+ /* Second Example - Using Custom Chain */
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "Custom Chain: Please use tab key to check");
+ evas_object_size_hint_weight_set(lb, 0.0, 0.0);
+ evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_grid_pack(gd, lb, 10, 45, 80, 5);
+ evas_object_show(lb);
+
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ bt1 = elm_button_add(win);
+ elm_object_text_set(bt1, "Button 1");
+ evas_object_size_hint_weight_set(bt1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt1, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, bt1);
+ evas_object_show(bt1);
+
+ bt2 = elm_button_add(win);
+ elm_object_text_set(bt2, "Button 2");
+ evas_object_size_hint_weight_set(bt2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, bt2);
+ evas_object_show(bt2);
+
+ bt3 = elm_button_add(win);
+ elm_object_text_set(bt3, "Button 3");
+ evas_object_size_hint_weight_set(bt3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt3, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, bt3);
+ evas_object_show(bt3);
+
+ bt4 = elm_button_add(win);
+ elm_object_text_set(bt4, "Button 4");
+ evas_object_size_hint_weight_set(bt4, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt4, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, bt4);
+ evas_object_show(bt4);
+
+ custom_chain = eina_list_append(custom_chain, bt2);
+ custom_chain = eina_list_append(custom_chain, bt1);
+ custom_chain = eina_list_append(custom_chain, bt4);
+ custom_chain = eina_list_append(custom_chain, bt3);
+ elm_object_focus_custom_chain_set(bx, custom_chain);
+
+ elm_grid_pack(gd, bx, 10, 50, 80, 30);
+ evas_object_show(bx);
+
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Custom Chain");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", custom_chain_unset_cb, bx);
+ elm_grid_pack(gd, tg, 10, 80, 40, 10);
+ evas_object_show(tg);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
++>>>>>>> remotes/origin/upstream
#endif
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include <Elementary_Cursor.h>
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+
+ static Elm_Gengrid_Item_Class *gic;
+ static Elm_Gengrid_Item_Class ggic;
+
+ Evas_Object *grid_content_get(void *data, Evas_Object *obj, const char *part);
+ char *grid_text_get(void *data, Evas_Object *obj __UNUSED__,
+ const char *part __UNUSED__);
+ Eina_Bool grid_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__,
+ const char *part __UNUSED__);
+ void grid_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__);
+
++>>>>>>> remotes/origin/upstream
typedef struct _Testitem
{
Elm_Object_Item *item;
int onoff;
} Testitem;
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Evas_Object *box; /* Use this to get box content */
+ Evas_Object *grid;
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ GRID_ALIGN_SET,
+ GRID_BRING_IN,
+ GRID_NO_SELECT_MODE,
+ GRID_NO_BOUNCE,
+ GRID_PAGE_RELATIVE,
+ GRID_PAGE_SIZE,
+ GRID_TOOLTIP_SET_TEXT,
+ GRID_TOOLTIP_UNSET,
+ GRID_ITEM_CLASS_SET,
+ GRID_ITEM_UPDATE_SET,
+ GRID_PAGE_BRING_IN,
+ GRID_PAGE_SHOW,
+ GRID_TOOLTIP_CONTENT_CB,
+ GRID_TOOLTIP_STYLE_SET,
+ GRID_TOOLTIP_WINDOW_MODE_SET,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ Evas_Object *grid = api->box;
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case GRID_ALIGN_SET: /* 0 */
+ elm_gengrid_align_set(grid, 0.2, 0.8);
+ break;
+
+ case GRID_BRING_IN: /* 1 */
+ elm_gengrid_item_bring_in(elm_gengrid_first_item_get(grid), ELM_GENGRID_ITEM_SCROLLTO_IN);
+ break;
+
+ case GRID_NO_SELECT_MODE: /* 2 */
+ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_NONE);
+ break;
+
+ case GRID_NO_BOUNCE: /* 3 */
+ elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_FALSE);
+ break;
+
+ case GRID_PAGE_RELATIVE: /* 4 */
+ elm_gengrid_bounce_set(grid, EINA_TRUE, EINA_TRUE);
+ elm_gengrid_page_relative_set(grid, 0.5, 0.5);
+ break;
+
+ case GRID_PAGE_SIZE: /* 5 */
+ elm_gengrid_page_size_set(grid, 50, 25);
+ break;
+
+ case GRID_TOOLTIP_SET_TEXT: /* 6 */
+ {
+ Elm_Object_Item *item = elm_gengrid_first_item_get(grid);
+ elm_gengrid_item_tooltip_text_set(item, "This is the first item");
+ }
+ break;
+
+ case GRID_TOOLTIP_UNSET: /* 7 */
+ {
+ Elm_Object_Item *item = elm_gengrid_first_item_get(grid);
+ elm_gengrid_item_tooltip_unset(item);
+ }
+ break;
+
+ case API_STATE_LAST:
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
++>>>>>>> remotes/origin/upstream
static const char *img[9] =
{
"panel_01.jpg",
"wood_01.jpg",
};
++<<<<<<< HEAD
+static Elm_Gengrid_Item_Class gic, ggic;
+
++=======
+ static const char *cur[4] =
+ {
+ ELM_CURSOR_CIRCLE,
+ ELM_CURSOR_CLOCK,
+ ELM_CURSOR_COFFEE_MUG,
+ ELM_CURSOR_CROSS,
+ };
+
+ static int n_current_pic = 0;
++>>>>>>> remotes/origin/upstream
static void
_horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
const Testitem *ti = data;
if (!strcmp(part, "elm.swallow.icon"))
{
++<<<<<<< HEAD
+
+ Evas_Object *icon = elm_bg_add(obj);
+ elm_bg_file_set(icon, ti->path, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(icon);
+ return icon;
+ }
+ else if (!strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object *ck;
+ ck = elm_check_add(obj);
+ evas_object_propagate_events_set(ck, 0);
+ elm_check_state_set(ck, ti->onoff);
+ evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
+ evas_object_show(ck);
+ return ck;
++=======
+ Evas_Object *icon = elm_bg_add(obj);
+ elm_bg_file_set(icon, ti->path, NULL);
+ evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(icon);
+ return icon;
+ }
+ else if (!strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object *ck;
+ ck = elm_check_add(obj);
+ evas_object_propagate_events_set(ck, 0);
+ elm_check_state_set(ck, ti->onoff);
+ evas_object_smart_callback_add(ck, "changed", grid_item_check_changed, data);
+ evas_object_show(ck);
+ return ck;
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
printf("sel item data [%p] on grid obj [%p], pointer [%p]\n", data, obj, event_info);
}
++<<<<<<< HEAD
+void
+test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *grid;
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ static void
+ always_select_mode_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ api_data *api = data;
+ if (elm_check_state_get(obj))
+ elm_gengrid_highlight_mode_set(api->grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_gengrid_highlight_mode_set(api->grid, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+
+ static void
+ multi_select_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ api_data *api = data;
+ elm_gengrid_multi_select_set(api->grid, elm_check_state_get(obj));
+ }
+
+ static void
+ clear_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ api_data *api = data;
+ elm_gengrid_clear(api->grid);
+ }
+
+ static Evas_Object *
+ create_gengrid(Evas_Object *obj, int items)
+ {
+ Evas_Object *grid = NULL;
++>>>>>>> remotes/origin/upstream
static Testitem ti[144];
int i, n;
char buf[PATH_MAX];
++<<<<<<< HEAD
+ win = elm_win_add(NULL, "gengrid", ELM_WIN_BASIC);
+ elm_win_title_set(win, "GenGrid");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ grid = elm_gengrid_add(win);
++=======
+ grid = elm_gengrid_add(obj);
++>>>>>>> remotes/origin/upstream
elm_gengrid_item_size_set(grid, 150, 150);
elm_gengrid_horizontal_set(grid, EINA_FALSE);
elm_gengrid_multi_select_set(grid, EINA_TRUE);
evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+
+ gic.item_style = "default";
+ gic.func.text_get = grid_text_get;
+ gic.func.content_get = grid_content_get;
+ gic.func.state_get = grid_state_get;
+ gic.func.del = grid_del;
+
+ n = 0;
+ for (i = 0; i < 12 * 12; i++)
+ {
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
+ n = (n + 1) % 9;
+ ti[i].mode = i;
+ ti[i].path = eina_stringshare_add(buf);
+ ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
+ if (!(i % 5))
+ elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
+ }
+
+ evas_object_show(grid);
+ elm_win_resize_object_add(win, grid);
++=======
+ evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+ gic->func.text_get = grid_text_get;
+ gic->func.content_get = grid_content_get;
+ gic->func.state_get = grid_state_get;
+ gic->func.del = grid_del;
+
+ n = 0;
+ for (i = 0; i < items; i++)
+ {
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
+ n = (n + 1) % 9;
+ ti[i].mode = i;
+ ti[i].path = eina_stringshare_add(buf);
+ ti[i].item = elm_gengrid_item_append(grid, gic, &(ti[i]), grid_sel, NULL);
+ if (!(i % 5))
+ elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
+ }
+ elm_gengrid_item_class_free(gic);
+
+ return grid;
+ }
+
+ static void
+ restore_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ api_data *api = data;
+ elm_box_clear(api->box);
+ api->grid = create_gengrid(obj, (12 * 12));
+ elm_box_pack_end(api->box, api->grid);
+ evas_object_show(api->grid);
+ }
+
+ static void
+ filled_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *box = (Evas_Object *)data;
+ Evas_Object *grid;
+
+ elm_box_clear(box);
+ grid = create_gengrid(box, 1);
+ elm_gengrid_filled_set(grid, elm_check_state_get(obj));
+ elm_box_pack_end(box, grid);
+ evas_object_show(grid);
+ }
+
+ static void
+ filled_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *box, *content_box, *grid, *tg;
+
+ win = elm_win_util_standard_add("test filled", "Test Filled");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ content_box = elm_box_add(win);
+ elm_win_resize_object_add(win, content_box);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(box, content_box);
+ evas_object_show(content_box);
+
+ grid = create_gengrid(win, 1);
+ elm_box_pack_end(content_box, grid);
+ evas_object_show(grid);
+
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Filled");
+ evas_object_smart_callback_add(tg, "changed", filled_cb, content_box);
+ elm_box_pack_end(box, tg);
+ evas_object_show(tg);
+
+ evas_object_resize(win, 450, 200);
+ evas_object_show(win);
+ }
+
+ static void
+ cursor_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *grid = (Evas_Object *)data;
+ Elm_Object_Item *item = NULL;
+ int i = 0;
+
+ for ((item = elm_gengrid_first_item_get(grid)); item;
+ (item = elm_gengrid_item_next_get(item)))
+ {
+ if(!elm_check_state_get(obj))
+ {
+ elm_gengrid_item_cursor_unset(item);
+ continue;
+ }
+
+ elm_gengrid_item_cursor_set(item, cur[i]);
+ elm_gengrid_item_cursor_engine_only_set(item, EINA_FALSE);
+ i++;
+ }
+ }
+
+ static void
+ cursor_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *box, *content_box, *hbox, *grid, *tg;
+
+ win = elm_win_util_standard_add("test cursor", "Test Cursor");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ content_box = elm_box_add(win);
+ elm_win_resize_object_add(win, content_box);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(box, content_box);
+ evas_object_show(content_box);
+
+ grid = create_gengrid(win, 4);
+ elm_box_pack_end(content_box, grid);
+ evas_object_show(grid);
+
+ hbox = elm_box_add(win);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Cursor");
+ evas_object_smart_callback_add(tg, "changed", cursor_cb, grid);
+ elm_box_pack_end(hbox, tg);
+ evas_object_show(tg);
+
+ elm_box_pack_end(box, hbox);
+ evas_object_show(hbox);
+
+ evas_object_resize(win, 450, 450);
+ evas_object_show(win);
+ }
+
+ void
+ test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bt, *content_box, *bxx, *bx, *tg;
+ api_data *api = calloc(1, sizeof(api_data));
+
+ win = elm_win_add(NULL, "gengrid", ELM_WIN_BASIC);
+ elm_win_title_set(win, "GenGrid");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ bxx = elm_box_add(win);
+ api->box = bxx;
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ content_box = elm_box_add(win);
+ api->box = content_box;
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(content_box);
+
+ /* Create GenGrid */
+ api->grid = create_gengrid(win, (12 * 12));
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked,
+ (void *)api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(content_box, api->grid);
+ elm_box_pack_end(bxx, content_box);
+ evas_object_show(api->grid);
+
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ elm_box_pack_end(bxx, bx);
+ evas_object_show(bx);
+
+ /* Gengrid Always Select Mode Test */
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Always Select Mode");
+ evas_object_smart_callback_add(tg, "changed", always_select_mode_cb,
+ (void *)api);
+ elm_box_pack_end(bx, tg);
+ evas_object_show(tg);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Multi Select Mode");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", multi_select_cb,
+ (void *)api);
+ elm_box_pack_end(bx, tg);
+ evas_object_show(tg);
+
+ /* Gengrid Clear Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Clear");
+ evas_object_smart_callback_add(bt, "clicked", clear_bt_clicked,
+ (void *)api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Restore");
+ evas_object_smart_callback_add(bt, "clicked", restore_bt_clicked,
+ (void *) api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ /* Gengrid Filled Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Check Filled");
+ evas_object_smart_callback_add(bt, "clicked", filled_bt_clicked, NULL);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ /* Item Cursor Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Check Cursor");
+ evas_object_smart_callback_add(bt, "clicked", cursor_bt_clicked,
+ (void *) api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 600, 600);
evas_object_show(win);
sel = elm_gengrid_selected_item_get(grid);
if (!sel)
return;
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
+ ti = malloc(sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_insert_before(grid, &gic, ti, sel, grid_sel,
++=======
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n_current_pic]);
+ n_current_pic = ((n_current_pic +1) % 9);
+ ti = calloc(1, sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_insert_before(grid, gic, ti, sel, grid_sel,
+ NULL);
+ }
+
+ static int
+ compare_cb(const void *data1, const void *data2)
+ {
+ Testitem *ti1 = (Testitem *)data1;
+ Testitem *ti2 = (Testitem *)data2;
+ return strlen(ti1->path) - strlen(ti2->path);
+ }
+
+ static void
+ _sorted_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Testitem *ti;
+ Evas_Object *grid = data;
+ char buf[PATH_MAX];
+
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n_current_pic]);
+ n_current_pic = ((n_current_pic +1) % 9);
+ ti = calloc(1, sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_sorted_insert(grid, gic, ti, compare_cb, grid_sel,
++>>>>>>> remotes/origin/upstream
NULL);
}
sel = elm_gengrid_selected_item_get(grid);
if (!sel)
return;
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
+ ti = malloc(sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_insert_after(grid, &gic, ti, sel, grid_sel,
++=======
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n_current_pic]);
+ n_current_pic = ((n_current_pic +1) % 9);
+ ti = calloc(1, sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_insert_after(grid, gic, ti, sel, grid_sel,
++>>>>>>> remotes/origin/upstream
NULL);
}
Evas_Object *grid = data;
char buf[PATH_MAX];
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
+ ti = malloc(sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_prepend(grid, &gic, ti, grid_sel, NULL);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n_current_pic]);
+ n_current_pic = ((n_current_pic +1) % 9);
+ ti = calloc(1, sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_prepend(grid, gic, ti, grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *grid = data;
char buf[PATH_MAX];
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[rand() % 9]);
+ ti = malloc(sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_append(grid, &gic, ti, grid_sel, NULL);
++=======
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n_current_pic]);
+ n_current_pic = ((n_current_pic +1) % 9);
+ ti = calloc(1, sizeof(*ti));
+ ti->mode = 0;
+ ti->path = eina_stringshare_add(buf);
+ ti->item = elm_gengrid_item_append(grid, gic, ti, grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_show(bt);
bt = elm_button_add(win);
++<<<<<<< HEAD
++=======
+ elm_object_text_set(bt, "Sorted insert");
+ evas_object_smart_callback_add(bt, "clicked", _sorted_bt_clicked, grid);
+ elm_box_pack_end(hbx, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(bt, "Delete");
evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid);
elm_box_pack_end(hbx, bt);
elm_box_pack_end(hbx, ck);
evas_object_show(ck);
++<<<<<<< HEAD
+ gic.item_style = "default";
+ gic.func.text_get = grid_text_get;
+ gic.func.content_get = grid_content_get;
+ gic.func.state_get = grid_state_get;
+ gic.func.del = grid_del;
++=======
+ gic = elm_gengrid_item_class_new();
+
+ gic->item_style = "default";
+ gic->func.text_get = grid_text_get;
+ gic->func.content_get = grid_content_get;
+ gic->func.state_get = grid_state_get;
+ gic->func.del = grid_del;
+
+ /* item_class_ref is needed for gic. some items can be added in callbacks */
+ elm_gengrid_item_class_ref(gic);
+ elm_gengrid_item_class_free(gic);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 600, 600);
evas_object_show(win);
evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ gic.item_style = "default";
+ gic.func.text_get = grid_text_get;
+ gic.func.content_get = grid_content_get;
+ gic.func.state_get = grid_state_get;
+ gic.func.del = grid_del;
++=======
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+ gic->func.text_get = grid_text_get;
+ gic->func.content_get = grid_content_get;
+ gic->func.state_get = grid_state_get;
+ gic->func.del = grid_del;
++>>>>>>> remotes/origin/upstream
ggic.item_style = "group_index";
ggic.func.text_get = grid_text_get;
ggic.func.state_get = NULL;
ggic.func.del = NULL;
++<<<<<<< HEAD
+
+ n = 0;
+ for (i = 0; i < 12 * 12; i++)
+ {
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
+ n = (n + 1) % 9;
+ ti[i].mode = i;
+ ti[i].path = eina_stringshare_add(buf);
+ if (i == 0 || i == 18 || i == 53 || i == 100)
+ //if (i == 0 || i == 18)
+ ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL);
+ else
+ ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
+ if (!(i % 5))
+ elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
+ }
++=======
+ n = 0;
+ for (i = 0; i < 12 * 12; i++)
+ {
+ snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
+ n = (n + 1) % 9;
+ ti[i].mode = i;
+ ti[i].path = eina_stringshare_add(buf);
+ if (i == 0 || i == 18 || i == 53 || i == 100)
+ //if (i == 0 || i == 18)
+ ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL);
+ else
+ ti[i].item = elm_gengrid_item_append(grid, gic, &(ti[i]), grid_sel, NULL);
+ if (!(i % 5))
+ elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
+ }
+ elm_gengrid_item_class_free(gic);
++>>>>>>> remotes/origin/upstream
evas_object_show(grid);
elm_win_resize_object_add(win, grid);
#include <Elementary.h>
++<<<<<<< HEAD
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+#ifndef ELM_LIB_QUICKLAUNCH
+
++=======
+ #include <Elementary_Cursor.h>
+ #include "test.h"
+ #ifdef HAVE_CONFIG_H
+ #include "elementary_config.h"
+ #endif
+ #ifndef ELM_LIB_QUICKLAUNCH
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ HORIZONTAL_SET,
+ NO_SELECT_MODE_SET,
+ COMPRESS_MODE_SET,
+ BOUNCE_SET,
+ HOMOGENEOUS_SET,
+ SCROLLER_POLICY_SET,
+ TOOLTIP_TEXT_SET,
+ ITEM_CURSOR_SET,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ Evas_Object *gl = eina_list_nth(items, 0); /* Genlist is the first item */
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ {/* Put all api-changes under switch */
+ case HORIZONTAL_SET: /* 0 */
+ elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
+ break;
+
+ case NO_SELECT_MODE_SET: /* 1 */
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_NONE);
+ elm_genlist_mode_set(gl, ELM_LIST_SCROLL); /* Back to default */
+ break;
+
+ case COMPRESS_MODE_SET: /* 2 */
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
+ break;
+
+ case BOUNCE_SET: /* 3 */
+ elm_genlist_bounce_set(gl, EINA_FALSE, EINA_FALSE);
+ break;
+
+ case HOMOGENEOUS_SET: /* 4 */
+ elm_genlist_bounce_set(gl, EINA_TRUE, EINA_TRUE); /* Back to default */
+ elm_genlist_homogeneous_set(gl, EINA_TRUE);
+ break;
+
+ case SCROLLER_POLICY_SET: /* 5 */
+ elm_genlist_homogeneous_set(gl, EINA_FALSE); /* Back to default */
+ elm_genlist_scroller_policy_set(gl, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
+ break;
+
+ case TOOLTIP_TEXT_SET: /* 6 */
+ {
+ elm_genlist_item_tooltip_text_set(elm_genlist_first_item_get(gl), "Tooltip text from API");
+ elm_genlist_item_bring_in(elm_genlist_first_item_get(gl),
+ ELM_GENLIST_ITEM_SCROLLTO_IN);
+ }
+ break;
+
+ case ITEM_CURSOR_SET: /* 7 */
+ elm_genlist_item_cursor_set(elm_genlist_first_item_get(gl), ELM_CURSOR_HAND2);
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
++>>>>>>> remotes/origin/upstream
/* Hint:
* In this example some calls to elm_genlist_item_append() are used which give the
* value of an int as 'item data' and 'func data' after casting into (void*). For
Elm_Object_Item *item;
int mode;
int onoff;
++<<<<<<< HEAD
+} Testitem;
+
+
+static Elm_Genlist_Item_Class itc1;
++=======
+ Eina_Bool checked;
+ } Testitem;
+
+ static Elm_Genlist_Item_Class *itc1;
+ static Elm_Genlist_Item_Class *itc15;
++>>>>>>> remotes/origin/upstream
char *gl_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
char buf[256];
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
return ic;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Eina_Bool gl_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
++<<<<<<< HEAD
+void gl_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+{
+}
++=======
++>>>>>>> remotes/origin/upstream
static void
gl_sel(void *data, Evas_Object *obj, void *event_info)
Elm_Object_Item *gli;
gli = elm_genlist_at_xy_item_get(gl, ev->cur.canvas.x, ev->cur.canvas.y, &where);
if (gli)
++<<<<<<< HEAD
+ printf("over %p, where %i\n", elm_genlist_item_data_get(gli), where);
++=======
+ printf("over %p, where %i\n", elm_object_item_data_get(gli), where);
++>>>>>>> remotes/origin/upstream
else
printf("over none, where %i\n", where);
}
static void
_bt50_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_genlist_item_bring_in(data);
++=======
+ elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
_bt1500_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_genlist_item_middle_bring_in(data);
++=======
+ elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
++>>>>>>> remotes/origin/upstream
}
static void
printf("longpress %p\n", event_info);
}
++<<<<<<< HEAD
+void
+test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *gl, *bt_50, *bt_1500, *bx;
+ Evas_Object *over;
+ Elm_Object_Item *gli;
+ int i;
+
+ win = elm_win_add(NULL, "genlist", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_genlist(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt;
+ Evas_Object *over;
+ Elm_Object_Item *gli;
+ int i;
+ api_data *api = calloc(1, sizeof(api_data));
+
+ win = elm_win_util_standard_add("genlist", "Genlist");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
+
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
++>>>>>>> remotes/origin/upstream
gl = elm_genlist_add(win);
evas_object_smart_callback_add(gl, "selected", _gl_selected, NULL);
evas_object_smart_callback_add(gl, "clicked,double", _gl_double_clicked, NULL);
evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
// FIXME: This causes genlist to resize the horiz axis very slowly :(
// Reenable this and resize the window horizontally, then try to resize it back
++<<<<<<< HEAD
+ //elm_genlist_horizontal_mode_set(gl, ELM_LIST_LIMIT);
++=======
+ //elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
evas_object_size_hint_weight_set(over, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, over);
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
++=======
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
++>>>>>>> remotes/origin/upstream
bt_50 = elm_button_add(win);
elm_object_text_set(bt_50, "Go to 50");
for (i = 0; i < 2000; i++)
{
++<<<<<<< HEAD
+ gli = elm_genlist_item_append(gl, &itc1,
++=======
+ gli = elm_genlist_item_append(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
else if (i == 1500)
evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli);
}
++<<<<<<< HEAD
++=======
+ elm_genlist_item_class_free(itc1);
+
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 480, 800);
evas_object_show(win);
}
Evas_Object *gl = data;
static int i = 0;
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+
+ elm_genlist_item_append(gl, &itc1,
++=======
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+
+ elm_genlist_item_append(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
static int i = 0;
Elm_Object_Item *gli_selected;
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if(!gli_selected)
++=======
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if (!gli_selected)
++>>>>>>> remotes/origin/upstream
{
printf("no item selected\n");
return ;
}
++<<<<<<< HEAD
+ elm_genlist_item_insert_before(gl, &itc1,
++=======
+ elm_genlist_item_insert_before(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
NULL/* parent */,
gli_selected /* item before */,
static int i = 0;
Elm_Object_Item *gli_selected;
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if(!gli_selected)
++=======
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if (!gli_selected)
++>>>>>>> remotes/origin/upstream
{
printf("no item selected\n");
return ;
}
++<<<<<<< HEAD
+ elm_genlist_item_insert_after(gl, &itc1,
++=======
+ elm_genlist_item_insert_after(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
NULL/* parent */,
gli_selected /* item after */,
printf("no item selected\n");
return;
}
++<<<<<<< HEAD
+ elm_genlist_item_del(gli);
++=======
+ elm_object_item_del(gli);
++>>>>>>> remotes/origin/upstream
}
static void
printf("no item selected\n");
return;
}
++<<<<<<< HEAD
+ elm_genlist_item_disabled_set(gli, 1);
+ elm_genlist_item_selected_set(gli, 0);
++=======
+ elm_object_item_disabled_set(gli, EINA_TRUE);
+ elm_genlist_item_selected_set(gli, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_genlist_item_update(gli);
}
Evas_Object *gl = data;
Elm_Object_Item *gli = elm_genlist_first_item_get(gl);
if (!gli) return;
++<<<<<<< HEAD
+ elm_genlist_item_show(gli);
++=======
+ elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
elm_genlist_item_selected_set(gli, 1);
}
Evas_Object *gl = data;
Elm_Object_Item *gli = elm_genlist_last_item_get(gl);
if (!gli) return;
++<<<<<<< HEAD
+ elm_genlist_item_show(gli);
++=======
+ elm_genlist_item_show(gli, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
elm_genlist_item_selected_set(gli, 1);
}
static Eina_Bool
my_gl_flush_delay(void *data __UNUSED__)
{
++<<<<<<< HEAD
+ elm_all_flush();
++=======
+ elm_cache_all_flush();
++>>>>>>> remotes/origin/upstream
return ECORE_CALLBACK_CANCEL;
}
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(gl);
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+
+ gli[0] = elm_genlist_item_append(gl, &itc1,
+ (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1001/* func data */);
+ gli[1] = elm_genlist_item_append(gl, &itc1,
+ (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1002/* func data */);
+ gli[2] = elm_genlist_item_append(gl, &itc1,
+ (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1003/* func data */);
+ gli[3] = elm_genlist_item_prepend(gl, &itc1,
+ (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1004/* func data */);
+ gli[4] = elm_genlist_item_prepend(gl, &itc1,
+ (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1005/* func data */);
+ gli[5] = elm_genlist_item_insert_before(gl, &itc1,
+ (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1006/* func data */);
+ gli[6] = elm_genlist_item_insert_after(gl, &itc1,
+ (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1007/* func data */);
+
++=======
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+
+ gli[0] = elm_genlist_item_append(gl, itc1,
+ (void *)1001/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1001/* func data */);
+ gli[1] = elm_genlist_item_append(gl, itc1,
+ (void *)1002/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1002/* func data */);
+ gli[2] = elm_genlist_item_append(gl, itc1,
+ (void *)1003/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1003/* func data */);
+ gli[3] = elm_genlist_item_prepend(gl, itc1,
+ (void *)1004/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1004/* func data */);
+ gli[4] = elm_genlist_item_prepend(gl, itc1,
+ (void *)1005/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+ (void *)1005/* func data */);
+ gli[5] = elm_genlist_item_insert_before(gl, itc1,
+ (void *)1006/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1006/* func data */);
+ gli[6] = elm_genlist_item_insert_after(gl, itc1,
+ (void *)1007/* item data */, NULL/* parent */, gli[2]/* rel */, ELM_GENLIST_ITEM_NONE,
+ gl_sel/* func */, (void *)1007/* func data */);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, gl);
bx2 = elm_box_add(win);
elm_box_pack_end(bx, bx3);
evas_object_show(bx3);
++<<<<<<< HEAD
++=======
+ /* item_class_ref is needed for itc1. some items can be added in callbacks */
+ elm_genlist_item_class_ref(itc1);
+ elm_genlist_item_class_free(itc1);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 320, 320);
evas_object_show(win);
/*************/
static Elm_Genlist_Item_Class itc2;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
char *gl2_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
const Testitem *tit = data;
snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
return strdup(buf);
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Evas_Object *gl2_content_get(void *data, Evas_Object *obj, const char *part)
{
const Testitem *tit = data;
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
return ic;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Eina_Bool gl2_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
++<<<<<<< HEAD
+void gl2_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+{
+}
++=======
++>>>>>>> remotes/origin/upstream
static void
my_gl_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
elm_genlist_item_update(tit->item);
}
++<<<<<<< HEAD
+void
+test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_add(NULL, "genlist3", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist 3");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ static void
+ my_gl_labels_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Testitem *tit = data;
+ tit->mode++;
+ elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_TEXT);
+ }
+
+ static void
+ my_gl_contents_update(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Testitem *tit = data;
+ tit->mode++;
+ elm_genlist_item_fields_update(tit->item, "*", ELM_GENLIST_ITEM_FIELD_CONTENT);
+ }
+
+ void
+ test_genlist3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_util_standard_add("genlist3", "Genlist 3");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
itc2.func.text_get = gl2_text_get;
itc2.func.content_get = gl2_content_get;
itc2.func.state_get = gl2_state_get;
++<<<<<<< HEAD
+ itc2.func.del = gl2_del;
++=======
+ itc2.func.del = NULL;
++>>>>>>> remotes/origin/upstream
tit[0].mode = 0;
tit[0].item = elm_genlist_item_append(gl, &itc2,
evas_object_show(bt);
bt = elm_button_add(win);
++<<<<<<< HEAD
+ elm_object_text_set(bt, "[2]");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[1]));
++=======
+ elm_object_text_set(bt, "labels");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_labels_update, &(tit[1]));
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
evas_object_show(bt);
bt = elm_button_add(win);
++<<<<<<< HEAD
+ elm_object_text_set(bt, "[3]");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_update, &(tit[2]));
++=======
+ elm_object_text_set(bt, "contents");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_contents_update, &(tit[2]));
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(bx2, bt);
}
static Elm_Genlist_Item_Class itc3;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
char *gl3_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
const Testitem *tit = data;
snprintf(buf, sizeof(buf), "Item mode %i", tit->mode);
return strdup(buf);
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Evas_Object *gl3_content_get(void *data, Evas_Object *obj, const char *part)
{
const Testitem *tit = data;
}
return NULL;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Eina_Bool gl3_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
++<<<<<<< HEAD
+void gl3_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+{
+}
++=======
++>>>>>>> remotes/origin/upstream
void
test_genlist4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_add(NULL, "genlist4", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist 4");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_util_standard_add("genlist4", "Genlist 4");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
gl = elm_genlist_add(win);
++<<<<<<< HEAD
+ elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
++=======
+ elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
++>>>>>>> remotes/origin/upstream
elm_genlist_multi_select_set(gl, 1);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
itc3.func.text_get = gl3_text_get;
itc3.func.content_get = gl3_content_get;
itc3.func.state_get = gl3_state_get;
++<<<<<<< HEAD
+ itc3.func.del = gl3_del;
++=======
+ itc3.func.del = NULL;
++>>>>>>> remotes/origin/upstream
tit[0].mode = 0;
tit[0].item = elm_genlist_item_append(gl, &itc3,
}
static Elm_Genlist_Item_Class itc5;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
char *gl5_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
{
const Testitem *tit = data;
}
return strdup(buf);
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Evas_Object *gl5_content_get(void *data, Evas_Object *obj, const char *part)
{
const Testitem *tit = data;
ic = elm_icon_add(obj);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_show(ic);
elm_box_pack_end(bx, ic);
ic = elm_icon_add(obj);
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_show(ic);
elm_box_pack_end(bx, ic);
elm_box_horizontal_set(bx, EINA_TRUE);
}
return NULL;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Eina_Bool gl5_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
++<<<<<<< HEAD
+void gl5_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+{
+}
++=======
++>>>>>>> remotes/origin/upstream
static void
item_drag_up(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
void
test_genlist5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_add(NULL, "genlist5", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist 5");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *gl, *bx, *bx2, *bt;
+ static Testitem tit[3];
+
+ win = elm_win_util_standard_add("genlist5", "Genlist 5");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
gl = elm_genlist_add(win);
++<<<<<<< HEAD
+ elm_genlist_always_select_mode_set(gl, 1);
++=======
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(gl);
itc5.func.text_get = gl5_text_get;
itc5.func.content_get = gl5_content_get;
itc5.func.state_get = gl5_state_get;
++<<<<<<< HEAD
+ itc5.func.del = gl5_del;
++=======
+ itc5.func.del = NULL;
++>>>>>>> remotes/origin/upstream
tit[0].mode = 0;
tit[0].item = elm_genlist_item_append(gl, &itc5,
static void
gl4_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = (Elm_Object_Item *)event_info;
+ int depth = 0;
+
+ depth = elm_genlist_item_expanded_depth_get(it);
+ printf("expanded depth for selected item is %d\n", depth);
+
+}
+static void
+gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ Evas_Object *gl = elm_genlist_item_genlist_get(it);
+ int val = (int)(long)elm_genlist_item_data_get(it);
+ val *= 10;
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long)(val + 1)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long)(val + 2)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long)(val + 3)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
++=======
+ Elm_Object_Item *glit = event_info;
+ int depth = elm_genlist_item_expanded_depth_get(glit);
+ printf("expanded depth for selected item is %d\n", depth);
+ }
+
+ static void
+ gl4_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ int val = (int)(long) elm_object_item_data_get(glit);
+ val *= 10;
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long) (val + 1)/* item data */,
+ glit/* parent */, ELM_GENLIST_ITEM_NONE,
+ gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long) (val + 2)/* item data */,
+ glit/* parent */, ELM_GENLIST_ITEM_NONE,
+ gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)(long) (val + 3)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
++>>>>>>> remotes/origin/upstream
NULL/* func data */);
}
static void
gl4_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_subitems_clear(it);
++=======
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_subitems_clear(glit);
++>>>>>>> remotes/origin/upstream
}
static void
gl4_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 1);
+}
+static void
+gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, 0);
++=======
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_TRUE);
+ }
+
+ static void
+ gl4_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
char *gl4_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
return strdup(buf);
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Evas_Object *gl4_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
{
char buf[PATH_MAX];
}
return NULL;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
Eina_Bool gl4_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
return EINA_FALSE;
}
++<<<<<<< HEAD
+void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+{
++=======
+
+ void gl4_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+ {
+ printf("item deleted.\n");
++>>>>>>> remotes/origin/upstream
}
void
test_genlist6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
+
+ win = elm_win_add(NULL, "genlist-tree", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Tree");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *gl, *bx, *bx2, *bt;
+
+ win = elm_win_util_standard_add("genlist-tree", "Genlist Tree");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
itc4.func.del = gl4_del;
elm_genlist_item_append(gl, &itc4,
++<<<<<<< HEAD
+ (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
++=======
+ (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc4,
+ (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
++>>>>>>> remotes/origin/upstream
NULL/* func data */);
elm_genlist_item_append(gl, &itc4,
(void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
struct genlist7_data
{
++<<<<<<< HEAD
+ Evas_Object *win, *pager;
+};
+
+static Elm_Genlist_Item_Class itc7;
++=======
+ Evas_Object *win, *naviframe;
+ };
+
+ static Elm_Genlist_Item_Class itc7;
+
++>>>>>>> remotes/origin/upstream
static void
gl_sel7(void *data, Evas_Object *obj, void *event_info)
{
struct genlist7_data *info = data;
if (!info) return;
++<<<<<<< HEAD
+ elm_pager_content_pop(info->pager);
++=======
+ elm_naviframe_item_pop(info->naviframe);
++>>>>>>> remotes/origin/upstream
}
static void
entry = elm_entry_add(info->win);
elm_entry_scrollable_set(entry, EINA_TRUE);
elm_entry_editable_set(entry, EINA_FALSE);
++<<<<<<< HEAD
+ elm_entry_entry_set(entry, item_data);
++=======
+ elm_object_text_set(entry, item_data);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(entry);
elm_box_pack_start(box, entry);
elm_box_pack_end(box, button);
++<<<<<<< HEAD
+ elm_pager_content_push(info->pager, box);
++=======
+ elm_naviframe_item_simple_push(info->naviframe, box);
++>>>>>>> remotes/origin/upstream
}
void
test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *pager;
+ static struct genlist7_data info;
+ static Testitem tit[3];
+
+ win = elm_win_add(NULL, "genlist7", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist 7");
+ elm_win_autodel_set(win, EINA_TRUE);
+ info.win = win;
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ pager = elm_pager_add(win);
+ elm_win_resize_object_add(win, pager);
+ evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pager);
+ info.pager = pager;
++=======
+ Evas_Object *win, *gl, *naviframe;
+ static struct genlist7_data info;
+ static Testitem tit[3];
+
+ win = elm_win_util_standard_add("genlist7", "Genlist 7");
+ elm_win_autodel_set(win, EINA_TRUE);
+ info.win = win;
+
+ naviframe = elm_naviframe_add(win);
+ elm_win_resize_object_add(win, naviframe);
+ evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(naviframe);
+ info.naviframe = naviframe;
++>>>>>>> remotes/origin/upstream
gl = elm_genlist_add(win);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_smart_callback_add(gl, "swipe", test_genlist7_swipe, &info);
evas_object_show(gl);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, gl);
++=======
+ elm_naviframe_item_simple_push(naviframe, gl);
++>>>>>>> remotes/origin/upstream
itc2.item_style = "default";
itc2.func.text_get = gl2_text_get;
itc2.func.content_get = gl2_content_get;
itc2.func.state_get = gl2_state_get;
++<<<<<<< HEAD
+ itc2.func.del = gl2_del;
++=======
+ itc2.func.del = NULL;
++>>>>>>> remotes/origin/upstream
itc7.item_style = "double_label";
itc7.func.text_get = gl5_text_get;
itc7.func.content_get = gl5_content_get;
itc7.func.state_get = gl5_state_get;
++<<<<<<< HEAD
+ itc7.func.del = gl5_del;
++=======
+ itc7.func.del = NULL;
++>>>>>>> remotes/origin/upstream
tit[0].mode = 0;
tit[0].item = elm_genlist_item_append(gl, &itc2,
/*************/
static Elm_Genlist_Item_Class itc_group;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
char *gl8_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
char buf[256];
static void
_bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_genlist_item_top_show(data);
+ //elm_genlist_item_show(data);
+ //elm_genlist_item_middle_show(data);
+}
+static void
+_bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ elm_genlist_item_top_bring_in(data);
++=======
+ elm_genlist_item_show(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+ //elm_genlist_item_show(data);
+ //elm_genlist_item_middle_show(data);
+ }
+
+ static void
+ _bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_genlist_item_bring_in(data, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++>>>>>>> remotes/origin/upstream
//elm_genlist_item_bring_in(data);
//elm_genlist_item_middle_bring_in(data);
}
void
test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
+ Elm_Object_Item *gli = NULL, *git = NULL;
+ int i, bt_num;
+
+ win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Group");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *gl, *bt[8], *bx, *bx2, *bx3;
+ Elm_Object_Item *gli = NULL, *git = NULL;
+ int i, bt_num;
+
+ win = elm_win_util_standard_add("genlist-group", "Genlist Group");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
++=======
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
++>>>>>>> remotes/origin/upstream
itc_group.item_style = "group_index";
itc_group.func.text_get = gl8_text_get;
itc_group.func.content_get = NULL;
itc_group.func.state_get = NULL;
++<<<<<<< HEAD
+ itc_group.func.del = gl_del;
++=======
+ itc_group.func.del = NULL;
++>>>>>>> remotes/origin/upstream
bx2 = elm_box_add(win);
elm_box_horizontal_set(bx2, EINA_TRUE);
ELM_GENLIST_ITEM_GROUP,
gl_sel/* func */,
(void *)(long)(i * 10)/* func data */);
++<<<<<<< HEAD
+ elm_genlist_item_display_only_set(git, EINA_TRUE);
+ }
+ else if (git)
+ {
+ gli = elm_genlist_item_append(gl, &itc1,
++=======
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ else if (git)
+ {
+ gli = elm_genlist_item_append(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
git/* parent */,
ELM_GENLIST_ITEM_NONE,
break;
}
}
++<<<<<<< HEAD
++=======
+ elm_genlist_item_class_free(itc1);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 480, 800);
evas_object_show(win);
static void
gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ Evas_Object *gl = elm_genlist_item_genlist_get(it);
+ int val = (int)(long)elm_genlist_item_data_get(it);
+ val *= 10;
+ elm_genlist_item_append(gl, &itc1,
+ (void *)(long)(val + 1)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)(long)(val + 2)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)(long)(val + 3)/* item data */, it/* parent */,
+ ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+}
+static void
+gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_subitems_clear(it);
++=======
+ Elm_Object_Item *glit = event_info;
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ int val = (int)(long) elm_object_item_data_get(glit);
+ val *= 10;
+ elm_genlist_item_append(gl, itc1,
+ (void *)(long) (val + 1)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)(long) (val + 2)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)(long) (val + 3)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
+ NULL/* func data */);
+ }
+
+ static void
+ gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_subitems_clear(glit);
++>>>>>>> remotes/origin/upstream
}
static void
gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, EINA_TRUE);
+}
+static void
+gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_expanded_set(it, EINA_FALSE);
++=======
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_TRUE);
+ }
+
+ static void
+ gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
void
test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bx;
+ Elm_Object_Item *git;
+
+ win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Group Tree");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *gl, *bx;
+ Elm_Object_Item *git;
+
+ win = elm_win_util_standard_add("genlist-group-tree", "Genlist Group Tree");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
++=======
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
++>>>>>>> remotes/origin/upstream
itc_group.item_style = "group_index";
itc_group.func.text_get = gl8_text_get;
itc_group.func.content_get = NULL;
itc_group.func.state_get = NULL;
++<<<<<<< HEAD
+ itc_group.func.del = gl_del;
++=======
+ itc_group.func.del = NULL;
++>>>>>>> remotes/origin/upstream
git = elm_genlist_item_append(gl, &itc_group,
(void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
NULL/* func data */);
++<<<<<<< HEAD
+ elm_genlist_item_display_only_set(git, EINA_TRUE);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
++=======
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ elm_genlist_item_append(gl, itc1,
+ (void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
++>>>>>>> remotes/origin/upstream
NULL/* func data */);
git = elm_genlist_item_append(gl, &itc_group,
(void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
NULL/* func data */);
++<<<<<<< HEAD
+ elm_genlist_item_display_only_set(git, EINA_TRUE);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc1,
+ (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
+ NULL/* func data */);
++=======
+ elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ elm_genlist_item_append(gl, itc1,
+ (void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, itc1,
+ (void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_TREE, gl4_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_class_free(itc1);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
static Elm_Genlist_Item_Class itc10;
static char *mode_type[] = { "slide", "rotate" };
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
char *gl10_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
{
char buf[256];
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
return ic;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
static void
_gl_sel10(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
if (!data) return;
int v = elm_radio_value_get(data);
if (v == 1)
++<<<<<<< HEAD
+ elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
++=======
+ elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
if (!data) return;
int v = elm_radio_value_get(data);
if (v == 0)
++<<<<<<< HEAD
+ elm_genlist_item_mode_set(event_info, mode_type[v], EINA_TRUE);
++=======
+ elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
if (!data) return;
int v = elm_radio_value_get(data);
if (v == 0)
++<<<<<<< HEAD
+ elm_genlist_item_mode_set(event_info, mode_type[v], EINA_FALSE);
++=======
+ elm_genlist_item_decorate_mode_set(event_info, mode_type[v], EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
static void
fprintf(stderr, "drag\n");
if (!data) return;
int v = elm_radio_value_get(data);
++<<<<<<< HEAD
+ Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_mode_item_get(obj);
+ if (it)
+ elm_genlist_item_mode_set(it, mode_type[v], EINA_FALSE);
++=======
+ Elm_Object_Item *glit = (Elm_Object_Item *) elm_genlist_decorated_item_get(obj);
+ if (glit) elm_genlist_item_decorate_mode_set(glit, mode_type[v], EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
void
test_genlist10(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
+ int i;
+
+ win = elm_win_add(NULL, "genlist10", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *fr, *lb, *bx, *bx2, *bx3, *rd, *rdg, *gl;
+ int i;
+
+ win = elm_win_util_standard_add("genlist10", "Genlist Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
++<<<<<<< HEAD
+ "Sweep genlist items to the right.<br>"
++=======
+ "Sweep genlist items to the right.<br/>"
++>>>>>>> remotes/origin/upstream
"Test this by changing Mode Type to Slide or Rotate.");
elm_box_pack_end(bx2, lb);
evas_object_show(lb);
evas_object_show(gl);
itc10.item_style = "default";
++<<<<<<< HEAD
+ itc10.func.text_get = gl10_text_get;
+ itc10.func.content_get = gl10_content_get;
+ itc10.func.state_get = gl_state_get;
+ itc10.func.del = gl_del;
+ itc10.mode_item_style = "mode";
++=======
+ itc10.mode_item_style = "mode";
+ itc10.func.text_get = gl10_text_get;
+ itc10.func.content_get = gl10_content_get;
+ itc10.func.state_get = gl_state_get;
+ itc10.func.del = NULL;
++>>>>>>> remotes/origin/upstream
for (i = 0; i < 50; i++)
elm_genlist_item_append(gl,
&itc10,
++<<<<<<< HEAD
+ (void *)(1000 + i)/* item data */,
++=======
+ (void *)(long)(1000 + i)/* item data */,
++>>>>>>> remotes/origin/upstream
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
_gl_sel10/* func */,
* the item(*item) had been moved before the given relative item(*rel_item) in list.
*
*/
++<<<<<<< HEAD
+static void gl_moved(Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__, Elm_Object_Item *rel_item __UNUSED__, Eina_Bool move_after __UNUSED__)
++=======
+ static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
// if needed, add application logic.
}
void
test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *fr, *lb, *bx, *tg, *gl;
+ int i;
+
+ win = elm_win_add(NULL, "genlist-reorder-mode", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Reorder Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
+ int i;
+
+ win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
lb = elm_label_add(win);
elm_object_text_set(lb,
++<<<<<<< HEAD
+ "Enable reorder mode if you want to move item.<br>"
++=======
+ "Enable reorder mode if you want to move item.<br/>"
++>>>>>>> remotes/origin/upstream
"Then long press and drag item.");
elm_object_content_set(fr, lb);
evas_object_show(lb);
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "Reorder Mode:");
++<<<<<<< HEAD
+ elm_check_state_set(tg, elm_mirrored_get());
++=======
+ elm_check_state_set(tg, elm_config_mirrored_get());
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
elm_box_pack_end(bx, tg);
evas_object_show(tg);
++<<<<<<< HEAD
+ itc1.item_style = "default";
+ itc1.func.text_get = gl_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+ itc1.func.moved = gl_moved;
+
+ for (i = 0; i < 50; i++)
+ elm_genlist_item_append(gl,
+ &itc1,
+ (void *)(1 + i)/* item data */,
++=======
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+ evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
+
+ for (i = 0; i < 50; i++)
+ elm_genlist_item_append(gl,
+ itc1,
+ (void *)(long)(1 + i)/* item data */,
++>>>>>>> remotes/origin/upstream
NULL/* parent */,
ELM_GENLIST_ITEM_NONE/* flags */,
NULL/* func */,
NULL/* func data */);
++<<<<<<< HEAD
++=======
+ elm_genlist_item_class_free(itc1);
+
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, gl);
evas_object_resize(win, 400, 500);
void
test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *bx, *gl;
+ int i;
+
+ win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Genlist Textblock");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
++=======
+ Evas_Object *win, *bx, *gl;
+ int i;
+
+ win = elm_win_util_standard_add("genlist-textblock", "Genlist Textblock");
+ elm_win_autodel_set(win, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
bx = elm_box_add(win);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bx);
evas_object_show(bx);
gl = elm_genlist_add(win);
++<<<<<<< HEAD
+ elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
++=======
+ elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bx, gl);
evas_object_show(gl);
++<<<<<<< HEAD
+ itc1.item_style = "message";
+ itc1.func.text_get = gl12_text_get;
+ itc1.func.content_get = gl_content_get;
+ itc1.func.state_get = gl_state_get;
+ itc1.func.del = gl_del;
+
+ for (i = 0; i < 1000; i++)
+ {
+ elm_genlist_item_append(gl, &itc1,
++=======
+ itc1->item_style = "message";
+ itc1->func.text_get = gl12_text_get;
+ itc1->func.content_get = gl_content_get;
+ itc1->func.state_get = gl_state_get;
+ itc1->func.del = NULL;
+
+ for (i = 0; i < 1000; i++)
+ {
+ elm_genlist_item_append(gl, itc1,
++>>>>>>> remotes/origin/upstream
(void *)(long)i/* item data */,
NULL/* parent */,
ELM_GENLIST_ITEM_NONE,
gl_sel/* func */,
(void *)(long)(i * 10)/* func data */);
}
++<<<<<<< HEAD
++=======
+ elm_genlist_item_class_free(itc1);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 400, 500);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+
+ static int
+ gl13_cmp(const void *pa, const void *pb)
+ {
+ const Elm_Object_Item *ia = pa, *ib = pb;
+ int a = (int)(long) elm_object_item_data_get(ia);
+ int b = (int)(long) elm_object_item_data_get(ib);
+ return a - b;
+ }
+
+ void
+ test_genlist13(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Elm_Object_Item *pi[6];
+ Evas_Object *win, *bx, *gl; int i, base, idx[3] = {1, 10, 15};
+
+ win = elm_win_util_standard_add("genlist-tree-insert-sorted", "Genlist Tree, Insert Sorted");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gl);
+
+ itc4.item_style = "default";
+ itc4.func.text_get = gl4_text_get;
+ itc4.func.content_get = NULL;
+ itc4.func.state_get = NULL;
+ itc4.func.del = NULL;
+
+ /* mixed order to test insert sorted */
+
+ for (i = 0; i < 3; i++)
+ {
+ pi[i] = elm_genlist_item_sorted_insert
+ (gl, &itc4, (void *)(long)idx[i]/* item data */, NULL/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */,
+ NULL/* func */, NULL/* func data */);
+ }
+
+ for (i = 0, base = 100; i < 3; i++, base += 100)
+ {
+ int j;
+ for (j = 0; j < 3; j++)
+ {
+ elm_genlist_item_sorted_insert
+ (gl, &itc4, (void *)(long)(idx[j] + base)/* item data */,
+ pi[i]/* parent */, ELM_GENLIST_ITEM_NONE,
+ gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
+ }
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ pi[i + 3] = elm_genlist_item_sorted_insert
+ (gl, &itc4, (void *)(long)(idx[i] * 2)/* item data */, NULL/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl13_cmp/* cmp */, NULL/* func */,
+ NULL/* func data */);
+ }
+
+
+ for (i = 0, base = 10000; i < 3; i++, base += 10000)
+ {
+ int j;
+ for (j = 0; j < 3; j++)
+ {
+ elm_genlist_item_sorted_insert
+ (gl, &itc4, (void *)(long)(idx[j] + base)/* item data */,
+ pi[i + 3]/* parent */, ELM_GENLIST_ITEM_NONE,
+ gl13_cmp/* cmp */, NULL/* func */, NULL/* func data */);
+ }
+ }
+
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
+ static void
+ my_gl_insert_before_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *gl = data;
+ static int i = 1000;
+ Elm_Object_Item *gli_selected;
+
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = NULL;
+ itc1->func.state_get = NULL;
+ itc1->func.del = NULL;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if (!gli_selected)
+ {
+ printf("no item selected\n");
+ return;
+ }
+
+ elm_genlist_item_insert_before(gl, itc1,
+ (void *)(long)i/* item data */,
+ elm_genlist_item_parent_get(gli_selected),
+ gli_selected/* item before */,
+ ELM_GENLIST_ITEM_NONE,
+ NULL/* func */, NULL/* func data */);
+ i++;
+ }
+
+ static void
+ my_gl_insert_after_rel(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *gl = data;
+ static int i = 0;
+ Elm_Object_Item *gli_selected;
+
+ itc1->item_style = "default";
+ itc1->func.text_get = gl_text_get;
+ itc1->func.content_get = NULL;
+ itc1->func.state_get = NULL;
+ itc1->func.del = NULL;
+
+ gli_selected = elm_genlist_selected_item_get(gl);
+ if (!gli_selected)
+ {
+ printf("no item selected\n");
+ return;
+ }
+
+ elm_genlist_item_insert_after(gl, itc1,
+ (void *)(long)i/* item data */,
+ elm_genlist_item_parent_get(gli_selected),
+ gli_selected/* item after */,
+ ELM_GENLIST_ITEM_NONE,
+ NULL/* func */, NULL/* func data */);
+ i++;
+ }
+
+ void
+ test_genlist14(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Elm_Object_Item *pi[6];
+ Evas_Object *win, *bx, *bx2, *bt, *gl;
+ int i, base;
+ /* index: 0, 1, 2, 3, 4, 5
+ * items: 1, 15, 11, 2, 33, 21
+ * final: 1, 2, 11, 15, 21, 33
+ */
+ const int idx[6] = {1, 15, 11, 2, 33, 21};
+ const int relative[6] = {
+ 0, /* item '1' - not used */
+ 0, /* item '15' - insert after pi[0], item '1' */
+ -1, /* item '11' - insert before pi[1], item '15' */
+ -2, /* item '2' - insert before pi[2], item '11' */
+ 1, /* item '33' - insert after pi[1], item '15' */
+ -4 /* item '21' - insert before pi[4], item '33' */
+ };
+
+ win = elm_win_util_standard_add("genlist-tree-insert-relative", "Genlist Tree, Insert Relative");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gl);
+
+ itc1 = elm_genlist_item_class_new();
+
+ itc4.item_style = "default";
+ itc4.func.text_get = gl4_text_get;
+ itc4.func.content_get = NULL;
+ itc4.func.state_get = NULL;
+ itc4.func.del = NULL;
+
+ /* mixed order to test insert sorted */
+
+ // BUG1: should be able to insert before=NULL, prepend
+ // BUG2: should be able to insert after=NULL, append
+
+ pi[0] = elm_genlist_item_append
+ (gl, &itc4, (void *)(long)idx[0]/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+
+ for (i = 1; i < 3; i++)
+ {
+ if (relative[i] < 0)
+ pi[i] = elm_genlist_item_insert_before
+ (gl, &itc4, (void *)(long)idx[i]/* item data */,
+ NULL/* parent */, pi[-relative[i]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ else
+ pi[i] = elm_genlist_item_insert_after
+ (gl, &itc4, (void *)(long)idx[i]/* item data */,
+ NULL/* parent */, pi[relative[i]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ Elm_Object_Item *sub_glit[6];
+ int j;
+
+ base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
+
+ sub_glit[0] = elm_genlist_item_append
+ (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+
+ for (j = 1; j < 6; j++) {
+ if (relative[j] < 0)
+ sub_glit[j] = elm_genlist_item_insert_before
+ (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
+ pi[i]/* parent */, sub_glit[-relative[j]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ else
+ sub_glit[j] = elm_genlist_item_insert_after
+ (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
+ pi[i]/* parent */, sub_glit[relative[j]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ }
+ }
+
+ for (i = 3; i < 6; i++)
+ {
+ if (relative[i] < 0)
+ pi[i] = elm_genlist_item_insert_before
+ (gl, &itc4, (void *)(long) idx[i]/* item data */,
+ NULL/* parent */, pi[-relative[i]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ else
+ pi[i] = elm_genlist_item_insert_after
+ (gl, &itc4, (void *)(long) idx[i]/* item data */,
+ NULL/* parent */, pi[relative[i]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ }
+
+ for (i = 3; i < 6; i++)
+ {
+ Elm_Object_Item *sub_glit[6];
+ int j;
+
+ base = 1000 * (int)(long) elm_object_item_data_get(pi[i]);
+
+ sub_glit[0] = elm_genlist_item_append
+ (gl, &itc4, (void *)(long) (idx[0] + base)/* item data */, pi[i]/* parent */,
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+
+ for (j = 1; j < 6; j++) {
+ if (relative[j] < 0)
+ sub_glit[j] = elm_genlist_item_insert_before
+ (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
+ pi[i]/* parent */, sub_glit[-relative[j]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ else
+ sub_glit[j] = elm_genlist_item_insert_after
+ (gl, &itc4, (void *)(long) (idx[j] + base)/* item data */,
+ pi[i]/* parent */, sub_glit[relative[j]],
+ ELM_GENLIST_ITEM_TREE, NULL/* func */, NULL/* func data */);
+ }
+ }
+
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ elm_box_homogeneous_set(bx2, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "+ before");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_before_rel, gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "+ after");
+ evas_object_smart_callback_add(bt, "clicked", my_gl_insert_after_rel, gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ /* item_class_ref is needed for itc1. some items can be added in callbacks */
+ elm_genlist_item_class_ref(itc1);
+ elm_genlist_item_class_free(itc1);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
+
+ static void _edit_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Elm_Object_Item *item = (Elm_Object_Item *)data;
+ elm_object_item_del(item);
+ }
+
+ char *gl15_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+ {
+ const Testitem *tit = data;
+ char buf[256];
+ snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
+ return strdup(buf);
+ }
+
+ Evas_Object *gl15_content_get(void *data, Evas_Object *obj, const char *part)
+ {
+ Testitem *tit = data;
+ char buf[PATH_MAX];
+
+ // "edit_default" EDC layout is like below. each part is swallow part.
+ // the existing item is swllowed to elm.swallow.edit.content part.
+ // ----------------------------------------------------------------
+ // | elm.edit.icon.1 | elm.swallow.edit.content | elm.edit.icon,2 |
+ // ----------------------------------------------------------------
+
+ if (!strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object *ic = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/bubble.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return ic;
+ }
+ else if (!strcmp(part, "elm.edit.icon.1"))
+ {
+ Evas_Object *ck;
+ ck = elm_check_add(obj);
+ elm_check_state_pointer_set(ck, &tit->checked);
+ evas_object_propagate_events_set(ck, EINA_FALSE);
+ evas_object_show(ck);
+ return ck;
+ }
+ else if (!strcmp(part, "elm.edit.icon.2"))
+ {
+ Evas_Object *icn = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/icon_06.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(icn, buf, NULL);
+ evas_object_propagate_events_set(icn, EINA_FALSE);
+ evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_smart_callback_add(icn, "clicked", _edit_icon_clicked_cb, (void *)tit->item);
+ return icn;
+ }
+ else return NULL;
+ }
+
+ static void
+ gl15_sel(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Testitem *tit = data;
+ if (elm_genlist_decorate_mode_get(obj))
+ {
+ if (!tit->checked) tit->checked = EINA_TRUE;
+ else tit->checked = EINA_FALSE;
+ }
+ elm_genlist_item_update(tit->item);
+ }
+
+ static void
+ gl15_edit_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_genlist_decorate_mode_set(data, EINA_TRUE);
+ elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ }
+
+ static void
+ gl15_normal_mode(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_genlist_decorate_mode_set(data, EINA_FALSE);
+ elm_genlist_select_mode_set(data, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+
+ void gl15_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+ {
+ printf("item deleted.\n");
+ }
+
+ void
+ test_genlist15(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bx, *bx2, *bt, *gl;
+ int i;
+ static Testitem tit[100];
+
+ win = elm_win_util_standard_add("genlist-edit-mode", "Genlist Edit Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gl);
+
+ itc15 = elm_genlist_item_class_new();
+ itc15->item_style = "default";
+ itc15->func.text_get = gl15_text_get;
+ itc15->func.content_get = gl15_content_get;
+ itc15->func.state_get = gl_state_get;
+ itc15->func.del = gl15_del;
+ itc15->edit_item_style = "edit";
+
+ for (i = 0; i < 100; i++)
+ {
+ tit[i].mode = i;
+ tit[i].item = elm_genlist_item_append(gl, itc15,
+ &(tit[i])/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE/* flags */,
+ gl15_sel/* func */,
+ (void *)(long)&(tit[i])/* func data */);
+ }
+ elm_genlist_item_class_free(itc15);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ elm_box_homogeneous_set(bx2, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Edit mode");
+ evas_object_smart_callback_add(bt, "clicked", gl15_edit_mode, gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Normal mode");
+ evas_object_smart_callback_add(bt, "clicked", gl15_normal_mode,gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ evas_object_resize(win, 520, 520);
+ evas_object_show(win);
+ }
+
+ static void _flip_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ const Testitem *tit = data;
+
+ if (elm_genlist_item_flip_get(tit->item))
+ elm_genlist_item_flip_set(tit->item, EINA_FALSE);
+ else
+ elm_genlist_item_flip_set(tit->item, EINA_TRUE);
+ }
+
+ char *gl16_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+ {
+ const Testitem *tit = data;
+ char buf[256];
+ snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
+ return strdup(buf);
+ }
+
+ Evas_Object *gl16_content_get(void *data, Evas_Object *obj, const char *part)
+ {
+ Testitem *tit = data;
+ char buf[PATH_MAX];
+
+ if (!strcmp(part, "elm.text.flip"))
+ {
+ Evas_Object *btn = elm_button_add(obj);
+ elm_object_text_set(btn, "flipped content placement");
+ evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
+ evas_object_smart_callback_add(btn, "clicked", _flip_icon_clicked_cb, (void *)tit);
+ evas_object_show(btn);
+ return btn;
+ }
+ else if (!strcmp(part, "elm.edit.icon.1"))
+ {
+ Evas_Object *icn = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/icon_04.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(icn, buf, NULL);
+ evas_object_propagate_events_set(icn, EINA_FALSE);
+ evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ return icn;
+ }
+ else if (!strcmp(part, "elm.edit.icon.2"))
+ {
+ Evas_Object *icn = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/icon_09.png", PACKAGE_DATA_DIR);
+ elm_icon_file_set(icn, buf, NULL);
+ evas_object_propagate_events_set(icn, EINA_FALSE);
+ evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_smart_callback_add(icn, "clicked", _flip_icon_clicked_cb, (void *)tit);
+ return icn;
+ }
+ else return NULL;
+ }
+
+ void
+ test_genlist16(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bx, *gl;
+ int i;
+ static Testitem tit[100];
+
+ win = elm_win_util_standard_add("genlist-flip-mode", "Genlist Flip Mode");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gl);
+
+ /* note: flip mode can be used with/without edit mode */
+ elm_genlist_decorate_mode_set(gl, EINA_TRUE);
+ elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+ itc15 = elm_genlist_item_class_new();
+ itc15->item_style = "default";
+ itc15->func.text_get = gl16_text_get;
+ itc15->func.content_get = gl16_content_get;
+ itc15->func.state_get = gl_state_get;
+ itc15->func.del = NULL;
+ itc15->edit_item_style = "edit";
+
+ for (i = 0; i < 100; i++)
+ {
+ tit[i].mode = i;
+ tit[i].item = elm_genlist_item_append(gl, itc15,
+ &(tit[i])/* item data */,
+ NULL/* parent */,
+ ELM_GENLIST_ITEM_NONE/* flags */,
+ gl_sel/* func */,
+ (void *)(long)&(tit[i])/* func data */);
+ }
+ elm_genlist_item_class_free(itc15);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx);
+
+ evas_object_resize(win, 520, 520);
+ evas_object_show(win);
+ }
+
+ static Elm_Genlist_Item_Class itc17;
+
+ static void
+ gl17_sel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ int depth = elm_genlist_item_expanded_depth_get(glit);
+ printf("expanded depth for selected item is %d\n", depth);
+ }
+
+ static void
+ gl17_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ int val = (int)(long) elm_object_item_data_get(glit);
+ val *= 10;
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 1)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 2)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 3)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 4)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 5)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)(long) (val + 6)/* item data */,
+ glit/* parent */,
+ ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ }
+
+ static void
+ gl17_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_subitems_clear(glit);
+ }
+
+ static void
+ gl17_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_TRUE);
+ }
+
+ static void
+ gl17_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_expanded_set(glit, EINA_FALSE);
+ }
+
+ char *gl17_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+ {
+ char buf[256];
+ snprintf(buf, sizeof(buf), "Item mode %i", (int)(long)data);
+ return strdup(buf);
+ }
+
+ Evas_Object *gl17_content_get(void *data __UNUSED__, Evas_Object *obj, const char *part)
+ {
+ char buf[PATH_MAX];
+ if (!strcmp(part, "elm.swallow.icon"))
+ {
+ Evas_Object *ic = elm_icon_add(obj);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+ evas_object_show(ic);
+ return ic;
+ }
+ else if (!strcmp(part, "elm.swallow.end"))
+ {
+ Evas_Object *ck;
+ ck = elm_check_add(obj);
+ evas_object_propagate_events_set(ck, EINA_FALSE);
+ evas_object_show(ck);
+ return ck;
+ }
+ return NULL;
+ }
+
+ Eina_Bool gl17_state_get(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
+ {
+ return EINA_FALSE;
+ }
+
+ void gl17_del(void *data __UNUSED__, Evas_Object *obj __UNUSED__)
+ {
+ printf("item deleted.\n");
+ }
+
+ static void
+ gl17_enabled_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_genlist_tree_effect_enabled_set(data, EINA_TRUE);
+ }
+
+ static void
+ gl17_disabled_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_genlist_tree_effect_enabled_set(data, EINA_FALSE);
+ }
+
+ void
+ test_genlist17(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gl, *bx, *bx2, *bt;
+
+ win = elm_win_util_standard_add("genlist17", "Genlist Tree Effect");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(gl);
+
+ elm_genlist_tree_effect_enabled_set(gl,EINA_TRUE);
+
+ itc17.item_style = "tree_effect";
+ itc17.func.text_get = gl17_text_get;
+ itc17.func.content_get = gl17_content_get;
+ itc17.func.state_get = gl17_state_get;
+ itc17.func.del = gl17_del;
+
+ elm_genlist_item_append(gl, &itc17,
+ (void *)1/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)2/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+ elm_genlist_item_append(gl, &itc17,
+ (void *)3/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_TREE, gl17_sel/* func */,
+ NULL/* func data */);
+
+ evas_object_smart_callback_add(gl, "expand,request", gl17_exp_req, gl);
+ evas_object_smart_callback_add(gl, "contract,request", gl17_con_req, gl);
+ evas_object_smart_callback_add(gl, "expanded", gl17_exp, gl);
+ evas_object_smart_callback_add(gl, "contracted", gl17_con, gl);
+
+ elm_box_pack_end(bx, gl);
+ evas_object_show(bx);
+
+ bx2 = elm_box_add(win);
+ elm_box_horizontal_set(bx2, EINA_TRUE);
+ elm_box_homogeneous_set(bx2, EINA_TRUE);
+ evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Enable");
+ evas_object_smart_callback_add(bt, "clicked", gl17_enabled_set, gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Disable");
+ evas_object_smart_callback_add(bt, "clicked", gl17_disabled_set, gl);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx2, bt);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bx, bx2);
+ evas_object_show(bx2);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
++>>>>>>> remotes/origin/upstream
#endif
snprintf(buf, sizeof(buf), "%s/images/g_layer/%s_1.png",
elm_app_data_dir_get(), icons[idx].name);
elm_icon_file_set(icons[idx].icon, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(icons[idx].icon, 0, 0);
++=======
+ elm_icon_resizable_set(icons[idx].icon, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(icons[idx].icon, 0.5, 0.5);
_icon_color_set(&icons[idx], INI_R, INI_G, INI_B, INI_A);
elm_box_pack_end(bx, icons[idx].icon);
{
Photo_Object *po = (Photo_Object *) _po;
Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
++<<<<<<< HEAD
+ printf("momentum move <%d,%d>\n", p->x2, p->y2);
++=======
+ printf("momentum move <%d,%d> fingers=<%d> mx,my=<%d,%d>\n", p->x2, p->y2, p->n, p->mx, p->my);
++>>>>>>> remotes/origin/upstream
po->bx = p->x2 - po->dx;
po->by = p->y2 - po->dy;
" gl_FragColor = color + white * dot(light_direction, rotated_normal);\n"
"}\n";
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
gears_init(GLData *gld)
{
gld->gear3 = make_gear(gld, 1.3, 2.0, 0.5, 10, 0.7);
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
gldata_init(GLData *gld)
{
free(gld);
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_resize_gl(Evas_Object *obj)
{
gears_reshape(gld, w,h);
}
++<<<<<<< HEAD
+
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_draw_gl(Evas_Object *obj)
{
evas_object_del((Evas_Object*)data);
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_del(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
ecore_animator_del(ani);
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
{
gld->mouse_down = 0;
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
void
test_glview(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_win_title_set(win, "GLView");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
// add a standard bg
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_UP, _mouse_up, gl);
evas_object_event_callback_add(gl, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, gl);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
// Animator and other vars
ani = ecore_animator_add(_anim, gl);
gld->glapi = elm_glview_gl_api_get(gl);
evas_object_data_set(gl, "gld", gld);
evas_object_event_callback_add(gl, EVAS_CALLBACK_DEL, _del, gl);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
/* add an ok button */
bt = elm_button_add(win);
elm_object_text_set(bt, "OK");
if (!(gld = calloc(1, sizeof(GLData)))) return;
// Set the engine to opengl_x11
++<<<<<<< HEAD
+ elm_engine_set("opengl_x11");
+
+ win = elm_win_add(NULL, "glview simple", ELM_WIN_BASIC);
++=======
+ elm_config_preferred_engine_set("opengl_x11");
+ win = elm_win_add(NULL, "glview simple", ELM_WIN_BASIC);
+ // Set preferred engine back to default from config
+ elm_config_preferred_engine_set(NULL);
+
++>>>>>>> remotes/origin/upstream
elm_win_title_set(win, "GLView Simple");
elm_win_autodel_set(win, EINA_TRUE);
#include <Elementary.h>
++<<<<<<< HEAD
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+#ifndef ELM_LIB_QUICKLAUNCH
++=======
+ #include "test.h"
+ #ifdef HAVE_CONFIG_H
+ # include "elementary_config.h"
+ #endif
+ # ifndef ELM_LIB_QUICKLAUNCH
+ struct _Api_Data
+ {
+ Evas_Object *grid;
+ Evas_Object *child;
+ };
+ typedef struct _Api_Data Api_Data;
+
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Api_Data data;
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ GRID_PACK_SET,
+ GRID_UNPACK,
+ GRID_SIZE,
+ GRID_CLEAR,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ Api_Data *dt = &api->data;
+ int w, h;
+
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case GRID_PACK_SET: /* 0 */
+ elm_grid_pack_set(dt->child, 5, 15, 60, 40);
+ break;
+
+ case GRID_UNPACK: /* 1 */
+ elm_grid_unpack(dt->grid, dt->child);
+ evas_object_del(dt->child);
+ break;
+
+ case GRID_SIZE: /* 2 */
+ elm_grid_size_get(dt->grid, &w, &h);
+ printf("size w=<%d> h=<%d>\n", w, h);
+ w = h = 100; /* grid size returns wrong values */
+ w += 30;
+ h += 10;
+
+ elm_grid_size_set(dt->grid, w, h);
+ break;
+
+ case GRID_CLEAR: /* 3 */
+ elm_grid_clear(dt->grid, EINA_TRUE);
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_ch_grid(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
elm_grid_pack_set(obj, x - 1, y - 1, w + 2, h + 2);
}
++<<<<<<< HEAD
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_grid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
win = elm_win_add(NULL, "grid", ELM_WIN_BASIC);
elm_win_title_set(win, "Grid");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
gd = elm_grid_add(win);
elm_grid_size_set(gd, 100, 100);
elm_win_resize_object_add(win, gd);
evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
++=======
+ api->data.grid = gd;
++>>>>>>> remotes/origin/upstream
evas_object_show(gd);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_object_text_set(en, "Entry text");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_grid_pack(gd, en, 50, 10, 40, 10);
evas_object_show(en);
en = elm_entry_add(win);
elm_entry_scrollable_set(en, EINA_TRUE);
elm_object_text_set(en, "Entry text 2");
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_grid_pack(gd, en, 60, 20, 30, 10);
evas_object_show(en);
bt = elm_button_add(win);
++<<<<<<< HEAD
++=======
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_grid_pack(gd, bt, 30, 0, 40, 10);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 0, 0, 20, 20);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Button");
elm_grid_pack(gd, bt, 10, 10, 40, 20);
++<<<<<<< HEAD
++=======
+ api->data.child = bt;
++>>>>>>> remotes/origin/upstream
evas_object_show(bt);
bt = elm_button_add(win);
evas_object_show(hv);
}
++<<<<<<< HEAD
++=======
+ static void
+ _top_bt_clicked(void *data, Evas_Object *obj __UNUSED__,
+ void *event_info __UNUSED__)
+ {
+ Evas_Object *hv = (Evas_Object *)data;
+ elm_hover_dismiss(hv);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_hover(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ic);
evas_object_show(ic);
bt = elm_button_add(win);
elm_object_text_set(bt, "Top 1");
++<<<<<<< HEAD
++=======
+ evas_object_smart_callback_add(bt, "clicked", _top_bt_clicked, hv);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ic);
evas_object_show(ic);
bt = elm_button_add(win);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
+void
+test_hoversel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *bx, *bt, *ic;
+ char buf[PATH_MAX];
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *box; /* Use this to get box content */
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ HOVERSEL_HORIZ,
+ HOVERSEL_END,
+ HOVERSEL_LABAL_SET,
+ HOVERSEL_ICON_UNSET,
+ HOVERSEL_CLEAR_OPEN,
+ HOVERSEL_CLEAR,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ const Eina_List *items = elm_box_children_get(api->box);
+ if(!eina_list_count(items))
+ return;
+
+ /* use elm_box_children_get() to get list of children */
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case HOVERSEL_HORIZ: /* Make first hover horiz (0) */
+ elm_hoversel_horizontal_set(eina_list_nth(items, 0), EINA_TRUE);
+ elm_hoversel_hover_begin(eina_list_nth(items, 0));
+ break;
+
+ case HOVERSEL_END: /* Make first hover horiz (1) */
+ elm_hoversel_hover_begin(eina_list_nth(items, 1));
+ elm_hoversel_hover_end(eina_list_nth(items, 1));
+ break;
+
+ case HOVERSEL_LABAL_SET: /* set second hover label (2) */
+ elm_object_text_set(eina_list_nth(items, 1), "Label from API");
+ break;
+
+ case HOVERSEL_ICON_UNSET: /* 3 */
+ elm_object_text_set(eina_list_nth(items, 5), "Label only");
+ elm_object_part_content_unset(eina_list_nth(items, 5), "icon");
+ break;
+
+ case HOVERSEL_CLEAR_OPEN: /* 4 */
+ elm_hoversel_hover_begin(eina_list_nth(items, 1));
+ elm_hoversel_clear(eina_list_nth(items, 1));
+ break;
+
+ case HOVERSEL_CLEAR: /* 5 */
+ elm_hoversel_clear(eina_list_nth(items, 0));
+ break;
+
+ case API_STATE_LAST:
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_hoversel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *bx, *bt, *ic, *bxx;
+ char buf[PATH_MAX];
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "hoversel", ELM_WIN_BASIC);
elm_win_title_set(win, "Hoversel");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ bx = elm_box_add(win);
+ elm_win_resize_object_add(win, bx);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bx);
+
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bx = elm_box_add(win);
+ elm_win_resize_object_add(win, bx);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ api->box = bx;
+ evas_object_show(bx);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, bx);
+
++>>>>>>> remotes/origin/upstream
bt = elm_hoversel_add(win);
// FIXME: need to add horizontal hoversel theme to default some day
// elm_hoversel_horizontal_set(bt, 1);
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+
+ static void
+ aspect_fixed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *ic = (Evas_Object *)data;
+ elm_icon_aspect_fixed_set(ic, elm_check_state_get(obj));
+ }
+
+ static void
+ fill_outside_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *ic = (Evas_Object *)data;
+ elm_icon_fill_outside_set(ic, elm_check_state_get(obj));
+ }
+
+ static void
+ smooth_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *ic = (Evas_Object *)data;
+ elm_icon_smooth_set(ic, elm_check_state_get(obj));
+ }
+
+ static void
+ bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *ic;
+ char buf[PATH_MAX];
+
+ win = elm_win_util_standard_add("preload-prescale", "Preload & Prescale");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ ic = elm_icon_add(win);
+ elm_win_resize_object_add(win, ic);
+ snprintf(buf, sizeof(buf), "%s/images/insanely_huge_test_image.jpg",
+ elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+
+ evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ic, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ elm_icon_aspect_fixed_set(ic, EINA_FALSE);
+ elm_icon_preload_disabled_set(ic, EINA_TRUE);
+ elm_icon_prescale_set(ic, EINA_TRUE);
+ evas_object_show(ic);
+
+ evas_object_resize(win, 350, 350);
+ evas_object_show(win);
+ }
+
+ void
+ test_icon(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *box, *content_box, *hbox, *tg, *bt;
+ win = elm_win_util_standard_add("icon test", "Icon Test");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ content_box = elm_box_add(win);
+ elm_win_resize_object_add(win, content_box);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(box, content_box);
+ evas_object_show(content_box);
+
+ Evas_Object *ic = elm_icon_add(win);
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
+ elm_icon_file_set(ic, buf, NULL);
+ elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
+ evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ic, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_box_pack_end(content_box, ic);
+ evas_object_show(ic);
+
+ hbox = elm_box_add(win);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_box_pack_end(box, hbox);
+ evas_object_show(hbox);
+
+ /* Test Aspect Fixed */
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Aspect Fixed");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", aspect_fixed_cb, ic);
+ elm_box_pack_end(hbox, tg);
+ evas_object_show(tg);
+
+ /* Test Fill Outside */
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Fill Outside");
+ evas_object_smart_callback_add(tg, "changed", fill_outside_cb, ic);
+ elm_box_pack_end(hbox, tg);
+ evas_object_show(tg);
+
+ /* Test Smooth */
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Smooth");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", smooth_cb, ic);
+ elm_box_pack_end(hbox, tg);
+ evas_object_show(tg);
+
+ /* Test Preload, Prescale */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Preload & Prescale");
+ evas_object_smart_callback_add(bt, "clicked", bt_clicked, NULL);
+ elm_box_pack_end(hbox, bt);
+ evas_object_show(bt);
+
+ evas_object_resize(win, 400, 400);
+ evas_object_show(win);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
icon_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
}
void
++<<<<<<< HEAD
+test_icon(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ test_icon_transparent(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *win, *ic;
char buf[PATH_MAX];
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_no_scale_set(ic, 1);
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(ic, 0.5, 0.5);
elm_icon_animated_set(ic, EINA_TRUE);
elm_icon_animated_play_set(ic, EINA_TRUE);
}
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_no_scale_set(ic, 1);
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(ic, 0.5, 0.5);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _Idx_Data_Type
+ {
+ Evas_Object *id; /* Pointer to Index */
+ Elm_Object_Item *item; /* Item we use for search */
+ };
+ typedef struct _Idx_Data_Type Idx_Data_Type;
+
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ Idx_Data_Type dt;
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ INDEX_LEVEL_SET,
+ INDEX_ACTIVE_SET,
+ INDEX_APPEND_RELATIVE,
+ INDEX_PREPEND,
+ INDEX_ITEM_DEL,
+ INDEX_ITEM_FIND,
+ INDEX_HORIZONTAL,
+ INDEX_INDICATOR_DISABLED,
+ INDEX_CLEAR,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ Idx_Data_Type *d = &api->dt;
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case INDEX_LEVEL_SET:
+ elm_index_autohide_disabled_set(d->id, EINA_TRUE);
+ elm_index_item_level_set(d->id, (elm_index_item_level_get(d->id) ? 0 : 1));
+ break;
+
+ case INDEX_ACTIVE_SET:
+ elm_index_autohide_disabled_set(d->id, EINA_FALSE);
+ break;
+
+ case INDEX_APPEND_RELATIVE:
+ elm_index_item_insert_after(d->id,
+ elm_index_item_find(d->id, d->item),
+ "W", NULL, d->item);
+ elm_index_item_insert_before(d->id,
+ elm_index_item_find(d->id, d->item),
+ "V", NULL, d->item);
+ break;
+
+ case INDEX_PREPEND:
+ elm_index_item_prepend(d->id, "D", NULL, d->item);
+ break;
+
+ case INDEX_ITEM_DEL:
+ elm_object_item_del(elm_index_item_find(d->id, d->item));
+ break;
+
+ case INDEX_ITEM_FIND:
+ {
+ Elm_Object_Item *i = elm_index_item_find(d->id, d->item);
+ if(i)
+ {
+ printf("Item Find - Found Item.\n");
+ elm_object_item_del(i);
+ }
+ }
+ break;
+
+ case INDEX_HORIZONTAL:
+ elm_index_horizontal_set(d->id, EINA_TRUE);
+ break;
+
+ case INDEX_INDICATOR_DISABLED:
+ elm_index_indicator_disabled_set(d->id, EINA_TRUE);
+ break;
+
+ case INDEX_CLEAR:
+ elm_index_item_clear(d->id);
+ break;
+
+ case API_STATE_LAST:
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
++>>>>>>> remotes/origin/upstream
static Elm_Genlist_Item_Class itci;
char *gli_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
{
}
void
++<<<<<<< HEAD
+index_changed2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ // called on a change but delayed in case multiple changes happen in a
+ // short timespan
+ elm_genlist_item_top_bring_in(elm_object_item_data_get(event_info));
+}
+
+void
+index_changed(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _index_delay_changed_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ // called on a change but delayed in case multiple changes happen in a
+ // short timespan
+ elm_genlist_item_bring_in(elm_object_item_data_get(event_info),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+ }
+
+ void
+ _index_changed_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
// this is calld on every change, no matter how often
// elm_genlist_item_bring_in(event_info);
}
void
++<<<<<<< HEAD
+index_selected(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ // called on final select
+ elm_genlist_item_top_bring_in(elm_object_item_data_get(event_info));
++=======
+ _index_selected_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ // called on final select
+ elm_genlist_item_bring_in(elm_object_item_data_get(event_info),
+ ELM_GENLIST_ITEM_SCROLLTO_TOP);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ static void
+ id_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ printf("Current Index : %s\n", elm_index_item_letter_get((const Elm_Object_Item *)event_info));
++>>>>>>> remotes/origin/upstream
}
void
test_index(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *id;
+ Elm_Object_Item *glit;
+ int i, j;
++=======
+ Evas_Object *win, *bg, *bxx, *gl, *id, *bt;
+ Elm_Object_Item *glit;
+ int i, j;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "index", ELM_WIN_BASIC);
elm_win_title_set(win, "Index");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gl);
+ evas_object_show(gl);
+
+ id = elm_index_add(win);
+ evas_object_size_hint_weight_set(id, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, id);
+
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ gl = elm_genlist_add(win);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(gl);
+
+ api->dt.id = id = elm_index_add(win);
+ evas_object_size_hint_weight_set(id, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(id, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_win_resize_object_add(win, id);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, gl);
+
++>>>>>>> remotes/origin/upstream
evas_object_show(id);
itci.item_style = "default";
char buf[32];
snprintf(buf, sizeof(buf), "%c", 'A' + ((j >> 4) & 0xf));
++<<<<<<< HEAD
+ elm_index_item_append(id, buf, glit);
+ }
+ j += 2;
+ }
+ evas_object_smart_callback_add(id, "delay,changed", index_changed2, NULL);
+ evas_object_smart_callback_add(id, "changed", index_changed, NULL);
+ evas_object_smart_callback_add(id, "selected", index_selected, NULL);
+ elm_index_item_go(id, 0);
+
++=======
+ elm_index_item_append(id, buf, id_cb, glit);
+ if (*buf == 'G') /* Just init dt->item later used in API test */
+ api->dt.item = glit;
+ }
+ j += 2;
+ }
+ evas_object_smart_callback_add(id, "delay,changed", _index_delay_changed_cb, NULL);
+ evas_object_smart_callback_add(id, "changed", _index_changed_cb, NULL);
+ evas_object_smart_callback_add(id, "selected", _index_selected_cb, NULL);
+ elm_index_level_go(id, 0);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
snprintf(letter, sizeof(letter), "%c", label[0]);
list_it = elm_list_item_sorted_insert(gui->lst, label, NULL, NULL, NULL,
NULL, test_index2_cmp);
++<<<<<<< HEAD
+ elm_index_item_sorted_insert(gui->id, letter, list_it, test_index2_icmp,
++=======
+ elm_index_item_sorted_insert(gui->id, letter, NULL, list_it, test_index2_icmp,
++>>>>>>> remotes/origin/upstream
test_index2_cmp);
elm_list_go(gui->lst);
/* FIXME it's not showing the recently added item */
{
Test_Index2_Elements *gui = data;
const char *label, *label_next;
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
Elm_Object_Item *list_it, *list_it_next;
Elm_Object_Item *iit;
{
iit = elm_index_item_find(gui->id, list_it);
if (iit) elm_object_item_del(iit);
++<<<<<<< HEAD
+ elm_list_item_del(list_it);
++=======
+ elm_object_item_del(list_it);
++>>>>>>> remotes/origin/upstream
return;
}
else
elm_object_item_del(iit);
++<<<<<<< HEAD
+ elm_list_item_del(list_it);
++=======
+ elm_object_item_del(list_it);
++>>>>>>> remotes/origin/upstream
}
void
gui->id = elm_index_add(win);
evas_object_size_hint_weight_set(gui->id, EVAS_HINT_EXPAND,
++<<<<<<< HEAD
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gui->id);
+ evas_object_smart_callback_add(gui->id, "delay,changed",
+ test_index2_id_changed, NULL);
++=======
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gui->id);
+ evas_object_smart_callback_add(gui->id, "delay,changed",
+ test_index2_id_changed, NULL);
++>>>>>>> remotes/origin/upstream
evas_object_show(gui->id);
gui->entry = elm_entry_add(win);
gui->lst = elm_list_add(win);
elm_box_pack_end(box, gui->lst);
evas_object_size_hint_weight_set(gui->lst, EVAS_HINT_EXPAND,
++<<<<<<< HEAD
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_fill_set(gui->lst, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(gui->lst, "selected", test_index2_it_del,
+ gui);
++=======
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_fill_set(gui->lst, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(gui->lst, "selected", test_index2_it_del,
+ gui);
++>>>>>>> remotes/origin/upstream
elm_list_go(gui->lst);
evas_object_show(gui->lst);
evas_object_resize(win, 320, 480);
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
#endif
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
+void
+test_inwin(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bg, *inwin, *lb;
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *inwin;
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ CONTENT_UNSET,
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ Evas_Object *t;
+ switch(api->state)
+ {
+ case CONTENT_UNSET:
+ t = elm_win_inwin_content_unset(api->inwin);
+ evas_object_del(t);
+ t = elm_label_add(elm_object_parent_widget_get(api->inwin));
+ elm_object_text_set(t, "Content was unset.<br>DONE!");
+ elm_win_inwin_content_set(api->inwin, t);
+ evas_object_show(t);
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
+ void
+ test_inwin(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *inwin, *lb, *bxx, *bt;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "inwin", ELM_WIN_BASIC);
elm_win_title_set(win, "Inwin");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
inwin = elm_win_inwin_add(win);
++<<<<<<< HEAD
++ evas_object_show(inwin);
++
++=======
+ api->inwin = inwin;
evas_object_show(inwin);
+ bxx = elm_box_add(inwin);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ bt = elm_button_add(inwin);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
++>>>>>>> remotes/origin/upstream
lb = elm_label_add(win);
elm_object_text_set(lb,
"This is an \"inwin\" - a window in a<br/>"
"you want centered, taking over the window<br/>"
"until dismissed somehow. Unlike hovers they<br/>"
"don't hover over their target.");
++<<<<<<< HEAD
+ elm_win_inwin_content_set(inwin, lb);
++=======
+ elm_box_pack_end(bxx, lb);
+ elm_win_inwin_content_set(inwin, bxx);
++>>>>>>> remotes/origin/upstream
evas_object_show(lb);
evas_object_resize(win, 320, 240);
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ enum _slide_style
+ {
+ SLIDE_SHORT,
+ SLIDE_LONG,
+ SLIDE_BOUNCE,
+ SLIDE_STYLE_LAST
+ };
+
++>>>>>>> remotes/origin/upstream
void
test_label(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
elm_box_pack_end(bx, lb);
evas_object_show(lb);
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 320, 300);
evas_object_show(bx);
evas_object_show(win);
elm_win_resize_object_add(win, bx);
}
++<<<<<<< HEAD
++=======
+
+ static void
+ _cb_size_radio_changed(void *data, Evas_Object *obj, void *event __UNUSED__)
+ {
+ Evas_Object *lb = (Evas_Object *)data;
+ int style = elm_radio_value_get((Evas_Object *)obj);
+ switch (style)
+ {
+ case SLIDE_SHORT:
+ elm_object_style_set(lb, "slide_short");
+ break;
+
+ case SLIDE_LONG:
+ elm_object_style_set(lb, "slide_long");
+ break;
+
+ case SLIDE_BOUNCE:
+ elm_object_style_set(lb, "slide_bounce");
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _change_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Evas_Object *lb = (Evas_Object *)data;
+ double val = elm_slider_value_get(obj);
+ elm_label_slide_set(lb, EINA_FALSE);
+ elm_label_slide_duration_set(lb, val);
+ elm_label_slide_set(lb, EINA_TRUE);
+ }
+
+ void
+ test_label2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *gd, *rect, *lb, *rd, *rdg, *sl;
+
+ win = elm_win_util_standard_add("label2", "Label 2");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ gd = elm_grid_add(win);
+ elm_grid_size_set(gd, 100, 100);
+ evas_object_size_hint_weight_set(gd, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, gd);
+ evas_object_show(gd);
+
+ /* Test Label Ellipsis */
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "Test Label Ellipsis:");
+ elm_label_slide_set(lb, EINA_TRUE);
+ elm_grid_pack(gd, lb, 5, 5, 90, 10);
+ evas_object_show(lb);
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ elm_grid_pack(gd, rect, 5, 15, 90, 10);
+ evas_object_color_set(rect, 255, 125, 125, 255);
+ evas_object_show(rect);
+
+ lb = elm_label_add(win);
+ elm_object_text_set(lb,
+ "This is a label set to ellipsis. "
+ "If set ellipsis to true and the text doesn't fit "
+ "in the label an ellipsis(\"...\") will be shown "
+ "at the end of the widget."
+ );
+ elm_label_ellipsis_set(lb, EINA_TRUE);
+ elm_grid_pack(gd, lb, 5, 15, 90, 10);
+ evas_object_show(lb);
+
+ /* Test Label Slide */
+ lb = elm_label_add(win);
+ elm_object_text_set(lb, "Test Label Slide:");
+ elm_label_slide_set(lb, EINA_TRUE);
+ elm_grid_pack(gd, lb, 5, 30, 90, 10);
+ evas_object_show(lb);
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ elm_grid_pack(gd, rect, 5, 40, 90, 10);
+ evas_object_color_set(rect, 255, 125, 125, 255);
+ evas_object_show(rect);
+
+ lb = elm_label_add(win);
+ elm_object_style_set(lb, "slide_short");
+ elm_object_text_set(lb,
+ "This is a label set to slide. "
+ "If set slide to true the text of the label "
+ "will slide/scroll through the length of label."
+ "This only works with the themes \"slide_short\", "
+ "\"slide_long\" and \"slide_bounce\"."
+ );
+ elm_label_slide_set(lb, EINA_TRUE);
+ elm_grid_pack(gd, lb, 5, 40, 90, 10);
+ evas_object_show(lb);
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, SLIDE_SHORT);
+ elm_object_text_set(rd, "slide_short");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, lb);
+ elm_grid_pack(gd, rd, 5, 50, 30, 10);
+ evas_object_show(rd);
+ rdg = rd;
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, SLIDE_LONG);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "slide_long");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, lb);
+ elm_grid_pack(gd, rd, 35, 50, 30, 10);
+ evas_object_show(rd);
+
+ rd = elm_radio_add(win);
+ elm_radio_state_value_set(rd, SLIDE_BOUNCE);
+ elm_radio_group_add(rd, rdg);
+ elm_object_text_set(rd, "slide_bounce");
+ evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+ evas_object_smart_callback_add(rd, "changed", _cb_size_radio_changed, lb);
+ elm_grid_pack(gd, rd, 65, 50, 30, 10);
+ evas_object_show(rd);
+
+ sl = elm_slider_add(win);
+ elm_object_text_set(sl, "Slide Duration");
+ elm_slider_unit_format_set(sl, "%1.1f units");
+ elm_slider_min_max_set(sl, 1, 20);
+ elm_slider_value_set(sl, 10);
+ evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
+ evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_smart_callback_add(sl, "changed", _change_cb, lb);
+ elm_grid_pack(gd, sl, 5, 60, 90, 10);
+ evas_object_show(sl);
+
+ evas_object_resize(win, 320, 320);
+ evas_object_show(win);
+ }
++>>>>>>> remotes/origin/upstream
#endif
EINA_LIST_FOREACH(mbs, l, mb)
{
if (elm_mapbuf_enabled_get(mb))
++<<<<<<< HEAD
+ elm_mapbuf_enabled_set(mb, 0);
+ else
+ elm_mapbuf_enabled_set(mb, 1);
++=======
+ elm_mapbuf_enabled_set(mb, EINA_FALSE);
+ else
+ elm_mapbuf_enabled_set(mb, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
}
elm_box_horizontal_set(bx, EINA_TRUE);
sc = elm_scroller_add(win);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 1, 0);
++=======
+ elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_scale_set(ic, 0.5);
snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_table_pack(tb, ic, 1 + i, 1 + (j * 2), 1, 1);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "A");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 1);
++=======
+ elm_check_state_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.20, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "Smo");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 1);
++=======
+ elm_check_state_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.40, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
evas_object_data_set(win, "mbs", mbs);
sc = elm_scroller_add(win);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 1, 0);
++=======
+ elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, sc);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "A");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 1);
++=======
+ elm_check_state_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", alpha_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.20, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "Smo");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 1);
++=======
+ elm_check_state_set(ck, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", smooth_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.40, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
EINA_LIST_FOREACH(mbs, l, mb)
{
if (elm_mapbuf_enabled_get(mb))
++<<<<<<< HEAD
+ elm_mapbuf_enabled_set(mb, 0);
++=======
+ elm_mapbuf_enabled_set(mb, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
else
elm_mapbuf_enabled_set(mb, 1);
}
elm_box_horizontal_set(bx, EINA_TRUE);
sc = elm_scroller_add(win);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 1, 0);
++=======
+ elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_scale_set(ic, 0.5);
snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), n);
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_object_part_content_set(ly2, "slot", ic);
ck = elm_check_add(win);
elm_object_text_set(ck, "Map");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", l3_mode_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.05, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "FS");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", l3_full_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
ck = elm_check_add(win);
elm_object_text_set(ck, "Hid");
++<<<<<<< HEAD
+ elm_check_state_set(ck, 0);
++=======
+ elm_check_state_set(ck, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(ck, "changed", l3_hidden_cb, win);
evas_object_size_hint_weight_set(ck, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ck, 0.5, 0.99);
#include <Elementary.h>
++<<<<<<< HEAD
++=======
+ #include "test.h"
+ #include <Elementary_Cursor.h>
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ struct _api_data
+ {
+ unsigned int state; /* What state we are testing */
+ void *list;
+ };
+ typedef struct _api_data api_data;
+
+ enum _api_state
+ {
+ ITEM_PREPEND, /* 0 */
+ ITEM_INSERT_BEFORE, /* 1 */
+ ITEM_INSERT_AFTER, /* 2 */
+ ITEM_SEPARATOR_SET, /* 3 */
+ LIST_ITEM_DEL, /* 4 */
+ SCROLLER_POLICY_SET_ON,
+ SCROLLER_POLICY_SET_OFF, /* Back to AUTO next */
+ TOOLTIP_TEXT_SET, /* 7 */
+ TOOLTIP_UNSET, /* 8 */
+ ITEM_CURSOR_SET, /* 9 */
+ ITEM_CURSOR_STYLE_SET,
+ DISABLED_SET, /* 11 */
+ MODE_SET_COMPRESS, /* 12 */
+ MODE_SET_LIMIT, /* 13 */
+ MODE_SET_EXPAND, /* 14 */
+ HORIZONTAL_SET, /* 15 */
+ BOUNCE_SET, /* 16 */
+ LIST_CLEAR, /* 17 */
+ API_STATE_LAST
+ };
+ typedef enum _api_state api_state;
+
+ static void
+ set_api_state(api_data *api)
+ {
+ /** HOW TO TEST ************************
+ 0 ITEM PREPEND
+ Scroll to end
+ 1 INSERT BEFORE
+ Scroll to end
+ 2 INSERT AFTER
+ 3 INSERT SEPERATOR
+ Scroll to end
+ 4 ITEM DEL
+ 5 POLICY ON, BOUNCE_SET(TRUE, TRUE)
+ 6 POLICY OFF
+ Scroll to end
+ 7 TOOLTIP last-item
+ 8 Cancel tootip
+ 9 Curosr set on last item
+ 10 Cursor style set last item
+ 11 DISABLE last item
+ 12 MODE COMPRESS
+ 13 MODE LIMIT
+ 14 MODE EXPAND
+ 15 HORIZ SET
+ 16 VERT MODE, BOUNCE(TRUE, FALSE) try to bounce on Y-axis
+ 17 List clear
+ *** HOW TO TEST ***********************/
+ Evas_Object *li = api->list;
+
+ switch(api->state)
+ { /* Put all api-changes under switch */
+ case ITEM_PREPEND: /* 0 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ elm_list_item_prepend(li, "PREPEND", NULL, NULL, NULL, NULL);
+ elm_list_go(li);
+ elm_list_item_bring_in(eina_list_nth(items, 0));
+ }
+ break;
+
+ case ITEM_INSERT_BEFORE: /* 1 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_list_item_insert_before(li,
+ eina_list_nth(items, eina_list_count(items)-1),
+ "1-before-last", NULL, NULL, NULL, NULL);
+ elm_list_go(li);
+ elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));
+ }
+ }
+ break;
+
+ case ITEM_INSERT_AFTER: /* 2 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_list_item_insert_after(li,
+ eina_list_nth(items, eina_list_count(items)-2),
+ "insert-after", NULL, NULL, NULL, NULL);
+ elm_list_go(li);
+ elm_list_item_bring_in(eina_list_data_get(eina_list_last(items)));
+ }
+ }
+ break;
+
+ case ITEM_SEPARATOR_SET: /* 3 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_list_item_separator_set(eina_list_nth(items, eina_list_count(items)-3), EINA_TRUE);
+ elm_list_item_bring_in(eina_list_nth(items, eina_list_count(items)-3));
+ elm_list_go(li);
+ }
+ }
+ break;
+
+ case LIST_ITEM_DEL: /* 4 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_del(eina_list_data_get(eina_list_last(items)));
+ }
+ }
+ break;
+
+ case SCROLLER_POLICY_SET_ON: /* 5 */
+ elm_list_bounce_set(li, EINA_TRUE, EINA_TRUE);
+ elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_ON, ELM_SCROLLER_POLICY_ON);
+ break;
+
+ case SCROLLER_POLICY_SET_OFF: /* Back to AUTO next (6) */
+ elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ break;
+
+ case TOOLTIP_TEXT_SET: /* 7 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_tooltip_text_set(eina_list_data_get(eina_list_last(items)), "Tooltip set from API");
+ }
+ elm_list_scroller_policy_set(li, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO);
+ }
+ break;
+
+ case TOOLTIP_UNSET: /* 8 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_tooltip_unset(eina_list_data_get(eina_list_last(items)));
+ }
+ }
+ break;
+
+ case ITEM_CURSOR_SET: /* 9 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_cursor_set(eina_list_data_get(eina_list_last(items)), ELM_CURSOR_HAND2);
+ }
+ }
+ break;
+
+ case ITEM_CURSOR_STYLE_SET: /* 10 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_cursor_style_set(eina_list_data_get(eina_list_last(items)), "transparent");
+ }
+ }
+ break;
+
+ case DISABLED_SET: /* 11 */
+ {
+ const Eina_List *items = elm_list_items_get(li);
+ if(eina_list_count(items))
+ {
+ elm_object_item_disabled_set(eina_list_data_get(eina_list_last(items)), EINA_TRUE);
+ }
+ }
+ break;
+
+ case MODE_SET_COMPRESS: /* 12 */
+ elm_list_mode_set(li, ELM_LIST_COMPRESS);
+ break;
+
+ case MODE_SET_LIMIT: /* 13 */
+ elm_list_mode_set(li, ELM_LIST_LIMIT);
+ break;
+
+ case MODE_SET_EXPAND: /* 14 */
+ elm_list_mode_set(li, ELM_LIST_EXPAND);
+ break;
+
+ case HORIZONTAL_SET: /* 15 */
+ elm_list_mode_set(li, ELM_LIST_SCROLL); /* return to default mode */
+ elm_list_horizontal_set(li, EINA_TRUE);
+ break;
+
+ case BOUNCE_SET: /* 16 */
+ elm_list_horizontal_set(li, EINA_FALSE);
+ elm_list_bounce_set(li, EINA_TRUE, EINA_FALSE);
+ break;
+
+ case LIST_CLEAR: /* 17 */
+ elm_list_clear(li);
+ break;
+
+ case API_STATE_LAST:
+ break;
+
+ default:
+ return;
+ }
+ }
+
+ static void
+ _api_bt_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+ { /* Will add here a SWITCH command containing code to modify test-object */
+ /* in accordance a->state value. */
+ api_data *a = data;
+ char str[128];
+
+ printf("clicked event on API Button: api_state=<%d>\n", a->state);
+ set_api_state(a);
+ a->state++;
+ sprintf(str, "Next API function (%u)", a->state);
+ elm_object_text_set(obj, str);
+ elm_object_disabled_set(obj, a->state == API_STATE_LAST);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
my_show_it(void *data,
Evas_Object *obj __UNUSED__,
printf("Right edge!\n");
}
++<<<<<<< HEAD
++=======
+ static void
+ _cleanup_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ free(data);
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_list(void *data __UNUSED__,
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *tb2, *bt;
+ char buf[PATH_MAX];
+ Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4, *list_it5;
++=======
+ Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *tb2, *bt, *bxx;
+ char buf[PATH_MAX];
+ Elm_Object_Item *list_it1, *list_it2, *list_it3, *list_it4, *list_it5;
+ api_data *api = calloc(1, sizeof(api_data));
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "list", ELM_WIN_BASIC);
elm_win_title_set(win, "List");
elm_win_autodel_set(win, EINA_TRUE);
++<<<<<<< HEAD
++=======
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
++>>>>>>> remotes/origin/upstream
bg = elm_bg_add(win);
elm_win_resize_object_add(win, bg);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ li = elm_list_add(win);
+ elm_win_resize_object_add(win, li);
+ elm_list_mode_set(li, ELM_LIST_LIMIT);
+ evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++=======
+ bxx = elm_box_add(win);
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ li = elm_list_add(win);
+ elm_list_mode_set(li, ELM_LIST_LIMIT);
+ evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ api->list = li;
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked, (void *) api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(bxx, li);
++>>>>>>> remotes/origin/upstream
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 1, 1);
+ list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 1, 1);
+ list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "edit");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "delete");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_scale_set(ic2, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_resizable_set(ic2, 0, 0);
++>>>>>>> remotes/origin/upstream
list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
bx = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 1, 1);
+ list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 1, 1);
+ list_it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
+ ic = elm_icon_add(win);
+ snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "edit");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "delete");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_scale_set(ic2, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_resizable_set(ic2, 0, 0);
++>>>>>>> remotes/origin/upstream
list_it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
bx = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
elm_list_item_selected_set(list_it, EINA_TRUE);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "edit");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "delete");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_scale_set(ic2, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_resizable_set(ic2, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
bx2 = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx2, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx2, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
ic2 = elm_button_add(win);
elm_object_text_set(ic2, "Click me");
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
ic2 = elm_button_add(win);
elm_object_text_set(ic2, "Click me");
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "edit");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "delete");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_scale_set(ic2, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_resizable_set(ic2, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
bx = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.5);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.5, 0.0);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_align_set(ic, 0.0, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, ic);
evas_object_show(ic);
struct Pginfo
{
++<<<<<<< HEAD
+ Evas_Object *pager, *win;
++=======
+ Evas_Object *naviframe, *win;
++>>>>>>> remotes/origin/upstream
};
static void
struct Pginfo *info = data;
if (!info) return;
++<<<<<<< HEAD
+ elm_pager_content_pop(info->pager);
++=======
+ elm_naviframe_item_pop(info->naviframe);
++>>>>>>> remotes/origin/upstream
}
static void
elm_box_pack_start(box, entry);
elm_box_pack_end(box, button);
++<<<<<<< HEAD
+ elm_pager_content_push(info->pager, box);
++=======
+ elm_naviframe_item_simple_push(info->naviframe, box);
++>>>>>>> remotes/origin/upstream
}
void
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *li, *ic, *ic2, *pager;
++=======
+ Evas_Object *win, *bg, *li, *ic, *ic2, *naviframe;
++>>>>>>> remotes/origin/upstream
static struct Pginfo info = {NULL, NULL};
char buf[PATH_MAX];
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+ pager = elm_pager_add(win);
+ elm_win_resize_object_add(win, pager);
+ evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(pager);
+ info.pager = pager;
++=======
+ naviframe = elm_naviframe_add(win);
+ elm_win_resize_object_add(win, naviframe);
+ evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(naviframe);
+ info.naviframe = naviframe;
++>>>>>>> remotes/origin/upstream
li = elm_list_add(win);
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_list_mode_set(li, ELM_LIST_COMPRESS);
evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);
++<<<<<<< HEAD
+ elm_pager_content_push(pager, li);
++=======
+ elm_naviframe_item_simple_push(naviframe, li);
++>>>>>>> remotes/origin/upstream
static char pf_data[] = "Pink Floyd were formed in 1965, and originally consisted of university" \
"students Roger Waters, Nick Mason, Richard Wright, and Syd Barrett. The group were a popular" \
"conceptalbums The Dark Side of the Moon, Wish You Were Here, Animals, and The Wall.";
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/mystrale.jpg", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "Pink Floyd", ic, NULL, NULL, &pf_data);
"their first album going multi-platinum globally.";
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/mystrale_2.jpg", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "Dire Straits", ic, NULL, NULL, &ds_data);
"perform at stadium-sized venues.";
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_17.png", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 1, 1);
++=======
+ elm_icon_resizable_set(ic, 1, 1);
++>>>>>>> remotes/origin/upstream
elm_icon_file_set(ic, buf, NULL);
elm_list_item_append(li, "Uriah Heep", ic, NULL, NULL, &uh_data);
"two weeks before the group's first United States tour.";
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/icon_21.png", elm_app_data_dir_get());
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
+ elm_icon_file_set(ic, buf, NULL);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_scale_set(ic2, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
+ elm_icon_file_set(ic, buf, NULL);
+ ic2 = elm_icon_add(win);
+ elm_icon_standard_set(ic2, "clock");
+ elm_icon_resizable_set(ic2, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_list_item_append(li, "Rush", ic, ic2, NULL, &r_data);
elm_list_go(li);
#define MARKER_MAX 1000
#define NAME_ENTRY_TEXT "Enter freeform address"
++<<<<<<< HEAD
+typedef struct Marker_Data
+{
+ const char *file;
+} Marker_Data;
++=======
+ typedef struct Overlay_Data
+ {
+ const char *file;
+ } Overlay_Data;
++>>>>>>> remotes/origin/upstream
typedef struct Map_Source
{
char *source_name;
} Map_Source;
++<<<<<<< HEAD
+static Elm_Map_Marker_Class *itc1, *itc2, *itc_parking;
+static Elm_Map_Group_Class *itc_group1, *itc_group2, *itc_group_parking;
+
+static Evas_Object *rect, *menu, *fs_win;
+static int nb_elts;
+/*static Elm_Map_Marker *markers[MARKER_MAX];*/
+static Elm_Map_Marker *route_from, *route_to;
++=======
+ Overlay_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
+ Overlay_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
+ Overlay_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
+ Overlay_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
+ Overlay_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
+ Overlay_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
+ Overlay_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
+ Overlay_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
+ Overlay_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+ Overlay_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+ Overlay_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
+ Overlay_Data parking= {PACKAGE_DATA_DIR"/images/parking.png"};
+ Overlay_Data icon_data = {PACKAGE_DATA_DIR"/images/icon_14.png"};
+
+ static Elm_Map_Overlay *route_start, *route_end, *route_clas;
+ static Elm_Map_Overlay *bubble_img;
+ static Elm_Map_Overlay *bubble_parking;
+ static Elm_Map_Overlay *route_ovl;
+
+ static Evas_Object *menu, *fs_win;
++>>>>>>> remotes/origin/upstream
static Elm_Map_Route *route;
static Elm_Map_Name *name;
static Evas_Object *track;
static Evas_Coord old_d;
static Map_Source ms[SOURCE_MAX];
++<<<<<<< HEAD
+Marker_Data data1 = {PACKAGE_DATA_DIR"/images/logo.png"};
+Marker_Data data2 = {PACKAGE_DATA_DIR"/images/logo_small.png"};
+Marker_Data data3 = {PACKAGE_DATA_DIR"/images/panel_01.jpg"};
+Marker_Data data4 = {PACKAGE_DATA_DIR"/images/plant_01.jpg"};
+Marker_Data data5 = {PACKAGE_DATA_DIR"/images/rock_01.jpg"};
+Marker_Data data6 = {PACKAGE_DATA_DIR"/images/rock_02.jpg"};
+Marker_Data data7 = {PACKAGE_DATA_DIR"/images/sky_01.jpg"};
+Marker_Data data8 = {PACKAGE_DATA_DIR"/images/sky_02.jpg"};
+Marker_Data data9 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+Marker_Data data10 = {PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+Marker_Data data11= {PACKAGE_DATA_DIR"/images/wood_01.jpg"};
+
+Marker_Data data_parking= {PACKAGE_DATA_DIR"/images/parking.png"};
+
+static Evas_Object * _marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data);
+static Evas_Object * _group_icon_get(Evas_Object *obj, void *data);
+
++=======
++>>>>>>> remotes/origin/upstream
static void
#ifdef ELM_EMAP
my_map_gpx_fileselector_done(void *data, Evas_Object *obj __UNUSED__, void *event_info)
evas_object_del(fs_win);
}
++<<<<<<< HEAD
+static void
+my_map_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("clicked\n");
+}
+
+static void
+my_map_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("press\n");
+}
+
+static void
+my_map_longpressed(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+ printf("longpressed\n");
+ double lon, lat;
+ Evas_Event_Mouse_Down *down = (Evas_Event_Mouse_Down *)event_info;
+ if (!down) return;
+ if (elm_map_zoom_get(obj) < 5) return;
+
+ elm_map_canvas_to_geo_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
+ printf("x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
+ name = elm_map_utils_convert_coord_into_name(obj, lon, lat);
+}
+
+static void
+my_map_clicked_double(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+ printf("clicked,double\n");
+ double lon, lat;
+ double flon, flat, tlon, tlat;
++=======
+ static Evas_Object *
+ _route_icon_get(Evas_Object *obj)
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/bubble.png", NULL);
+ evas_object_show(icon);
+
+ return icon;
+ }
+
+ static void
+ _map_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("clicked\n");
+ }
+
+ static void
+ _map_clicked_double(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+ {
+ printf("clicked,double\n");
+ double lon, lat;
++>>>>>>> remotes/origin/upstream
Evas_Event_Mouse_Down *down = (Evas_Event_Mouse_Down *)event_info;
if (!down) return;
if (elm_map_zoom_get(obj) < 5) return;
++<<<<<<< HEAD
+ elm_map_canvas_to_geo_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
+ printf("x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
+ itc1 = elm_map_marker_class_new(obj);
+
+ elm_map_marker_class_del_cb_set(itc1, NULL);
+
+ itc_group1 = elm_map_group_class_new(obj);
+ elm_map_group_class_icon_cb_set(itc_group1, _group_icon_get);
+ elm_map_group_class_data_set(itc_group1, (void *)PACKAGE_DATA_DIR"/images/bubble.png");
+ elm_map_group_class_style_set(itc_group1, "empty");
+ elm_map_group_class_zoom_displayed_set(itc_group1, 5);
+
+ if (route_from && route_to)
+ {
+ elm_map_marker_remove(route_from);
+ route_from = NULL;
+ elm_map_marker_remove(route_to);
+ route_to = NULL;
+ elm_map_route_remove(route);
+ }
+
+ if (!route_from) route_from = elm_map_marker_add(obj, lon, lat, itc1, itc_group1, NULL);
+ else route_to = elm_map_marker_add(obj, lon, lat, itc1, itc_group1, NULL);
+
+ if (route_from && route_to)
+ {
+ elm_map_marker_region_get(route_from, &flon, &flat);
+ elm_map_marker_region_get(route_to, &tlon, &tlat);
+ route = elm_map_route_add(obj, ELM_MAP_ROUTE_TYPE_MOTOCAR, ELM_MAP_ROUTE_METHOD_FASTEST, flon, flat, tlon, tlat);
+ elm_map_route_color_set(route, 255, 0, 0, 255);
++=======
+ elm_map_canvas_to_region_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
+ printf("x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
+
+ if (!route_clas)
+ {
+ route_clas = elm_map_overlay_class_add(obj);
+ elm_map_overlay_icon_set(route_clas, _route_icon_get(obj));
+ elm_map_overlay_displayed_zoom_min_set(route_clas, 5);
+ }
+
+ if (route_start && route_end)
+ {
+ elm_map_overlay_del(route_start);
+ elm_map_overlay_del(route_end);
+ route_start = NULL;
+ route_end = NULL;
+ route = NULL;
+ }
+
+ if (!route_start) route_start = elm_map_overlay_add(obj, lon, lat);
+ else route_end = elm_map_overlay_add(obj, lon, lat);
+
+ if (route_start && route_end)
+ {
+ double start_lon, start_lat, end_lon, end_lat;
+ elm_map_overlay_class_append(route_clas, route_start);
+ elm_map_overlay_class_append(route_clas, route_end);
+ elm_map_overlay_region_get(route_start, &start_lon, &start_lat);
+ elm_map_overlay_region_get(route_end, &end_lon, &end_lat);
+ route = elm_map_route_add(obj, ELM_MAP_ROUTE_TYPE_MOTOCAR,
+ ELM_MAP_ROUTE_METHOD_FASTEST,
+ start_lon, start_lat, end_lon, end_lat,
+ NULL, NULL);
++>>>>>>> remotes/origin/upstream
}
}
static void
++<<<<<<< HEAD
+my_map_load_detail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("load,detail\n");
+}
+
+static void
+my_map_loaded_detail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("loaded,detail\n");
+}
+
+static void
+my_map_zoom_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("zoom,start\n");
+}
+
+static void
+my_map_zoom_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("zoom,stop\n");
+}
+
+static void
+my_map_zoom_change(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("zoom,change\n");
+}
+
+static void
+my_map_anim_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _map_press(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("press\n");
+ }
+
+ static void
+ _map_longpressed(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+ {
+ if (!event_info) return;
+ double lon, lat;
+ Evas_Event_Mouse_Down *down = (Evas_Event_Mouse_Down *)event_info;
+ elm_map_canvas_to_region_convert(obj, down->canvas.x, down->canvas.y, &lon, &lat);
+ printf("longpressed, x:%d, y:%d, lon:%lf, lat:%lf\n", down->canvas.x, down->canvas.y, lon, lat);
+
+ if (elm_map_zoom_get(obj) < 8) return;
+ if (name) elm_map_name_del(name);
+ name = elm_map_name_add(obj, NULL, lon, lat, NULL, NULL);
+ }
+
+ static void
+ _map_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ double lon, lat;
+ elm_map_region_get(obj, &lon, &lat);
+ printf("scroll, longitude: %f latitude: %f\n", lon, lat);
+ }
+
+ static void
+ _map_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("scroll,drag,start\n");
+ evas_object_smart_callback_del(data, "longpressed", _map_longpressed);
+ }
+
+ static void
+ _map_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("scroll,drag,stop\n");
+ evas_object_smart_callback_add(data, "longpressed", _map_longpressed, data);
+ }
+
+ static void
+ _map_anim_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("scroll,anim,start\n");
}
static void
++<<<<<<< HEAD
+my_map_anim_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _map_anim_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("scroll,anim,stop\n");
}
static void
++<<<<<<< HEAD
+my_map_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("scroll,drag,start\n");
+ evas_object_smart_callback_del(data, "longpressed", my_map_longpressed);
+}
+
+static void
+my_map_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ printf("scroll,drag,stop\n");
+ evas_object_smart_callback_add(data, "longpressed", my_map_longpressed, data);
+}
+
+static void
+my_map_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ printf("scroll\n");
+ double lon, lat;
+ elm_map_geo_region_get(obj, &lon, &lat);
+ printf("scroll longitude : %f latitude : %f\n", lon, lat);
+}
+
+static void
+my_map_downloaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ int try_num, finish_num;
+ elm_map_utils_downloading_status_get(data, &try_num, &finish_num);
+ printf("downloaded : %d / %d\n", finish_num, try_num);
+}
+
+static void
+my_map_route_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _map_zoom_start(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("zoom,start\n");
+ }
+
+ static void
+ _map_zoom_stop(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("zoom,stop\n");
+ }
+
+ static void
+ _map_zoom_change(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("zoom,change\n");
+ }
+
+ static void
+ _map_tile_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("tile,load\n");
+ }
+
+ static void
+ _map_tile_loaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ int try_num, finish_num;
+ elm_map_tile_load_status_get(data, &try_num, &finish_num);
+ printf("tile,loaded: %d / %d\n", finish_num, try_num);
+ }
+
+ static void
+ _map_tile_loaded_fail(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ int try_num, finish_num;
+ elm_map_tile_load_status_get(data, &try_num, &finish_num);
+ printf("tile,loaded,fail: %d / %d\n", finish_num, try_num);
+ }
+
+ static void
+ _map_route_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("route,load\n");
}
static void
++<<<<<<< HEAD
+my_map_route_loaded(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _map_route_loaded(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("route,loaded\n");
double d;
const char *w, *n;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
d = elm_map_route_distance_get(route);
printf("route distance = %lf km\n", d);
n = elm_map_route_node_get(route);
if (n) printf("[nodes]\n%s\n", n);
++<<<<<<< HEAD
+}
+
+static void
+my_map_name_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+
+ if (route_ovl) elm_map_overlay_del(route_ovl);
+ route_ovl = elm_map_overlay_route_add(obj, route);
+ elm_map_overlay_color_set(route_ovl, 255, 0, 0, 255);
+ }
+
+ static void
+ _map_route_loaded_fail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("route,loaded,fail\n");
+ }
+
+ static void
+ _map_name_load(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("name,load\n");
}
static void
++<<<<<<< HEAD
+my_map_name_loaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _map_name_loaded(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
printf("name,loaded\n");
if (!name) return;
Eina_Bool b = elm_map_paused_get(data);
elm_map_paused_set(data, EINA_TRUE);
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
++<<<<<<< HEAD
+ elm_map_geo_region_show(data, lon, lat);
+ elm_map_zoom_set(data, elm_map_source_zoom_max_get(data));
+ elm_map_paused_set(data, b);
+ }
+ }
+ elm_map_name_remove(name);
++=======
+ elm_map_zoom_set(data, elm_map_zoom_max_get(data));
+ elm_map_region_show(data, lon, lat);
+ elm_map_paused_set(data, b);
+ }
+ }
+
+ elm_map_name_del(name);
+ name = NULL;
+ }
+
+ static void
+ _map_name_loaded_fail(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ printf("name,loaded,fail\n");
++>>>>>>> remotes/origin/upstream
}
static void
Eina_Bool b = elm_map_paused_get(data);
elm_map_paused_set(data, EINA_TRUE);
elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
++<<<<<<< HEAD
+ elm_map_geo_region_show(data,7.325201, 48.526813);
++=======
+ elm_map_region_show(data,7.325201, 48.526813);
++>>>>>>> remotes/origin/upstream
elm_map_zoom_set(data, 12);
elm_map_paused_set(data, b);
}
static void
map_bring_seoul(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_map_geo_region_bring_in(data, 126.977969, 37.566535);
++=======
+ elm_map_region_bring_in(data, 126.977969, 37.566535);
++>>>>>>> remotes/origin/upstream
}
static void
static void
map_zoom_min_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_map_source_zoom_min_set(data, 1);
++=======
+ elm_map_zoom_min_set(data, 1);
++>>>>>>> remotes/origin/upstream
}
static void
map_zoom_max_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_map_source_zoom_max_set(data, 10);
++=======
+ elm_map_zoom_max_set(data, 10);
++>>>>>>> remotes/origin/upstream
}
static void
Map_Source *s = data;
if (!s) return;
++<<<<<<< HEAD
+ elm_map_source_name_set(s->map, s->source_name);
++=======
+ elm_map_source_set(s->map, ELM_MAP_SOURCE_TYPE_TILE, s->source_name);
++>>>>>>> remotes/origin/upstream
}
/*
int i;
Elm_Map_Group_Class *g_clas;
Elm_Map_Marker_Class *m_clas;
++<<<<<<< HEAD
+ Marker_Data *d = &data7;
++=======
+ Overlay_Data *d = &data7;
++>>>>>>> remotes/origin/upstream
if (*markers) return;
for (i =0; i<MARKER_MAX; i++)
else
{
m_clas = itc_parking;
++<<<<<<< HEAD
+ d = &data_parking;
++=======
+ d = &parking;
++>>>>>>> remotes/origin/upstream
}
style = rand() % 2;
*/
static Evas_Object *
++<<<<<<< HEAD
+_marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
+{
+ Marker_Data *d = data;
+
+ Evas_Object *bx = elm_box_add(obj);
+ evas_object_show(bx);
+
+ if (d == &data3)
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, d->file, NULL);
+ evas_object_show(icon);
+
+ Evas_Object *o = elm_button_add(obj);
+ elm_object_part_content_set(o, "icon", icon);
+ evas_object_show(o);
+ elm_box_pack_end(bx, o);
+ }
+ else
+ {
+ Evas_Object *o = evas_object_image_add(evas_object_evas_get(obj));
+ evas_object_image_file_set(o, d->file, NULL);
+ evas_object_image_filled_set(o, EINA_TRUE);
+ evas_object_size_hint_min_set(o, 64, 64);
+ evas_object_show(o);
+ elm_box_pack_end(bx, o);
+
+ Evas_Object *lbl = elm_label_add(obj);
+ elm_object_text_set(lbl, "Wolves Go !");
+ evas_object_show(lbl);
+ elm_box_pack_end(bx, lbl);
+ }
+
++=======
+ _box_get(Evas_Object *obj, Overlay_Data *data)
+ {
+ Evas_Object *bx, *img, *label;
+ bx = elm_box_add(obj);
+ evas_object_show(bx);
+
+ img = evas_object_image_add(evas_object_evas_get(obj));
+ evas_object_image_file_set(img, data->file, NULL);
+ evas_object_image_filled_set(img, EINA_TRUE);
+ evas_object_size_hint_min_set(img, 64, 64);
+ evas_object_show(img);
+ elm_box_pack_end(bx, img);
+
+ label = elm_label_add(obj);
+ elm_object_text_set(label, "Wolves go!!");
+ evas_object_show(label);
+ elm_box_pack_end(bx, label);
++>>>>>>> remotes/origin/upstream
return bx;
}
static Evas_Object *
++<<<<<<< HEAD
+_icon_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
+{
+ Marker_Data *d = data;
+
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, d->file, NULL);
+ evas_object_show(icon);
+
+ return icon;
+}
+
+static Evas_Object *
+_group_icon_get(Evas_Object *obj, void *data)
+{
+ char *file = data;
+
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, file, NULL);
++=======
+ _icon_get(Evas_Object *obj, Overlay_Data *data)
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, data->file, NULL);
++>>>>>>> remotes/origin/upstream
evas_object_show(icon);
return icon;
}
static void
++<<<<<<< HEAD
+_map_move_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ int x,y,w,h;
+
+ evas_object_geometry_get(data,&x,&y,&w,&h);
+ evas_object_resize(rect,w,h);
+ evas_object_move(rect,x,y);
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_populate(void *data, Elm_Object_Item *menu_it)
{
int idx;
}
}
++<<<<<<< HEAD
++=======
+ static void
+ _overlay_cb(void *data __UNUSED__, Evas_Object *map, void *ev)
+ {
+ printf("Overlay clicked: ");
+ Elm_Map_Overlay *overlay = ev;
+ Evas_Object *bx;
+
+ Overlay_Data *od = elm_map_overlay_data_get(overlay);
+ if (!od)
+ {
+ printf("No overlay data\n");
+ }
+ else if (elm_map_overlay_type_get(overlay) == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ // prevent duplication
+ if (!bubble_img) bubble_img = elm_map_overlay_bubble_add(map);
+
+ elm_map_overlay_bubble_follow(bubble_img, overlay);
+ bx = _box_get(map, od);
+ elm_map_overlay_bubble_content_clear(bubble_img);
+ elm_map_overlay_bubble_content_append(bubble_img, bx);
+ printf("overlay rendered\n");
+ }
+ else printf("not default type\n");
+ }
+
+ static void
+ _parking_cb(void *data __UNUSED__, Evas_Object *map, const Elm_Map_Overlay *ovl)
+ {
+ if (elm_map_overlay_type_get(ovl) != ELM_MAP_OVERLAY_TYPE_DEFAULT) return;
+
+ double lon, lat;
+ Evas_Coord x, y;
+ elm_map_overlay_region_get(ovl, &lon, &lat);
+ elm_map_region_to_canvas_convert(map, lon, lat, &x, &y);
+ printf("Parking clicked: %lf %lf %d %d\n", lon, lat, x, y);
+
+ if (!bubble_parking)
+ {
+ Evas_Object *bubble, *label;
+ bubble = elm_bubble_add(map);
+ elm_bubble_pos_set(bubble, ELM_BUBBLE_POS_BOTTOM_LEFT);
+ elm_object_text_set(bubble, "Overlay object");
+ elm_object_part_text_set(bubble, "info", "Bubble is overlayed");
+
+ label = elm_label_add(bubble);
+ elm_object_text_set(label, "Parking Here !!");
+ evas_object_show(label);
+ elm_object_content_set(bubble, label);
+
+ evas_object_resize(bubble, 125, 50);
+ evas_object_show(bubble);
+
+ bubble_parking = elm_map_overlay_add(map, lon + 0.0006, lat + 0.0006);
+ elm_map_overlay_content_set(bubble_parking, bubble);
+ }
+ elm_map_overlay_region_set(bubble_parking, lon + 0.0006, lat + 0.0006);
+ }
+
+ static void
+ _del_map(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *ei __UNUSED__)
+ {
+ if (route_start) elm_map_overlay_del(route_start);
+ if (route_end) elm_map_overlay_del(route_end);
+ if (route_clas) elm_map_overlay_del(route_clas);
+ if (bubble_img) elm_map_overlay_del(bubble_img);
+ if (bubble_parking) elm_map_overlay_del(bubble_parking);
+ if (route_ovl) elm_map_overlay_del(route_ovl);
+ route_start = NULL;
+ route_end = NULL;
+ route_clas = NULL;
+ bubble_img = NULL;
+ bubble_parking = NULL;
+ route_ovl = NULL;
+
+ if (route) elm_map_route_del(route);
+ if (name) elm_map_name_del(name);
+ route = NULL;
+ name = NULL;
+ }
+
++>>>>>>> remotes/origin/upstream
void
test_map(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
map = elm_map_add(win);
if (map)
{
++<<<<<<< HEAD
+ srand(time(NULL));
+
+ source_names = elm_map_source_names_get(map);
+
+ if (!source_names) return;
+ printf("map sources [ ");
+ for (idx = 0; source_names[idx] ; idx++) printf("%s ", source_names[idx]);
++=======
+ Elm_Map_Overlay *ovl_1, *ovl_2, *ovl_3, *ovl_4, *ovl_5, *ovl6;
+ Elm_Map_Overlay *ovl_7, *ovl_8, *ovl_9, *ovl_10, *ovl_11;
+ Elm_Map_Overlay *parking1, *parking2, *parking3, *parking4, *parking5;
+ Elm_Map_Overlay *grp1, *grp2, *grp_parking;
+
+ evas_object_event_callback_add(map, EVAS_CALLBACK_DEL, _del_map, NULL);
+
+ srand(time(NULL));
+
+ source_names = elm_map_sources_get(map, ELM_MAP_SOURCE_TYPE_TILE);
+
+ if (!source_names) return;
+ printf("map sources [ ");
+ for (idx = 0; source_names[idx] ; idx++) printf("%s, ", source_names[idx]);
++>>>>>>> remotes/origin/upstream
printf("]\n");
evas_object_size_hint_weight_set(map, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, map);
evas_object_data_set(map, "window", win);
++<<<<<<< HEAD
+ //
+ itc1 = elm_map_marker_class_new(map);
+ elm_map_marker_class_get_cb_set(itc1, _marker_get);
+ elm_map_marker_class_del_cb_set(itc1, NULL);
+
+ itc2 = elm_map_marker_class_new(map);
+ elm_map_marker_class_get_cb_set(itc2, _marker_get);
+ elm_map_marker_class_del_cb_set(itc2, NULL);
+ elm_map_marker_class_style_set(itc2, "radio2");
+
+ itc_parking = elm_map_marker_class_new(map);
+ elm_map_marker_class_get_cb_set(itc_parking, _marker_get);
+ elm_map_marker_class_del_cb_set(itc_parking, NULL);
+ elm_map_marker_class_icon_cb_set(itc_parking, _icon_get);
+ elm_map_marker_class_style_set(itc_parking, "empty");
+ //
+
+ //
+ itc_group1 = elm_map_group_class_new(map);
+ elm_map_group_class_data_set(itc_group1, (void *)PACKAGE_DATA_DIR"/images/plant_01.jpg");
+
+ itc_group2 = elm_map_group_class_new(map);
+ elm_map_group_class_style_set(itc_group2, "radio2");
+ elm_map_group_class_zoom_displayed_set(itc_group1, 3);
+
+ itc_group_parking = elm_map_group_class_new(map);
+ elm_map_group_class_icon_cb_set(itc_group_parking, _group_icon_get);
+ elm_map_group_class_data_set(itc_group_parking, (void *)PACKAGE_DATA_DIR"/images/parking.png");
+ elm_map_group_class_style_set(itc_group_parking, "empty");
+ elm_map_group_class_zoom_displayed_set(itc_group_parking, 5);
+ //
+
+ rect = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(rect, 0, 0, 0, 0);
+ evas_object_repeat_events_set(rect,1);
+ evas_object_show(rect);
+ evas_object_raise(rect);
+
+ evas_object_event_callback_add(map, EVAS_CALLBACK_RESIZE,
+ _map_move_resize_cb, map);
+ evas_object_event_callback_add(map, EVAS_CALLBACK_MOVE,
+ _map_move_resize_cb, map);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_DOWN,
_map_mouse_down, map);
evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_MOVE,
evas_object_event_callback_add(map, EVAS_CALLBACK_MOUSE_UP,
_map_mouse_up, map);
++<<<<<<< HEAD
+ elm_map_marker_add(map, 2.352, 48.857, itc1, itc_group1, &data1);
+ elm_map_marker_add(map, 2.355, 48.857, itc1, itc_group1, &data3);
+ elm_map_marker_add(map, 3, 48.857, itc2, itc_group1, &data2);
+ elm_map_marker_add(map, 2.352, 49, itc2, itc_group1, &data1);
+
+ elm_map_marker_add(map, 7.31451, 48.857127, itc1, itc_group1, &data10);
+ elm_map_marker_add(map, 7.314704, 48.857119, itc1, itc_group1, &data4);
+ elm_map_marker_add(map, 7.314704, 48.857119, itc2, itc_group1, &data5);
+ elm_map_marker_add(map, 7.31432, 48.856785, itc2, itc_group1, &data6);
+ elm_map_marker_add(map, 7.3148, 48.85725, itc1, itc_group2, &data7);
+ elm_map_marker_add(map, 7.316445, 48.8572210000694, itc1, itc_group1, &data8);
+ elm_map_marker_add(map, 7.316527000125, 48.85609, itc2, itc_group2, &data9);
+ elm_map_marker_add(map, 7.3165409990833, 48.856078, itc2, itc_group1, &data11);
+ elm_map_marker_add(map, 7.319812, 48.856561, itc2, itc_group2, &data10);
+
+ nb_elts = 13;
+
+ evas_object_smart_callback_add(map, "clicked", my_map_clicked, map);
+ evas_object_smart_callback_add(map, "press", my_map_press, map);
+ evas_object_smart_callback_add(map, "longpressed", my_map_longpressed, map);
+ evas_object_smart_callback_add(map, "clicked,double", my_map_clicked_double, map);
+ evas_object_smart_callback_add(map, "load,detail", my_map_load_detail, map);
+ evas_object_smart_callback_add(map, "loaded,detail", my_map_loaded_detail, map);
+ evas_object_smart_callback_add(map, "zoom,start", my_map_zoom_start, map);
+ evas_object_smart_callback_add(map, "zoom,stop", my_map_zoom_stop, map);
+ evas_object_smart_callback_add(map, "zoom,change", my_map_zoom_change, map);
+ evas_object_smart_callback_add(map, "scroll,anim,start", my_map_anim_start, map);
+ evas_object_smart_callback_add(map, "scroll,anim,stop", my_map_anim_stop, map);
+ evas_object_smart_callback_add(map, "scroll,drag,start", my_map_drag_start, map);
+ evas_object_smart_callback_add(map, "scroll,drag,stop", my_map_drag_stop, map);
+ evas_object_smart_callback_add(map, "scroll", my_map_scroll, map);
+ evas_object_smart_callback_add(map, "downloaded", my_map_downloaded, map);
+ evas_object_smart_callback_add(map, "route,load", my_map_route_load, map);
+ evas_object_smart_callback_add(map, "route,loaded", my_map_route_loaded, map);
+ evas_object_smart_callback_add(map, "name,load", my_map_name_load, map);
+ evas_object_smart_callback_add(map, "name,loaded", my_map_name_loaded, map);
++=======
+ evas_object_smart_callback_add(map, "clicked", _map_clicked, map);
+ evas_object_smart_callback_add(map, "clicked,double", _map_clicked_double, map);
+ evas_object_smart_callback_add(map, "press", _map_press, map);
+ evas_object_smart_callback_add(map, "longpressed", _map_longpressed, map);
+ evas_object_smart_callback_add(map, "scroll", _map_scroll, map);
+ evas_object_smart_callback_add(map, "scroll,drag,start", _map_drag_start, map);
+ evas_object_smart_callback_add(map, "scroll,drag,stop", _map_drag_stop, map);
+ evas_object_smart_callback_add(map, "scroll,anim,start", _map_anim_start, map);
+ evas_object_smart_callback_add(map, "scroll,anim,stop", _map_anim_stop, map);
+ evas_object_smart_callback_add(map, "zoom,start", _map_zoom_start, map);
+ evas_object_smart_callback_add(map, "zoom,stop", _map_zoom_stop, map);
+ evas_object_smart_callback_add(map, "zoom,change", _map_zoom_change, map);
+ evas_object_smart_callback_add(map, "tile,load", _map_tile_load, map);
+ evas_object_smart_callback_add(map, "tile,loaded", _map_tile_loaded, map);
+ evas_object_smart_callback_add(map, "tile,loaded,fail", _map_tile_loaded_fail, map);
+ evas_object_smart_callback_add(map, "route,load", _map_route_load, map);
+ evas_object_smart_callback_add(map, "route,loaded", _map_route_loaded, map);
+ evas_object_smart_callback_add(map, "route,loaded,fail", _map_route_loaded_fail, map);
+ evas_object_smart_callback_add(map, "name,load", _map_name_load, map);
+ evas_object_smart_callback_add(map, "name,loaded", _map_name_loaded, map);
+ evas_object_smart_callback_add(map, "name,loaded,fail", _map_name_loaded_fail, map);
+ evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, map);
+
+ // Create Overlays
+ ovl_1 = elm_map_overlay_add(map, 2.352, 48.857);
+ ovl_2 = elm_map_overlay_add(map, 3, 48.857);
+ ovl_3 = elm_map_overlay_add(map, 2.352, 49);
+ ovl_4 = elm_map_overlay_add(map, 7.31451, 48.857127);
+ ovl_5 = elm_map_overlay_add(map, 7.314704, 48.857119);
+ ovl6 = elm_map_overlay_add(map, 7.31432, 48.856785);
+ ovl_7 = elm_map_overlay_add(map, 7.3148, 48.85725);
+ ovl_8 = elm_map_overlay_add(map, 7.316445, 48.8572210000694);
+ ovl_9 = elm_map_overlay_add(map, 7.316527000125, 48.85609);
+ ovl_10 = elm_map_overlay_add(map, 7.3165409990833, 48.856078);
+ ovl_11 = elm_map_overlay_add(map, 7.319812, 48.856561);
+ elm_map_overlay_data_set(ovl_1, &data1);
+ elm_map_overlay_data_set(ovl_2, &data2);
+ elm_map_overlay_data_set(ovl_3, &data3);
+ elm_map_overlay_data_set(ovl_4, &data4);
+ elm_map_overlay_data_set(ovl_5, &data5);
+ elm_map_overlay_data_set(ovl6, &data6);
+ elm_map_overlay_data_set(ovl_7, &data7);
+ elm_map_overlay_data_set(ovl_8, &data8);
+ elm_map_overlay_data_set(ovl_9, &data9);
+ elm_map_overlay_data_set(ovl_10, &data10);
+ elm_map_overlay_data_set(ovl_11, &data11);
+
+ // Append overlays to groups
+ grp1 = elm_map_overlay_class_add(map);
+ elm_map_overlay_displayed_zoom_min_set(grp1, 3);
+ elm_map_overlay_class_append(grp1, ovl_1);
+ elm_map_overlay_class_append(grp1, ovl_2);
+ elm_map_overlay_class_append(grp1, ovl_3);
+ elm_map_overlay_class_append(grp1, ovl_4);
+ elm_map_overlay_class_append(grp1, ovl_5);
+ elm_map_overlay_class_append(grp1, ovl6);
+ evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, map);
+
+ // Append overlays to groups
+ grp2 = elm_map_overlay_class_add(map);
+ elm_map_overlay_class_append(grp2, ovl_7);
+ elm_map_overlay_class_append(grp2, ovl_8);
+ elm_map_overlay_class_append(grp2, ovl_9);
+ elm_map_overlay_class_append(grp2, ovl_10);
+ elm_map_overlay_class_append(grp2, ovl_11);
+
+ // Create overlays
+ parking1 = elm_map_overlay_add(map, 127.04871, 37.25730);
+ parking2 = elm_map_overlay_add(map, 127.05578, 37.25545);
+ parking3 = elm_map_overlay_add(map, 127.05515, 37.25439);
+ parking4 = elm_map_overlay_add(map, 127.05328, 37.25721);
+ parking5 = elm_map_overlay_add(map, 127.05431, 37.25873);
+ elm_map_overlay_icon_set(parking4, _icon_get(map, &icon_data));
+ elm_map_overlay_get_cb_set(parking1, _parking_cb, NULL);
+ elm_map_overlay_get_cb_set(parking2, _parking_cb, NULL);
+ elm_map_overlay_get_cb_set(parking3, _parking_cb, NULL);
+ elm_map_overlay_get_cb_set(parking4, _parking_cb, NULL);
+ elm_map_overlay_get_cb_set(parking5, _parking_cb, NULL);
+
+ // Append overlays to groups
+ grp_parking = elm_map_overlay_class_add(map);
+ elm_map_overlay_icon_set(grp_parking, _icon_get(map, &parking));
+ elm_map_overlay_class_append(grp_parking, parking1);
+ elm_map_overlay_class_append(grp_parking, parking2);
+ elm_map_overlay_class_append(grp_parking, parking3);
+ elm_map_overlay_class_append(grp_parking, parking4);
+ elm_map_overlay_class_append(grp_parking, parking5);
++>>>>>>> remotes/origin/upstream
evas_object_show(map);
}
}
static void
++<<<<<<< HEAD
+_populate_1(Evas_Object *win, Elm_Object_Item *menu_it)
+{
+ Elm_Object_Item *menu_it2;
+ Evas_Object *radio;
+
+ radio = elm_radio_add(win);
++=======
+ _populate_1(Evas_Object *obj, Elm_Object_Item *menu_it)
+ {
+ Elm_Object_Item *menu_it2, *menu_it3;
+ Evas_Object *radio;
+
+ radio = elm_radio_add(obj);
++>>>>>>> remotes/origin/upstream
elm_radio_state_value_set(radio, 0);
elm_radio_value_set(radio, 0);
elm_object_text_set(radio, "radio in menu");
menu_it2 = elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1",
NULL, NULL);
++<<<<<<< HEAD
+ elm_menu_item_add_object(menu, menu_it, radio, NULL, NULL);
++=======
+ menu_it3 = elm_menu_item_add(menu, menu_it, NULL, NULL, NULL, NULL);
+ elm_object_item_content_set(menu_it3, radio);
++>>>>>>> remotes/origin/upstream
_populate_2(menu_it2);
}
rect = evas_object_rectangle_add(evas_object_evas_get(win));
elm_win_resize_object_add(win, rect);
++<<<<<<< HEAD
++=======
+ evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++>>>>>>> remotes/origin/upstream
evas_object_color_set(rect, 0, 0, 0, 0);
evas_object_show(rect);
void *event_info __UNUSED__ )
{
//Unset the multibuttonentry to contracted mode of single line
++<<<<<<< HEAD
+ elm_multibuttonentry_shrink_mode_set(obj, 0);
++=======
+ elm_multibuttonentry_expanded_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
printf("A multibuttonentry is clicked!\n");
Evas_Object *entry;
entry = elm_multibuttonentry_entry_get(obj);
void *event_info __UNUSED__ )
{
//Set the multibuttonentry to contracted mode of single line
++<<<<<<< HEAD
+ elm_multibuttonentry_shrink_mode_set(obj, 1);
++=======
+ elm_multibuttonentry_expanded_set(obj, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
printf("multibuttonentry unfocused!\n");
}
// "contracted" smart callback
static void
++<<<<<<< HEAD
+_shrank_cb(void *data __UNUSED__,
+ Evas_Object *obj __UNUSED__,
+ void *event_info __UNUSED__)
+{
+ printf("shrank!\n");
++=======
+ _contracted_cb(void *data __UNUSED__,
+ Evas_Object *obj __UNUSED__,
+ void *event_info __UNUSED__)
+ {
+ printf("contracted!\n");
++>>>>>>> remotes/origin/upstream
}
// "contracted,state,changed" smart callback
mbe = elm_multibuttonentry_add(parent);
elm_object_text_set(mbe, "To: ");
++<<<<<<< HEAD
+ elm_multibuttonentry_guide_text_set(mbe, "Tap to add recipient");
++=======
+ elm_object_part_text_set(mbe, "guide", "Tap to add recipient");
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(mbe, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(scr, mbe);
evas_object_smart_callback_add(mbe, "unfocused", _mbe_unfocused_cb, NULL);
evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, NULL);
++<<<<<<< HEAD
+ evas_object_smart_callback_add(mbe, "shrank", _shrank_cb, NULL);
++=======
+ evas_object_smart_callback_add(mbe, "contracted", _contracted_cb, NULL);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(mbe, "shrink,state,changed", _shrink_state_changed_cb, NULL);
evas_object_resize(mbe, 220, 300);
}
void
++<<<<<<< HEAD
+_title_visible(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _title_visible(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
elm_naviframe_item_title_visible_set(data,
!elm_naviframe_item_title_visible_get(data));
}
void
++<<<<<<< HEAD
+_promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _promote(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
elm_naviframe_item_promote(data);
}
evas_object_data_get(nf, "page1"));
content = _content_new(nf, img5);
++<<<<<<< HEAD
+ it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf),
++=======
+ it = elm_naviframe_item_insert_after(obj,
+ elm_naviframe_top_item_get(nf),
++>>>>>>> remotes/origin/upstream
"Page 5",
bt,
bt2,
evas_object_show(bt);
notify = elm_notify_add(win);
++<<<<<<< HEAD
+ elm_notify_repeat_events_set(notify, EINA_FALSE);
++=======
+ elm_notify_allow_events_set(notify, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
elm_notify_timeout_set(notify, 5.0);
#endif
#ifndef ELM_LIB_QUICKLAUNCH
++<<<<<<< HEAD
++=======
+ #define LIST_ITEM_MAX 20
+
++>>>>>>> remotes/origin/upstream
static Elm_Genlist_Item_Class itc;
static void _bstatus(void *data, Evas_Object *obj, void *event_info);
static void _fill_list(Evas_Object *obj);
static Eina_Bool _dir_has_subs(const char *path);
++<<<<<<< HEAD
++=======
+ static Eina_List *dirs = NULL;
+
++>>>>>>> remotes/origin/upstream
static void
_tstatus(void *data, Evas_Object *obj, void *event_info __UNUSED__)
{
{
DIR *d;
struct dirent *de;
++<<<<<<< HEAD
+ Eina_List *dirs = NULL, *l;
+ char *real;
+
+ if (!(d = opendir(getenv("HOME")))) return;
+ while ((de = readdir(d)))
+ {
+ char buff[PATH_MAX];
+
+ if (de->d_name[0] == '.') continue;
+ snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
+ if (!ecore_file_is_dir(buff)) continue;
+ real = ecore_file_realpath(buff);
+ dirs = eina_list_append(dirs, real);
+ }
+ closedir(d);
+
+ dirs = eina_list_sort(dirs, eina_list_count(dirs), EINA_COMPARE_CB(strcoll));
+
++=======
+ Eina_List *l;
+ char *real;
+ unsigned int x = 0;
+
+ if (!dirs)
+ {
+ if (!(d = opendir(getenv("HOME")))) return;
+ while ((de = readdir(d)) && (x < LIST_ITEM_MAX))
+ {
+ char buff[PATH_MAX];
+
+ if (de->d_name[0] == '.') continue;
+ snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
+ if (!ecore_file_is_dir(buff)) continue;
+ x++;
+ real = ecore_file_realpath(buff);
+ dirs = eina_list_sorted_insert(dirs, EINA_COMPARE_CB(strcoll), real);
+ }
+ closedir(d);
+ }
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(dirs, l, real)
{
Eina_Bool result = EINA_FALSE;
NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
else
elm_genlist_item_append(obj, &itc, eina_stringshare_add(real),
++<<<<<<< HEAD
+ NULL, ELM_GENLIST_ITEM_SUBITEMS,
+ NULL, NULL);
+ free(real);
+ }
+ eina_list_free(dirs);
++=======
+ NULL, ELM_GENLIST_ITEM_TREE,
+ NULL, NULL);
+ }
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
evas_object_show(panel);
_fill_list(list);
++<<<<<<< HEAD
++=======
+ {
+ char *dir;
+ EINA_LIST_FREE(dirs, dir)
+ free(dir);
+ }
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(vbx, bx);
elm_photo_thumb_set(ph, buf, NULL);
else
elm_photo_file_set(ph, buf);
++<<<<<<< HEAD
+ elm_photo_editable_set(ph, 1);
++=======
+ elm_photo_editable_set(ph, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(ph, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(ph, EVAS_HINT_FILL,
my_ph_scroll(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
{
int x, y, w, h;
++<<<<<<< HEAD
+ elm_photocam_region_get(obj, &x, &y, &w, &h);
++=======
+ elm_photocam_image_region_get(obj, &x, &y, &w, &h);
++>>>>>>> remotes/origin/upstream
printf("scroll %i %i %ix%i\n", x, y, w, h);
}
}
static void
++<<<<<<< HEAD
++=======
+ my_bt_gesture(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_photocam_gesture_enabled_set(data, !elm_photocam_gesture_enabled_get(data));
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_photocam_mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
{
Evas_Object *photocam = data;
elm_table_pack(tb2, bt, 2, 1, 1, 1);
evas_object_show(bt);
++<<<<<<< HEAD
++=======
+ box = elm_box_add(win);
+ elm_box_horizontal_set(box, EINA_TRUE);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(box, 0.0, 0.9);
+ elm_table_pack(tb2, box, 0, 2, 1, 1);
+ evas_object_show(box);
+
++>>>>>>> remotes/origin/upstream
bt = elm_button_add(win);
elm_object_text_set(bt, "Pause On/Off");
evas_object_smart_callback_add(bt, "clicked", my_bt_pause, ph);
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ evas_object_size_hint_align_set(bt, 0.1, 0.9);
+ elm_table_pack(tb2, bt, 0, 2, 1, 1);
++=======
+ elm_box_pack_end(box, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Gesture On/Off");
+ evas_object_smart_callback_add(bt, "clicked", my_bt_gesture, ph);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_box_pack_end(box, bt);
++>>>>>>> remotes/origin/upstream
evas_object_show(bt);
box = elm_box_add(win);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 1);
elm_radio_state_value_set(rd, 3);
elm_radio_group_add(rd, rdg);
elm_object_text_set(rd, "Disabled");
++<<<<<<< HEAD
+ elm_object_disabled_set(rd, 1);
++=======
+ elm_object_disabled_set(rd, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, rd);
evas_object_show(rd);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 4);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
rd = elm_radio_add(win);
elm_radio_state_value_set(rd, 5);
elm_radio_group_add(rd, rdg);
elm_object_part_content_set(rd, "icon", ic);
++<<<<<<< HEAD
+ elm_object_disabled_set(rd, 1);
++=======
+ elm_object_disabled_set(rd, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, rd);
evas_object_show(rd);
evas_object_show(ic);
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, 0.5);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 1, 0);
++=======
+ elm_scroller_bounce_set(sc, EINA_TRUE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_scroller_content_min_limit(sc, 0, 1);
elm_box_pack_end(bx, sc);
evas_object_show(sc);
sc = elm_scroller_add(win);
evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_scroller_bounce_set(sc, 0, 1);
++=======
+ elm_scroller_bounce_set(sc, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_win_resize_object_add(win, sc);
elm_object_content_set(sc, bx);
evas_object_show(bx);
bx0 = elm_box_add(win);
evas_object_size_hint_weight_set(bx0, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ elm_box_horizontal_set(bx0, 1);
++=======
+ elm_box_horizontal_set(bx0, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_win_resize_object_add(win, bx0);
evas_object_show(bx0);
evas_object_show(bt);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1); // by default, separator is vertical, we must set it horizontal
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE); // by default, separator is vertical, we must set it horizontal
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sp);
evas_object_show(sp);
bt = elm_button_add(win);
elm_object_text_set(bt, "Left lower corner");
++<<<<<<< HEAD
+ elm_object_disabled_set(bt, 1);
++=======
+ elm_object_disabled_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, bt);
evas_object_show(bt);
bt = elm_button_add(win);
elm_object_text_set(bt, "Right upper corner");
++<<<<<<< HEAD
+ elm_object_disabled_set(bt, 1);
++=======
+ elm_object_disabled_set(bt, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, bt);
evas_object_show(bt);
sp = elm_separator_add(win);
++<<<<<<< HEAD
+ elm_separator_horizontal_set(sp, 1);
++=======
+ elm_separator_horizontal_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, sp);
evas_object_show(sp);
sp = elm_spinner_add(win);
elm_spinner_label_format_set(sp, "Disabled %.0f");
++<<<<<<< HEAD
+ elm_object_disabled_set(sp, 1);
++=======
+ elm_object_disabled_set(sp, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_spinner_min_max_set(sp, -50.0, 250.0);
evas_object_size_hint_align_set(sp, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(sp, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(sp);
sp = elm_spinner_add(win);
++<<<<<<< HEAD
+ elm_spinner_min_max_set(sp, 1, 12);
+ elm_spinner_label_format_set(sp, "%.0f");
+ elm_spinner_step_set(sp, 1.0);
++=======
+ elm_spinner_wrap_set(sp, EINA_TRUE);
+ elm_spinner_min_max_set(sp, 1, 12);
+ elm_spinner_value_set(sp, 1);
+ elm_spinner_step_set(sp, 0.05);
+ elm_spinner_base_set(sp, 1);
+ elm_spinner_round_set(sp, 1);
+ elm_spinner_label_format_set(sp, "%.0f");
++>>>>>>> remotes/origin/upstream
elm_spinner_editable_set(sp, EINA_FALSE);
elm_spinner_special_value_add(sp, 1, "January");
elm_spinner_special_value_add(sp, 2, "February");
}
// store callbacks to handle loading/parsing/freeing of store items from src
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class itc1 =
+{
+ "message", { NULL, NULL, NULL, NULL}
+};
++=======
+ static Elm_Genlist_Item_Class *itc1;
++>>>>>>> remotes/origin/upstream
static const Elm_Store_Item_Mapping it1_mapping[] =
{
static Eina_Bool
_st_store_list(void *data __UNUSED__, Elm_Store_Item_Info *item_info)
{
++<<<<<<< HEAD
+ Elm_Store_Item_Info_Filesystem *info = (Elm_Store_Item_Info_Filesystem *)item_info;
+ int id;
+ char sort_id[7];
+
+ // create a sort id based on the filename itself assuming it is a numeric
+ // value like the id number in mh mail folders which is what this test
+ // uses as a data source
+ char *file = strrchr(info->path, '/');
+ if (file) file++;
+ else file = info->path;
+ id = atoi(file);
+ sort_id[0] = ((id >> 30) & 0x3f) + 32;
+ sort_id[1] = ((id >> 24) & 0x3f) + 32;
+ sort_id[2] = ((id >> 18) & 0x3f) + 32;
+ sort_id[3] = ((id >> 12) & 0x3f) + 32;
+ sort_id[4] = ((id >> 6) & 0x3f) + 32;
+ sort_id[5] = ((id >> 0) & 0x3f) + 32;
+ sort_id[6] = 0;
+ info->base.sort_id = strdup(sort_id);
+ // choose the item genlist item class to use (only item style should be
+ // provided by the app, store will fill everything else in, so it also
+ // has to be writable
+ info->base.item_class = &itc1; // based on item info - return the item class wanted (only style field used - rest reset to internal funcs store sets up to get label/icon etc)
+ info->base.mapping = it1_mapping;
+ info->base.data = NULL; // if we can already parse and load all of item here and want to - set this
+ return EINA_TRUE; // return true to include this, false not to
++=======
+ Elm_Store_Item_Info_Filesystem *info = (Elm_Store_Item_Info_Filesystem *)item_info;
+ int id;
+ char sort_id[7];
+
+ // create a sort id based on the filename itself assuming it is a numeric
+ // value like the id number in mh mail folders which is what this test
+ // uses as a data source
+ char *file = strrchr(info->path, '/');
+ if (file) file++;
+ else file = info->path;
+ id = atoi(file);
+ sort_id[0] = ((id >> 30) & 0x3f) + 32;
+ sort_id[1] = ((id >> 24) & 0x3f) + 32;
+ sort_id[2] = ((id >> 18) & 0x3f) + 32;
+ sort_id[3] = ((id >> 12) & 0x3f) + 32;
+ sort_id[4] = ((id >> 6) & 0x3f) + 32;
+ sort_id[5] = ((id >> 0) & 0x3f) + 32;
+ sort_id[6] = 0;
+ info->base.sort_id = strdup(sort_id);
+ // choose the item genlist item class to use (only item style should be
+ // provided by the app, store will fill everything else in, so it also
+ // has to be writable
+ info->base.item_class = itc1; // based on item info - return the item class wanted (only style field used - rest reset to internal funcs store sets up to get label/icon etc)
+ info->base.mapping = it1_mapping;
+ info->base.data = NULL; // if we can already parse and load all of item here and want to - set this
+ return EINA_TRUE; // return true to include this, false not to
++>>>>>>> remotes/origin/upstream
}
// ************************************************************************
//// * End of separate thread function. *
static void
_st_store_fetch(void *data __UNUSED__, Elm_Store_Item *sti)
{
++<<<<<<< HEAD
+ const char *path = elm_store_item_filesystem_path_get(sti);
+ My_Item *myit;
+ FILE *f;
+ char buf[4096], *p;
+ Eina_Bool have_content = EINA_FALSE;
+ char *content = NULL, *content_pos = NULL, *content_end = NULL;
+
+ // if we already have my item data - skip
+ if (elm_store_item_data_get(sti)) return;
+ // open the mail file and parse it
+ f = fopen(path, "rb");
+ if (!f) return;
+
+ // alloc my item in memory that holds data to show in the list
+ myit = calloc(1, sizeof(My_Item));
+ if (!myit)
+ {
+ fclose(f);
+ return;
+ }
+ while (fgets(buf, sizeof(buf), f))
+ {
+ if (!have_content)
+ {
+ if (!isblank(buf[0]))
+ {
+ // get key: From:, Subject: etc.
+ if (!strncmp(buf, "From:", 5))
+ {
+ p = buf + 5;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->from = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (!strncmp(buf, "Subject:", 8))
+ {
+ p = buf + 8;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->subject = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (!strncmp(buf, "Date:", 5))
+ {
+ p = buf + 5;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->date = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (buf[0] == '\n') // begin of content
+ have_content = EINA_TRUE;
+ }
+ }
+ else
+ {
+ // get first 320 bytes of content/body
+ if (!content)
+ {
+ content = calloc(1, 320);
+ content_pos = content;
+ content_end = content + 319;
+ }
+ strncat(content_pos, buf, content_end - content_pos - 1);
+ content_pos = content + strlen(content);
+ }
+ }
+ fclose(f);
+ myit->head_content = elm_entry_utf8_to_markup(content);
+ free(content);
+ elm_store_item_data_set(sti, myit);
++=======
+ const char *path = elm_store_item_filesystem_path_get(sti);
+ My_Item *myit;
+ FILE *f;
+ char buf[4096], *p;
+ Eina_Bool have_content = EINA_FALSE;
+ char *content = NULL, *content_pos = NULL, *content_end = NULL;
+
+ // if we already have my item data - skip
+ if (elm_store_item_data_get(sti)) return;
+ // open the mail file and parse it
+ f = fopen(path, "rb");
+ if (!f) return;
+
+ // alloc my item in memory that holds data to show in the list
+ myit = calloc(1, sizeof(My_Item));
+ if (!myit)
+ {
+ fclose(f);
+ return;
+ }
+ while (fgets(buf, sizeof(buf), f))
+ {
+ if (!have_content)
+ {
+ if (!isblank(buf[0]))
+ {
+ // get key: From:, Subject: etc.
+ if (!strncmp(buf, "From:", 5))
+ {
+ p = buf + 5;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->from = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (!strncmp(buf, "Subject:", 8))
+ {
+ p = buf + 8;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->subject = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (!strncmp(buf, "Date:", 5))
+ {
+ p = buf + 5;
+ while ((*p) && (isblank(*p))) p++;
+ p = strdup(p);
+ if (p)
+ {
+ myit->date = p;
+ p = strchr(p, '\n');
+ if (p) *p = 0;
+ }
+ }
+ else if (buf[0] == '\n') // begin of content
+ have_content = EINA_TRUE;
+ }
+ }
+ else
+ {
+ // get first 320 bytes of content/body
+ if (!content)
+ {
+ content = calloc(1, 320);
+ content_pos = content;
+ content_end = content + 319;
+ }
+ strncat(content_pos, buf, content_end - content_pos - 1);
+ content_pos = content + strlen(content);
+ }
+ }
+ fclose(f);
+ myit->head_content = elm_entry_utf8_to_markup(content);
+ free(content);
+ elm_store_item_data_set(sti, myit);
++>>>>>>> remotes/origin/upstream
}
// ************************************************************************
//// * End of separate thread function. *
static void
_st_store_unfetch(void *data __UNUSED__, Elm_Store_Item *sti)
{
++<<<<<<< HEAD
+ My_Item *myit = elm_store_item_data_get(sti);
+ if (!myit) return;
+ if (myit->from) free(myit->from);
+ if (myit->subject) free(myit->subject);
+ if (myit->date) free(myit->date);
+ if (myit->head_content) free(myit->head_content);
+ free(myit);
+ elm_store_item_data_set(sti, NULL);
++=======
+ My_Item *myit = elm_store_item_data_get(sti);
+ if (!myit) return;
+ if (myit->from) free(myit->from);
+ if (myit->subject) free(myit->subject);
+ if (myit->date) free(myit->date);
+ if (myit->head_content) free(myit->head_content);
+ free(myit);
++>>>>>>> remotes/origin/upstream
}
void
test_store(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *gl, *bx;
+
+ Elm_Store *st;
+
+ win = elm_win_add(NULL, "store", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Store");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ elm_genlist_height_for_width_mode_set(gl, EINA_TRUE);
+ evas_object_smart_callback_add(gl, "selected", _st_selected, NULL);
+ evas_object_smart_callback_add(gl, "clicked,double", _st_double_clicked, NULL);
+ evas_object_smart_callback_add(gl, "longpressed", _st_longpress, NULL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ st = elm_store_filesystem_new();
+ elm_store_list_func_set(st, _st_store_list, NULL);
+ elm_store_fetch_func_set(st, _st_store_fetch, NULL);
+ //elm_store_fetch_thread_set(st, EINA_FALSE);
+ elm_store_unfetch_func_set(st, _st_store_unfetch, NULL);
+ elm_store_sorted_set(st, EINA_TRUE);
+ elm_store_target_genlist_set(st, gl);
+ elm_store_filesystem_directory_set(st, "./store");
+
+ evas_object_resize(win, 480, 800);
+ evas_object_show(win);
++=======
+ Evas_Object *win, *bg, *gl, *bx;
+
+ Elm_Store *st;
+
+ win = elm_win_add(NULL, "store", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Store");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ gl = elm_genlist_add(win);
+ elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
+ evas_object_smart_callback_add(gl, "selected", _st_selected, NULL);
+ evas_object_smart_callback_add(gl, "clicked,double", _st_double_clicked, NULL);
+ evas_object_smart_callback_add(gl, "longpressed", _st_longpress, NULL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ itc1 = elm_genlist_item_class_new();
+ itc1->item_style = "message";
+
+ st = elm_store_filesystem_new();
+ elm_store_list_func_set(st, _st_store_list, NULL);
+ elm_store_fetch_func_set(st, _st_store_fetch, NULL);
+ //elm_store_fetch_thread_set(st, EINA_FALSE);
+ elm_store_unfetch_func_set(st, _st_store_unfetch, NULL);
+ elm_store_sorted_set(st, EINA_TRUE);
+ elm_store_target_genlist_set(st, gl);
+ elm_store_filesystem_directory_set(st, "./store");
+
+ /* item_class_ref is needed for itc1. some items can be added in callbacks */
+ elm_genlist_item_class_ref(itc1);
+ elm_genlist_item_class_free(itc1);
+
+ evas_object_resize(win, 480, 800);
+ evas_object_show(win);
++>>>>>>> remotes/origin/upstream
}
#endif
evas_object_show(win);
}
++<<<<<<< HEAD
++=======
+ void
+ test_table7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Evas_Object *win, *bg, *tb, *bt;
+
+ win = elm_win_add(NULL, "table7", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Table 7");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ tb = elm_table_add(win);
+ elm_table_padding_set(tb, 10, 20);
+ elm_win_resize_object_add(win, tb);
+ evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(tb);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "C");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 1, 1, 2, 2);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "A");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 1, 1, 2, 2);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Blah blah blah");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 3, 0, 2, 3);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Hallow");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 0, 3, 10, 1);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "B");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 1, 1, 1, 1);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Wide");
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(tb, bt, 1, 7, 7, 2);
+ evas_object_show(bt);
+
+ evas_object_show(win);
+ }
+
++>>>>>>> remotes/origin/upstream
#endif
evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, 0.5);
elm_object_text_set(tg, "Icon sized to toggle");
elm_object_part_content_set(tg, "icon", ic);
++<<<<<<< HEAD
+ elm_check_state_set(tg, 1);
++=======
+ elm_check_state_set(tg, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_object_part_text_set(tg, "on", "Yes");
elm_object_part_text_set(tg, "off", "No");
elm_box_pack_end(bx, tg);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
elm_object_text_set(tg, "Icon no scale");
elm_object_part_content_set(tg, "icon", ic);
++<<<<<<< HEAD
+ elm_object_disabled_set(tg, 1);
++=======
+ elm_object_disabled_set(tg, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, tg);
evas_object_show(tg);
evas_object_show(ic);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
tg = elm_check_add(win);
elm_object_style_set(tg, "toggle");
evas_object_show(bx);
tb = elm_toolbar_add(win);
++<<<<<<< HEAD
+ elm_toolbar_homogeneous_set(tb, 0);
+ elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
+ evas_object_size_hint_weight_set(tb, 0.0, 0.0);
+ evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
++=======
+ elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
+ evas_object_size_hint_weight_set(tb, 0.0, 0.0);
+ evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
+ elm_object_scale_set(tb, 0.9);
++>>>>>>> remotes/origin/upstream
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(tb_it, 1);
++=======
+ elm_toolbar_item_menu_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_toolbar_item_priority_set(item, 0);
item = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(item, 1);
++=======
+ elm_toolbar_item_menu_set(item, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(item, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(item);
evas_object_show(bx);
tb = elm_toolbar_add(win);
++<<<<<<< HEAD
+ elm_toolbar_homogeneous_set(tb, 0);
++=======
+ elm_toolbar_homogeneous_set(tb, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_NONE);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
tb_it = elm_toolbar_item_append(tb, "document-print", "Hello", tb_1, ph1);
elm_object_item_disabled_set(tb_it, EINA_TRUE);
++<<<<<<< HEAD
+ elm_toolbar_item_priority_set(tb_it, 0);
++=======
+ elm_toolbar_item_priority_set(tb_it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
tb_it = elm_toolbar_item_append(tb, "folder-new", "World", tb_2, ph1);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "object-rotate-right", "H", tb_3, ph4);
++<<<<<<< HEAD
+ elm_toolbar_item_priority_set(tb_it, 1);
++=======
+ elm_toolbar_item_priority_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
tb_it = elm_toolbar_item_append(tb, "mail-send", "Comes", tb_4, ph4);
elm_toolbar_item_priority_set(tb_it, -10);
elm_toolbar_item_priority_set(tb_it, 50);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(tb_it, 1);
++=======
+ elm_toolbar_item_menu_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(tb_it, 999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(tb_it, 1);
++=======
+ elm_toolbar_item_menu_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_MENU);
evas_object_size_hint_weight_set(tb, 0.0, 0.0);
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.0);
++<<<<<<< HEAD
+ elm_toolbar_no_select_mode_set(tb, EINA_TRUE);
++=======
+ elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_NONE);
++>>>>>>> remotes/origin/upstream
ph1 = elm_photo_add(win);
ph2 = elm_photo_add(win);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(tb_it, 1);
++=======
+ elm_toolbar_item_menu_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
elm_toolbar_item_priority_set(tb_it, -200);
tb_it = elm_toolbar_item_append(tb, "refresh", "Menu", NULL, NULL);
++<<<<<<< HEAD
+ elm_toolbar_item_menu_set(tb_it, 1);
++=======
+ elm_toolbar_item_menu_set(tb_it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_toolbar_item_priority_set(tb_it, -999999);
elm_toolbar_menu_parent_set(tb, win);
menu = elm_toolbar_item_menu_get(tb_it);
typedef struct _Testitem
{
++<<<<<<< HEAD
+ Elm_Object_Item *item;
++=======
+ Elm_Object_Item *item;
++>>>>>>> remotes/origin/upstream
const char *path;
int mode;
int onoff;
void *event_info)
{
Elm_Object_Item *glit = event_info;
++<<<<<<< HEAD
+ Evas_Object *gl = elm_genlist_item_genlist_get(glit);
+ int val = (int) elm_object_item_data_get(glit);
+ Elm_Object_Item *glit1, *glit2, *glit3;
+
+ val *= 10;
+ glit1 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 1), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 2), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit3 = elm_genlist_item_append(gl, &itct, (void *)(long)(val + 3), glit,
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
++=======
+ Evas_Object *gl = elm_object_item_widget_get(glit);
+ int val = (int)(long) elm_object_item_data_get(glit);
+ Elm_Object_Item *glit1, *glit2, *glit3;
+
+ val *= 10;
+ glit1 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 1), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 2), glit,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ glit3 = elm_genlist_item_append(gl, &itct, (void *)(long) (val + 3), glit,
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
++>>>>>>> remotes/origin/upstream
elm_genlist_item_tooltip_text_set(glit1, "Testing A");
elm_genlist_item_tooltip_text_set(glit2, "Testing B");
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_resize(ic, 64, 64);
return ic;
}
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/logo.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
return ic;
}
snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_resize(ic, 64, 64);
return ic;
}
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "%s/images/icon_00.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_resize(ic, 64, 64);
return ic;
}
ELM_SCROLLER_POLICY_OFF);
elm_object_text_set(se, "Hello, some scrolled entry here!");
elm_object_tooltip_text_set(se, "Type something here!");
++<<<<<<< HEAD
+ elm_entry_single_line_set(se, 1);
++=======
+ elm_entry_single_line_set(se, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, se);
evas_object_show(se);
itct.func.text_get = gltt_text_get;
glit1 = elm_genlist_item_append(gl, &itct, (void *)1, NULL,
++<<<<<<< HEAD
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)2, NULL,
+ ELM_GENLIST_ITEM_SUBITEMS, NULL, NULL);
++=======
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
+ glit2 = elm_genlist_item_append(gl, &itct, (void *)2, NULL,
+ ELM_GENLIST_ITEM_TREE, NULL, NULL);
++>>>>>>> remotes/origin/upstream
glit3 = elm_genlist_item_append(gl, &itct, (void *)3, NULL,
ELM_GENLIST_ITEM_NONE, NULL, NULL);
EINA_LIST_FOREACH(objs, elist, obj)
evas_object_resize(obj, w, h);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
}
static Elm_Transit_Effect *
evas_object_resize(win, 400, 400);
evas_object_show(win);
}
++<<<<<<< HEAD
+
+
++=======
++>>>>>>> remotes/origin/upstream
#endif
weather[0] = eweather_object_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(weather[0], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(weather[0], -1.0, -1.0);
++<<<<<<< HEAD
+ elm_flip_content_front_set(fl, weather[0]);
++=======
+ elm_object_part_content_set(fl, "front", weather[0]);
++>>>>>>> remotes/origin/upstream
evas_object_show(weather[0]);
module[1] = NULL;
eweather = eweather_object_eweather_get(weather[1]);
evas_object_size_hint_weight_set(weather[1], EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(weather[1], -1.0, -1.0);
++<<<<<<< HEAD
+ elm_flip_content_back_set(fl, weather[1]);
++=======
+ elm_object_part_content_set(fl, "back", weather[1]);
++>>>>>>> remotes/origin/upstream
evas_object_show(weather[1]);
evas_object_show(fl);
elm_object_text_set(wt->url_entry, event_info);
++<<<<<<< HEAD
+ elm_object_disabled_set(wt->btn_back, !elm_web_back_possible(wt->web));
+ elm_object_disabled_set(wt->btn_fwd, !elm_web_forward_possible(wt->web));
++=======
+ elm_object_disabled_set(wt->btn_back, !elm_web_back_possible_get(wt->web));
+ elm_object_disabled_set(wt->btn_fwd, !elm_web_forward_possible_get(wt->web));
++>>>>>>> remotes/origin/upstream
}
static void
elm_notify_orient_set(popup, ELM_NOTIFY_ORIENT_CENTER);
// Using the timeout doesn't seem to go well with the second main loop
//elm_notify_timeout_set(popup, 2.0);
++<<<<<<< HEAD
+ elm_notify_repeat_events_set(popup, EINA_FALSE);
++=======
+ elm_notify_allow_events_set(popup, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(popup);
evas_object_smart_callback_add(popup, "block,clicked", _alert_del, NULL);
popup = elm_notify_add(obj);
elm_notify_orient_set(popup, ELM_NOTIFY_ORIENT_CENTER);
++<<<<<<< HEAD
+ elm_notify_repeat_events_set(popup, EINA_FALSE);
++=======
+ elm_notify_allow_events_set(popup, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(popup);
box = elm_box_add(obj);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "This is a single line");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "Entry 2");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
+ elm_object_text_set(av,
+ "Hi there. This is the most recent message in the "
+ "list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
+ "(phone number) to click on.");
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
+ elm_object_text_set(av,
+ "Hi there. This is the most recent message in the "
+ "list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
+ "(phone number) to click on.");
++>>>>>>> remotes/origin/upstream
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, bb);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
+ elm_object_text_set(av,
+ "Hey what are you doing? This is the second last message "
+ "Hi there. This is the most recent message in the "
+ "list. It's a longer one so it can wrap more and "
+ "contains a <a href=contact:john>John</a> contact "
+ "link in it to test popups on links. The idea is that "
+ "all SMS's are scanned for things that look like phone "
+ "numbers or names that are in your contacts list, and "
+ "if they are, they become clickable links that pop up "
+ "a menus of obvious actions to perform on this piece "
+ "of information. This of course can be later explicitly "
+ "done by links maybe running local apps or even being "
+ "web URL's too that launch the web browser and point it "
+ "to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
+ elm_object_text_set(av,
+ "Hey what are you doing? This is the second last message "
+ "Hi there. This is the most recent message in the "
+ "list. It's a longer one so it can wrap more and "
+ "contains a <a href=contact:john>John</a> contact "
+ "link in it to test popups on links. The idea is that "
+ "all SMS's are scanned for things that look like phone "
+ "numbers or names that are in your contacts list, and "
+ "if they are, they become clickable links that pop up "
+ "a menus of obvious actions to perform on this piece "
+ "of information. This of course can be later explicitly "
+ "done by links maybe running local apps or even being "
+ "web URL's too that launch the web browser and point it "
+ "to that URL. <item relsize=16x16 vsize=full href=emoticon/omg></item>");
++>>>>>>> remotes/origin/upstream
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, bb);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(av, "This is a short message. <item relsize=16x16 vsize=full href=emoticon/haha></item>");
elm_object_content_set(bb, av);
evas_object_show(av);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bg);
++<<<<<<< HEAD
+
+ plug = elm_plug_add(win);
+ if (!elm_plug_connect(plug, "ello", 0, EINA_FALSE))
+ {
+ printf("Cannot connect plug\n");
+ return;
+ }
+
++=======
+ plug = elm_plug_add(win);
+ if (!elm_plug_connect(plug, "ello", 0, EINA_FALSE))
+ {
+ printf("Cannot connect plug\n");
+ return;
+ }
++>>>>>>> remotes/origin/upstream
evas_object_resize(plug, 380, 500);
evas_object_move(plug, 10, 10);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "This is a single line");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
evas_object_size_hint_align_set(en, EVAS_HINT_FILL, 0.5);
elm_object_text_set(en, "Entry 2");
elm_entry_scrollbar_policy_set(en, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
++<<<<<<< HEAD
+ elm_entry_single_line_set(en, 1);
++=======
+ elm_entry_single_line_set(en, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_show(en);
elm_box_pack_end(bx, en);
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(av,
"Hi there. This is the most recent message in the "
"list of messages. It has one <a href=tel:+614321234>+61 432 1234</a> "
evas_object_show(ic);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(av,
"Hey what are you doing? This is the second last message "
"Hi there. This is the most recent message in the "
ic = elm_icon_add(win);
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", elm_app_data_dir_get());
elm_icon_file_set(ic, buf, NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 0);
++=======
+ elm_icon_resizable_set(ic, 0, 0);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_HORIZONTAL, 1, 1);
bb = elm_bubble_add(win);
evas_object_size_hint_weight_set(bb, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(bb, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ av = elm_anchorblock_add(win);
+ elm_anchorblock_hover_style_set(av, "popout");
+ elm_anchorblock_hover_parent_set(av, win);
++=======
+ av = elm_entry_add(win);
+ elm_entry_anchor_hover_style_set(av, "popout");
+ elm_entry_anchor_hover_parent_set(av, win);
++>>>>>>> remotes/origin/upstream
elm_object_text_set(av, "This is a short message. <item relsize=16x16 vsize=full href=emoticon/haha></item>");
elm_object_content_set(bb, av);
evas_object_show(av);
elm_box_pack_end(bx, lb);
evas_object_show(lb);
++<<<<<<< HEAD
+
+
++=======
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 320, 300);
evas_object_show(bx);
win_socket = elm_win_add(NULL, "Window Socket", ELM_WIN_SOCKET_IMAGE);
if (!elm_win_socket_listen(win_socket, "ello", 0, EINA_FALSE))
++<<<<<<< HEAD
+ {
+ printf("Fail to elm win socket listen \n");
+ evas_object_del(win_socket);
+ evas_object_del(win);
+ return;
+ }
++=======
+ {
+ printf("Fail to elm win socket listen \n");
+ evas_object_del(win_socket);
+ evas_object_del(win);
+ return;
+ }
++>>>>>>> remotes/origin/upstream
elm_win_title_set(win_socket, "Window Socket");
elm_win_autodel_set(win_socket, EINA_TRUE);
evas_object_show(win_socket);
evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _win_del,
++<<<<<<< HEAD
+ win_socket);
++=======
+ win_socket);
++>>>>>>> remotes/origin/upstream
}
#endif
elm_slider_indicator_format_set(sl, "%3.0f");
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 50);
++<<<<<<< HEAD
+ elm_slider_inverted_set(sl, 1);
++=======
+ elm_slider_inverted_set(sl, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx2, sl);
evas_object_show(sl);
char buf[PATH_MAX];
win = elm_win_add(NULL, "window-states2", ELM_WIN_BASIC);
++<<<<<<< HEAD
+ elm_win_override_set(win, 1);
++=======
+ elm_win_override_set(win, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(win, "moved", my_win_move, NULL);
evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize, NULL);
elm_win_title_set(win, "Window States 2");
elm_slider_indicator_format_set(sl, "%3.0f");
elm_slider_min_max_set(sl, 50, 150);
elm_slider_value_set(sl, 50);
++<<<<<<< HEAD
+ elm_slider_inverted_set(sl, 1);
++=======
+ elm_slider_inverted_set(sl, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx2, sl);
evas_object_show(sl);
modules.inc \
elm.c \
elm_actionslider.c \
++<<<<<<< HEAD
+elm_anchorblock.c \
+elm_anchorview.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_bubble.c \
elm_button.c \
elm_calendar.c \
elm_check.c \
elm_clock.c \
++<<<<<<< HEAD
+elm_colorpalette.c \
+elm_datefield.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_entry.c \
elm_fileselector.c \
elm_fileselector_button.c \
elm_map.c \
elm_multibuttonentry.c \
elm_naviframe.c \
++<<<<<<< HEAD
+elm_nocontents.c \
elm_notify.c \
+elm_page_control.c \
+elm_pager.c \
++=======
++elm_notify.c \
++>>>>>>> remotes/origin/upstream
elm_panes.c \
elm_photocam.c \
elm_progressbar.c \
elm_radio.c \
elm_scroller.c \
++<<<<<<< HEAD
+elm_searchbar.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_segment_control.c \
elm_slider.c \
elm_slideshow.c \
elm_video.c \
elm_web.c
++<<<<<<< HEAD
+module_la_LIBADD = $(top_builddir)/src/lib/libelementary.la
++=======
+ module_la_LIBADD = @ELEMENTARY_LIBS@ $(top_builddir)/src/lib/libelementary.la
++>>>>>>> remotes/origin/upstream
module_la_LDFLAGS = -no-undefined -module -avoid-version -shared -fPIC
}
void
++<<<<<<< HEAD
+external_signal(void *data __UNUSED__, Evas_Object *obj, const char *signal, const char *source)
+{
+ char *_signal = strdup(signal);
+ char *p = _signal;
+ Evas_Object *content;
+
+ while((*p!='\0') && (*p!=']'))
+ p++;
+
+
+ if((*p=='\0') || (*(p+1)!=':'))
+ {
+ ERR("Invalid External Signal received: '%s' '%s'\n", signal, source);
+ free(_signal);
+ return ;
+ }
+
+ *p = '\0';
+ p+=2; //jump ']' and ':'
+
+ Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
+ if (!type->content_get)
+ {
+ ERR("external type '%s' from module '%s' does not provide content_get()",
+ type->module_name, type->module);
+ free(_signal);
+ return ;
+ }
+
+ content = type->content_get(type->data, obj, _signal);
+ free(_signal);
+ if(content)
+ edje_object_signal_emit(content, signal + (p - _signal), source);
++=======
+ external_signal(void *data __UNUSED__, Evas_Object *obj, const char *sig, const char *source)
+ {
+ char *_signal = strdup(sig);
+ char *p = _signal;
+ Evas_Object *content;
+
+ while((*p!='\0') && (*p!=']'))
+ p++;
+
+
+ if((*p=='\0') || (*(p+1)!=':'))
+ {
+ ERR("Invalid External Signal received: '%s' '%s'\n", sig, source);
+ free(_signal);
+ return ;
+ }
+
+ *p = '\0';
+ p+=2; //jump ']' and ':'
+
+ Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
+ if (!type->content_get)
+ {
+ ERR("external type '%s' from module '%s' does not provide content_get()",
+ type->module_name, type->module);
+ free(_signal);
+ return ;
+ }
+
+ content = type->content_get(type->data, obj, _signal);
+ free(_signal);
+ if(content)
+ edje_object_signal_emit(content, sig + (p - _signal), source);
++>>>>>>> remotes/origin/upstream
}
const char *
Elm_Params base;
const char *label;
Evas_Object *icon;
++<<<<<<< HEAD
++=======
+ double autorepeat_initial;
+ double autorepeat_gap;
+ Eina_Bool autorepeat:1;
+ Eina_Bool autorepeat_exists:1;
+ Eina_Bool autorepeat_gap_exists:1;
+ Eina_Bool autorepeat_initial_exists:1;
++>>>>>>> remotes/origin/upstream
} Elm_Params_Button;
static void
elm_object_text_set(obj, p->label);
if (p->icon)
elm_object_part_content_set(obj, "icon", p->icon);
++<<<<<<< HEAD
++=======
+ if (p->autorepeat_gap_exists)
+ elm_button_autorepeat_gap_timeout_set(obj, p->autorepeat_gap);
+ if (p->autorepeat_initial_exists)
+ elm_button_autorepeat_initial_timeout_set(obj, p->autorepeat_initial);
+ if (p->autorepeat_exists)
+ elm_button_autorepeat_set(obj, p->autorepeat);
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
return EINA_TRUE;
}
}
++<<<<<<< HEAD
++=======
+ else if (!strcmp(param->name, "autorepeat_initial"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ elm_button_autorepeat_initial_timeout_set(obj, param->d);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "autorepeat_gap"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ elm_button_autorepeat_gap_timeout_set(obj, param->d);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "autorepeat"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_button_autorepeat_set(obj, param->i);
+ return EINA_TRUE;
+ }
+ }
++>>>>>>> remotes/origin/upstream
ERR("unknown parameter '%s' of type '%s'",
param->name, edje_external_param_type_str(param->type));
/* not easy to get icon name back from live object */
return EINA_FALSE;
}
++<<<<<<< HEAD
++=======
+ else if (!strcmp(param->name, "autorepeat_initial"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ param->d = elm_button_autorepeat_initial_timeout_get(obj);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "autorepeat_gap"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ param->d = elm_button_autorepeat_gap_timeout_get(obj);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "autorepeat"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = elm_button_autorepeat_get(obj);
+ return EINA_TRUE;
+ }
+ }
++>>>>>>> remotes/origin/upstream
ERR("unknown parameter '%s' of type '%s'",
param->name, edje_external_param_type_str(param->type));
EINA_LIST_FOREACH(params, l, param)
{
++<<<<<<< HEAD
+ if (!strcmp(param->name, "label"))
+ {
+ mem->label = eina_stringshare_add(param->s);
+ break;
+ }
++=======
+ if (!strcmp(param->name, "autorepeat_initial"))
+ {
+ mem->autorepeat_initial = param->d;
+ mem->autorepeat_initial_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "autorepeat_gap"))
+ {
+ mem->autorepeat_gap = param->d;
+ mem->autorepeat_gap_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "autorepeat"))
+ {
+ mem->autorepeat = !!param->i;
+ mem->autorepeat_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "label"))
+ mem->label = eina_stringshare_add(param->s);
++>>>>>>> remotes/origin/upstream
}
return mem;
DEFINE_EXTERNAL_COMMON_PARAMS,
EDJE_EXTERNAL_PARAM_INFO_STRING("label"),
EDJE_EXTERNAL_PARAM_INFO_STRING("icon"),
++<<<<<<< HEAD
++=======
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE("autorepeat_initial"),
+ EDJE_EXTERNAL_PARAM_INFO_DOUBLE("autorepeat_gap"),
+ EDJE_EXTERNAL_PARAM_INFO_BOOL("autorepeat"),
++>>>>>>> remotes/origin/upstream
EDJE_EXTERNAL_PARAM_INFO_SENTINEL
};
elm_calendar_min_max_year_set(obj, min, p->year_max);
}
if (p->sel_exists)
++<<<<<<< HEAD
+ elm_calendar_day_selection_enabled_set(obj, p->sel_enable);
++=======
+ elm_calendar_day_selection_disabled_set(obj, !p->sel_enable);
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
if (!strcmp(param->name, "year_min"))
{
++<<<<<<< HEAD
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, NULL, &max);
+ elm_calendar_min_max_year_set(obj, param->i, max);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "year_max"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &min, NULL);
+ elm_calendar_min_max_year_set(obj, min,param->i);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_calendar_day_selection_enabled_set(obj,param->i );
+ return EINA_TRUE;
+ }
++=======
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, NULL, &max);
+ elm_calendar_min_max_year_set(obj, param->i, max);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "year_max"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &min, NULL);
+ elm_calendar_min_max_year_set(obj, min,param->i);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_calendar_day_selection_disabled_set(obj,!param->i );
+ return EINA_TRUE;
+ }
++>>>>>>> remotes/origin/upstream
}
ERR("unknown parameter '%s' of type '%s'",
if (!strcmp(param->name, "year_min"))
{
++<<<<<<< HEAD
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &(param->i) ,&max);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "year_max"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &min,&(param->i));
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = elm_calendar_day_selection_enabled_get(obj);
+ return EINA_TRUE;
+ }
++=======
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &(param->i) ,&max);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "year_max"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_calendar_min_max_year_get(obj, &min,&(param->i));
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = !elm_calendar_day_selection_disabled_get(obj);
+ return EINA_TRUE;
+ }
++>>>>>>> remotes/origin/upstream
}
ERR("unknown parameter '%s' of type '%s'",
EINA_LIST_FOREACH(params, l, param)
{
if (!strcmp(param->name, "year_min"))
++<<<<<<< HEAD
+ mem->year_min = param->i;
+
+ else if(!strcmp(param->name, "year_max"))
+ mem->year_max = param->i;
+
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ mem->sel_enable = param->i;
+ mem->sel_exists = EINA_TRUE;
++=======
+ mem->year_min = param->i;
+
+ else if(!strcmp(param->name, "year_max"))
+ mem->year_max = param->i;
+
+ else if (!strcmp(param->name, "sel_enable"))
+ {
+ mem->sel_enable = param->i;
+ mem->sel_exists = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
}
}
static Evas_Object *external_entry_content_get(void *data __UNUSED__,
++<<<<<<< HEAD
+ const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
+{
+ ERR("No content.");
+ return NULL;
++=======
+ const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
+ {
+ ERR("No content.");
+ return NULL;
++>>>>>>> remotes/origin/upstream
}
static void
if (p->multi_exists)
elm_gengrid_multi_select_set(obj, p->multi);
if (p->no_select_exists)
++<<<<<<< HEAD
+ elm_gengrid_no_select_mode_set (obj, p->no_select);
+ if (p->always_select_exists)
+ elm_gengrid_always_select_mode_set (obj, p->always_select);
++=======
+ {
+ if (p->no_select)
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ if (p->always_select_exists)
+ {
+ if (p->always_select)
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
++>>>>>>> remotes/origin/upstream
if (p->h_bounce_exists)
{
Eina_Bool h_bounce, v_bounce;
else if (p->align_x_exists || p->align_y_exists)
{
double x, y;
++<<<<<<< HEAD
+ elm_gengrid_align_get(obj, &x, &y);
+ if (p->align_x_exists)
+ elm_gengrid_align_set(obj, p->align_x, y);
+ else
+ elm_gengrid_align_set(obj, x, p->align_y);
++=======
+ elm_gengrid_align_get(obj, &x, &y);
+ if (p->align_x_exists)
+ elm_gengrid_align_set(obj, p->align_x, y);
+ else
+ elm_gengrid_align_set(obj, x, p->align_y);
++>>>>>>> remotes/origin/upstream
}
if (p->horizontal_exists)
{
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_gengrid_no_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_gengrid_always_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_gengrid_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
}
}
else if (!strcmp(param->name, "align x")
++<<<<<<< HEAD
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ elm_gengrid_align_set(obj, param->d, y);
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ elm_gengrid_align_set(obj, x, param->d);
+ return EINA_TRUE;
++=======
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ elm_gengrid_align_set(obj, param->d, y);
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ elm_gengrid_align_set(obj, x, param->d);
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
ERR("unknown parameter '%s' of type '%s'",
param->name, edje_external_param_type_str(param->type));
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_gengrid_no_select_mode_get(obj);
++=======
+ if (elm_gengrid_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_NONE)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_gengrid_always_select_mode_get(obj);
++=======
+ if (elm_gengrid_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_ALWAYS)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
}
}
else if (!strcmp(param->name, "align x")
++<<<<<<< HEAD
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ param->d = x;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ param->d = y;
+ return EINA_TRUE;
++=======
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ param->d = x;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE)
+ {
+ double x, y;
+ elm_gengrid_align_get(obj, &x, &y);
+ param->d = y;
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
ERR("unknown parameter '%s' of type '%s'",
param->name, edje_external_param_type_str(param->type));
mem->horizontal = !!param->i;
mem->horizontal_exists = EINA_TRUE;
}
++<<<<<<< HEAD
+ else if (!strcmp(param->name, "align x"))
+ {
+ mem->align_x = param->d;
+ mem->align_x_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y"))
+ {
+ mem->align_y = param->d;
+ mem->align_y_exists = EINA_TRUE;
+ }
++=======
+ else if (!strcmp(param->name, "align x"))
+ {
+ mem->align_x = param->d;
+ mem->align_x_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "align y"))
+ {
+ mem->align_y = param->d;
+ mem->align_y_exists = EINA_TRUE;
+ }
++>>>>>>> remotes/origin/upstream
}
return mem;
Eina_Bool always_select_exists:1;
Eina_Bool no_select:1;
Eina_Bool no_select_exists:1;
++<<<<<<< HEAD
+ Eina_Bool compress:1;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Bool compress_exists:1;
Eina_Bool homogeneous:1;
Eina_Bool homogeneous_exists:1;
Elm_List_Mode set = _list_horizontal_setting_get(p->horizontal);
if (set != ELM_LIST_LAST)
++<<<<<<< HEAD
+ elm_genlist_horizontal_mode_set(obj, set);
+ }
+ if (p->multi_exists)
+ elm_genlist_multi_select_set(obj, p->multi);
+ if (p->always_select_exists)
+ elm_genlist_always_select_mode_set(obj, p->always_select);
+ if (p->no_select_exists)
+ elm_genlist_no_select_mode_set(obj, p->no_select);
+ if (p->compress_exists)
+ elm_genlist_compress_mode_set(obj, p->compress);
++=======
+ elm_genlist_mode_set(obj, set);
+ }
+ if (p->multi_exists)
+ elm_genlist_multi_select_set(obj, p->multi);
+ if (p->no_select_exists)
+ {
+ if (p->no_select)
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ if (p->always_select_exists)
+ {
+ if (p->always_select)
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
++>>>>>>> remotes/origin/upstream
if (p->homogeneous_exists)
elm_genlist_homogeneous_set(obj, p->homogeneous);
if ((p->h_bounce_exists) && (p->v_bounce_exists))
Elm_List_Mode set = _list_horizontal_setting_get(param->s);
if (set == ELM_LIST_LAST) return EINA_FALSE;
++<<<<<<< HEAD
+ elm_genlist_horizontal_mode_set(obj, set);
++=======
+ elm_genlist_mode_set(obj, set);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_genlist_always_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_genlist_no_select_mode_set(obj, param->i);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "compress"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_genlist_compress_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_genlist_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
{
++<<<<<<< HEAD
+ Elm_List_Mode list_horizontal_mode_set = elm_genlist_horizontal_mode_get(obj);
+
+ if (list_horizontal_mode_set == ELM_LIST_LAST)
+ return EINA_FALSE;
+
+ param->s = list_horizontal_choices[list_horizontal_mode_set];
++=======
+ Elm_List_Mode list_horizontal_set = elm_genlist_mode_get(obj);
+
+ if (list_horizontal_set == ELM_LIST_LAST)
+ return EINA_FALSE;
+
+ param->s = list_horizontal_choices[list_horizontal_set];
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_genlist_always_select_mode_get(obj);
++=======
+ if (elm_genlist_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_ALWAYS)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_genlist_no_select_mode_get(obj);
+ return EINA_TRUE;
+ }
+ }
+ else if (!strcmp(param->name, "compress"))
+ {
+ if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = elm_genlist_compress_mode_get(obj);
++=======
+ if (elm_genlist_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_NONE)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
mem->no_select = !!param->i;
mem->no_select_exists = EINA_TRUE;
}
++<<<<<<< HEAD
+ else if (!strcmp(param->name, "compress"))
+ {
+ mem->compress = !!param->i;
+ mem->compress_exists = EINA_TRUE;
+ }
++=======
++>>>>>>> remotes/origin/upstream
else if (!strcmp(param->name, "homogeneous"))
{
mem->homogeneous = !!param->i;
EDJE_EXTERNAL_PARAM_INFO_BOOL("multi select"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("always select"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("no select"),
++<<<<<<< HEAD
+ EDJE_EXTERNAL_PARAM_INFO_BOOL("compress"),
++=======
++>>>>>>> remotes/origin/upstream
EDJE_EXTERNAL_PARAM_INFO_BOOL("homogeneous"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("height bounce"),
EDJE_EXTERNAL_PARAM_INFO_BOOL("width bounce"),
if (p->file)
{
elm_icon_file_set(obj, p->file, NULL);
++<<<<<<< HEAD
+ param_icon->file = p->file;
++=======
+ param_icon->file = p->file;
++>>>>>>> remotes/origin/upstream
}
if (p->smooth_exists)
{
elm_icon_smooth_set(obj, p->smooth);
++<<<<<<< HEAD
+ param_icon->smooth = p->smooth;
++=======
+ param_icon->smooth = p->smooth;
++>>>>>>> remotes/origin/upstream
}
if (p->no_scale_exists)
{
elm_icon_no_scale_set(obj, p->no_scale);
++<<<<<<< HEAD
+ param_icon->no_scale = p->no_scale;
+ }
+ if (p->scale_up_exists && p->scale_down_exists)
+ {
+ elm_icon_scale_set(obj, p->scale_up, p->scale_down);
+ param_icon->scale_up = p->scale_up;
+ param_icon->scale_down = p->scale_down;
+ }
+ else if (p->scale_up_exists || p->scale_down_exists)
+ {
+ if (p->scale_up_exists)
+ {
+ elm_icon_scale_set(obj, p->scale_up, param_icon->scale_down);
+ param_icon->scale_up = p->scale_up;
+ }
+ else
+ {
+ elm_icon_scale_set(obj, param_icon->scale_up, p->scale_down);
+ param_icon->scale_down = p->scale_down;
+ }
++=======
+ param_icon->no_scale = p->no_scale;
+ }
+ if (p->scale_up_exists && p->scale_down_exists)
+ {
+ elm_icon_resizable_set(obj, p->scale_up, p->scale_down);
+ param_icon->scale_up = p->scale_up;
+ param_icon->scale_down = p->scale_down;
+ }
+ else if (p->scale_up_exists || p->scale_down_exists)
+ {
+ if (p->scale_up_exists)
+ {
+ elm_icon_resizable_set(obj, p->scale_up, param_icon->scale_down);
+ param_icon->scale_up = p->scale_up;
+ }
+ else
+ {
+ elm_icon_resizable_set(obj, param_icon->scale_up, p->scale_down);
+ param_icon->scale_down = p->scale_down;
+ }
++>>>>>>> remotes/origin/upstream
}
if (p->fill_outside_exists)
{
elm_icon_fill_outside_set(obj, p->fill_outside);
++<<<<<<< HEAD
+ param_icon->fill_outside = p->fill_outside;
++=======
+ param_icon->fill_outside = p->fill_outside;
++>>>>>>> remotes/origin/upstream
}
if (p->prescale_size_exists)
{
elm_icon_prescale_set(obj, p->prescale_size);
++<<<<<<< HEAD
+ param_icon->prescale_size = p->prescale_size;
++=======
+ param_icon->prescale_size = p->prescale_size;
++>>>>>>> remotes/origin/upstream
}
if (p->icon)
{
return ret;
}
else if (!strcmp(param->name, "smooth")
++<<<<<<< HEAD
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_smooth_set(obj, param->i);
+ param_icon->smooth = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_no_scale_set(obj, param->i);
+ param_icon->no_scale = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_scale_set(obj, param->i, param_icon->scale_down);
+ param_icon->scale_up = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_scale_set(obj, param_icon->scale_up, param->i);
+ param_icon->scale_down = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_fill_outside_set(obj, param->i);
+ param_icon->fill_outside = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_icon_prescale_set(obj, param->i);
+ param_icon->prescale_size = param->i;
+ return EINA_TRUE;
++=======
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_smooth_set(obj, param->i);
+ param_icon->smooth = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_no_scale_set(obj, param->i);
+ param_icon->no_scale = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_resizable_set(obj, param->i, param_icon->scale_down);
+ param_icon->scale_up = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_resizable_set(obj, param_icon->scale_up, param->i);
+ param_icon->scale_down = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ elm_icon_fill_outside_set(obj, param->i);
+ param_icon->fill_outside = param->i;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ elm_icon_prescale_set(obj, param->i);
+ param_icon->prescale_size = param->i;
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
else if (!strcmp(param->name, "icon"))
{
&& param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
{
param->s = param_icon->file;
++<<<<<<< HEAD
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "smooth")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->smooth;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->no_scale;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->scale_up;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->scale_down;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->fill_outside;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ param->i = param_icon->prescale_size;
+ return EINA_TRUE;
++=======
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "smooth")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->smooth;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->no_scale;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->scale_up;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->scale_down;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+ {
+ param->i = param_icon->fill_outside;
+ return EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale")
+ && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+ {
+ param->i = param_icon->prescale_size;
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
else if (!strcmp(param->name, "icon"))
{
EINA_LIST_FOREACH(params, l, param)
{
if (!strcmp(param->name, "file"))
++<<<<<<< HEAD
+ mem->file = eina_stringshare_add(param->s);
+ else if (!strcmp(param->name, "smooth"))
+ {
+ mem->smooth = param->i;
+ mem->smooth_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale"))
+ {
+ mem->no_scale = param->i;
+ mem->no_scale_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up"))
+ {
+ mem->scale_up = param->i;
+ mem->scale_up_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down"))
+ {
+ mem->scale_down = param->i;
+ mem->scale_down_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside"))
+ {
+ mem->fill_outside = param->i;
+ mem->fill_outside_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale"))
+ {
+ mem->prescale_size = param->i;
+ mem->prescale_size_exists = EINA_TRUE;
++=======
+ mem->file = eina_stringshare_add(param->s);
+ else if (!strcmp(param->name, "smooth"))
+ {
+ mem->smooth = param->i;
+ mem->smooth_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "no scale"))
+ {
+ mem->no_scale = param->i;
+ mem->no_scale_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale up"))
+ {
+ mem->scale_up = param->i;
+ mem->scale_up_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "scale down"))
+ {
+ mem->scale_down = param->i;
+ mem->scale_down_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "fill outside"))
+ {
+ mem->fill_outside = param->i;
+ mem->fill_outside_exists = EINA_TRUE;
+ }
+ else if (!strcmp(param->name, "prescale"))
+ {
+ mem->prescale_size = param->i;
+ mem->prescale_size_exists = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
else if (!strcmp(param->name, "icon"))
{
else return;
if (p->active_exists)
++<<<<<<< HEAD
+ elm_index_active_set(obj, p->active_exists);
++=======
+ elm_index_autohide_disabled_set(obj, p->active_exists);
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_index_active_set(obj, param->i);
++=======
+ elm_index_autohide_disabled_set(obj, param->i);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_index_active_get(obj);
++=======
+ param->i = elm_index_autohide_disabled_get(obj);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
if (p->multi_exists)
elm_list_multi_select_set(obj, p->multi);
if (p->always_select_exists)
++<<<<<<< HEAD
+ elm_list_always_select_mode_set(obj, p->always_select);
++=======
+ {
+ if (p->always_select)
+ elm_list_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_list_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_list_always_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_list_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_list_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_list_always_select_mode_get(obj);
++=======
+ if (elm_list_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_ALWAYS)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
if (p->map_source)
{
++<<<<<<< HEAD
+ elm_map_source_name_set(obj, p->map_source);
+ }
+ if (p->zoom_mode)
+ {
+ Elm_Map_Zoom_Mode set = _zoom_mode_get(p->zoom_mode);
+ if (set == ELM_MAP_ZOOM_MODE_LAST) return;
+ elm_map_zoom_mode_set(obj, set);
++=======
+ elm_map_source_set(obj, ELM_MAP_SOURCE_TYPE_TILE, p->map_source);
+ }
+ if (p->zoom_mode)
+ {
+ Elm_Map_Zoom_Mode set = _zoom_mode_get(p->zoom_mode);
+ if (set == ELM_MAP_ZOOM_MODE_LAST) return;
+ elm_map_zoom_mode_set(obj, set);
++>>>>>>> remotes/origin/upstream
}
if (p->zoom_set) elm_map_zoom_set(obj, p->zoom);
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
{
++<<<<<<< HEAD
+ elm_map_source_name_set(obj, param->s);
++=======
+ elm_map_source_set(obj, ELM_MAP_SOURCE_TYPE_TILE, param->s);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
{
++<<<<<<< HEAD
+ const char *set = elm_map_source_name_get(obj);
++=======
+ const char *set = elm_map_source_get(obj, ELM_MAP_SOURCE_TYPE_TILE);
++>>>>>>> remotes/origin/upstream
param->s = set;
return EINA_TRUE;
}
if (p->label)
elm_object_text_set(obj, p->label);
if (p->guide_text)
++<<<<<<< HEAD
+ elm_multibuttonentry_guide_text_set(obj, p->guide_text);
++=======
+ elm_object_part_text_set(obj, "guide", p->guide_text);
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
{
++<<<<<<< HEAD
+ elm_multibuttonentry_guide_text_set(obj, param->s);
++=======
+ elm_object_part_text_set(obj, "guide", param->s);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
{
++<<<<<<< HEAD
+ param->s = elm_multibuttonentry_guide_text_get(obj);
++=======
+ param->s = elm_object_part_text_get(obj, "guide");
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
struct _Elm_Params_Notify {
Elm_Params base;
Evas_Object *content; /* part name whose obj is to be set as content */
++<<<<<<< HEAD
+ Eina_Bool repeat_events_exists;
+ Eina_Bool repeat_events;
++=======
+ Eina_Bool allow_events_exists;
+ Eina_Bool allow_events;
++>>>>>>> remotes/origin/upstream
Eina_Bool timeout_exists;
double timeout;
if (p->content) {
elm_object_content_set(obj, p->content);
}
++<<<<<<< HEAD
+ if (p->repeat_events_exists)
+ elm_notify_repeat_events_set(obj, p->repeat_events);
++=======
+ if (p->allow_events_exists)
+ elm_notify_allow_events_set(obj, p->allow_events);
++>>>>>>> remotes/origin/upstream
if (p->timeout_exists)
elm_notify_timeout_set(obj, p->timeout);
if (p->orient)
elm_object_content_set(obj, content);
return EINA_TRUE;
}
++<<<<<<< HEAD
+ else if ((!strcmp(param->name, "repeat_events"))
+ && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
+ {
+ elm_notify_repeat_events_set(obj, param->i);
++=======
+ else if ((!strcmp(param->name, "allow_events"))
+ && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
+ {
+ elm_notify_allow_events_set(obj, param->i);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
else if ((!strcmp(param->name, "timeout"))
/* not easy to get content name back from live object */
return EINA_FALSE;
}
++<<<<<<< HEAD
+ else if ((!strcmp(param->name, "repeat_events"))
+ && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
+ {
+ param->i = elm_notify_repeat_events_get(obj);
++=======
+ else if ((!strcmp(param->name, "allow_events"))
+ && (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL))
+ {
+ param->i = elm_notify_allow_events_get(obj);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
else if ((!strcmp(param->name, "timeout"))
mem->timeout = param->d;
mem->timeout_exists = EINA_TRUE;
}
++<<<<<<< HEAD
+ else if (!strcmp(param->name, "repeat_events"))
+ {
+ mem->repeat_events = param->i;
+ mem->repeat_events_exists = EINA_TRUE;
++=======
+ else if (!strcmp(param->name, "allow_events"))
+ {
+ mem->allow_events = param->i;
+ mem->allow_events_exists = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
else if (!strcmp(param->name, "orient"))
mem->orient = eina_stringshare_add(param->s);
static Edje_External_Param_Info external_notify_params[] = {
DEFINE_EXTERNAL_COMMON_PARAMS,
EDJE_EXTERNAL_PARAM_INFO_STRING("content"),
++<<<<<<< HEAD
+ EDJE_EXTERNAL_PARAM_INFO_BOOL("repeat_events"),
++=======
+ EDJE_EXTERNAL_PARAM_INFO_BOOL("allow_events"),
++>>>>>>> remotes/origin/upstream
EDJE_EXTERNAL_PARAM_INFO_DOUBLE("timeout"),
EDJE_EXTERNAL_PARAM_INFO_SENTINEL
};
}
static Evas_Object *external_segment_control_content_get(void *data __UNUSED__,
++<<<<<<< HEAD
+ const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
+{
+ ERR("No content.");
+ return NULL;
++=======
+ const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
+ {
+ ERR("No content.");
+ return NULL;
++>>>>>>> remotes/origin/upstream
}
static void
elm_toolbar_icon_size_set(obj, p->icon_size);
if (p->align_exists)
elm_toolbar_align_set(obj, p->align);
++<<<<<<< HEAD
+ if (p->always_select_exists)
+ elm_toolbar_always_select_mode_set(obj, p->always_select);
+ if (p->no_select_exists)
+ elm_toolbar_no_select_mode_set(obj, p->no_select);
++=======
+ if (p->no_select_exists)
+ {
+ if (p->no_select)
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ if (p->always_select_exists)
+ {
+ if (p->always_select)
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
++>>>>>>> remotes/origin/upstream
if (p->horizontal_exists)
elm_toolbar_horizontal_set(obj, p->horizontal);
if (p->homogeneous_exists)
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_toolbar_always_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ elm_toolbar_no_select_mode_set(obj, param->i);
++=======
+ if (param->i)
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_toolbar_select_mode_set (obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->d = elm_toolbar_always_select_mode_get(obj);
++=======
+ if (elm_toolbar_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_ALWAYS)
+ param->d = EINA_TRUE;
+ else
+ param->d = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
{
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
{
++<<<<<<< HEAD
+ param->i = elm_toolbar_no_select_mode_get(obj);
++=======
+ if (elm_toolbar_select_mode_get (obj) ==
+ ELM_OBJECT_SELECT_MODE_NONE)
+ param->i = EINA_TRUE;
+ else
+ param->i = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
}
else return;
if (p->file) elm_video_file_set(obj, p->file);
++<<<<<<< HEAD
+ if (p->uri) elm_video_uri_set(obj, p->uri);
++=======
+ if (p->uri) elm_video_file_set(obj, p->uri);
++>>>>>>> remotes/origin/upstream
if (p->play_exists && p->play) elm_video_play(obj);
if (p->pause_exists && p->pause) elm_video_pause(obj);
if (p->stop_exists && p->stop) elm_video_stop(obj);
else if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
&& (!strcmp(param->name, "uri")))
{
++<<<<<<< HEAD
+ elm_video_uri_set(obj, param->s);
++=======
+ elm_video_file_set(obj, param->s);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
else if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
DEFINE_TYPE(actionslider)
++<<<<<<< HEAD
+DEFINE_TYPE(anchorblock)
+DEFINE_TYPE(anchorview)
DEFINE_TYPE(bubble)
DEFINE_TYPE(button)
+DEFINE_TYPE(calendar)
DEFINE_TYPE(check)
DEFINE_TYPE(clock)
+DEFINE_TYPE(colorpalette)
+DEFINE_TYPE(datefield)
++=======
++DEFINE_TYPE(bubble)
++DEFINE_TYPE(button)
++DEFINE_TYPE(check)
++DEFINE_TYPE(clock)
++>>>>>>> remotes/origin/upstream
DEFINE_TYPE(entry)
DEFINE_TYPE(fileselector)
DEFINE_TYPE(fileselector_button)
DEFINE_TYPE(map)
DEFINE_TYPE(multibuttonentry)
DEFINE_TYPE(naviframe)
++<<<<<<< HEAD
+DEFINE_TYPE(nocontents)
+DEFINE_TYPE(page_control)
+DEFINE_TYPE(pager)
++=======
++>>>>>>> remotes/origin/upstream
DEFINE_TYPE(panes)
DEFINE_TYPE(photocam)
DEFINE_TYPE(progressbar)
DEFINE_TYPE(radio)
++<<<<<<< HEAD
+DEFINE_TYPE(searchbar)
++=======
++>>>>>>> remotes/origin/upstream
DEFINE_TYPE(slider)
DEFINE_TYPE(slideshow)
DEFINE_TYPE(spinner)
SRCS = \
actionslider_example_01.c \
++<<<<<<< HEAD
+ anchorblock_example_01.c \
++=======
++>>>>>>> remotes/origin/upstream
bubble_example_01.c \
button_example_01.c \
check_example_01.c \
calendar_example_04.c \
calendar_example_05.c \
calendar_example_06.c \
++<<<<<<< HEAD
++=======
+ datetime_example.c \
++>>>>>>> remotes/origin/upstream
map_example_01.c \
map_example_02.c \
map_example_03.c \
toolbar_example_03.c \
spinner_example.c \
clock_example.c \
++<<<<<<< HEAD
++=======
+ dayselector_example.c \
++>>>>>>> remotes/origin/upstream
mapbuf_example.c \
conformant_example_01.c \
conformant_example_02.c \
slider_example.c \
panes_example.c \
ctxpopup_example_01.c \
++<<<<<<< HEAD
+ pager_example_01.c \
++=======
++>>>>>>> remotes/origin/upstream
separator_example_01.c \
radio_example_01.c \
panel_example_01.c \
progressbar_example.c \
notify_example_01.c \
photocam_example_01.c \
++<<<<<<< HEAD
++=======
+ popup_example_01.c \
+ popup_example_02.c \
+ popup_example_03.c \
++>>>>>>> remotes/origin/upstream
inwin_example.c \
scroller_example_01.c \
table_example_01.c \
examples_PROGRAMS += \
actionslider_example_01 \
++<<<<<<< HEAD
+ anchorblock_example_01 \
++=======
++>>>>>>> remotes/origin/upstream
bubble_example_01 \
button_example_01 \
check_example_01 \
calendar_example_04 \
calendar_example_05 \
calendar_example_06 \
++<<<<<<< HEAD
++=======
+ datetime_example \
++>>>>>>> remotes/origin/upstream
map_example_01 \
map_example_02 \
map_example_03 \
toolbar_example_03 \
spinner_example \
clock_example \
++<<<<<<< HEAD
++=======
+ dayselector_example \
++>>>>>>> remotes/origin/upstream
mapbuf_example \
conformant_example_01 \
conformant_example_02 \
fileselector_entry_example \
index_example_01 \
index_example_02 \
++<<<<<<< HEAD
+ pager_example_01 \
++=======
++>>>>>>> remotes/origin/upstream
separator_example_01 \
radio_example_01 \
toggle_example_01 \
progressbar_example \
notify_example_01 \
photocam_example_01 \
++<<<<<<< HEAD
++=======
+ popup_example_01 \
+ popup_example_02 \
+ popup_example_03 \
++>>>>>>> remotes/origin/upstream
inwin_example \
scroller_example_01 \
table_example_01 \
calendar_example_04:calendar_example_04.png:0.0 \
calendar_example_05:calendar_example_05.png:0.0 \
calendar_example_06:calendar_example_06.png:0.0 \
++<<<<<<< HEAD
++=======
+ datetime_example:datetime_example.png:0.0 \
++>>>>>>> remotes/origin/upstream
map_example_01:map_example_01.png:2 \
map_example_02:map_example_02.png:2.5 \
map_example_03:map_example_03.png:2 \
toolbar_example_03:toolbar_example_03.png:1 \
spinner_example:spinner_example.png:0.0 \
clock_example:clock_example.png:0.5 \
++<<<<<<< HEAD
++=======
+ dayselector_example:dayselector_example.png:0.0 \
++>>>>>>> remotes/origin/upstream
mapbuf_example:mapbuf_example.png:0.0 \
image_example_01:image_example_01.png:0.0 \
diskselector_example_01:diskselector_example_01.png:0.2 \
slider_example:slider_example.png:0.0 \
panes_example:panes_example.png:0.0 \
ctxpopup_example_01:ctxpopup_example_01.png:0.0 \
++<<<<<<< HEAD
+ pager_example_01:pager_example_01.png:0.0 \
++=======
++>>>>>>> remotes/origin/upstream
separator_example_01:separator_example_01.png:0.0 \
radio_example_01:radio_example_01.png:0.0 \
toggle_example_01:toggle_example_01.png:0.0 \
progressbar_example:progressbar_example.png:0.0 \
notify_example_01:notify_example_01.png:0.0 \
notify_example_01:notify_example_01_a.png:6.0 \
++<<<<<<< HEAD
++=======
+ popup_example_01:popup_example_01.png:1.0 \
+ popup_example_01:popup_example_01_a.png:6.0 \
+ popup_example_02:popup_example_02.png:0.2 \
+ popup_example_03:popup_example_03.png:0.2 \
++>>>>>>> remotes/origin/upstream
slideshow_example:slideshow_example.png:1.0 \
photocam_example_01:photocam_example_01.png:3 \
scroller_example_01:scroller_example_01.png:0.0 \
o = elm_anchorblock_add(win);
elm_anchorblock_hover_style_set(o, "popout");
elm_anchorblock_hover_parent_set(o, win);
++<<<<<<< HEAD
+ elm_anchorblock_text_set(o, anchortext);
++=======
+ elm_object_text_set(o, anchortext);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(o, "anchor,clicked", _anchorblock_clicked_cb,
NULL);
evas_object_show(o);
o = elm_anchorview_add(win);
elm_anchorview_hover_parent_set(o, frame);
elm_anchorview_bounce_set(o, EINA_FALSE, EINA_TRUE);
++<<<<<<< HEAD
+ elm_anchorview_text_set(o, anchortext);
++=======
+ elm_object_text_set(o, anchortext);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(o, "anchor,clicked", _anchorview_clicked_cb,
NULL);
evas_object_show(o);
static void
_btn_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ const char *lbl = elm_button_label_get(obj);
++=======
+ const char *lbl = elm_object_text_get(obj);
++>>>>>>> remotes/origin/upstream
printf("%s: %s\n", lbl, (char *)data);
eina_stringshare_del(data);
}
bubble = elm_bubble_add(win);
elm_object_part_content_set(bubble, "icon", icon);
++<<<<<<< HEAD
+ elm_bubble_info_set(bubble, "INFO");
+ elm_object_text_set(bubble, "LABEL");
+ elm_bubble_content_set(bubble, label);
++=======
+ elm_object_part_text_set(bubble, "info", "INFO");
+ elm_object_text_set(bubble, "LABEL");
+ elm_object_content_set(bubble, label);
++>>>>>>> remotes/origin/upstream
evas_object_resize(bubble, 300, 100);
evas_object_show(bubble);
evas_object_show(label);
bubble = elm_bubble_add(win);
++<<<<<<< HEAD
+ elm_bubble_content_set(bubble, label);
++=======
+ elm_object_content_set(bubble, label);
++>>>>>>> remotes/origin/upstream
evas_object_resize(bubble, 200, 50);
evas_object_move(bubble, 0, 110);
evas_object_show(bubble);
char *ptr;
double t;
App_Data *app = data;
++<<<<<<< HEAD
+ const char *lbl = elm_button_label_get(btn);
++=======
+ const char *lbl = elm_object_text_get(btn);
++>>>>>>> remotes/origin/upstream
ptr = strchr(lbl, ':');
ptr += 2;
interval = elm_calendar_interval_get(obj);
elm_calendar_min_max_year_get(obj, &year_min, &year_max);
++<<<<<<< HEAD
+ sel_enabled = elm_calendar_day_selection_enabled_get(obj);
++=======
+ sel_enabled = !elm_calendar_day_selection_disabled_get(obj);
++>>>>>>> remotes/origin/upstream
wds = elm_calendar_weekdays_names_get(obj);
printf("Day: %i, Mon: %i, Year %i, WeekDay: %i<br>\n"
ck = elm_clock_add(win);
elm_clock_show_seconds_set(ck, EINA_TRUE);
elm_clock_edit_set(ck, EINA_TRUE);
++<<<<<<< HEAD
+ digedit = ELM_CLOCK_HOUR_UNIT | ELM_CLOCK_MIN_UNIT | ELM_CLOCK_SEC_UNIT;
+ elm_clock_digit_edit_set(ck, digedit);
++=======
+ digedit = ELM_CLOCK_EDIT_HOUR_UNIT | ELM_CLOCK_EDIT_MIN_UNIT | ELM_CLOCK_EDIT_SEC_UNIT;
+ elm_clock_edit_mode_set(ck, digedit);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(bx, ck);
evas_object_show(ck);
{
Evas_Object *ic = elm_icon_add(ctxpopup);
elm_icon_standard_set(ic, icon);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
return elm_ctxpopup_item_append(ctxpopup, label, ic, _ctxpopup_item_cb, NULL);
}
elm_box_pack_end(bx, ds);
for (i = 0; i < sizeof(lbl) / sizeof(lbl[0]); i++)
elm_diskselector_item_append(ds, lbl[i], NULL, NULL, NULL);
++<<<<<<< HEAD
+ elm_diskselector_round_set(ds, EINA_TRUE);
+ elm_diskselector_side_label_length_set(ds, 2);
++=======
+ elm_diskselector_round_enabled_set(ds, EINA_TRUE);
+ elm_diskselector_side_text_max_length_set(ds, 2);
++>>>>>>> remotes/origin/upstream
evas_object_show(ds);
/* display more than 3 items */
typedef struct
{
Evas_Object *inwin;
++<<<<<<< HEAD
+ Evas_Object *pager;
++=======
+ Evas_Object *naviframe;
++>>>>>>> remotes/origin/upstream
Evas_Object *grid;
Evas_Object *settings;
_edit_buffer_insert(Evas_Object *e, const char *text)
{
elm_entry_entry_insert(e, text);
++<<<<<<< HEAD
+ elm_object_focus(e);
++=======
+ elm_object_focus_set(e, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
_it_sel_cb(void *data, Evas_Object *obj __UNUSED__, void *event)
{
App_Inwin_Data *aid = data;
++<<<<<<< HEAD
+ Elm_Gengrid_Item *it = event;
+
+ aid->emo = elm_gengrid_item_data_get(it);
+
+ elm_pager_content_promote(aid->pager, aid->settings);
++=======
+ Elm_Object_Item *gg_it = event;
+
+ aid->emo = elm_object_item_data_get(gg_it);
+
+ elm_naviframe_item_simple_promote(aid->naviframe, aid->settings);
++>>>>>>> remotes/origin/upstream
}
static char *
snprintf(buf, sizeof(buf), "%d", aid->width);
ewidth = elm_entry_add(parent);
elm_entry_single_line_set(ewidth, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_text_filter_append(ewidth, elm_entry_filter_accept_set,
+ &accept_set);
+ elm_entry_text_filter_append(ewidth, elm_entry_filter_limit_size,
++=======
+ elm_entry_markup_filter_append(ewidth, elm_entry_filter_accept_set,
+ &accept_set);
+ elm_entry_markup_filter_append(ewidth, elm_entry_filter_limit_size,
++>>>>>>> remotes/origin/upstream
&limit_size);
elm_object_text_set(ewidth, buf);
evas_object_size_hint_weight_set(ewidth, EVAS_HINT_EXPAND, 0.0);
snprintf(buf, sizeof(buf), "%d", aid->height);
eheight = elm_entry_add(parent);
elm_entry_single_line_set(eheight, EINA_TRUE);
++<<<<<<< HEAD
+ elm_entry_text_filter_append(eheight, elm_entry_filter_accept_set,
+ &accept_set);
+ elm_entry_text_filter_append(eheight, elm_entry_filter_limit_size,
++=======
+ elm_entry_markup_filter_append(eheight, elm_entry_filter_accept_set,
+ &accept_set);
+ elm_entry_markup_filter_append(eheight, elm_entry_filter_limit_size,
++>>>>>>> remotes/origin/upstream
&limit_size);
elm_object_text_set(eheight, buf);
evas_object_size_hint_weight_set(eheight, EVAS_HINT_EXPAND, 0.0);
{
App_Data *ad = data;
App_Inwin_Data *aid;
++<<<<<<< HEAD
+ Evas_Object *inwin, *box, *box2, *pager, *o;
++=======
+ Evas_Object *inwin, *box, *box2, *naviframe, *o;
++>>>>>>> remotes/origin/upstream
aid = calloc(1, sizeof(App_Inwin_Data));
if (!aid) return;
elm_win_inwin_content_set(inwin, box);
evas_object_show(box);
++<<<<<<< HEAD
+ pager = elm_pager_add(ad->win);
+ evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, pager);
+ evas_object_show(pager);
+
+ o = _page_grid_add(ad->win, aid);
+ elm_pager_content_push(pager, o);
+ aid->grid = o;
+
+ o = _page_settings_add(ad->win, aid);
+ elm_pager_content_push(pager, o);
+ aid->settings = o;
+
+ elm_pager_content_promote(pager, aid->grid);
++=======
+ naviframe = elm_naviframe_add(ad->win);
+ evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, naviframe);
+ evas_object_show(naviframe);
+
+ o = _page_grid_add(ad->win, aid);
+ elm_naviframe_item_simple_push(naviframe, o);
+ aid->grid = o;
+
+ o = _page_settings_add(ad->win, aid);
+ elm_naviframe_item_simple_push(naviframe, o);
+ aid->settings = o;
+
+ elm_naviframe_item_simple_promote(naviframe, aid->grid);
++>>>>>>> remotes/origin/upstream
box2 = elm_box_add(ad->win);
elm_box_horizontal_set(box2, EINA_TRUE);
evas_object_smart_callback_add(o, "clicked", _insert_cancel_cb, aid);
aid->inwin = inwin;
++<<<<<<< HEAD
+ aid->pager = pager;
++=======
+ aid->naviframe = naviframe;
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_smart_callback_add(win, "delete,request", _win_del_cb, &app);
++<<<<<<< HEAD
+ elm_object_focus(app.edit_buffer);
++=======
+ elm_object_focus_set(app.edit_buffer, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 300, 780);
evas_object_show(rect2);
flip = elm_flip_add(win);
++<<<<<<< HEAD
+ elm_flip_content_front_set(flip, rect);
+ elm_flip_content_back_set(flip, rect2);
++=======
+ elm_object_part_content_set(flip, "front", rect);
+ elm_object_part_content_set(flip, "back", rect2);
++>>>>>>> remotes/origin/upstream
evas_object_resize(flip, 150, 150);
evas_object_move(flip, 10, 10);
evas_object_show(flip);
elm_flip_interaction_set(flip, ELM_FLIP_INTERACTION_PAGE);
++<<<<<<< HEAD
+ elm_flip_interacton_direction_enabled_set(flip, ELM_FLIP_DIRECTION_UP, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(flip, ELM_FLIP_DIRECTION_DOWN, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(flip, ELM_FLIP_DIRECTION_LEFT, EINA_TRUE);
+ elm_flip_interacton_direction_enabled_set(flip, ELM_FLIP_DIRECTION_RIGHT, EINA_TRUE);
+ elm_flip_interacton_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_UP, 1);
+ elm_flip_interacton_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_DOWN, 1);
+ elm_flip_interacton_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_LEFT, 1);
+ elm_flip_interacton_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_RIGHT, 1);
++=======
+ elm_flip_interaction_direction_enabled_set(flip, ELM_FLIP_DIRECTION_UP, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(flip, ELM_FLIP_DIRECTION_DOWN, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(flip, ELM_FLIP_DIRECTION_LEFT, EINA_TRUE);
+ elm_flip_interaction_direction_enabled_set(flip, ELM_FLIP_DIRECTION_RIGHT, EINA_TRUE);
+ elm_flip_interaction_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_UP, 1);
+ elm_flip_interaction_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_DOWN, 1);
+ elm_flip_interaction_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_LEFT, 1);
+ elm_flip_interaction_direction_hitsize_set(flip, ELM_FLIP_DIRECTION_RIGHT, 1);
++>>>>>>> remotes/origin/upstream
radio = elm_radio_add(win);
elm_object_text_set(radio, "page");
Evas_Object *obj __UNUSED__,
void *event __UNUSED__)
{
++<<<<<<< HEAD
+ elm_object_focus(d.btn);
++=======
+ elm_object_focus_set(d.btn, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj __UNUSED__,
void *event __UNUSED__)
{
++<<<<<<< HEAD
+ elm_object_unfocus(d.btn);
++=======
+ elm_object_focus_set(d.btn, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
static void
elm_object_content_set(frame, d.btn);
fprintf(stdout, "Elementary's finger size is set to %d pixels\n.",
++<<<<<<< HEAD
+ elm_finger_size_get());
++=======
+ elm_config_finger_size_get());
++>>>>>>> remotes/origin/upstream
elm_coords_finger_size_adjust(0, NULL, 3, &h);
/* so, button will be 3 fingers tall */
evas_object_size_hint_min_set(d.btn, 0, h);
"wood_01.jpg",
};
++<<<<<<< HEAD
+static Elm_Gengrid_Item_Class gic;
+Evas_Object *before_bt, *after_bt;
++=======
+ static Elm_Gengrid_Item_Class *gic = NULL;
+ static Evas_Object *before_bt, *after_bt;
++>>>>>>> remotes/origin/upstream
static void
_on_done(void *data __UNUSED__,
Evas_Object *grid = data;
Eina_Bool always = elm_check_state_get(obj);
++<<<<<<< HEAD
+ elm_gengrid_always_select_mode_set(grid, always);
++=======
+ if (always)
+ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
fprintf(stdout, "\"Always select\" mode for gengrid items is now %s\n",
always ? "on" : "off");
Evas_Object *grid = data;
Eina_Bool no_sel = elm_check_state_get(obj);
++<<<<<<< HEAD
+ elm_gengrid_no_select_mode_set(grid, no_sel);
++=======
+ if (no_sel)
+ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ elm_gengrid_select_mode_set(grid, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
fprintf(stdout, "Selection for gengrid items is now %s\n",
no_sel ? "disabled" : "enabled");
return;
it = _item_new();
++<<<<<<< HEAD
+ elm_gengrid_item_insert_before(grid, &gic, it, sel, _grid_sel, NULL);
++=======
+ elm_gengrid_item_insert_before(grid, gic, it, sel, _grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
/* "insert after" callback */
return;
it = _item_new();
++<<<<<<< HEAD
+ elm_gengrid_item_insert_after(grid, &gic, it, sel, _grid_sel, NULL);
++=======
+ elm_gengrid_item_insert_after(grid, gic, it, sel, _grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
/* prepend an item */
Evas_Object *grid = data;
it = _item_new();
++<<<<<<< HEAD
+ elm_gengrid_item_prepend(grid, &gic, it, _grid_sel, NULL);
++=======
+ elm_gengrid_item_prepend(grid, gic, it, _grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
/* append an item */
Evas_Object *grid = data;
Example_Item *it = _item_new();
++<<<<<<< HEAD
+ elm_gengrid_item_append(grid, &gic, it, _grid_sel, NULL);
++=======
+ elm_gengrid_item_append(grid, gic, it, _grid_sel, NULL);
++>>>>>>> remotes/origin/upstream
}
/* delete items */
if (!gg_it) return;
++<<<<<<< HEAD
+ elm_gengrid_item_bring_in(gg_it);
++=======
+ elm_gengrid_item_bring_in(gg_it, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
/* show last item */
if (!gg_it) return;
++<<<<<<< HEAD
+ elm_gengrid_item_show(gg_it);
++=======
+ elm_gengrid_item_show(gg_it, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
/* disable selected item */
_page_change_cb(grid, sl, NULL);
evas_object_smart_callback_add(sl, "changed", _page_change_cb, grid);
++<<<<<<< HEAD
+ gic.item_style = "default";
+ gic.func.text_get = _grid_label_get;
+ gic.func.content_get = _grid_content_get;
+ gic.func.state_get = _grid_state_get;
+ gic.func.del = _grid_del;
++=======
+ if (!gic)
+ {
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+ gic->func.text_get = _grid_label_get;
+ gic->func.content_get = _grid_content_get;
+ gic->func.state_get = _grid_state_get;
+ gic->func.del = _grid_del;
+ } // we only create the first time its needed. we dont unref/free
++>>>>>>> remotes/origin/upstream
_append_bt_clicked(grid, NULL, NULL);
_append_bt_clicked(grid, NULL, NULL);
#define N_ITEMS 30
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class _itc;
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++=======
+ static Elm_Genlist_Item_Class *_itc = NULL;
+
+ static char *
+ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
char buf[256];
snprintf(buf, sizeof(buf), "Item # %i", (int)(long)data);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
++<<<<<<< HEAD
+ _itc.item_style = "default";
+ _itc.func.text_get = _item_text_get;
+ _itc.func.content_get = _item_content_get;
+ _itc.func.state_get = NULL;
+ _itc.func.del = NULL;
++=======
+ if (!_itc)
+ {
+ _itc = elm_genlist_item_class_new();
+ _itc->item_style = "default";
+ _itc->func.text_get = _item_label_get;
+ _itc->func.content_get = _item_content_get;
+ _itc->func.state_get = NULL;
+ _itc->func.del = NULL;
+ }
++>>>>>>> remotes/origin/upstream
list = elm_genlist_add(win);
for (i = 0; i < N_ITEMS; i++)
{
++<<<<<<< HEAD
+ elm_genlist_item_append(list, &_itc,
++=======
+ elm_genlist_item_append(list, _itc,
++>>>>>>> remotes/origin/upstream
(void *)(long)i, NULL,
ELM_GENLIST_ITEM_NONE,
_item_sel_cb, NULL);
#define N_ITEMS 300
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class _itc;
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++=======
+ static Elm_Genlist_Item_Class *_itc = NULL;
+
+ static char *
+ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
time_t t = (time_t)ecore_time_unix_get();
char buf[256];
{
Evas_Object *list = data;
Evas_Coord x, y, w, h, mx, my;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+
+ const Eina_List *selected, *l, *realized;
+ printf("\nfirst selected item: %p\n", it);
+
+ selected = elm_genlist_selected_items_get(list);
+ printf("all selected items (%d): ", eina_list_count(selected));
+ EINA_LIST_FOREACH(selected, l, it)
+ printf("%p ", it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ const Eina_List *selected, *l, *realized;
+ printf("\nfirst selected item: %p\n", glit);
+
+ selected = elm_genlist_selected_items_get(list);
+ printf("all selected items (%d): ", eina_list_count(selected));
+ EINA_LIST_FOREACH(selected, l, glit)
+ printf("%p ", glit);
++>>>>>>> remotes/origin/upstream
printf("\n");
realized = elm_genlist_realized_items_get(list);
printf("realized items (%d): ", eina_list_count(realized));
++<<<<<<< HEAD
+ EINA_LIST_FOREACH(realized, l, it)
+ printf("%p ", it);
+ printf("\n");
+ printf("genlist mode: %s\n", elm_genlist_mode_get(list));
+ printf("mode item: %p\n", elm_genlist_mode_item_get(list));
++=======
+ EINA_LIST_FOREACH(realized, l, glit)
+ printf("%p ", glit);
+ printf("\n");
+ printf("genlist mode: %s\n", elm_genlist_decorate_mode_get(list));
+ printf("mode item: %p\n", elm_genlist_decorated_item_get(list));
++>>>>>>> remotes/origin/upstream
evas_object_geometry_get(list, &x, &y, &w, &h);
mx = w / 2 + x;
my = h / 2 + y;
++<<<<<<< HEAD
+ it = elm_genlist_at_xy_item_get(list, mx, my, NULL);
+ printf("item in the middle of the screen: %p\n", it);
++=======
+ glit = elm_genlist_at_xy_item_get(list, mx, my, NULL);
+ printf("item in the middle of the screen: %p\n", glit);
++>>>>>>> remotes/origin/upstream
}
static void
list = elm_genlist_add(win);
++<<<<<<< HEAD
+ _itc.item_style = "default";
+ _itc.func.text_get = _item_text_get;
+ _itc.func.content_get = _item_content_get;
+ _itc.func.state_get = NULL;
+ _itc.func.del = NULL;
+
+ Eina_Bool hbounce, vbounce;
+ Elm_Scroller_Policy hp, vp;
+
+ printf("default values:\n");
+ printf("always select: %d\n", elm_genlist_always_select_mode_get(list));
+ elm_genlist_bounce_get(list, &hbounce, &vbounce);
+ printf("bounce - horizontal: %d, vertical: %d\n", hbounce, vbounce);
+ printf("compress mode: %d\n", elm_genlist_compress_mode_get(list));
+ printf("homogeneous: %d\n", elm_genlist_homogeneous_get(list));
+ printf("horizontal mode: %d\n", elm_genlist_horizontal_mode_get(list));
+ printf("longpress timeout: %0.3f\n",
+ elm_genlist_longpress_timeout_get(list));
+ printf("multi selection: %d\n", elm_genlist_multi_select_get(list));
+ printf("no selection mode: %d\n", elm_genlist_no_select_mode_get(list));
+ printf("height for width enabled: %d\n",
+ elm_genlist_height_for_width_mode_get(list));
++=======
+ if (!_itc)
+ {
+ _itc = elm_genlist_item_class_new();
+ _itc->item_style = "default";
+ _itc->func.text_get = _item_label_get;
+ _itc->func.content_get = _item_content_get;
+ _itc->func.state_get = NULL;
+ _itc->func.del = NULL;
+ }
+
+ Eina_Bool hbounce, vbounce, always, no_sel;
+ Elm_Scroller_Policy hp, vp;
+ Elm_Object_Select_Mode sel_mode;
+
+ always = no_sel = EINA_FALSE;
+ sel_mode = elm_genlist_select_mode_get(list);
+ if (sel_mode = ELM_OBJECT_SELECT_MODE_ALWAYS)
+ always = EINA_TRUE;
+ else if (sel_mode = ELM_OBJECT_SELECT_MODE_NONE)
+ no_sel = EINA_TRUE;
+
+ printf("default values:\n");
+ printf("always select: %d\n", always);
+ elm_genlist_bounce_get(list, &hbounce, &vbounce);
+ printf("bounce - horizontal: %d, vertical: %d\n", hbounce, vbounce);
+ printf("homogeneous: %d\n", elm_genlist_homogeneous_get(list));
+ printf("horizontal mode: %d\n", elm_genlist_mode_get(list));
+ printf("longpress timeout: %0.3f\n",
+ elm_genlist_longpress_timeout_get(list));
+ printf("multi selection: %d\n", elm_genlist_multi_select_get(list));
+ printf("no selection mode: %d\n", no_sel);
++>>>>>>> remotes/origin/upstream
elm_genlist_scroller_policy_get(list, &hp, &vp);
printf("scroller policy - horizontal: %d, vertical: %d\n", hp, vp);
printf("block count: %d\n", elm_genlist_block_count_get(list));
printf("\n");
++<<<<<<< HEAD
+ elm_genlist_always_select_mode_set(list, EINA_FALSE);
+ elm_genlist_bounce_set(list, EINA_FALSE, EINA_FALSE);
+ elm_genlist_compress_mode_set(list, EINA_TRUE);
+ elm_genlist_homogeneous_set(list, EINA_FALSE);
+ elm_genlist_horizontal_mode_set(list, ELM_LIST_LIMIT);
+ elm_genlist_multi_select_set(list, EINA_TRUE);
+ elm_genlist_no_select_mode_set(list, EINA_FALSE);
+ elm_genlist_height_for_width_mode_set(list, EINA_FALSE);
++=======
+ elm_genlist_bounce_set(list, EINA_FALSE, EINA_FALSE);
+ elm_genlist_homogeneous_set(list, EINA_FALSE);
+ elm_genlist_mode_set(list, ELM_LIST_LIMIT);
+ elm_genlist_multi_select_set(list, EINA_TRUE);
+ elm_genlist_select_mode_set(list, ELM_OBJECT_SELECT_MODE_DEFAULT);
++>>>>>>> remotes/origin/upstream
elm_genlist_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
elm_genlist_longpress_timeout_set(list, 0.5);
elm_genlist_block_count_set(list, 16);
for (i = 0; i < N_ITEMS; i++)
{
++<<<<<<< HEAD
+ elm_genlist_item_append(list, &_itc,
++=======
+ elm_genlist_item_append(list, _itc,
++>>>>>>> remotes/origin/upstream
(void *)(long)i, NULL,
ELM_GENLIST_ITEM_NONE,
_item_sel_cb, NULL);
#define N_ITEMS 30
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class _itc;
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++=======
+ static Elm_Genlist_Item_Class *_itc = NULL;
+
+ static char *
+ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++>>>>>>> remotes/origin/upstream
{
time_t t = (time_t)ecore_time_unix_get();
char buf[256];
for (i = 0; i < N_ITEMS; i++)
{
++<<<<<<< HEAD
+ elm_genlist_item_append(list, &_itc,
++=======
+ elm_genlist_item_append(list, _itc,
++>>>>>>> remotes/origin/upstream
(void *)(long)i, NULL,
ELM_GENLIST_ITEM_NONE,
_item_sel_cb, NULL);
elm_win_resize_object_add(win, box);
evas_object_show(box);
++<<<<<<< HEAD
+ _itc.item_style = "double_label";
+ _itc.func.text_get = _item_text_get;
+ _itc.func.content_get = _item_content_get;
+ _itc.func.state_get = NULL;
+ _itc.func.del = NULL;
+
+ list = _genlist_add(box);
+ _genlist_fill(list);
+
+ list = _genlist_add(box);
+ elm_genlist_horizontal_mode_set(list, ELM_LIST_LIMIT);
+ _genlist_fill(list);
+
+ list = _genlist_add(box);
+ elm_genlist_compress_mode_set(list, EINA_TRUE);
+ _genlist_fill(list);
+
+ list = _genlist_add(box);
+ elm_genlist_height_for_width_mode_set(list, EINA_TRUE);
++=======
+ if (!_itc)
+ {
+ _itc = elm_genlist_item_class_new();
+ _itc->item_style = "double_label";
+ _itc->func.text_get = _item_label_get;
+ _itc->func.content_get = _item_content_get;
+ _itc->func.state_get = NULL;
+ _itc->func.del = NULL;
+ }
+
+ list = _genlist_add(box);
+ _genlist_fill(list);
+
+ list = _genlist_add(box);
+ elm_genlist_mode_set(list, ELM_LIST_LIMIT);
+ _genlist_fill(list);
+
+ list = _genlist_add(box);
+ elm_genlist_mode_set(list, ELM_LIST_COMPRESS);
++>>>>>>> remotes/origin/upstream
_genlist_fill(list);
evas_object_size_hint_min_set(bg, 800, 160);
#define N_ITEMS 300
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class _itc;
+static Elm_Genlist_Item_Class _itc_group;
+static int nitems = 0;
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++=======
+ static Elm_Genlist_Item_Class *_itc = NULL;
+ static Elm_Genlist_Item_Class *_itc_group = NULL;
+ static int nitems = 0;
+
+ static char *
+ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++>>>>>>> remotes/origin/upstream
{
time_t t = (time_t)ecore_time_unix_get();
char buf[256];
snprintf(buf, sizeof(buf), "Item # %i", i);
else
{
++<<<<<<< HEAD
+ int n;
+ snprintf(buf, sizeof(buf), "realized at %s", ctime(&t));
+ n = strlen(buf);
+ buf[n - 1] = '\0';
++=======
+ int n;
+ snprintf(buf, sizeof(buf), "realized at %s", ctime(&t));
+ n = strlen(buf);
+ buf[n - 1] = '\0';
++>>>>>>> remotes/origin/upstream
}
return strdup(buf);
_item_sel_cb(void *data, Evas_Object *obj, void *event_info)
{
printf("sel item data [%p] on genlist obj [%p], item pointer [%p]\n",
++<<<<<<< HEAD
+ data, obj, event_info);
+}
+
+static char *
+_group_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++=======
+ data, obj, event_info);
+ }
+
+ static char *
+ _group_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
char buf[256];
int i = (int)(long)data;
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ elm_genlist_item_append(list, &_itc,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++=======
+ elm_genlist_item_append(list, _itc,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++>>>>>>> remotes/origin/upstream
}
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ elm_genlist_item_prepend(list, &_itc,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++=======
+ elm_genlist_item_prepend(list, _itc,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++>>>>>>> remotes/origin/upstream
}
_insert_before_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+
+ if (!it)
+ return;
+
+ elm_genlist_item_insert_before(list, &_itc,
+ (void *)(long)nitems++, NULL,
+ it, ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ if (!glit) return;
+
+ elm_genlist_item_insert_before(list, _itc,
+ (void *)(long)nitems++, NULL,
+ glit, ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+
++>>>>>>> remotes/origin/upstream
}
static void
_insert_after_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+
+ if (!it)
+ return;
+
+ elm_genlist_item_insert_after(list, &_itc,
+ (void *)(long)nitems++, NULL,
+ it, ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ if (!glit) return;
+
+ elm_genlist_item_insert_after(list, _itc,
+ (void *)(long)nitems++, NULL,
+ glit, ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+
++>>>>>>> remotes/origin/upstream
}
static void
_next_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it;
+
+ it = elm_genlist_selected_item_get(list);
+ if (it)
+ it = elm_genlist_item_next_get(it);
+
+ if (!it)
+ it = elm_genlist_first_item_get(list);
+
+ elm_genlist_item_selected_set(it, EINA_TRUE);
+ elm_genlist_item_show(it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ if (glit) glit = elm_genlist_item_next_get(glit);
+ if (!glit) glit = elm_genlist_first_item_get(list);
+
+ elm_genlist_item_selected_set(glit, EINA_TRUE);
+ elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
_prev_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it;
+
+ it = elm_genlist_selected_item_get(list);
+ if (it)
+ it = elm_genlist_item_prev_get(it);
+
+ if (!it)
+ it = elm_genlist_last_item_get(list);
+
+ elm_genlist_item_selected_set(it, EINA_TRUE);
+ elm_genlist_item_show(it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ if (glit) glit = elm_genlist_item_prev_get(glit);
+ if (!glit) glit = elm_genlist_last_item_get(list);
+
+ elm_genlist_item_selected_set(glit, EINA_TRUE);
+ elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
_bring_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_bring_in(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
_show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_show(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
_middle_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_middle_bring_in(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
++>>>>>>> remotes/origin/upstream
}
static void
_middle_show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_middle_show(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
++>>>>>>> remotes/origin/upstream
}
static void
_top_in_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_top_bring_in(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_bring_in(glit, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++>>>>>>> remotes/origin/upstream
}
static void
_top_show_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = data;
+
+ if (!it)
+ return;
+
+ elm_genlist_item_top_show(it);
++=======
+ Elm_Object_Item *glit = data;
+ if (!glit) return;
+
+ elm_genlist_item_show(glit, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++>>>>>>> remotes/origin/upstream
}
static void
_realize_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+
+ if (!it)
+ return;
+
+ elm_genlist_item_update(it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+ if (!glit) return;
+
+ elm_genlist_item_update(glit);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
elm_win_resize_object_add(win, box);
evas_object_show(box);
++<<<<<<< HEAD
+ _itc.item_style = "double_label";
+ _itc.func.text_get = _item_text_get;
+ _itc.func.content_get = _item_content_get;
+ _itc.func.state_get = NULL;
+ _itc.func.del = NULL;
+
+ _itc_group.item_style = "group_index";
+ _itc_group.func.text_get = _group_text_get;
+ _itc_group.func.content_get = _group_content_get;
+ _itc_group.func.state_get = NULL;
+ _itc_group.func.del = NULL;
+
++=======
+ if (!_itc)
+ {
+ _itc = elm_genlist_item_class_new();
+ _itc->item_style = "default";
+ _itc->func.text_get = _item_label_get;
+ _itc->func.content_get = _item_content_get;
+ _itc->func.state_get = NULL;
+ _itc->func.del = NULL;
+ }
+
+ if (!_itc_group)
+ {
+ _itc_group = elm_genlist_item_class_new();
+ _itc_group->item_style = "default";
+ _itc_group->func.text_get = _item_label_get;
+ _itc_group->func.content_get = _item_content_get;
+ _itc_group->func.state_get = NULL;
+ _itc_group->func.del = NULL;
+ }
++>>>>>>> remotes/origin/upstream
list = elm_genlist_add(win);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
fbox = elm_box_add(win);
elm_box_layout_set(fbox, evas_object_box_layout_flow_horizontal,
++<<<<<<< HEAD
+ NULL, NULL);
++=======
+ NULL, NULL);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(fbox, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(fbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, fbox);
for (i = 0; i < N_ITEMS; i++)
{
++<<<<<<< HEAD
+ Elm_Object_Item *gli, *glg;
+
+ if (i % 7 == 0)
+ {
+ glg = gli = elm_genlist_item_append(list, &_itc_group,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ _item_sel_cb, NULL);
+ elm_genlist_item_display_only_set(glg, EINA_TRUE);
+ }
+ else
+ {
+ gli = elm_genlist_item_append(list, &_itc,
+ (void *)(long)nitems++, glg,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+ }
+
+ switch (i)
+ {
+ case 3:
+ elm_genlist_item_disabled_set(gli, EINA_TRUE);
+ break;
+ case 50:
+ evas_object_smart_callback_add(
+ bt_bring_in, "clicked", _bring_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_show, "clicked", _show_cb, gli);
+ break;
+ case 200:
+ evas_object_smart_callback_add(
+ bt_middle_in, "clicked", _middle_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_middle_show, "clicked", _middle_show_cb, gli);
+ break;
+ case 250:
+ evas_object_smart_callback_add(
+ bt_top_in, "clicked", _top_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_top_show, "clicked", _top_show_cb, gli);
+ }
++=======
+ Elm_Object_Item *gli, *glg;
+
+ if (i % 7 == 0)
+ {
+ glg = gli = elm_genlist_item_append(list, _itc_group,
+ (void *)(long)nitems++, NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ _item_sel_cb, NULL);
+ elm_genlist_item_select_mode_set(gli, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+ else
+ {
+ gli = elm_genlist_item_append(list, _itc,
+ (void *)(long)nitems++, glg,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+ }
+
+ switch (i)
+ {
+ case 3:
+ elm_object_item_disabled_set(gli, EINA_TRUE);
+ break;
+ case 50:
+ evas_object_smart_callback_add(
+ bt_bring_in, "clicked", _bring_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_show, "clicked", _show_cb, gli);
+ break;
+ case 200:
+ evas_object_smart_callback_add(
+ bt_middle_in, "clicked", _middle_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_middle_show, "clicked", _middle_show_cb, gli);
+ break;
+ case 250:
+ evas_object_smart_callback_add(
+ bt_top_in, "clicked", _top_in_cb, gli);
+ evas_object_smart_callback_add(
+ bt_top_show, "clicked", _top_show_cb, gli);
+ }
++>>>>>>> remotes/origin/upstream
}
evas_object_size_hint_min_set(bg, 160, 160);
Eina_Bool favorite;
} Node_Data;
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class _itc;
+static Elm_Genlist_Item_Class _itp;
+static Elm_Genlist_Item_Class _itfav;
+static int nitems = 0;
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++=======
+ static Elm_Genlist_Item_Class *_itc = NULL;
+ static Elm_Genlist_Item_Class *_itp = NULL;
+ static Elm_Genlist_Item_Class *_itfav = NULL;
+ static int nitems = 0;
+
+ static char *
+ _item_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++>>>>>>> remotes/origin/upstream
{
char buf[256];
Node_Data *d = data;
}
static char *
++<<<<<<< HEAD
+_parent_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++=======
+ _parent_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
char buf[256];
Node_Data *d = data;
}
static char *
++<<<<<<< HEAD
+_favorite_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++=======
+ _favorite_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
++>>>>>>> remotes/origin/upstream
{
char buf[256];
Node_Data *d = data;
_append_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it, *parent = NULL;
++=======
+ Elm_Object_Item *glit, *parent = NULL;
++>>>>>>> remotes/origin/upstream
Node_Data *pdata, *d = malloc(sizeof(*d));
d->children = NULL;
d->value = nitems++;
d->favorite = EINA_FALSE;
++<<<<<<< HEAD
+ it = elm_genlist_selected_item_get(list);
+ if (it)
+ parent = elm_genlist_item_parent_get(it);
+
+ if (parent)
+ {
+ d->level = elm_genlist_item_expanded_depth_get(parent) + 1;
+ pdata = elm_genlist_item_data_get(parent);
+ pdata->children = eina_list_append(pdata->children, d);
++=======
+ glit = elm_genlist_selected_item_get(list);
+ if (glit)
+ parent = elm_genlist_item_parent_get(glit);
+
+ if (parent)
+ {
+ d->level = elm_genlist_item_expanded_depth_get(parent) + 1;
+ pdata = elm_object_item_data_get(parent);
+ pdata->children = eina_list_append(pdata->children, d);
++>>>>>>> remotes/origin/upstream
}
else
d->level = 0;
++<<<<<<< HEAD
+ elm_genlist_item_append(list, &_itc,
+ d, parent,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++=======
+ elm_genlist_item_append(list, _itc,
+ d, parent,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
_favorite_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+
+ if (!it)
+ return;
+
+ Node_Data *d = elm_genlist_item_data_get(it);
+ d->favorite = !d->favorite;
+ if (d->favorite)
+ elm_genlist_item_item_class_update(it, &_itfav);
+ else
+ {
+ if (d->children)
+ elm_genlist_item_item_class_update(it, &_itp);
+ else
+ elm_genlist_item_item_class_update(it, &_itc);
+ }
+
+ elm_genlist_item_update(it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+
+ if (!glit) return;
+
+ Node_Data *d = elm_object_item_data_get(glit);
+ d->favorite = !d->favorite;
+ if (d->favorite)
+ elm_genlist_item_item_class_update(glit, _itfav);
+ else
+ {
+ if (d->children)
+ elm_genlist_item_item_class_update(glit, _itp);
+ else
+ elm_genlist_item_item_class_update(glit, _itc);
+ }
+
+ elm_genlist_item_update(glit);
++>>>>>>> remotes/origin/upstream
}
static void
_add_child_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+ Elm_Object_Item *prev, *parent;
+
+ if (!it)
+ return;
+
+ Node_Data *d = elm_genlist_item_data_get(it);
+ prev = elm_genlist_item_prev_get(it);
+ parent = elm_genlist_item_parent_get(it);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+ Elm_Object_Item *glit_prev, *glit_parent;
+
+ if (!glit) return;
+
+ Node_Data *d = elm_object_item_data_get(glit);
+ glit_prev = elm_genlist_item_prev_get(glit);
+ glit_parent = elm_genlist_item_parent_get(glit);
++>>>>>>> remotes/origin/upstream
Eina_Bool change_item = !d->children;
ndata->value = nitems++;
ndata->children = NULL;
ndata->favorite = EINA_FALSE;
++<<<<<<< HEAD
+ ndata->level = elm_genlist_item_expanded_depth_get(it) + 1;
++=======
+ ndata->level = elm_genlist_item_expanded_depth_get(glit) + 1;
++>>>>>>> remotes/origin/upstream
d->children = eina_list_append(d->children, ndata);
// Changing leaf item to parent item
if (change_item)
{
++<<<<<<< HEAD
+ elm_genlist_item_del(it);
+
+ if (prev != parent)
+ it = elm_genlist_item_insert_after(list, &_itp, d, parent, prev,
+ ELM_GENLIST_ITEM_SUBITEMS,
+ _item_sel_cb, NULL);
+ else
+ it = elm_genlist_item_prepend(list, &_itp, d, parent,
+ ELM_GENLIST_ITEM_SUBITEMS,
+ _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(it, EINA_FALSE);
+ elm_genlist_item_selected_set(it, EINA_TRUE);
+ }
+ else if (elm_genlist_item_expanded_get(it))
+ {
+ elm_genlist_item_append(list, &_itc, ndata, it,
+ ELM_GENLIST_ITEM_NONE, _item_sel_cb, NULL);
+ }
+
+ elm_genlist_item_update(it);
++=======
+ elm_object_item_del(glit);
+
+ if (glit_prev != glit_parent)
+ glit = elm_genlist_item_insert_after(list, _itp, d, glit_parent,
+ glit_prev,
+ ELM_GENLIST_ITEM_TREE,
+ _item_sel_cb, NULL);
+ else
+ glit = elm_genlist_item_prepend(list, _itp, d, glit_parent,
+ ELM_GENLIST_ITEM_TREE,
+ _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(glit, EINA_FALSE);
+ elm_genlist_item_selected_set(glit, EINA_TRUE);
+ }
+ else if (elm_genlist_item_expanded_get(glit))
+ {
+ elm_genlist_item_append(list, _itc, ndata, glit,
+ ELM_GENLIST_ITEM_NONE, _item_sel_cb, NULL);
+ }
+
+ elm_genlist_item_update(glit);
+
++>>>>>>> remotes/origin/upstream
}
static void
_del_item_cb(void *data, Evas_Object *o __UNUSED__, void *event_info __UNUSED__)
{
Evas_Object *list = data;
++<<<<<<< HEAD
+ Elm_Object_Item *it = elm_genlist_selected_item_get(list);
+ Elm_Object_Item *parent = NULL;
+
+ if (!it)
+ return;
+
+ Node_Data *pdata, *d = elm_genlist_item_data_get(it);
+ parent = elm_genlist_item_parent_get(it);
+ elm_genlist_item_subitems_clear(it);
+ elm_genlist_item_del(it);
+
+ _clear_list(d);
+
+ if (!parent)
+ return;
+
+ pdata = elm_genlist_item_data_get(parent);
+ pdata->children = eina_list_remove(pdata->children, d);
+ elm_genlist_item_update(parent);
++=======
+ Elm_Object_Item *glit = elm_genlist_selected_item_get(list);
+ Elm_Object_Item *glit_parent = NULL;
+
+ if (!glit) return;
+
+ Node_Data *pdata, *d = elm_object_item_data_get(glit);
+ glit_parent = elm_genlist_item_parent_get(glit);
+ elm_genlist_item_subitems_clear(glit);
+ elm_object_item_del(glit);
+
+ _clear_list(d);
+
+ if (!glit_parent) return;
+
+ pdata = elm_object_item_data_get(glit_parent);
+ pdata->children = eina_list_remove(pdata->children, d);
+ elm_genlist_item_update(glit_parent);
++>>>>>>> remotes/origin/upstream
}
static void
_expand_request_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ printf("expand request on item: %p\n", event_info);
+ elm_genlist_item_expanded_set(it, EINA_TRUE);
++=======
+ Elm_Object_Item *glit = event_info;
+ printf("expand request on item: %p\n", event_info);
+ elm_genlist_item_expanded_set(glit, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
_contract_request_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ printf("contract request on item: %p\n", event_info);
+ elm_genlist_item_expanded_set(it, EINA_FALSE);
++=======
+ Elm_Object_Item *glit = event_info;
+ printf("contract request on item: %p\n", event_info);
+ elm_genlist_item_expanded_set(glit, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
static void
_expanded_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ Node_Data *it_data, *d = elm_genlist_item_data_get(it);
+ Evas_Object *list = elm_genlist_item_genlist_get(it);
++=======
+ Elm_Object_Item *glit = event_info;
+ Node_Data *it_data, *d = elm_object_item_data_get(glit);
+ Evas_Object *list = elm_object_item_widget_get(glit);
++>>>>>>> remotes/origin/upstream
Elm_Genlist_Item_Class *ic;
EINA_LIST_FOREACH(d->children, l, it_data)
{
++<<<<<<< HEAD
+ Elm_Object_Item *nitem;
+ Elm_Genlist_Item_Flags flags = ELM_GENLIST_ITEM_NONE;
+ printf("expanding item: #%d from parent #%d\n", it_data->value, d->value);
+ if (it_data->favorite)
+ ic = &_itfav;
+ else if (it_data->children)
+ {
+ ic = &_itp;
+ flags = ELM_GENLIST_ITEM_SUBITEMS;
+ }
+ else
+ ic = &_itc;
+
+ nitem = elm_genlist_item_append(list, ic, it_data, it,
+ flags, _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(nitem, EINA_FALSE);
++=======
+ Elm_Object_Item *nitem;
+ Elm_Genlist_Item_Type type = ELM_GENLIST_ITEM_NONE;
+ printf("expanding item: #%d from parent #%d\n", it_data->value, d->value);
+ if (it_data->favorite)
+ ic = _itfav;
+ else if (it_data->children)
+ {
+ ic = _itp;
+ type = ELM_GENLIST_ITEM_TREE;
+ }
+ else
+ ic = _itc;
+
+ nitem = elm_genlist_item_append(list, ic, it_data, glit,
+ type, _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(nitem, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
}
static void
_contracted_cb(void *data __UNUSED__, Evas_Object *o __UNUSED__, void *event_info)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it = event_info;
+ elm_genlist_item_subitems_clear(it);
++=======
+ Elm_Object_Item *glit = event_info;
+ elm_genlist_item_subitems_clear(glit);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
elm_win_resize_object_add(win, box);
evas_object_show(box);
++<<<<<<< HEAD
+ _itc.item_style = "default";
+ _itc.func.text_get = _item_text_get;
+ _itc.func.content_get = _item_content_get;
+ _itc.func.state_get = NULL;
+ _itc.func.del = NULL;
+
+ _itp.item_style = "default";
+ _itp.func.text_get = _parent_text_get;
+ _itp.func.content_get = _parent_content_get;
+ _itp.func.state_get = NULL;
+ _itp.func.del = NULL;
+
+ _itfav.item_style = "default";
+ _itfav.func.text_get = _favorite_text_get;
+ _itfav.func.content_get = _favorite_content_get;
+ _itfav.func.state_get = NULL;
+ _itfav.func.del = NULL;
++=======
+ if (!_itc)
+ {
+ _itc = elm_genlist_item_class_new();
+ _itc->item_style = "default";
+ _itc->func.text_get = _item_label_get;
+ _itc->func.content_get = _item_content_get;
+ _itc->func.state_get = NULL;
+ _itc->func.del = NULL;
+ }
+
+ if (!_itp)
+ {
+ _itp = elm_genlist_item_class_new();
+ _itp->item_style = "default";
+ _itp->func.text_get = _parent_label_get;
+ _itp->func.content_get = _parent_content_get;
+ _itp->func.state_get = NULL;
+ _itp->func.del = NULL;
+ }
+
+ if (!_itfav)
+ {
+ _itfav = elm_genlist_item_class_new();
+ _itfav->item_style = "default";
+ _itfav->func.text_get = _favorite_label_get;
+ _itfav->func.content_get = _favorite_content_get;
+ _itfav->func.state_get = NULL;
+ _itfav->func.del = NULL;
+ }
++>>>>>>> remotes/origin/upstream
list = elm_genlist_add(win);
fbox = elm_box_add(win);
elm_box_layout_set(fbox, evas_object_box_layout_flow_horizontal,
++<<<<<<< HEAD
+ NULL, NULL);
++=======
+ NULL, NULL);
++>>>>>>> remotes/origin/upstream
evas_object_size_hint_weight_set(fbox, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(fbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, fbox);
for (i = 0; i < N_ITEMS; i++)
{
++<<<<<<< HEAD
+ Elm_Object_Item *gli, *glg;
+ Node_Data *data = malloc(sizeof(*data)); // data for this item
+ data->children = NULL;
+ data->value = i;
+ data->favorite = EINA_FALSE;
+ nitems++;
+
+ Node_Data *pdata; // data for the parent of the group
+
+ printf("creating item: #%d\n", data->value);
+ if (i % 3 == 0)
+ {
+ glg = gli = elm_genlist_item_append(list, &_itp, data, NULL,
+ ELM_GENLIST_ITEM_SUBITEMS,
+ _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(glg, EINA_TRUE);
+ pdata = data;
+ data->level = 0;
+ }
+ else
+ {
+ gli = elm_genlist_item_append(list, &_itc, data, glg,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+ pdata->children = eina_list_append(pdata->children, data);
+ data->level = 1;
+ }
++=======
+ Elm_Object_Item *gli, *glg;
+ Node_Data *data = malloc(sizeof(*data)); // data for this item
+ data->children = NULL;
+ data->value = i;
+ data->favorite = EINA_FALSE;
+ nitems++;
+
+ Node_Data *pdata; // data for the parent of the group
+
+ printf("creating item: #%d\n", data->value);
+ if (i % 3 == 0)
+ {
+ glg = gli = elm_genlist_item_append(list, _itp, data, NULL,
+ ELM_GENLIST_ITEM_TREE,
+ _item_sel_cb, NULL);
+ elm_genlist_item_expanded_set(glg, EINA_TRUE);
+ pdata = data;
+ data->level = 0;
+ }
+ else
+ {
+ gli = elm_genlist_item_append(list, _itc, data, glg,
+ ELM_GENLIST_ITEM_NONE,
+ _item_sel_cb, NULL);
+ pdata->children = eina_list_append(pdata->children, data);
+ data->level = 1;
+ }
++>>>>>>> remotes/origin/upstream
}
evas_object_smart_callback_add(list, "expand,request", _expand_request_cb, list);
printf("path = %s, group = %s, name = %s\n", path, group, name);
elm_icon_no_scale_set(icon, EINA_TRUE);
++<<<<<<< HEAD
+ elm_icon_scale_set(icon, EINA_FALSE, EINA_TRUE);
++=======
+ elm_icon_resizable_set(icon, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_icon_smooth_set(icon, EINA_FALSE);
elm_icon_fill_outside_set(icon, EINA_TRUE);
}
elm_image_no_scale_set(image, EINA_TRUE);
++<<<<<<< HEAD
+ elm_image_scale_set(image, EINA_FALSE, EINA_TRUE);
++=======
+ elm_image_resizable_set(image, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_image_smooth_set(image, EINA_FALSE);
elm_image_orient_set(image, ELM_IMAGE_FLIP_HORIZONTAL);
elm_image_aspect_fixed_set(image, EINA_TRUE);
data == elm_index_item_data_get(event_info) ? "OK" :
"FAIL, something went wrong");
++<<<<<<< HEAD
+ elm_list_item_del(data);
++=======
+ elm_object_item_del(data);
++>>>>>>> remotes/origin/upstream
}
/* delete an index item */
{
Evas_Object *win, *bg, *hbox, *vbox, *bt, *sep;
Elm_Object_Item *lit;
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
unsigned int i;
char curr = 0;
/* indexing by first letters */
snprintf(buf, sizeof(buf), "%c", curr);
++<<<<<<< HEAD
+
+ elm_index_item_append(d.index, buf, lit);
++=======
+ elm_index_item_append(d.index, buf, NULL, lit);
++>>>>>>> remotes/origin/upstream
index_it = elm_index_item_find(d.index, lit);
elm_object_item_del_cb_set(index_it, _index_item_del);
Evas_Object *obj __UNUSED__,
void *event_info)
{
++<<<<<<< HEAD
+ elm_gengrid_item_bring_in(event_info);
++=======
+ elm_gengrid_item_bring_in(event_info, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
static void
char **argv __UNUSED__)
{
Evas_Object *win, *bg, *grid, *index;
++<<<<<<< HEAD
+ Elm_Gengrid_Item *it;
++=======
+ Elm_Object_Item *gg_it;
++>>>>>>> remotes/origin/upstream
unsigned int i;
Elm_Gengrid_Item_Class gic;
{
char buf[32];
++<<<<<<< HEAD
+ it = elm_gengrid_item_append(grid, &gic, (void *)i, NULL, NULL);
+
+ /* indexing by first letters */
+ snprintf(buf, sizeof(buf), "%c", items[i][0]);
+ elm_index_item_sorted_insert(index, buf, it, _index_icmp, NULL);
++=======
+ gg_it = elm_gengrid_item_append(grid, &gic, (void *)i, NULL, NULL);
+
+ /* indexing by first letters */
+ snprintf(buf, sizeof(buf), "%c", items[i][0]);
+ elm_index_item_sorted_insert(index, buf, NULL, gg_it, _index_icmp, NULL);
++>>>>>>> remotes/origin/upstream
}
evas_object_smart_callback_add(index, "delay,changed", _index_changed, NULL);
evas_object_smart_callback_add(o, "clicked", _btn_click_cb, NULL);
++<<<<<<< HEAD
+ if (!strncmp(elm_engine_current_get(), "shot", 4))
++=======
+ if (!strncmp(elm_config_engine_get(), "shot", 4))
++>>>>>>> remotes/origin/upstream
ecore_timer_add(0.1, _screenshot_hack_cb, o);
elm_run();
/* enable multiple selection and always select */
elm_list_multi_select_set(li, EINA_TRUE);
++<<<<<<< HEAD
+ elm_list_always_select_mode_set(li, EINA_TRUE);
++=======
+ elm_list_select_mode_set(li, ELM_OBJECT_SELECT_MODE_ALWAYS);
++>>>>>>> remotes/origin/upstream
/* set bounce and scroller policy */
elm_list_bounce_set(li, EINA_TRUE, EINA_TRUE);
snprintf(label, sizeof(label), "Item %i", counter++);
ic = elm_icon_add(li);
elm_icon_standard_set(ic, "home");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
list_it = elm_list_item_append(li, label, ic, NULL, NULL, NULL);
if (!list_it)
static void
_bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ int zoom;
+
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(map);
+ elm_map_zoom_set(map, zoom + 1);
++=======
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom + 1);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ int zoom;
+
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(map);
+ elm_map_zoom_set(map, zoom - 1);
++=======
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom - 1);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FIT);
++=======
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FILL);
++=======
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
++<<<<<<< HEAD
+ elm_map_geo_region_show(map, -43.2, -22.9);
+ elm_map_zoom_set(map, 12);
+
++=======
+ elm_map_zoom_set(map, 12);
+ elm_map_region_show(map, -43.2, -22.9);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 512, 512);
evas_object_show(win);
/**
++<<<<<<< HEAD
+ * Simple Elementary's <b>map widget</b> example, illustrating markers
++=======
+ * Simple Elementary's <b>map widget</b> example, illustrating overlays
++>>>>>>> remotes/origin/upstream
* usage.
*
* See stdout/stderr for output. Compile with:
# define __UNUSED__
#endif
++<<<<<<< HEAD
+typedef struct _Marker_Data
+{
+ const char *name;
+ const char *file;
+} Marker_Data;
+
+Marker_Data data_argentina = {"Argentina",
+ PACKAGE_DATA_DIR"/images/rock_01.jpg"};
+Marker_Data data_chile = {"Chile",
+ PACKAGE_DATA_DIR"/images/rock_02.jpg"};
+Marker_Data data_sampa = {"São Paulo",
+ PACKAGE_DATA_DIR"/images/sky_01.jpg"};
+Marker_Data data_rio = {"Rio de Janeiro",
+ PACKAGE_DATA_DIR"/images/sky_02.jpg"};
+Marker_Data data_brasilia = {"Brasília",
+ PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+
+static Evas_Object *
+_marker_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data)
+{
+ Evas_Object *bx, *im, *lbl;
+ Marker_Data *md = data;
+
+ bx = elm_box_add(obj);
+ evas_object_show(bx);
+
+ im = elm_image_add(obj);
+ elm_image_file_set(im, md->file, NULL);
+ evas_object_size_hint_min_set(im, 64, 64);
+ evas_object_show(im);
+ elm_box_pack_end(bx, im);
+
+ lbl = elm_label_add(obj);
+ elm_object_text_set(lbl, md->name);
+ evas_object_show(lbl);
+ elm_box_pack_end(bx, lbl);
+
+ return bx;
+}
+
+static Evas_Object *
+_marker_city_content_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data __UNUSED__)
+{
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_07.png", NULL);
+ evas_object_show(icon);
+
+ return icon;
+}
+
+static Evas_Object *
+_group_city_content_get(Evas_Object *obj, void *data __UNUSED__)
+{
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_05.png", NULL);
+ evas_object_show(icon);
+ return icon;
+}
+
+static Evas_Object *
+_marker_country_content_get(Evas_Object *obj, Elm_Map_Marker *marker __UNUSED__, void *data __UNUSED__)
+{
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_06.png", NULL);
+ evas_object_show(icon);
+ return icon;
+}
+
+static Evas_Object *
+_group_country_content_get(Evas_Object *obj, void *data __UNUSED__)
+{
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, PACKAGE_DATA_DIR"/images/icon_04.png", NULL);
+ evas_object_show(icon);
+ return icon;
+}
+
+static void
+_map_downloaded(void *data __UNUSED__, Evas_Object *obj, void *ev __UNUSED__)
+{
+ elm_map_zoom_set(obj, 3);
+ evas_object_smart_callback_del(obj, "downloaded", _map_downloaded);
++=======
+ typedef struct _Overlay_Data
+ {
+ const char *name;
+ const char *file;
+ } Overlay_Data;
+
+ Overlay_Data data_argentina = {"Argentina",
+ PACKAGE_DATA_DIR"/images/rock_01.jpg"};
+ Overlay_Data data_chile = {"Chile",
+ PACKAGE_DATA_DIR"/images/rock_02.jpg"};
+ Overlay_Data data_sampa = {"São Paulo",
+ PACKAGE_DATA_DIR"/images/sky_01.jpg"};
+ Overlay_Data data_rio = {"Rio de Janeiro",
+ PACKAGE_DATA_DIR"/images/sky_02.jpg"};
+ Overlay_Data data_brasilia = {"Brasília",
+ PACKAGE_DATA_DIR"/images/sky_03.jpg"};
+
+ static Elm_Map_Overlay *bubble;
+
+ static Evas_Object *
+ _icon_get(Evas_Object *obj, const char *file)
+ {
+ Evas_Object *icon = elm_icon_add(obj);
+ elm_icon_file_set(icon, file, NULL);
+ evas_object_show(icon);
+ return icon;
+ }
+
+ static Evas_Object *
+ _city_icon_get(Evas_Object *obj)
+ {
+ return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_07.png");
+ }
+
+ static Evas_Object *
+ _clas_city_icon_get(Evas_Object *obj)
+ {
+ return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_05.png");
+ }
+
+ static Evas_Object *
+ _country_icon_get(Evas_Object *obj)
+ {
+ return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_06.png");
+ }
+
+ static Evas_Object *
+ _clas_country_icon_get(Evas_Object *obj)
+ {
+ return _icon_get(obj, PACKAGE_DATA_DIR"/images/icon_04.png");
+ }
+
+ static Evas_Object *
+ _box_get(Evas_Object *obj, Overlay_Data *data)
+ {
+ Evas_Object *bx, *img, *label;
+ bx = elm_box_add(obj);
+ evas_object_show(bx);
+
+ img = evas_object_image_add(evas_object_evas_get(obj));
+ evas_object_image_file_set(img, data->file, NULL);
+ evas_object_image_filled_set(img, EINA_TRUE);
+ evas_object_size_hint_min_set(img, 64, 64);
+ evas_object_show(img);
+ elm_box_pack_end(bx, img);
+
+ label = elm_label_add(obj);
+ elm_object_text_set(label, data->name);
+ evas_object_show(label);
+ elm_box_pack_end(bx, label);
+ return bx;
+ }
+
+ static void
+ _overlay_cb(void *data __UNUSED__, Evas_Object *map, void *ev)
+ {
+ printf("Overlay clicked\n");
+ Elm_Map_Overlay *overlay = ev;
+ Evas_Object *bx;
+
+ // prevent duplication
+ if (!bubble) bubble = elm_map_overlay_bubble_add(map);
+
+ elm_map_overlay_bubble_follow(bubble, overlay);
+ elm_map_overlay_bubble_content_clear(bubble);
+ bx = _box_get(map, elm_map_overlay_data_get(overlay));
+ elm_map_overlay_bubble_content_append(bubble, bx);
++>>>>>>> remotes/origin/upstream
}
static void
elm_main(int argc __UNUSED__, char **argv __UNUSED__)
{
Evas_Object *win, *bg, *map, *box, *bt;
++<<<<<<< HEAD
+ static Elm_Map_Marker_Class *mc_city, *mc_country;
+ static Elm_Map_Group_Class *gc_city, *gc_country;
+ Eina_List *markers = NULL;
+ Elm_Map_Marker *m;
+
+ win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Map Markers Example");
++=======
+ Eina_List *ovls = NULL;
+ Elm_Map_Overlay *ovl, *city_clas, *country_clas;
+
+ win = elm_win_add(NULL, "map", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Map Overlay Example");
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(win, "delete,request", _on_done, NULL);
bg = elm_bg_add(win);
evas_object_show(bt);
evas_object_smart_callback_add(bt, "clicked", _bt_zoom_fill, map);
++<<<<<<< HEAD
+ mc_city = elm_map_marker_class_new(map);
+ elm_map_marker_class_get_cb_set(mc_city, _marker_get);
+ elm_map_marker_class_icon_cb_set(mc_city, _marker_city_content_get);
+ elm_map_marker_class_style_set(mc_city, "radio");
+
+ gc_city = elm_map_group_class_new(map);
+ elm_map_group_class_style_set(gc_city, "radio2");
+ elm_map_group_class_icon_cb_set(gc_city, _group_city_content_get);
+ elm_map_group_class_zoom_displayed_set(gc_city, 3);
+
+ mc_country = elm_map_marker_class_new(map);
+ elm_map_marker_class_get_cb_set(mc_country, _marker_get);
+ elm_map_marker_class_icon_cb_set(mc_country, _marker_country_content_get);
+ elm_map_marker_class_style_set(mc_country, "empty");
+
+ gc_country = elm_map_group_class_new(map);
+ elm_map_group_class_style_set(gc_country, "empty");
+ elm_map_group_class_icon_cb_set(gc_country, _group_country_content_get);
+ elm_map_group_class_zoom_displayed_set(gc_country, 1);
+
+ m = elm_map_marker_add(map, -43.2, -22.9, mc_city, gc_city, &data_rio);
+ markers = eina_list_append(markers, m);
+ m = elm_map_marker_add(map, -46.63, -23.55, mc_city, gc_city, &data_sampa);
+ markers = eina_list_append(markers, m);
+ m = elm_map_marker_add(map, -47.88, -15.78, mc_city, gc_city,
+ &data_brasilia);
+ markers = eina_list_append(markers, m);
+
+ m = elm_map_marker_add(map, -65.23, -35.1, mc_country, gc_country,
+ &data_argentina);
+ markers = eina_list_append(markers, m);
+ m = elm_map_marker_add(map, -71.3, -31.75, mc_country, gc_country,
+ &data_chile);
+ markers = eina_list_append(markers, m);
+
+ elm_map_markers_list_show(markers);
+ evas_object_smart_callback_add(map, "downloaded", _map_downloaded, NULL);
++=======
+ evas_object_smart_callback_add(map, "overlay,clicked", _overlay_cb, NULL);
+
+ city_clas = elm_map_overlay_class_add(map);
+ elm_map_overlay_displayed_zoom_min_set(city_clas, 3);
+ elm_map_overlay_icon_set(city_clas, _clas_city_icon_get(map));
+
+ country_clas = elm_map_overlay_class_add(map);
+ elm_map_overlay_displayed_zoom_min_set(country_clas, 1);
+ elm_map_overlay_icon_set(country_clas, _clas_country_icon_get(map));
+
+ ovl = elm_map_overlay_add(map, -43.2, -22.9);
+ elm_map_overlay_icon_set(ovl, _city_icon_get(map));
+ elm_map_overlay_data_set(ovl, &data_rio);
+ elm_map_overlay_class_append(city_clas, ovl);
+ ovls = eina_list_append(ovls, ovl);
+
+ ovl = elm_map_overlay_add(map, -46.63, -23.55);
+ elm_map_overlay_icon_set(ovl, _city_icon_get(map));
+ elm_map_overlay_data_set(ovl, &data_sampa);
+ elm_map_overlay_class_append(city_clas, ovl);
+ ovls = eina_list_append(ovls, ovl);
+
+ ovl = elm_map_overlay_add(map, -47.88, -15.78);
+ elm_map_overlay_icon_set(ovl, _city_icon_get(map));
+ elm_map_overlay_data_set(ovl, &data_brasilia);
+ elm_map_overlay_class_append(city_clas, ovl);
+ ovls = eina_list_append(ovls, ovl);
+
+ ovl = elm_map_overlay_add(map, -65.23, -35.1);
+ elm_map_overlay_icon_set(ovl, _country_icon_get(map));
+ elm_map_overlay_data_set(ovl, &data_argentina);
+ elm_map_overlay_class_append(country_clas, ovl);
+ ovls = eina_list_append(ovls, ovl);
+
+ ovl = elm_map_overlay_add(map, -71.3, -31.75);
+ elm_map_overlay_icon_set(ovl, _country_icon_get(map));
+ elm_map_overlay_data_set(ovl, &data_chile);
+ elm_map_overlay_class_append(country_clas, ovl);
+ ovls = eina_list_append(ovls, ovl);
+
+ elm_map_overlays_show(ovls);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 512, 512);
evas_object_show(win);
Elm_Map_Route *route;
double start_lon, start_lat, dest_lon, dest_lat;
Elm_Map_Name *name;
++<<<<<<< HEAD
++=======
+ Elm_Map_Overlay *route_ovl;
++>>>>>>> remotes/origin/upstream
} Example_Data;
static Example_Data example_data;
static void
++<<<<<<< HEAD
++=======
+ _route_loaded(void *data, Evas_Object *obj, void *ev __UNUSED__)
+ {
+ Example_Data *example_data = data;
+
+ example_data->route_ovl = elm_map_overlay_route_add(obj, example_data->route);
+ elm_map_overlay_color_set(example_data->route_ovl, 0, 255, 0, 255);
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_name_loaded(void *data, Evas_Object *obj, void *ev __UNUSED__)
{
Example_Data *example_data = data;
example_data->route = elm_map_route_add(map, ELM_MAP_ROUTE_TYPE_FOOT,
ELM_MAP_ROUTE_METHOD_SHORTEST,
example_data->start_lon, example_data->start_lat,
++<<<<<<< HEAD
+ example_data->dest_lon, example_data->dest_lat);
+ elm_map_route_color_set(example_data->route, 0, 255, 0, 255);
++=======
+ example_data->dest_lon, example_data->dest_lat,
+ NULL, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
map = example_data->map;
address = (char *)elm_object_text_get(example_data->entry);
++<<<<<<< HEAD
+ example_data->name = elm_map_utils_convert_name_into_coord(map, address);
+
+ evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
++=======
+ example_data->name = elm_map_name_add(map, address, 0, 0, NULL, NULL);
+
+ evas_object_smart_callback_add(map, "name,loaded", _name_loaded, data);
+ evas_object_smart_callback_add(map, "route,loaded", _route_loaded, data);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_in(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ int zoom;
+
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(map);
+ elm_map_zoom_set(map, zoom + 1);
++=======
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom + 1);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_out(void *data, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ int zoom;
+
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(map);
+ elm_map_zoom_set(map, zoom - 1);
++=======
+ int zoom;
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_MANUAL);
+ zoom = elm_map_zoom_get(data);
+ elm_map_zoom_set(data, zoom - 1);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_fit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FIT);
++=======
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FIT);
++>>>>>>> remotes/origin/upstream
}
static void
_bt_zoom_fill(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *map = data;
+ elm_map_zoom_mode_set(map, ELM_MAP_ZOOM_MODE_AUTO_FILL);
++=======
+ elm_map_zoom_mode_set(data, ELM_MAP_ZOOM_MODE_AUTO_FILL);
++>>>>>>> remotes/origin/upstream
}
static void
example_data.start_lon = -43.175;
example_data.start_lat = -22.97;
++<<<<<<< HEAD
+ elm_map_geo_region_show(map, example_data.start_lon, example_data.start_lat);
+ elm_map_zoom_set(map, 12);
++=======
+ elm_map_zoom_set(map, 12);
+ elm_map_region_show(map, example_data.start_lon, example_data.start_lat);
++>>>>>>> remotes/origin/upstream
evas_object_resize(win, 512, 512);
evas_object_show(win);
{
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "home");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
evas_object_show(ic);
elm_table_pack(tb, ic, i, j, 1, 1);
}
elm_main(int argc, char **argv)
{
Evas_Object *win, *bg, *menu, *button, *rect;
++<<<<<<< HEAD
+ Elm_Object_Item *menu_it;
++=======
+ Elm_Object_Item *menu_it, *menu_it1;
++>>>>>>> remotes/origin/upstream
win = elm_win_add(NULL, "menu", ELM_WIN_BASIC);
elm_win_title_set(win, "Menu");
elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1", NULL, NULL);
button = elm_button_add(win);
elm_object_text_set(button, "button - delete items");
++<<<<<<< HEAD
+ elm_menu_item_add_object(menu, menu_it, button, NULL, NULL);
++=======
+ menu_it1 = elm_menu_item_add(menu, menu_it, NULL, NULL, NULL, NULL);
+ elm_object_item_content_set(menu_it1, button);
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(button, "clicked", _del_it, menu);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_add(menu, menu_it, NULL, "third item", NULL, NULL);
_fit(void *data, Evas_Object *obj, void *event_info)
{
int x, y, w, h;
++<<<<<<< HEAD
+ elm_photocam_region_get(data, &x, &y, &w, &h);
++=======
+ elm_photocam_image_region_get(data, &x, &y, &w, &h);
++>>>>>>> remotes/origin/upstream
printf("region: {%d, %d, %d, %d}\n", x, y, w, h);
elm_photocam_zoom_mode_set(data, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
}
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "home");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_part_content_set(sl, "icon", ic);
ic = elm_icon_add(win);
elm_icon_standard_set(ic, "folder");
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_object_part_content_set(sl, "end", ic);
evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5);
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_slideshow_show(data);
++=======
+ elm_slideshow_item_show(data);
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
++<<<<<<< HEAD
+ elm_slideshow_show(data);
++=======
+ elm_slideshow_item_show(data);
++>>>>>>> remotes/origin/upstream
}
static void
static void
btn_extension_click_cb(void *data __UNUSED__, Evas_Object *btn, void *ev __UNUSED__)
{
++<<<<<<< HEAD
+ const char *lbl = elm_button_label_get(btn);
++=======
+ const char *lbl = elm_object_text_get(btn);
++>>>>>>> remotes/origin/upstream
if (!strncmp(lbl, "Load", 4))
{
{
Evas_Object *win;
Evas_Object *main_box;
++<<<<<<< HEAD
+ Evas_Object *pager;
++=======
+ Evas_Object *naviframe;
++>>>>>>> remotes/origin/upstream
Evas_Object *url;
Evas_Object *default_web;
Evas_Object *tabs;
nav_button_update(td->app);
elm_entry_icon_visible_set(td->app->url, EINA_TRUE);
++<<<<<<< HEAD
+ elm_pager_content_promote(td->app->pager, td->web);
++=======
+ elm_naviframe_item_simple_promote(td->app->naviframe, td->web);
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_size_hint_weight_set(td->web, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(td->web, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ elm_pager_content_push(ad->pager, td->web);
++=======
+ elm_naviframe_item_simple_push(ad->naviframe, td->web);
++>>>>>>> remotes/origin/upstream
td->app = ad;
td->tab = elm_toolbar_item_append(td->app->tabs, NULL, "New tab",
int
elm_main(int argc __UNUSED__, char *argv[] __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Object *win, *bg, *box, *box2, *btn, *ic, *url, *pager, *tabs, *web;
++=======
+ Evas_Object *win, *bg, *box, *box2, *btn, *ic, *url, *naviframe, *tabs, *web;
++>>>>>>> remotes/origin/upstream
Evas *e;
Evas_Modifier_Mask ctrl_mask;
App_Data *ad;
tabs = elm_toolbar_add(win);
elm_toolbar_align_set(tabs, 0.0);
++<<<<<<< HEAD
+ elm_toolbar_always_select_mode_set(tabs, EINA_TRUE);
++=======
+ elm_toolbar_select_mode_set(tabs, ELM_OBJECT_SELECT_MODE_ALWAYS);
++>>>>>>> remotes/origin/upstream
elm_toolbar_homogeneous_set(tabs, EINA_FALSE);
elm_toolbar_shrink_mode_set(tabs, ELM_TOOLBAR_SHRINK_MENU);
evas_object_size_hint_weight_set(tabs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_icon_standard_set(ic, "close");
elm_object_part_content_set(btn, "icon", ic);
++<<<<<<< HEAD
+ pager = elm_pager_add(win);
+ evas_object_size_hint_weight_set(pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(pager, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, pager);
+ evas_object_show(pager);
+
+ elm_toolbar_menu_parent_set(tabs, pager);
+
+ web = elm_web_add(win);
+ elm_web_window_create_hook_set(web, _web_create_window_cb, ad);
+ elm_web_history_enable_set(web, EINA_FALSE);
+ evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_pager_content_push(pager, web);
++=======
+ naviframe = elm_naviframe_add(win);
+ evas_object_size_hint_weight_set(naviframe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(naviframe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(box, naviframe);
+ evas_object_show(naviframe);
+
+ elm_toolbar_menu_parent_set(tabs, naviframe);
+
+ web = elm_web_add(win);
+ elm_web_window_create_hook_set(web, _web_create_window_cb, ad);
+ elm_web_history_enabled_set(web, EINA_FALSE);
+ evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_naviframe_item_simple_push(naviframe, web);
++>>>>>>> remotes/origin/upstream
default_content_set(web);
ad->win = win;
ad->main_box = box;
++<<<<<<< HEAD
+ ad->pager = pager;
++=======
+ ad->naviframe = naviframe;
++>>>>>>> remotes/origin/upstream
ad->url = url;
ad->default_web = web;
ad->tabs = tabs;
o = elm_icon_add(win2);
elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/logo.png", NULL);
++<<<<<<< HEAD
+ elm_icon_scale_set(o, 0, 0);
++=======
+ elm_icon_resizable_set(o, 0, 0);
++>>>>>>> remotes/origin/upstream
elm_icon_no_scale_set(o, EINA_TRUE);
elm_win_resize_object_add(win2, o);
evas_object_show(o);
/* This is the primary Elementary header file that includes all other useful
* headers.
*
++<<<<<<< HEAD
+ * Elementary is distrubted under the LGPLv2 license. Please see the COPYING
++=======
+ * Elementary is distributed under the LGPLv2 license. Please see the COPYING
++>>>>>>> remotes/origin/upstream
* file that was distributed with this source.
*/
#ifndef ELEMENTARY_H
#endif
/* docs */
++<<<<<<< HEAD
+#include <elm_intro.h>
+#include <elm_getting_started.h>
+#include <elm_authors.h>
++=======
+ #include <elm_intro.h> // OK
+ #include <elm_getting_started.h> // OK
+ #include <elm_authors.h> // OK
++>>>>>>> remotes/origin/upstream
#define ELM_VERSION_MAJOR @VMAJ@
#define ELM_VERSION_MINOR @VMIN@
EAPI extern Elm_Version *elm_version;
/* include these first for general used definitions */
++<<<<<<< HEAD
+#include <elm_general.h>
+#include <elm_tooltip.h>
+#include <elm_object_item.h>
+
+/* special widgets - types used elsewhere */
+#include <elm_icon.h>
+#include <elm_scroller.h>
+#include <elm_entry.h>
+#include <elm_list.h>
+
+/* include deprecated before headers - things may still rely on definitions */
+#include <elm_deprecated_before.h>
+
+/* other includes */
+#include <elc_anchorblock.h> // <-- up to here (1.0 review)
+#include <elc_anchorview.h>
+#include <elc_ctxpopup.h>
+#include <elc_fileselector_button.h>
+#include <elc_fileselector_entry.h>
+#include <elc_fileselector.h>
+#include <elc_hoversel.h>
+#include <elc_multibuttonentry.h>
+#include <elc_naviframe.h>
+#include <elm_actionslider.h>
+#include <elm_app.h>
+#include <elm_bg.h>
+#include <elm_box.h>
+#include <elm_bubble.h>
+#include <elm_button.h>
+#include <elm_cache.h>
+#include <elm_calendar.h>
+#include <elm_check.h>
+#include <elm_clock.h>
+#include <elm_cnp.h>
+#include <elm_colorpalette.h>
+#include <elm_colorselector.h>
+#include <elm_config.h>
+#include <elm_conform.h>
+#include <elm_controlbar.h>
+#include <elm_cursor.h>
+#include <elm_datefield.h>
+#include <elm_dayselector.h>
+#include <elm_debug.h>
+#include <elm_diskselector.h>
+#include <elm_engine.h>
+#include <elm_factory.h>
+#include <elm_finger.h>
+#include <elm_flip.h>
+#include <elm_flipselector.h>
+#include <elm_focus.h>
+#include <elm_fonts.h>
+#include <elm_frame.h>
+#include <elm_gengrid.h>
+#include <elm_genlist.h>
+#include <elm_gesture_layer.h>
+#include <elm_glview.h>
+#include <elm_grid.h>
+#include <elm_hover.h>
+#include <elm_image.h>
+#include <elm_imageslider.h>
+#include <elm_index.h>
+#include <elm_label.h>
+#include <elm_layout.h>
+#include <elm_macros.h>
+#include <elm_mapbuf.h>
+#include <elm_map.h>
+#include <elm_menu.h>
+#include <elm_mirroring.h>
+#include <elm_need.h>
+#include <elm_nocontents.h>
+#include <elm_notify.h>
+#include <elm_object.h>
+#include <elm_pagecontrol.h>
+#include <elm_pager.h>
+#include <elm_panel.h>
+#include <elm_panes.h>
+#include <elm_password.h>
+#include <elm_photocam.h>
+#include <elm_photo.h>
+#include <elm_plug.h>
+#include <elm_popup.h>
+#include <elm_progressbar.h>
+#include <elm_radio.h>
+#include <elm_route.h>
+#include <elm_scale.h>
+#include <elm_scroll.h>
+#include <elm_segment_control.h>
+#include <elm_separator.h>
+#include <elm_slider.h>
+#include <elm_slideshow.h>
+#include <elm_spinner.h>
+#include <elm_stackedicon.h>
+#include <elm_store.h>
+#include <elm_table.h>
+#include <elm_theme.h>
+#include <elm_thumb.h>
+#include <elm_tickernoti.h>
+#include <elm_toolbar.h>
+#include <elm_transit.h>
+#include <elm_video.h>
+#include <elm_web.h>
+#include <elm_win.h>
+
+/* include deprecated calls last of all */
+#include <elm_deprecated.h>
++=======
+ #include <elm_general.h> // OK
+ #include <elm_tooltip.h> // OK
+ #include <elm_object_item.h> // OK
+
+ /* special widgets - types used elsewhere */
+ #include <elm_icon.h> // OK
+ #include <elm_scroller.h> // OK
+ #include <elm_entry.h> // OK
+ #include <elm_list.h> // OK
+
+ /* other includes */
+ // Tom Hacohen
+ #include <elc_ctxpopup.h> // OK
+ #include <elc_dayselector.h> // OK
+ #include <elc_fileselector_button.h> // OK
+ #include <elc_fileselector_entry.h> // OK
+ #include <elc_fileselector.h> // OK
+ #include <elc_hoversel.h> // OK
+ #include <elc_multibuttonentry.h> // OK
+ #include <elc_naviframe.h> // OK
+ #include <elc_popup.h> // OK
+ #include <elm_actionslider.h> // OK
+ #include <elm_app.h> // OK
+ #include <elm_bg.h> // OK
+ #include <elm_box.h> // OK
+
+ // Daniel Juyung Seo
+ #include <elm_bubble.h> // OK
+ #include <elm_button.h> // OK
+ #include <elm_cache.h> // OK
+ #include <elm_calendar.h> // OK
+ #include <elm_check.h> // OK
+ #include <elm_clock.h> // OK
+ #include <elm_cnp.h> // OK
+ #include <elm_colorselector.h> // OK
+ #include <elm_config.h> // OK
+ #include <elm_conform.h> // OK
+ #include <elm_cursor.h> // OK
+ #include <elm_datetime.h> // OK
+ #include <elm_debug.h> // OK
+ #include <elm_diskselector.h> // OK
+
+ // Chuneon Park
+ //#include <elm_factory.h> // OK
+ #include <elm_finger.h> // OK
+ #include <elm_flip.h> // OK
+ #include <elm_flipselector.h> // OK
+ #include <elm_focus.h> // OK
+ #include <elm_font.h> // OK
+ #include <elm_frame.h> // OK
+ #include <elm_gen.h> // OK
+ #include <elm_gengrid.h> // OK
+ #include <elm_genlist.h> // OK
+ #include <elm_gesture_layer.h> // OK
+ #include <elm_glview.h> // OK
+ #include <elm_grid.h> // OK
+
+ // Woohyun Jung
+ #include <elm_hover.h> // OK
+ #include <elm_image.h> // OK
+ #include <elm_index.h> // OK
+ #include <elm_label.h> // OK
+ #include <elm_layout.h> // OK
+ #include <elm_macros.h> // OK
+ #include <elm_mapbuf.h> // OK
+ #include <elm_map.h> // OK
+ #include <elm_menu.h> // OK
+ #include <elm_mirroring.h> // OK
+ #include <elm_need.h> // OK
+ #include <elm_notify.h> // OK
+ #include <elm_object.h> // OK
+
+ // SanjeevBA
+ #include <elm_panel.h> // OK
+ #include <elm_panes.h> // OK
+ #include <elm_photocam.h> // OK
+ #include <elm_photo.h> // OK
+ #include <elm_plug.h> // OK
+ #include <elm_progressbar.h> // OK
+ #include <elm_radio.h> // OK
+ #include <elm_route.h> // OK
+ #include <elm_scale.h> // OK
+ #include <elm_scroll.h> // OK
+ #include <elm_segment_control.h> // OK
+
+ // Carsten Haitzler
+ #include <elm_separator.h> // OK
+ #include <elm_slider.h> // OK
+ #include <elm_slideshow.h> // OK
+ #include <elm_spinner.h> // OK
+ #include <elm_store.h> // OK
+ #include <elm_table.h> // OK
+ #include <elm_theme.h> // OK
+ #include <elm_thumb.h> // OK
+ #include <elm_toolbar.h> // OK
+ #include <elm_transit.h> // OK
+ #include <elm_video.h> // OK
+ #include <elm_web.h>
+ #include <elm_win.h> // OK
+
+ /* include deprecated calls last of all */
+ #include <elm_deprecated.h> // OK
++>>>>>>> remotes/origin/upstream
#ifdef __cplusplus
}
includesunstabledir = $(includedir)/elementary-@VMAJ@
includesub_HEADERS = \
++<<<<<<< HEAD
+elc_anchorblock.h \
+elc_anchorview.h \
+elc_ctxpopup.h \
++=======
+ elc_ctxpopup.h \
+ elc_dayselector.h \
++>>>>>>> remotes/origin/upstream
elc_fileselector_button.h \
elc_fileselector_entry.h \
elc_fileselector.h \
elc_hoversel.h \
elc_multibuttonentry.h \
elc_naviframe.h \
++<<<<<<< HEAD
++=======
+ elc_popup.h \
++>>>>>>> remotes/origin/upstream
elm_actionslider.h \
elm_app.h \
elm_authors.h \
elm_check.h \
elm_clock.h \
elm_cnp.h \
++<<<<<<< HEAD
+elm_colorpalette.h \
+elm_colorselector.h \
+elm_config.h \
+elm_conform.h \
+elm_controlbar.h \
+elm_cursor.h \
+elm_datefield.h \
+elm_dayselector.h \
+elm_debug.h \
+elm_deprecated.h \
+elm_deprecated_before.h \
+elm_diskselector.h \
+elm_engine.h \
+elm_entry.h \
+elm_factory.h \
++=======
+ elm_colorselector.h \
+ elm_config.h \
+ elm_conform.h \
+ elm_cursor.h \
+ elm_datetime.h \
+ elm_debug.h \
+ elm_deprecated.h \
+ elm_diskselector.h \
+ elm_entry.h \
++>>>>>>> remotes/origin/upstream
elm_finger.h \
elm_flip.h \
elm_flipselector.h \
elm_focus.h \
++<<<<<<< HEAD
+elm_fonts.h \
+elm_frame.h \
++=======
+ elm_font.h \
+ elm_frame.h \
+ elm_gen.h \
++>>>>>>> remotes/origin/upstream
elm_general.h \
elm_gengrid.h \
elm_genlist.h \
elm_hover.h \
elm_icon.h \
elm_image.h \
++<<<<<<< HEAD
+elm_imageslider.h \
++=======
++>>>>>>> remotes/origin/upstream
elm_plug.h \
elm_index.h \
elm_intro.h \
elm_menu.h \
elm_mirroring.h \
elm_need.h \
++<<<<<<< HEAD
+elm_nocontents.h \
elm_notify.h \
elm_object.h \
elm_object_item.h \
+elm_pagecontrol.h \
+elm_pager.h \
elm_panel.h \
elm_panes.h \
+elm_password.h \
elm_photocam.h \
elm_photo.h \
+elm_popup.h \
++=======
++elm_notify.h \
++elm_object.h \
++elm_object_item.h \
++elm_panel.h \
++elm_panes.h \
++elm_photocam.h \
++elm_photo.h \
++>>>>>>> remotes/origin/upstream
elm_progressbar.h \
elm_radio.h \
elm_route.h \
elm_slider.h \
elm_slideshow.h \
elm_spinner.h \
++<<<<<<< HEAD
+elm_stackedicon.h \
++=======
++>>>>>>> remotes/origin/upstream
elm_store.h \
elm_table.h \
elm_theme.h \
elm_thumb.h \
++<<<<<<< HEAD
+elm_tickernoti.h \
++=======
++>>>>>>> remotes/origin/upstream
elm_toolbar.h \
elm_tooltip.h \
elm_transit.h \
libelementary_la_SOURCES = \
elm_priv.h \
++<<<<<<< HEAD
+elc_anchorblock.c \
+elc_anchorview.c \
+elc_ctxpopup.c \
++=======
+ elc_ctxpopup.c \
+ elc_dayselector.c \
+ elc_popup.c \
++>>>>>>> remotes/origin/upstream
elc_fileselector_button.c \
elc_fileselector.c \
elc_fileselector_entry.c \
elm_calendar.c \
elm_check.c \
elm_clock.c \
++<<<<<<< HEAD
+elm_cnp_helper.c \
+elm_colorpalette.c \
+elm_colorselector.c \
+elm_config.c \
+elm_conform.c \
+elm_controlbar.c \
+elm_datefield.c \
+elm_dayselector.c \
+elm_diskselector.c \
+elm_editfield.c \
+elm_entry.c \
+elm_factory.c \
++=======
+ elm_cnp.c \
+ elm_colorselector.c \
+ elm_config.c \
+ elm_conform.c \
+ elm_datetime.c \
+ elm_diskselector.c \
+ elm_entry.c \
++>>>>>>> remotes/origin/upstream
elm_flip.c \
elm_flipselector.c \
elm_font.c \
elm_frame.c \
++<<<<<<< HEAD
+elm_gen.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_gengrid.c \
elm_genlist.c \
elm_gen_common.h \
elm_hover.c \
elm_icon.c \
elm_image.c \
++<<<<<<< HEAD
+elm_imageslider.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_plug.c \
elm_index.c \
elm_label.c \
elm_map.c \
elm_menu.c \
elm_module.c \
++<<<<<<< HEAD
+elm_nocontents.c \
+elm_notify.c \
+elm_pagecontrol.c \
++=======
+ elm_notify.c \
++>>>>>>> remotes/origin/upstream
elm_pager.c \
elm_panel.c \
elm_panes.c \
elm_photo.c \
elm_photocam.c \
++<<<<<<< HEAD
+elm_popup.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_progressbar.c \
elm_radio.c \
elm_route.c \
elm_scroller.c \
++<<<<<<< HEAD
+elm_searchbar.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_segment_control.c \
elm_separator.c \
elm_slider.c \
elm_slideshow.c \
elm_spinner.c \
++<<<<<<< HEAD
+elm_stackedicon.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_store.c \
elm_table.c \
elm_theme.c \
elm_thumb.c \
++<<<<<<< HEAD
+elm_tickernoti.c \
++=======
++>>>>>>> remotes/origin/upstream
elm_toggle.c \
elm_toolbar.c \
elm_transit.c \
libelementary_la_LDFLAGS = \
-no-undefined @lt_enable_auto_import@ \
-version-info @version_info@ @release_info@
++<<<<<<< HEAD
++=======
+
+ EXTRA_DIST = \
+ elm_factory.h \
+ elm_factory.c
++>>>>>>> remotes/origin/upstream
static void _adjust_pos_y(Evas_Coord_Point *pos,
Evas_Coord_Point *base_size,
Evas_Coord_Rectangle *hover_area);
++<<<<<<< HEAD
+static void _ctxpopup_changed_size_hints(void *data __UNUSED__,
+ Evas *e __UNUSED__, Evas_Object *obj,
+ void *event_info __UNUSED__);
++=======
++>>>>>>> remotes/origin/upstream
static Elm_Ctxpopup_Direction _calc_base_geometry(Evas_Object *obj,
Evas_Coord_Rectangle *rect);
static void _update_arrow(Evas_Object *obj,
Elm_Ctxpopup_Direction dir,
Evas_Coord_Rectangle rect);
static void _sizing_eval(Evas_Object *obj);
++<<<<<<< HEAD
++=======
+ static void _hide_signal_emit(Evas_Object *obj,
+ Elm_Ctxpopup_Direction dir);
+ static void _show_signal_emit(Evas_Object *obj,
+ Elm_Ctxpopup_Direction dir);
++>>>>>>> remotes/origin/upstream
static void _shift_base_by_arrow(Evas_Object *arrow,
Elm_Ctxpopup_Direction dir,
Evas_Coord_Rectangle *rect);
Evas *e,
Evas_Object *obj,
void *event_info);
++<<<<<<< HEAD
++=======
+ static void _hide_finished(void *data,
+ Evas_Object *obj,
+ const char *emission,
+ const char *source __UNUSED__);
++>>>>>>> remotes/origin/upstream
static void _hide(Evas_Object *obj);
static void _ctxpopup_hide(void *data,
Evas *e,
pos->y = hover_area->y;
}
++<<<<<<< HEAD
+static void
+_ctxpopup_changed_size_hints(void *data __UNUSED__, Evas *e __UNUSED__,
+ Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Widget_Data *wd;
+
+ wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (wd->visible)
+ _sizing_eval(obj);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
static Elm_Ctxpopup_Direction
_calc_base_geometry(Evas_Object *obj, Evas_Coord_Rectangle *rect)
{
edje_object_part_swallow(wd->base,
"elm.swallow.arrow_left",
wd->arrow);
++<<<<<<< HEAD
+
+ // if user does not use dragable part
+ arrow_size.y = (y - (arrow_size.h * 0.5));
+ arrow_size.x = x;
+
++=======
++>>>>>>> remotes/origin/upstream
if (base_size.h > 0)
{
if (y < ((arrow_size.h * 0.5) + base_size.y))
edje_object_part_swallow(wd->base,
"elm.swallow.arrow_right",
wd->arrow);
++<<<<<<< HEAD
+
+ // if user does not use dragable part
+ arrow_size.y = (y - (arrow_size.h * 0.5));
+ arrow_size.x = (x - arrow_size.w);
+
++=======
++>>>>>>> remotes/origin/upstream
if (base_size.h > 0)
{
if (y < ((arrow_size.h * 0.5) + base_size.y))
case ELM_CTXPOPUP_DIRECTION_DOWN:
edje_object_signal_emit(wd->arrow, "elm,state,top", "elm");
edje_object_part_swallow(wd->base, "elm.swallow.arrow_up", wd->arrow);
++<<<<<<< HEAD
+
+ // if user does not use dragable part
+ arrow_size.x = (x - (arrow_size.w * 0.5));
+ arrow_size.y = y;
+
++=======
++>>>>>>> remotes/origin/upstream
if (base_size.w > 0)
{
if (x < ((arrow_size.w * 0.5) + base_size.x))
edje_object_part_swallow(wd->base,
"elm.swallow.arrow_down",
wd->arrow);
++<<<<<<< HEAD
+
+ // if user does not use dragable part
+ arrow_size.x = (x - (arrow_size.w * 0.5));
+ arrow_size.y = (y - arrow_size.h);
+
++=======
++>>>>>>> remotes/origin/upstream
if (base_size.w > 0)
{
if (x < ((arrow_size.w * 0.5) + base_size.x))
default:
break;
}
++<<<<<<< HEAD
+
+ // if user does not use dragable part
+ evas_object_move(wd->arrow, arrow_size.x, arrow_size.y);
+}
+
+//TODO: compress item - different from opensource
+static void
+_compress_item(Evas_Object *obj)
+{
+ Widget_Data *wd;
+ Eina_List *elist;
+ Elm_Ctxpopup_Item *item;
+
+ wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ EINA_LIST_FOREACH(wd->items, elist, item)
+ {
+ edje_object_signal_emit(item->base.view, "elm,state,compress", "elm");
++=======
+ }
+
+ static void
+ _hide_signal_emit(Evas_Object *obj, Elm_Ctxpopup_Direction dir)
+ {
+ Widget_Data *wd;
+
+ wd = elm_widget_data_get(obj);
+ if (!wd->visible) return;
+
+ switch (dir)
+ {
+ case ELM_CTXPOPUP_DIRECTION_UP:
+ edje_object_signal_emit(wd->base, "elm,state,hide,up", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_LEFT:
+ edje_object_signal_emit(wd->base, "elm,state,hide,left", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_RIGHT:
+ edje_object_signal_emit(wd->base, "elm,state,hide,right", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_DOWN:
+ edje_object_signal_emit(wd->base, "elm,state,hide,down", "elm");
+ break;
+ default:
+ break;
+ }
+
+ edje_object_signal_emit(wd->bg, "elm,state,hide", "elm");
+ }
+
+ static void
+ _show_signal_emit(Evas_Object *obj, Elm_Ctxpopup_Direction dir)
+ {
+ Widget_Data *wd;
+
+ wd = elm_widget_data_get(obj);
+ if (wd->visible) return;
+
+ switch (dir)
+ {
+ case ELM_CTXPOPUP_DIRECTION_UP:
+ edje_object_signal_emit(wd->base, "elm,state,show,up", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_LEFT:
+ edje_object_signal_emit(wd->base, "elm,state,show,left", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_RIGHT:
+ edje_object_signal_emit(wd->base, "elm,state,show,right", "elm");
+ break;
+ case ELM_CTXPOPUP_DIRECTION_DOWN:
+ edje_object_signal_emit(wd->base, "elm,state,show,down", "elm");
+ break;
+ default:
+ break;
++>>>>>>> remotes/origin/upstream
}
}
wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (!wd->parent) return;
++=======
++>>>>>>> remotes/origin/upstream
//Box, Scroller
EINA_LIST_FOREACH(wd->items, elist, item)
//Base
wd->dir = _calc_base_geometry(obj, &rect);
++<<<<<<< HEAD
+
+ //TODO: compress item - different from opensource
+ if (!wd->horizontal && !wd->content)
+ _compress_item(obj);
+
++=======
+ _show_signal_emit(obj, wd->dir);
++>>>>>>> remotes/origin/upstream
_update_arrow(obj, wd->dir, rect);
_shift_base_by_arrow(wd->arrow, wd->dir, &rect);
wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(wd->parent, EVAS_CALLBACK_RESIZE,
+ _parent_resize, obj);
evas_object_event_callback_del_full(wd->box, EVAS_CALLBACK_RESIZE,
_content_resize, obj);
+
++=======
++ evas_object_event_callback_del_full(wd->box, EVAS_CALLBACK_RESIZE,
++ _content_resize, obj);
++>>>>>>> remotes/origin/upstream
_parent_cut_off(obj);
}
Widget_Data *wd;
Eina_List *elist;
Elm_Ctxpopup_Item *item;
++<<<<<<< HEAD
+ int idx = 0;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Bool rtl;
wd = elm_widget_data_get(obj);
if (elm_widget_item_disabled_get(item))
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
++<<<<<<< HEAD
+ /*
+ * For separator, if the first item has visible separator,
+ * then it should be aligned with edge of the base part.
+ * In some cases, it gives improper display. Ex) rounded corner
+ * So the first item separator should be invisible.
+ */
+ if ((idx++) == 0)
+ edje_object_signal_emit(VIEW(item), "elm,state,default", "elm");
+ else
+ {
+ if(!wd->horizontal)
+ edje_object_signal_emit(VIEW(item), "elm,state,vertical", "elm");
+ else
+ edje_object_signal_emit(VIEW(item), "elm,state,horizontal", "elm");
+ }
+
edje_object_message_signal_process(VIEW(item));
}
+ if (evas_object_visible_get(wd->bg))
+ edje_object_signal_emit(wd->bg, "elm,state,show", "elm");
+
++=======
++ edje_object_message_signal_process(VIEW(item));
++ }
++
++>>>>>>> remotes/origin/upstream
if (wd->scr)
{
if (!strncmp(elm_object_style_get(obj), "default", strlen("default")))
static void
_item_text_set_hook(Elm_Object_Item *it, const char *part, const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
Elm_Ctxpopup_Item *ctxpopup_it;
if (part && strcmp(part, "default")) return;
++<<<<<<< HEAD
+ ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
if (!wd) return;
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Ctxpopup_Item *ctxpopup_it;
+ if (part && strcmp(part, "default")) return NULL;
+ ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ Elm_Ctxpopup_Item *ctxpopup_it;
+ if (part && strcmp(part, "default")) return NULL;
+ ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
return ctxpopup_it->label;
}
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
Elm_Ctxpopup_Item *ctxpopup_it;
if (part && strcmp(part, "icon")) return;
++<<<<<<< HEAD
+ ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
if (!wd) return;
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Ctxpopup_Item *ctxpopup_it;
+ if (part && strcmp(part, "icon")) return NULL;
+ ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ Elm_Ctxpopup_Item *ctxpopup_it;
+ if (part && strcmp(part, "icon")) return NULL;
+ ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
return ctxpopup_it->icon;
}
static void
_item_disable_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
if (!wd) return;
_item_signal_emit_hook(Elm_Object_Item *it, const char *emission,
const char *source)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(VIEW(ctxpopup_it), emission, source);
}
_bg_clicked_cb(void *data, Evas_Object *obj __UNUSED__,
const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ evas_object_hide(data);
++=======
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ _hide_signal_emit(data, wd->dir);
++>>>>>>> remotes/origin/upstream
}
static void
void *event_info __UNUSED__)
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Eina_List *elist;
+ Elm_Ctxpopup_Item *item;
+ int idx = 0;
++=======
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(obj);
if (!wd) return;
evas_object_show(wd->arrow);
edje_object_signal_emit(wd->bg, "elm,state,show", "elm");
++<<<<<<< HEAD
+
+ EINA_LIST_FOREACH(wd->items, elist, item)
+ {
+ if (idx++ == 0)
+ edje_object_signal_emit(VIEW(item), "elm,state,default", "elm");
+ else
+ {
+ if(!wd->horizontal)
+ edje_object_signal_emit(VIEW(item), "elm,state,vertical", "elm");
+ else
+ edje_object_signal_emit(VIEW(item), "elm,state,horizontal", "elm");
+ }
+ }
++=======
+ edje_object_signal_emit(wd->base, "elm,state,show", "elm");
++>>>>>>> remotes/origin/upstream
_sizing_eval(obj);
}
static void
++<<<<<<< HEAD
+_hide(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+
++=======
+ _hide_finished(void *data, Evas_Object *obj __UNUSED__,
+ const char *emission __UNUSED__, const char *source __UNUSED__)
+ {
+ _hide(data);
+ }
+
+ static void
+ _hide(Evas_Object *obj)
+ {
+ _ctxpopup_hide(NULL, NULL, obj, NULL);
+ evas_object_smart_callback_call(obj, SIG_DISMISSED, NULL);
+ }
+
+ static void
+ _ctxpopup_hide(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+ void *event_info __UNUSED__)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
++>>>>>>> remotes/origin/upstream
if ((!wd) || (!wd->visible)) return;
evas_object_hide(wd->bg);
_scroller_size_reset(wd);
++<<<<<<< HEAD
+ evas_object_smart_callback_call(obj, SIG_DISMISSED, NULL);
++=======
++>>>>>>> remotes/origin/upstream
wd->visible = EINA_FALSE;
}
static void
++<<<<<<< HEAD
+_ctxpopup_hide(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+ void *event_info __UNUSED__)
+{
+ _hide(obj);
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_content_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
void *event_info __UNUSED__)
{
if (elm_widget_item_disabled_get(item)) return;
if (item->func)
++<<<<<<< HEAD
+ item->func((void*) item->base.data, WIDGET(item), data);
++=======
+ item->func((void*)item->base.data, WIDGET(item), data);
++>>>>>>> remotes/origin/upstream
}
static void
_item_icon_set(Elm_Ctxpopup_Item *item, Evas_Object *icon)
{
if (item->icon)
++<<<<<<< HEAD
+ {
+ elm_widget_sub_object_del(VIEW(item), item->icon);
+ evas_object_del(item->icon);
+ }
++=======
+ evas_object_del(item->icon);
++>>>>>>> remotes/origin/upstream
item->icon = icon;
if (!icon) return;
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
++=======
+ Widget_Data *wd;
+ Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(ctxpopup_it));
if (!wd) return EINA_FALSE;
Evas_Object *obj;
Evas *e;
Widget_Data *wd;
++<<<<<<< HEAD
+ Evas_Coord x, y, w, h;
++=======
++>>>>>>> remotes/origin/upstream
ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
ELM_SET_WIDTYPE(widtype, "ctxpopup");
elm_widget_type_set(obj, "ctxpopup");
++<<<<<<< HEAD
+ elm_widget_sub_object_add(parent, obj);
++=======
++>>>>>>> remotes/origin/upstream
elm_widget_data_set(obj, wd);
elm_widget_del_pre_hook_set(obj, _del_pre_hook);
elm_widget_del_hook_set(obj, _del_hook);
wd->bg = edje_object_add(e);
elm_widget_sub_object_add(obj, wd->bg);
_elm_theme_object_set(obj, wd->bg, "ctxpopup", "bg", "default");
++<<<<<<< HEAD
+ evas_object_geometry_get(parent, &x, &y, &w, &h);
+ evas_object_move(wd->bg, x, y);
+ evas_object_resize(wd->bg, w, h);
+ edje_object_signal_callback_add(wd->bg, "elm,action,click", "",
+ _bg_clicked_cb, obj);
+
++=======
+ edje_object_signal_callback_add(wd->bg,
+ "elm,action,click",
+ "",
+ _bg_clicked_cb,
+ obj);
++>>>>>>> remotes/origin/upstream
//Base
wd->base = edje_object_add(e);
elm_widget_sub_object_add(obj, wd->base);
_elm_theme_object_set(obj, wd->base, "ctxpopup", "base", "default");
++<<<<<<< HEAD
++=======
+ edje_object_signal_callback_add(wd->base, "elm,action,hide,finished", "",
+ _hide_finished, obj);
++>>>>>>> remotes/origin/upstream
//Arrow
wd->arrow = edje_object_add(e);
wd->dir_priority[1] = ELM_CTXPOPUP_DIRECTION_LEFT;
wd->dir_priority[2] = ELM_CTXPOPUP_DIRECTION_RIGHT;
wd->dir_priority[3] = ELM_CTXPOPUP_DIRECTION_DOWN;
++<<<<<<< HEAD
+
+ evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _parent_resize,
+ obj);
++=======
++>>>>>>> remotes/origin/upstream
wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _ctxpopup_show,
NULL);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _ctxpopup_move,
NULL);
++<<<<<<< HEAD
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _ctxpopup_changed_size_hints, NULL);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, _restack, obj);
evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, obj);
evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, obj);
return obj;
}
++<<<<<<< HEAD
+EAPI Evas_Object *
+elm_ctxpopup_item_icon_get(const Elm_Object_Item *it)
+{
+ return _item_content_get_hook(it, "icon");
+}
+
+EAPI void
+elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon)
+{
+ _item_content_set_hook(it, "icon", icon);
+}
+
+EAPI const char *
+elm_ctxpopup_item_label_get(const Elm_Object_Item *it)
+{
+ return _item_text_get_hook(it, NULL);
+}
+
+EAPI void
+elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label)
+{
+ _item_text_set_hook(it, NULL, label);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI void
elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd;
++<<<<<<< HEAD
+ Eina_List *elist;
+ Elm_Ctxpopup_Item *item;
+ int idx = 0;
++=======
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(obj);
if (!wd) return;
{
elm_box_horizontal_set(wd->box, EINA_FALSE);
elm_scroller_bounce_set(wd->scr, EINA_FALSE, EINA_TRUE);
++<<<<<<< HEAD
+
+ EINA_LIST_FOREACH(wd->items, elist, item)
+ {
+ if (idx++ == 0)
+ edje_object_signal_emit(VIEW(item), "elm,state,default", "elm");
+ else
+ edje_object_signal_emit(VIEW(item), "elm,state,vertical", "elm");
+ }
++=======
++>>>>>>> remotes/origin/upstream
}
else
{
elm_box_horizontal_set(wd->box, EINA_TRUE);
elm_scroller_bounce_set(wd->scr, EINA_TRUE, EINA_FALSE);
++<<<<<<< HEAD
+
+ EINA_LIST_FOREACH(wd->items, elist, item)
+ {
+ if (idx++ == 0)
+ edje_object_signal_emit(VIEW(item), "elm,state,default", "elm");
+ else
+ edje_object_signal_emit(VIEW(item), "elm,state,horizontal", "elm");
+ }
++=======
++>>>>>>> remotes/origin/upstream
}
wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
_sizing_eval(obj);
}
++<<<<<<< HEAD
+ return (Elm_Object_Item *) item;
+}
+
+EAPI void
+elm_ctxpopup_item_del(Elm_Object_Item *it)
+{
+ elm_object_item_del(it);
+}
+
+EAPI void
+elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
+{
+ elm_object_item_disabled_set(it, disabled);
+}
+
+EAPI Eina_Bool
+elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_disabled_get(it);
+}
+
+EAPI void
+elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ elm_object_content_set(obj, content);
+}
+
+EAPI Evas_Object *
+elm_ctxpopup_content_unset(Evas_Object *obj)
+{
+ return elm_object_content_unset(obj);
++=======
+ return (Elm_Object_Item *)item;
++>>>>>>> remotes/origin/upstream
}
EAPI void
if (!wd) return ELM_CTXPOPUP_DIRECTION_UNKNOWN;
return wd->dir;
}
++<<<<<<< HEAD
++=======
+
+ EAPI void
+ elm_ctxpopup_dismiss(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _hide_signal_emit(obj, wd->dir);
+ }
++>>>>>>> remotes/origin/upstream
* @image html img/widget/ctxpopup/preview-00.png
* @image latex img/widget/ctxpopup/preview-00.eps
*
++<<<<<<< HEAD
+ * @brief Context popup widet.
++=======
+ * @brief Context popup widget.
++>>>>>>> remotes/origin/upstream
*
* A ctxpopup is a widget that, when shown, pops up a list of items.
* It automatically chooses an area inside its parent object's view
* items have a label and/or an icon. It is intended for a small
* number of items (hence the use of list, not genlist).
*
++<<<<<<< HEAD
+ * @note Ctxpopup is a especialization of @ref Hover.
++=======
+ * @note Ctxpopup is a specialization of @ref Hover.
++>>>>>>> remotes/origin/upstream
*
* Signals that you can add callbacks for are:
* "dismissed" - the ctxpopup was dismissed
*
++<<<<<<< HEAD
+ * Default contents parts of the ctxpopup widget that you can use for are:
+ * @li "default" - A content of the ctxpopup
+ *
+ * Default contents parts of the ctxpopup items that you can use for are:
++=======
+ * Default content parts of the ctxpopup widget that you can use for are:
+ * @li "default" - A content of the ctxpopup
+ *
+ * Default content parts of the ctxpopup items that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon in the title area
*
* Default text parts of the ctxpopup items that you can use for are:
* @warning Ctxpopup can't hold both an item list and a content at the same
* time. When an item is added, any previous content will be removed.
*
++<<<<<<< HEAD
+ * @see elm_ctxpopup_content_set()
++=======
+ * @see elm_object_content_set()
++>>>>>>> remotes/origin/upstream
*
* @ingroup Ctxpopup
*/
EAPI Elm_Ctxpopup_Direction elm_ctxpopup_direction_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * @brief Dismiss a ctxpopup object
+ *
+ * @param obj The ctxpopup object
+ * Use this function to simulate clicking outside the ctxpopup to dismiss it.
+ * In this way, the ctxpopup will be hidden and the "clicked" signal will be
+ * emitted.
+ */
+ EAPI void elm_ctxpopup_dismiss(Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
ELM_FILE_LAST
} Elm_Fileselector_Type;
++<<<<<<< HEAD
+static Elm_Genlist_Item_Class list_itc[ELM_FILE_LAST] = {
+ { "default", { NULL, NULL, NULL, NULL } },
+ { "default", { NULL, NULL, NULL, NULL } },
+ { "default", { NULL, NULL, NULL, NULL } }
+};
+static Elm_Gengrid_Item_Class grid_itc[ELM_FILE_LAST] = {
+ { "default", { NULL, NULL, NULL, NULL } },
+ { "default", { NULL, NULL, NULL, NULL } },
+ { "default", { NULL, NULL, NULL, NULL } }
+};
++=======
+ static Elm_Genlist_Item_Class *list_itc[ELM_FILE_LAST];
+ static Elm_Gengrid_Item_Class *grid_itc[ELM_FILE_LAST];
++>>>>>>> remotes/origin/upstream
static const char *widtype = NULL;
_del_hook(Evas_Object *obj)
{
Widget_Data *wd;
++<<<<<<< HEAD
++=======
+ int i;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
++=======
+ for (i = 0; i < ELM_FILE_LAST; ++i)
+ {
+ elm_genlist_item_class_free(list_itc[i]);
+ elm_gengrid_item_class_free(grid_itc[i]);
+ }
+
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_EIO
if (wd->current)
eio_file_cancel(wd->current);
Widget_Data *wd;
void *old_sd;
char *dir;
++<<<<<<< HEAD
++=======
+ //This event_info could be a list or gengrid item
+ Elm_Object_Item *it = event_info;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(data);
if (!wd) return;
sd = malloc(sizeof(*sd));
sd->fs = data;
++<<<<<<< HEAD
+ sd->path = wd->mode == ELM_FILESELECTOR_LIST ?
+ elm_object_item_data_get(event_info) :
+ elm_gengrid_item_data_get(event_info);
++=======
+ sd->path = elm_object_item_data_get(it);
++>>>>>>> remotes/origin/upstream
if (!sd->path)
{
if (info->type == EINA_FILE_DIR)
{
++<<<<<<< HEAD
+ eio_file_associate_direct_add(handler, "type/grid", &grid_itc[ELM_DIRECTORY], NULL);
+ eio_file_associate_direct_add(handler, "type/list", &list_itc[ELM_DIRECTORY], NULL);
++=======
+ eio_file_associate_direct_add(handler, "type/grid", grid_itc[ELM_DIRECTORY], NULL);
+ eio_file_associate_direct_add(handler, "type/list", list_itc[ELM_DIRECTORY], NULL);
++>>>>>>> remotes/origin/upstream
}
else
{
if (evas_object_image_extension_can_load_get(info->path + info->name_start))
{
++<<<<<<< HEAD
+ eio_file_associate_direct_add(handler, "type/grid", &grid_itc[ELM_FILE_IMAGE], NULL);
+ eio_file_associate_direct_add(handler, "type/list", &list_itc[ELM_FILE_IMAGE], NULL);
+ }
+ else
+ {
+ eio_file_associate_direct_add(handler, "type/grid", &grid_itc[ELM_FILE_UNKNOW], NULL);
+ eio_file_associate_direct_add(handler, "type/list", &list_itc[ELM_FILE_UNKNOW], NULL);
++=======
+ eio_file_associate_direct_add(handler, "type/grid", grid_itc[ELM_FILE_IMAGE], NULL);
+ eio_file_associate_direct_add(handler, "type/list", list_itc[ELM_FILE_IMAGE], NULL);
+ }
+ else
+ {
+ eio_file_associate_direct_add(handler, "type/grid", grid_itc[ELM_FILE_UNKNOW], NULL);
+ eio_file_associate_direct_add(handler, "type/list", list_itc[ELM_FILE_UNKNOW], NULL);
++>>>>>>> remotes/origin/upstream
}
}
static int
_file_grid_cmp(const void *a, const void *b)
{
++<<<<<<< HEAD
+ const Elm_Gengrid_Item *ga = a;
+ const Elm_Gengrid_Item *gb = b;
+ const Elm_Gengrid_Item_Class *ca = elm_gengrid_item_item_class_get(ga);
+ const Elm_Gengrid_Item_Class *cb = elm_gengrid_item_item_class_get(gb);
+
+ if (ca == &grid_itc[ELM_DIRECTORY])
+ {
+ if (cb != &grid_itc[ELM_DIRECTORY])
+ return -1;
+ }
+ else if (cb == &grid_itc[ELM_DIRECTORY])
++=======
+ const Elm_Object_Item *ga = a;
+ const Elm_Object_Item *gb = b;
+ const Elm_Gengrid_Item_Class *ca = elm_gengrid_item_item_class_get(ga);
+ const Elm_Gengrid_Item_Class *cb = elm_gengrid_item_item_class_get(gb);
+
+ if (ca == grid_itc[ELM_DIRECTORY])
+ {
+ if (cb != grid_itc[ELM_DIRECTORY])
+ return -1;
+ }
+ else if (cb == grid_itc[ELM_DIRECTORY])
++>>>>>>> remotes/origin/upstream
{
return 1;
}
++<<<<<<< HEAD
+ return strcoll(elm_gengrid_item_data_get(ga), elm_gengrid_item_data_get(gb));
++=======
+ return strcoll(elm_object_item_data_get(ga), elm_object_item_data_get(gb));
++>>>>>>> remotes/origin/upstream
}
static int
const Elm_Genlist_Item_Class *ca = elm_genlist_item_item_class_get(la);
const Elm_Genlist_Item_Class *cb = elm_genlist_item_item_class_get(lb);
++<<<<<<< HEAD
+ if (ca == &list_itc[ELM_DIRECTORY])
+ {
+ if (cb != &list_itc[ELM_DIRECTORY])
+ return -1;
+ }
+ else if (cb == &list_itc[ELM_DIRECTORY])
++=======
+ if (ca == list_itc[ELM_DIRECTORY])
+ {
+ if (cb != list_itc[ELM_DIRECTORY])
+ return -1;
+ }
+ else if (cb == list_itc[ELM_DIRECTORY])
++>>>>>>> remotes/origin/upstream
{
return 1;
}
if (wr->wd->mode == ELM_FILESELECTOR_LIST)
{
++<<<<<<< HEAD
+ Eina_Bool is_dir = (eio_file_associate_find(handler, "type/list") == &list_itc[ELM_DIRECTORY]);
+
+ elm_genlist_item_direct_sorted_insert(wr->wd->files_list, eio_file_associate_find(handler, "type/list"),
+ eina_stringshare_ref(eio_file_associate_find(handler, "filename")),
+ wr->parent, wr->wd->expand && is_dir ? ELM_GENLIST_ITEM_SUBITEMS : ELM_GENLIST_ITEM_NONE,
+ _file_list_cmp, NULL, NULL);
+ }
+ else if (wr->wd->mode == ELM_FILESELECTOR_GRID)
+ elm_gengrid_item_direct_sorted_insert(wr->wd->files_grid, eio_file_associate_find(handler, "type/grid"),
++=======
+ Eina_Bool is_dir = (eio_file_associate_find(handler, "type/list") == list_itc[ELM_DIRECTORY]);
+
+ elm_genlist_item_sorted_insert(wr->wd->files_list, eio_file_associate_find(handler, "type/list"),
+ eina_stringshare_ref(eio_file_associate_find(handler, "filename")),
+ wr->parent, wr->wd->expand && is_dir ? ELM_GENLIST_ITEM_TREE : ELM_GENLIST_ITEM_NONE,
+ _file_list_cmp, NULL, NULL);
+ }
+ else if (wr->wd->mode == ELM_FILESELECTOR_GRID)
+ elm_gengrid_item_sorted_insert(wr->wd->files_grid, eio_file_associate_find(handler, "type/grid"),
++>>>>>>> remotes/origin/upstream
eina_stringshare_ref(eio_file_associate_find(handler, "filename")),
_file_grid_cmp, NULL, NULL);
}
EINA_LIST_FREE(dirs, real)
{
if (wd->mode == ELM_FILESELECTOR_LIST)
++<<<<<<< HEAD
+ elm_genlist_item_append(wd->files_list, &list_itc[ELM_DIRECTORY],
+ real, /* item data */
+ parent,
+ wd->expand ? ELM_GENLIST_ITEM_SUBITEMS :
+ ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ else if (wd->mode == ELM_FILESELECTOR_GRID)
+ elm_gengrid_item_append(wd->files_grid, &grid_itc[ELM_DIRECTORY],
++=======
+ elm_genlist_item_append(wd->files_list, list_itc[ELM_DIRECTORY],
+ real, /* item data */
+ parent,
+ wd->expand ? ELM_GENLIST_ITEM_TREE :
+ ELM_GENLIST_ITEM_NONE,
+ NULL, NULL);
+ else if (wd->mode == ELM_FILESELECTOR_GRID)
+ elm_gengrid_item_append(wd->files_grid, grid_itc[ELM_DIRECTORY],
++>>>>>>> remotes/origin/upstream
real, /* item data */
NULL, NULL);
}
ELM_FILE_IMAGE : ELM_FILE_UNKNOW;
if (wd->mode == ELM_FILESELECTOR_LIST)
++<<<<<<< HEAD
+ elm_genlist_item_append(wd->files_list, &list_itc[type],
++=======
+ elm_genlist_item_append(wd->files_list, list_itc[type],
++>>>>>>> remotes/origin/upstream
real, /* item data */
parent, ELM_GENLIST_ITEM_NONE,
NULL, NULL);
else if (wd->mode == ELM_FILESELECTOR_GRID)
++<<<<<<< HEAD
+ elm_gengrid_item_append(wd->files_grid, &grid_itc[type],
++=======
+ elm_gengrid_item_append(wd->files_grid, grid_itc[type],
++>>>>>>> remotes/origin/upstream
real, /* item data */
NULL, NULL);
}
#else
++<<<<<<< HEAD
++=======
+ if (wd->expand && wd->current) return ;
++>>>>>>> remotes/origin/upstream
if (wd->current)
eio_file_cancel(wd->current);
wr = malloc(sizeof (Widget_Request));
elm_widget_sub_object_add(obj, bt);
wd->home_button = bt;
++<<<<<<< HEAD
+ list_itc[ELM_DIRECTORY].func.content_get = grid_itc[ELM_DIRECTORY].func.content_get = _itc_icon_folder_get;
+ list_itc[ELM_FILE_IMAGE].func.content_get = grid_itc[ELM_FILE_IMAGE].func.content_get = _itc_icon_image_get;
+ list_itc[ELM_FILE_UNKNOW].func.content_get = grid_itc[ELM_FILE_UNKNOW].func.content_get = _itc_icon_file_get;
+
+ for (i = 0; i < ELM_FILE_LAST; ++i)
+ {
+ list_itc[i].func.text_get = grid_itc[i].func.text_get = _itc_text_get;
+ list_itc[i].func.state_get = grid_itc[i].func.state_get = _itc_state_get;
+ list_itc[i].func.del = grid_itc[i].func.del = _itc_del;
+ }
+
++=======
+ for (i = 0; i < ELM_FILE_LAST; ++i)
+ {
+ list_itc[i] = elm_genlist_item_class_new();
+ grid_itc[i] = elm_gengrid_item_class_new();
+
+ list_itc[i]->item_style = "default";
+ list_itc[i]->func.text_get = grid_itc[i]->func.text_get = _itc_text_get;
+ list_itc[i]->func.state_get = grid_itc[i]->func.state_get = _itc_state_get;
+ list_itc[i]->func.del = grid_itc[i]->func.del = _itc_del;
+ }
+
+ list_itc[ELM_DIRECTORY]->func.content_get =
+ grid_itc[ELM_DIRECTORY]->func.content_get = _itc_icon_folder_get;
+ list_itc[ELM_FILE_IMAGE]->func.content_get =
+ grid_itc[ELM_FILE_IMAGE]->func.content_get = _itc_icon_image_get;
+ list_itc[ELM_FILE_UNKNOW]->func.content_get =
+ grid_itc[ELM_FILE_UNKNOW]->func.content_get = _itc_icon_file_get;
+
++>>>>>>> remotes/origin/upstream
li = elm_genlist_add(parent);
elm_widget_mirrored_automatic_set(li, EINA_FALSE);
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
++<<<<<<< HEAD
+ s = elm_finger_size_get() * 2;
++=======
+ // XXX: will fail for dynamic finger size changing
+ s = _elm_config->finger_size * 2;
++>>>>>>> remotes/origin/upstream
elm_gengrid_item_size_set(grid, s, s);
elm_gengrid_align_set(grid, 0.0, 0.0);
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return elm_object_disabled_get(wd->filename_entry);
++=======
+ return !elm_object_disabled_get(wd->filename_entry);
++>>>>>>> remotes/origin/upstream
}
EAPI void
EAPI void
elm_fileselector_path_set(Evas_Object *obj,
++<<<<<<< HEAD
+ const char *path)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ _populate(obj, path, NULL);
++=======
+ const char *_path)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ char *path;
+ path = ecore_file_realpath(_path);
+ _populate(obj, path, NULL);
+ free(path);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
if (wd->mode == ELM_FILESELECTOR_LIST)
{
++<<<<<<< HEAD
+ Elm_Object_Item *it;
+ it = elm_genlist_selected_item_get(wd->files_list);
+ if (it) return elm_genlist_item_data_get(it);
+ }
+ else
+ {
+ Elm_Object_Item *it;
+ it = elm_gengrid_selected_item_get(wd->files_grid);
+ if (it) return elm_object_item_data_get(it);
++=======
+ Elm_Object_Item *gl_it = elm_genlist_selected_item_get(wd->files_list);
+ if (gl_it) return elm_object_item_data_get(gl_it);
+ }
+ else
+ {
+ Elm_Object_Item *gg_it = elm_gengrid_selected_item_get(wd->files_grid);
+ if (gg_it) return elm_object_item_data_get(gg_it);
++>>>>>>> remotes/origin/upstream
}
return wd->path;
EAPI Eina_Bool
elm_fileselector_selected_set(Evas_Object *obj,
++<<<<<<< HEAD
+ const char *path)
++=======
+ const char *_path)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
++=======
+ Eina_Bool ret = EINA_TRUE;
+ char *path;
+ path = ecore_file_realpath(_path);
+
++>>>>>>> remotes/origin/upstream
if (ecore_file_is_dir(path))
_populate(obj, path, NULL);
else
{
if (!ecore_file_exists(path))
++<<<<<<< HEAD
+ return EINA_FALSE;
++=======
+ {
+ ret = EINA_FALSE;
+ goto clean_up;
+ }
++>>>>>>> remotes/origin/upstream
_populate(obj, ecore_file_dir_get(path), NULL);
if (wd->filename_entry)
}
}
++<<<<<<< HEAD
+ return EINA_TRUE;
++=======
+ clean_up:
+ free(path);
+ return ret;
++>>>>>>> remotes/origin/upstream
}
return obj;
}
++<<<<<<< HEAD
+EAPI void
+elm_fileselector_button_label_set(Evas_Object *obj,
+ const char *label)
+{
+ _elm_fileselector_button_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_fileselector_button_label_get(const Evas_Object *obj)
+{
+ return _elm_fileselector_button_label_get(obj, NULL);
+}
++=======
++>>>>>>> remotes/origin/upstream
EAPI void
elm_fileselector_button_window_title_set(Evas_Object *obj,
if (!wd) return EINA_FALSE;
return wd->inwin_mode;
}
++<<<<<<< HEAD
+
+EAPI void
+elm_fileselector_button_icon_set(Evas_Object *obj,
+ Evas_Object *icon)
+{
+ _content_set_hook(obj, NULL, icon);
+}
+
+EAPI Evas_Object *
+elm_fileselector_button_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
+elm_fileselector_button_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, NULL);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
*
* This widget encapsulates operations on its internal file
* selector on its own API. There is less control over its file
++<<<<<<< HEAD
+ * selector than that one would have instatiating one directly.
++=======
+ * selector than that one would have instantiating one directly.
++>>>>>>> remotes/origin/upstream
*
* The following styles are available for this button:
* @li @c "default"
* are:
* @li "default" - Label of the fileselector_button
*
++<<<<<<< HEAD
+ * Default contents parts of the fileselector_button widget that you can use for
++=======
+ * Default content parts of the fileselector_button widget that you can use for
++>>>>>>> remotes/origin/upstream
* are:
* @li "icon" - Icon of the fileselector_button
*
* @param obj The file selector button widget
* @param title The title string
*
++<<<<<<< HEAD
+ * This will change the window's title, when the file selector pops
+ * out after a click on the button. Those windows have the default
+ * (unlocalized) value of @c "Select a file" as titles.
+ *
+ * @note It will only take any effect if the file selector
++=======
+ * This will change the popup window's title, when the file selector pops
+ * out after a click on the button. Those windows have the default
+ * (unlocalized) value of @c "Select a file" as titles.
+ *
+ * @note It will only take effect if the file selector
++>>>>>>> remotes/origin/upstream
* button widget is @b not under "inwin mode".
*
* @see elm_fileselector_button_window_title_get()
EAPI void elm_fileselector_button_window_title_set(Evas_Object *obj, const char *title);
/**
++<<<<<<< HEAD
+ * Get the title set for a given file selector button widget's
++=======
+ * Get the title for a given file selector button widget's
++>>>>>>> remotes/origin/upstream
* window
*
* @param obj The file selector button widget
}
EAPI void
++<<<<<<< HEAD
+elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_fileselector_entry_button_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_fileselector_entry_button_label_get(const Evas_Object *obj)
+{
+ return _elm_fileselector_entry_button_label_get(obj, NULL);
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_fileselector_entry_selected_set(Evas_Object *obj, const char *path)
{
ELM_CHECK_WIDTYPE(obj, widtype);
if (!wd) return EINA_FALSE;
return elm_fileselector_button_inwin_mode_get(wd->button);
}
++<<<<<<< HEAD
+
+EAPI void
+elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon)
+{
+ _content_set_hook(obj, NULL, icon);
+}
+
+EAPI Evas_Object *
+elm_fileselector_entry_button_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
+elm_fileselector_entry_button_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, NULL);
+}
++=======
++>>>>>>> remotes/origin/upstream
* This file selector may appear in an Elementary window or in an
* inner window. When a file is chosen from it, the (inner) window
* is closed and the selected file's path string is exposed both as
++<<<<<<< HEAD
+ * an smart event and as the new text on the entry.
+ *
+ * This widget encapsulates operations on its internal file
+ * selector on its own API. There is less control over its file
+ * selector than that one would have instatiating one directly.
++=======
+ * a smart event and as the new text on the entry.
+ *
+ * This widget encapsulates operations on its internal file
+ * selector on its own API. There is less control over its file
+ * selector than that one would have instantiating one directly.
++>>>>>>> remotes/origin/upstream
*
* Smart callbacks one can register to:
* - @c "changed" - The text within the entry was changed
* are:
* @li "default" - Label of the fileselector_button
*
++<<<<<<< HEAD
+ * Default contents parts of the fileselector_entry widget that you can use for
++=======
+ * Default content parts of the fileselector_entry widget that you can use for
++>>>>>>> remotes/origin/upstream
* are:
* @li "button icon" - Button icon of the fileselector_entry
*
if (item->icon_file)
{
ic = elm_icon_add(obj);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic, 0, 1);
++=======
+ elm_icon_resizable_set(ic, EINA_FALSE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
if (item->icon_type == ELM_ICON_FILE)
elm_icon_file_set(ic, item->icon_file, item->icon_group);
else if (item->icon_type == ELM_ICON_STANDARD)
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Hoversel_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Hoversel_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Widget_Data *wd;
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *) it;
++=======
+ Widget_Data *wd;
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
elm_hoversel_hover_end(WIDGET(item));
}
EAPI void
++<<<<<<< HEAD
+elm_hoversel_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_hoversel_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_hoversel_label_get(const Evas_Object *obj)
+{
+ return _elm_hoversel_label_get(obj, NULL);
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)
{
ELM_CHECK_WIDTYPE(obj, widtype);
}
EAPI void
++<<<<<<< HEAD
+elm_hoversel_icon_set(Evas_Object *obj, Evas_Object *icon)
+{
+ _content_set_hook(obj, "icon", icon);
+}
+
+EAPI Evas_Object *
+elm_hoversel_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, "icon");
+}
+
+EAPI Evas_Object *
+elm_hoversel_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, "icon");
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_hoversel_hover_begin(Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype);
item->icon_type = icon_type;
item->func = func;
item->base.data = data;
++<<<<<<< HEAD
+ return (Elm_Object_Item *) item;
+}
+
+EAPI void
+elm_hoversel_item_del(Elm_Object_Item *it)
+{
+ elm_object_item_del(it);
+}
+
+EAPI void
+elm_hoversel_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func)
+{
+ elm_object_item_del_cb_set(it, func);
+}
+
+EAPI void *
+elm_hoversel_item_data_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_data_get(it);
+}
+
+EAPI const char *
+elm_hoversel_item_label_get(const Elm_Object_Item *it)
+{
+ return _item_text_get_hook(it, NULL);
++=======
+ return (Elm_Object_Item *)item;
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_hoversel_item_icon_set(Elm_Object_Item *it, const char *icon_file, const char *icon_group, Elm_Icon_Type icon_type)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *) it;
++=======
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *)it;
++>>>>>>> remotes/origin/upstream
eina_stringshare_replace(&item->icon_file, icon_file);
eina_stringshare_replace(&item->icon_group, icon_group);
item->icon_type = icon_type;
elm_hoversel_item_icon_get(const Elm_Object_Item *it, const char **icon_file, const char **icon_group, Elm_Icon_Type *icon_type)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *) it;
++=======
+ Elm_Hoversel_Item *item = (Elm_Hoversel_Item *)it;
++>>>>>>> remotes/origin/upstream
if (icon_file) *icon_file = item->icon_file;
if (icon_group) *icon_group = item->icon_group;
if (icon_type) *icon_type = item->icon_type;
* "selected" - an item in the hoversel list is selected. event_info is the item
* "dismissed" - the hover is dismissed
*
++<<<<<<< HEAD
+ * Default contents parts of the hoversel widget that you can use for are:
++=======
+ * Default content parts of the hoversel widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the hoversel
*
* Default text parts of the hoversel widget that you can use for are:
* in. See @ref Hover objects for more information.
*/
EAPI void elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
/**
* @brief Get the Hover parent
*
*
* This adds an item to the hoversel to show when it is clicked. Note: if you
* need to use an icon from an edje file then use
++<<<<<<< HEAD
+ * elm_hoversel_item_icon_set() right after the this function, and set
+ * icon_file to NULL here.
+ *
+ * For more information on what @p icon_file and @p icon_type are see the
++=======
+ * elm_hoversel_item_icon_set() right after this function, and set
+ * icon_file to NULL here.
+ *
+ * For more information on what @p icon_file and @p icon_type are, see the
++>>>>>>> remotes/origin/upstream
* @ref Icon "icon documentation".
*/
EAPI Elm_Object_Item *elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file, Elm_Icon_Type icon_type, Evas_Smart_Cb func, const void *data);
#include "elm_priv.h"
#define MAX_STR 256
++<<<<<<< HEAD
+#define MIN_W_ENTRY 20
++=======
+ #define MIN_W_ENTRY 10
++>>>>>>> remotes/origin/upstream
typedef enum _Multibuttonentry_Pos
{
MULTIBUTTONENTRY_POS_END,
MULTIBUTTONENTRY_POS_BEFORE,
MULTIBUTTONENTRY_POS_AFTER,
++<<<<<<< HEAD
+ MULTIBUTTONENTRY_POS_NUM
++=======
++>>>>>>> remotes/origin/upstream
} Multibuttonentry_Pos;
typedef enum _Multibuttonentry_Button_State
{
MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT,
MULTIBUTTONENTRY_BUTTON_STATE_SELECTED,
++<<<<<<< HEAD
+ MULTIBUTTONENTRY_BUTTON_STATE_NUM
+ } Multibuttonentry_Button_State;
+
++=======
+ } Multibuttonentry_Button_State;
+
+
++>>>>>>> remotes/origin/upstream
typedef enum _MultiButtonEntry_Closed_Button_Type
{
MULTIBUTTONENTRY_CLOSED_IMAGE,
Evas_Object *button;
Evas_Coord vw, rw; // vw: visual width, real width
Eina_Bool visible: 1;
++<<<<<<< HEAD
++=======
+ Evas_Smart_Cb func;
++>>>>>>> remotes/origin/upstream
};
typedef struct _Elm_Multibuttonentry_Item_Filter
{
++<<<<<<< HEAD
+ Elm_Multibuttonentry_Item_Filter_callback callback_func;
++=======
+ Elm_Multibuttonentry_Item_Filter_Cb callback_func;
++>>>>>>> remotes/origin/upstream
void *data;
} Elm_Multibuttonentry_Item_Filter;
Eina_List *current;
Eina_List *filter_list;
++<<<<<<< HEAD
++=======
+ const char *labeltxt, *guidetexttxt;
+
++>>>>>>> remotes/origin/upstream
int n_str;
Multibuttonentry_View_State view_state;
int shrink;
Eina_Bool focused: 1;
Eina_Bool last_btn_select: 1;
++<<<<<<< HEAD
+ Eina_Bool view_mode;
+ Elm_Multibuttonentry_Item_Filter_callback add_callback;
++=======
+ Elm_Multibuttonentry_Item_Filter_Cb add_callback;
++>>>>>>> remotes/origin/upstream
void *add_callback_data;
};
static void _changed_size_hint_cb(void *data, Evas *evas, Evas_Object *obj, void *event);
static void _resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event);
static void _event_init(Evas_Object *obj);
++<<<<<<< HEAD
+static void _shrink_mode_set(Evas_Object *obj, int shrink);
++=======
+ static void _shrink_mode_set(Evas_Object *obj, Eina_Bool shrink);
++>>>>>>> remotes/origin/upstream
static void _view_update(Evas_Object *obj);
static void _set_label(Evas_Object *obj, const char *str);
static void _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State state);
static void _del_button_obj(Evas_Object *obj, Evas_Object *btn);
static void _del_button_item(Elm_Multibuttonentry_Item *item);
static void _select_button(Evas_Object *obj, Evas_Object *btn);
++<<<<<<< HEAD
+static Elm_Multibuttonentry_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos,
+ const Elm_Multibuttonentry_Item *reference, void *data);
+static void _add_button(Evas_Object *obj, const char *str);
++=======
+ static Elm_Object_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, Evas_Smart_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
static void _evas_mbe_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
static void _entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
static Evas_Coord _calculate_item_max_height(Evas_Object *box, Evas_Object_Box_Data *priv, int obj_index);
static void _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data);
static void _item_text_set_hook(Elm_Object_Item *it,
++<<<<<<< HEAD
+ const char *part,
+ const char *label);
+static const char * _item_text_get_hook(const Elm_Object_Item *it,
+ const char *part);
++=======
+ const char *part,
+ const char *label);
+ static const char *_item_text_get_hook(const Elm_Object_Item *it,
+ const char *part);
+
+ /* TODO
+ * Code refactoring
+ * use evas_object_smart_callback_descriptions_set for smart callbacks.
+ */
++>>>>>>> remotes/origin/upstream
static void
_del_hook(Evas_Object *obj)
}
wd->current = NULL;
++<<<<<<< HEAD
+ if (wd->entry) evas_object_del (wd->entry);
+ if (wd->label) evas_object_del (wd->label);
+ if (wd->guidetext) evas_object_del (wd->guidetext);
+ if (wd->end) evas_object_del (wd->end);
++=======
+ if (wd->labeltxt) eina_stringshare_del(wd->labeltxt);
+ if (wd->guidetexttxt) eina_stringshare_del(wd->guidetexttxt);
+ if (wd->entry) evas_object_del(wd->entry);
+ if (wd->label) evas_object_del(wd->label);
+ if (wd->guidetext) evas_object_del(wd->guidetext);
+ if (wd->end) evas_object_del(wd->end);
++>>>>>>> remotes/origin/upstream
if (wd->rect_for_end) evas_object_del(wd->rect_for_end);
}
if (!wd) return;
_elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", elm_widget_style_get(obj));
++<<<<<<< HEAD
+ if (wd->box) edje_object_part_swallow (wd->base, "box.swallow", wd->box);
++=======
+ if (wd->box) edje_object_part_swallow(wd->base, "box.swallow", wd->box);
++>>>>>>> remotes/origin/upstream
edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale);
EINA_LIST_FOREACH(wd->items, l, item)
{
if (item->button)
++<<<<<<< HEAD
+ _elm_theme_object_set(obj, item->button, "multibuttonentry", "btn", elm_widget_style_get (obj));
++=======
+ _elm_theme_object_set(obj, item->button, "multibuttonentry", "btn", elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
edje_object_scale_set(item->button, elm_widget_scale_get(obj) * _elm_config->scale);
}
if (!wd) return;
evas_object_geometry_get(wd->box, NULL, NULL, &w, &h);
++<<<<<<< HEAD
+ if (wd->h_box < h) evas_object_smart_callback_call (data, "expanded", NULL);
+ else if (wd->h_box > h) evas_object_smart_callback_call (data, "shrank", NULL);
++=======
+ if (wd->h_box < h) evas_object_smart_callback_call(data, "expanded", NULL);
+ else if (wd->h_box > h) evas_object_smart_callback_call(data, "contracted", NULL);
++>>>>>>> remotes/origin/upstream
wd->w_box = w;
wd->h_box = h;
else
{
evas_object_hide(wd->guidetext);
++<<<<<<< HEAD
+ if (!wd->view_mode)
+ {
+ elm_box_pack_end(wd->box, wd->entry);
+ evas_object_show(wd->entry);
+ }
++=======
+ elm_box_pack_end(wd->box, wd->entry);
+ evas_object_show(wd->entry);
++>>>>>>> remotes/origin/upstream
if (elm_widget_focus_get(obj) || wd->focused)
if (!wd->current)
elm_object_focus_set(wd->entry, EINA_TRUE);
}
static void
++<<<<<<< HEAD
+_shrink_mode_set(Evas_Object *obj, int shrink)
++=======
+ _shrink_mode_set(Evas_Object *obj, Eina_Bool shrink)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *l;
wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
}
++<<<<<<< HEAD
+ if (shrink == 1)
+ {
+ Evas_Coord w=0, w_tmp=0;
++=======
+ if (shrink == EINA_TRUE)
+ {
+ Evas_Coord w = 0, w_tmp = 0;
++>>>>>>> remotes/origin/upstream
Evas_Coord box_inner_item_width_padding = 0;
elm_box_padding_get(wd->box, &box_inner_item_width_padding, NULL);
evas_object_show(wd->end);
wd->view_state = MULTIBUTTONENTRY_VIEW_SHRINK;
++<<<<<<< HEAD
+ evas_object_smart_callback_call(obj, "shrink,state,changed", (void *)1);
++=======
+ evas_object_smart_callback_call(obj, "expand,state,changed", (void *)1);
++>>>>>>> remotes/origin/upstream
break;
}
}
wd->rect_for_end = evas_object_rectangle_add(e);
evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0);
}
++<<<<<<< HEAD
+ evas_object_size_hint_min_set(wd->rect_for_end, rectSize, closed_height * elm_scale_get());
++=======
+ evas_object_size_hint_min_set(wd->rect_for_end, rectSize, closed_height * _elm_config->scale);
++>>>>>>> remotes/origin/upstream
elm_box_pack_end(wd->box, wd->rect_for_end);
evas_object_show(wd->rect_for_end);
evas_object_show(wd->end);
wd->view_state = MULTIBUTTONENTRY_VIEW_SHRINK;
++<<<<<<< HEAD
+ evas_object_smart_callback_call(obj, "shrink,state,changed", (void *)0);
++=======
+ evas_object_smart_callback_call(obj, "expand,state,changed", (void *)0);
++>>>>>>> remotes/origin/upstream
break;
}
}
}
wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
++<<<<<<< HEAD
+ evas_object_smart_callback_call(obj, "shrink,state,changed", (void *)wd->shrink);
++=======
+ evas_object_smart_callback_call(obj, "expand,state,changed", (void *)(long)wd->shrink);
++>>>>>>> remotes/origin/upstream
}
if (wd->view_state != MULTIBUTTONENTRY_VIEW_SHRINK)
{
// update buttons in shrink mode
if (wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)
++<<<<<<< HEAD
+ _shrink_mode_set(obj, 1);
++=======
+ _shrink_mode_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
// update guidetext
_set_vis_guidetext(obj);
}
static void
++<<<<<<< HEAD
+_set_label(Evas_Object *obj, const char* str)
++=======
+ _set_label(Evas_Object *obj, const char *str)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd || !str) return;
++<<<<<<< HEAD
++=======
+ eina_stringshare_replace(&wd->labeltxt, str);
++>>>>>>> remotes/origin/upstream
if (wd->label)
{
Evas_Coord width, height, sum_width = 0;
}
static void
++<<<<<<< HEAD
+_set_guidetext(Evas_Object *obj, const char* str)
++=======
+ _set_guidetext(Evas_Object *obj, const char *str)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd || !str) return;
++<<<<<<< HEAD
+ if (!wd->guidetext)
+ {
+ if (! (wd->guidetext = edje_object_add (evas_object_evas_get (obj)))) return;
+ _elm_theme_object_set(obj, wd->guidetext, "multibuttonentry", "guidetext", elm_widget_style_get(obj));
+ evas_object_size_hint_weight_set(wd->guidetext, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(wd->guidetext, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ }
+
+ if (wd->guidetext) edje_object_part_text_set (wd->guidetext, "elm.text", str);
+ _view_update(obj);
++=======
+
+ eina_stringshare_replace(&wd->guidetexttxt, str);
+ if (wd->guidetext == NULL)
+ wd->guidetext = edje_object_add(evas_object_evas_get(obj));
+
+ if (wd->guidetext)
+ {
+ _elm_theme_object_set(obj, wd->guidetext, "multibuttonentry",
+ "guidetext", elm_widget_style_get(obj));
+ evas_object_size_hint_weight_set(wd->guidetext, 0.0, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(wd->guidetext, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ edje_object_part_text_set(wd->guidetext, "elm.text", str);
+ _view_update(obj);
+ }
++>>>>>>> remotes/origin/upstream
}
static void
Elm_Multibuttonentry_Item *item = NULL;
if (!wd || wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK) return;
++<<<<<<< HEAD
+ _select_button(data, obj);
+
+ if ((wd->current) && ((item = eina_list_data_get(wd->current)) != NULL))
+ evas_object_smart_callback_call(data, "item,clicked", item);
++=======
+ _change_current_button(data, obj);
+
+ if (wd->current)
+ if ((item = eina_list_data_get(wd->current)) != NULL)
+ {
+ evas_object_smart_callback_call(data, "item,clicked", item);
+ _select_button(data, item->button);
+ }
++>>>>>>> remotes/origin/upstream
}
static void
}
}
if (wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)
++<<<<<<< HEAD
+ _shrink_mode_set(obj, 1);
++=======
+ _shrink_mode_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
if (!eina_list_count(wd->items))
_set_vis_guidetext(obj);
_resize_button(Evas_Object *btn, Evas_Coord *realw, Evas_Coord *vieww)
{
Evas_Coord rw, vw;
++<<<<<<< HEAD
+ Evas_Coord w_text, h_btn, padding_outer = 0;
++=======
+ Evas_Coord w_text, h_btn, padding_outer, padding_inner = 0;
++>>>>>>> remotes/origin/upstream
Evas_Coord w_btn = 0, button_max_width = 0;
const char *size_str;
edje_object_part_geometry_get(btn, "elm.base", NULL, NULL, NULL, &h_btn);
edje_object_part_geometry_get(btn, "elm.btn.text", NULL, NULL, &w_text, NULL);
edje_object_part_geometry_get(btn, "right.padding", NULL, NULL, &padding_outer, NULL);
++<<<<<<< HEAD
+ w_btn = w_text + 2*padding_outer;
++=======
+ w_btn = w_text + 2*padding_outer + 2*padding_inner;
++>>>>>>> remotes/origin/upstream
rw = w_btn;
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ _del_button_item((Elm_Multibuttonentry_Item *) it);
+ return EINA_TRUE;
+}
+
+static Elm_Multibuttonentry_Item*
+_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const Elm_Multibuttonentry_Item *reference, void *data)
+{
+ Elm_Multibuttonentry_Item *item;
+ Elm_Multibuttonentry_Item_Filter *item_filter;
++=======
+ _del_button_item((Elm_Multibuttonentry_Item *)it);
+ return EINA_TRUE;
+ }
+
+ static Elm_Object_Item*
+ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, Evas_Smart_Cb func, void *data)
+ {
+ Elm_Multibuttonentry_Item *item;
+ Elm_Multibuttonentry_Item_Filter *item_filter;
+ Elm_Multibuttonentry_Item *reference = (Elm_Multibuttonentry_Item *)ref;
++>>>>>>> remotes/origin/upstream
Eina_List *l;
Evas_Object *btn;
Evas_Coord width = -1, height = -1;
char *str_utf8 = NULL;
++<<<<<<< HEAD
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd || !wd->box || !wd->entry) return NULL;
++=======
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd || !wd->box || !wd->entry) return NULL;
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ if (!str) return NULL;
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(wd->filter_list, l, item_filter)
{
item->vw = vw;
item->visible = EINA_TRUE;
++<<<<<<< HEAD
++=======
+ if (func)
+ {
+ item->func = func;
+ }
+
++>>>>>>> remotes/origin/upstream
switch (pos)
{
case MULTIBUTTONENTRY_POS_START:
if (wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)
{
elm_widget_sub_object_add(obj, btn);
++<<<<<<< HEAD
+ _shrink_mode_set(obj, 1);
++=======
+ _shrink_mode_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
else
{
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
_set_vis_guidetext(obj);
if (wd->entry)
++<<<<<<< HEAD
+ {
+ if (!wd->view_mode)
+ elm_box_pack_before(wd->box, btn, wd->entry);
+ else
+ elm_box_pack_end(wd->box, btn);
+ }
++=======
+ elm_box_pack_before(wd->box, btn, wd->entry);
++>>>>>>> remotes/origin/upstream
else
elm_box_pack_end(wd->box, btn);
}
{
elm_widget_sub_object_add(obj, btn);
evas_object_hide(btn);
++<<<<<<< HEAD
+ _shrink_mode_set(obj, 1);
++=======
+ _shrink_mode_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
else
{
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
_set_vis_guidetext(obj);
if (wd->entry)
++<<<<<<< HEAD
+ {
+ if (!wd->view_mode)
+ elm_box_pack_before(wd->box, btn, wd->entry);
+ else
+ elm_box_pack_end(wd->box, btn);
+ }
++=======
+ elm_box_pack_before(wd->box, btn, wd->entry);
++>>>>>>> remotes/origin/upstream
else
elm_box_pack_end(wd->box, btn);
}
if (wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK)
{
elm_widget_sub_object_add(obj, btn);
++<<<<<<< HEAD
+ _shrink_mode_set(obj, 1);
++=======
+ _shrink_mode_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
else
{
if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
_set_vis_guidetext(obj);
if (wd->entry)
++<<<<<<< HEAD
+ {
+ if (!wd->view_mode)
+ elm_box_pack_before(wd->box, btn, wd->entry);
+ else
+ elm_box_pack_end(wd->box, btn);
+ }
++=======
+ elm_box_pack_before(wd->box, btn, wd->entry);
++>>>>>>> remotes/origin/upstream
else
elm_box_pack_end(wd->box, btn);
}
free(str_utf8);
++<<<<<<< HEAD
+ return item;
+}
+
+static void
+_add_button(Evas_Object *obj, const char *str)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ _add_button_item(obj, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
+}
+
+static Elm_Multibuttonentry_Item_Filter*
+_filter_new(Elm_Multibuttonentry_Item_Filter_callback func, void *data)
++=======
+ return (Elm_Object_Item *)item;
+ }
+
+ static Elm_Multibuttonentry_Item_Filter*
+ _filter_new(Elm_Multibuttonentry_Item_Filter_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
Elm_Multibuttonentry_Item_Filter *item_filter = ELM_NEW(Elm_Multibuttonentry_Item_Filter);
if (!item_filter) return NULL;
{
if (wd->current &&
((strcmp(ev->keyname, "BackSpace") == 0) ||
++<<<<<<< HEAD
+ (strcmp(ev->keyname, "BackSpace (") == 0)))
++=======
+ (strcmp(ev->keyname, "Delete") == 0)))
++>>>>>>> remotes/origin/upstream
{
item = eina_list_data_get(wd->current);
if (item)
}
else if (((!wd->current && (wd->n_str == 0) &&
(strcmp(ev->keyname, "BackSpace") == 0)) ||
++<<<<<<< HEAD
+ (strcmp(ev->keyname, "BackSpace (") == 0)))
++=======
+ (strcmp(ev->keyname, "Delete") == 0)))
++>>>>>>> remotes/origin/upstream
{
item = eina_list_data_get(eina_list_last(wd->items));
if (item)
if (!wd) return;
++<<<<<<< HEAD
+ if ((wd->n_str == 1) && (strcmp(ev->keyname, "BackSpace") == 0 || (strcmp(ev->keyname, "BackSpace (") == 0 )))
++=======
+ if ((wd->n_str == 1) && (strcmp(ev->keyname, "BackSpace") == 0 || (strcmp(ev->keyname, "Delete") == 0 )))
++>>>>>>> remotes/origin/upstream
wd->last_btn_select = EINA_FALSE;
}
if ((strcmp(str, "") != 0) && (strcmp(ev->keyname, "KP_Enter") == 0 || strcmp(ev->keyname, "Return") == 0 ))
{
++<<<<<<< HEAD
+ _add_button(data, str);
++=======
+ _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
++>>>>>>> remotes/origin/upstream
wd->n_str = 0;
}
}
str = elm_object_text_get(wd->entry);
if (strlen(str))
++<<<<<<< HEAD
+ _add_button(data, str);
++=======
+ _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
_entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Evas_Coord en_x, en_y, en_w, en_h;
++<<<<<<< HEAD
++=======
+ Evas_Coord bx_x, bx_y;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
evas_object_geometry_get(wd->entry, &en_x, &en_y, &en_w, &en_h);
++<<<<<<< HEAD
+
+ if (wd->focused)
+ elm_widget_show_region_set(wd->entry, en_x, en_y, en_w, en_h, EINA_TRUE);
++=======
+ evas_object_geometry_get(wd->box, &bx_x, &bx_y, NULL, NULL);
+
+ if (wd->focused)
+ elm_widget_show_region_set(wd->box, en_x - bx_x, en_y - bx_y, en_w,
+ en_h, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static void
if (!wd->box)
{
++<<<<<<< HEAD
+ wd->box = elm_box_add (obj);
++=======
+ wd->box = elm_box_add(obj);
++>>>>>>> remotes/origin/upstream
if (!wd->box) return;
elm_widget_sub_object_add(obj, wd->box);
elm_box_layout_set(wd->box, _box_layout_cb, NULL, NULL);
if (!wd->entry)
{
++<<<<<<< HEAD
+ wd->entry = elm_entry_add (obj);
+ if (!wd->entry) return;
+ elm_entry_scrollable_set(wd->entry, EINA_TRUE);
++=======
+ wd->entry = elm_entry_add(obj);
+ if (!wd->entry) return;
++>>>>>>> remotes/origin/upstream
elm_entry_single_line_set(wd->entry, EINA_TRUE);
elm_object_text_set(wd->entry, "");
elm_entry_input_panel_enabled_set(wd->entry, EINA_FALSE);
evas_object_size_hint_min_set(wd->entry, MIN_W_ENTRY, 0);
evas_object_size_hint_weight_set(wd->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(wd->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ if (wd->box) elm_box_pack_end (wd->box, wd->entry);
++=======
+ if (wd->box) elm_box_pack_end(wd->box, wd->entry);
++>>>>>>> remotes/origin/upstream
evas_object_show(wd->entry);
wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY;
}
end_type = edje_object_data_get(wd->base, "closed_button_type");
if (!end_type || !strcmp(end_type, "label"))
{
++<<<<<<< HEAD
+ wd->end = elm_label_add (obj);
++=======
+ wd->end = elm_label_add(obj);
++>>>>>>> remotes/origin/upstream
if (!wd->end) return;
elm_object_style_set(wd->end, "extended/multibuttonentry_default");
wd->end_type = MULTIBUTTONENTRY_CLOSED_LABEL;
if (size_str) button_min_height = (Evas_Coord)atoi(size_str);
wd->end_type = MULTIBUTTONENTRY_CLOSED_IMAGE;
++<<<<<<< HEAD
+ evas_object_size_hint_min_set(wd->end, button_min_width * elm_scale_get(), button_min_height * elm_scale_get());
++=======
+ evas_object_size_hint_min_set(wd->end,
+ button_min_width * _elm_config->scale,
+ button_min_height * _elm_config->scale);
++>>>>>>> remotes/origin/upstream
elm_widget_sub_object_add(obj, wd->end);
}
}
if (wx)
{
++<<<<<<< HEAD
+ if ((elm_widget_is(opt->obj)) && (!(strcmp(elm_widget_type_get(opt->obj), "entry"))) && (mnw == -1))
+ mnw = MIN_W_ENTRY;
+
++=======
++>>>>>>> remotes/origin/upstream
if (mnw != -1 && (w - cw) >= mnw)
ww = w - cw;
else
ww = w;
}
else
++<<<<<<< HEAD
+ ww = mnw;
++=======
+ ww = mnw;
++>>>>>>> remotes/origin/upstream
if ((cw + mnw) > w)
{
Evas_Coord mnw, mnh, cw = 0, cmaxh = 0, w, ww;
const Eina_List *l;
Evas_Object_Box_Option *opt;
++<<<<<<< HEAD
+ int index = 0;
++=======
+ int local_index = 0;
++>>>>>>> remotes/origin/upstream
double wx;
evas_object_geometry_get(box, NULL, NULL, &w, NULL);
if (wx)
{
++<<<<<<< HEAD
+ if ((elm_widget_is(opt->obj)) && (!(strcmp(elm_widget_type_get(opt->obj), "entry"))) && (mnw == -1))
+ mnw = MIN_W_ENTRY;
+
+ if (mnw != -1 && (w - cw) >= mnw)
+ ww = w - cw;
+ else
+ ww = w;
+ }
+ else
+ ww = mnw;
+
+ if ((cw + ww) > w)
+ {
+ if (index > obj_index) return cmaxh;
++=======
+ if (mnw != -1 && (w - cw) >= mnw)
+ ww = w - cw;
+ else
+ ww = w;
+ }
+ else
+ ww = mnw;
+
+ if ((cw + ww) > w)
+ {
+ if (local_index > obj_index) return cmaxh;
++>>>>>>> remotes/origin/upstream
cw = 0;
cmaxh = 0;
}
cw += ww;
if (cmaxh < mnh) cmaxh = mnh;
++<<<<<<< HEAD
+ index++;
++=======
+ local_index++;
++>>>>>>> remotes/origin/upstream
}
return cmaxh;
if (wx)
{
++<<<<<<< HEAD
+ if ((elm_widget_is(obj)) && (!(strcmp(elm_widget_type_get(obj), "entry"))) && (mnw == -1))
+ mnw = MIN_W_ENTRY;
+
+ if (mnw != -1 && (w - cw) >= mnw)
+ ww = w - cw;
+ else
+ ww = w;
+ }
+ else
+ ww = mnw;
++=======
+ if (mnw != -1 && (w - cw) >= mnw)
+ ww = w - cw;
+ else
+ ww = w;
+ }
+ else
+ ww = mnw;
++>>>>>>> remotes/origin/upstream
hh = _calculate_item_max_height(o, priv, obj_index);
ow = mnw;
static void
_item_text_set_hook(Elm_Object_Item *it, const char *part, const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Elm_Multibuttonentry_Item *item;
+ if (part && strcmp(part, "default")) return;
+ if (!label) return;
+ item = (Elm_Multibuttonentry_Item *) it;
++=======
+ Elm_Multibuttonentry_Item *item;
+ if (part && strcmp(part, "default")) return;
+ if (!label) return;
+ item = (Elm_Multibuttonentry_Item *)it;
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(item->button, "elm.btn.text", label);
_resize_button(item->button, &item->rw, &item->vw);
}
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Multibuttonentry_Item *item;
+ if (part && strcmp(part, "default")) return NULL;
+ item = (Elm_Multibuttonentry_Item *) it;
++=======
+ Elm_Multibuttonentry_Item *item;
+ if (part && strcmp(part, "default")) return NULL;
+ item = (Elm_Multibuttonentry_Item *)it;
++>>>>>>> remotes/origin/upstream
return edje_object_part_text_get(item->button, "elm.btn.text");
}
_text_set_hook(Evas_Object *obj, const char *part, const char *label)
{
ELM_CHECK_WIDTYPE(obj, widtype);
++<<<<<<< HEAD
+ if (part && strcmp(part, "default")) return;
+ if (label) _set_label(obj, label);
+ else _set_label(obj, "");
++=======
+ if (!part || !strcmp(part, "default"))
+ {
+ if (label) _set_label(obj, label);
+ else _set_label(obj, "");
+ }
+ else if (!strcmp(part, "guide"))
+ {
+ if (label) _set_guidetext(obj, label);
+ else _set_guidetext(obj, "");
+ }
++>>>>>>> remotes/origin/upstream
}
static const char *
_text_get_hook(const Evas_Object *obj, const char *part)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++<<<<<<< HEAD
+ Widget_Data *wd;
+ if (part && strcmp(part, "default")) return NULL;
+ wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (wd->label) return edje_object_part_text_get(wd->label, "mbe.label");
++=======
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+
+ if (!part || !strcmp(part, "default"))
+ {
+ return wd->labeltxt;
+ }
+ else if (!strcmp(part, "guide"))
+ {
+ return wd->guidetexttxt;
+ }
++>>>>>>> remotes/origin/upstream
return NULL;
}
wd->focused = EINA_FALSE;
wd->last_btn_select = EINA_TRUE;
wd->n_str = 0;
++<<<<<<< HEAD
+ wd->rect_for_end= NULL;
++=======
+ wd->rect_for_end = NULL;
++>>>>>>> remotes/origin/upstream
wd->add_callback = NULL;
wd->add_callback_data = NULL;
return wd->entry;
}
++<<<<<<< HEAD
+EAPI const char *
++=======
+ EINA_DEPRECATED EAPI const char *
++>>>>>>> remotes/origin/upstream
elm_multibuttonentry_label_get(const Evas_Object *obj)
{
return _text_get_hook(obj, NULL);
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_multibuttonentry_label_set(Evas_Object *obj, const char *label)
{
_text_set_hook(obj, NULL, label);
}
++<<<<<<< HEAD
+EAPI const char *
++=======
+ EINA_DEPRECATED EAPI const char *
++>>>>>>> remotes/origin/upstream
elm_multibuttonentry_guide_text_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
return NULL;
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (guidetext)
+ _set_guidetext(obj, guidetext);
+ else
+ _set_guidetext(obj, "");
+}
+
+EAPI int
+elm_multibuttonentry_shrink_mode_get(const Evas_Object *obj)
+{
++=======
+
+ _set_guidetext(obj, guidetext);
+ }
+
+ EINA_DEPRECATED EAPI int
+ elm_multibuttonentry_shrink_mode_get(const Evas_Object *obj)
+ {
+ if (elm_multibuttonentry_expanded_get(obj))
+ return 0;
+ else
+ return 1;
+ }
+
+ EAPI Eina_Bool
+ elm_multibuttonentry_expanded_get(const Evas_Object *obj)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype) -1;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return -1;
++<<<<<<< HEAD
+ return wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK ? 1 : 0;
+}
+
+EAPI void
+elm_multibuttonentry_shrink_mode_set(Evas_Object *obj, int shrink)
+{
++=======
+ return (wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK ? EINA_FALSE : EINA_TRUE);
+
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_multibuttonentry_shrink_mode_set(Evas_Object *obj, int shrink)
+ {
+ if (shrink == 0)
+ elm_multibuttonentry_expanded_set(obj, EINA_TRUE);
+
+ if (shrink == 1)
+ elm_multibuttonentry_expanded_set(obj, EINA_FALSE);
+ }
+
+ EAPI void
+ elm_multibuttonentry_expanded_set(Evas_Object *obj, Eina_Bool expanded)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd || !wd->box ||
++<<<<<<< HEAD
+ ((wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK) ? 1 : 0) == shrink) return;
+ _shrink_mode_set(obj, shrink);
+}
+
+EAPI Elm_Object_Item *
+elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, void *data)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Elm_Multibuttonentry_Item *item;
+ if (!label) return NULL;
+ item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data);
+ return (Elm_Object_Item *) item;
+}
+
+EAPI Elm_Object_Item *
+elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, void *data)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Elm_Multibuttonentry_Item *item;
+ if (!label) return NULL;
+ item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data);
+ return (Elm_Object_Item *) item;
+}
+
+EAPI Elm_Object_Item *
+elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, void *data)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Elm_Multibuttonentry_Item *item;
+ if (!label) return NULL;
+ item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE,
+ (Elm_Multibuttonentry_Item *) before, data);
+ return (Elm_Object_Item *) item;
+}
+
+EAPI Elm_Object_Item *
+elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, void *data)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Elm_Multibuttonentry_Item *item;
+ if (!label) return NULL;
+ item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER,
+ (Elm_Multibuttonentry_Item *) after, data);
+ return (Elm_Object_Item *) item;
++=======
+ ((wd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK) ? EINA_FALSE : EINA_TRUE) == expanded) return;
+
+ if (expanded)
+ _shrink_mode_set(obj, EINA_FALSE);
+ else
+ _shrink_mode_set(obj, EINA_TRUE);
+
+ }
+
+ EAPI Elm_Object_Item *
+ elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
+ {
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, func, data);
+ }
+
+ EAPI Elm_Object_Item *
+ elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
+ {
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, func, data);
+ }
+
+ EAPI Elm_Object_Item *
+ elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Smart_Cb func, void *data)
+ {
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, func, data);
+ }
+
+ EAPI Elm_Object_Item *
+ elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Smart_Cb func, void *data)
+ {
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, func, data);
++>>>>>>> remotes/origin/upstream
}
EAPI const Eina_List *
}
EAPI void
++<<<<<<< HEAD
+elm_multibuttonentry_item_select(Elm_Object_Item *it, Eina_Bool selected)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *) it;
++=======
+ elm_multibuttonentry_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)it;
++>>>>>>> remotes/origin/upstream
if (selected) _select_button(WIDGET(item), item->button);
else _select_button(WIDGET(item), NULL);
}
++<<<<<<< HEAD
+EAPI void
+elm_multibuttonentry_item_unselect_all(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _select_button(obj, NULL);
++=======
+ EAPI Eina_Bool
+ elm_multibuttonentry_item_selected_get(const Elm_Object_Item *it)
+ {
+ //TODO : To be implemented.
+ if (!it) return EINA_FALSE;
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
EINA_LIST_FOREACH(wd->items, l, _item)
{
++<<<<<<< HEAD
+ if (_item == (Elm_Multibuttonentry_Item *) it)
++=======
+ if (_item == (Elm_Multibuttonentry_Item *)it)
++>>>>>>> remotes/origin/upstream
{
l = eina_list_prev(l);
if (!l) return NULL;
EINA_LIST_FOREACH(wd->items, l, _item)
{
++<<<<<<< HEAD
+ if (_item == (Elm_Multibuttonentry_Item *) it)
++=======
+ if (_item == (Elm_Multibuttonentry_Item *)it)
++>>>>>>> remotes/origin/upstream
{
l = eina_list_next(l);
if (!l) return NULL;
EAPI void *
elm_multibuttonentry_item_data_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_data_get(it);
}
EAPI void
elm_multibuttonentry_item_data_set(Elm_Object_Item *it, void *data)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_data_set(it, data);
}
EAPI void
++<<<<<<< HEAD
+elm_multibuttonentry_item_filter_append(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data)
++=======
+ elm_multibuttonentry_item_filter_append(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
Elm_Multibuttonentry_Item_Filter *new_item_filter = NULL;
Elm_Multibuttonentry_Item_Filter *_item_filter = NULL;
EINA_LIST_FOREACH(wd->filter_list, l, _item_filter)
{
++<<<<<<< HEAD
+ if ( _item_filter && ((_item_filter->callback_func == func) && (_item_filter->data == data)))
++=======
+ if (_item_filter && ((_item_filter->callback_func == func) && (_item_filter->data == data)))
++>>>>>>> remotes/origin/upstream
{
printf("Already Registered this item filter!!!!\n");
return;
}
EAPI void
++<<<<<<< HEAD
+elm_multibuttonentry_item_filter_prepend(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data)
++=======
+ elm_multibuttonentry_item_filter_prepend(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
Elm_Multibuttonentry_Item_Filter *new_item_filter = NULL;
Elm_Multibuttonentry_Item_Filter *_item_filter = NULL;
}
EAPI void
++<<<<<<< HEAD
+elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data)
++=======
+ elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd;
Eina_List *l;
}
}
}
++<<<<<<< HEAD
+
+EAPI void
+elm_multibuttonentry_view_mode(Evas_Object *obj, Eina_Bool view_mode)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ wd->view_mode = view_mode;
+
+ if (view_mode)
+ {
+ elm_box_unpack(wd->box, wd->entry);
+ evas_object_hide(wd->entry);
+ }
+ else
+ _view_update(obj);
+}
++=======
++>>>>>>> remotes/origin/upstream
/**
* @defgroup Multibuttonentry Multibuttonentry
*
++<<<<<<< HEAD
+ * A Multibuttonentry is a widget to allow a user enter text and manage it as a number of buttons
+ * Each text button is inserted by pressing the "return" key. If there is no space in the current row,
+ * a new button is added to the next row. When a text button is pressed, it will become focused.
+ * Backspace removes the focus.
+ * When the Multibuttonentry loses focus items longer than 1 lines are shrunk to one line.
+ *
+ * Smart callbacks one can register:
+ * - @c "item,selected" - when item is selected. May be called on backspace key.
+ * - @c "item,added" - when a new multibuttonentry item is added.
+ * - @c "item,deleted" - when a multibuttonentry item is deleted.
+ * - @c "item,clicked" - selected item of multibuttonentry is clicked.
++=======
+ * A Multibuttonentry is a widget to allow a user enter text and manage it as a number
+ * of buttons. Each text button is inserted by pressing the "return" key.
+ * If there is no space in the current row, a new button is added to the next row.
+ * When a text button is pressed, it will become focused.
+ * Backspace removes the focus.
+ * When the Multibuttonentry loses focus items longer than one line are shrunk
+ * to one line.
+ *
+ * Typical use case of multibuttonentry is, composing emails/messages to a group
+ * of addresses, each of which is an item that can be clicked for further actions.
+ *
+ * Smart callbacks one can register:
+ * - @c "item,selected" - this is called when an item is selected by api, user
+ * interaction, and etc. this is also called when a user press back space
+ * while cursor is on the first field of entry.
+ * - @c "item,added" - when a new multibuttonentry item is added.
+ * - @c "item,deleted" - when a multibuttonentry item is deleted.
+ * - @c "item,clicked" - this is called when an item is clicked by user
+ * interaction. Both "item,selected" and "item,clicked" are needed.
++>>>>>>> remotes/origin/upstream
* - @c "clicked" - when multibuttonentry is clicked.
* - @c "focused" - when multibuttonentry is focused.
* - @c "unfocused" - when multibuttonentry is unfocused.
* - @c "expanded" - when multibuttonentry is expanded.
++<<<<<<< HEAD
+ * - @c "shrank" - when multibuttonentry is shrank.
+ * - @c "shrank,state,changed" - when shrink mode state of multibuttonentry is
+ * changed.
+ *
++=======
+ * - @c "contracted" - when multibuttonentry is contracted.
+ * - @c "expand,state,changed" - when shrink mode state of multibuttonentry is changed.
+ *
++>>>>>>> remotes/origin/upstream
* Default text parts of the multibuttonentry widget that you can use for are:
* @li "default" - A label of the multibuttonentry
*
* @{
*/
++<<<<<<< HEAD
+typedef Eina_Bool (*Elm_Multibuttonentry_Item_Filter_callback)(Evas_Object *obj, const char *item_label, void *item_data, void *data);
++=======
+ /**
+ * @brief Callback to be invoked when an item is added to the multibuttonentry.
+ *
+ * @param obj The parent object
+ * @param item_label The label corresponding to the added item.
+ * @param item_data data specific to this item.
+ * @param data data specific to the multibuttonentry.
+ *
+ * @return EINA_TRUE
+ * EINA_FALSE otherwise.
+ *
+ * @ingroup Multibuttonentry
+ */
+ typedef Eina_Bool (*Elm_Multibuttonentry_Item_Filter_Cb)(Evas_Object *obj, const char *item_label, void *item_data, void *data);
++>>>>>>> remotes/origin/upstream
/**
* @brief Add a new multibuttonentry to the parent
* @param parent The parent object
* @return The new object or NULL if it cannot be created
*
++<<<<<<< HEAD
++=======
+ *
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Evas_Object *elm_multibuttonentry_add(Evas_Object *parent);
* @param obj The multibuttonentry object
* @return The entry object, or NULL if none
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Evas_Object *elm_multibuttonentry_entry_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Get the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @return The guide text, or NULL if none
+ *
+ */
+EAPI const char *elm_multibuttonentry_guide_text_get(const Evas_Object *obj);
+
+/**
+ * Set the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @param guidetext The guide text string
+ *
+ */
+EAPI void elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext);
+
+/**
+ * Get the value of shrink_mode state.
+ *
+ * @param obj The multibuttonentry object
+ * @return the value of shrink mode state.
+ *
+ */
+EAPI int elm_multibuttonentry_shrink_mode_get(const Evas_Object *obj);
+
+/**
+ * Set/Unset the multibuttonentry to shrink mode state of single line
+ *
+ * @param obj The multibuttonentry object
+ * @param shrink the value of shrink_mode state. set this to 1 to set the multibuttonentry to shrink state of single line. set this to 0 to unset the contracted state.
+ *
+ */
+EAPI void elm_multibuttonentry_shrink_mode_set(Evas_Object *obj, int shrink);
++=======
+ * Get the value of expanded state.
+ * In expanded state, the complete entry will be displayed.
+ * Otherwise, only single line of the entry will be displayed.
+ *
+ * @param obj The multibuttonentry object
+ * @return EINA_TRUE if the widget is in expanded state. EINA_FALSE if not.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Eina_Bool elm_multibuttonentry_expanded_get(const Evas_Object *obj);
+
+ /**
+ * Set/Unset the multibuttonentry to expanded state.
+ * In expanded state, the complete entry will be displayed.
+ * Otherwise, only single line of the entry will be displayed.
+ *
+ * @param obj The multibuttonentry object
+ * @param expanded the value of expanded state.
+ * Set this to EINA_TRUE for expanded state.
+ * Set this to EINA_FALSE for single line state.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI void elm_multibuttonentry_expanded_set(Evas_Object *obj, Eina_Bool expanded);
++>>>>>>> remotes/origin/upstream
/**
* Prepend a new item to the multibuttonentry
*
* @param obj The multibuttonentry object
* @param label The label of new item
++<<<<<<< HEAD
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, void *data);
++=======
+ * @param func The callback function to be invoked when this item is pressed.
+ * @param data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Elm_Object_Item *elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Append a new item to the multibuttonentry
*
* @param obj The multibuttonentry object
* @param label The label of new item
++<<<<<<< HEAD
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, void *data);
++=======
+ * @param func The callback function to be invoked when this item is pressed.
+ * @param data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Elm_Object_Item *elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Add a new item to the multibuttonentry before the indicated object
* @param obj The multibuttonentry object
* @param before The item before which to add it
* @param label The label of new item
++<<<<<<< HEAD
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, void *data);
++=======
+ * @param func The callback function to be invoked when this item is pressed.
+ * @param data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Smart_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Add a new item to the multibuttonentry after the indicated object
* @param obj The multibuttonentry object
* @param after The item after which to add it
* @param label The label of new item
++<<<<<<< HEAD
+ * @param data The ponter to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ */
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, void *data);
++=======
+ * @param func The callback function to be invoked when this item is pressed.
+ * @param data The pointer to the data to be attached
+ * @return A handle to the item added or NULL if not possible
+ *
+ * @see Use elm_object_item_del() to delete the item.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Smart_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Get a list of items in the multibuttonentry
* @param obj The multibuttonentry object
* @return The list of items, or NULL if none
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI const Eina_List *elm_multibuttonentry_items_get(const Evas_Object *obj);
* @param obj The multibuttonentry object
* @return The first item, or NULL if none
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Elm_Object_Item *elm_multibuttonentry_first_item_get(const Evas_Object *obj);
* @param obj The multibuttonentry object
* @return The last item, or NULL if none
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Elm_Object_Item *elm_multibuttonentry_last_item_get(const Evas_Object *obj);
* @param obj The multibuttonentry object
* @return The selected item, or NULL if none
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Elm_Object_Item *elm_multibuttonentry_selected_item_get(const Evas_Object *obj);
* @param it The item
* @param selected if it's EINA_TRUE, select the item otherwise, unselect the item
*
++<<<<<<< HEAD
+ */
+EAPI void elm_multibuttonentry_item_select(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * unselect all items.
+ *
+ * @param obj The multibuttonentry object
+ *
+ */
+EAPI void elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
++=======
+ * @ingroup Multibuttonentry
+ */
+ EAPI void elm_multibuttonentry_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+
+ /**
+ * Get the selected state of an item
+ *
+ * @param it The item
+ * @return EINA_TRUE if the item is selected, EINA_FALSE otherwise.
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI Eina_Bool elm_multibuttonentry_item_selected_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Remove all items in the multibuttonentry.
*
* @param obj The multibuttonentry object
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_multibuttonentry_clear(Evas_Object *obj);
* @param it The item
* @return The item before the item @p it
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Elm_Object_Item *elm_multibuttonentry_item_prev_get(const Elm_Object_Item *it);
* @param it The item
* @return The item after the item @p it
*
++<<<<<<< HEAD
++=======
+ * @ingroup Multibuttonentry
++>>>>>>> remotes/origin/upstream
*/
EAPI Elm_Object_Item *elm_multibuttonentry_item_next_get(const Elm_Object_Item *it);
/**
++<<<<<<< HEAD
+ * Append a item filter function for text inserted in the Multibuttonentry
++=======
+ * Append an item filter function for text inserted in the Multibuttonentry
++>>>>>>> remotes/origin/upstream
*
* Append the given callback to the list. This functions will be called
* whenever any text is inserted into the Multibuttonentry, with the text to be inserted
* parameter to NULL. This will also prevent any following filters from being
* called.
*
++<<<<<<< HEAD
+ * @param obj The multibuttonentryentry object
+ * @param func The function to use as item filter
+ * @param data User data to pass to @p func
+ *
+ */
+EAPI void elm_multibuttonentry_item_filter_append(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data);
+
+/**
+ * Prepend a filter function for text inserted in the Multibuttentry
++=======
+ * @param obj The multibuttonentry object
+ * @param func The function to use as item filter
+ * @param data User data to pass to @p func
+ *
+ * @ingroup Multibuttonentry
+ */
+ EAPI void elm_multibuttonentry_item_filter_append(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data);
+
+ /**
+ * Prepend a filter function for text inserted in the Multibuttonentry
++>>>>>>> remotes/origin/upstream
*
* Prepend the given callback to the list. See elm_multibuttonentry_item_filter_append()
* for more information
* @param func The function to use as text filter
* @param data User data to pass to @p func
*
++<<<<<<< HEAD
+ */
+EAPI void elm_multibuttonentry_item_filter_prepend(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data);
++=======
+ * @ingroup Multibuttonentry
+ */
+ EAPI void elm_multibuttonentry_item_filter_prepend(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Remove a filter from the list
* @param func The filter function to remove
* @param data The user data passed when adding the function
*
++<<<<<<< HEAD
+ */
+EAPI void elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_callback func, void *data);
+
+EAPI void elm_multibuttonentry_view_mode(Evas_Object *obj, Eina_Bool view_mode);
++=======
+ * @ingroup Multibuttonentry
+ */
+ EAPI void elm_multibuttonentry_item_filter_remove(Evas_Object *obj, Elm_Multibuttonentry_Item_Filter_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* @}
{
EINA_INLIST;
const char *part;
++<<<<<<< HEAD
+ Evas_Object *content;
++=======
++>>>>>>> remotes/origin/upstream
Elm_Naviframe_Item *it;
};
{
EINA_INLIST;
const char *part;
++<<<<<<< HEAD
+ const char *text;
++=======
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Naviframe_Item
static const char *widtype = NULL;
++<<<<<<< HEAD
+static const char SIG_TRANSITION_FINISHED[] = "transition,finished";
+static const char SIG_PUSH_FINISHED[] = "push,finished";
+static const char SIG_POP_FINISHED[] = "pop,finished";
+static const char SIG_TITLE_CLICKED[] = "title,clicked";
+
+static const Evas_Smart_Cb_Description _signals[] = {
+ {SIG_TRANSITION_FINISHED, ""},
+ {SIG_TITLE_CLICKED, ""},
+ {NULL, NULL}
+};
+
++=======
+ //widget signals
+ static const char SIG_TRANSITION_FINISHED[] = "transition,finished";
+ static const char SIG_TITLE_CLICKED[] = "title,clicked";
+
+ //widget item signals
+ static const char SIG_ITEM_SHOW_BEGIN[] = "show,begin";
+ static const char SIG_ITEM_HIDE_FINISHED[] = "hide,finished";
+
+ static const Evas_Smart_Cb_Description _signals[] = {
+ {SIG_TRANSITION_FINISHED, ""},
+ {SIG_TITLE_CLICKED, ""},
+ {SIG_ITEM_SHOW_BEGIN, ""},
+ {SIG_ITEM_HIDE_FINISHED, ""},
+ {NULL, NULL}
+ };
+
+ static void _text_set_hook(Evas_Object *obj,
+ const char *part,
+ const char *label);
+ static const char *_text_get_hook(const Evas_Object *obj, const char *part);
+ static void _content_set_hook(Evas_Object *obj,
+ const char *part,
+ Evas_Object *content);
+ static Evas_Object *_content_get_hook(const Evas_Object *obj, const char *part);
+ static Evas_Object *_content_unset_hook(Evas_Object *obj, const char *part);
++>>>>>>> remotes/origin/upstream
static void _del_hook(Evas_Object *obj);
static void _theme_hook(Evas_Object *obj);
static void _emit_hook(Evas_Object *obj,
const char *emission,
const char *source);
static void _disable_hook(Evas_Object *obj);
++<<<<<<< HEAD
+static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
++=======
++>>>>>>> remotes/origin/upstream
static void _item_text_set_hook(Elm_Object_Item *it,
const char *part,
const char *label);
Evas_Object *next_btn,
Evas_Object *content,
const char *item_style);
++<<<<<<< HEAD
++=======
+ static Eina_Bool _focus_next_hook(const Evas_Object *obj,
+ Elm_Focus_Direction dir,
+ Evas_Object **next);
++>>>>>>> remotes/origin/upstream
static void
_del_hook(Evas_Object *obj)
Elm_Naviframe_Item);
wd->stack = eina_inlist_remove(wd->stack, wd->stack->last);
_item_del(it);
++<<<<<<< HEAD
++=======
+ elm_widget_item_free(it);
++>>>>>>> remotes/origin/upstream
if (!wd->stack) break;
}
}
_item_style_set(it, it->style);
_item_title_visible_update(it);
}
++<<<<<<< HEAD
+
+ _elm_widget_mirrored_reload(obj);
+ _mirrored_set(obj, elm_widget_mirrored_get(obj));
++=======
++>>>>>>> remotes/origin/upstream
}
static void _emit_hook(Evas_Object *obj,
const char *emission,
const char *source)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ edje_object_signal_emit(wd->base, emission, source);
++=======
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return;
+ return elm_object_item_signal_emit(it, emission, source);
++>>>>>>> remotes/origin/upstream
}
static void
}
static void
++<<<<<<< HEAD
+_mirrored_set(Evas_Object *obj, Eina_Bool rtl)
+{
+ Widget_Data *wd;
+ Elm_Naviframe_Item *it;
+
+ wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ EINA_INLIST_FOREACH(wd->stack, it)
+ edje_object_mirrored_set(VIEW(it), rtl);
+ edje_object_mirrored_set(wd->base, rtl);
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_item_text_set_hook(Elm_Object_Item *it,
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Elm_Naviframe_Text_Item_Pair *pair = NULL;
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
++=======
+ Elm_Naviframe_Text_Item_Pair *pair = NULL;
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
char buf[1024];
if (!part || !strcmp(part, "default"))
navi_it->text_list = eina_inlist_append(navi_it->text_list,
EINA_INLIST_GET(pair));
}
++<<<<<<< HEAD
+
+ eina_stringshare_replace(&pair->text, label);
+ edje_object_part_text_set(VIEW(navi_it), buf, label);
++=======
+ elm_object_part_text_set(VIEW(navi_it), buf, label);
++>>>>>>> remotes/origin/upstream
if (label)
{
snprintf(buf, sizeof(buf), "elm,state,%s,show", buf);
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(navi_it), buf, "elm");
++=======
+ elm_object_signal_emit(VIEW(navi_it), buf, "elm");
++>>>>>>> remotes/origin/upstream
}
else
{
snprintf(buf, sizeof(buf), "elm,state,%s,hide", buf);
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(navi_it), buf, "elm");
++=======
+ elm_object_signal_emit(VIEW(navi_it), buf, "elm");
++>>>>>>> remotes/origin/upstream
}
_sizing_eval(WIDGET(navi_it));
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Naviframe_Text_Item_Pair *pair = NULL;
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
++=======
++>>>>>>> remotes/origin/upstream
char buf[1024];
if (!part || !strcmp(part, "default"))
else
snprintf(buf, sizeof(buf), "%s", part);
++<<<<<<< HEAD
+ EINA_INLIST_FOREACH(navi_it->text_list, pair)
+ {
+ if (!strcmp(buf, pair->part))
+ return pair->text;
+ }
+ return NULL;
++=======
+ return elm_object_part_text_get(VIEW(it), buf);
++>>>>>>> remotes/origin/upstream
}
static void
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+
+ //specified parts
+ if ((!part) || (!strcmp(part, "elm.swallow.content")))
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
+
+ //specified parts
+ if (!part || !strcmp("default", part))
++>>>>>>> remotes/origin/upstream
{
_item_content_set(navi_it, content);
return;
}
++<<<<<<< HEAD
+ else if (!strcmp(part, "elm.swallow.prev_btn"))
++=======
+ else if (!strcmp(part, "prev_btn"))
++>>>>>>> remotes/origin/upstream
{
_title_prev_btn_set(navi_it, content, EINA_FALSE);
return;
}
++<<<<<<< HEAD
+ else if (!strcmp(part, "elm.swallow.next_btn"))
++=======
+ else if (!strcmp(part, "next_btn"))
++>>>>>>> remotes/origin/upstream
{
_title_next_btn_set(navi_it, content);
return;
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Naviframe_Content_Item_Pair *pair = NULL;
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+
+ //specified parts
+ if ((!part) || (!strcmp(part, "elm.swallow.content")))
+ return navi_it->content;
+ else if (!strcmp(part, "elm.swallow.prev_btn"))
+ return navi_it->title_prev_btn;
+ else if (!strcmp(part, "elm.swallow.next_btn"))
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
+
+ //specified parts
+ if (!part || !strcmp("default", part))
+ return navi_it->content;
+ else if (!strcmp(part, "prev_btn"))
+ return navi_it->title_prev_btn;
+ else if (!strcmp(part, "next_btn"))
++>>>>>>> remotes/origin/upstream
return navi_it->title_next_btn;
else if (!strcmp(part, "icon"))
return navi_it->title_icon;
//common parts
++<<<<<<< HEAD
+ EINA_INLIST_FOREACH(navi_it->content_list, pair)
+ {
+ if (!strcmp(part, pair->part))
+ return pair->content;
+ }
+ return NULL;
++=======
+ return elm_object_part_content_get(VIEW(navi_it), part);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
_item_content_unset_hook(Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+
+ //specified parts
+ if (!part || !strcmp("elm.swallow.content", part))
+ return _item_content_unset(navi_it);
+ else if (!strcmp(part, "elm.swallow.prev_btn"))
+ return _title_prev_btn_unset(navi_it);
+ else if (!strcmp(part, "elm.swallow.next_btn"))
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
+
+ //specified parts
+ if (!part || !strcmp("default", part))
+ return _item_content_unset(navi_it);
+ else if (!strcmp(part, "prev_btn"))
+ return _title_prev_btn_unset(navi_it);
+ else if (!strcmp(part, "next_btn"))
++>>>>>>> remotes/origin/upstream
return _title_next_btn_unset(navi_it);
else if (!strcmp(part, "icon"))
return _title_icon_unset(navi_it);
const char *emission,
const char *source)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+ edje_object_signal_emit(VIEW(navi_it), emission, source);
++=======
+ elm_object_signal_emit(VIEW(it), emission, source);
++>>>>>>> remotes/origin/upstream
}
static void
_item_title_visible_update(Elm_Naviframe_Item *navi_it)
{
if (navi_it->title_visible)
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(navi_it), "elm,state,title,show", "elm");
+ else
+ edje_object_signal_emit(VIEW(navi_it), "elm,state,title,hide", "elm");
++=======
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,title,show", "elm");
+ else
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,title,hide", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
evas_object_move(VIEW(it), x, y);
evas_object_resize(VIEW(it), w, h);
++<<<<<<< HEAD
+ edje_object_size_min_calc(VIEW(it), &it->minw, &it->minh);
++=======
+ edje_object_size_min_calc(elm_layout_edje_get(VIEW(it)),
+ &it->minw,
+ &it->minh);
++>>>>>>> remotes/origin/upstream
if (it->minw > minw) minw = it->minw;
if (it->minh > minh) minh = it->minh;
}
btn = elm_button_add(obj);
if (!btn) return NULL;
evas_object_smart_callback_add(btn, "clicked", _back_btn_clicked, obj);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "naviframe/back_btn/%s", elm_widget_style_get(obj));
++=======
+ snprintf(buf, sizeof(buf), "naviframe/back_btn/%s",
+ elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
elm_object_style_set(btn, buf);
return btn;
}
++<<<<<<< HEAD
++=======
+ static void _text_set_hook(Evas_Object *obj,
+ const char *part,
+ const char *label)
+ {
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return;
+ elm_object_item_part_text_set(it, part, label);
+ }
+
+ static const char *_text_get_hook(const Evas_Object *obj, const char *part)
+ {
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return NULL;
+ return elm_object_item_part_text_get(it, part);
+ }
+
+ static void
+ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
+ {
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return;
+ elm_object_item_part_content_set(it, part, content);
+ }
+
+ static Evas_Object *
+ _content_unset_hook(Evas_Object *obj, const char *part)
+ {
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return NULL;
+ return elm_object_item_part_content_unset(it, part);
+ }
+
+ static Evas_Object *
+ _content_get_hook(const Evas_Object *obj, const char *part)
+ {
+ Elm_Object_Item *it = elm_naviframe_top_item_get(obj);
+ if (!it) return NULL;
+ return elm_object_item_part_content_get(it, part);
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_title_content_del(void *data,
Evas *e __UNUSED__,
Elm_Naviframe_Content_Item_Pair *pair = data;
Elm_Naviframe_Item *it = pair->it;
snprintf(buf, sizeof(buf), "elm,state,%s,hide", pair->part);
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), buf, "elm");
++=======
+ elm_object_signal_emit(VIEW(it), buf, "elm");
++>>>>>>> remotes/origin/upstream
it->content_list = eina_inlist_remove(it->content_list,
EINA_INLIST_GET(pair));
eina_stringshare_del(pair->part);
Elm_Naviframe_Item *it = data;
it->back_btn = EINA_FALSE;
it->title_prev_btn = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
++=======
+ elm_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
Elm_Naviframe_Item *it = data;
it->title_next_btn = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
++=======
+ elm_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
Elm_Naviframe_Item *it = data;
it->title_icon = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
++=======
+ elm_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
Elm_Naviframe_Item *it = data;
it->content = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
++=======
+ elm_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
char buf[1024];
Elm_Naviframe_Content_Item_Pair *pair = NULL;
++<<<<<<< HEAD
++=======
+ Evas_Object *prev_content = NULL;
++>>>>>>> remotes/origin/upstream
EINA_INLIST_FOREACH(it->content_list, pair)
if (!strcmp(part, pair->part)) break;
if (pair)
{
++<<<<<<< HEAD
+ if (pair->content != content)
+ {
+ if (content)
+ {
+ evas_object_event_callback_del(pair->content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ evas_object_event_callback_del(pair->content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
+ }
+ evas_object_del(pair->content);
++=======
+ prev_content = elm_object_part_content_get(VIEW(it), part);
+ if (prev_content != content)
+ {
+ if (content)
+ {
+ evas_object_event_callback_del(prev_content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+ elm_object_signal_emit(VIEW(it), buf, "elm");
+ }
+ evas_object_del(prev_content);
++>>>>>>> remotes/origin/upstream
if (!content) return;
}
}
it->content_list = eina_inlist_append(it->content_list,
EINA_INLIST_GET(pair));
}
++<<<<<<< HEAD
+ if (pair->content != content)
+ {
+ elm_widget_sub_object_add(WIDGET(it), content);
++=======
+ if (prev_content != content)
+ {
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(content,
EVAS_CALLBACK_DEL,
_title_content_del,
pair);
++<<<<<<< HEAD
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ WIDGET(it));
+ }
+ edje_object_part_swallow(VIEW(it), part, content);
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
+ pair->content = content;
++=======
+ }
+ elm_object_part_content_set(VIEW(it), part, content);
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ elm_object_signal_emit(VIEW(it), buf, "elm");
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
}
Eina_Bool back_btn)
{
if (it->title_prev_btn == btn) return;
++<<<<<<< HEAD
+
+ if (it->title_prev_btn)
+ evas_object_del(it->title_prev_btn);
+
+ it->title_prev_btn = btn;
+ if (!btn) return;
+
+ elm_widget_sub_object_add(WIDGET(it), btn);
++=======
+ if (it->title_prev_btn) evas_object_del(it->title_prev_btn);
+ it->title_prev_btn = btn;
+ if (!btn) return;
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(btn,
EVAS_CALLBACK_DEL,
_title_prev_btn_del,
it);
++<<<<<<< HEAD
+ evas_object_event_callback_add(btn,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ WIDGET(it));
+ edje_object_part_swallow(VIEW(it), "elm.swallow.prev_btn", btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,prev_btn,show", "elm");
++=======
+ elm_object_part_content_set(VIEW(it), "elm.swallow.prev_btn", btn);
+ elm_object_signal_emit(VIEW(it), "elm,state,prev_btn,show", "elm");
++>>>>>>> remotes/origin/upstream
it->back_btn = back_btn;
_sizing_eval(WIDGET(it));
_title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn)
{
if (it->title_next_btn == btn) return;
++<<<<<<< HEAD
+
+ if (it->title_next_btn)
+ evas_object_del(it->title_next_btn);
+
+ it->title_next_btn = btn;
+ if (!btn) return;
+
+ elm_widget_sub_object_add(WIDGET(it), btn);
++=======
+ if (it->title_next_btn) evas_object_del(it->title_next_btn);
+ it->title_next_btn = btn;
+ if (!btn) return;
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(btn,
EVAS_CALLBACK_DEL,
_title_next_btn_del,
it);
++<<<<<<< HEAD
+ evas_object_event_callback_add(btn,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ WIDGET(it));
+ edje_object_part_swallow(VIEW(it), "elm.swallow.next_btn", btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,next_btn,show", "elm");
++=======
+ elm_object_part_content_set(VIEW(it), "elm.swallow.next_btn", btn);
+ elm_object_signal_emit(VIEW(it), "elm,state,next_btn,show", "elm");
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
}
_title_icon_set(Elm_Naviframe_Item *it, Evas_Object *icon)
{
if (it->title_icon == icon) return;
++<<<<<<< HEAD
+
+ if (it->title_icon)
+ evas_object_del(it->title_icon);
+
+ it->title_icon = icon;
+ if (!icon) return;
+
+ elm_widget_sub_object_add(WIDGET(it), icon);
++=======
+ if (it->title_icon) evas_object_del(it->title_icon);
+ it->title_icon = icon;
+ if (!icon) return;
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(icon,
EVAS_CALLBACK_DEL,
_title_icon_del,
it);
++<<<<<<< HEAD
+ evas_object_event_callback_add(icon,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ WIDGET(it));
+ edje_object_part_swallow(VIEW(it), "elm.swallow.icon", icon);
+ edje_object_signal_emit(VIEW(it), "elm,state,icon,show", "elm");
++=======
+ elm_object_part_content_set(VIEW(it), "elm.swallow.icon", icon);
+ elm_object_signal_emit(VIEW(it), "elm,state,icon,show", "elm");
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
}
Evas_Object *content = it->content;
if (!content) return NULL;
++<<<<<<< HEAD
+ elm_widget_sub_object_del(WIDGET(it), content);
+ edje_object_part_unswallow(VIEW(it), content);
+ edje_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _item_content_del);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
++=======
+ elm_object_part_content_unset(VIEW(it), "elm.swallow.content");
+ elm_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _item_content_del);
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
it->content = NULL;
Evas_Object *content = it->title_prev_btn;
if (!content) return NULL;
++<<<<<<< HEAD
+ elm_widget_sub_object_del(WIDGET(it), content);
+ edje_object_part_unswallow(VIEW(it), content);
+ edje_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_prev_btn_del);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
++=======
+ elm_object_part_content_unset(VIEW(it), "elm.swallow.prev_btn");
+ elm_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_prev_btn_del);
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
it->title_prev_btn = NULL;
Evas_Object *content = it->title_next_btn;
if (!content) return NULL;
++<<<<<<< HEAD
+ elm_widget_sub_object_del(WIDGET(it), content);
+ edje_object_part_unswallow(VIEW(it), content);
+ edje_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_next_btn_del);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
++=======
+ elm_object_part_content_unset(VIEW(it), "elm.swallow.next_btn");
+ elm_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_next_btn_del);
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
it->title_next_btn = NULL;
Evas_Object *content = it->title_icon;
if (!content) return NULL;
++<<<<<<< HEAD
+ elm_widget_sub_object_del(WIDGET(it), content);
+ edje_object_part_unswallow(VIEW(it), content);
+ edje_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_icon_del);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
++=======
+ elm_object_part_content_unset(VIEW(it), "elm.swallow.icon");
+ elm_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_icon_del);
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
it->title_icon = NULL;
{
if (!strcmp(part, pair->part))
{
++<<<<<<< HEAD
+ content = pair->content;
++=======
+ content = elm_object_part_content_get(VIEW(it), part);
++>>>>>>> remotes/origin/upstream
eina_stringshare_del(pair->part);
it->content_list = eina_inlist_remove(it->content_list,
EINA_INLIST_GET(pair));
if (!content) return NULL;
++<<<<<<< HEAD
+ elm_widget_sub_object_del(WIDGET(it), content);
+ edje_object_part_unswallow(VIEW(it), content);
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
++=======
+ elm_object_part_content_unset(VIEW(it), part);
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+ elm_object_signal_emit(VIEW(it), buf, "elm");
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(it));
return content;
Widget_Data *wd;
Elm_Naviframe_Content_Item_Pair *content_pair;
Elm_Naviframe_Text_Item_Pair *text_pair;
++<<<<<<< HEAD
++=======
+ Evas_Object *content;
++>>>>>>> remotes/origin/upstream
if (!it) return;
wd = elm_widget_data_get(WIDGET(it));
if (!wd) return;
++<<<<<<< HEAD
+ if (it->title_prev_btn)
+ evas_object_del(it->title_prev_btn);
+ if (it->title_next_btn)
+ evas_object_del(it->title_next_btn);
+ if (it->title_icon)
+ evas_object_del(it->title_icon);
+ if ((it->content) && (!wd->preserve))
+ evas_object_del(it->content);
+
+ while (it->content_list)
+ {
+ content_pair = EINA_INLIST_CONTAINER_GET(it->content_list,
+ Elm_Naviframe_Content_Item_Pair);
+ evas_object_event_callback_del(content_pair->content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ evas_object_event_callback_del(content_pair->content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints);
+ evas_object_del(content_pair->content);
++=======
+ while (it->content_list)
+ {
+ content_pair =
+ EINA_INLIST_CONTAINER_GET(it->content_list,
+ Elm_Naviframe_Content_Item_Pair);
+ content = elm_object_part_content_get(VIEW(it), content_pair->part);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
++>>>>>>> remotes/origin/upstream
eina_stringshare_del(content_pair->part);
it->content_list = eina_inlist_remove(it->content_list,
it->content_list);
text_pair = EINA_INLIST_CONTAINER_GET(it->text_list,
Elm_Naviframe_Text_Item_Pair);
eina_stringshare_del(text_pair->part);
++<<<<<<< HEAD
+ eina_stringshare_del(text_pair->text);
++=======
++>>>>>>> remotes/origin/upstream
it->text_list = eina_inlist_remove(it->text_list,
it->text_list);
free(text_pair);
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Naviframe_Item *navi_it;
+ Widget_Data *wd;
+
+ navi_it =(Elm_Naviframe_Item *) it;
++=======
+ Elm_Naviframe_Item *navi_it;
+ Widget_Data *wd;
+
+ navi_it =(Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(navi_it));
if (!wd) return EINA_FALSE;
if (!wd) return;
evas_object_hide(VIEW(it));
++<<<<<<< HEAD
+ evas_object_smart_callback_call(WIDGET(it),
+ SIG_PUSH_FINISHED,
+ data);
+ if (wd->freeze_events)
+ evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
++=======
+ if (wd->freeze_events)
+ evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
+
+ elm_widget_item_smart_callback_call(it,
+ SIG_ITEM_HIDE_FINISHED,
+ NULL);
++>>>>>>> remotes/origin/upstream
}
static void
{
Elm_Naviframe_Item *it = data;
if (!it) return;
++<<<<<<< HEAD
+ evas_object_smart_callback_call(WIDGET(it),
+ SIG_POP_FINISHED,
+ data);
++=======
++>>>>>>> remotes/origin/upstream
_item_del(data);
elm_widget_item_free(data);
}
{
if (navi_it->content == content) return;
if (navi_it->content) evas_object_del(navi_it->content);
++<<<<<<< HEAD
+ elm_widget_sub_object_add(WIDGET(navi_it), content);
+ edje_object_part_swallow(VIEW(navi_it),
+ "elm.swallow.content",
+ content);
+ if (content)
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,content,show",
+ "elm");
+ else
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,content,hide",
+ "elm");
++=======
+ elm_object_part_content_set(VIEW(navi_it), "elm.swallow.content", content);
+
+ if (content)
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,content,show", "elm");
+ else
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,content,hide", "elm");
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(content,
EVAS_CALLBACK_DEL,
_item_content_del,
navi_it);
++<<<<<<< HEAD
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ WIDGET(navi_it));
++=======
++>>>>>>> remotes/origin/upstream
navi_it->content = content;
_sizing_eval(WIDGET(navi_it));
}
snprintf(buf, sizeof(buf), "item/%s", item_style);
eina_stringshare_replace(&navi_it->style, item_style);
}
++<<<<<<< HEAD
+ _elm_theme_object_set(WIDGET(navi_it),
+ VIEW(navi_it),
+ "naviframe",
+ buf,
+ elm_widget_style_get(WIDGET(navi_it)));
+ //recover item
+ EINA_INLIST_FOREACH(navi_it->text_list, text_pair)
+ _item_text_set_hook((Elm_Object_Item *) navi_it,
+ text_pair->part,
+ text_pair->text);
+
+ EINA_INLIST_FOREACH(navi_it->content_list, content_pair)
+ _item_content_set_hook((Elm_Object_Item *) navi_it,
+ content_pair->part,
+ content_pair->content);
+ //content
+ if (navi_it->content)
+ {
+ edje_object_part_swallow(VIEW(navi_it),
+ "elm.swallow.content",
+ navi_it->content);
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,content,show",
+ "elm");
+ }
+
+ //prev button
+ if (navi_it->title_prev_btn)
+ {
+ edje_object_part_swallow(VIEW(navi_it),
+ "elm.swallow.prev_btn",
+ navi_it->title_prev_btn);
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,prev_btn,show",
+ "elm");
+ }
+
+ //next button
+ if (navi_it->title_next_btn)
+ {
+ edje_object_part_swallow(VIEW(navi_it),
+ "elm.swallow.next_btn",
+ navi_it->title_next_btn);
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,next_btn,show",
+ "elm");
+ }
+
+ navi_it->title_visible = EINA_TRUE;
++=======
+ elm_layout_theme_set(VIEW(navi_it),
+ "naviframe",
+ buf,
+ elm_widget_style_get(WIDGET(navi_it)));
+ //recover item
+ EINA_INLIST_FOREACH(navi_it->text_list, text_pair)
+ _item_text_set_hook((Elm_Object_Item *) navi_it,
+ text_pair->part,
+ elm_object_part_text_get(VIEW(navi_it),
+ text_pair->part));
+
+ EINA_INLIST_FOREACH(navi_it->content_list, content_pair)
+ _item_content_set_hook((Elm_Object_Item *) navi_it,
+ content_pair->part,
+ elm_object_part_content_get(VIEW(navi_it),
+ content_pair->part));
+ //content
+ if (navi_it->content)
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,content,show", "elm");
+
+ //prev button
+ if (navi_it->title_prev_btn)
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,prev_btn,show", "elm");
+
+ //next button
+ if (navi_it->title_next_btn)
+ elm_object_signal_emit(VIEW(navi_it), "elm,state,next_btn,show", "elm");
+
+ // why does this forcibly enable title? isnt that separate to style?
+ // navi_it->title_visible = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
_sizing_eval(WIDGET(navi_it));
wd = elm_widget_data_get(WIDGET(navi_it));
elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
//item base layout
++<<<<<<< HEAD
+ VIEW(it) = edje_object_add(evas_object_evas_get(obj));
+ edje_object_mirrored_set(VIEW(it), elm_widget_mirrored_get(obj));
+ evas_object_smart_member_add(VIEW(it), wd->base);
+ elm_widget_sub_object_add(obj, VIEW(it));
+ edje_object_signal_callback_add(VIEW(it),
+ "elm,action,show,finished",
+ "",
+ _show_finished, it);
+ edje_object_signal_callback_add(VIEW(it),
+ "elm,action,pushed,finished",
+ "",
+ _pushed_finished, it);
+ edje_object_signal_callback_add(VIEW(it),
+ "elm,action,popped,finished",
+ "",
+ _popped_finished, it);
+ edje_object_signal_callback_add(VIEW(it),
++=======
+ VIEW(it) = elm_layout_add(obj);
+ evas_object_smart_member_add(VIEW(it), wd->base);
+
+ evas_object_event_callback_add(VIEW(it),
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ obj);
+ elm_object_signal_callback_add(VIEW(it),
+ "elm,action,show,finished",
+ "",
+ _show_finished, it);
+ elm_object_signal_callback_add(VIEW(it),
+ "elm,action,pushed,finished",
+ "",
+ _pushed_finished, it);
+ elm_object_signal_callback_add(VIEW(it),
+ "elm,action,popped,finished",
+ "",
+ _popped_finished, it);
+ elm_object_signal_callback_add(VIEW(it),
++>>>>>>> remotes/origin/upstream
"elm,action,title,clicked",
"",
_title_clicked, it);
_item_style_set(it, item_style);
++<<<<<<< HEAD
+ _item_text_set_hook((Elm_Object_Item *) it, "elm.text.title", title_label);
++=======
+ _item_text_set_hook((Elm_Object_Item *)it, "elm.text.title", title_label);
++>>>>>>> remotes/origin/upstream
//title buttons
if ((!prev_btn) && wd->auto_pushed && eina_inlist_count(wd->stack))
return it;
}
++<<<<<<< HEAD
++=======
+ static Eina_Bool
+ _focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd || !wd->stack) return EINA_FALSE;
+ return elm_widget_focus_next_get(VIEW(elm_naviframe_top_item_get(obj)),
+ dir,
+ next);
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_naviframe_add(Evas_Object *parent)
{
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
++<<<<<<< HEAD
+ elm_widget_signal_emit_hook_set(obj, _emit_hook);
+
+ //base
+ wd->base = edje_object_add(e);
+ edje_object_mirrored_set(wd->base, elm_widget_mirrored_get(obj));
+ elm_widget_resize_object_set(obj, wd->base);
+ _elm_theme_object_set(obj, wd->base, "naviframe", "base", "default");
++=======
+ elm_widget_text_set_hook_set(obj, _text_set_hook);
+ elm_widget_text_get_hook_set(obj, _text_get_hook);
+ elm_widget_content_set_hook_set(obj, _content_set_hook);
+ elm_widget_content_get_hook_set(obj, _content_get_hook);
+ elm_widget_content_unset_hook_set(obj, _content_unset_hook);
+ elm_widget_signal_emit_hook_set(obj, _emit_hook);
+ elm_widget_can_focus_set(obj, EINA_FALSE);
+ elm_widget_focus_next_hook_set(obj, _focus_next_hook);
+
+ //base
+ //FIXME: Is this base layout really needed?
+ wd->base = elm_layout_add(parent);
+ evas_object_event_callback_add(wd->base,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ obj);
+ elm_widget_resize_object_set(obj, wd->base);
+ elm_layout_theme_set(wd->base, "naviframe", "base", "default");
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
}
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(prev_it),
+ "elm,state,cur,pushed",
+ "elm");
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,new,pushed",
+ "elm");
+ edje_object_message_signal_process(VIEW(prev_it));
+ edje_object_message_signal_process(VIEW(it));
+ }
+ wd->stack = eina_inlist_append(wd->stack, EINA_INLIST_GET(it));
+ _sizing_eval(obj);
+ return (Elm_Object_Item *) it;
+}
+
+EAPI Elm_Object_Item *
+elm_naviframe_item_insert_before(Elm_Object_Item *before,
++=======
+ elm_object_signal_emit(VIEW(prev_it), "elm,state,cur,pushed", "elm");
+ elm_object_signal_emit(VIEW(it), "elm,state,new,pushed", "elm");
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+ elm_widget_tree_unfocusable_set(it->content, EINA_TRUE);
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
+ }
+ wd->stack = eina_inlist_append(wd->stack, EINA_INLIST_GET(it));
+ _sizing_eval(obj);
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_naviframe_item_insert_before(Evas_Object *obj,
+ Elm_Object_Item *before,
++>>>>>>> remotes/origin/upstream
const char *title_label,
Evas_Object *prev_btn,
Evas_Object *next_btn,
Evas_Object *content,
const char *item_style)
{
++<<<<<<< HEAD
++=======
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++>>>>>>> remotes/origin/upstream
ELM_OBJ_ITEM_CHECK_OR_RETURN(before, NULL);
Elm_Naviframe_Item *it;
Widget_Data *wd;
++<<<<<<< HEAD
+ wd = elm_widget_data_get(WIDGET(before));
++=======
+ wd = elm_widget_data_get(obj);
++>>>>>>> remotes/origin/upstream
if (!wd) return NULL;
it = _item_new(WIDGET(before), title_label, prev_btn, next_btn, content,
if (!it) return NULL;
wd->stack =
++<<<<<<< HEAD
+ eina_inlist_prepend_relative(wd->stack, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(((Elm_Naviframe_Item *) before)));
+ _sizing_eval(WIDGET(before));
+ return (Elm_Object_Item *) it;
+}
+
+EAPI Elm_Object_Item *
+elm_naviframe_item_insert_after(Elm_Object_Item *after,
++=======
+ eina_inlist_prepend_relative(wd->stack,
+ EINA_INLIST_GET(it),
+ EINA_INLIST_GET(((Elm_Naviframe_Item *) before)));
+ _sizing_eval(WIDGET(before));
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_naviframe_item_insert_after(Evas_Object *obj,
+ Elm_Object_Item *after,
++>>>>>>> remotes/origin/upstream
const char *title_label,
Evas_Object *prev_btn,
Evas_Object *next_btn,
Evas_Object *content,
const char *item_style)
{
++<<<<<<< HEAD
++=======
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++>>>>>>> remotes/origin/upstream
ELM_OBJ_ITEM_CHECK_OR_RETURN(after, NULL);
Elm_Naviframe_Item *it;
Widget_Data *wd;
++<<<<<<< HEAD
+ wd = elm_widget_data_get(WIDGET(after));
++=======
+ wd = elm_widget_data_get(obj);
++>>>>>>> remotes/origin/upstream
if (!wd) return NULL;
it = _item_new(WIDGET(after), title_label, prev_btn, next_btn, content,
evas_object_show(VIEW(it));
}
wd->stack =
++<<<<<<< HEAD
+ eina_inlist_append_relative(wd->stack, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(((Elm_Naviframe_Item *) after)));
+ _sizing_eval(WIDGET(after));
+ return (Elm_Object_Item *) it;
++=======
+ eina_inlist_append_relative(wd->stack,
+ EINA_INLIST_GET(it),
+ EINA_INLIST_GET(((Elm_Naviframe_Item *) after)));
+ _sizing_eval(WIDGET(after));
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
it = (Elm_Naviframe_Item *) elm_naviframe_top_item_get(obj);
if (!it) return NULL;
++<<<<<<< HEAD
+ elm_widget_tree_unfocusable_set(it->content, EINA_TRUE);
++=======
++>>>>>>> remotes/origin/upstream
if (wd->preserve)
content = it->content;
evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
}
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
+ evas_object_show(VIEW(prev_it));
+ evas_object_raise(VIEW(prev_it));
+ edje_object_signal_emit(VIEW(prev_it),
+ "elm,state,prev,popped",
+ "elm");
+ edje_object_message_signal_process(VIEW(it));
+ edje_object_message_signal_process(VIEW(prev_it));
++=======
+ elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
+ evas_object_show(VIEW(prev_it));
+ evas_object_raise(VIEW(prev_it));
+ elm_object_signal_emit(VIEW(prev_it),
+ "elm,state,prev,popped",
+ "elm");
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+ elm_widget_item_smart_callback_call(prev_it,
+ SIG_ITEM_SHOW_BEGIN,
+ NULL);
++>>>>>>> remotes/origin/upstream
}
else
{
Widget_Data *wd;
Eina_Inlist *l, *prev_l;
++<<<<<<< HEAD
+ navi_it = (Elm_Naviframe_Item *) it;
++=======
+ navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(navi_it));
if (!wd) return;
while(l)
{
if (EINA_INLIST_CONTAINER_GET(l, Elm_Naviframe_Item) ==
++<<<<<<< HEAD
+ ((Elm_Naviframe_Item *) it)) break;
++=======
+ ((Elm_Naviframe_Item *)it)) break;
++>>>>>>> remotes/origin/upstream
prev_l = l->prev;
wd->stack = eina_inlist_remove(wd->stack, l);
_item_del(EINA_INLIST_CONTAINER_GET(l, Elm_Naviframe_Item));
Elm_Naviframe_Item *prev_it;
Widget_Data *wd;
++<<<<<<< HEAD
+ navi_it = (Elm_Naviframe_Item *) it;
++=======
+ navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(navi_it->base.widget);
if (!wd) return;
if (it == elm_naviframe_top_item_get(navi_it->base.widget)) return;
++<<<<<<< HEAD
+ wd->stack = eina_inlist_demote(wd->stack, EINA_INLIST_GET(navi_it));
+ prev_it = EINA_INLIST_CONTAINER_GET(wd->stack->last->prev,
+ Elm_Naviframe_Item);
++=======
+ elm_widget_tree_unfocusable_set(navi_it->content, EINA_FALSE);
+ wd->stack = eina_inlist_demote(wd->stack, EINA_INLIST_GET(navi_it));
+ prev_it = EINA_INLIST_CONTAINER_GET(wd->stack->last->prev,
+ Elm_Naviframe_Item);
+ elm_widget_tree_unfocusable_set(prev_it->content, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
if (wd->freeze_events)
{
evas_object_freeze_events_set(VIEW(it), EINA_TRUE);
evas_object_freeze_events_set(VIEW(prev_it), EINA_TRUE);
}
++<<<<<<< HEAD
+ edje_object_signal_emit(VIEW(prev_it),
+ "elm,state,cur,pushed",
+ "elm");
+ evas_object_show(VIEW(navi_it));
+ evas_object_raise(VIEW(navi_it));
+ edje_object_signal_emit(VIEW(navi_it),
+ "elm,state,new,pushed",
+ "elm");
+ edje_object_message_signal_process(VIEW(prev_it));
+ edje_object_message_signal_process(VIEW(navi_it));
+}
+
++=======
+ elm_object_signal_emit(VIEW(prev_it),
+ "elm,state,cur,pushed",
+ "elm");
+ evas_object_show(VIEW(navi_it));
+ evas_object_raise(VIEW(navi_it));
+ elm_object_signal_emit(VIEW(navi_it),
+ "elm,state,new,pushed",
+ "elm");
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+ edje_object_message_signal_process(elm_layout_edje_get(VIEW(navi_it)));
+ }
+
+ EAPI void
+ elm_naviframe_item_simple_promote(Evas_Object *obj, Evas_Object *content)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ Elm_Naviframe_Item *itr;
+ EINA_INLIST_FOREACH(wd->stack, itr)
+ {
+ if (elm_object_item_content_get((Elm_Object_Item *)itr) == content)
+ {
+ elm_naviframe_item_promote((Elm_Object_Item *)itr);
+ break;
+ }
+ }
+ }
+
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_naviframe_item_del(Elm_Object_Item *it)
{
elm_naviframe_item_style_set(Elm_Object_Item *it, const char *item_style)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
+
+ //Return if new style is exsiting one.
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
+
++>>>>>>> remotes/origin/upstream
if (item_style)
if (!strcmp(item_style, navi_it->style)) return;
elm_naviframe_item_style_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
return navi_it->style;
}
elm_naviframe_item_title_visible_set(Elm_Object_Item *it, Eina_Bool visible)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
visible = !!visible;
if (navi_it->title_visible == visible) return;
elm_naviframe_item_title_visible_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *) it;
++=======
+ Elm_Naviframe_Item *navi_it = (Elm_Naviframe_Item *)it;
++>>>>>>> remotes/origin/upstream
return navi_it->title_visible;
}
return wd->auto_pushed;
}
++<<<<<<< HEAD
+EAPI Eina_Inlist *
++=======
+ EAPI Eina_List *
++>>>>>>> remotes/origin/upstream
elm_naviframe_items_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
++<<<<<<< HEAD
+ return wd->stack;
++=======
+ Eina_List *ret = NULL;
+ Elm_Naviframe_Item *itr;
+ EINA_INLIST_FOREACH(wd->stack, itr)
+ ret = eina_list_append(ret, itr);
+ return ret;
++>>>>>>> remotes/origin/upstream
}
EAPI void
*
* Naviframe provides functions to switch different pages with stack
* mechanism. It means if one page(item) needs to be changed to the new one,
++<<<<<<< HEAD
+ * then naviframe would push the new page to it's internal stack. Of course,
++=======
+ * then naviframe would push the new page to its internal stack. Of course,
++>>>>>>> remotes/origin/upstream
* it can be back to the previous page by popping the top page. Naviframe
* provides some transition effect while the pages are switching (same as
* pager).
* Since each item could keep the different styles, users could keep the
* same look & feel for the pages or different styles for the items in it's
* application.
++<<<<<<< HEAD
+ *
+ * Signals that you can add callback for are:
+ * @li "transition,finished" - When the transition is finished in changing
+ * the item
+ * @li "title,clicked" - User clicked title area
+ *
+ * Default contents parts of the naviframe items that you can use for are:
+ * @li "default" - A main content of the page
++=======
+ *
+ * Default content parts of the naviframe that you can use content hooks for
+ * are:
+ * @li "default" - The main content of the current page
+ * @li "icon" - An icon in the title area of the current page
+ * @li "prev_btn" - A button of the current page to go to the previous page
+ * @li "next_btn" - A button of the current page to go to the next page
+ *
+ * Default text parts of the naviframe that you can use for are:
+ * @li "default" - Title label in the title area of the current page
+ * @li "subtitle" - Sub-title label in the title area of the current page
+ *
+ * Signals that you can add callbacks for are:
+ * @li "transition,finished" - When the transition is finished in changing the
+ * item
+ * @li "title,clicked" - User clicked title area
+ *
+ * Item Signals that you can add callbacks for are:
+ * @li "show,begin" - When the item is started to be top item.
+ * @li "hide,finished" - When a new top item is finished to push onto the
+ * item.
+ *
+ * Default content parts of the naviframe items that you can use content hooks
+ * for are:
+ * @li "default" - The main content of the page
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon in the title area
* @li "prev_btn" - A button to go to the previous page
* @li "next_btn" - A button to go to the next page
*
* Supported elm_object common APIs.
* @li elm_object_signal_emit
++<<<<<<< HEAD
++=======
+ * @li elm_object_part_text_set
+ * @li elm_object_part_text_get
+ * @li elm_object_part_content_set
+ * @li elm_object_part_content_get
+ * @li elm_object_part_content_unset
++>>>>>>> remotes/origin/upstream
*
* Supported elm_object_item common APIs.
* @li elm_object_item_part_text_set
* @li elm_object_item_signal_emit
*/
++<<<<<<< HEAD
+ //Available commonly
+ #define ELM_NAVIFRAME_ITEM_CONTENT "elm.swallow.content"
+ #define ELM_NAVIFRAME_ITEM_ICON "elm.swallow.icon"
+ #define ELM_NAVIFRAME_ITEM_OPTIONHEADER "elm.swallow.optionheader"
+ #define ELM_NAVIFRAME_ITEM_TITLE_LABEL "elm.text.title"
+ #define ELM_NAVIFRAME_ITEM_PREV_BTN "elm.swallow.prev_btn"
+ #define ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN "elm.swallow.left_btn"
+ #define ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN "elm.swallow.right_btn"
+ #define ELM_NAVIFRAME_ITEM_TITLE_MORE_BTN "elm.swallow.more_btn"
+ #define ELM_NAVIFRAME_ITEM_CONTROLBAR "elm.swallow.controlbar"
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE "elm,state,optionheader,close", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN "elm,state,optionheader,open", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE "elm,state,optionheader,instant_close", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN "elm,state,optionheader,instant_open", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_CLOSE "elm,state,controlbar,close", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_OPEN "elm,state,controlbar,open", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_INSTANT_CLOSE "elm,state,controlbar,instant_close", ""
+ #define ELM_NAVIFRAME_ITEM_SIGNAL_CONTROLBAR_INSTANT_OPEN "elm,state,controlbar,instant_open", ""
+
+ //Available only in a style - "2line"
+ #define ELM_NAVIFRAME_ITEM_OPTIONHEADER2 "elm.swallow.optionheader2"
+
+ //Available only in a style - "segment"
+ #define ELM_NAVIFRAME_ITEM_SEGMENT2 "elm.swallow.segment2"
+ #define ELM_NAVIFRAME_ITEM_SEGMENT3 "elm.swallow.segment3"
+
++=======
++>>>>>>> remotes/origin/upstream
/**
* @addtogroup Naviframe
* @{
/**
* @brief Insert a new item into the naviframe before item @p before.
*
++<<<<<<< HEAD
++=======
+ * @param obj The naviframe object
++>>>>>>> remotes/origin/upstream
* @param before The naviframe item to insert before.
* @param title_label The label in the title area. The name of the title
* label part is "elm.text.title"
*
* @ingroup Naviframe
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_naviframe_item_insert_before(Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
++=======
+ EAPI Elm_Object_Item *elm_naviframe_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
++>>>>>>> remotes/origin/upstream
/**
* @brief Insert a new item into the naviframe after item @p after.
*
++<<<<<<< HEAD
++=======
+ * @param obj The naviframe object
++>>>>>>> remotes/origin/upstream
* @param after The naviframe item to insert after.
* @param title_label The label in the title area. The name of the title
* label part is "elm.text.title"
*
* @ingroup Naviframe
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_naviframe_item_insert_after(Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
++=======
+ EAPI Elm_Object_Item *elm_naviframe_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *title_label, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *content, const char *item_style);
++>>>>>>> remotes/origin/upstream
/**
* @brief Pop an item that is on top of the stack
* @brief Get a list of all the naviframe items.
*
* @param obj The naviframe object
++<<<<<<< HEAD
+ * @return An Eina_Inlist* of naviframe items, #Elm_Object_Item,
+ * or @c NULL on failure.
+ *
+ * @ingroup Naviframe
+ */
+EAPI Eina_Inlist *elm_naviframe_items_get(const Evas_Object *obj);
++=======
+ * @return An Eina_List of naviframe items, #Elm_Object_Item,
+ * or @c NULL on failure.
+ * @note The returned list MUST be freed.
+ *
+ * @ingroup Naviframe
+ */
+ EAPI Eina_List *elm_naviframe_items_get(const Evas_Object *obj) EINA_MALLOC EINA_WARN_UNUSED_RESULT;
++>>>>>>> remotes/origin/upstream
/**
* @brief Set the event enabled when pushing/popping items
EAPI Eina_Bool elm_naviframe_event_enabled_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * @brief Simple version of item_push.
+ *
+ * @see elm_naviframe_item_push
+ */
+ static inline Elm_Object_Item *
+ elm_naviframe_item_simple_push(Evas_Object *obj, Evas_Object *content)
+ {
+ Elm_Object_Item *it;
+ it = elm_naviframe_item_push(obj, NULL, NULL, NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(it, EINA_FALSE);
+ return it;
+ }
+
+ /**
+ * @brief Simple version of item_promote.
+ *
+ * @see elm_naviframe_item_promote
+ */
+ EAPI void elm_naviframe_item_simple_promote(Evas_Object *obj, Evas_Object *content);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
}
if (!strcmp(ev->keyname, "space"))
{
++<<<<<<< HEAD
+ if (elm_video_is_playing(wd->video))
++=======
+ if (elm_video_is_playing_get(wd->video))
++>>>>>>> remotes/origin/upstream
elm_video_pause(wd->video);
else
elm_video_play(wd->video);
Eina_Bool seekable;
if (!wd) return ;
++<<<<<<< HEAD
+ seekable = elm_video_is_seekable(wd->video);
++=======
+ seekable = elm_video_is_seekable_get(wd->video);
++>>>>>>> remotes/origin/upstream
length = elm_video_play_length_get(wd->video);
pos = elm_video_play_position_get(wd->video);
evas_object_event_callback_add(wd->video, EVAS_CALLBACK_DEL,
_track_video, wd);
++<<<<<<< HEAD
+ seekable = elm_video_is_seekable(wd->video);
++=======
+ seekable = elm_video_is_seekable_get(wd->video);
++>>>>>>> remotes/origin/upstream
length = elm_video_play_length_get(wd->video);
pos = elm_video_play_position_get(wd->video);
elm_slider_min_max_set(wd->slider, 0, length);
elm_slider_value_set(wd->slider, pos);
++<<<<<<< HEAD
+ if (elm_video_is_playing(wd->video)) edje_object_signal_emit(wd->layout, "elm,player,play", "elm");
++=======
+ if (elm_video_is_playing_get(wd->video)) edje_object_signal_emit(wd->layout, "elm,player,play", "elm");
++>>>>>>> remotes/origin/upstream
else edje_object_signal_emit(wd->layout, "elm,player,pause", "elm");
evas_object_smart_callback_add(wd->emotion, "frame_decode",
{elm_entry_item_provider_remove(obj, func, data);}
EINA_DEPRECATED EAPI void
elm_scrolled_entry_text_filter_append(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data)
++<<<<<<< HEAD
+{elm_entry_text_filter_append(obj, func, data);}
+EINA_DEPRECATED EAPI void
+elm_scrolled_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data)
+{elm_entry_text_filter_prepend(obj, func, data);}
+EINA_DEPRECATED EAPI void
+elm_scrolled_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data)
+{elm_entry_text_filter_remove(obj, func, data);}
++=======
+ {elm_entry_markup_filter_append(obj, func, data);}
+ EINA_DEPRECATED EAPI void
+ elm_scrolled_entry_text_filter_prepend(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data)
+ {elm_entry_markup_filter_prepend(obj, func, data);}
+ EINA_DEPRECATED EAPI void
+ elm_scrolled_entry_text_filter_remove(Evas_Object *obj, void (*func) (void *data, Evas_Object *entry, char **text), void *data)
+ {elm_entry_markup_filter_remove(obj, func, data);}
++>>>>>>> remotes/origin/upstream
EINA_DEPRECATED EAPI void
elm_scrolled_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format)
{elm_entry_file_set(obj, file, format);}
{return elm_entry_autosave_get(obj);}
EINA_DEPRECATED EAPI void
elm_scrolled_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
++<<<<<<< HEAD
+{elm_entry_cnp_textonly_set(obj, textonly);}
+EINA_DEPRECATED EAPI Eina_Bool
+elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj)
+{return elm_entry_cnp_textonly_get(obj);}
++=======
+ {Elm_Cnp_Mode cnp_mode = ELM_CNP_MODE_MARKUP; if (textonly) cnp_mode = ELM_CNP_MODE_NO_IMAGE; elm_entry_cnp_mode_set(obj, cnp_mode);}
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj)
+ {return elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP;}
++>>>>>>> remotes/origin/upstream
}
EAPI char *
++<<<<<<< HEAD
+_elm_access_text_get(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item)
++=======
+ _elm_access_text_get(const Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item)
++>>>>>>> remotes/origin/upstream
{
Elm_Access_Item *ai;
Eina_List *l;
}
EAPI Elm_Access_Info *
++<<<<<<< HEAD
+_elm_access_object_get(Evas_Object *obj)
++=======
+ _elm_access_object_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
return evas_object_data_get(obj, "_elm_access");
}
EAPI Elm_Access_Info *
++<<<<<<< HEAD
+_elm_access_item_get(Elm_Widget_Item *it)
++=======
+ _elm_access_item_get(const Elm_Widget_Item *it)
++>>>>>>> remotes/origin/upstream
{
return it->access;
}
Ecore_Animator *button_animator;
double final_position;
Eina_Bool mouse_down : 1;
++<<<<<<< HEAD
+ Eina_Bool mouse_hold : 1;
++=======
++>>>>>>> remotes/origin/upstream
};
static const char *widtype = NULL;
if (!wd) return;
wd->mouse_down = EINA_FALSE;
++<<<<<<< HEAD
+ if (wd->mouse_hold == EINA_TRUE) return;
++=======
++>>>>>>> remotes/origin/upstream
edje_object_part_drag_value_get(wd->as, "elm.drag_button_base",
&position, NULL);
elm_widget_text_get_hook_set(obj, _elm_actionslider_label_get);
wd->mouse_down = EINA_FALSE;
++<<<<<<< HEAD
+ wd->mouse_hold = EINA_FALSE;
++=======
++>>>>>>> remotes/origin/upstream
wd->enabled_position = ELM_ACTIONSLIDER_ALL;
wd->as = edje_object_add(e);
return NULL;
}
++<<<<<<< HEAD
+
+EAPI void
+elm_actionslider_hold(Evas_Object *obj, Eina_Bool flag)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ wd->mouse_hold = flag;
+}
+
+// Deprecated APIs
+
+EAPI void
+elm_actionslider_label_set(Evas_Object *obj, Elm_Actionslider_Label_Pos pos, const char *label)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (pos == ELM_ACTIONSLIDER_LABEL_LEFT)
+ _elm_actionslider_label_set(obj, "left", label);
+ else if (pos == ELM_ACTIONSLIDER_LABEL_RIGHT)
+ _elm_actionslider_label_set(obj, "right", label);
+ else if (pos == ELM_ACTIONSLIDER_LABEL_CENTER)
+ _elm_actionslider_label_set(obj, "center", label);
+ else if (pos == ELM_ACTIONSLIDER_LABEL_BUTTON)
+ _elm_actionslider_label_set(obj, NULL, label);
+}
+
+EAPI void
+elm_actionslider_labels_get(const Evas_Object *obj, const char **left_label, const char **center_label, const char **right_label)
+{
+ if (left_label) *left_label= NULL;
+ if (center_label) *center_label= NULL;
+ if (right_label) *right_label= NULL;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (left_label) *left_label = _elm_actionslider_label_get(obj, "left");
+ if (center_label) *center_label = _elm_actionslider_label_get(obj, "center");
+ if (right_label) *right_label = _elm_actionslider_label_get(obj, "right");
+}
+
+EAPI void
+elm_actionslider_indicator_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_actionslider_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_actionslider_indicator_label_get(Evas_Object *obj)
+{
+ return _elm_actionslider_label_get(obj, NULL);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
* "right" or "center").
*
* Default text parts of the actionslider widget that you can use for are:
++<<<<<<< HEAD
+ * @li "indicator" - A indicator label of the actionslider
++=======
+ * @li "indicator" - An indicator label of the actionslider
++>>>>>>> remotes/origin/upstream
* @li "left" - A left label of the actionslider
* @li "right" - A right label of the actionslider
* @li "center" - A center label of the actionslider
EAPI Elm_Actionslider_Pos elm_actionslider_enabled_pos_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Hold actionslider object movement.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] flag Actionslider hold/release
+ * (EINA_TURE = hold/EIN_FALSE = release)
+ *
+ * @ingroup Actionslider
+ */
+EAPI void elm_actionslider_hold(Evas_Object *obj, Eina_Bool flag);
+
+
+/*
+ * Deprecated APIs
+ */
+
+typedef enum
+ {
+ ELM_ACTIONSLIDER_LABEL_LEFT,
+ ELM_ACTIONSLIDER_LABEL_RIGHT,
+ ELM_ACTIONSLIDER_LABEL_CENTER,
+ ELM_ACTIONSLIDER_LABEL_BUTTON
+ } Elm_Actionslider_Label_Pos;
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @}
*/
/**
* Provide information on the @b fallback application's binaries
++<<<<<<< HEAD
+ * directory, in scenarios where they get overriden by
++=======
+ * directory, in scenarios where they get overridden by
++>>>>>>> remotes/origin/upstream
* elm_app_info_set().
*
* @param dir The path to the default binaries directory (compile time
/**
* Provide information on the @b fallback application's libraries
++<<<<<<< HEAD
+ * directory, on scenarios where they get overriden by
++=======
+ * directory, on scenarios where they get overridden by
++>>>>>>> remotes/origin/upstream
* elm_app_info_set().
*
* @param dir The path to the default libraries directory (compile
/**
* Provide information on the @b fallback application's data
++<<<<<<< HEAD
+ * directory, on scenarios where they get overriden by
++=======
+ * directory, on scenarios where they get overridden by
++>>>>>>> remotes/origin/upstream
* elm_app_info_set().
*
* @param dir The path to the default data directory (compile time
/**
* Provide information on the @b fallback application's locale
++<<<<<<< HEAD
+ * directory, on scenarios where they get overriden by
++=======
+ * directory, on scenarios where they get overridden by
++>>>>>>> remotes/origin/upstream
* elm_app_info_set().
*
* @param dir The path to the default locale directory (compile time
return obj;
}
++<<<<<<< HEAD
+EAPI void
+elm_bg_file_set(Evas_Object *obj, const char *file, const char *group)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
++=======
+ EAPI Eina_Bool
+ elm_bg_file_set(Evas_Object *obj, const char *file, const char *group)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
const char *p;
wd->file = NULL;
eina_stringshare_del(wd->group);
wd->group = NULL;
++<<<<<<< HEAD
+ return;
++=======
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
eina_stringshare_replace(&wd->file, file);
eina_stringshare_replace(&wd->group, group);
edje_object_part_swallow(wd->base, "elm.swallow.background", wd->img);
elm_widget_sub_object_add(obj, wd->img);
_custom_resize(wd, NULL, NULL, NULL);
++<<<<<<< HEAD
++=======
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
Widget_Data *wd = elm_widget_data_get(obj);
if (file) *file = wd->file;
if (group) *group = wd->group;
++<<<<<<< HEAD
++=======
+
+ return;
++>>>>>>> remotes/origin/upstream
}
EAPI void
wd = elm_widget_data_get(obj);
wd->option = option;
_custom_resize(wd, NULL, NULL, NULL);
++<<<<<<< HEAD
++=======
+
+ return;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Bg_Option
elm_bg_option_get(const Evas_Object *obj)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
++=======
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_BG_OPTION_LAST;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
wd = elm_widget_data_get(obj);
_custom_resize(wd, NULL, NULL, NULL);
}
evas_object_color_set(wd->rect, r, g, b, 255);
++<<<<<<< HEAD
++=======
+
+ return;
++>>>>>>> remotes/origin/upstream
}
EAPI void
wd = elm_widget_data_get(obj);
evas_object_color_get(wd->rect, r, g, b, NULL);
++<<<<<<< HEAD
+}
+
+EAPI void
+elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay)
+{
+ _content_set_hook(obj, "overlay", overlay);
+}
+
+EAPI Evas_Object *
+elm_bg_overlay_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, "overlay");
+}
+
+EAPI Evas_Object *
+elm_bg_overlay_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, "overlay");
++=======
+
+ return;
++>>>>>>> remotes/origin/upstream
}
EAPI void
if (!wd->img) return;
if (!(((p = strrchr(wd->file, '.'))) && (!strcasecmp(p, ".edj"))))
evas_object_image_load_size_set(wd->img, w, h);
++<<<<<<< HEAD
++=======
+
+ return;
++>>>>>>> remotes/origin/upstream
}
* @image html img/widget/bg/preview-00.png
* @image latex img/widget/bg/preview-00.eps
*
++<<<<<<< HEAD
+ * @brief Background object, used for setting a solid color, image or Edje
+ * group as background to a window or any container object.
+ *
+ * The bg object is used for setting a solid background to a window or
+ * packing into any container object. It works just like an image, but has
+ * some properties useful to a background, like setting it to tiled,
+ * centered, scaled or stretched.
+ *
+ * Default contents parts of the bg widget that you can use for are:
++=======
+ * @brief Background object, used for setting a solid color, image or
+ * Edje group as a background to a window or any container object.
+ *
+ * The bg (background) widget is used for setting (solid) background
+ * decorations to a window (unless it has transparency enabled) or to
+ * any container object. It works just like an image, but has some
+ * properties useful to a background, like setting it to tiled,
+ * centered, scaled or stretched.
+ *
+ * Default content parts of the bg widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "overlay" - overlay of the bg
*
* Supported elm_object common APIs.
* @li @ref bg_03_example_page
*/
++<<<<<<< HEAD
+/* bg */
+typedef enum
+{
+ ELM_BG_OPTION_CENTER, /**< center the background */
+ ELM_BG_OPTION_SCALE, /**< scale the background retaining aspect ratio */
+ ELM_BG_OPTION_STRETCH, /**< stretch the background to fill */
+ ELM_BG_OPTION_TILE /**< tile background at its original size */
++=======
+ /**
+ * Identifiers on how a background widget is to display its image --
+ * if it was tset to use an image file.
+ *
+ * @see elm_bg_option_set()
+ * @see elm_bg_option_get()
+ */
+ typedef enum
+ {
+ ELM_BG_OPTION_CENTER, /**< center the background image */
+ ELM_BG_OPTION_SCALE, /**< scale the background image, retaining aspect ratio */
+ ELM_BG_OPTION_STRETCH, /**< stretch the background image to fill the widget's area */
+ ELM_BG_OPTION_TILE, /**< tile background image at its original size */
+ ELM_BG_OPTION_LAST /**< sentinel value, also used to indicate errors */
++>>>>>>> remotes/origin/upstream
} Elm_Bg_Option;
/**
EAPI Evas_Object *elm_bg_add(Evas_Object *parent);
/**
++<<<<<<< HEAD
+ * Set the file (image or edje) used for the background
+ *
+ * @param obj The bg object
+ * @param file The file path
+ * @param group Optional key (group in Edje) within the file
+ *
+ * This sets the image file used in the background object. The image (or edje)
+ * will be stretched (retaining aspect if its an image file) to completely fill
+ * the bg object. This may mean some parts are not visible.
+ *
+ * @note Once the image of @p obj is set, a previously set one will be deleted,
+ * even if @p file is NULL.
+ *
+ * @ingroup Bg
+ */
+EAPI void elm_bg_file_set(Evas_Object *obj, const char *file, const char *group);
+
+/**
+ * Get the file (image or edje) used for the background
+ *
+ * @param obj The bg object
+ * @param file The file path
+ * @param group Optional key (group in Edje) within the file
++=======
+ * Set the file (image or edje collection) to give life for the
+ * background
+ *
+ * @param obj The background object handle
+ * @param file The file path
+ * @param group Optional key (group in Edje) within the file
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * This sets the image file used in the background object. If the
+ * image comes from an Edje group, it will be stretched to completely
+ * fill the background object. If it comes from a traditional image file, it
+ * will by default be centered in this widget's are (thus retaining
+ * its aspect), what could lead to some parts being not visible. You
+ * may change the mode of exhibition for a real image file with
+ * elm_bg_option_set().
+ *
+ * @note Once the image of @p obj is set, a previously set one will be
+ * deleted, even if @p file is NULL.
+ *
+ * @note This will only affect the contents of one of the background's
+ * swallow spots, namely @c "elm.swallow.background". If you want to
+ * achieve the @c Layout's file setting behavior, you'll have to call
+ * that method on this object.
+ *
+ * @ingroup Bg
+ */
+ EAPI Eina_Bool elm_bg_file_set(Evas_Object *obj, const char *file, const char *group);
+
+ /**
+ * Get the file (image or edje collection) set on a given background
+ * widget
+ *
+ * @param obj The background object handle
+ * @param file Where to store the requested file's path
+ * @param group Where to store the optional key within @a file, @b if
+ * it's an Edje file
+ *
+ * @note Use @c NULL pointers on the file components you're not
+ * interested in: they'll be ignored by the function.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
EAPI void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group);
/**
++<<<<<<< HEAD
+ * Set the option used for the background image
+ *
+ * @param obj The bg object
+ * @param option The desired background option (TILE, SCALE)
+ *
+ * This sets the option used for manipulating the display of the background
+ * image. The image can be tiled or scaled.
++=======
+ * Set the mode of display for a given background widget's image
+ *
+ * @param obj The background object handle
+ * @param option The desired background option (see #Elm_Bg_Option)
+ *
+ * This sets how the background widget will display its image. This
+ * will only work if the elm_bg_file_set() was previously called with
+ * an image file on @a obj. The image can be display tiled, scaled,
+ * centered or stretched.
+ *
+ * @see elm_bg_option_get()
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
EAPI void elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option);
/**
++<<<<<<< HEAD
+ * Get the option used for the background image
+ *
+ * @param obj The bg object
+ * @return The desired background option (CENTER, SCALE, STRETCH or TILE)
++=======
+ * Get the mode of display for a given background widget's image
+ *
+ * @param obj The background object handle
+ * @return The image displaying mode in use for @a obj or
+ * #ELM_BG_OPTION_LAST, on errors.
+ *
+ * @see elm_bg_option_set() for more details
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
EAPI Elm_Bg_Option elm_bg_option_get(const Evas_Object *obj);
++<<<<<<< HEAD
+/**
+ * Set the option used for the background color
+ *
+ * @param obj The bg object
+ * @param r
+ * @param g
+ * @param b
+ *
+ * This sets the color used for the background rectangle. Its range goes
+ * from 0 to 255.
++=======
+
+ /**
+ * Set the color on a given background widget
+ *
+ * @param obj The background object handle
+ * @param r The red color component's value
+ * @param g The green color component's value
+ * @param b The blue color component's value
+ *
+ * This sets the color used for the background rectangle, in RGB
+ * format. Each color component's range is from 0 to 255.
+ *
+ * @note You probably only want to use this function if you haven't
+ * previously called elm_bg_file_set(), so that you just want a solid
+ * color background.
+ *
+ * @see elm_bg_color_get()
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
EAPI void elm_bg_color_set(Evas_Object *obj, int r, int g, int b);
++<<<<<<< HEAD
+/**
+ * Get the option used for the background color
+ *
+ * @param obj The bg object
+ * @param r
+ * @param g
+ * @param b
++=======
+
+ /**
+ * Get the color set on a given background widget
+ *
+ * @param obj The background object handle
+ * @param r Where to store the red color component's value
+ * @param g Where to store the green color component's value
+ * @param b Where to store the blue color component's value
+ *
+ * @note Use @c NULL pointers on the file components you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_bg_color_get() for more details
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
EAPI void elm_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b);
/**
++<<<<<<< HEAD
+ * Set the size of the pixmap representation of the image.
+ *
+ * This option just makes sense if an image is going to be set in the bg.
+ *
+ * @param obj The bg object
+ * @param w The new width of the image pixmap representation.
+ * @param h The new height of the image pixmap representation.
+ *
+ * This function sets a new size for pixmap representation of the given bg
+ * image. It allows the image to be loaded already in the specified size,
+ * reducing the memory usage and load time when loading a big image with load
+ * size set to a smaller size.
+ *
+ * NOTE: this is just a hint, the real size of the pixmap may differ
+ * depending on the type of image being loaded, being bigger than requested.
++=======
+ * Set the size of the pixmap representation of the image set on a
+ * given background widget.
+ *
+ * @param obj The background object handle
+ * @param w The new width of the image pixmap representation.
+ * @param h The new height of the image pixmap representation.
+ *
+ * @warning This function just makes sense if an image file was set on
+ * @p obj, with elm_bg_file_set().
+ *
+ * This function sets a new size for pixmap representation of the
+ * given bg image. It allows for the image to be loaded already in the
+ * specified size, reducing the memory usage and load time (for
+ * example, when loading a big image file with its load size set to a
+ * smaller size)
+ *
+ * @note This is just a hint for the underlying system. The real size
+ * of the pixmap may differ depending on the type of image being
+ * loaded, being bigger than requested.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Bg
*/
}
EAPI void
++<<<<<<< HEAD
+elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data))
++=======
+ elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, Ecore_Cb free_data)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
Evas_Object_Box_Layout start_layout, void *start_layout_data,
void(*start_layout_free_data)(void *data),
Evas_Object_Box_Layout end_layout, void *end_layout_data,
++<<<<<<< HEAD
+ void(*end_layout_free_data)(void *data),
+ void(*transition_end_cb)(void *data),
++=======
+ Ecore_Cb end_layout_free_data,
+ Ecore_Cb transition_end_cb,
++>>>>>>> remotes/origin/upstream
void *transition_end_data)
{
Elm_Box_Transition *box_data;
free(data);
}
++<<<<<<< HEAD
+EAPI const Eina_List *
++=======
+ EAPI Eina_List *
++>>>>>>> remotes/origin/upstream
elm_box_children_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
*
* @param obj The box object
*/
++<<<<<<< HEAD
+EAPI const Eina_List *elm_box_children_get(const Evas_Object *obj);
++=======
+ EAPI Eina_List *elm_box_children_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set the space (padding) between the box's elements.
EAPI void elm_box_padding_get(const Evas_Object *obj, Evas_Coord *horizontal, Evas_Coord *vertical);
/**
++<<<<<<< HEAD
+ * Set the alignment of the whole bouding box of contents.
++=======
+ * Set the alignment of the whole bounding box of contents.
++>>>>>>> remotes/origin/upstream
*
* Sets how the bounding box containing all the elements of the box, after
* their sizes and position has been calculated, will be aligned within
EAPI void elm_box_align_set(Evas_Object *obj, double horizontal, double vertical);
/**
++<<<<<<< HEAD
+ * Get the alignment of the whole bouding box of contents.
++=======
+ * Get the alignment of the whole bounding box of contents.
++>>>>>>> remotes/origin/upstream
*
* @param obj The box object
* @param horizontal The horizontal alignment of elements
*
* @see elm_box_layout_transition()
*/
++<<<<<<< HEAD
+EAPI void elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data));
++=======
+ EAPI void elm_box_layout_set(Evas_Object *obj, Evas_Object_Box_Layout cb, const void *data, Ecore_Cb free_data);
++>>>>>>> remotes/origin/upstream
/**
* Special layout function that animates the transition from one layout to another
* @see elm_box_transition_new
* @see elm_box_layout_transition
*/
++<<<<<<< HEAD
+EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, void (*start_layout_free_data)(void *data), Evas_Object_Box_Layout end_layout, void *end_layout_data, void (*end_layout_free_data)(void *data), void (*transition_end_cb)(void *data), void *transition_end_data);
++=======
+ EAPI Elm_Box_Transition *elm_box_transition_new(const double duration, Evas_Object_Box_Layout start_layout, void *start_layout_data, void (*start_layout_free_data)(void *data), Evas_Object_Box_Layout end_layout, void *end_layout_data, Ecore_Cb end_layout_free_data, Ecore_Cb transition_end_cb, void *transition_end_data);
++>>>>>>> remotes/origin/upstream
/**
* Free a Elm_Box_Transition instance created with elm_box_transition_new().
Evas_Object *bbl;
Evas_Object *content, *icon;
const char *label, *info, *corner;
++<<<<<<< HEAD
++=======
+ Elm_Bubble_Pos pos;
++>>>>>>> remotes/origin/upstream
};
static const char *widtype = NULL;
{NULL, NULL}
};
++<<<<<<< HEAD
++=======
+ static const char *corner_string[] =
+ {
+ "top_left",
+ "top_right",
+ "bottom_left",
+ "bottom_right"
+ };
+
++>>>>>>> remotes/origin/upstream
static void
_del_hook(Evas_Object *obj)
{
if (!wd) return;
_elm_widget_mirrored_reload(obj);
_mirrored_set(obj, elm_widget_mirrored_get(obj));
++<<<<<<< HEAD
+ _elm_theme_object_set(obj, wd->bbl, "bubble", wd->corner,
++=======
+ _elm_theme_object_set(obj, wd->bbl, "bubble", corner_string[wd->pos],
++>>>>>>> remotes/origin/upstream
elm_widget_style_get(obj));
edje_object_part_text_set(wd->bbl, "elm.text", wd->label);
if (wd->label) edje_object_signal_emit(wd->bbl, "elm,state,text,visible", "elm");
elm_widget_content_unset_hook_set(obj, _content_unset_hook);
wd->corner = eina_stringshare_add("base");
++<<<<<<< HEAD
++=======
+ wd->pos = ELM_BUBBLE_POS_TOP_LEFT; //default
++>>>>>>> remotes/origin/upstream
wd->bbl = edje_object_add(e);
elm_widget_resize_object_set(obj, wd->bbl);
return obj;
}
++<<<<<<< HEAD
+EAPI void
+elm_bubble_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_bubble_label_set(obj, NULL, label);
+}
+
+EAPI const char*
+elm_bubble_label_get(const Evas_Object *obj)
+{
+ return _elm_bubble_label_get(obj, NULL);
+}
+
+EAPI void
+elm_bubble_info_set(Evas_Object *obj, const char *info)
+{
+ _elm_bubble_label_set(obj, "info", info);
+}
+
+EAPI const char *
+elm_bubble_info_get(const Evas_Object *obj)
+{
+ return _elm_bubble_label_get(obj, "info");
+}
+
+EAPI void
+elm_bubble_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ _content_set_hook(obj, NULL, content);
+}
+
+EAPI Evas_Object *
+elm_bubble_content_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
+elm_bubble_content_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, NULL);
+}
+
+EAPI void
+elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon)
+{
+ _content_set_hook(obj, "icon", icon);
+}
+
+EAPI Evas_Object *
+elm_bubble_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, "icon");
+}
+
+EAPI Evas_Object *
+elm_bubble_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, "icon");
+}
+
+EAPI void
+elm_bubble_corner_set(Evas_Object *obj, const char *corner)
++=======
+ EINA_DEPRECATED EAPI void
+ elm_bubble_corner_set(Evas_Object *obj, const char *corner)
+ {
+ int i = 0;
+ for (i=ELM_BUBBLE_POS_TOP_LEFT; i<=ELM_BUBBLE_POS_BOTTOM_RIGHT; i++)
+ {
+ if (!strcmp(corner,corner_string[i]))
+ elm_bubble_pos_set(obj, i);
+ }
+ }
+
+ EAPI void
+ elm_bubble_pos_set(Evas_Object *obj, Elm_Bubble_Pos pos)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ EINA_SAFETY_ON_NULL_RETURN(corner);
+ eina_stringshare_replace(&wd->corner, corner);
+ _theme_hook(obj);
+}
+
+EAPI const char*
+elm_bubble_corner_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return wd->corner;
++=======
+ if(pos<ELM_BUBBLE_POS_TOP_LEFT || pos>ELM_BUBBLE_POS_BOTTOM_RIGHT) return;
+ wd->pos = pos;
+ _theme_hook(obj);
+ }
+
+ EINA_DEPRECATED EAPI const char*
+ elm_bubble_corner_get(const Evas_Object *obj)
+ {
+ return corner_string[elm_bubble_pos_get(obj)];
+ }
+
+ EAPI Elm_Bubble_Pos
+ elm_bubble_pos_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_BUBBLE_POS_INVALID;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return ELM_BUBBLE_POS_INVALID;
+ return wd->pos;
++>>>>>>> remotes/origin/upstream
}
* corner is "top_left" or "bottom_left" and is right aligned to the frame
* otherwise.
* @li The @p info is a text which appears to the right of the label. Info's
++<<<<<<< HEAD
+ * font is of a ligther color than label.
++=======
+ * font is of a lighter color than label.
++>>>>>>> remotes/origin/upstream
* @li The @p content is an evas object that is shown inside the frame.
*
* The position of the arrow, icon, label and info depends on which corner is
* Signals that you can add callbacks for are:
* @li "clicked" - This is called when a user has clicked the bubble.
*
++<<<<<<< HEAD
+ * Default contents parts of the bubble that you can use for are:
++=======
+ * Default content parts of the bubble that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the bubble
* @li "icon" - An icon of the bubble
*
* @li elm_object_part_content_get
* @li elm_object_part_content_unset
*
++<<<<<<< HEAD
+ * For an example of using a buble see @ref bubble_01_example_page "this".
++=======
+ * For an example of using a bubble see @ref bubble_01_example_page "this".
++>>>>>>> remotes/origin/upstream
*
* @{
*/
/**
++<<<<<<< HEAD
++=======
+ * Defines the corner values for a bubble.
+ *
+ * The corner will be used to determine where the arrow of the
+ * bubble points to.
+ */
+ typedef enum
+ {
+ ELM_BUBBLE_POS_INVALID = -1,
+ ELM_BUBBLE_POS_TOP_LEFT,
+ ELM_BUBBLE_POS_TOP_RIGHT,
+ ELM_BUBBLE_POS_BOTTOM_LEFT,
+ ELM_BUBBLE_POS_BOTTOM_RIGHT,
+ } Elm_Bubble_Pos;
+
+ /**
++>>>>>>> remotes/origin/upstream
* Add a new bubble to the parent
*
* @param parent The parent object
* determine where the arrow in the frame points to and where label, icon and
* info are shown.
*
++<<<<<<< HEAD
+ * Possible values for corner are:
+ * @li "top_left" - Default
+ * @li "top_right"
+ * @li "bottom_left"
+ * @li "bottom_right"
+ */
+EAPI void elm_bubble_corner_set(Evas_Object *obj, const char *corner);
++=======
+ */
+ EAPI void elm_bubble_pos_set(Evas_Object *obj, Elm_Bubble_Pos pos);
++>>>>>>> remotes/origin/upstream
/**
* Get the corner of the bubble
*
* This function gets the selected corner of the bubble.
*/
++<<<<<<< HEAD
+EAPI const char *elm_bubble_corner_get(const Evas_Object *obj);
++=======
+ EAPI Elm_Bubble_Pos elm_bubble_pos_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
}
EAPI void
++<<<<<<< HEAD
+elm_button_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_button_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_button_label_get(const Evas_Object *obj)
+{
+ return _elm_button_label_get(obj, NULL);
+}
+
+
+EAPI void
+elm_button_icon_set(Evas_Object *obj, Evas_Object *icon)
+{
+ _content_set_hook(obj, "icon", icon);
+}
+
+EAPI Evas_Object *
+elm_button_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, "icon");
+}
+
+EAPI Evas_Object *
+elm_button_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, "icon");
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_button_autorepeat_set(Evas_Object *obj, Eina_Bool on)
{
ELM_CHECK_WIDTYPE(obj, widtype);
* This is a push-button. Press it and run some function. It can contain
* a simple label and icon object and it also has an autorepeat feature.
*
++<<<<<<< HEAD
+ * This widgets emits the following signals:
++=======
+ * This widget emits the following signals:
++>>>>>>> remotes/origin/upstream
* @li "clicked": the user clicked the button (press/release).
* @li "repeated": the user pressed the button without releasing it.
* @li "pressed": button was pressed.
* @li "unpressed": button was released after being pressed.
++<<<<<<< HEAD
+ * In all three cases, the @c event parameter of the callback will be
++=======
+ * In all cases, the @c event parameter of the callback will be
++>>>>>>> remotes/origin/upstream
* @c NULL.
*
* Also, defined in the default theme, the button has the following styles
* @li hoversel_vertical: Internally used by @ref Hoversel to give a
* continuous look across its options.
* @li hoversel_vertical_entry: Another internal for @ref Hoversel.
++<<<<<<< HEAD
+ *
+ * Default contents parts of the button widget that you can use for are:
++=======
+ * @li naviframe: Internally used by @ref Naviframe for its back button.
+ * @li colorselector: Internally used by @ref Colorselector
+ * for its left and right buttons.
+ *
+ * Default content parts of the button widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the button
*
* Default text parts of the button widget that you can use for are:
*
* Sets the timeout, in seconds, since the button is pressed until the
* first @c repeated signal is emitted. If @p t is 0.0 or less, there
++<<<<<<< HEAD
+ * won't be any delay and the even will be fired the moment the button is
++=======
+ * won't be any delay and the event will be fired the moment the button is
++>>>>>>> remotes/origin/upstream
* pressed.
*
* @param obj The button object
*
* @ingroup Caches
*/
++<<<<<<< HEAD
+// XXX: rename: elm_cache_all_flush()
+EAPI void elm_all_flush(void);
+
+/**
+ * Get the configured cache flush interval time
+ *
+ * This gets the globally configured cache flush interval time, in
+ * ticks
+ *
+ * @return The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI int elm_cache_flush_interval_get(void);
+
+/**
+ * Set the configured cache flush interval time
+ *
+ * This sets the globally configured cache flush interval time, in ticks
+ *
+ * @param size The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI void elm_cache_flush_interval_set(int size);
+
+/**
+ * Set the configured cache flush interval time for all applications on the
+ * display
+ *
+ * This sets the globally configured cache flush interval time -- in ticks
+ * -- for all applications on the display.
+ *
+ * @param size The cache flush interval time
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_cache_flush_interval_all_set(int size);
+
+/**
+ * Get the configured cache flush enabled state
+ *
+ * This gets the globally configured cache flush state - if it is enabled
+ * or not. When cache flushing is enabled, elementary will regularly
+ * (see elm_cache_flush_interval_get() ) flush caches and dump data out of
+ * memory and allow usage to re-seed caches and data in memory where it
+ * can do so. An idle application will thus minimise its memory usage as
+ * data will be freed from memory and not be re-loaded as it is idle and
+ * not rendering or doing anything graphically right now.
+ *
+ * @return The cache flush state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI Eina_Bool elm_cache_flush_enabled_get(void);
+
+/**
+ * Set the configured cache flush enabled state
+ *
+ * This sets the globally configured cache flush enabled state.
+ *
+ * @param enabled The cache flush enabled state
+ * @ingroup Caches
+ *
+ * @see elm_all_flush()
+ */
+EAPI void elm_cache_flush_enabled_set(Eina_Bool enabled);
+
+/**
+ * Set the configured cache flush enabled state for all applications on the
+ * display
+ *
+ * This sets the globally configured cache flush enabled state for all
+ * applications on the display.
+ *
+ * @param enabled The cache flush enabled state
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_cache_flush_enabled_all_set(Eina_Bool enabled);
+
+/**
+ * Get the configured font cache size
+ *
+ * This gets the globally configured font cache size, in bytes.
+ *
+ * @return The font cache size
+ * @ingroup Caches
+ */
+EAPI int elm_font_cache_get(void);
+
+/**
+ * Set the configured font cache size
+ *
+ * This sets the globally configured font cache size, in bytes
+ *
+ * @param size The font cache size
+ * @ingroup Caches
+ */
+EAPI void elm_font_cache_set(int size);
+
+/**
+ * Set the configured font cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured font cache size -- in bytes
+ * -- for all applications on the display.
+ *
+ * @param size The font cache size
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_font_cache_all_set(int size);
+
+/**
+ * Get the configured image cache size
+ *
+ * This gets the globally configured image cache size, in bytes
+ *
+ * @return The image cache size
+ * @ingroup Caches
+ */
+EAPI int elm_image_cache_get(void);
+
+/**
+ * Set the configured image cache size
+ *
+ * This sets the globally configured image cache size, in bytes
+ *
+ * @param size The image cache size
+ * @ingroup Caches
+ */
+EAPI void elm_image_cache_set(int size);
+
+/**
+ * Set the configured image cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured image cache size -- in bytes
+ * -- for all applications on the display.
+ *
+ * @param size The image cache size
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_image_cache_all_set(int size);
+
+/**
+ * Get the configured edje file cache size.
+ *
+ * This gets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @return The edje file cache size
+ * @ingroup Caches
+ */
+EAPI int elm_edje_file_cache_get(void);
+
+/**
+ * Set the configured edje file cache size
+ *
+ * This sets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @param size The edje file cache size
+ * @ingroup Caches
+ */
+EAPI void elm_edje_file_cache_set(int size);
+
+/**
+ * Set the configured edje file cache size for all applications on the
+ * display
+ *
+ * This sets the globally configured edje file cache size -- in number
+ * of files -- for all applications on the display.
+ *
+ * @param size The edje file cache size
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_edje_file_cache_all_set(int size);
+
+/**
+ * Get the configured edje collections (groups) cache size.
+ *
+ * This gets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @return The edje collections cache size
+ * @ingroup Caches
+ */
+EAPI int elm_edje_collection_cache_get(void);
+
+/**
+ * Set the configured edje collections (groups) cache size
+ *
+ * This sets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @param size The edje collections cache size
+ * @ingroup Caches
+ */
+EAPI void elm_edje_collection_cache_set(int size);
+
+/**
+ * Set the configured edje collections (groups) cache size for all
+ * applications on the display
+ *
+ * This sets the globally configured edje collections cache size -- in
+ * number of collections -- for all applications on the display.
+ *
+ * @param size The edje collections cache size
+ * @ingroup Caches
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_edje_collection_cache_all_set(int size);
++=======
+ EAPI void elm_cache_all_flush(void);
++>>>>>>> remotes/origin/upstream
/**
* @}
int year_min, year_max, spin_speed;
int today_it, selected_it, first_day_it;
Ecore_Timer *spin, *update_timer;
++<<<<<<< HEAD
+ char * (*format_func) (struct tm *selected_time);
++=======
+ Elm_Calendar_Format_Cb format_func;
++>>>>>>> remotes/origin/upstream
const char *weekdays[7];
struct tm current_time, selected_time;
Day_Color day_color[42]; // EINA_DEPRECATED
Eina_List *node;
struct tm mark_time;
const char *mark_type;
++<<<<<<< HEAD
+ Elm_Calendar_Mark_Repeat repeat;
++=======
+ Elm_Calendar_Mark_Repeat_Type repeat;
++>>>>>>> remotes/origin/upstream
};
static const char *widtype = NULL;
};
static Elm_Calendar_Mark *
++<<<<<<< HEAD
+_mark_new(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat)
++=======
+ _mark_new(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat_Type repeat)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Calendar_Mark *mark;
edje_object_signal_emit(wd->calendar, emission, "elm");
}
++<<<<<<< HEAD
+// EINA_DEPRECATED
+static void
+_text_day_color_set(Widget_Data *wd, Day_Color col, int pos)
+{
+ if ((pos < 0) || (pos >= 42)) return;
+ if (wd->day_color[pos] == col) return;
+ wd->day_color[pos] = col;
+ _text_day_color_update(wd, pos);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_set_month_year(Widget_Data *wd)
{
static void
_populate(Evas_Object *obj)
{
++<<<<<<< HEAD
+ int maxdays, day, mon, year, i;
++=======
+ int maxdays, day, mon, yr, i;
++>>>>>>> remotes/origin/upstream
Elm_Calendar_Mark *mark;
char part[12], day_s[3];
struct tm first_day;
maxdays = _maxdays_get(&wd->selected_time);
mon = wd->selected_time.tm_mon;
++<<<<<<< HEAD
+ year = wd->selected_time.tm_year;
++=======
+ yr = wd->selected_time.tm_year;
++>>>>>>> remotes/origin/upstream
_set_month_year(wd);
if ((day == wd->current_time.tm_mday)
&& (mon == wd->current_time.tm_mon)
++<<<<<<< HEAD
+ && (year == wd->current_time.tm_year))
++=======
+ && (yr == wd->current_time.tm_year))
++>>>>>>> remotes/origin/upstream
_today(wd, i);
if (day == wd->selected_time.tm_mday)
Widget_Data *wd;
int i, t;
Evas *e;
++<<<<<<< HEAD
+ struct tm weekday_time;
++=======
++>>>>>>> remotes/origin/upstream
ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
* just make it larger. :| */
char buf[20];
/* I don't know of a better way of doing it */
++<<<<<<< HEAD
+ gmtime_r(&weekday, &weekday_time);
+ if (strftime(buf, sizeof(buf), "%a", &weekday_time))
++=======
+ if (strftime(buf, sizeof(buf), "%a", gmtime(&weekday)))
++>>>>>>> remotes/origin/upstream
{
wd->weekdays[i] = eina_stringshare_add(buf);
}
if (max) *max = wd->year_max + 1900;
}
++<<<<<<< HEAD
+EAPI void
+elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->selection_enabled = enabled;
+ if (enabled)
++=======
+ EINA_DEPRECATED EAPI void
+ elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled)
+ {
+ elm_calendar_day_selection_disabled_set(obj, !enabled);
+ }
+
+ EAPI void
+ elm_calendar_day_selection_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->selection_enabled = (!disabled);
+ if (!disabled)
++>>>>>>> remotes/origin/upstream
_select(wd, wd->selected_it);
else
_unselect(wd, wd->selected_it);
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_calendar_day_selection_enabled_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->selection_enabled;
++=======
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_calendar_day_selection_enabled_get(const Evas_Object *obj)
+ {
+ return (!elm_calendar_day_selection_disabled_get(obj));
+ }
+
+ EAPI Eina_Bool
+ elm_calendar_day_selection_disabled_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return (!wd->selection_enabled);
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI void
++<<<<<<< HEAD
+elm_calendar_format_function_set(Evas_Object *obj, char * (*format_function) (struct tm *selected_time))
++=======
+ elm_calendar_format_function_set(Evas_Object *obj, Elm_Calendar_Format_Cb format_function)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI Elm_Calendar_Mark *
++<<<<<<< HEAD
+elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat)
++=======
+ elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat_Type repeat)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
_populate(obj);
}
++<<<<<<< HEAD
+
+EINA_DEPRECATED EAPI void
+elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _text_day_color_set(wd, DAY_SATURDAY, pos);
+}
+
+EINA_DEPRECATED EAPI void
+elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _text_day_color_set(wd, DAY_SUNDAY, pos);
+}
+
+EINA_DEPRECATED EAPI void
+elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _text_day_color_set(wd, DAY_WEEKDAY, pos);
+}
++=======
++>>>>>>> remotes/origin/upstream
/**
++<<<<<<< HEAD
++=======
+ * @defgroup Calendar Calendar
+ *
+ * This is a Calendar widget. Calender widget helps applications to flexibly
+ * display a calender with day of the week, day, year and month. Applications will be
+ * able to choose a specific date that will be reported in the smart_callbacks for
+ * the calendar widget. The APIs of calendar widget let the applications perform
+ * other functions like,
+ * placing marks on specific dates
+ * Setting the bounds for the calendar (minimum and maximum years)
+ * Setting the day names of the week. ( for ex. Thu. or Thursday)
+ * Setting the year and month format.
+ *
+ * Signals that you can add callbacks for are:
+ * - @c "changed" - emitted when the date in the calendar is changed.
+ *
+ * Supported elm_object common APIs.
+ * @li elm_object_signal_emit
+ * @li elm_object_signal_callback_add
+ * @li elm_object_signal_callback_del
+ *
+ */
+
+ /**
++>>>>>>> remotes/origin/upstream
* @addtogroup Calendar
* @{
*/
++<<<<<<< HEAD
+/**
+ * @enum _Elm_Calendar_Mark_Repeat
+ * @typedef Elm_Calendar_Mark_Repeat
++=======
+ typedef enum
+ {
+ ELM_CALENDAR_UNIQUE, /**< Default value. Marks will be displayed only on event day. */
+ ELM_CALENDAR_DAILY, /**< Marks will be displayed every day after event day (inclusive). */
+ ELM_CALENDAR_WEEKLY, /**< Marks will be displayed every week after event day (inclusive) - i.e. each seven days. */
+ ELM_CALENDAR_MONTHLY, /**< Marks will be displayed every month day that coincides to event day. E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb, but will be displayed on 30th Mar*/
+ ELM_CALENDAR_ANNUALLY /**< Marks will be displayed every year that coincides to event day (and month). E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013. */
+ } _Elm_Calendar_Mark_Repeat_Type;
+
+ /**
+ * @enum _Elm_Calendar_Mark_Repeat_Type
+ * @typedef Elm_Calendar_Mark_Repeat_Type
++>>>>>>> remotes/origin/upstream
*
* Event periodicity, used to define if a mark should be repeated
* @b beyond event's day. It's set when a mark is added.
* there will be marks every week after this date. Marks will be displayed
* at 13th, 20th, 27th, 3rd June ...
*
++<<<<<<< HEAD
+ * Values don't work as bitmask, only one can be choosen.
+ *
+ * Supported elm_object common APIs.
+ * @li elm_object_signal_emit
+ * @li elm_object_signal_callback_add
+ * @li elm_object_signal_callback_del
++=======
+ * Values don't work as bitmask, only one can be chosen.
++>>>>>>> remotes/origin/upstream
*
* @see elm_calendar_mark_add()
*
* @ingroup Calendar
*/
++<<<<<<< HEAD
+typedef enum
+{
+ ELM_CALENDAR_UNIQUE, /**< Default value. Marks will be displayed only on event day. */
+ ELM_CALENDAR_DAILY, /**< Marks will be displayed everyday after event day (inclusive). */
+ ELM_CALENDAR_WEEKLY, /**< Marks will be displayed every week after event day (inclusive) - i.e. each seven days. */
+ ELM_CALENDAR_MONTHLY, /**< Marks will be displayed every month day that coincides to event day. E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb, but will be displayed on 30th Mar*/
+ ELM_CALENDAR_ANNUALLY /**< Marks will be displayed every year that coincides to event day (and month). E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013. */
+} Elm_Calendar_Mark_Repeat;
++=======
+ typedef _Elm_Calendar_Mark_Repeat_Type Elm_Calendar_Mark_Repeat_Type;
++>>>>>>> remotes/origin/upstream
typedef struct _Elm_Calendar_Mark Elm_Calendar_Mark; /**< Item handle for a calendar mark. Created with elm_calendar_mark_add() and deleted with elm_calendar_mark_del(). */
/**
++<<<<<<< HEAD
++=======
+ * @typedef Elm_Calendar_Format_Cb
+ *
+ * This callback type is used to format the string that will be used
+ * to display month and year.
+ *
+ * @param stime Struct representing time.
+ * @return String representing time that will be set to calendar's text.
+ *
+ * @see elm_calendar_format_function_set()
+ */
+ typedef char * (*Elm_Calendar_Format_Cb)(struct tm *stime);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Add a new calendar widget to the given parent Elementary
* (container) object.
*
* @param min The minimum year, greater than 1901;
* @param max The maximum year;
*
++<<<<<<< HEAD
+ * Maximum must be greater than minimum, except if you don't wan't to set
++=======
+ * Maximum must be greater than minimum, except if you don't want to set
++>>>>>>> remotes/origin/upstream
* maximum year.
* Default values are 1902 and -1.
*
* Enable or disable day selection
*
* @param obj The calendar object.
++<<<<<<< HEAD
+ * @param enabled @c EINA_TRUE to enable selection or @c EINA_FALSE to
+ * disable it.
++=======
+ * @param disabled @c EINA_TRUE to disable selection or @c EINA_FALSE to
+ * enable it.
++>>>>>>> remotes/origin/upstream
*
* Enabled by default. If disabled, the user still can select months,
* but not days. Selected days are highlighted on calendar.
* When a day is selected, or month is changed, smart callbacks for
* signal "changed" will be called.
*
++<<<<<<< HEAD
+ * @see elm_calendar_day_selection_enable_get()
++=======
+ * @see elm_calendar_day_selection_disabled_get()
++>>>>>>> remotes/origin/upstream
*
* @ref calendar_example_04
*
* @ingroup Calendar
*/
++<<<<<<< HEAD
+EAPI void elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+/**
+ * Get a value whether day selection is enabled or not.
+ *
+ * @see elm_calendar_day_selection_enable_set() for details.
+ *
+ * @param obj The calendar object.
+ * @return EINA_TRUE means day selection is enabled. EINA_FALSE indicates
+ * it's disabled. If @p obj is NULL, EINA_FALSE is returned.
++=======
+ EAPI void elm_calendar_day_selection_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+ /**
+ * Get a value whether day selection is disabled or not.
+ *
+ * @param obj The calendar object.
+ * @return EINA_TRUE means day selection is disabled. EINA_FALSE indicates
+ * it's enabled. If @p obj is NULL, EINA_FALSE is returned.
+ *
+ * @see elm_calendar_day_selection_disabled_set() for details.
++>>>>>>> remotes/origin/upstream
*
* @ref calendar_example_05
*
* @ingroup Calendar
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_calendar_day_selection_enabled_get(const Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_calendar_day_selection_disabled_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set selected date to be highlighted on calendar.
*
* @param obj The calendar object
* @param selected_time A @b tm struct to point to selected date
++<<<<<<< HEAD
+ * @return EINA_FALSE means an error ocurred and returned time shouldn't
++=======
+ * @return EINA_FALSE means an error occurred and returned time shouldn't
++>>>>>>> remotes/origin/upstream
* be considered.
*
* Get date selected by the user or set by function
*
* @ingroup Calendar
*/
++<<<<<<< HEAD
+EAPI void elm_calendar_format_function_set(Evas_Object *obj, char *(*format_function)(struct tm *stime));
++=======
+ EAPI void elm_calendar_format_function_set(Evas_Object *obj, Elm_Calendar_Format_Cb format_func);
++>>>>>>> remotes/origin/upstream
/**
* Add a new mark to the calendar
*
* @ingroup Calendar
*/
++<<<<<<< HEAD
+EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat repeat);
++=======
+ EAPI Elm_Calendar_Mark *elm_calendar_mark_add(Evas_Object *obj, const char *mark_type, struct tm *mark_time, Elm_Calendar_Mark_Repeat_Type repeat);
++>>>>>>> remotes/origin/upstream
/**
* Delete mark from the calendar.
* this function.
*
* When the month is changed, i.e. user selects next or previous month,
++<<<<<<< HEAD
+ * marks will be drawed.
++=======
+ * marks will be drawn.
++>>>>>>> remotes/origin/upstream
*
* @see elm_calendar_mark_add()
* @see elm_calendar_mark_del()
};
static const char *widtype = NULL;
++<<<<<<< HEAD
++=======
+ static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
+ Evas_Callback_Type type, void *event_info);
++>>>>>>> remotes/origin/upstream
static void _del_hook(Evas_Object *obj);
static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
static void _theme_hook(Evas_Object *obj);
static void _disable_hook(Evas_Object *obj);
static void _sizing_eval(Evas_Object *obj);
++<<<<<<< HEAD
+static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _sub_del(void *data, Evas_Object *obj, void *event_info);
+static void _signal_check_off(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _signal_check_on(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _signal_check_toggle(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _on_focus_hook(void *data, Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
+static void _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content);
+static Evas_Object *_content_get_hook(const Evas_Object *obj, const char *part);
+static Evas_Object *_content_unset_hook(Evas_Object *obj, const char *part);
+
+static void _activate(Evas_Object *obj);
+static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
+ Evas_Callback_Type type, void *event_info);
+
++=======
+ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj,
+ void *event_info);
+ static void _sub_del(void *data, Evas_Object *obj, void *event_info);
+ static void _signal_check_off(void *data, Evas_Object *obj,
+ const char *emission, const char *source);
+ static void _signal_check_on(void *data, Evas_Object *obj,
+ const char *emission, const char *source);
+ static void _signal_check_toggle(void *data, Evas_Object *obj,
+ const char *emission, const char *source);
+ static void _on_focus_hook(void *data, Evas_Object *obj);
+ static void _activate_hook(Evas_Object *obj);
+ static void _content_set_hook(Evas_Object *obj, const char *part,
+ Evas_Object *content);
+ static Evas_Object *_content_get_hook(const Evas_Object *obj, const char *part);
+ static Evas_Object *_content_unset_hook(Evas_Object *obj, const char *part);
+ static void _activate(Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
static const char SIG_CHANGED[] = "changed";
static const Evas_Smart_Cb_Description _signals[] = {
{SIG_CHANGED, ""},
};
static Eina_Bool
++<<<<<<< HEAD
+_event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
++=======
+ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__,
+ Evas_Callback_Type type, void *event_info)
++>>>>>>> remotes/origin/upstream
{
if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
Evas_Event_Key_Down *ev = event_info;
return EINA_TRUE;
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_del_hook(Evas_Object *obj)
{
static void
_theme_hook(Evas_Object *obj)
{
++<<<<<<< HEAD
+ unsigned int counter = 0;
+ unsigned int i = 1;
+ unsigned int length = 0;
+ const char *str = NULL;
+ char labels[128] ;
+ char buffer[PATH_MAX]={'\0',};
+ char s1[PATH_MAX] = {'\0',};
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
+
++=======
++ Widget_Data *wd = elm_widget_data_get(obj);
++ if (!wd) return;
++>>>>>>> remotes/origin/upstream
_elm_widget_mirrored_reload(obj);
_mirrored_set(obj, elm_widget_mirrored_get(obj));
_elm_theme_object_set(obj, wd->chk, "check", "base", elm_widget_style_get(obj));
edje_object_signal_emit(wd->chk, "elm,state,disabled", "elm");
edje_object_message_signal_process(wd->chk);
edje_object_scale_set(wd->chk, elm_widget_scale_get(obj) * _elm_config->scale);
++<<<<<<< HEAD
+
+ //introduced internationalization of additional text parts used in style
+ while (1)
+ {
+ // s1 is used to store part name while buffer is used to store the part's value string
+ snprintf(labels,sizeof(labels),"label_%d",i++);
+ str = edje_object_data_get(wd->chk,labels);
+ if (!str) break;
+ length = strlen(str);
+ while ((str[counter]!= ' ') && (counter < length))
+ counter++;
+ if (counter == length)
+ continue;
+ strncpy(s1, str, counter);
+ s1[counter] = '\0';
+ strncpy(buffer, str + counter, sizeof(buffer));
+ edje_object_part_text_set(wd->chk, s1, E_(buffer));
+ }
++=======
++>>>>>>> remotes/origin/upstream
_sizing_eval(obj);
}
}
static void
++<<<<<<< HEAD
++=======
+ _signal_emit_hook(Evas_Object *obj, const char *emission, const char *source)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ edje_object_signal_emit(wd->chk, emission, source);
+ }
+
+ static void
+ _signal_callback_add_hook(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ edje_object_signal_callback_add(wd->chk, emission, source, func_cb, data);
+ }
+
+ static void
+ _signal_callback_del_hook(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ edje_object_signal_callback_del_full(wd->chk, emission, source, func_cb,
+ data);
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
{
ELM_CHECK_WIDTYPE(obj, widtype);
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_widget_activate_hook_set(obj, _activate_hook);
elm_widget_event_hook_set(obj, _event_hook);
++<<<<<<< HEAD
++=======
+ elm_widget_signal_emit_hook_set(obj, _signal_emit_hook);
+ elm_widget_signal_callback_add_hook_set(obj, _signal_callback_add_hook);
+ elm_widget_signal_callback_del_hook_set(obj, _signal_callback_del_hook);
++>>>>>>> remotes/origin/upstream
elm_widget_text_set_hook_set(obj, _elm_check_label_set);
elm_widget_text_get_hook_set(obj, _elm_check_label_get);
elm_widget_content_set_hook_set(obj, _content_set_hook);
}
EAPI void
++<<<<<<< HEAD
+elm_check_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_check_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_check_label_get(const Evas_Object *obj)
+{
+ return _elm_check_label_get(obj, NULL);
+}
+
+EAPI void
+elm_check_states_labels_set(Evas_Object *obj, const char *ontext, const char *offtext)
+{
+ _elm_check_label_set(obj, "on", ontext);
+ _elm_check_label_set(obj, "off", offtext);
+}
+
+EAPI void
+elm_check_states_labels_get(const Evas_Object *obj, const char **ontext, const char **offtext)
+{
+ if (ontext) *ontext = _elm_check_label_get(obj, "on");
+ if (offtext) *offtext = _elm_check_label_get(obj, "off");
+}
+
+EAPI void
+elm_check_icon_set(Evas_Object *obj, Evas_Object *icon)
+{
+ _content_set_hook(obj, "icon", icon);
+}
+
+EAPI Evas_Object *
+elm_check_icon_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, "icon");
+}
+
+EAPI Evas_Object *
+elm_check_icon_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, "icon");
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_check_state_set(Evas_Object *obj, Eina_Bool state)
{
ELM_CHECK_WIDTYPE(obj, widtype);
* for it to modify.
*
* Signals that you can add callbacks for are:
++<<<<<<< HEAD
+ * "changed" - This is called whenever the user changes the state of one of
+ * the check object(event_info is NULL).
+ *
+ * Default contents parts of the check widget that you can use for are:
++=======
+ * "changed" - This is called whenever the user changes the state of the check
+ * objects(event_info is NULL).
+ *
+ * Default content parts of the check widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the check
*
* Default text parts of the check widget that you can use for are:
* @li elm_object_part_content_set
* @li elm_object_part_content_get
* @li elm_object_part_content_unset
++<<<<<<< HEAD
++=======
+ * @li elm_object_signal_emit
+ * @li elm_object_signal_callback_add
+ * @li elm_object_signal_callback_del
++>>>>>>> remotes/origin/upstream
*
* @ref tutorial_check should give you a firm grasp of how to use this widget.
*
* @param obj The check object
* @param state The state to use (1 == on, 0 == off)
*
++<<<<<<< HEAD
+ * This sets the state of the check. If set
+ * with elm_check_state_pointer_set() the state of that variable is also
+ * changed. Calling this @b doesn't cause the "changed" signal to be emited.
++=======
+ * This sets the state of the check. If set with elm_check_state_pointer_set()
+ * the state of that variable is also changed. Calling this @b doesn't cause
+ * the "changed" signal to be emitted.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_check_state_set(Evas_Object *obj, Eina_Bool state);
#include <Elementary.h>
#include "elm_priv.h"
++<<<<<<< HEAD
++=======
+ #define DEFAULT_FIRST_INTERVAL 0.85
++>>>>>>> remotes/origin/upstream
typedef struct _Widget_Data Widget_Data;
struct _Widget_Data
Eina_Bool seconds : 1;
Eina_Bool am_pm : 1;
Eina_Bool edit : 1;
++<<<<<<< HEAD
+ Elm_Clock_Digedit digedit;
++=======
+ Elm_Clock_Edit_Mode digedit;
++>>>>>>> remotes/origin/upstream
int hrs, min, sec, timediff;
Evas_Object *digit[6];
Evas_Object *ampm;
Eina_Bool seconds : 1;
Eina_Bool am_pm : 1;
Eina_Bool edit : 1;
++<<<<<<< HEAD
+ Elm_Clock_Digedit digedit;
++=======
+ Elm_Clock_Edit_Mode digedit;
++>>>>>>> remotes/origin/upstream
} cur;
};
wd->cur.seconds = EINA_TRUE;
wd->cur.am_pm = EINA_TRUE;
wd->cur.edit = EINA_TRUE;
++<<<<<<< HEAD
+ wd->cur.digedit = ELM_CLOCK_NONE;
+ wd->first_interval = 0.85;
++=======
+ wd->cur.digedit = ELM_CLOCK_EDIT_DEFAULT;
+ wd->first_interval = DEFAULT_FIRST_INTERVAL;
++>>>>>>> remotes/origin/upstream
wd->timediff = 0;
_time_update(obj);
wd->edit = edit;
if (!edit)
_timediff_set(wd);
++<<<<<<< HEAD
+ if ((edit) && (wd->digedit == ELM_CLOCK_NONE))
+ elm_clock_digit_edit_set(obj, ELM_CLOCK_ALL);
++=======
+ if ((edit) && (wd->digedit == ELM_CLOCK_EDIT_DEFAULT))
+ elm_clock_edit_mode_set(obj, ELM_CLOCK_EDIT_ALL);
++>>>>>>> remotes/origin/upstream
else
_time_update(obj);
}
}
EAPI void
++<<<<<<< HEAD
+elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Digedit digedit)
++=======
+ elm_clock_edit_mode_set(Evas_Object *obj, Elm_Clock_Edit_Mode digedit)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
wd->digedit = digedit;
++<<<<<<< HEAD
+ if (digedit == ELM_CLOCK_NONE)
++=======
+ if (digedit == ELM_CLOCK_EDIT_DEFAULT)
++>>>>>>> remotes/origin/upstream
elm_clock_edit_set(obj, EINA_FALSE);
else
_time_update(obj);
}
++<<<<<<< HEAD
+EAPI Elm_Clock_Digedit
+elm_clock_digit_edit_get(const Evas_Object *obj)
++=======
+ EAPI Elm_Clock_Edit_Mode
+ elm_clock_edit_mode_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) 0;
Widget_Data *wd = elm_widget_data_get(obj);
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->am_pm = am_pm;
++=======
+ wd->am_pm = !!am_pm;
++>>>>>>> remotes/origin/upstream
_time_update(obj);
}
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->seconds = seconds;
++=======
+ wd->seconds = !!seconds;
++>>>>>>> remotes/origin/upstream
_time_update(obj);
}
}
EAPI void
++<<<<<<< HEAD
+elm_clock_interval_set(Evas_Object *obj, double interval)
++=======
+ elm_clock_first_interval_set(Evas_Object *obj, double interval)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->first_interval = interval;
+}
+
+EAPI double
+elm_clock_interval_get(const Evas_Object *obj)
++=======
+ wd->first_interval = !!interval;
+ }
+
+ EAPI double
+ elm_clock_first_interval_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
Widget_Data *wd = elm_widget_data_get(obj);
*
* A newly created clock will fetch system's time (already
* considering local time adjustments) to start with, and will tick
++<<<<<<< HEAD
+ * accondingly. It may or may not show seconds.
+ *
+ * Clocks have an @b edition mode. When in it, the sheets will
++=======
+ * accordingly. It may or may not show seconds.
+ *
+ * Clocks have an @b edition mode. When in it, the sheets will
++>>>>>>> remotes/origin/upstream
* display extra arrow indications on the top and bottom and the
* user may click on them to raise or lower the time values. After
* it's told to exit edition mode, it will keep ticking with that
*
* Also, when under edition mode, user clicks on the cited arrows
* which are @b held for some time will make the clock to flip the
++<<<<<<< HEAD
+ * sheet, thus editing the time, continuosly and automatically for
++=======
+ * sheet, thus editing the time, continuously and automatically for
++>>>>>>> remotes/origin/upstream
* the user. The interval between sheet flips will keep growing in
* time, so that it helps the user to reach a time which is distant
* from the one set.
* Supported elm_object common APIs.
* @li elm_object_signal_emit
* @li elm_object_signal_callback_add
++<<<<<<< HEAD
+ * @li elm_object_signal_callbacka_del
++=======
+ * @li elm_object_signal_callback_del
++>>>>>>> remotes/origin/upstream
*
* Here is an example on its usage:
* @li @ref clock_example
/**
* Identifiers for which clock digits should be editable, when a
++<<<<<<< HEAD
+ * clock widget is in edition mode. Values may be ORed together to
+ * make a mask, naturally.
+ *
+ * @see elm_clock_edit_set()
+ * @see elm_clock_digit_edit_set()
+ */
+typedef enum
+{
+ ELM_CLOCK_NONE = 0, /**< Default value. Means that all digits are editable, when in edition mode. */
+ ELM_CLOCK_HOUR_DECIMAL = 1 << 0, /**< Decimal algarism of hours value should be editable */
+ ELM_CLOCK_HOUR_UNIT = 1 << 1, /**< Unit algarism of hours value should be editable */
+ ELM_CLOCK_MIN_DECIMAL = 1 << 2, /**< Decimal algarism of minutes value should be editable */
+ ELM_CLOCK_MIN_UNIT = 1 << 3, /**< Unit algarism of minutes value should be editable */
+ ELM_CLOCK_SEC_DECIMAL = 1 << 4, /**< Decimal algarism of seconds value should be editable */
+ ELM_CLOCK_SEC_UNIT = 1 << 5, /**< Unit algarism of seconds value should be editable */
+ ELM_CLOCK_ALL = (1 << 6) - 1 /**< All digits should be editable */
+} Elm_Clock_Digedit;
++=======
+ * clock widget is in edition mode. Values may be OR-ed together to
+ * make a mask, naturally.
+ *
+ * @see elm_clock_edit_set()
+ * @see elm_clock_edit_mode_set()
+ */
+ typedef enum
+ {
+ ELM_CLOCK_EDIT_DEFAULT = 0, /**< Default value. Means that all digits are editable, when in edition mode. */
+ ELM_CLOCK_EDIT_HOUR_DECIMAL = 1 << 0, /**< Decimal algarism of hours value should be editable */
+ ELM_CLOCK_EDIT_HOUR_UNIT = 1 << 1, /**< Unit algarism of hours value should be editable */
+ ELM_CLOCK_EDIT_MIN_DECIMAL = 1 << 2, /**< Decimal algarism of minutes value should be editable */
+ ELM_CLOCK_EDIT_MIN_UNIT = 1 << 3, /**< Unit algarism of minutes value should be editable */
+ ELM_CLOCK_EDIT_SEC_DECIMAL = 1 << 4, /**< Decimal algarism of seconds value should be editable */
+ ELM_CLOCK_EDIT_SEC_UNIT = 1 << 5, /**< Unit algarism of seconds value should be editable */
+ ELM_CLOCK_EDIT_ALL = (1 << 6) - 1 /**< All digits should be editable */
+ } Elm_Clock_Edit_Mode;
++>>>>>>> remotes/origin/upstream
/**
* Add a new clock widget to the given parent Elementary
* @param obj The clock widget object
* @param hrs The hours to set
* @param min The minutes to set
++<<<<<<< HEAD
+ * @param sec The secondes to set
++=======
+ * @param sec The seconds to set
++>>>>>>> remotes/origin/upstream
*
* This function updates the time that is showed by the clock
* widget.
* This function makes a clock's time to be editable or not <b>by
* user interaction</b>. When in edition mode, clocks @b stop
* ticking, until one brings them back to canonical mode. The
++<<<<<<< HEAD
+ * elm_clock_digit_edit_set() function will influence which digits
++=======
+ * elm_clock_edit_mode_set() function will influence which digits
++>>>>>>> remotes/origin/upstream
* of the clock will be editable. By default, all of them will be
* (#ELM_CLOCK_NONE).
*
*
* @param obj The clock object
* @param digedit Bit mask indicating the digits to be editable
++<<<<<<< HEAD
+ * (values in #Elm_Clock_Digedit).
++=======
+ * (values in #Elm_Clock_Edit_Mode).
++>>>>>>> remotes/origin/upstream
*
* If the @p digedit param is #ELM_CLOCK_NONE, editing will be
* disabled on @p obj (same effect as elm_clock_edit_set(), with @c
* EINA_FALSE).
*
++<<<<<<< HEAD
+ * @see elm_clock_digit_edit_get()
+ *
+ * @ingroup Clock
+ */
+EAPI void elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Digedit digedit);
++=======
+ * @see elm_clock_edit_mode_get()
+ *
+ * @ingroup Clock
+ */
+ EAPI void elm_clock_edit_mode_set(Evas_Object *obj, Elm_Clock_Edit_Mode digedit);
++>>>>>>> remotes/origin/upstream
/**
* Retrieve what digits of the given clock widget should be
*
* @param obj The clock object
* @return Bit mask indicating the digits to be editable
++<<<<<<< HEAD
+ * (values in #Elm_Clock_Digedit).
+ *
+ * @see elm_clock_digit_edit_set() for more details
+ *
+ * @ingroup Clock
+ */
+EAPI Elm_Clock_Digedit elm_clock_digit_edit_get(const Evas_Object *obj);
++=======
+ * (values in #Elm_Clock_Edit_Mode).
+ *
+ * @see elm_clock_edit_mode_set() for more details
+ *
+ * @ingroup Clock
+ */
+ EAPI Elm_Clock_Edit_Mode elm_clock_edit_mode_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set if the given clock widget must show hours in military or
EAPI Eina_Bool elm_clock_show_seconds_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the interval on time updates for an user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @param interval The (first) interval value in seconds
++=======
+ * Set the first interval on time updates for a user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @param interval The first interval value in seconds
++>>>>>>> remotes/origin/upstream
*
* This interval value is @b decreased while the user holds the
* mouse pointer either incrementing or decrementing a given the
* The default starting interval value for automatic flips is
* @b 0.85 seconds.
*
++<<<<<<< HEAD
+ * @see elm_clock_interval_get()
+ *
+ * @ingroup Clock
+ */
+EAPI void elm_clock_interval_set(Evas_Object *obj, double interval);
+
+/**
+ * Get the interval on time updates for an user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_clock_interval_set() for more details
+ *
+ * @ingroup Clock
+ */
+EAPI double elm_clock_interval_get(const Evas_Object *obj);
++=======
+ * @see elm_clock_first_interval_get()
+ *
+ * @ingroup Clock
+ */
+ EAPI void elm_clock_first_interval_set(Evas_Object *obj, double interval);
+
+ /**
+ * Get the first interval on time updates for a user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @return The first interval value, in seconds, set on it
+ *
+ * @see elm_clock_first_interval_set() for more details
+ *
+ * @ingroup Clock
+ */
+ EAPI double elm_clock_first_interval_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
/**
++<<<<<<< HEAD
+ * @addtogroup CopyPaste
+ * @{
+ */
+
+typedef struct _Elm_Selection_Data Elm_Selection_Data;
+typedef Eina_Bool (*Elm_Drop_Cb)(void *d, Evas_Object *o, Elm_Selection_Data *data);
+
+typedef enum
+{
+ ELM_SEL_TYPE_PRIMARY,
+ ELM_SEL_TYPE_SECONDARY,
+ ELM_SEL_TYPE_CLIPBOARD,
+ ELM_SEL_TYPE_XDND,
+
+ ELM_SEL_TYPE_MAX,
+} Elm_Sel_Type;
+
+typedef enum
+{
+ /** Targets: for matching every atom requesting */
+ ELM_SEL_FORMAT_TARGETS = -1,
+ /** they come from outside of elm */
+ ELM_SEL_FORMAT_NONE = 0x0,
+ /** Plain unformated text: Used for things that don't want rich markup */
+ ELM_SEL_FORMAT_TEXT = 0x01,
+ /** Edje textblock markup, including inline images */
+ ELM_SEL_FORMAT_MARKUP = 0x02,
+ /** Images */
+ ELM_SEL_FORMAT_IMAGE = 0x04,
+ /** Vcards */
+ ELM_SEL_FORMAT_VCARD = 0x08,
+ /** Raw HTMLish things for widgets that want that stuff (hello webkit!) */
+ ELM_SEL_FORMAT_HTML = 0x10,
+
+ ELM_SEL_FORMAT_MAX
+} Elm_Sel_Format;
+
+struct _Elm_Selection_Data
+{
+ int x, y;
++=======
+ * @defgroup CopyPaste CopyPaste
+ *
+ * Implements the following functionality
+ * a. select, copy/cut and paste
+ * b. clipboard
+ * c. drag and drop
+ * in order to share data across application windows.
+ *
+ * Contains functions to select text or a portion of data,
+ * send it to a buffer, and paste the data into a target.
+ *
+ * elm_cnp provides a generic copy and paste facility based on its windowing system.
+ * It is not necessary to know the details of each windowing system,
+ * but some terms and behavior are common.
+ * Currently the X11 window system is widely used, and only X11 functionality is implemented.
+ *
+ * In X11R6 window system, CopyPaste works like a peer-to-peer communication.
+ * Copying is an operation on an object in an X server.
+ * X11 calls those objects 'selections' which have names.
+ * Generally, two selection types are needed for copy and paste:
+ * The Primary selection and the Clipboard selection.
+ * Primary selection is for selecting text (that means highlighted text).
+ * Clipboard selection is for explicit copying behavior
+ * (such as ctrl+c, or 'copy' in a menu).
+ * Thus, in applications most cases only use the clipboard selection.
+ * As stated before, taking ownership of a selection doesn't move any actual data.
+ * Copying and Pasting is described as follows:
+ * 1. Copy text in Program A : Program A takes ownership of the selection
+ * 2. Paste text in Program B : Program B notes that Program A owns the selection
+ * 3. Program B asks A for the text
+ * 4. Program A responds and sends the text to program B
+ * 5. Program B pastes the response
+ * More information is on
+ * - http://www.jwz.org/doc/x-cut-and-paste.html
+ * - X11R6 Inter-Client Communication Conventions Manual, section 2
+ *
+ * TODO: add for other window system.
+ *
+ * @{
+ */
+
+ /**
+ * Defines the types of selection property names.
+ * @see http://www.x.org/docs/X11/xlib.pdf
+ * for more details.
+ */
+ typedef enum
+ {
+ ELM_SEL_TYPE_PRIMARY, /**< Primary text selection (highlighted or selected text) */
+ ELM_SEL_TYPE_SECONDARY, /**< Used when primary selection is in use */
+ ELM_SEL_TYPE_XDND, /**< Drag 'n' Drop */
+ ELM_SEL_TYPE_CLIPBOARD, /**< Clipboard selection (ctrl+C) */
+ } Elm_Sel_Type;
+
+ /**
+ * Defines the types of content.
+ */
+ typedef enum
+ {
+ /** For matching every possible atom */
+ ELM_SEL_FORMAT_TARGETS = -1,
+ /** Content is from outside of Elementary */
+ ELM_SEL_FORMAT_NONE = 0x0,
+ /** Plain unformatted text: Used for things that don't want rich markup */
+ ELM_SEL_FORMAT_TEXT = 0x01,
+ /** Edje textblock markup, including inline images */
+ ELM_SEL_FORMAT_MARKUP = 0x02,
+ /** Images */
+ ELM_SEL_FORMAT_IMAGE = 0x04,
+ /** Vcards */
+ ELM_SEL_FORMAT_VCARD = 0x08,
+ /** Raw HTML-like data (eg. webkit) */
+ ELM_SEL_FORMAT_HTML = 0x10,
+ } Elm_Sel_Format;
+
+ /**
+ * Structure holding the info about selected data.
+ */
+ struct _Elm_Selection_Data
+ {
+ Evas_Coord x, y;
++>>>>>>> remotes/origin/upstream
Elm_Sel_Format format;
void *data;
size_t len;
};
++<<<<<<< HEAD
+
+/**
+ * @brief Set a data of a widget to copy and paste.
+ *
+ * Append the given callback to the list. This functions will be called
+ * called.
+ *
+ * @param selection selection type for copying and pasting
+ * @param widget The source widget pointer
+ * @param format Type of selection format
+ * @param buf The pointer of data source
+ * @return If EINA_TRUE, setting data is success.
++=======
+ typedef struct _Elm_Selection_Data Elm_Selection_Data;
+
+ /**
+ * Callback invoked in when the selected data is 'dropped' at its destination.
+ *
+ * @param data Application specific data
+ * @param obj The evas object where selected data is 'dropped'.
+ * @param ev struct holding information about selected data
+ * FIXME: this should probably be a smart callback
+ */
+ typedef Eina_Bool (*Elm_Drop_Cb)(void *data, Evas_Object *obj, Elm_Selection_Data *ev);
+
+
+ /**
+ * @brief Set copy data for a widget.
+ *
+ * Set copy data and take ownership of selection. Format is used for specifying the selection type,
+ * and this is used during pasting.
+ *
+ * @param selection Selection type for copying and pasting
+ * @param obj The source widget pointer
+ * @param format Selection format
+ * @param buf The data selected
+ * @param buflen The size of @p buf
+ * @return If EINA_TRUE, setting data was successful.
++>>>>>>> remotes/origin/upstream
+ *
+ * @ingroup CopyPaste
+ *
+ */
++<<<<<<< HEAD
+
+EAPI Eina_Bool elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const void *buf, size_t buflen);
+
+/**
+ * @brief Retrive the data from the widget which is set for copying and pasting.
+ *
+ * Getting the data from the widget which is set for copying and pasting.
+ * Mainly the widget is elm_entry. If then @p datacb and @p udata are
+ * can be NULL. If not, @p datacb and @p udata are used for retriving data.
+ *
+ * @see also elm_cnp_selection_set()
+ *
+ * @param selection selection type for copying and pasting
+ * @param widget The source widget pointer
+ * @param datacb The user data callback if the target widget isn't elm_entry
+ * @param udata The user data pointer for @p datacb
+ * @return If EINA_TRUE, getting data is success.
*
* @ingroup CopyPaste
*
*/
+
+EAPI Eina_Bool elm_cnp_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
+
+/**
+ * @brief Clear the data in the widget which is set for copying and pasting.
+ *
+ * Clear the data in the widget. Normally this function isn't need to call.
+ *
+ * @see also elm_cnp_selection_set()
+ *
+ * @param selection selection type for copying and pasting
+ * @param widget The source widget pointer
+ * @return If EINA_TRUE, clearing data is success.
++=======
+ EAPI Eina_Bool elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection,
+ Elm_Sel_Format format,
+ const void *buf, size_t buflen);
+
+ /**
+ * @brief Retrieve data from a widget that has a selection.
+ *
+ * Gets the current selection data from a widget.
+ * The widget input here will usually be elm_entry,
+ * in which case @p datacb and @p udata can be NULL.
+ * If a different widget is passed, @p datacb and @p udata are used for retrieving data.
+ *
+ * @see also elm_cnp_selection_set()
+ *
+ * @param selection Selection type for copying and pasting
+ * @param format Selection format
+ * @param obj The source widget
+ * @param datacb The user data callback if the target widget isn't elm_entry
+ * @param udata The user data pointer for @p datacb
+ * @return If EINA_TRUE, getting selection data was successful.
+ *
+ * @ingroup CopyPaste
+ */
+ EAPI Eina_Bool elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection,
+ Elm_Sel_Format format,
+ Elm_Drop_Cb datacb, void *udata);
+
+ /**
+ * @brief Clear the selection data of a widget.
+ *
+ * Clear all data from the selection which is owned by a widget.
+ *
+ * @see also elm_cnp_selection_set()
+ *
+ * @param obj The source widget
+ * @param selection Selection type for copying and pasting
+ * @return If EINA_TRUE, clearing data was successful.
++>>>>>>> remotes/origin/upstream
*
* @ingroup CopyPaste
*
*/
++<<<<<<< HEAD
+
+EAPI Eina_Bool elm_cnp_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
++=======
+ EAPI Eina_Bool elm_object_cnp_selection_clear(Evas_Object *obj,
+ Elm_Sel_Type selection);
++>>>>>>> remotes/origin/upstream
/**
* @}
static void _color_with_saturation(void *data);
static void _color_with_lightness(void *data);
static void _draw_rects(void *data, double x);
++<<<<<<< HEAD
+static void _arrow_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _colorbar_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _left_button_clicked_cb(void *data, Evas_Object * obj, void *event_info);
+static void _left_button_repeat_cb(void *data, Evas_Object * obj, void *event_info);
+static void _right_button_clicked_cb(void *data, Evas_Object * obj, void *event_info);
+static void _right_button_repeat_cb(void *data, Evas_Object * obj, void *event_info);
++=======
+ static void _arrow_cb(void *data, Evas_Object *obj, const char *emission,
+ const char *source);
+ static void _colorbar_cb(void *data, Evas *e, Evas_Object *obj,
+ void *event_info);
+ static void _left_button_clicked_cb(void *data, Evas_Object * obj,
+ void *event_info);
+ static void _left_button_repeat_cb(void *data, Evas_Object * obj,
+ void *event_info);
+ static void _right_button_clicked_cb(void *data, Evas_Object * obj,
+ void *event_info);
+ static void _right_button_repeat_cb(void *data, Evas_Object * obj,
+ void *event_info);
++>>>>>>> remotes/origin/upstream
static void _add_colorbar(Evas_Object *obj);
static void _set_color(Evas_Object *obj, int r, int g, int b, int a);
}
static void
++<<<<<<< HEAD
+_arrow_cb(void *data, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__)
++=======
+ _arrow_cb(void *data, Evas_Object *obj, const char *emission __UNUSED__,
+ const char *source __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Colorselector_Data *cp = data;
double x, y;
}
static void
++<<<<<<< HEAD
+_left_button_clicked_cb(void *data, Evas_Object * obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _left_button_clicked_cb(void *data, Evas_Object * obj __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Colorselector_Data *cp = data;
double x, y;
}
static void
++<<<<<<< HEAD
+_left_button_repeat_cb(void *data, Evas_Object * obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _left_button_repeat_cb(void *data, Evas_Object * obj __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Colorselector_Data *cp = data;
double x, y;
}
static void
++<<<<<<< HEAD
+_right_button_clicked_cb(void *data, Evas_Object * obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _right_button_clicked_cb(void *data, Evas_Object * obj __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Colorselector_Data *cp = data;
double x, y;
}
static void
++<<<<<<< HEAD
+_right_button_repeat_cb(void *data, Evas_Object * obj __UNUSED__, void *event_info __UNUSED__)
++=======
+ _right_button_repeat_cb(void *data, Evas_Object * obj __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Colorselector_Data *cp = data;
double x, y;
/* load colorbar image */
wd->cp[i]->bar = edje_object_add(e);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/%s", colorbar_name, elm_widget_style_get(obj));
++=======
+ snprintf(buf, sizeof(buf), "%s/%s", colorbar_name,
+ elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
_elm_theme_object_set(obj, wd->cp[i]->bar, "colorselector", "image",
buf);
edje_object_part_swallow(wd->cp[i]->colorbar, "elm.bar",
if (i == 3)
{
wd->cp[i]->bg_rect = edje_object_add(e);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "%s/%s", colorbar_name, elm_widget_style_get(obj));
++=======
+ snprintf(buf, sizeof(buf), "%s/%s", colorbar_name,
+ elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
_elm_theme_object_set(obj, wd->cp[i]->bg_rect, "colorselector",
"bg_image", buf);
edje_object_part_swallow(wd->cp[i]->colorbar, "elm.bar_bg",
/* load left button */
wd->cp[i]->lbt = elm_button_add(obj);
++<<<<<<< HEAD
+ snprintf(buf, sizeof(buf), "colorselector/left/%s", elm_widget_style_get(obj));
++=======
+ snprintf(buf, sizeof(buf), "colorselector/left/%s",
+ elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
elm_object_style_set(wd->cp[i]->lbt, buf);
elm_widget_sub_object_add(obj, wd->cp[i]->lbt);
edje_object_part_swallow(wd->cp[i]->colorbar, "elm.l_button",
wd->cp[i]->lbt);
++<<<<<<< HEAD
+ evas_object_smart_callback_add(wd->cp[i]->lbt, "clicked", _left_button_clicked_cb, wd->cp[i]);
+ elm_button_autorepeat_set(wd->cp[i]->lbt, EINA_TRUE);
+ elm_button_autorepeat_initial_timeout_set(wd->cp[i]->lbt, _elm_config->longpress_timeout);
+ elm_button_autorepeat_gap_timeout_set(wd->cp[i]->lbt, (1.0 / _elm_config->fps));
+ evas_object_smart_callback_add(wd->cp[i]->lbt, "repeated",_left_button_repeat_cb, wd->cp[i]);
+
+ /* load right button */
+ wd->cp[i]->rbt = elm_button_add(obj);
+ snprintf(buf, sizeof(buf), "colorselector/right/%s", elm_widget_style_get(obj));
++=======
+ evas_object_smart_callback_add(wd->cp[i]->lbt, "clicked",
+ _left_button_clicked_cb, wd->cp[i]);
+ elm_button_autorepeat_set(wd->cp[i]->lbt, EINA_TRUE);
+ elm_button_autorepeat_initial_timeout_set(wd->cp[i]->lbt,
+ _elm_config->longpress_timeout);
+ elm_button_autorepeat_gap_timeout_set(wd->cp[i]->lbt,
+ (1.0 / _elm_config->fps));
+ evas_object_smart_callback_add(wd->cp[i]->lbt, "repeated",
+ _left_button_repeat_cb, wd->cp[i]);
+
+ /* load right button */
+ wd->cp[i]->rbt = elm_button_add(obj);
+ snprintf(buf, sizeof(buf), "colorselector/right/%s",
+ elm_widget_style_get(obj));
++>>>>>>> remotes/origin/upstream
elm_object_style_set(wd->cp[i]->rbt, buf);
elm_widget_sub_object_add(obj, wd->cp[i]->rbt);
edje_object_part_swallow(wd->cp[i]->colorbar, "elm.r_button",
wd->cp[i]->rbt);
++<<<<<<< HEAD
+ evas_object_smart_callback_add(wd->cp[i]->rbt, "clicked", _right_button_clicked_cb, wd->cp[i]);
+ elm_button_autorepeat_set(wd->cp[i]->rbt, EINA_TRUE);
+ elm_button_autorepeat_initial_timeout_set(wd->cp[i]->rbt, _elm_config->longpress_timeout);
+ elm_button_autorepeat_gap_timeout_set(wd->cp[i]->rbt, (1.0 / _elm_config->fps));
+ evas_object_smart_callback_add(wd->cp[i]->rbt, "repeated",_right_button_repeat_cb, wd->cp[i]);
++=======
+ evas_object_smart_callback_add(wd->cp[i]->rbt, "clicked",
+ _right_button_clicked_cb, wd->cp[i]);
+ elm_button_autorepeat_set(wd->cp[i]->rbt, EINA_TRUE);
+ elm_button_autorepeat_initial_timeout_set(wd->cp[i]->rbt,
+ _elm_config->longpress_timeout);
+ elm_button_autorepeat_gap_timeout_set(wd->cp[i]->rbt,
+ (1.0 / _elm_config->fps));
+ evas_object_smart_callback_add(wd->cp[i]->rbt, "repeated",
+ _right_button_repeat_cb, wd->cp[i]);
++>>>>>>> remotes/origin/upstream
}
}
}
EAPI void
++<<<<<<< HEAD
+elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g, int *b, int*a)
++=======
+ elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
ELM_CHECK_WIDTYPE(obj, widtype);
if (b) *b = wd->b;
if (a) *a = wd->a;
}
++<<<<<<< HEAD
++=======
+
+ EAPI void
+ elm_colorselector_mode_set(Evas_Object *obj, Elm_Colorselector_Mode mode __UNUSED__)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ //TODO: Implement!
+ }
+
+ EAPI Elm_Colorselector_Mode
+ elm_colorselector_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_COLORSELECTOR_PALETTE;
+ //TODO: Implement!
+ return ELM_COLORSELECTOR_PALETTE;
+ }
+
+ EAPI void
+ elm_colorselector_palette_item_color_get(const Elm_Object_Item *it, int *r __UNUSED__, int *g __UNUSED__, int *b __UNUSED__, int*a __UNUSED__)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ //TODO: Implement!
+ }
+
+ EAPI void
+ elm_colorselector_palette_item_color_set(Elm_Object_Item *it, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ //TODO: Implement!
+ }
+
+ EAPI Elm_Object_Item *
+ elm_colorselector_palette_color_add(Evas_Object *obj, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ //TODO: Implement!
+ return NULL;
+ }
+
+ EAPI void
+ elm_colorselector_palette_clear(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ //TODO: Implement!
+ }
+
+ EAPI void
+ elm_colorselector_palette_name_set(Evas_Object *obj, const char *palette_name __UNUSED__)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ //TODO: Implement!
+ }
+
+ EAPI const char*
+ elm_colorselector_palette_name_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ //TODO: Implement!
+ return NULL;
+ }
++>>>>>>> remotes/origin/upstream
* See @ref tutorial_colorselector.
*/
++<<<<<<< HEAD
++=======
+ typedef enum
+ {
+ ELM_COLORSELECTOR_PALETTE = 0,
+ ELM_COLORSELECTOR_COMPONENTS,
+ ELM_COLORSELECTOR_BOTH
+ } Elm_Colorselector_Mode;
+
++>>>>>>> remotes/origin/upstream
/**
* @brief Add a new colorselector to the parent
*
EAPI void elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
/**
++<<<<<<< HEAD
++=======
+ * Set a Colorselector mode.
+ * Colorselector
+ *
+ * @param obj Colorselector object
+ * @param mode
+ * @param g G color value to be returned
+ * @param b B color value to be returned
+ * @param a A color value to be returned
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_mode_set(Evas_Object *obj, Elm_Colorselector_Mode mode);
+
+ /**
+ * Get a Colorselector mode.
+ *
+ * @param item The color palette item.
+ * @param r R color value to be returned
+ * @param g G color value to be returned
+ * @param b B color value to be returned
+ * @param a A color value to be returned
+ *
+ * @ingroup Colorselector
+ */
+ EAPI Elm_Colorselector_Mode elm_colorselector_mode_get(const Evas_Object *obj);
+
+ /**
+ * Get a palette item's color.
+ *
+ * @param item The color palette item.
+ * @param r integer pointer for r-value of color
+ * @param g integer pointer for g-value of color
+ * @param b integer pointer for b-value of color
+ * @param a integer pointer for a-value of color
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_palette_item_color_get(const Elm_Object_Item *it, int *r, int *g, int *b, int *a);
+
+ /**
+ * Set the palette item's color.
+ *
+ * @param item The color palette item.
+ * @param r r-value of color
+ * @param g g-value of color
+ * @param b b-value of color
+ * @param a a-value of color
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_palette_item_color_set(Elm_Object_Item *it, int r, int g, int b, int a);
+
+ /**
+ * Add a new color item to palette.
+ *
+ * @param obj The Colorselector object
+ * @param r r-value of color
+ * @param g g-value of color
+ * @param b b-value of color
+ * @param a a-value of color
+ * @return A new color palette Item.
+ *
+ * @ingroup Colorselector
+ */
+ EAPI Elm_Object_Item *elm_colorselector_palette_color_add(Evas_Object *obj, int r, int g, int b, int a);
+
+ /**
+ * Clear the palette items.
+ *
+ * @param obj The Colorselector object
+ *
+ * @note This API will be available when ELM_COLORSELECTOR_PALETTE or
+ * ELM_COLORSELECTOR_BOTH mode is set.
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_palette_clear(Evas_Object *obj);
+
+ /**
+ * Set current palette's name
+ *
+ * @param obj The Colorselector object
+ * @param palette_name Name of palette
+ *
+ * When colorpalette name is set, colors will be loaded from and saved to config
+ * using the set name. If no name is set then colors will be loaded from or
+ * saved to "default" config.
+ *
+ * @ingroup Colorselector
+ */
+ EAPI void elm_colorselector_palette_name_set(Evas_Object *obj, const char *palette_name);
+
+ /**
+ * Get current palette's name
+ *
+ * @param obj The Colorselector object
+ * @return Name of palette
+ *
+ * Returns the currently set palette name using which colors will be
+ * saved/loaded in to config.
+ *
+ * @ingroup Colorselector
+ */
+ EAPI const char *elm_colorselector_palette_name_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
char *_elm_profile = NULL;
static Eet_Data_Descriptor *_config_edd = NULL;
static Eet_Data_Descriptor *_config_font_overlay_edd = NULL;
++<<<<<<< HEAD
++=======
+ const char *_elm_preferred_engine = NULL;
++>>>>>>> remotes/origin/upstream
static Ecore_Poller *_elm_cache_flush_poller = NULL;
ELM_CONFIG_VAL(D, T, bring_in_scroll_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, zoom_friction, T_DOUBLE);
ELM_CONFIG_VAL(D, T, thumbscroll_bounce_enable, T_UCHAR);
++<<<<<<< HEAD
+ ELM_CONFIG_VAL(D, T, scroll_smooth_time_interval, T_DOUBLE);
++=======
++>>>>>>> remotes/origin/upstream
ELM_CONFIG_VAL(D, T, scroll_smooth_amount, T_DOUBLE);
ELM_CONFIG_VAL(D, T, scroll_smooth_history_weight, T_DOUBLE);
ELM_CONFIG_VAL(D, T, scroll_smooth_future_time, T_DOUBLE);
ELM_CONFIG_VAL(D, T, glayer_long_tap_start_timeout, T_DOUBLE);
ELM_CONFIG_VAL(D, T, access_mode, T_INT);
ELM_CONFIG_VAL(D, T, glayer_continues_enable, T_UCHAR);
++<<<<<<< HEAD
++=======
+ ELM_CONFIG_VAL(D, T, week_start, T_INT);
+ ELM_CONFIG_VAL(D, T, weekend_start, T_INT);
+ ELM_CONFIG_VAL(D, T, weekend_len, T_INT);
++>>>>>>> remotes/origin/upstream
#undef T
#undef D
#undef T_INT
{
Elm_Text_Class *tc;
tc = malloc(sizeof(*tc));
++<<<<<<< HEAD
++=======
+ if (!tc) continue;
++>>>>>>> remotes/origin/upstream
*tc = _elm_text_classes[i];
Eina_List *
_elm_config_profiles_list(void)
{
++<<<<<<< HEAD
+ const Eina_File_Direct_Info *info;
++=======
+ Eina_File_Direct_Info *info;
++>>>>>>> remotes/origin/upstream
Eina_List *flist = NULL;
Eina_Iterator *file_it;
char buf[PATH_MAX];
EINA_ITERATOR_FOREACH(file_it, info)
{
++<<<<<<< HEAD
++=======
+ Eina_Stat st;
+
+ if (eina_file_statat(eina_iterator_container_get(file_it), info, &st))
+ {
+ ERR("this is bad.");
+ continue;
+ }
++>>>>>>> remotes/origin/upstream
if (info->name_length >= len)
continue;
static Eina_Bool
_elm_cache_flush_cb(void *data __UNUSED__)
{
++<<<<<<< HEAD
+ elm_all_flush();
++=======
+ elm_cache_all_flush();
++>>>>>>> remotes/origin/upstream
return ECORE_CALLBACK_RENEW;
}
Eina_List *l;
Evas_Object *win;
++<<<<<<< HEAD
+ elm_all_flush();
++=======
+ elm_cache_all_flush();
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(_elm_win_list, l, win)
{
* profile. Fallback to default before moving on */
// config load fail - defaults
++<<<<<<< HEAD
+ /* XXX: do these make sense? Only if it's valid to install the lib
+ * without the config, but do we want that? */
++=======
+ // why are these here? well if they are, it means you can make a gui
+ // config recovery app i guess...
++>>>>>>> remotes/origin/upstream
_elm_config = ELM_NEW(Elm_Config);
_elm_config->config_version = ELM_CONFIG_VERSION;
_elm_config->engine = eina_stringshare_add("software_x11");
_elm_config->zoom_friction = 0.5;
_elm_config->thumbscroll_border_friction = 0.5;
_elm_config->thumbscroll_sensitivity_friction = 0.25; // magic number! just trial and error shows this makes it behave "nicer" and not run off at high speed all the time
++<<<<<<< HEAD
+ _elm_config->scroll_smooth_time_interval = 0.008;
++=======
++>>>>>>> remotes/origin/upstream
_elm_config->scroll_smooth_amount = 1.0;
_elm_config->scroll_smooth_history_weight = 0.3;
_elm_config->scroll_smooth_future_time = 0.0;
_elm_config->glayer_flick_time_limit_ms = 120; /* ms to finish flick */
_elm_config->glayer_long_tap_start_timeout = 1.2; /* 1.2 second to start long-tap */
_elm_config->glayer_continues_enable = EINA_TRUE; /* Continue gestures default */
++<<<<<<< HEAD
++=======
+ _elm_config->week_start = 1; /* monday */
+ _elm_config->weekend_start = 6; /* saturday */
+ _elm_config->weekend_len = 2;
++>>>>>>> remotes/origin/upstream
}
static const char *
ok = ecore_file_mkpath(buf);
if (!ok)
{
++<<<<<<< HEAD
+ ERR("Problem acessing Elementary's user configuration directory: %s",
++=======
+ ERR("Problem accessing Elementary's user configuration directory: %s",
++>>>>>>> remotes/origin/upstream
buf);
return EINA_FALSE;
}
_elm_config->thumbscroll_sensitivity_friction = friction;
}
++<<<<<<< HEAD
+ s = getenv("ELM_SCROLL_SMOOTH_TIME_INTERVAL");
+ if (s) _elm_config->scroll_smooth_time_interval = atof(s);
++=======
++>>>>>>> remotes/origin/upstream
s = getenv("ELM_SCROLL_SMOOTH_AMOUNT");
if (s) _elm_config->scroll_smooth_amount = atof(s);
s = getenv("ELM_SCROLL_SMOOTH_HISTORY_WEIGHT");
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_mirrored_get(void)
++=======
+ elm_config_mirrored_get(void)
++>>>>>>> remotes/origin/upstream
{
return _elm_config->is_mirrored;
}
EAPI void
++<<<<<<< HEAD
+elm_mirrored_set(Eina_Bool mirrored)
++=======
+ elm_config_mirrored_set(Eina_Bool mirrored)
++>>>>>>> remotes/origin/upstream
{
_elm_config->is_mirrored = mirrored;
_elm_rescale();
}
++<<<<<<< HEAD
++=======
+ EAPI Eina_Bool
+ elm_config_cursor_engine_only_get(void)
+ {
+ return _elm_config->cursor_engine_only;
+ }
+
+ EAPI void
+ elm_config_cursor_engine_only_set(Eina_Bool engine_only)
+ {
+ engine_only = !!engine_only;
+ _elm_config->cursor_engine_only = engine_only;
+ }
+
+ EINA_DEPRECATED EAPI double
+ elm_tooltip_delay_get(void)
+ {
+ return elm_config_tooltip_delay_get();
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_tooltip_delay_set(double delay)
+ {
+ elm_config_tooltip_delay_set(delay);
+ return EINA_TRUE;
+ }
+
+ EAPI double
+ elm_config_tooltip_delay_get(void)
+ {
+ return _elm_config->tooltip_delay;
+ }
+
+ EAPI void
+ elm_config_tooltip_delay_set(double delay)
+ {
+ if (delay < 0.0) return;
+ _elm_config->tooltip_delay = delay;
+ }
+
+ EAPI double
+ elm_config_scale_get(void)
+ {
+ return _elm_config->scale;
+ }
+
+ EAPI void
+ elm_config_scale_set(double scale)
+ {
+ if (_elm_config->scale == scale) return;
+ _elm_config->scale = scale;
+ _elm_rescale();
+ }
+
+ EAPI Eina_Bool
+ elm_config_password_show_last_get(void)
+ {
+ return _elm_config->password_show_last;
+ }
+
+ EAPI void
+ elm_config_password_show_last_set(Eina_Bool password_show_last)
+ {
+ if (_elm_config->password_show_last == password_show_last) return;
+ _elm_config->password_show_last = password_show_last;
+ edje_password_show_last_set(_elm_config->password_show_last);
+ }
+
+ EAPI double
+ elm_config_password_show_last_timeout_get(void)
+ {
+ return _elm_config->password_show_last_timeout;
+ }
+
+ EAPI void
+ elm_config_password_show_last_timeout_set(double password_show_last_timeout)
+ {
+ if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
+ _elm_config->password_show_last_timeout = password_show_last_timeout;
+ edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
+ }
+
+ EAPI Eina_Bool
+ elm_config_save(void)
+ {
+ return _elm_config_save();
+ }
+
+ EAPI void
+ elm_config_reload(void)
+ {
+ _elm_config_reload();
+ }
+
+ EAPI const char *
+ elm_config_profile_get(void)
+ {
+ return _elm_config_current_profile_get();
+ }
+
+ EAPI const char *
+ elm_config_profile_dir_get(const char *profile,
+ Eina_Bool is_user)
+ {
+ return _elm_config_profile_dir_get(profile, is_user);
+ }
+
+ EAPI void
+ elm_config_profile_dir_free(const char *p_dir)
+ {
+ free((void *)p_dir);
+ }
+
+ EAPI Eina_List *
+ elm_config_profile_list_get(void)
+ {
+ return _elm_config_profiles_list();
+ }
+
+ EAPI void
+ elm_config_profile_list_free(Eina_List *l)
+ {
+ const char *dir;
+
+ EINA_LIST_FREE(l, dir)
+ eina_stringshare_del(dir);
+ }
+
+ EAPI void
+ elm_config_profile_set(const char *profile)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(profile);
+ _elm_config_profile_set(profile);
+ }
+
+ EAPI const char *
+ elm_config_engine_get(void)
+ {
+ return _elm_config->engine;
+ }
+
+ EAPI void
+ elm_config_engine_set(const char *engine)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(engine);
+
+ _elm_config_engine_set(engine);
+ }
+
+ EAPI Eina_List *
+ elm_config_text_classes_list_get(void)
+ {
+ return _elm_config_text_classes_get();
+ }
+
+ EAPI void
+ elm_config_text_classes_list_free(Eina_List *list)
+ {
+ _elm_config_text_classes_free(list);
+ }
+
+ EAPI const Eina_List *
+ elm_config_font_overlay_list_get(void)
+ {
+ return _elm_config_font_overlays_list();
+ }
+
+ EAPI void
+ elm_config_font_overlay_set(const char *text_class,
+ const char *font,
+ Evas_Font_Size size)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(text_class);
+ _elm_config_font_overlay_set(text_class, font, size);
+ }
+
+ EAPI void
+ elm_config_font_overlay_unset(const char *text_class)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(text_class);
+ _elm_config_font_overlay_remove(text_class);
+ }
+
+ EAPI void
+ elm_config_font_overlay_apply(void)
+ {
+ _elm_config_font_overlay_apply();
+ }
+
+ EAPI Evas_Coord
+ elm_config_finger_size_get(void)
+ {
+ return _elm_config->finger_size;
+ }
+
+ EAPI void
+ elm_config_finger_size_set(Evas_Coord size)
+ {
+ if (_elm_config->finger_size == size) return;
+ _elm_config->finger_size = size;
+ _elm_rescale();
+ }
+
+ EAPI int
+ elm_config_cache_flush_interval_get(void)
+ {
+ return _elm_config->cache_flush_poll_interval;
+ }
+
+ EAPI void
+ elm_config_cache_flush_interval_set(int size)
+ {
+ if (_elm_config->cache_flush_poll_interval == size) return;
+ _elm_config->cache_flush_poll_interval = size;
+
+ _elm_recache();
+ }
+
+ EAPI Eina_Bool
+ elm_config_cache_flush_enabled_get(void)
+ {
+ return _elm_config->cache_flush_enable;
+ }
+
+ EAPI void
+ elm_config_cache_flush_enabled_set(Eina_Bool enabled)
+ {
+ enabled = !!enabled;
+ if (_elm_config->cache_flush_enable == enabled) return;
+ _elm_config->cache_flush_enable = enabled;
+
+ _elm_recache();
+ }
+
+ EINA_DEPRECATED EAPI int
+ elm_font_cache_get(void)
+ {
+ return elm_config_cache_font_cache_size_get();
+ }
+
+ EAPI int
+ elm_config_cache_font_cache_size_get(void)
+ {
+ return _elm_config->font_cache;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_font_cache_set(int size)
+ {
+ elm_config_cache_font_cache_size_set(size);
+ }
+
+ EAPI void
+ elm_config_cache_font_cache_size_set(int size)
+ {
+ if (_elm_config->font_cache == size) return;
+ _elm_config->font_cache = size;
+
+ _elm_recache();
+ }
+
+ EINA_DEPRECATED EAPI int
+ elm_image_cache_get(void)
+ {
+ return elm_config_cache_image_cache_size_get();
+ }
+
+ EAPI int
+ elm_config_cache_image_cache_size_get(void)
+ {
+ return _elm_config->image_cache;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_image_cache_set(int size)
+ {
+ elm_config_cache_image_cache_size_set(size);
+ }
+
+ EAPI void
+ elm_config_cache_image_cache_size_set(int size)
+ {
+ if (_elm_config->image_cache == size) return;
+ _elm_config->image_cache = size;
+
+ _elm_recache();
+ }
+
+ EINA_DEPRECATED EAPI int
+ elm_edje_file_cache_get(void)
+ {
+ return elm_config_cache_edje_file_cache_size_get();
+ }
+
+ EAPI int
+ elm_config_cache_edje_file_cache_size_get()
+ {
+ return _elm_config->edje_cache;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_edje_file_cache_set(int size)
+ {
+ elm_config_cache_edje_file_cache_size_set(size);
+ }
+
+ EAPI void
+ elm_config_cache_edje_file_cache_size_set(int size)
+ {
+ if (_elm_config->edje_cache == size) return;
+ _elm_config->edje_cache = size;
+
+ _elm_recache();
+ }
+
+ EINA_DEPRECATED EAPI int
+ elm_edje_collection_cache_get(void)
+ {
+ return elm_config_cache_edje_collection_cache_size_get();
+ }
+
+ EAPI int
+ elm_config_cache_edje_collection_cache_size_get(void)
+ {
+ return _elm_config->edje_collection_cache;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_edje_collection_cache_set(int size)
+ {
+ elm_config_cache_edje_collection_cache_size_set(size);
+ }
+
+ EAPI void
+ elm_config_cache_edje_collection_cache_size_set(int size)
+ {
+ if (_elm_config->edje_collection_cache == size) return;
+ _elm_config->edje_collection_cache = size;
+
+ _elm_recache();
+ }
+
+ EAPI Eina_Bool
+ elm_config_focus_highlight_enabled_get(void)
+ {
+ return _elm_config->focus_highlight_enable;
+ }
+
+ EAPI void
+ elm_config_focus_highlight_enabled_set(Eina_Bool enable)
+ {
+ _elm_config->focus_highlight_enable = !!enable;
+ }
+
+ EAPI Eina_Bool
+ elm_config_focus_highlight_animate_get(void)
+ {
+ return _elm_config->focus_highlight_animate;
+ }
+
+ EAPI void
+ elm_config_focus_highlight_animate_set(Eina_Bool animate)
+ {
+ _elm_config->focus_highlight_animate = !!animate;
+ }
+
+ EAPI Eina_Bool
+ elm_config_scroll_bounce_enabled_get(void)
+ {
+ return _elm_config->thumbscroll_bounce_enable;
+ }
+
+ EAPI void
+ elm_config_scroll_bounce_enabled_set(Eina_Bool enabled)
+ {
+ _elm_config->thumbscroll_bounce_enable = enabled;
+ }
+
+ EAPI double
+ elm_config_scroll_bounce_friction_get(void)
+ {
+ return _elm_config->thumbscroll_bounce_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_bounce_friction_set(double friction)
+ {
+ _elm_config->thumbscroll_bounce_friction = friction;
+ }
+
+ EAPI double
+ elm_config_scroll_page_scroll_friction_get(void)
+ {
+ return _elm_config->page_scroll_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_page_scroll_friction_set(double friction)
+ {
+ _elm_config->page_scroll_friction = friction;
+ }
+
+ EAPI double
+ elm_config_scroll_bring_in_scroll_friction_get(void)
+ {
+ return _elm_config->bring_in_scroll_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_bring_in_scroll_friction_set(double friction)
+ {
+ _elm_config->bring_in_scroll_friction = friction;
+ }
+
+ EAPI double
+ elm_config_scroll_zoom_friction_get(void)
+ {
+ return _elm_config->zoom_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_zoom_friction_set(double friction)
+ {
+ _elm_config->zoom_friction = friction;
+ }
+
+ EAPI Eina_Bool
+ elm_config_scroll_thumbscroll_enabled_get(void)
+ {
+ return _elm_config->thumbscroll_enable;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
+ {
+ _elm_config->thumbscroll_enable = enabled;
+ }
+
+ EAPI unsigned int
+ elm_config_scroll_thumbscroll_threshold_get(void)
+ {
+ return _elm_config->thumbscroll_threshold;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold)
+ {
+ _elm_config->thumbscroll_threshold = threshold;
+ }
+
+ EAPI double
+ elm_config_scroll_thumbscroll_momentum_threshold_get(void)
+ {
+ return _elm_config->thumbscroll_momentum_threshold;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold)
+ {
+ _elm_config->thumbscroll_momentum_threshold = threshold;
+ }
+
+ EAPI double
+ elm_config_scroll_thumbscroll_friction_get(void)
+ {
+ return _elm_config->thumbscroll_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_friction_set(double friction)
+ {
+ _elm_config->thumbscroll_friction = friction;
+ }
+
+ EAPI double
+ elm_config_scroll_thumbscroll_border_friction_get(void)
+ {
+ return _elm_config->thumbscroll_border_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_border_friction_set(double friction)
+ {
+ if (friction < 0.0) friction = 0.0;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+ }
+
+ EAPI double
+ elm_config_scroll_thumbscroll_sensitivity_friction_get(void)
+ {
+ return _elm_config->thumbscroll_sensitivity_friction;
+ }
+
+ EAPI void
+ elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction)
+ {
+ if (friction < 0.1) friction = 0.1;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+ }
+
+ EAPI void
+ elm_config_longpress_timeout_set(double longpress_timeout)
+ {
+ _elm_config->longpress_timeout = longpress_timeout;
+ }
+
+ EAPI double
+ elm_config_longpress_timeout_get(void)
+ {
+ return _elm_config->longpress_timeout;
+ }
+
+ EAPI void
+ elm_config_all_flush(void)
+ {
+ #ifdef HAVE_ELEMENTARY_X
+ if (_prop_all_update_timer) ecore_timer_del(_prop_all_update_timer);
+ _prop_all_update_timer = ecore_timer_add(0.1, _prop_all_update_cb, NULL);
+ #endif
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_translation_init()
{
_desc_init();
_profile_fetch_from_conf();
_config_load();
++<<<<<<< HEAD
++=======
+ if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine);
+ if (_elm_config->engine)
+ _elm_preferred_engine = eina_stringshare_add(_elm_config->engine);
+ else
+ _elm_preferred_engine = NULL;
++>>>>>>> remotes/origin/upstream
_translation_init();
_env_get();
_config_apply();
_elm_config->engine = eina_stringshare_add(engine);
}
++<<<<<<< HEAD
+void
+_elm_config_all_update(void)
+{
+#ifdef HAVE_ELEMENTARY_X
+ if (_prop_all_update_timer) ecore_timer_del(_prop_all_update_timer);
+ _prop_all_update_timer = ecore_timer_add(0.1, _prop_all_update_cb, NULL);
+ _prop_config_set();
+ ecore_x_window_prop_string_set(_root_1st, _atom[ATOM_E_PROFILE],
+ _elm_profile);
+#endif
++=======
+ EAPI const char *
+ elm_config_preferred_engine_get(void)
+ {
+ return _elm_preferred_engine;
+ }
+
+ EAPI void
+ elm_config_preferred_engine_set(const char *engine)
+ {
+ if (engine)
+ eina_stringshare_replace(&(_elm_preferred_engine), engine);
+ else
+ {
+ if (_elm_preferred_engine) eina_stringshare_del(_elm_preferred_engine);
+ _elm_preferred_engine = eina_stringshare_add(_elm_config->engine);
+ }
++>>>>>>> remotes/origin/upstream
}
void
if (_prop_all_update_timer)
{
ecore_timer_del(_prop_all_update_timer);
++<<<<<<< HEAD
+ _prop_all_update_cb(NULL);
+ }
+ _prop_all_update_timer = NULL;
++=======
+ _prop_all_update_timer = NULL;
+ _prop_all_update_cb(NULL);
+ }
++>>>>>>> remotes/origin/upstream
if (_prop_change_delay_timer) ecore_timer_del(_prop_change_delay_timer);
_prop_change_delay_timer = NULL;
#endif
#endif
}
_config_free();
++<<<<<<< HEAD
++=======
+ if (_elm_preferred_engine)
+ {
+ eina_stringshare_del(_elm_preferred_engine);
+ _elm_preferred_engine = NULL;
+ }
++>>>>>>> remotes/origin/upstream
if (_elm_profile)
{
free(_elm_profile);
*
* Elementary configuration is formed by a set options bounded to a
* given @ref Profile profile, like @ref Theme theme, @ref Fingers
++<<<<<<< HEAD
+ * "finger size", etc. These are functions with which one syncronizes
+ * changes made to those values to the configuration storing files, de
+ * facto. You most probably don't want to use the functions in this
+ * group unlees you're writing an elementary configuration manager.
++=======
+ * "finger size", etc. These are functions with which one synchronizes
+ * changes made to those values to the configuration storing files, de
+ * facto. You most probably don't want to use the functions in this
+ * group unless you're writing an elementary configuration manager.
++>>>>>>> remotes/origin/upstream
*
* @{
*/
* Save back Elementary's configuration, so that it will persist on
* future sessions.
*
++<<<<<<< HEAD
+ * @return @c EINA_TRUE, when sucessful. @c EINA_FALSE, otherwise.
+ * @ingroup Config
+ *
+ * This function will take effect -- thus, do I/O -- immediately. Use
+ * it when you want to apply all configuration changes at once. The
++=======
+ * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
+ * @ingroup Config
+ *
+ * This function will take effect -- thus, do I/O -- immediately. Use
+ * it when you want to save all configuration changes at once. The
++>>>>>>> remotes/origin/upstream
* current configuration set will get saved onto the current profile
* configuration file.
*
* Reload Elementary's configuration, bounded to current selected
* profile.
*
++<<<<<<< HEAD
+ * @return @c EINA_TRUE, when sucessful. @c EINA_FALSE, otherwise.
++=======
+ * @return @c EINA_TRUE, when successful. @c EINA_FALSE, otherwise.
++>>>>>>> remotes/origin/upstream
* @ingroup Config
*
* Useful when you want to force reloading of configuration values for
EAPI void elm_config_reload(void);
/**
++<<<<<<< HEAD
++=======
+ * Flush all config settings then apply those settings to all applications
+ * using elementary on the current display.
+ *
+ * @ingroup Config
+ */
+ EAPI void elm_config_all_flush(void);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
* Elementary-based applications. There are, for example, profiles
* aimed at desktop computer applications and others aimed at mobile,
* touchscreen-based ones. You most probably don't want to use the
++<<<<<<< HEAD
+ * functions in this group unlees you're writing an elementary
++=======
+ * functions in this group unless you're writing an elementary
++>>>>>>> remotes/origin/upstream
* configuration manager.
*
* @{
* @return The profile's name
* @ingroup Profile
*/
++<<<<<<< HEAD
+EAPI const char *elm_profile_current_get(void);
+
+/**
+ * Get an Elementary's profile directory path in the filesystem. One
+ * may want to fetch a system profile's dir or an user one (fetched
+ * inside $HOME).
+ *
+ * @param profile The profile's name
+ * @param is_user Whether to lookup for an user profile (@c EINA_TRUE)
++=======
+ EAPI const char *elm_config_profile_get(void);
+
+ /**
+ * Get an Elementary's profile directory path in the filesystem. One
+ * may want to fetch a system profile's dir or a user one (fetched
+ * inside $HOME).
+ *
+ * @param profile The profile's name
+ * @param is_user Whether to lookup for a user profile (@c EINA_TRUE)
++>>>>>>> remotes/origin/upstream
* or a system one (@c EINA_FALSE)
* @return The profile's directory path.
* @ingroup Profile
*
++<<<<<<< HEAD
+ * @note You must free it with elm_profile_dir_free().
+ */
+EAPI const char *elm_profile_dir_get(const char *profile, Eina_Bool is_user);
+
+/**
+ * Free an Elementary's profile directory path, as returned by
+ * elm_profile_dir_get().
++=======
+ * @note You must free it with elm_config_profile_dir_free().
+ */
+ EAPI const char *elm_config_profile_dir_get(const char *profile, Eina_Bool is_user);
+
+ /**
+ * Free an Elementary's profile directory path, as returned by
+ * elm_config_profile_dir_get().
++>>>>>>> remotes/origin/upstream
*
* @param p_dir The profile's path
* @ingroup Profile
*
*/
++<<<<<<< HEAD
+EAPI void elm_profile_dir_free(const char *p_dir);
++=======
+ EAPI void elm_config_profile_dir_free(const char *p_dir);
++>>>>>>> remotes/origin/upstream
/**
* Get Elementary's list of available profiles.
* @ingroup Profile
*
* @note One must free this list, after usage, with the function
++<<<<<<< HEAD
+ * elm_profile_list_free().
+ */
+EAPI Eina_List *elm_profile_list_get(void);
++=======
+ * elm_config_profile_list_free().
+ */
+ EAPI Eina_List *elm_config_profile_list_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Free Elementary's list of available profiles.
*
++<<<<<<< HEAD
+ * @param l The profiles list, as returned by elm_profile_list_get().
+ * @ingroup Profile
+ *
+ */
+EAPI void elm_profile_list_free(Eina_List *l);
++=======
+ * @param l The profiles list, as returned by elm_config_profile_list_get().
+ * @ingroup Profile
+ *
+ */
+ EAPI void elm_config_profile_list_free(Eina_List *l);
++>>>>>>> remotes/origin/upstream
/**
* Set Elementary's profile.
* @ingroup Profile
*
*/
++<<<<<<< HEAD
+EAPI void elm_profile_set(const char *profile);
+
+/**
+ * Set Elementary's profile.
+ *
+ * This sets the global profile that is applied to all Elementary
+ * applications. All running Elementary windows will be affected.
+ *
+ * @param profile The profile's name
+ * @ingroup Profile
+ *
+ */
+EAPI void elm_profile_all_set(const char *profile);
++=======
+ EAPI void elm_config_profile_set(const char *profile);
++>>>>>>> remotes/origin/upstream
/**
* @}
* This is the default behavior for touch screens, in general.
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_scroll_bounce_enabled_get(void);
++=======
+ EAPI Eina_Bool elm_config_scroll_bounce_enabled_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set whether scrollers should bounce when they reach their
*
* @param enabled the thumb scroll bouncing state
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_bounce_enabled_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_bounce_enabled_set(Eina_Bool enabled);
+
+/**
+ * Set whether scrollers should bounce when they reach their
+ * viewport's edge during a scroll, for all Elementary application
+ * windows.
+ *
+ * @param enabled the thumb scroll bouncing state
+ *
+ * @see elm_thumbscroll_bounce_enabled_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_bounce_enabled_all_set(Eina_Bool enabled);
++=======
+ * @see elm_config_scroll_bounce_enabled_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_bounce_enabled_set(Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of inertia a scroller will impose at bounce
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_bounce_friction_get(void);
++=======
+ EAPI double elm_config_scroll_bounce_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of inertia a scroller will impose at bounce
*
* @param friction the thumb scroll bounce friction
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_bounce_friction_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_bounce_friction_set(double friction);
+
+/**
+ * Set the amount of inertia a scroller will impose at bounce
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll bounce friction
+ *
+ * @see elm_thumbscroll_bounce_friction_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_bounce_friction_all_set(double friction);
++=======
+ * @see elm_config_scroll_bounce_friction_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_bounce_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of inertia a <b>paged</b> scroller will impose at
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_page_scroll_friction_get(void);
++=======
+ EAPI double elm_config_scroll_page_scroll_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of inertia a <b>paged</b> scroller will impose at
*
* @param friction the page scroll friction
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_page_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_page_scroll_friction_set(double friction);
+
+/**
+ * Set the amount of inertia a <b>paged</b> scroller will impose at
+ * page fitting animations, for all Elementary application windows.
+ *
+ * @param friction the page scroll friction
+ *
+ * @see elm_thumbscroll_page_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_page_scroll_friction_all_set(double friction);
++=======
+ * @see elm_config_scroll_page_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_page_scroll_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of inertia a scroller will impose at region bring
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_bring_in_scroll_friction_get(void);
++=======
+ EAPI double elm_config_scroll_bring_in_scroll_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of inertia a scroller will impose at region bring
*
* @param friction the bring in scroll friction
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_bring_in_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_bring_in_scroll_friction_set(double friction);
+
+/**
+ * Set the amount of inertia a scroller will impose at region bring
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the bring in scroll friction
+ *
+ * @see elm_thumbscroll_bring_in_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_bring_in_scroll_friction_all_set(double friction);
++=======
+ * @see elm_config_scroll_bring_in_scroll_friction_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_bring_in_scroll_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of inertia scrollers will impose at animations
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_zoom_friction_get(void);
++=======
+ EAPI double elm_config_scroll_zoom_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of inertia scrollers will impose at animations
*
* @param friction the zoom friction
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_zoom_friction_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_zoom_friction_set(double friction);
+
+/**
+ * Set the amount of inertia scrollers will impose at animations
+ * triggered by Elementary widgets' zooming API, for all Elementary
+ * application windows.
+ *
+ * @param friction the zoom friction
+ *
+ * @see elm_thumbscroll_zoom_friction_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_zoom_friction_all_set(double friction);
++=======
+ * @see elm_config_scroll_zoom_friction_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_zoom_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get whether scrollers should be draggable from any point in their
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_scroll_thumbscroll_enabled_get(void);
++=======
+ EAPI Eina_Bool elm_config_scroll_thumbscroll_enabled_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set whether scrollers should be draggable from any point in their
*
* @param enabled the thumb scroll state
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_enabled_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
+
+/**
+ * Set whether scrollers should be draggable from any point in their
+ * views, for all Elementary application windows.
+ *
+ * @param enabled the thumb scroll state
+ *
+ * @see elm_thumbscroll_enabled_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled);
++=======
+ * @see elm_config_scroll_thumbscroll_enabled_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_thumbscroll_enabled_set(Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* Get the number of pixels one should travel while dragging a
* scroller's view to actually trigger scrolling.
*
++<<<<<<< HEAD
+ * @return the thumb scroll threshould
++=======
+ * @return the thumb scroll threshold
++>>>>>>> remotes/origin/upstream
*
* One would use higher values for touch screens, in general, because
* of their inherent imprecision.
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI unsigned int elm_scroll_thumbscroll_threshold_get(void);
++=======
+ EAPI unsigned int elm_config_scroll_thumbscroll_threshold_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the number of pixels one should travel while dragging a
* scroller's view to actually trigger scrolling.
*
++<<<<<<< HEAD
+ * @param threshold the thumb scroll threshould
+ *
+ * @see elm_thumbscroll_threshould_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_thumbscroll_threshold_set(unsigned int threshold);
+
+/**
+ * Set the number of pixels one should travel while dragging a
+ * scroller's view to actually trigger scrolling, for all Elementary
+ * application windows.
+ *
+ * @param threshold the thumb scroll threshould
+ *
+ * @see elm_thumbscroll_threshould_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold);
++=======
+ * @param threshold the thumb scroll threshold
+ *
+ * @see elm_config_thumbscroll_threshold_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_thumbscroll_threshold_set(unsigned int threshold);
++>>>>>>> remotes/origin/upstream
/**
* Get the minimum speed of mouse cursor movement which will trigger
* list self scrolling animation after a mouse up event
* (pixels/second).
*
++<<<<<<< HEAD
+ * @return the thumb scroll momentum threshould
+ *
+ * @ingroup Scrolling
+ */
+EAPI double elm_scroll_thumbscroll_momentum_threshold_get(void);
++=======
+ * @return the thumb scroll momentum threshold
+ *
+ * @ingroup Scrolling
+ */
+ EAPI double elm_config_scroll_thumbscroll_momentum_threshold_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the minimum speed of mouse cursor movement which will trigger
* list self scrolling animation after a mouse up event
* (pixels/second).
*
++<<<<<<< HEAD
+ * @param threshold the thumb scroll momentum threshould
+ *
+ * @see elm_thumbscroll_momentum_threshould_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_thumbscroll_momentum_threshold_set(double threshold);
+
+/**
+ * Set the minimum speed of mouse cursor movement which will trigger
+ * list self scrolling animation after a mouse up event
+ * (pixels/second), for all Elementary application windows.
+ *
+ * @param threshold the thumb scroll momentum threshould
+ *
+ * @see elm_thumbscroll_momentum_threshould_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold);
++=======
+ * @param threshold the thumb scroll momentum threshold
+ *
+ * @see elm_config_thumbscroll_momentum_threshold_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_thumbscroll_momentum_threshold_set(double threshold);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of inertia a scroller will impose at self scrolling
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_thumbscroll_friction_get(void);
++=======
+ EAPI double elm_config_scroll_thumbscroll_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of inertia a scroller will impose at self scrolling
*
* @param friction the thumb scroll friction
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_friction_get()
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_thumbscroll_friction_set(double friction);
+
+/**
+ * Set the amount of inertia a scroller will impose at self scrolling
+ * animations, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll friction
+ *
+ * @see elm_thumbscroll_friction_get()
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_friction_all_set(double friction);
++=======
+ * @see elm_config_thumbscroll_friction_get()
+ * @ingroup Scrolling
+ */
+ EAPI void elm_config_scroll_thumbscroll_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get the amount of lag between your actual mouse cursor dragging
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_thumbscroll_border_friction_get(void);
++=======
+ EAPI double elm_config_scroll_thumbscroll_border_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the amount of lag between your actual mouse cursor dragging
* perfect synchrony between two movements, @c 1.0 for maximum
* lag.
*
++<<<<<<< HEAD
+ * @see elm_thumbscroll_border_friction_get()
+ * @note parameter value will get bound to 0.0 - 1.0 interval, always
+ *
+ * @ingroup Scrolling
+ */
+EAPI void elm_scroll_thumbscroll_border_friction_set(double friction);
+
+/**
+ * Set the amount of lag between your actual mouse cursor dragging
+ * movement and a scroller's view movement itself, while pushing it
+ * into bounce state manually, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll border friction. @c 0.0 for
+ * perfect synchrony between two movements, @c 1.0 for maximum
+ * lag.
+ *
+ * @see elm_thumbscroll_border_friction_get()
++=======
+ * @see elm_config_thumbscroll_border_friction_get()
++>>>>>>> remotes/origin/upstream
* @note parameter value will get bound to 0.0 - 1.0 interval, always
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_border_friction_all_set(double friction);
++=======
+ EAPI void elm_config_scroll_thumbscroll_border_friction_set(double friction);
++>>>>>>> remotes/origin/upstream
/**
* Get the sensitivity amount which is be multiplied by the length of
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI double elm_scroll_thumbscroll_sensitivity_friction_get(void);
++=======
+ EAPI double elm_config_scroll_thumbscroll_sensitivity_friction_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Set the sensitivity amount which is be multiplied by the length of
* mouse dragging.
*
* @param friction the thumb scroll sensitivity friction. @c 0.1 for
++<<<<<<< HEAD
+ * minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+ * is proper.
+ *
+ * @see elm_thumbscroll_sensitivity_friction_get()
++=======
+ * minimum sensitivity, @c 1.0 for maximum sensitivity. 0.25
+ * is proper.
+ *
+ * @see elm_config_thumbscroll_sensitivity_friction_get()
++>>>>>>> remotes/origin/upstream
* @note parameter value will get bound to 0.1 - 1.0 interval, always
*
* @ingroup Scrolling
*/
++<<<<<<< HEAD
+EAPI void elm_scroll_thumbscroll_sensitivity_friction_set(double friction);
+
+/**
+ * Set the sensitivity amount which is be multiplied by the length of
+ * mouse dragging, for all Elementary application windows.
+ *
+ * @param friction the thumb scroll sensitivity friction. @c 0.1 for
+ * minimun sensitivity, @c 1.0 for maximum sensitivity. 0.25
+ * is proper.
+ *
+ * @see elm_thumbscroll_sensitivity_friction_get()
+ * @note parameter value will get bound to 0.1 - 1.0 interval, always
+ *
+ * @ingroup Scrolling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction);
++=======
+ EAPI void elm_config_scroll_thumbscroll_sensitivity_friction_set(double friction);
/**
* @}
*/
/**
+ * Get the duration for occurring long press event.
+ *
+ * @return Timeout for long press event
+ * @ingroup Longpress
+ */
+ EAPI double elm_config_longpress_timeout_get(void);
+
+ /**
+ * Set the duration for occurring long press event.
+ *
+ * @param lonpress_timeout Timeout for long press event
+ * @ingroup Longpress
+ */
+ EAPI void elm_config_longpress_timeout_set(double longpress_timeout);
+
+ /**
+ * Get the duration after which tooltip will be shown.
+ *
+ * @return Duration after which tooltip will be shown.
+ */
+ EAPI double elm_config_tooltip_delay_get(void);
+
+ /**
+ * Set the duration after which tooltip will be shown.
+ *
+ * @return EINA_TRUE if value is set.
+ */
+ EAPI void elm_config_tooltip_delay_set(double delay);
+
+ /**
+ * Get the configured cursor engine only usage
+ *
+ * This gets the globally configured exclusive usage of engine cursors.
+ *
+ * @return 1 if only engine cursors should be used
+ * @ingroup Cursors
+ */
+ EAPI Eina_Bool elm_config_cursor_engine_only_get(void);
+
+ /**
+ * Set the configured cursor engine only usage
+ *
+ * This sets the globally configured exclusive usage of engine cursors.
+ * It won't affect cursors set before changing this value.
+ *
+ * @param engine_only If 1 only engine cursors will be enabled, if 0 will
+ * look for them on theme before.
+ * @ingroup Cursors
+ */
+ EAPI void elm_config_cursor_engine_only_set(Eina_Bool engine_only);
+
+ /**
+ * Get the global scaling factor
+ *
+ * This gets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @return The scaling factor
+ * @ingroup Scaling
+ */
+ EAPI double elm_config_scale_get(void);
+
+ /**
+ * Set the global scaling factor
+ *
+ * This sets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @param scale The scaling factor to set
+ * @ingroup Scaling
+ */
+ EAPI void elm_config_scale_set(double scale);
+
+ /**
+ * @defgroup Password_last_show Password show last
+ *
+ * Show last feature of password mode enables user to view
+ * the last input entered for few seconds before masking it.
+ * These functions allow to set this feature in password mode
+ * of entry widget and also allow to manipulate the duration
+ * for which the input has to be visible.
+ *
+ * @{
+ */
+
+ /**
+ * Get the "show last" setting of password mode.
+ *
+ * This gets the "show last" setting of password mode which might be
+ * enabled or disabled.
+ *
+ * @return @c EINA_TRUE, if the "show last" setting is enabled,
+ * @c EINA_FALSE if it's disabled.
+ *
+ * @ingroup Password_last_show
+ */
+ EAPI Eina_Bool elm_config_password_show_last_get(void);
+
+ /**
+ * Set show last setting in password mode.
+ *
+ * This enables or disables show last setting of password mode.
+ *
+ * @param password_show_last If EINA_TRUE enables "show last" in password mode.
+ * @see elm_config_password_show_last_timeout_set()
+ * @ingroup Password_last_show
+ */
+ EAPI void elm_config_password_show_last_set(Eina_Bool password_show_last);
+
+ /**
+ * Gets the timeout value in "show last" password mode.
+ *
+ * This gets the time out value for which the last input entered in password
+ * mode will be visible.
+ *
+ * @return The timeout value of "show last" password mode.
+ * @ingroup Password_last_show
+ */
+ EAPI double elm_config_password_show_last_timeout_get(void);
+
+ /**
+ * Set's the timeout value in "show last" password mode.
+ *
+ * This sets the time out value for which the last input entered in password
+ * mode will be visible.
+ *
+ * @param password_show_last_timeout The timeout value.
+ * @see elm_config_password_show_last_set()
+ * @ingroup Password_last_show
+ */
+ EAPI void elm_config_password_show_last_timeout_set(double password_show_last_timeout);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * @}
+ */
+
+ /**
++<<<<<<< HEAD
+ * Get the duration for occuring long press event.
+ *
+ * @return Timeout for long press event
+ * @ingroup Longpress
+ */
+EAPI double elm_longpress_timeout_get(void);
+
+/**
+ * Set the duration for occuring long press event.
+ *
+ * @param lonpress_timeout Timeout for long press event
+ * @ingroup Longpress
+ */
+EAPI void elm_longpress_timeout_set(double longpress_timeout);
++=======
+ * @defgroup Engine Elementary Engine
+ *
+ * These are functions setting and querying which rendering engine
+ * Elementary will use for drawing its windows' pixels.
+ *
+ * The following are the available engines:
+ * @li "software_x11"
+ * @li "fb"
+ * @li "directfb"
+ * @li "software_16_x11"
+ * @li "software_8_x11"
+ * @li "xrender_x11"
+ * @li "opengl_x11"
+ * @li "software_gdi"
+ * @li "software_16_wince_gdi"
+ * @li "sdl"
+ * @li "software_16_sdl"
+ * @li "opengl_sdl"
+ * @li "buffer"
+ * @li "ews"
+ * @li "opengl_cocoa"
+ * @li "psl1ght"
+ *
+ * @{
+ */
+
+ /**
+ * @brief Get Elementary's rendering engine in use.
+ *
+ * @return The rendering engine's name
+ * @note there's no need to free the returned string, here.
+ *
+ * This gets the global rendering engine that is applied to all Elementary
+ * applications.
+ *
+ * @see elm_config_engine_set()
+ */
+ EAPI const char *elm_config_engine_get(void);
+
+ /**
+ * @brief Set Elementary's rendering engine for use.
+ *
+ * @param engine The rendering engine's name
+ *
+ * Note that it will take effect only to Elementary windows created after
+ * this is called.
+ *
+ * @see elm_win_add()
+ */
+ EAPI void elm_config_engine_set(const char *engine);
+
+ /**
+ * @brief Get Elementary's preferred engine to use.
+ *
+ * @return The rendering engine's name
+ * @note there's no need to free the returned string, here.
+ *
+ * This gets the global rendering engine that is applied to all Elementary
+ * applications and is PREFERRED by the application. This can (and will)
+ * override the engine configured for all applications which.
+ *
+ * @see elm_config_preferred_engine_set()
+ */
+ EAPI const char *elm_config_preferred_engine_get(void);
+
+ /**
+ * @brief Set Elementary's preferred rendering engine for use.
+ *
+ * @param engine The rendering engine's name
+ *
+ * Note that it will take effect only to Elementary windows created after
+ * this is called. This overrides the engine set by configuration at
+ * application startup. Note that it is a hint and may not be honored.
+ *
+ * @see elm_win_add()
+ */
+ EAPI void elm_config_preferred_engine_set(const char *engine);
+
+ typedef struct _Elm_Text_Class
+ {
+ const char *name;
+ const char *desc;
+ } Elm_Text_Class;
+
+ typedef struct _Elm_Font_Overlay
+ {
+ const char *text_class;
+ const char *font;
+ Evas_Font_Size size;
+ } Elm_Font_Overlay;
+
+ /**
+ * Get Elementary's list of supported text classes.
+ *
+ * @return The text classes list, with @c Elm_Text_Class blobs as data.
+ * @ingroup Fonts
+ *
+ * Release the list with elm_text_classes_list_free().
+ */
+ EAPI Eina_List *elm_config_text_classes_list_get(void);
+
+ /**
+ * Free Elementary's list of supported text classes.
+ *
+ * @ingroup Fonts
+ *
+ * @see elm_config_text_classes_list_get().
+ */
+ EAPI void elm_config_text_classes_list_free(Eina_List *list);
+
+ /**
+ * Get Elementary's list of font overlays, set with
+ * elm_config_font_overlay_set().
+ *
+ * @return The font overlays list, with @c Elm_Font_Overlay blobs as
+ * data.
+ *
+ * @ingroup Fonts
+ *
+ * For each text class, one can set a <b>font overlay</b> for it,
+ * overriding the default font properties for that class coming from
+ * the theme in use. There is no need to free this list.
+ *
+ * @see elm_config_font_overlay_set() and elm_config_font_overlay_unset().
+ */
+ EAPI const Eina_List *elm_config_font_overlay_list_get(void);
+
+ /**
+ * Set a font overlay for a given Elementary text class.
+ *
+ * @param text_class Text class name
+ * @param font Font name and style string
+ * @param size Font size
+ *
+ * @ingroup Fonts
+ *
+ * @p font has to be in the format returned by
+ * elm_font_fontconfig_name_get(). @see elm_config_font_overlay_list_get()
+ * and elm_config_font_overlay_unset().
+ */
+ EAPI void elm_config_font_overlay_set(const char *text_class, const char *font, Evas_Font_Size size);
+
+ /**
+ * Unset a font overlay for a given Elementary text class.
+ *
+ * @param text_class Text class name
+ *
+ * @ingroup Fonts
+ *
+ * This will bring back text elements belonging to text class
+ * @p text_class back to their default font settings.
+ */
+ EAPI void elm_config_font_overlay_unset(const char *text_class);
+
+ /**
+ * Apply the changes made with elm_config_font_overlay_set() and
+ * elm_config_font_overlay_unset() on the current Elementary window.
+ *
+ * @ingroup Fonts
+ *
+ * This applies all font overlays set to all objects in the UI.
+ */
+ EAPI void elm_config_font_overlay_apply(void);
+
+ /**
+ * Get the configured "finger size"
+ *
+ * @return The finger size
+ *
+ * This gets the globally configured finger size, <b>in pixels</b>
+ *
+ * @ingroup Fingers
+ */
+ EAPI Evas_Coord elm_config_finger_size_get(void);
+
+ /**
+ * Set the configured finger size
+ *
+ * This sets the globally configured finger size in pixels
+ *
+ * @param size The finger size
+ * @ingroup Fingers
+ */
+ EAPI void elm_config_finger_size_set(Evas_Coord size);
+
+
+ /**
+ * Get the configured cache flush interval time
+ *
+ * This gets the globally configured cache flush interval time, in
+ * ticks
+ *
+ * @return The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_cache_all_flush()
+ */
+ EAPI int elm_config_cache_flush_interval_get(void);
+
+ /**
+ * Set the configured cache flush interval time
+ *
+ * This sets the globally configured cache flush interval time, in ticks
+ *
+ * @param size The cache flush interval time
+ * @ingroup Caches
+ *
+ * @see elm_cache_all_flush()
+ */
+ EAPI void elm_config_cache_flush_interval_set(int size);
+
+ /**
+ * Get the configured cache flush enabled state
+ *
+ * This gets the globally configured cache flush state - if it is enabled
+ * or not. When cache flushing is enabled, elementary will regularly
+ * (see elm_config_cache_flush_interval_get() ) flush caches and dump data out of
+ * memory and allow usage to re-seed caches and data in memory where it
+ * can do so. An idle application will thus minimize its memory usage as
+ * data will be freed from memory and not be re-loaded as it is idle and
+ * not rendering or doing anything graphically right now.
+ *
+ * @return The cache flush state
+ * @ingroup Caches
+ *
+ * @see elm_cache_all_flush()
+ */
+ EAPI Eina_Bool elm_config_cache_flush_enabled_get(void);
+
+ /**
+ * Set the configured cache flush enabled state
+ *
+ * This sets the globally configured cache flush enabled state.
+ *
+ * @param enabled The cache flush enabled state
+ * @ingroup Caches
+ *
+ * @see elm_cache_all_flush()
+ */
+ EAPI void elm_config_cache_flush_enabled_set(Eina_Bool enabled);
+
+ /**
+ * Get the configured font cache size
+ *
+ * This gets the globally configured font cache size, in bytes.
+ *
+ * @return The font cache size
+ * @ingroup Caches
+ */
+ EAPI int elm_config_cache_font_cache_size_get(void);
+
+ /**
+ * Set the configured font cache size
+ *
+ * This sets the globally configured font cache size, in bytes
+ *
+ * @param size The font cache size
+ * @ingroup Caches
+ */
+ EAPI void elm_config_cache_font_cache_size_set(int size);
+
+ /**
+ * Get the configured image cache size
+ *
+ * This gets the globally configured image cache size, in bytes
+ *
+ * @return The image cache size
+ * @ingroup Caches
+ */
+ EAPI int elm_config_cache_image_cache_size_get(void);
+
+ /**
+ * Set the configured image cache size
+ *
+ * This sets the globally configured image cache size, in bytes
+ *
+ * @param size The image cache size
+ * @ingroup Caches
+ */
+ EAPI void elm_config_cache_image_cache_size_set(int size);
+
+
+ /**
+ * Get the configured edje file cache size.
+ *
+ * This gets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @return The edje file cache size
+ * @ingroup Caches
+ */
+ EAPI int elm_config_cache_edje_file_cache_size_get(void);
+
+ /**
+ * Set the configured edje file cache size
+ *
+ * This sets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @param size The edje file cache size
+ * @ingroup Caches
+ */
+ EAPI void elm_config_cache_edje_file_cache_size_set(int size);
+
+ /**
+ * Get the configured edje collections (groups) cache size.
+ *
+ * This gets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @return The edje collections cache size
+ * @ingroup Caches
+ */
+ EAPI int elm_config_cache_edje_collection_cache_size_get(void);
+
+ /**
+ * Set the configured edje collections (groups) cache size
+ *
+ * This sets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @param size The edje collections cache size
+ * @ingroup Caches
+ */
+ EAPI void elm_config_cache_edje_collection_cache_size_set(int size);
+
+ /**
+ * Get the enable status of the focus highlight
+ *
+ * This gets whether the highlight on focused objects is enabled or not
+ *
+ * @see elm_config_focus_highlight_enabled_set()
+ * @ingroup Focus
+ */
+ EAPI Eina_Bool elm_config_focus_highlight_enabled_get(void);
+
+ /**
+ * Set the enable status of the focus highlight
+ *
+ * @param enable Enable highlight if EINA_TRUE, disable otherwise
+ *
+ * Set whether to show or not the highlight on focused objects
+ *
+ * Note that it will take effect only to Elementary windows created after
+ * this is called.
+ *
+ * @see elm_win_add()
+ *
+ * @ingroup Focus
+ */
+ EAPI void elm_config_focus_highlight_enabled_set(Eina_Bool enable);
+
+ /**
+ * Get the enable status of the highlight animation
+ *
+ * @return The focus highlight mode set
+ *
+ * Get whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ *
+ * @ingroup Focus
+ */
+ EAPI Eina_Bool elm_config_focus_highlight_animate_get(void);
+
+ /**
+ * Set the enable status of the highlight animation
+ *
+ * @param animate Enable animation if EINA_TRUE, disable otherwise
+ *
+ * Set whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ *
+ * Note that it will take effect only to Elementary windows created after
+ * this is called.
+ *
+ * @see elm_win_add()
+ *
+ * @ingroup Focus
+ */
+ EAPI void elm_config_focus_highlight_animate_set(Eina_Bool animate);
+
+ /**
+ * Get the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
+ * @return EINA_TRUE if mirrored is set, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_config_mirrored_get(void);
+
+ /**
+ * Set the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
+ * @param mirrored EINA_TRUE to set mirrored mode, EINA_FALSE to unset it.
+ */
+ EAPI void elm_config_mirrored_set(Eina_Bool mirrored);
+
+ /**
+ * @}
+ */
+
++>>>>>>> remotes/origin/upstream
struct _Widget_Data
{
Evas_Object *base;
++<<<<<<< HEAD
+ Evas_Object *shelf, *panel, *virtualkeypad, *sliding_win;
+ Evas_Object *content;
+ Evas_Object *scroller;
+ Evas_Object *layout;
+ int is_sliding_win_visible;
++=======
+ Evas_Object *shelf, *panel, *virtualkeypad;
+ Evas_Object *content;
+ Evas_Object *scroller;
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_ELEMENTARY_X
Ecore_Event_Handler *prop_hdl;
Ecore_X_Virtual_Keyboard_State vkb_state;
{
ELM_CONFORM_INDICATOR_PART = 1,
ELM_CONFORM_SOFTKEY_PART = 2,
++<<<<<<< HEAD
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART = 4,
+ ELM_CONFORM_SLIDING_WIN_PART = 8
++=======
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART = 4
++>>>>>>> remotes/origin/upstream
};
#define SUB_TYPE_COUNT 2
return EINA_TRUE;
}
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_conformant_part_size_set(Evas_Object *obj, Evas_Object *sobj, Evas_Coord sx,
Evas_Coord sy, Evas_Coord sw, Evas_Coord sh)
edje_object_part_swallow(wd->base, "elm.swallow.virtualkeypad",
wd->virtualkeypad);
++<<<<<<< HEAD
+ if (!wd->sliding_win)
+ {
+ wd->sliding_win = evas_object_rectangle_add(evas_object_evas_get(obj));
+ elm_widget_sub_object_add(obj, wd->sliding_win);
+ evas_object_size_hint_min_set(wd->sliding_win, -1, 0);
+ evas_object_size_hint_max_set(wd->sliding_win, -1, 0);
+ }
+#ifdef HAVE_ELEMENTARY_X
+ else
+ _conformant_part_sizing_eval(obj, ELM_CONFORM_SLIDING_WIN_PART);
+#endif
+ evas_object_color_set(wd->sliding_win, 0, 0, 0, 0);
+
++=======
++>>>>>>> remotes/origin/upstream
if (!wd->panel)
{
wd->panel = evas_object_rectangle_add(evas_object_evas_get(obj));
}
static void
++<<<<<<< HEAD
+_sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
++=======
+ _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
++>>>>>>> remotes/origin/upstream
Evas_Object *sub = event_info;
if (!wd) return;
if (sub == wd->content)
{
evas_object_event_callback_del_full(sub,
EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++<<<<<<< HEAD
+ _changed_size_hints, data);
+ wd->content = NULL;
+ _sizing_eval(data);
++=======
+ _changed_size_hints, obj);
+ wd->content = NULL;
+ _sizing_eval(obj);
++>>>>>>> remotes/origin/upstream
}
}
if (!wd) return;
part_type = (ELM_CONFORM_INDICATOR_PART |
ELM_CONFORM_SOFTKEY_PART |
++<<<<<<< HEAD
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART |
+ ELM_CONFORM_SLIDING_WIN_PART);
++=======
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART);
++>>>>>>> remotes/origin/upstream
_conformant_part_sizing_eval(obj, part_type);
}
if (!wd) return;
#ifdef HAVE_ELEMENTARY_X
++<<<<<<< HEAD
+ if ((wd->vkb_state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF)
+ && (!wd->is_sliding_win_visible)) return;
++=======
+ if (wd->vkb_state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF) return;
++>>>>>>> remotes/origin/upstream
#endif
if (wd->show_region_job) ecore_job_del(wd->show_region_job);
part_type = (ELM_CONFORM_INDICATOR_PART |
ELM_CONFORM_SOFTKEY_PART |
++<<<<<<< HEAD
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART |
+ ELM_CONFORM_SLIDING_WIN_PART);
++=======
+ ELM_CONFORM_VIRTUAL_KEYPAD_PART);
++>>>>>>> remotes/origin/upstream
_conformant_part_sizing_eval(data, part_type);
}
else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY)
_conformant_part_sizing_eval(data, ELM_CONFORM_SOFTKEY_PART);
else if (ev->atom == ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY)
_conformant_part_sizing_eval(data, ELM_CONFORM_VIRTUAL_KEYPAD_PART);
++<<<<<<< HEAD
+ else if (ev->atom == ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_GEOMETRY)
+ _conformant_part_sizing_eval(data, ELM_CONFORM_SLIDING_WIN_PART);
++=======
++>>>>>>> remotes/origin/upstream
else if (ev->atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE)
{
Ecore_X_Window zone;
++<<<<<<< HEAD
++=======
+ printf("Keyboard Geometry Changed\n");
++>>>>>>> remotes/origin/upstream
zone = ecore_x_e_illume_zone_get(ev->win);
wd->vkb_state = ecore_x_e_virtual_keyboard_state_get(zone);
if (wd->vkb_state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF)
else
_update_autoscroll_objs(data);
}
++<<<<<<< HEAD
+ else if (ev->atom == ECORE_X_ATOM_E_ILLUME_SLIDING_WIN_STATE)
+ {
+ Ecore_X_Window zone;
+
+ zone = ecore_x_e_illume_zone_get(ev->win);
+ wd->is_sliding_win_visible = ecore_x_e_illume_sliding_win_state_get(zone);
+
+ if (!wd->is_sliding_win_visible)
+ {
+ evas_object_size_hint_min_set(wd->sliding_win, -1, 0);
+ evas_object_size_hint_max_set(wd->sliding_win, -1, 0);
+ }
+ else
+ _update_autoscroll_objs(data);
+ }
++=======
++>>>>>>> remotes/origin/upstream
return ECORE_CALLBACK_PASS_ON;
}
_elm_theme_object_set(obj, wd->base, "conformant", "base", "default");
elm_widget_resize_object_set(obj, wd->base);
++<<<<<<< HEAD
+ wd->layout = elm_layout_add(obj);
+ edje_object_part_swallow(wd->base, "elm.swallow.content", wd->layout);
+ elm_layout_theme_set(wd->layout, "conformant", "layout", "content");
+
+ _swallow_conformant_parts(obj);
++=======
+ _swallow_conformant_parts(obj);
+
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_ELEMENTARY_X
Evas_Object *top = elm_widget_top_get(obj);
Ecore_X_Window xwin = elm_win_xwindow_get(top);
wd->vkb_state = ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
}
// FIXME: get kbd region prop
++<<<<<<< HEAD
+
+#endif
++=======
+ #endif
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE,
_conformant_move_resize_event_cb, obj);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE,
_conformant_move_resize_event_cb, obj);
++<<<<<<< HEAD
+ evas_object_smart_callback_add(wd->layout, "sub-object-del", _sub_del, obj);
++=======
+
+ evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
++>>>>>>> remotes/origin/upstream
_mirrored_set(obj, elm_widget_mirrored_get(obj));
_sizing_eval(obj);
return obj;
}
++<<<<<<< HEAD
+EAPI void
+elm_conformant_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ _content_set_hook(obj, NULL, content);
+}
+
+EAPI Evas_Object *
+elm_conformant_content_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
+elm_conformant_content_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_conformant_content_area_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
if (!wd) return NULL;
/*Finger waggle warning*/
_elm_dangerous_call_check(__FUNCTION__);
++<<<<<<< HEAD
+ return wd->layout;
++=======
+ return (Evas_Object *)edje_object_part_object_get(wd->base, "elm.swallow.content");
++>>>>>>> remotes/origin/upstream
}
* Available styles for it:
* - @c "default"
*
++<<<<<<< HEAD
+ * Default contents parts of the conformant widget that you can use for are:
++=======
+ * Default content parts of the conformant widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the conformant
*
* See how to use this widget in this example:
EAPI Evas_Object *elm_conformant_add(Evas_Object *parent);
/**
++<<<<<<< HEAD
+ * Returns the Evas_Object that represents the content area.
+ *
+ * @param obj The conformant object.
+ * @return The content area of the widget.
+ *
+ * @ingroup Conformant
+ */
+EAPI Evas_Object *elm_conformant_content_area_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @}
*/
* and Elementary provides functions to choose them (think of X11
* cursors, as an example).
*
++<<<<<<< HEAD
+ * There's also the possibility of, besides using engine provided
+ * cursors, also use ones coming from Edje theming files. Both
++=======
+ * By default, Elementary searches cursors only from engine.
+ * There's also the possibility of, besides using engine provided
+ * cursors, also use the ones coming from Edje theme files. Both
++>>>>>>> remotes/origin/upstream
* globally and per widget, Elementary makes it possible for one to
* make the cursors lookup to be held on engines only or on
* Elementary's theme file, too. To set cursor's hot spot,
* Set if the cursor set should be searched on the theme or should use
* the provided by the engine, only.
*
++<<<<<<< HEAD
+ * @note before you set if should look on theme you should define a cursor
+ * with elm_object_cursor_set(). By default it will only look for cursors
+ * provided by the engine.
+ *
+ * @param obj an object with cursor already set.
+ * @param engine_only boolean to define it cursors should be looked only
++=======
+ * @note before you set engine_only you should define a cursor with
+ * elm_object_cursor_set(). By default it will only look for cursors
+ * provided by the engine.
+ *
+ * @param obj an object with cursor already set.
+ * @param engine_only boolean to define if cursors should be looked only
++>>>>>>> remotes/origin/upstream
* between the provided by the engine or searched on widget's theme as well.
*
* @ingroup Cursors
*/
++<<<<<<< HEAD
+EAPI void elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only);
++=======
+ EAPI void elm_object_cursor_theme_search_enabled_set(Evas_Object *obj, Eina_Bool theme_search);
++>>>>>>> remotes/origin/upstream
/**
* Get the cursor engine only usage for this object cursor.
*
* @ingroup Cursors
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_object_cursor_engine_only_get(const Evas_Object *obj);
+
+/**
+ * Get the configured cursor engine only usage
+ *
+ * This gets the globally configured exclusive usage of engine cursors.
+ *
+ * @return 1 if only engine cursors should be used
+ * @ingroup Cursors
+ */
+EAPI int elm_cursor_engine_only_get(void);
+
+/**
+ * Set the configured cursor engine only usage
+ *
+ * This sets the globally configured exclusive usage of engine cursors.
+ * It won't affect cursors set before changing this value.
+ *
+ * @param engine_only If 1 only engine cursors will be enabled, if 0 will
+ * look for them on theme before.
+ * @return EINA_TRUE if value is valid and setted (0 or 1)
+ * @ingroup Cursors
+ */
+EAPI Eina_Bool elm_cursor_engine_only_set(int engine_only);
++=======
+ EAPI Eina_Bool elm_object_cursor_theme_search_enabled_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
/**
* @defgroup Debug Debug
++<<<<<<< HEAD
+ * don't use it unless you are sure
++=======
+ * Don't use it unless you are sure.
++>>>>>>> remotes/origin/upstream
*
* @{
*/
++<<<<<<< HEAD
+EINA_DEPRECATED EAPI void elm_gen_clear(Evas_Object *obj);
+EINA_DEPRECATED EAPI void elm_gen_item_selected_set(Elm_Gen_Item *it, Eina_Bool selected);
+EINA_DEPRECATED EAPI Eina_Bool elm_gen_item_selected_get(const Elm_Gen_Item *it);
+EINA_DEPRECATED EAPI void elm_gen_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+EINA_DEPRECATED EAPI Eina_Bool elm_gen_always_select_mode_get(const Evas_Object *obj);
+EINA_DEPRECATED EAPI void elm_gen_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+EINA_DEPRECATED EAPI Eina_Bool elm_gen_no_select_mode_get(const Evas_Object *obj);
+EINA_DEPRECATED EAPI void elm_gen_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+EINA_DEPRECATED EAPI void elm_gen_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+EINA_DEPRECATED EAPI void elm_gen_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
+EINA_DEPRECATED EAPI void elm_gen_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
+
+EINA_DEPRECATED EAPI void elm_gen_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
+EINA_DEPRECATED EAPI void elm_gen_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+EINA_DEPRECATED EAPI void elm_gen_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+EINA_DEPRECATED EAPI void elm_gen_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+EINA_DEPRECATED EAPI void elm_gen_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+EINA_DEPRECATED EAPI Elm_Gen_Item *elm_gen_first_item_get(const Evas_Object *obj);
+EINA_DEPRECATED EAPI Elm_Gen_Item *elm_gen_last_item_get(const Evas_Object *obj);
+EINA_DEPRECATED EAPI Elm_Gen_Item *elm_gen_item_next_get(const Elm_Gen_Item *it);
+EINA_DEPRECATED EAPI Elm_Gen_Item *elm_gen_item_prev_get(const Elm_Gen_Item *it);
+EINA_DEPRECATED EAPI Evas_Object *elm_gen_item_widget_get(const Elm_Gen_Item *it);
+
+/**
+ * Get the widget object's handle which contains a given item
+ *
+ * @param it The Elementary object item
+ * @return The widget object
+ *
+ * @note This returns the widget object itself that an item belongs to.
+ * @note Every elm_object_item supports this API
+ * @deprecated Use elm_object_item_widget_get() instead
+ * @ingroup General
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_object_item_object_get(const Elm_Object_Item *it);
+
+/**
+ * @defgroup Toggle Toggle
+ *
++=======
+ /**
++>>>>>>> remotes/origin/upstream
* @image html img/widget/toggle/preview-00.png
* @image latex img/widget/toggle/preview-00.eps
*
* until the toggle is released by the cursor (assuming it
* has been triggered by the cursor in the first place).
*
++<<<<<<< HEAD
+ * Default contents parts of the toggle widget that you can use for are:
++=======
+ * Default content parts of the toggle widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the toggle
*
* Default text parts of the toggle widget that you can use for are:
*
* Return the icon object which is set for this widget.
*
++<<<<<<< HEAD
+ * @see elm_toggle_icon_set()
+ *
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_part_content_get() instead.
*/
EINA_DEPRECATED EAPI Evas_Object *elm_toggle_icon_get(const Evas_Object *obj);
*
* Unparent and return the icon object which was set for this widget.
*
++<<<<<<< HEAD
+ * @see elm_toggle_icon_set()
+ *
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_part_content_unset() instead.
*/
EINA_DEPRECATED EAPI Evas_Object *elm_toggle_icon_unset(Evas_Object *obj);
EINA_DEPRECATED EAPI Eina_Bool elm_scrolled_entry_cnp_textonly_get(Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the text to show in the anchorblock
+ *
+ * Sets the text of the anchorblock to @p text. This text can include markup
+ * format tags, including <c>\<a href=anchorname\></a></c> to begin a segment
+ * of text that will be specially styled and react to click events, ended
+ * with either of \</a\> or \</\>. When clicked, the anchor will emit an
+ * "anchor,clicked" signal that you can attach a callback to with
+ * evas_object_smart_callback_add(). The name of the anchor given in the
+ * event info struct will be the one set in the href attribute, in this
+ * case, anchorname.
+ *
+ * Other markup can be used to style the text in different ways, but it's
+ * up to the style defined in the theme which tags do what.
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_anchorblock_text_set(Evas_Object *obj, const char *text);
+
+/**
+ * Get the markup text set for the anchorblock
+ *
+ * Retrieves the text set on the anchorblock, with markup tags included.
+ *
+ * @param obj The anchorblock object
+ * @return The markup text set or @c NULL if nothing was set or an error
+ * occurred
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI const char *elm_anchorblock_text_get(const Evas_Object *obj);
+
+/**
+ * Set the text to show in the anchorview
+ *
+ * Sets the text of the anchorview to @p text. This text can include markup
+ * format tags, including <c>\<a href=anchorname\></c> to begin a segment of
+ * text that will be specially styled and react to click events, ended with
+ * either of \</a\> or \</\>. When clicked, the anchor will emit an
+ * "anchor,clicked" signal that you can attach a callback to with
+ * evas_object_smart_callback_add(). The name of the anchor given in the
+ * event info struct will be the one set in the href attribute, in this
+ * case, anchorname.
+ *
+ * Other markup can be used to style the text in different ways, but it's
+ * up to the style defined in the theme which tags do what.
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_anchorview_text_set(Evas_Object *obj, const char *text);
+
+/**
+ * Get the markup text set for the anchorview
+ *
+ * Retrieves the text set on the anchorview, with markup tags included.
+ *
+ * @param obj The anchorview object
+ * @return The markup text set or @c NULL if nothing was set or an error
+ * occurred
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI const char *elm_anchorview_text_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the ctxpopup item's disabled/enabled state.
+ *
+ * @param it Ctxpopup item to be enabled/disabled
+ * @return disabled @c EINA_TRUE, if disabled, @c EINA_FALSE otherwise
+ *
+ * @see elm_ctxpopup_item_disabled_set()
+ * @deprecated use elm_object_item_disabled_get() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI Eina_Bool elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Set the ctxpopup item's state as disabled or enabled.
+ *
+ * @param it Ctxpopup item to be enabled/disabled
+ * @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
+ *
+ * When disabled the item is greyed out to indicate it's state.
+ * @deprecated use elm_object_item_disabled_set() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI void elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
+
+/**
+ * @brief Get the icon object for the given ctxpopup item.
+ *
+ * @param it Ctxpopup item
+ * @return icon object or @c NULL, if the item does not have icon or an error
+ * occurred
+ *
+ * @see elm_ctxpopup_item_append()
+ * @see elm_ctxpopup_item_icon_set()
+ *
+ * @deprecated use elm_object_item_part_content_get() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it);
+
+/**
+ * @brief Sets the side icon associated with the ctxpopup item
+ *
+ * @param it Ctxpopup item
+ * @param icon Icon object to be set
+ *
+ * Once the icon object is set, a previously set one will be deleted.
+ * @warning Setting the same icon for two items will cause the icon to
+ * dissapear from the first item.
+ *
+ * @see elm_ctxpopup_item_append()
+ *
+ * @deprecated use elm_object_item_part_content_set() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI void elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon);
+
+/**
+ * @brief Get the label for the given ctxpopup item.
+ *
+ * @param it Ctxpopup item
+ * @return label string or @c NULL, if the item does not have label or an
+ * error occured
+ *
+ * @see elm_ctxpopup_item_append()
+ * @see elm_ctxpopup_item_label_set()
+ *
+ * @deprecated use elm_object_item_text_get() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI const char *elm_ctxpopup_item_label_get(const Elm_Object_Item *it);
+
+/**
+ * @brief (Re)set the label on the given ctxpopup item.
+ *
+ * @param it Ctxpopup item
+ * @param label String to set as label
+ *
+ * @deprecated use elm_object_item_text_set() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI void elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label);
+
+/**
+ * @brief Set an elm widget as the content of the ctxpopup.
+ *
+ * @param obj Ctxpopup object
+ * @param content Content to be swallowed
+ *
+ * If the content object is already set, a previous one will bedeleted. If
+ * you want to keep that old content object, use the
+ * elm_ctxpopup_content_unset() function.
+ *
+ * @warning Ctxpopup can't hold both a item list and a content at the same
+ * time. When a content is set, any previous items will be removed.
+ *
+ * @deprecated use elm_object_content_set() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI void elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content);
+
+/**
+ * @brief Unset the ctxpopup content
+ *
+ * @param obj Ctxpopup object
+ * @return The content that was being used
+ *
+ * Unparent and return the content object which was set for this widget.
+ *
+ * @deprecated use elm_object_content_unset()
+ *
+ * @see elm_ctxpopup_content_set()
+ *
+ * @deprecated use elm_object_content_unset() instead
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_ctxpopup_content_unset(Evas_Object *obj);
+
+/**
+ * @brief Delete the given item in a ctxpopup object.
+ *
+ * @param it Ctxpopup item to be deleted
+ *
+ * @deprecated Use elm_object_item_del() instead
+ * @see elm_ctxpopup_item_append()
+ *
+ * @ingroup Ctxpopup
+ */
+EINA_DEPRECATED EAPI void elm_ctxpopup_item_del(Elm_Object_Item *it);
+
+/**
+ * Set the label for a given file selector button widget
+ *
+ * @param obj The file selector button widget
+ * @param label The text label to be displayed on @p obj
+ *
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_fileselector_button_label_set(Evas_Object *obj, const char *label);
+
+/**
+ * Get the label set for a given file selector button widget
+ *
+ * @param obj The file selector button widget
+ * @return The button label
+ *
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI const char *elm_fileselector_button_label_get(const Evas_Object *obj);
+
+/**
+ * Set the icon on a given file selector button widget
+ *
+ * @param obj The file selector button widget
+ * @param icon The icon object for the button
+ *
+ * Once the icon object is set, a previously set one will be
+ * deleted. If you want to keep the latter, use the
+ * elm_fileselector_button_icon_unset() function.
+ *
+ * @deprecated Use elm_object_part_content_set() instead
+ * @see elm_fileselector_button_icon_get()
+ */
+EINA_DEPRECATED EAPI void elm_fileselector_button_icon_set(Evas_Object *obj, Evas_Object *icon);
+
+/**
+ * Get the icon set for a given file selector button widget
+ *
+ * @param obj The file selector button widget
+ * @return The icon object currently set on @p obj or @c NULL, if
+ * none is
+ *
+ * @deprecated Use elm_object_part_content_get() instead
+ * @see elm_fileselector_button_icon_set()
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_fileselector_button_icon_get(const Evas_Object *obj);
+
+/**
+ * Unset the icon used in a given file selector button widget
+ *
+ * @param obj The file selector button widget
+ * @return The icon object that was being used on @p obj or @c
+ * NULL, on errors
+ *
+ * Unparent and return the icon object which was set for this
+ * widget.
+ *
+ * @deprecated Use elm_object_part_content_unset() instead
+ * @see elm_fileselector_button_icon_set()
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_fileselector_button_icon_unset(Evas_Object *obj);
+
+/**
+ * Set the label for a given file selector entry widget's button
+ *
+ * @param obj The file selector entry widget
+ * @param label The text label to be displayed on @p obj widget's
+ * button
+ *
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_fileselector_entry_button_label_set(Evas_Object *obj, const char *label);
+
+/**
+ * Get the label set for a given file selector entry widget's button
+ *
+ * @param obj The file selector entry widget
+ * @return The widget button's label
+ *
+ * @deprecated use elm_object_text_set() instead.
+ */
+EINA_DEPRECATED EAPI const char *elm_fileselector_entry_button_label_get(const Evas_Object *obj);
+
+/**
+ * Set the icon on a given file selector entry widget's button
+ *
+ * @param obj The file selector entry widget
+ * @param icon The icon object for the entry's button
+ *
+ * Once the icon object is set, a previously set one will be
+ * deleted. If you want to keep the latter, use the
+ * elm_fileselector_entry_button_icon_unset() function.
+ *
+ * @deprecated Use elm_object_part_content_set() instead
+ * @see elm_fileselector_entry_button_icon_get()
+ */
+EINA_DEPRECATED EAPI void elm_fileselector_entry_button_icon_set(Evas_Object *obj, Evas_Object *icon);
+
+/**
+ * Get the icon set for a given file selector entry widget's button
+ *
+ * @param obj The file selector entry widget
+ * @return The icon object currently set on @p obj widget's button
+ * or @c NULL, if none is
+ *
+ * @deprecated Use elm_object_part_content_get() instead
+ * @see elm_fileselector_entry_button_icon_set()
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_fileselector_entry_button_icon_get(const Evas_Object *obj);
+
+/**
+ * Unset the icon used in a given file selector entry widget's
+ * button
+ *
+ * @param obj The file selector entry widget
+ * @return The icon object that was being used on @p obj widget's
+ * button or @c NULL, on errors
+ *
+ * Unparent and return the icon object which was set for this
+ * widget's button.
+ *
+ * @deprecated Use elm_object_part_content_unset() instead
+ * @see elm_fileselector_entry_button_icon_set()
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_fileselector_entry_button_icon_unset(Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @brief Sets the content of the hover object and the direction in which it
* will pop out.
*
*
* All directions may have contents at the same time, except for
* "smart". This is a special placement hint and its use case
++<<<<<<< HEAD
+ * independs of the calculations coming from
++=======
+ * depends of the calculations coming from
++>>>>>>> remotes/origin/upstream
* elm_hover_best_content_location_get(). Its use is for cases when
* one desires only one hover content, but with a dynamic special
* placement within the hover area. The content's geometry, whenever
EINA_DEPRECATED EAPI void elm_hoversel_item_del(Elm_Object_Item *it);
/**
++<<<<<<< HEAD
+ * Set actionslider label.
+ *
+ * @param[in] obj The actionslider object
+ * @param[in] pos The position of the label.
+ * (ELM_ACTIONSLIDER_LABEL_LEFT, ELM_ACTIONSLIDER_LABEL_RIGHT)
+ * @param label The label which is going to be set.
+ * @deprecated use elm_object_part_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_actionslider_label_set(Evas_Object *obj, Elm_Actionslider_Label_Pos pos, const char *label);
++=======
+ * Set actionslider labels.
+ *
+ * @param obj The actionslider object
+ * @param left_label The label to be set on the left.
+ * @param center_label The label to be set on the center.
+ * @param right_label The label to be set on the right.
+ * @deprecated use elm_object_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_actionslider_labels_set(Evas_Object *obj, const char *left_label, const char *center_label, const char *right_label);
++>>>>>>> remotes/origin/upstream
/**
* Get actionslider labels.
*
* @deprecated use elm_object_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Bg
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay);
*
* @deprecated use elm_object_part_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Bg
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_bg_overlay_get(const Evas_Object *obj);
*
* @deprecated use elm_object_part_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Bg
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_bg_overlay_unset(Evas_Object *obj);
*
* @see elm_calendar_mark_add()
*
++<<<<<<< HEAD
+ * @ingroup Calendar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_calendar_text_saturday_color_set(Evas_Object *obj, int pos);
*
* @see elm_calendar_mark_add()
*
++<<<<<<< HEAD
+ * @ingroup Calendar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_calendar_text_sunday_color_set(Evas_Object *obj, int pos);
*
* @see elm_calendar_mark_add()
*
++<<<<<<< HEAD
+ * @ingroup Calendar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_calendar_text_weekday_color_set(Evas_Object *obj, int pos);
*
* @deprecated use elm_object_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Conformant
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_conformant_content_set(Evas_Object *obj, Evas_Object *content);
*
* @deprecated use elm_object_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Conformant
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj);
*
* @deprecated use elm_object_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Conformant
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj);
/**
* Get the side labels max length.
*
++<<<<<<< HEAD
+ * @deprecated use elm_diskselector_side_label_length_get() instead:
++=======
+ * @deprecated use elm_diskselector_side_text_max_length_get() instead:
++>>>>>>> remotes/origin/upstream
*
* @param obj The diskselector object.
* @return The max length defined for side labels, or 0 if not a valid
* diskselector.
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI int elm_diskselector_side_label_lenght_get(const Evas_Object *obj);
/**
* Set the side labels max length.
*
++<<<<<<< HEAD
+ * @deprecated use elm_diskselector_side_label_length_set() instead:
++=======
+ * @deprecated use elm_diskselector_side_text_max_length_set() instead:
++>>>>>>> remotes/origin/upstream
*
* @param obj The diskselector object.
* @param len The max length defined for side labels.
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len);
* @see elm_diskselector_item_append()
* @deprecated Use elm_object_item_data_get()
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_diskselector_item_data_get(const Elm_Object_Item *it);
*
* Once the icon object is set, a previously set one will be deleted.
* @warning Setting the same icon for two items will cause the icon to
++<<<<<<< HEAD
+ * dissapear from the first item.
++=======
+ * disappear from the first item.
++>>>>>>> remotes/origin/upstream
*
* If an icon was passed as argument on item creation, with function
* elm_diskselector_item_append(), it will be already
* @see elm_diskselector_item_icon_get()
*
* @deprecated Use elm_object_item_part_content_set() instead
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_icon_set(Elm_Object_Item *it, Evas_Object *icon);
/**
* Get the icon associated to the item.
*
++<<<<<<< HEAD
+ * @param item The diskselector item
++=======
+ * @param it The diskselector item
++>>>>>>> remotes/origin/upstream
* @return The icon associated to @p it
*
* The return value is a pointer to the icon associated to @p item when it was
* @see elm_diskselector_item_icon_set()
*
* @deprecated Use elm_object_item_part_content_set() instead
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EAPI Evas_Object *elm_diskselector_item_icon_get(const Elm_Object_Item *it);
*
* An item with label "January" would be displayed on side position as
* "Jan" if max length is set to 3 with function
++<<<<<<< HEAD
+ * elm_diskselector_side_label_lenght_set(), or "Janu", if this property
++=======
+ * elm_diskselector_side_text_max_length_set(), or "Janu", if this property
++>>>>>>> remotes/origin/upstream
* is set to 4.
*
* When this @p item is selected, the entire label will be displayed,
* elm_diskselector_item_append(), it will be already
* displayed by the item.
*
++<<<<<<< HEAD
+ * @see elm_diskselector_side_label_lenght_set()
++=======
+ * @see elm_diskselector_side_text_max_length_set()
++>>>>>>> remotes/origin/upstream
* @see elm_diskselector_item_label_get()
* @see elm_diskselector_item_append()
*
* @deprecated Use elm_object_item_text_set() instead
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_label_set(Elm_Object_Item *it, const char *label);
*
* @see elm_diskselector_item_label_set() for more details.
* @see elm_diskselector_item_append()
++<<<<<<< HEAD
+ * @use elm_object_item_text_get()
+ *
+ * @ingroup Diskselector
++=======
+ * @deprecated Use elm_object_item_text_get() instead
+ *
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_diskselector_item_label_get(const Elm_Object_Item *it);
* freed.
* @deprecated Use elm_object_item_del_cb_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
* @see elm_diskselector_clear()
* @see elm_diskselector_item_append()
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_del(Elm_Object_Item *it);
* @deprecated Use elm_object_item_tooltip_text_set() instead
* @see elm_object_tooltip_text_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
* @deprecated Use elm_object_item_tooltip_content_cb_set() instead
* @see elm_object_tooltip_content_cb_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
* @see elm_object_tooltip_unset() for more details.
* @see elm_diskselector_item_tooltip_content_cb_set()
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_tooltip_unset(Elm_Object_Item *it);
* @deprecated Use elm_object_item_tooltip_style_set() instead
* @see elm_object_tooltip_style_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_diskselector_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
* @see elm_object_tooltip_style_get() for more details.
* @see elm_diskselector_item_tooltip_style_set()
*
++<<<<<<< HEAD
+ * @ingroup Diskselector
+ */
+EINA_DEPRECATED EAPI const char *elm_diskselector_item_tooltip_style_get(const Elm_Object_Item *it);
+
++=======
+ */
+ EINA_DEPRECATED EAPI const char *elm_diskselector_item_tooltip_style_get(const Elm_Object_Item *it);
+
+ /**
+ * Set the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it Target item
+ * @param cursor the cursor name to be used.
+ *
+ * @see elm_object_cursor_set() for more details.
+ * @deprecated Use elm_object_item_cursor_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+
+ /**
+ * Get the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it diskselector item with cursor already set.
+ * @return the cursor name.
+ *
+ * @see elm_object_cursor_get() for more details.
+ * @see elm_diskselector_item_cursor_set()
+ * @deprecated Use elm_object_item_cursor_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI const char *elm_diskselector_item_cursor_get(const Elm_Object_Item *it);
+
+ /**
+ * Unset the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it Target item
+ *
+ * @see elm_object_cursor_unset() for more details.
+ * @see elm_diskselector_item_cursor_set()
+ * @deprecated use elm_object_item_cursor_unset() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_item_cursor_unset(Elm_Object_Item *it);
+
+ /**
+ * Sets a different style for this item cursor.
+ *
+ * @note before you set a style you should define a cursor with
+ * elm_diskselector_item_cursor_set()
+ *
+ * @param it diskselector item with cursor already set.
+ * @param style the theme style to use (default, transparent, ...)
+ *
+ * @see elm_object_cursor_style_set() for more details.
+ * @deprecated Use elm_object_item_cursor_style_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_item_cursor_style_set(Elm_Object_Item *it, const char *style);
+
+ /**
+ * Get the style for this item cursor.
+ *
+ * @param it diskselector item with cursor already set.
+ * @return style the theme style in use, defaults to "default". If the
+ * object does not have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_object_cursor_style_get() for more details.
+ * @see elm_diskselector_item_cursor_style_set()
+ * @deprecated Use elm_object_item_cursor_style_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI const char *elm_diskselector_item_cursor_style_get(const Elm_Object_Item *it);
+
+ /**
+ * Set if the cursor set should be searched on the theme or should use
+ * the provided by the engine, only.
+ *
+ * @note before you set if should look on theme you should define a cursor
+ * with elm_diskselector_item_cursor_set().
+ * By default it will only look for cursors provided by the engine.
+ *
+ * @param it widget item with cursor already set.
+ * @param engine_only boolean to define if cursors set with
+ * elm_diskselector_item_cursor_set() should be searched only
+ * between cursors provided by the engine or searched on widget's
+ * theme as well.
+ *
+ * @see elm_object_cursor_engine_only_set() for more details.
+ * @deprecated Use elm_object_item_cursor_engine_only_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+ /**
+ * Get the cursor engine only usage for this item cursor.
+ *
+ * @param it widget item with cursor already set.
+ * @return engine_only boolean to define it cursors should be looked only
+ * between the provided by the engine or searched on widget's theme as well.
+ * If the item does not have a cursor set, then @c EINA_FALSE is returned.
+ *
+ * @see elm_object_cursor_engine_only_get() for more details.
+ * @see elm_diskselector_item_cursor_engine_only_set()
+ * @deprecated Use elm_object_item_cursor_engine_only_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_diskselector_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
++>>>>>>> remotes/origin/upstream
EINA_DEPRECATED EAPI void elm_factory_content_set(Evas_Object *obj, Evas_Object *content);
EINA_DEPRECATED EAPI Evas_Object *elm_factory_content_get(const Evas_Object *obj);
* @see elm_object_item_text_set()
*
* @deprecated see elm_object_item_text_get() instead
++<<<<<<< HEAD
+ * @ingroup Flipselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_flipselector_item_label_get(const Elm_Object_Item *it);
* @see elm_object_item_text_get()
*
* @deprecated see elm_object_item_text_set() instead
++<<<<<<< HEAD
+ * @ingroup Flipselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label);
* @param it The item to delete
*
* @deprecated Use elm_object_item_del() instead
++<<<<<<< HEAD
+ * @ingroup Flipselector
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_flipselector_item_del(Elm_Object_Item *it);
/**
++<<<<<<< HEAD
++=======
+ * Set the interval on time updates for a user mouse button hold
+ * on a flip selector widget.
+ *
+ * @param obj The flip selector object
+ * @param interval The (first) interval value in seconds
+ *
+ * This interval value is @b decreased while the user holds the
+ * mouse pointer either flipping up or flipping down a given flip
+ * selector.
+ *
+ * This helps the user to get to a given item distant from the
+ * current one easier/faster, as it will start to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * 1.05, so it decreases a little bit.
+ *
+ * The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @see elm_flipselector_interval_get()
+ * @deprecated Use elm_flipselector_first_interval_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_flipselector_interval_set(Evas_Object *obj, double interval);
+
+ /**
+ * Get the interval on time updates for an user mouse button hold
+ * on a flip selector widget.
+ *
+ * @param obj The flip selector object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @see elm_flipselector_interval_set() for more details
+ * @deprecated Use elm_flipselector_first_interval_get()
+ *
+ */
+ EINA_DEPRECATED EAPI double elm_flipselector_interval_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Make a given Elementary object the focused one.
*
* @param obj The Elementary object to make focused.
* @see elm_object_focus_get()
* @deprecated use elm_object_focus_set() instead.
*
++<<<<<<< HEAD
+ * @ingroup Focus
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_focus(Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Give focus to next object in object tree.
+ *
+ * Give focus to next object in focus chain of one object sub-tree.
+ * If the last object of chain already have focus, the focus will go to the
+ * first object of chain.
+ *
+ * @param obj The object root of sub-tree
+ * @param dir Direction to cycle the focus
+ *
+ * @deprecated Use elm_object_focus_next() instead
+ */
+ EINA_DEPRECATED EAPI void elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Remove the focus from an Elementary object
*
* @param obj The Elementary to take focus from
* @see elm_object_focus() and elm_object_focus_custom_chain_get()
* @deprecated use elm_object_focus_set() instead.
*
++<<<<<<< HEAD
+ * @ingroup Focus
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_unfocus(Evas_Object *obj);
/**
++<<<<<<< HEAD
++ * @brief Set the frame label
++ *
++ * @param obj The frame object
++ * @param label The label of this frame object
++ *
++ * @deprecated use elm_object_text_set() instead.
++=======
+ * Give focus to near object in one direction.
+ *
+ * Give focus to near object in direction of one object.
+ * If none focusable object in given direction, the focus will not change.
+ *
+ * @param obj The reference object
+ * @param x Horizontal component of direction to focus
+ * @param y Vertical component of direction to focus
+ *
+ * @deprecated Support it later.
+ */
+ EINA_DEPRECATED EAPI void elm_object_focus_direction_go(Evas_Object *obj, int x, int y);
+
+ /**
* @brief Set the frame label
*
* @param obj The frame object
* @param label The label of this frame object
*
* @deprecated use elm_object_text_set() instead.
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_frame_label_set(Evas_Object *obj, const char *label);
*
* @param obj The frame object
*
++<<<<<<< HEAD
+ * @return The label of this frame objet or NULL if unable to get frame
++=======
+ * @return The label of this frame object or NULL if unable to get frame
++>>>>>>> remotes/origin/upstream
*
* @deprecated use elm_object_text_get() instead.
*/
* @see elm_genlist_horizontal_get()
*
* @deprecated use elm_genlist_mode_set()
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_genlist_horizontal_set(Evas_Object *obj, Elm_List_Mode mode);
* @see elm_genlist_horizontal_set()
*
* @deprecated use elm_genlist_mode_get()
++<<<<<<< HEAD
+ * @ingroup Genlist
+ */
+EAPI Elm_List_Mode elm_genlist_horizontal_get(const Evas_Object *obj);
++=======
+ */
+ EINA_DEPRECATED EAPI Elm_List_Mode elm_genlist_horizontal_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Return the data associated to a given genlist item
* @see elm_genlist_item_data_set()
*
* @deprecated Use elm_object_item_data_get() instead
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_genlist_item_data_get(const Elm_Object_Item *it);
* @see elm_genlist_item_data_get()
*
* @deprecated Use elm_object_item_data_set() instead
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_genlist_item_data_set(Elm_Object_Item *it, const void *data);
* @see elm_genlist_item_disabled_get()
* @deprecated Use elm_object_item_disabled_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_genlist_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
* @see elm_genlist_item_disabled_set() for more details
* @deprecated Use elm_object_item_disabled_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Eina_Bool elm_genlist_item_disabled_get(const Elm_Object_Item *it);
* once.
*
* @deprecated Use elm_object_item_del() instead
++<<<<<<< HEAD
+ * @ingroup Genlist
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_genlist_item_del(Elm_Object_Item *it);
* This returns the genlist object itself that an item belongs to.
* @deprecated Use elm_object_item_widget_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Genlist
+ */
+EINA_DEPRECATED EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Object_Item *it);
+
++=======
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_genlist_item_genlist_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the mode item style of items in the genlist
+ * @param obj The genlist object
+ * @return The mode item style string, or NULL if none is specified
+ *
+ * This is a constant string and simply defines the name of the
+ * style that will be used for mode animations. It can be
+ * @c NULL if you don't plan to use Genlist mode.
+ *
+ */
+ EINA_DEPRECATED EAPI const char *elm_genlist_mode_item_style_get(const Evas_Object *obj);
+
+ /**
+ * Set the mode item style of items in the genlist
+ * @param obj The genlist object
+ * @param style The mode item style string, or NULL if none is desired
+ *
+ * This is a constant string and simply defines the name of the
+ * style that will be used for mode animations. It can be
+ * @c NULL if you don't plan to use Genlist mode.
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_mode_item_style_set(Evas_Object *obj, const char *style);
+
+ /**
+ * Get the real Evas object created to implement the view of a
+ * given genlist item
+ *
+ * @param it The genlist item.
+ * @return the Evas object implementing this item's view.
+ *
+ * This returns the actual Evas object used to implement the
+ * specified genlist item's view. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the genlist. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the genlist is controlling it. This
+ * function is for querying, emitting custom signals or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
+ *
+ * @see elm_object_item_data_get()
+ * @deprecated No more support
+ *
+ */
+ EINA_DEPRECATED EAPI const Evas_Object *elm_genlist_item_object_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the Item's Flags
+ *
+ * @param it The genlist item
+ * @return The item type.
+ *
+ * This function returns the item's type. Normally the item's type.
+ * If it failed, return value is ELM_GENLIST_ITEM_MAX
+ *
+ * @deprecated Use elm_genlist_item_type_get() instead
+ */
+ EINA_DEPRECATED EAPI Elm_Genlist_Item_Type elm_genlist_item_flags_get(const Elm_Object_Item *it);
+
+ /**
+ * Tells genlist to "orphan" contents fetched by the item class
+ *
+ * @param it The item
+ *
+ * This instructs genlist to release references to contents in the item,
+ * meaning that they will no longer be managed by genlist and are
+ * floating "orphans" that can be re-used elsewhere if the user wants
+ * to.
+ *
+ * @deprecated Use elm_genlist_item_all_contents_unset() instead
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_contents_orphan(Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
#define ELM_IMAGE_ROTATE_90_CW 1
#define ELM_IMAGE_ROTATE_180_CW 2
/**
* Return the data associated with a given index widget item
*
++<<<<<<< HEAD
+ * @param it The index widget item handle
++=======
+ * @param item The index widget item handle
++>>>>>>> remotes/origin/upstream
* @return The data associated with @p it
* @deprecated Use elm_object_item_data_get() instead
*
* @see elm_index_item_data_set()
*
++<<<<<<< HEAD
+ * @ingroup Index
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_index_item_data_get(const Elm_Object_Item *item);
* the user had better to free that old data himself/herself.
*
* @deprecated Use elm_object_item_data_set() instead
++<<<<<<< HEAD
+ * @ingroup Index
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_index_item_data_set(Elm_Object_Item *it, const void *data);
* @c obj argument with a handle to the parent index widget.
*
* @deprecated Use elm_object_item_del_cb_set() instead
++<<<<<<< HEAD
+ * @ingroup Index
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_index_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
* that callback function will be called by this one.
*
* @deprecated Use elm_object_item_del() instead
++<<<<<<< HEAD
+ * @ingroup Index
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_index_item_del(Evas_Object *obj, Elm_Object_Item *item);
* @param obj The layout object
* @param swallow The swallow part name in the edje file
* @param content The child that will be added in this layout object
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the content object is set, a previously set one will be deleted.
* If you want to keep that old content object, use the
* @see @ref secBox
* @deprecated use elm_object_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Layout
+ */
+EINA_DEPRECATED EAPI void elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content);
++=======
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content);
++>>>>>>> remotes/origin/upstream
/**
* Get the child object in the given content part.
*
* @deprecated use elm_object_part_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Layout
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_layout_content_get(const Evas_Object *obj, const char *swallow);
*
* @deprecated use elm_object_part_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Layout
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_layout_content_unset(Evas_Object *obj, const char *swallow);
* @param obj The layout object
* @param part The TEXT part where to set the text
* @param text The text to set
++<<<<<<< HEAD
+ *
+ * @ingroup Layout
+ * @deprecated use elm_object_part_text_set() instead.
+ */
+EINA_DEPRECATED EAPI void elm_layout_text_set(Evas_Object *obj, const char *part, const char *text);
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @deprecated use elm_object_part_text_set() instead.
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_layout_text_set(Evas_Object *obj, const char *part, const char *text);
++>>>>>>> remotes/origin/upstream
/**
* Get the text set in the given part
*
* @return The text set in @p part
*
++<<<<<<< HEAD
+ * @ingroup Layout
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_part_text_get() instead.
*/
EINA_DEPRECATED EAPI const char *elm_layout_text_get(const Evas_Object *obj, const char *part);
/**
* @def elm_layout_label_set
++<<<<<<< HEAD
+ * Convienience macro to set the label in a layout that follows the
+ * Elementary naming convention for its parts.
+ *
+ * @ingroup Layout
++=======
+ * Convenience macro to set the label in a layout that follows the
+ * Elementary naming convention for its parts.
+ *
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_set() instead.
*/
#define elm_layout_label_set(_ly, _txt) \
* Convenience macro to get the label in a layout that follows the
* Elementary naming convention for its parts.
*
++<<<<<<< HEAD
+ * @ingroup Layout
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_set() instead.
*/
#define elm_layout_label_get(_ly) \
*
* @deprecated use elm_object_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Mapbuf
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content);
*
* @deprecated use elm_object_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Mapbuf
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj);
*
* @deprecated use elm_object_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Mapbuf
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj);
* @param it The menu item object.
* @param label The label to set for @p item
*
++<<<<<<< HEAD
+ * @warning Don't use this funcion on items created with
++=======
+ * @warning Don't use this function on items created with
++>>>>>>> remotes/origin/upstream
* elm_menu_item_add_object() or elm_menu_item_separator_add().
*
* @deprecated Use elm_object_item_text_set() instead
EINA_DEPRECATED EAPI void elm_menu_item_del(Elm_Object_Item *it);
/**
++<<<<<<< HEAD
++=======
+ * @brief @brief Return a menu item's owner menu
+ *
+ * @param it The menu item
+ * @return The menu object owning @p item, or NULL on failure
+ *
+ * Use this function to get the menu object owning an item.
+ * @deprecated Use elm_object_item_widget_get() instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_menu_item_menu_get(const Elm_Object_Item *it);
+
+ /**
+ * @brief Set the icon of a menu item to the standard icon with name @p icon
+ *
+ * @param it The menu item object.
+ * @param icon The icon object to set for the content of @p item
+ *
+ * @deprecated elm_menu_item_icon_name_set() instead
+ * Once this icon is set, any previously set icon will be deleted.
+ */
+ EINA_DEPRECATED EAPI void elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon);
+
+ /**
+ * @brief Get the string representation from the icon of a menu item
+ *
+ * @param it The menu item object.
+ * @return The string representation of @p item's icon or NULL
+ *
+ * @deprecated elm_menu_item_icon_name_get() instead
+ * @see elm_menu_item_icon_name_set()
+ */
+ EINA_DEPRECATED EAPI const char *elm_menu_item_object_icon_name_get(const Elm_Object_Item *it);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @brief Set the content of the notify widget
*
* @param obj The notify object
*
* @note Elementary objects may have many labels (e.g. Action Slider)
* @deprecated Use elm_object_part_text_set() instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_text_part_set(Evas_Object *obj, const char *part, const char *label);
*
* @note Elementary objects may have many labels (e.g. Action Slider)
* @deprecated Use elm_object_part_text_get() instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_object_text_part_get(const Evas_Object *obj, const char *part);
*
* @note Elementary objects may have many contents
* @deprecated Use elm_object_part_content_set instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_content_part_set(Evas_Object *obj, const char *part, Evas_Object *content);
*
* @note Elementary objects may have many contents
* @deprecated Use elm_object_part_content_get instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_object_content_part_get(const Evas_Object *obj, const char *part);
*
* @note Elementary objects may have many contents
* @deprecated Use elm_object_part_content_unset instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_object_content_part_unset(Evas_Object *obj, const char *part);
*
* @note Elementary object items may have many contents
* @deprecated Use elm_object_item_part_content_set instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
*
* @note Elementary object items may have many contents
* @deprecated Use elm_object_item_part_content_get instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
*
* @note Elementary object items may have many contents
* @deprecated Use elm_object_item_part_content_unset instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
*
* @note Elementary object items may have many labels
* @deprecated Use elm_object_item_part_text_get instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
*
* @note Elementary object items may have many labels
* @deprecated Use elm_object_item_part_text_set instead.
++<<<<<<< HEAD
+ * @ingroup General
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
*
* @deprecated use elm_object_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content);
*
* @deprecated use elm_object_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content);
*
* @deprecated use elm_object_part_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_panes_content_left_get(const Evas_Object *obj);
*
* @deprecated use elm_object_part_content_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_panes_content_right_get(const Evas_Object *obj);
*
* @deprecated use elm_object_part_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_panes_content_left_unset(Evas_Object *obj);
*
* @deprecated use elm_object_part_content_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Panes
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_panes_content_right_unset(Evas_Object *obj);
/**
* @param obj The progress bar object
* @param label The text label string, in UTF-8
*
++<<<<<<< HEAD
+ * @ingroup Progressbar
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_set() instead.
*/
EINA_DEPRECATED EAPI void elm_progressbar_label_set(Evas_Object *obj, const char *label);
* @param obj The progressbar object
* @return The text label string, in UTF-8
*
++<<<<<<< HEAD
+ * @ingroup Progressbar
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_set() instead.
*/
EINA_DEPRECATED EAPI const char *elm_progressbar_label_get(const Evas_Object *obj);
* @see elm_progressbar_icon_get()
* @deprecated use elm_object_part_content_set() instead.
*
++<<<<<<< HEAD
+ * @ingroup Progressbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon);
* @see elm_progressbar_icon_set() for more details
* @deprecated use elm_object_part_content_get() instead.
*
++<<<<<<< HEAD
+ * @ingroup Progressbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj);
* @see elm_progressbar_icon_set() for more details
* @deprecated use elm_object_part_content_unset() instead.
*
++<<<<<<< HEAD
+ * @ingroup Progressbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj);
* @param obj The progress bar object
* @param label The text label string, in UTF-8
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_set() instead.
*/
EINA_DEPRECATED EAPI void elm_slider_label_set(Evas_Object *obj, const char *label);
* @param obj The progressbar object
* @return The text label string, in UTF-8
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_text_get() instead.
*/
EINA_DEPRECATED EAPI const char *elm_slider_label_get(const Evas_Object *obj);
* @warning If the object being set does not have minimum size hints set,
* it won't get properly displayed.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_object_part_content_set() instead.
*/
EINA_DEPRECATED EAPI void elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon);
* @see elm_slider_icon_get()
* @deprecated use elm_object_part_content_unset() instead.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_slider_icon_unset(Evas_Object *obj);
*
* @deprecated use elm_object_part_content_get() instead.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_slider_icon_get(const Evas_Object *obj);
*
* @deprecated use elm_object_part_content_set() instead.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_slider_end_set(Evas_Object *obj, Evas_Object *end);
* @deprecated use elm_object_part_content_unset() instead
* instead.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_slider_end_unset(Evas_Object *obj);
* @deprecated use elm_object_part_content_get() instead
* instead.
*
++<<<<<<< HEAD
+ * @ingroup Slider
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_slider_end_get(const Evas_Object *obj);
* @return Returns the data associated to this item
*
* @deprecated use elm_object_item_data_get() instead
++<<<<<<< HEAD
+ * @ingroup Slideshow
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_slideshow_item_data_get(const Elm_Object_Item *it);
* @param it The slideshow item
*
* @deprecated Use elm_object_item_de() instead
++<<<<<<< HEAD
+ * @ingroup Slideshow
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_slideshow_item_del(Elm_Object_Item *it);
/**
++<<<<<<< HEAD
++=======
+ * Display a given slideshow widget's item, programmatically.
+ *
+ * @param it The item to display on @p obj's viewport
+ *
+ * The change between the current item and @p item will use the
+ * transition @p obj is set to use (@see
+ * elm_slideshow_transition_set()).
+ *
+ * @deprecated use elm_slideshow_item_show() instead
+ */
+ EINA_DEPRECATED EAPI void elm_slideshow_show(Elm_Object_Item *it);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Get the toolbar object from an item.
*
* @param it The item.
* This returns the toolbar object itself that an item belongs to.
*
* @deprecated use elm_object_item_object_get() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_toolbar_item_toolbar_get(const Elm_Object_Item *it);
* @see elm_toolbar_item_append()
*
* @deprecated use elm_object_item_text_get() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_toolbar_item_label_get(const Elm_Object_Item *it);
* Set the label of item.
*
* @param it The item of toolbar.
++<<<<<<< HEAD
+ * @param text The label of item.
++=======
+ * @param label The label of item.
++>>>>>>> remotes/origin/upstream
*
* The label to be displayed by the item.
* Label will be placed at icons bottom (if set).
* @see elm_toolbar_item_append()
*
* @deprecated use elm_object_item_text_set() instead
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_label_set(Elm_Object_Item *it, const char *label);
* @see elm_toolbar_item_data_set()
*
* @deprecated use elm_object_item_data_get() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_toolbar_item_data_get(const Elm_Object_Item *it);
* the user had better to free that old data himself/herself.
*
* @deprecated use elm_object_item_data_set() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_data_set(Elm_Object_Item *it, const void *data);
* @see elm_toolbar_item_disabled_set() for more details.
*
* @deprecated use elm_object_item_disabled_get() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_item_disabled_get(const Elm_Object_Item *it);
* enabled).
*
* @deprecated use elm_object_item_disabled_set() instead.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
* @param obj The toolbar object
* @param vertical If @c EINA_TRUE, the toolbar is vertical
* By default, a toolbar will be horizontal. Use this function to create a vertical toolbar.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_toolbar_horizontal_set() instead.
*/
EINA_DEPRECATED EAPI void elm_toolbar_orientation_set(Evas_Object *obj, Eina_Bool vertical);
* @param obj The toolbar object
* @return If @c EINA_TRUE, the toolbar is vertical
* By default, a toolbar will be horizontal. Use this function to determine whether a toolbar is vertical.
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
* @deprecated use elm_toolbar_horizontal_get() instead.
*/
EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_orientation_get(const Evas_Object *obj);
*
* This way, a data associated to a toolbar item could be properly freed.
*
++<<<<<<< HEAD
+ * @deprecated Use elm_object_item_del_cb_set() instead
+ * @ingroup Toolbar
++=======
+ * @deprecated Use elm_object_item_del_cb_set() instead
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
* @deprecated Use elm_object_item_del() instead
* @see elm_toolbar_item_append()
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_del(Elm_Object_Item *it);
* @deprecated Use elm_object_item_tooltip_text_set() instead
* @see elm_object_tooltip_text_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
* @deprecated Use elm_object_item_tooltip_content_cb_set() instead
* @see elm_object_tooltip_content_cb_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
* @see elm_object_tooltip_unset() for more details.
* @see elm_toolbar_item_tooltip_content_cb_set()
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_tooltip_unset(Elm_Object_Item *it);
* @deprecated Use elm_object_item_tooltip_style_set() instead
* @see elm_object_tooltip_style_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
* @see elm_object_tooltip_style_get() for more details.
* @see elm_toolbar_item_tooltip_style_set()
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_toolbar_item_tooltip_style_get(const Elm_Object_Item *it);
*
* @deprecated use elm_object_item_cursor_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_cursor_set(Elm_Object_Item *it, const char *cursor);
*
* @deprecated Use elm_object_item_cursor_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_toolbar_item_cursor_get(const Elm_Object_Item *it);
*
* @deprecated Use elm_object_item_cursor_unset() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_cursor_unset(Elm_Object_Item *it);
* cursor decorations <b>defined in a theme file</b>, which can have,
* given a cursor name/type, <b>alternate styles</b> on it. It
* works analogously as elm_object_cursor_style_set(), but here
++<<<<<<< HEAD
+ * applyed only to toolbar item objects.
+ *
+ * @warning Before you set a cursor style you should have definen a
++=======
+ * applies only to toolbar item objects.
+ *
+ * @warning Before you set a cursor style you should have defined a
++>>>>>>> remotes/origin/upstream
* custom cursor previously on the item, with
* elm_toolbar_item_cursor_set()
*
*
* @deprecated Use elm_object_item_cursor_style_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_cursor_style_set(Elm_Object_Item *it, const char *style);
*
* @deprecated Use elm_object_item_cursor_style_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_toolbar_item_cursor_style_get(const Elm_Object_Item *it);
*
* @deprecated Use elm_object_item_cursor_engine_only_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
*
* @deprecated Use elm_object_item_cursor_engine_only_get() instead
*
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_item_cursor_engine_only_get(const Elm_Object_Item *it);
* @see elm_video_add()
* @deprecated use elm_object_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup Video
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_player_video_set(Evas_Object *player, Evas_Object *video);
* Set the label of item.
*
* @param it The item of segment control.
++<<<<<<< HEAD
+ * @param text The label of item.
++=======
+ * @param label The label of item.
++>>>>>>> remotes/origin/upstream
*
* The label to be displayed by the item.
* Label will be at right of the icon (if set).
* @see elm_segment_control_item_add()
* @deprecated Use elm_object_item_text_set() instead
*
++<<<<<<< HEAD
+ * @ingroup SegmentControl
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_segment_control_item_label_set(Elm_Object_Item *it, const char *label);
*
* Once the icon object is set, a previously set one will be deleted.
* @warning Setting the same icon for two items will cause the icon to
++<<<<<<< HEAD
+ * dissapear from the first item.
++=======
+ * disappear from the first item.
++>>>>>>> remotes/origin/upstream
*
* If an icon was passed as argument on item creation, with function
* elm_segment_control_item_add(), it will be already
* @see elm_segment_control_item_icon_get()
* @deprecated Use elm_object_item_part_content_set() instead
*
++<<<<<<< HEAD
+ * @ingroup SegmentControl
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_segment_control_item_icon_set(Elm_Object_Item *it, Evas_Object *icon);
* elm_segment_control_item_insert_at().
*
* @deprecated Use elm_object_item_del() instead
++<<<<<<< HEAD
+ * @ingroup SegmentControl
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_segment_control_item_del(Elm_Object_Item *it);
* @param obj The multibuttonentry object
* @return The label, or NULL if none
*
++<<<<<<< HEAD
+ * @deprecated Use elm_object_text_get() instead
++=======
+ * @deprecated Use elm_object_text_get() instead
++>>>>>>> remotes/origin/upstream
*
*/
EINA_DEPRECATED EAPI const char *elm_multibuttonentry_label_get(const Evas_Object *obj);
* Delete a given item
*
* @param it The item
++<<<<<<< HEAD
+ *
+ * @deprecated Use elm_object_item_del() instead
++=======
+ *
+ * @deprecated Use elm_object_item_del() instead
++>>>>>>> remotes/origin/upstream
*
*/
EINA_DEPRECATED EAPI void elm_multibuttonentry_item_del(Elm_Object_Item *it);
* the current view if the given item is a top one.
*
* @deprecated Use elm_object_item_del() instead
++<<<<<<< HEAD
+ * @ingroup Naviframe
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_naviframe_item_del(Elm_Object_Item *it);
* enabled).
*
* @deprecated Use elm_object_item_disabled_set() instead
++<<<<<<< HEAD
+ *
+ * @ingroup List
++=======
+ *
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
* @see elm_list_item_disabled_set() for more details.
*
* @deprecated Use elm_object_item_disabled_get() instead
++<<<<<<< HEAD
+ *
+ * @ingroup List
++=======
+ *
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Eina_Bool elm_list_item_disabled_get(const Elm_Object_Item *it);
* @li item itself;
*
* This way, a data associated to a list item could be properly freed.
++<<<<<<< HEAD
+ *
+ * @deprecated Please use elm_object_item_del_cb_set() instead.
+ *
+ * @ingroup List
++=======
+ *
+ * @deprecated Please use elm_object_item_del_cb_set() instead.
+ *
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func);
* @see elm_list_item_append()
*
* @deprecated Please use elm_object_item_data_get() instead.
++<<<<<<< HEAD
+ *
+ * @ingroup List
++=======
+ *
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void *elm_list_item_data_get(const Elm_Object_Item *it);
* @see elm_list_item_icon_set()
*
* @deprecated Please use elm_object_item_part_content_get(item, NULL);
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_list_item_icon_get(const Elm_Object_Item *it);
*
* Once the icon object is set, a previously set one will be deleted.
* @warning Setting the same icon for two items will cause the icon to
++<<<<<<< HEAD
+ * dissapear from the first item.
++=======
+ * disappear from the first item.
++>>>>>>> remotes/origin/upstream
*
* If an icon was passed as argument on item creation, with function
* elm_list_item_append() or similar, it will be already
* @see elm_list_item_icon_get()
*
* @deprecated Please use elm_object_item_part_content_set(item, NULL, icon);
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_icon_set(Elm_Object_Item *it, Evas_Object *icon);
* @see elm_list_item_icon_set()
*
* @deprecated Please use elm_object_item_part_content_get(item, "end");
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Evas_Object *elm_list_item_end_get(const Elm_Object_Item *it);
*
* Once the icon object is set, a previously set one will be deleted.
* @warning Setting the same icon for two items will cause the icon to
++<<<<<<< HEAD
+ * dissapear from the first item.
++=======
+ * disappear from the first item.
++>>>>>>> remotes/origin/upstream
*
* If an icon was passed as argument on item creation, with function
* elm_list_item_append() or similar, it will be already
* @see elm_list_item_end_get()
*
* @deprecated Please use elm_object_item_part_content_set(item, "end", end);
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_end_set(Elm_Object_Item *it, Evas_Object *end);
* @see elm_list_item_append()
*
* @deprecated Please use elm_object_item_text_get(item);
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_list_item_label_get(const Elm_Object_Item *it);
* @see elm_list_item_append()
*
* @deprecated Please use elm_object_item_text_set(item, text);
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_label_set(Elm_Object_Item *it, const char *text);
* @deprecated Use elm_object_item_tooltip_text_set() instead
* @see elm_object_tooltip_text_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
* @param disable If EINA_TRUE, size restrictions are disabled
* @return EINA_FALSE on failure, EINA_TRUE on success
*
++<<<<<<< HEAD
+ * This function allows a tooltip to expand beyond its parant window's canvas.
++=======
+ * This function allows a tooltip to expand beyond its parent window's canvas.
++>>>>>>> remotes/origin/upstream
* It will instead be limited only by the size of the display.
*
* @deprecated Use elm_object_item_tooltip_window_mode_set() instead
* @return If EINA_TRUE, size restrictions are disabled
*
* This function returns whether a tooltip is allowed to expand beyond
++<<<<<<< HEAD
+ * its parant window's canvas.
++=======
+ * its parent window's canvas.
++>>>>>>> remotes/origin/upstream
* It will instead be limited only by the size of the display.
*
* @deprecated Use elm_object_item_tooltip_window_mode_get() instead
*
* @see elm_object_tooltip_content_cb_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
* @see elm_object_tooltip_unset() for more details.
* @see elm_list_item_tooltip_content_cb_set()
*
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_tooltip_unset(Elm_Object_Item *it);
* @deprecated Use elm_object_item_tooltip_style_set() instead
* @see elm_object_tooltip_style_set() for more details.
*
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
/**
* Get the style for this item tooltip.
*
++<<<<<<< HEAD
+ * @param item list item with tooltip already set.
++=======
+ * @param it list item with tooltip already set.
++>>>>>>> remotes/origin/upstream
* @return style the theme style in use, defaults to "default". If the
* object does not have a tooltip set, then NULL is returned.
*
* @see elm_object_tooltip_style_get() for more details.
* @see elm_list_item_tooltip_style_set()
*
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_list_item_tooltip_style_get(const Elm_Object_Item *it);
* @see elm_list_item_cursor_unset()
*
* @deprecated Please use elm_object_item_cursor_set() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_cursor_set(Elm_Object_Item *it, const char *cursor);
* @see elm_list_item_cursor_set()
* @see elm_list_item_cursor_unset()
*
++<<<<<<< HEAD
+ * @deprecated Please use elm_object_item_cursor_get() insteas
+ * @ingroup List
++=======
+ * @deprecated Please use elm_object_item_cursor_get() instead
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_list_item_cursor_get(const Elm_Object_Item *it);
* @see elm_list_item_cursor_set()
*
* @deprecated Please use elm_list_item_cursor_unset() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_cursor_unset(Elm_Object_Item *it);
* cursor decorations <b>defined in a theme file</b>, which can have,
* given a cursor name/type, <b>alternate styles</b> on it. It
* works analogously as elm_object_cursor_style_set(), but here
++<<<<<<< HEAD
+ * applyed only to list item objects.
+ *
+ * @warning Before you set a cursor style you should have definen a
++=======
+ * applies only to list item objects.
+ *
+ * @warning Before you set a cursor style you should have defined a
++>>>>>>> remotes/origin/upstream
* custom cursor previously on the item, with
* elm_list_item_cursor_set()
*
* @see elm_list_item_cursor_style_get()
*
* @deprecated Please use elm_list_item_cursor_style_set() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_cursor_style_set(Elm_Object_Item *it, const char *style);
* @see elm_list_item_cursor_style_set() for more details
*
* @deprecated Please use elm_list_item_cursor_style_get() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI const char *elm_list_item_cursor_style_get(const Elm_Object_Item *it);
* provided by the rendering engine.
*
* @deprecated Please use elm_list_item_cursor_engine_only_set() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_list_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
* @see elm_list_item_cursor_engine_only_set(), for more details
*
* @deprecated Please use elm_list_item_cursor_engine_only_get() instead
++<<<<<<< HEAD
+ * @ingroup List
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Eina_Bool elm_list_item_cursor_engine_only_get(const Elm_Object_Item *it);
/**
++<<<<<<< HEAD
++=======
+ * Delete the item from the list.
+ *
+ * @param it The item of list to be deleted.
+ *
+ * If deleting all list items is required, elm_list_clear()
+ * should be used instead of getting items list and deleting each one.
+ *
+ * @see elm_list_clear()
+ * @see elm_list_item_append()
+ * @see elm_widget_item_del_cb_set()
+ * @deprecated Use elm_object_item_del() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_list_item_del(Elm_Object_Item *it);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the shrink state of toolbar @p obj.
*
* @param obj The toolbar object.
* @param shrink_mode Toolbar's items display behavior.
*
* The toolbar won't scroll if #ELM_TOOLBAR_SHRINK_NONE,
++<<<<<<< HEAD
+ * but will enforce a minimun size so all the items will fit, won't scroll
++=======
+ * but will enforce a minimum size so all the items will fit, won't scroll
++>>>>>>> remotes/origin/upstream
* and won't show the items that don't fit if #ELM_TOOLBAR_SHRINK_HIDE,
* will scroll if #ELM_TOOLBAR_SHRINK_SCROLL, and will create a button to
* pop up excess elements with #ELM_TOOLBAR_SHRINK_MENU.
*
* @deprecated Please use elm_toolbar_shrink_mode_set(obj, shrink_mode);
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI void elm_toolbar_mode_shrink_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mode);
* @see elm_toolbar_shrink_mode_set() for details.
*
* @deprecated Please use elm_toolbar_shrink_mode_get(obj);
++<<<<<<< HEAD
+ * @ingroup Toolbar
++=======
++>>>>>>> remotes/origin/upstream
*/
EINA_DEPRECATED EAPI Elm_Toolbar_Shrink_Mode elm_toolbar_mode_shrink_get(const Evas_Object *obj);
EINA_DEPRECATED EAPI Evas_Object *elm_entry_end_unset(Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the autocapitalization on the immodule.
+ *
+ * @param obj The entry object
+ * @param autocap EINA_TRUE if autocapitalization is needed
+ * @deprecated Use elm_entry_autocapital_type_set() instead
+ */
+EINA_DEPRECATED EAPI void elm_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap);
+
+EINA_DEPRECATED EAPI void elm_entry_autoperiod_set(Evas_Object *obj, Eina_Bool autoperiod);
+
+/**
+ * Set whether the return key on the input panel is disabled automatically when entry has no text.
+ *
+ * If @p on is EINA_TRUE, The return key on input panel is disabled when the entry has no text.
+ * The return Key on the input panel is automatically enabled when the entry has text.
+ * The default value is EINA_FALSE.
+ *
+ * @param obj The entry object
+ * @param on If @p on is EINA_TRUE, the return key is automatically disabled when the entry has no text.
+ * @deprecated Use elm_entry_input_panel_return_key_autoenabled_set() instead
+ */
+EINA_DEPRECATED EAPI void elm_entry_autoenable_returnkey_set(Evas_Object *obj, Eina_Bool on);
++=======
+ * Set route service to be used. By default used source is
+ * #ELM_MAP_ROUTE_SOURCE_YOURS.
+ *
+ * @see elm_map_route_source_set()
+ * @see elm_map_route_source_get()
+ *
+ */
+ typedef enum
+ {
+ ELM_MAP_ROUTE_SOURCE_YOURS, /**< Routing service http://www.yournavigation.org/ . Set by default.*/
+ ELM_MAP_ROUTE_SOURCE_MONAV, /**< MoNav offers exact routing without heuristic assumptions. Its routing core is based on Contraction Hierarchies. It's not working with Map yet. */
+ ELM_MAP_ROUTE_SOURCE_ORS, /**< Open Route Service: http://www.openrouteservice.org/ . It's not working with Map yet. */
+ ELM_MAP_ROUTE_SOURCE_LAST
+ } Elm_Map_Route_Sources;
++>>>>>>> remotes/origin/upstream
/**
* Convert a pixel coordinate into a rotated pixel coordinate.
* @param y vertical coordinate of the point to rotate.
* @param cx rotation's center horizontal position.
* @param cy rotation's center vertical position.
++<<<<<<< HEAD
+ * @param degree amount of degrees from 0.0 to 360.0 to rotate arount Z axis.
+ * @param xx Pointer where to store rotated x.
+ * @param yy Pointer where to store rotated y.
+ *
+ * @ingroup Map
+ * @deprecated Rotation is not needed to know. Use elm_map_canvas_to_geo_convert() instead
+ */
+EINA_DEPRECATED EAPI void elm_map_utils_rotate_coord(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy);
+
+// All elm_editfield APIs were deprecated.
+EINA_DEPRECATED Evas_Object *elm_editfield_add(Evas_Object *parent);
+EINA_DEPRECATED void elm_editfield_label_set(Evas_Object *obj, const char *label);
+EINA_DEPRECATED const char *elm_editfield_label_get(Evas_Object *obj);
+EINA_DEPRECATED void elm_editfield_guide_text_set(Evas_Object *obj, const char *text);
+EINA_DEPRECATED const char *elm_editfield_guide_text_get(Evas_Object *obj);
+EINA_DEPRECATED Evas_Object *elm_editfield_entry_get(Evas_Object *obj);
+EINA_DEPRECATED void elm_editfield_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line);
+EINA_DEPRECATED Eina_Bool elm_editfield_entry_single_line_get(Evas_Object *obj);
+EINA_DEPRECATED void elm_editfield_eraser_set(Evas_Object *obj, Eina_Bool visible);
+EINA_DEPRECATED Eina_Bool elm_editfield_eraser_get(Evas_Object *obj);
+
+/**
+ * @defgroup Searchbar Searchbar
+ * @addtogroup Searchbar
+ * @{
+ * @ingroup Elementary
+ *
+ * This is Searchbar.
+ * It can contain a simple entry and button object.
+ */
+
+ /**
+ * Add a new searchbar to the parent
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ */
+ EINA_DEPRECATED Evas_Object *elm_searchbar_add(Evas_Object *parent);
+ /**
+ * set the text of entry
+ *
+ * @param obj The searchbar object
+ * @return void
+ */
+ EINA_DEPRECATED void elm_searchbar_text_set(Evas_Object *obj, const char *entry);
+ /**
+ * get the text of entry
+ *
+ * @param obj The searchbar object
+ * @return string pointer of entry
+ */
+ EINA_DEPRECATED const char *elm_searchbar_text_get(Evas_Object *obj);
+ /**
+ * get the pointer of entry
+ *
+ * @param obj The searchbar object
+ * @return the entry object
+ */
+ EINA_DEPRECATED Evas_Object *elm_searchbar_entry_get(Evas_Object *obj);
+ /**
+ * get the pointer of editfield
+ *
+ * @param obj The searchbar object
+ * @return the editfield object
+ */
+ EINA_DEPRECATED Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj);
+ /**
+ * set the cancel button animation flag
+ *
+ * @param obj The searchbar object
+ * @param cancel_btn_ani_flag The flag of animating cancen button or not
+ * @return void
+ */
+ EINA_DEPRECATED void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag);
+ /**
+ * set the cancel button show mode
+ *
+ * @param obj The searchbar object
+ * @param visible The flag of cancen button show or not
+ * @return void
+ */
+ EINA_DEPRECATED void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible);
+ /**
+ * clear searchbar status
+ *
+ * @param obj The searchbar object
+ * @return void
+ */
+ EINA_DEPRECATED void elm_searchbar_clear(Evas_Object *obj);
+ /**
+ * set the searchbar boundary rect mode(with bg rect) set
+ *
+ * @param obj The searchbar object
+ * @param boundary The present flag of boundary rect or not
+ * @return void
+ */
+ EINA_DEPRECATED void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary);
+ /**
+ * @}
+ */
++=======
+ * @param degree amount of degrees from 0.0 to 360.0 to rotate around Z axis.
+ * @param xx Pointer where to store rotated x.
+ * @param yy Pointer where to store rotated y.
+ *
+ * @deprecated Use elm_map_canvas_to_geo_convert() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_utils_rotate_coord(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy);
+
+ /**
+ * Convert a pixel coordinate (x,y) into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param x the coordinate.
+ * @param y the coordinate.
+ * @param size the size in pixels of the map.
+ * The map is a square and generally his size is : pow(2.0, zoom)*256.
+ * @param lon Pointer to store the longitude that correspond to x.
+ * @param lat Pointer to store the latitude that correspond to y.
+ *
+ * @note Origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken on account.
+ *
+ * @see elm_map_utils_convert_geo_into_coord() if you need the inverse.
+ *
+ * @deprecated Use elm_map_canvas_to_geo_convert() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat);
+
+ /**
+ * Convert a geographic coordinate (longitude, latitude) into a pixel
+ * coordinate (x, y).
+ *
+ * @param obj The map object.
+ * @param lon the longitude.
+ * @param lat the latitude.
+ * @param size the size in pixels of the map. The map is a square
+ * and generally his size is : pow(2.0, zoom)*256.
+ * @param x Pointer to store the horizontal pixel coordinate that
+ * correspond to the longitude.
+ * @param y Pointer to store the vertical pixel coordinate that
+ * correspond to the latitude.
+ *
+ * @note Origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken on account.
+ *
+ * @see elm_map_utils_convert_coord_into_geo() if you need the inverse.
+ *
+ * @deprecatedUse Use elm_map_canvas_to_geo_convert() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y);
+
+ /**
+ * Get the information of downloading status.
+ *
+ * @param obj The map object.
+ * @param try_num Pointer to store number of tiles being downloaded.
+ * @param finish_num Pointer to store number of tiles successfully
+ * downloaded.
+ *
+ * This gets the current downloading status for the map object, the number
+ * of tiles being downloaded and the number of tiles already downloaded.
+ *
+ * @deprecatedUse Use elm_map_tile_load_status_get() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
+
+ /**
+ * Convert a geographic coordinate (longitude, latitude) into a name
+ * (address).
+ *
+ * @param obj The map object.
+ * @param lon the longitude.
+ * @param lat the latitude.
+ * @return name A #Elm_Map_Name handle for this coordinate.
+ *
+ * To get the string for this address, elm_map_name_address_get()
+ * should be used.
+ *
+ * @see elm_map_utils_convert_name_into_coord() if you need the inverse.
+ * @deprecatedUse Use elm_map_name_add() instead
+ *
+ */
+ EINA_DEPRECATED EAPI Elm_Map_Name *elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat);
+
+ /**
+ * Convert a name (address) into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param address The address.
+ * @return name A #Elm_Map_Name handle for this address.
+ *
+ * To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
+ *
+ * @see elm_map_utils_convert_coord_into_name() if you need the inverse.
+ * @deprecatedUse Use elm_map_name_geo_request() instead
+ *
+ */
+ EINA_DEPRECATED EAPI Elm_Map_Name *elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address);
+
+ /**
+ * Convert canvas coordinates into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param x horizontal coordinate of the point to convert.
+ * @param y vertical coordinate of the point to convert.
+ * @param lon A pointer to the longitude.
+ * @param lat A pointer to the latitude.
+ *
+ * This gets longitude and latitude from canvas x, y coordinates. The canvas
+ * coordinates mean x, y coordinate from current viewport.
+ *
+ * see elm_map_rotate_get()
+ * @deprecatedUse Use elm_map_canvas_to_region_convert() instead
+ *
+ */
+ EAPI void elm_map_canvas_to_geo_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat);
+
+ /**
+ * Get the current geographic coordinates of the map.
+ *
+ * @param obj The map object.
+ * @param lon Pointer to store longitude.
+ * @param lat Pointer to store latitude.
+ *
+ * This gets the current center coordinates of the map object. It can be
+ * set by elm_map_region_bring_in() and elm_map_region_show().
+ *
+ * @see elm_map_region_bring_in()
+ * @see elm_map_region_show()
+ *
+ * @deprecated Use elm_map_region_get() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat);
+
+ /**
+ * Animatedly bring in given coordinates to the center of the map.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to jump to the given @p lat and @p lon coordinates
+ * and show it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This will use animation to do so and take a period
+ * of time to complete.
+ *
+ * @see elm_map_region_show() for a function to avoid animation.
+ * @see elm_map_region_get()
+ *
+ * @deprecated Use elm_map_region_bring_in() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat);
+
+ /**
+ * Show the given coordinates at the center of the map, @b immediately.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region containing the given @p lat and @p lon, that will be moved to the
+ * center of the map.
+ *
+ * @see elm_map_region_bring_in() for a function to move with animation.
+ * @see elm_map_region_get()
+ *
+ * @deprecated Use elm_map_region_show() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_geo_region_show(Evas_Object *obj, double lon, double lat);
+
+ /**
+ * Set the minimum zoom of the source.
+ *
+ * @param obj The map object.
+ * @param zoom New minimum zoom value to be used.
+ *
+ * By default, it's 0.
+ *
+ * @deprecated Use elm_map_zoom_min_set() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_source_zoom_min_set(Evas_Object *obj, int zoom);
+
+ /**
+ * Get the minimum zoom of the source.
+ *
+ * @param obj The map object.
+ * @return Returns the minimum zoom of the source.
+ *
+ * @see elm_map_zoom_min_set() for details.
+ *
+ * @deprecated Use elm_map_zoom_min_get() instead
+ */
+ EINA_DEPRECATED EAPI int elm_map_source_zoom_min_get(const Evas_Object *obj);
+
+ /**
+ * Set the maximum zoom of the source.
+ *
+ * @param obj The map object.
+ * @param zoom New maximum zoom value to be used.
+ *
+ * By default, it's 18.
+ *
+ * @deprecated Use elm_map_zoom_max_set() instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_source_zoom_max_set(Evas_Object *obj, int zoom);
+
+ /**
+ * Get the maximum zoom of the source.
+ *
+ * @param obj The map object.
+ * @return Returns the maximum zoom of the source.
+ *
+ * @see elm_map_zoom_min_set() for details.
+ *
+ * @deprecated Use elm_map_zoom_max_get() instead
+ */
+ EINA_DEPRECATED EAPI int elm_map_source_zoom_max_get(const Evas_Object *obj);
+
+
+ /**
+ * Get the list of available sources.
+ *
+ * @param obj The map object.
+ * @return The source names list.
+ *
+ * It will provide a list with all available sources, that can be set as
+ * current source with elm_map_source_name_set(), or get with
+ * elm_map_source_name_get().
+ *
+ * Available sources:
+ * @li "Mapnik"
+ * @li "Osmarender"
+ * @li "CycleMap"
+ * @li "Maplint"
+ *
+ * @see elm_map_source_name_set() for more details.
+ * @see elm_map_source_name_get()
+ * @deprecated Use elm_map_sources_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI const char **elm_map_source_names_get(const Evas_Object *obj);
+
+ /**
+ * Set the source of the map.
+ *
+ * @param obj The map object.
+ * @param source_name The source to be used.
+ *
+ * Map widget retrieves images that composes the map from a web service.
+ * This web service can be set with this method.
+ *
+ * A different service can return a different maps with different
+ * information and it can use different zoom values.
+ *
+ * The @p source_name need to match one of the names provided by
+ * elm_map_source_names_get().
+ *
+ * The current source can be get using elm_map_source_name_get().
+ *
+ * @see elm_map_source_names_get()
+ * @see elm_map_source_name_get()
+ * @deprecated Use elm_map_source_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_map_source_name_set(Evas_Object *obj, const char *source_name);
+
+ /**
+ * Get the name of currently used source.
+ *
+ * @param obj The map object.
+ * @return Returns the name of the source in use.
+ *
+ * @see elm_map_source_name_set() for more details.
+ * @deprecated Use elm_map_source_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI const char *elm_map_source_name_get(const Evas_Object *obj);
+
+ /**
+ * Set the source of the route service to be used by the map.
+ *
+ * @param obj The map object.
+ * @param source The route service to be used, being it one of
+ * #ELM_MAP_ROUTE_SOURCE_YOURS (default), #ELM_MAP_ROUTE_SOURCE_MONAV,
+ * and #ELM_MAP_ROUTE_SOURCE_ORS.
+ *
+ * Each one has its own algorithm, so the route retrieved may
+ * differ depending on the source route. Now, only the default is working.
+ *
+ * #ELM_MAP_ROUTE_SOURCE_YOURS is the routing service provided at
+ * http://www.yournavigation.org/.
+ *
+ * #ELM_MAP_ROUTE_SOURCE_MONAV, offers exact routing without heuristic
+ * assumptions. Its routing core is based on Contraction Hierarchies.
+ *
+ * #ELM_MAP_ROUTE_SOURCE_ORS, is provided at http://www.openrouteservice.org/
+ *
+ * @see elm_map_route_source_get().
+ * @deprecated Use elm_map_source_set() instead
+ *
+ */
+ EAPI void elm_map_route_source_set(Evas_Object *obj, Elm_Map_Route_Sources source);
+
+ /**
+ * Get the current route source.
+ *
+ * @param obj The map object.
+ * @return The source of the route service used by the map.
+ *
+ * @see elm_map_route_source_set() for details.
+ * @deprecated Use elm_map_source_get() instead
+ *
+ */
+ EAPI Elm_Map_Route_Sources elm_map_route_source_get(const Evas_Object *obj);
+
+ /**
+ * Add a new marker to the map object.
+ *
+ * @param obj The map object.
+ * @param lon The longitude of the marker.
+ * @param lat The latitude of the marker.
+ * @param clas The class, to use when marker @b isn't grouped to others.
+ * @param clas_group The class group, to use when marker is grouped to others
+ * @param data The data passed to the callbacks.
+ *
+ * @return The created marker or @c NULL upon failure.
+ *
+ * A marker will be created and shown in a specific point of the map, defined
+ * by @p lon and @p lat.
+ *
+ * It will be displayed using style defined by @p class when this marker
+ * is displayed alone (not grouped). A new class can be created with
+ * elm_map_marker_class_new().
+ *
+ * If the marker is grouped to other markers, it will be displayed with
+ * style defined by @p class_group. Markers with the same group are grouped
+ * if they are close. A new group class can be created with
+ * elm_map_marker_group_class_new().
+ *
+ * Markers created with this method can be deleted with
+ * elm_map_marker_remove().
+ *
+ * A marker can have associated content to be displayed by a bubble,
+ * when a user click over it, as well as an icon. These objects will
+ * be fetch using class' callback functions.
+ *
+ * @see elm_map_marker_class_new()
+ * @see elm_map_marker_group_class_new()
+ * @see elm_map_marker_remove()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI Elm_Map_Marker *elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data);
+
+ /**
+ * Set the maximum numbers of markers' content to be displayed in a group.
+ *
+ * @param obj The map object.
+ * @param max The maximum numbers of items displayed in a bubble.
+ *
+ * A bubble will be displayed when the user clicks over the group,
+ * and will place the content of markers that belong to this group
+ * inside it.
+ *
+ * A group can have a long list of markers, consequently the creation
+ * of the content of the bubble can be very slow.
+ *
+ * In order to avoid this, a maximum number of items is displayed
+ * in a bubble.
+ *
+ * By default this number is 30.
+ *
+ * Marker with the same group class are grouped if they are close.
+ *
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_max_marker_per_group_set(Evas_Object *obj, int max);
+
+ /**
+ * Remove a marker from the map.
+ *
+ * @param marker The marker to remove.
+ *
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_remove(Elm_Map_Marker *marker);
+
+ /**
+ * Get the current coordinates of the marker.
+ *
+ * @param marker marker.
+ * @param lat Pointer to store the marker's latitude.
+ * @param lon Pointer to store the marker's longitude.
+ *
+ * These values are set when adding markers, with function
+ * elm_map_marker_add().
+ *
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat);
+
+ /**
+ * Animatedly bring in given marker to the center of the map.
+ *
+ * @param marker The marker to center at.
+ *
+ * This causes map to jump to the given @p marker's coordinates
+ * and show it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This will use animation to do so and take a period
+ * of time to complete.
+ *
+ * @see elm_map_marker_show() for a function to avoid animation.
+ * @see elm_map_marker_region_get()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_bring_in(Elm_Map_Marker *marker);
+
+ /**
+ * Show the given marker at the center of the map, @b immediately.
+ *
+ * @param marker The marker to center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region containing the given @p marker's coordinates, that will be
+ * moved to the center of the map.
+ *
+ * @see elm_map_marker_bring_in() for a function to move with animation.
+ * @see elm_map_markers_list_show() if more than one marker need to be
+ * displayed.
+ * @see elm_map_marker_region_get()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_show(Elm_Map_Marker *marker);
+
+ /**
+ * Move and zoom the map to display a list of markers.
+ *
+ * @param markers A list of #Elm_Map_Marker handles.
+ *
+ * The map will be centered on the center point of the markers in the list.
+ * Then the map will be zoomed in order to fit the markers using the maximum
+ * zoom which allows display of all the markers.
+ *
+ * @warning All the markers should belong to the same map object.
+ *
+ * @see elm_map_marker_show() to show a single marker.
+ * @see elm_map_marker_bring_in()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_markers_list_show(Eina_List *markers);
+
+ /**
+ * Set to show markers during zoom level changes or not.
+ *
+ * @param obj The map object.
+ * @param paused Use @c EINA_TRUE to @b not show markers or @c EINA_FALSE
+ * to show them.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for map.
+ *
+ * The default is off.
+ *
+ * This will stop zooming using animation, changing zoom levels will
+ * change instantly. This will stop any existing animations that are running.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the markers.
+ *
+ * The default is off.
+ *
+ * Enabling it will force the map to stop displaying the markers during
+ * zoom level changes. Set to on if you have a large number of markers.
+ *
+ * @see elm_map_paused_markers_get()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused);
+
+ /**
+ * Get a value whether markers will be displayed on zoom level changes or not
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map @b won't display markers or @c EINA_FALSE
+ * indicates it will.
+ *
+ * This gets the current markers paused state for the map object.
+ *
+ * @see elm_map_paused_markers_set() for details.
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_map_paused_markers_get(const Evas_Object *obj);
+
+ /**
+ * Get the Evas object returned by the Elm_Map_Marker_Get_Func callback
+ *
+ * @param marker The marker which content should be returned.
+ * @return Return the evas object if it exists, else @c NULL.
+ *
+ * To set callback function #Elm_Map_Marker_Get_Func for the marker class,
+ * elm_map_marker_class_get_cb_set() should be used.
+ *
+ * This content is what will be inside the bubble that will be displayed
+ * when an user clicks over the marker.
+ *
+ * This returns the actual Evas object used to be placed inside
+ * the bubble. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the map. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the map is controlling it. This
+ * function is for querying, emitting custom signals or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_map_marker_object_get(const Elm_Map_Marker *marker);
+
+ /**
+ * Update the marker
+ *
+ * @param marker The marker to be updated.
+ *
+ * If a content is set to this marker, it will call function to delete it,
+ * #Elm_Map_Marker_Del_Func, and then will fetch the content again with
+ * #Elm_Map_Marker_Get_Func.
+ *
+ * These functions are set for the marker class with
+ * elm_map_marker_class_get_cb_set() and elm_map_marker_class_del_cb_set().
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_update(Elm_Map_Marker *marker);
+
+ /**
+ * Close all the bubbles opened by the user.
+ *
+ * @param obj The map object.
+ *
+ * A bubble is displayed with a content fetched with #Elm_Map_Marker_Get_Func
+ * when the user clicks on a marker.
+ *
+ * This functions is set for the marker class with
+ * elm_map_marker_class_get_cb_set().
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_bubbles_close(Evas_Object *obj);
+
+ /**
+ * Create a new group class.
+ *
+ * @param obj The map object.
+ * @return Returns the new group class.
+ *
+ * Each marker must be associated to a group class. Markers in the same
+ * group are grouped if they are close.
+ *
+ * The group class defines the style of the marker when a marker is grouped
+ * to others markers. When it is alone, another class will be used.
+ *
+ * A group class will need to be provided when creating a marker with
+ * elm_map_marker_add().
+ *
+ * Some properties and functions can be set by class, as:
+ * - style, with elm_map_group_class_style_set()
+ * - data - to be associated to the group class. It can be set using
+ * elm_map_group_class_data_set().
+ * - min zoom to display markers, set with
+ * elm_map_group_class_zoom_displayed_set().
+ * - max zoom to group markers, set using
+ * elm_map_group_class_zoom_grouped_set().
+ * - visibility - set if markers will be visible or not, set with
+ * elm_map_group_class_hide_set().
+ * - #Elm_Map_Group_Icon_Get_Func - used to fetch icon for markers group classes.
+ * It can be set using elm_map_group_class_icon_cb_set().
+ *
+ * @see elm_map_marker_add()
+ * @see elm_map_group_class_style_set()
+ * @see elm_map_group_class_data_set()
+ * @see elm_map_group_class_zoom_displayed_set()
+ * @see elm_map_group_class_zoom_grouped_set()
+ * @see elm_map_group_class_hide_set()
+ * @see elm_map_group_class_icon_cb_set()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI Elm_Map_Group_Class *elm_map_group_class_new(Evas_Object *obj);
+
+ /**
+ * Set the marker's style of a group class.
+ *
+ * @param clas The group class.
+ * @param style The style to be used by markers.
+ *
+ * Each marker must be associated to a group class, and will use the style
+ * defined by such class when grouped to other markers.
+ *
+ * The following styles are provided by default theme:
+ * @li @c radio - blue circle
+ * @li @c radio2 - green circle
+ * @li @c empty
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style);
+
+ /**
+ * Set the icon callback function of a group class.
+ *
+ * @param clas The group class.
+ * @param icon_get The callback function that will return the icon.
+ *
+ * Each marker must be associated to a group class, and it can display a
+ * custom icon. The function @p icon_get must return this icon.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, Elm_Map_Group_Icon_Get_Func icon_get);
+
+ /**
+ * Set the data associated to the group class.
+ *
+ * @param clas The group class.
+ * @param data The new user data.
+ *
+ * This data will be passed for callback functions, like icon get callback,
+ * that can be set with elm_map_group_class_icon_cb_set().
+ *
+ * If a data was previously set, the object will lose the pointer for it,
+ * so if needs to be freed, you must do it yourself.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_group_class_icon_cb_set()
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data);
+
+ /**
+ * Set the minimum zoom from where the markers are displayed.
+ *
+ * @param clas The group class.
+ * @param zoom The minimum zoom.
+ *
+ * Markers only will be displayed when the map is displayed at @p zoom
+ * or bigger.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom);
+
+ /**
+ * Set the zoom from where the markers are no more grouped.
+ *
+ * @param clas The group class.
+ * @param zoom The maximum zoom.
+ *
+ * Markers only will be grouped when the map is displayed at
+ * less than @p zoom.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom);
+
+ /**
+ * Set if the markers associated to the group class @p clas are hidden or not.
+ *
+ * @param clas The group class.
+ * @param hide Use @c EINA_TRUE to hide markers or @c EINA_FALSE
+ * to show them.
+ *
+ * @param obj The map object.
+ * If @p hide is @c EINA_TRUE the markers will be hidden, but default
+ * is to show them.
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide);
+
+ /**
+ * Create a new marker class.
+ *
+ * @param obj The map object.
+ * @return Returns the new group class.
+ *
+ * Each marker must be associated to a class.
+ *
+ * The marker class defines the style of the marker when a marker is
+ * displayed alone, i.e., not grouped to to others markers. When grouped
+ * it will use group class style.
+ *
+ * A marker class will need to be provided when creating a marker with
+ * elm_map_marker_add().
+ *
+ * Some properties and functions can be set by class, as:
+ * - style, with elm_map_marker_class_style_set()
+ * - #Elm_Map_Marker_Icon_Get_Func - used to fetch icon for markers classes.
+ * It can be set using elm_map_marker_class_icon_cb_set().
+ * - #Elm_Map_Marker_Get_Func - used to fetch bubble content for marker classes.
+ * Set using elm_map_marker_class_get_cb_set().
+ * - #Elm_Map_Marker_Del_Func - used to delete bubble content for marker classes.
+ * Set using elm_map_marker_class_del_cb_set().
+ *
+ * @see elm_map_marker_add()
+ * @see elm_map_marker_class_style_set()
+ * @see elm_map_marker_class_icon_cb_set()
+ * @see elm_map_marker_class_get_cb_set()
+ * @see elm_map_marker_class_del_cb_set()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI Elm_Map_Marker_Class *elm_map_marker_class_new(Evas_Object *obj);
+
+ /**
+ * Set the marker's style of a marker class.
+ *
+ * @param clas The marker class.
+ * @param style The style to be used by markers.
+ *
+ * Each marker must be associated to a marker class, and will use the style
+ * defined by such class when alone, i.e., @b not grouped to other markers.
+ *
+ * The following styles are provided by default theme:
+ * @li @c radio
+ * @li @c radio2
+ * @li @c empty
+ *
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style);
+
+ /**
+ * Set the icon callback function of a marker class.
+ *
+ * @param clas The marker class.
+ * @param icon_get The callback function that will return the icon.
+ *
+ * Each marker must be associated to a marker class, and it can display a
+ * custom icon. The function @p icon_get must return this icon.
+ *
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Icon_Get_Func icon_get);
+
+ /**
+ * Set the bubble content callback function of a marker class.
+ *
+ * @param clas The marker class.
+ * @param get The callback function that will return the content.
+ *
+ * Each marker must be associated to a marker class, and it can display a
+ * a content on a bubble that opens when the user click over the marker.
+ * The function @p get must return this content object.
+ *
+ * If this content will need to be deleted, elm_map_marker_class_del_cb_set()
+ * can be used.
+ *
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_class_del_cb_set()
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Get_Func get);
+
+ /**
+ * Set the callback function used to delete bubble content of a marker class.
+ *
+ * @param clas The marker class.
+ * @param del The callback function that will delete the content.
+ *
+ * Each marker must be associated to a marker class, and it can display a
+ * a content on a bubble that opens when the user click over the marker.
+ * The function to return such content can be set with
+ * elm_map_marker_class_get_cb_set().
+ *
+ * If this content must be freed, a callback function need to be
+ * set for that task with this function.
+ *
+ * If this callback is defined it will have to delete (or not) the
+ * object inside, but if the callback is not defined the object will be
+ * destroyed with evas_object_del().
+ *
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_class_get_cb_set()
+ * @see elm_map_marker_add()
+ *
+ * @deprecated Use Elm_Map_Overlay instead
+ */
+ EINA_DEPRECATED EAPI void elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Del_Func del);
+
+ /**
+ * Set the route color.
+ *
+ * @param route The route object.
+ * @param r Red channel value, from 0 to 255.
+ * @param g Green channel value, from 0 to 255.
+ * @param b Blue channel value, from 0 to 255.
+ * @param a Alpha channel value, from 0 to 255.
+ *
+ * It uses an additive color model, so each color channel represents
+ * how much of each primary colors must to be used. 0 represents
+ * absence of this color, so if all of the three are set to 0,
+ * the color will be black.
+ *
+ * These component values should be integers in the range 0 to 255,
+ * (single 8-bit byte).
+ *
+ * This sets the color used for the route. By default, it is set to
+ * solid red (r = 255, g = 0, b = 0, a = 255).
+ *
+ * For alpha channel, 0 represents completely transparent, and 255, opaque.
+ *
+ * @see elm_map_route_color_get()
+ * @deprecated Use elm_map_overlay_color_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_map_route_color_set(Elm_Map_Route *route, int r, int g, int b, int a);
+
+ /**
+ * Get the route color.
+ *
+ * @param route The route object.
+ * @param r Pointer to store the red channel value.
+ * @param g Pointer to store the green channel value.
+ * @param b Pointer to store the blue channel value.
+ * @param a Pointer to store the alpha channel value.
+ *
+ * @see elm_map_route_color_set() for details.
+ * @deprecated Use elm_map_overlay_color_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g, int *b, int *a);
+
+ /**
+ * Remove a route from the map.
+ *
+ * @param route The route to remove.
+ *
+ * @see elm_map_route_add()
+ * @deprecated Use elm_map_route_del() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_map_route_remove(Elm_Map_Route *route);
+
+ /**
+ * Remove a name from the map.
+ *
+ * @param name The name to remove.
+ *
+ * Basically the struct handled by @p name will be freed, so conversions
+ * between address and coordinates will be lost.
+ *
+ * @see elm_map_utils_convert_name_into_coord()
+ * @see elm_map_utils_convert_coord_into_name()
+ * @deprecated Use elm_map_name_del() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_map_name_remove(Elm_Map_Name *name);
+
+ /**
+ * Get the gengrid object's handle which contains a given gengrid item
+ *
+ * @param it The item to fetch the container from
+ * @return The gengrid (parent) object
+ *
+ * This returns the gengrid object itself that an item belongs to.
+ *
+ * @deprecated Use elm_object_item_widget_get() instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_gengrid_item_gengrid_get(const Elm_Object_Item *it);
+
+ /**
+ * Return the data associated to a given gengrid item
+ *
+ * @param it The gengrid item.
+ * @return the data associated with this item.
+ *
+ * This returns the @c data value passed on the
+ * elm_gengrid_item_append() and related item addition calls.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_data_set()
+ * @deprecated Use elm_object_item_data_get() instead
+ */
+ EINA_DEPRECATED EAPI void *elm_gengrid_item_data_get(const Elm_Object_Item *it);
+
+ /**
+ * Set the data associated with a given gengrid item
+ *
+ * @param it The gengrid item
+ * @param data The data pointer to set on it
+ *
+ * This @b overrides the @c data value passed on the
+ * elm_gengrid_item_append() and related item addition calls. This
+ * function @b won't call elm_gengrid_item_update() automatically,
+ * so you'd issue it afterwards if you want to have the item
+ * updated to reflect the new data.
+ *
+ * @see elm_gengrid_item_data_get()
+ * @see elm_gengrid_item_update()
+ * @deprecated Use elm_object_item_data_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_item_data_set(Elm_Object_Item *it, const void *data);
+
+ /**
+ * Set whether a given gengrid item is disabled or not.
+ *
+ * @param it The gengrid item
+ * @param disabled Use @c EINA_TRUE, true disable it, @c EINA_FALSE
+ * to enable it back.
+ *
+ * A disabled item cannot be selected or unselected. It will also
+ * change its appearance, to signal the user it's disabled.
+ *
+ * @see elm_gengrid_item_disabled_get()
+ * @deprecated Use elm_object_item_disabled_set() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled);
+
+ /**
+ * Get whether a given gengrid item is disabled or not.
+ *
+ * @param it The gengrid item
+ * @return @c EINA_TRUE, if it's disabled, @c EINA_FALSE otherwise
+ * (and on errors).
+ *
+ * @see elm_gengrid_item_disabled_set() for more details
+ * @deprecated Use elm_object_item_disabled_get() instead
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_gengrid_item_disabled_get(const Elm_Object_Item *it);
+
+ /**
+ * Remove a gengrid item from its parent, deleting it.
+ *
+ * @param it The item to be removed.
+ * @return @c EINA_TRUE on success or @c EINA_FALSE, otherwise.
+ *
+ * @see elm_gengrid_clear(), to remove all items in a gengrid at
+ * once.
+ * @deprecated use elm_object_item_de() instead
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_item_del(Elm_Object_Item *it);
+
+ /**
+ * Update the item class of a gengrid item.
+ *
+ * This sets another class of the item, changing the way that it is
+ * displayed. After changing the item class, elm_gengrid_item_update() is
+ * called on the item @p it.
+ *
+ * @param it The gengrid item
+ * @param gic The gengrid item class describing the function pointers and the item style.
+ *
+ * @deprecated Use elm_gengrid_item_item_class_update instead
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_item_item_class_set(Elm_Object_Item *it, const Elm_Gengrid_Item_Class *gic);
+
+ /**
+ * Insert an item in a gengrid widget using a user-defined sort function.
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param comp User defined comparison function that defines the sort order
+ * based on Elm_Gen_Item.
+ * @param func Convenience function called when the item is selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This inserts an item in the gengrid based on user defined comparison function.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ * @see elm_gengrid_item_sorted_insert()
+ *
+ * @deprecated Use elm_gengrid_item_sorted_insert() instead
+ */
+ EINA_DEPRECATED EAPI Elm_Object_Item *elm_gengrid_item_direct_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+
+ /**
+ * Append a filter function for text inserted in the entry
+ *
+ * Append the given callback to the list. This functions will be called
+ * whenever any text is inserted into the entry, with the text to be inserted
+ * as a parameter. The callback function is free to alter the text in any way
+ * it wants, but it must remember to free the given pointer and update it.
+ * If the new text is to be discarded, the function can free it and set its
+ * text parameter to NULL. This will also prevent any following filters from
+ * being called.
+ *
+ * @param obj The entry object
+ * @param func The function to use as text filter
+ * @param data User data to pass to @p func
+ * @deprecated use elm_entry_markup_filter_append() instead
+ */
+ EINA_DEPRECATED EAPI void elm_entry_text_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+ /**
+ * Prepend a filter function for text inserted in the entry
+ *
+ * Prepend the given callback to the list. See elm_entry_text_filter_append()
+ * for more information
+ *
+ * @param obj The entry object
+ * @param func The function to use as text filter
+ * @param data User data to pass to @p func
+ * @deprecated use elm_entry_markup_filter_prepend() instead
+ */
+ EINA_DEPRECATED EAPI void elm_entry_text_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+ /**
+ * Remove a filter from the list
+ *
+ * Removes the given callback from the filter list. See
+ * elm_entry_text_filter_append() for more information.
+ *
+ * @param obj The entry object
+ * @param func The filter function to remove
+ * @param data The user data passed when adding the function
+ * @deprecated use elm_entry_markup_filter_remove() instead
+ */
+ EINA_DEPRECATED EAPI void elm_entry_text_filter_remove(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+ /**
+ * @brief Set the front content of the flip widget.
+ *
+ * @param obj The flip object
+ * @param content The new front content object
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_flip_content_front_unset() function.
+ *
+ * @deprecated Use elm_object_part_content_set(flip, "front") instead
+ */
+ EINA_DEPRECATED EAPI void elm_flip_content_front_set(Evas_Object *obj, Evas_Object *content);
+
+ /**
+ * @brief Set the back content of the flip widget.
+ *
+ * @param obj The flip object
+ * @param content The new back content object
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_flip_content_back_unset() function.
+ *
+ * @deprecated Use elm_object_part_content_set(flip, "back") instead
+ */
+ EINA_DEPRECATED EAPI void elm_flip_content_back_set(Evas_Object *obj, Evas_Object *content);
+
+ /**
+ * @brief Get the front content used for the flip
+ *
+ * @param obj The flip object
+ * @return The front content object that is being used
+ *
+ * Return the front content object which is set for this widget.
+ *
+ * @deprecated Use elm_object_part_content_get(flip, "front") instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_flip_content_front_get(const Evas_Object *obj);
+
+ /**
+ * @brief Get the back content used for the flip
+ *
+ * @param obj The flip object
+ * @return The back content object that is being used
+ *
+ * Return the back content object which is set for this widget.
+ *
+ * @deprecated Use elm_object_part_content_get(flip, "back") instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_flip_content_back_get(const Evas_Object *obj);
+
+ /**
+ * @brief Unset the front content used for the flip
+ *
+ * @param obj The flip object
+ * @return The front content object that was being used
+ *
+ * Unparent and return the front content object which was set for this widget.
+ *
+ * @deprecated Use elm_object_part_content_unset(flip, "front") instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_flip_content_front_unset(Evas_Object *obj);
+
+ /**
+ * @brief Unset the back content used for the flip
+ *
+ * @param obj The flip object
+ * @return The back content object that was being used
+ *
+ * Unparent and return the back content object which was set for this widget.
+ *
+ * @deprecated Use elm_object_part_content_unset(flip, "back") instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_flip_content_back_unset(Evas_Object *obj);
+
+ /**
+ * @brief Get flip front visibility state
+ *
+ * @param obj The flip object
+ * @return EINA_TRUE if front front is showing, EINA_FALSE if the back is
+ * showing.
+ *
+ * @deprecated Use elm_flip_front_visible_get() instead
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_flip_front_get(const Evas_Object *obj);
+
+ /*
+ * Add a new pager to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_pager_add(Evas_Object *parent);
+
+ /**
+ * @brief Push an object to the top of the pager stack (and show it).
+ *
+ * @param obj The pager object
+ * @param content The object to push
+ *
+ * The object pushed becomes a child of the pager, it will be controlled and
+ * deleted when the pager is deleted.
+ *
+ * @note If the content is already in the stack use
+ * elm_pager_content_promote().
+ * @warning Using this function on @p content already in the stack results in
+ * undefined behavior.
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI void elm_pager_content_push(Evas_Object *obj, Evas_Object *content);
+
+ /**
+ * @brief Pop the object that is on top of the stack
+ *
+ * @param obj The pager object
+ *
+ * This pops the object that is on the top(visible) of the pager, makes it
+ * disappear, then deletes the object. The object that was underneath it on
+ * the stack will become visible.
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI void elm_pager_content_pop(Evas_Object *obj);
+
+ /**
+ * @brief Moves an object already in the pager stack to the top of the stack.
+ *
+ * @param obj The pager object
+ * @param content The object to promote
+ *
+ * This will take the @p content and move it to the top of the stack as
+ * if it had been pushed there.
+ *
+ * @note If the content isn't already in the stack use
+ * elm_pager_content_push().
+ * @warning Using this function on @p content not already in the stack
+ * results in undefined behavior.
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI void elm_pager_content_promote(Evas_Object *obj, Evas_Object *content);
+
+ /**
+ * @brief Return the object at the bottom of the pager stack
+ *
+ * @param obj The pager object
+ * @return The bottom object or NULL if none
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_pager_content_bottom_get(const Evas_Object *obj);
+
+ /**
+ * @brief Return the object at the top of the pager stack
+ *
+ * @param obj The pager object
+ * @return The top object or NULL if none
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_pager_content_top_get(const Evas_Object *obj);
+
+ /**
+ * @brief Set the default item style.
+ *
+ * Default item style will be used with items who's style is NULL
+ *
+ * @param obj The pager object
+ * @param style The style
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI void elm_pager_item_style_default_set(Evas_Object *obj, const char *style);
+
+ /**
+ * @brief Get the default item style
+ *
+ * @param obj The pager object
+ * @return the default item style
+ *
+ * @see elm_pager_item_style_default_set()
+ * @deprecated Use naviframe instead
+ */
+ EINA_DEPRECATED EAPI const char *elm_pager_item_style_default_get(const Evas_Object *obj);
+
+ /**
+ * @brief Set the font size on the label object.
+ *
+ * @param obj The label object
+ * @param size font size
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ * @deprecated Use <font_size> tag instead. eg) <font_size=40>abc</font_size>
+ */
+ EINA_DEPRECATED EAPI void elm_label_fontsize_set(Evas_Object *obj, int fontsize);
+
+ /**
+ * @brief Set the text color on the label object
+ *
+ * @param obj The label object
+ * @param r Red property background color of The label object
+ * @param g Green property background color of The label object
+ * @param b Blue property background color of The label object
+ * @param a Alpha property background color of The label object
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ * @deprecated Use <color> tag instead. about <color> tag - Text color in one of the following formats: "#RRGGBB", "#RRGGBBAA", "#RGB", and "#RGBA"
+ */
+ EINA_DEPRECATED EAPI void elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+
+ /**
+ * @brief Set the text align on the label object
+ *
+ * @param obj The label object
+ * @param align align mode ("left", "center", "right")
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ * @deprecated Use <align> tag instead. about <align> tag - Either "auto" (meaning according to text direction), "left", "right", "center", "middle", a value between 0.0 and 1.0, or a value between 0% to 100%.
+ */
+ EINA_DEPRECATED EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode);
+
+ /**
+ * @brief Set background color of the label
+ *
+ * @param obj The label object
+ * @param r Red property background color of The label object
+ * @param g Green property background color of The label object
+ * @param b Blue property background color of The label object
+ * @param a Alpha property background alpha of The label object
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ * @deprecated Just make colored background by yourself.
+ */
+ EINA_DEPRECATED EAPI void elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+
+ /**
+ * @brief Set wrap height of the label
+ *
+ * @param obj The label object
+ * @param h The wrap height in pixels at a minimum where words need to wrap
+ *
+ * This function sets the maximum height size hint of the label.
+ *
+ * @warning This is only relevant if the label is inside a container.
+ * @deprecated This function should not be used because of wrong concept.
+ */
+ EAPI void elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h);
+
+ /**
+ * @brief get wrap width of the label
+ *
+ * @param obj The label object
+ * @return The wrap height in pixels at a minimum where words need to wrap
+ * @deprecated This function should not be used because of wrong concept.
+ */
+ EAPI Evas_Coord elm_label_wrap_height_get(const Evas_Object *obj);
+
+ /**
+ * @brief Flush all caches.
+ *
+ * Frees all data that was in cache and is not currently being used to reduce
+ * memory usage. This frees Edje's, Evas' and Eet's cache. This is equivalent
+ * to calling all of the following functions:
+ * @li edje_file_cache_flush()
+ * @li edje_collection_cache_flush()
+ * @li eet_clearcache()
+ * @li evas_image_cache_flush()
+ * @li evas_font_cache_flush()
+ * @li evas_render_dump()
+ * @note Evas caches are flushed for every canvas associated with a window.
+ * @deprecated Use elm_cache_all_flush() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_all_flush(void);
+
+
+ /**
+ * @brief Define the uri that will be the video source.
+ *
+ * @param video The video object to define the file for.
+ * @param uri The uri to target.
+ *
+ * This function will define an uri as a source for the video of the
+ * Elm_Video object. URI could be remote source of video, like http:// or local
+ * like for example WebCam who are most of the time v4l2:// (but that depend an
+ * you should use Emotion API to request and list the available Webcam on your
+ *
+ * @deprecated Use elm_video_file_set() instead.
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
+
+ /**
+ * @brief Get the region of the image that is currently shown
+ *
+ * @param obj
+ * @param x A pointer to the X-coordinate of region
+ * @param y A pointer to the Y-coordinate of region
+ * @param w A pointer to the width
+ * @param h A pointer to the height
+ *
+ * @deprecated Use elm_photocam_image_region_get() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_photocam_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+ /**
+ * @brief Set the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @param gesture The gesture state to set
+ *
+ * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for
+ * photocam. The default is off. This will start multi touch zooming.
+ *
+ * @deprecated Use elm_photocam_gesture_enabled_set() instead.
+ */
+ EINA_DEPRECATED EAPI void elm_photocam_gesture_set(Evas_Object *obj, Eina_Bool gesture);
+
+ /**
+ * @brief Get the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @return The current gesture state
+ *
+ * This gets the current gesture state for the photocam object.
+ *
+ * @deprecated Use elm_photocam_gesture_enabled_get() instead.
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_photocam_gesture_get(const Evas_Object *obj);
+ /* No documentation for these API before.
+ *
+ * @deprecated Use elm_route_latitude_min_max_get()
+ * elm_route_longitude_min_max_get()
+ * instead.
+ */
+ EINA_DEPRECATED EAPI double elm_route_lon_min_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lat_min_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lon_max_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lat_max_get(Evas_Object *obj);
+
+
+ /**
+ * Get the duration after which tooltip will be shown.
+ *
+ * @return Duration after which tooltip will be shown.
+ * @deprecated Use elm_config_tooltip_delay_get(void);
+ */
+ EINA_DEPRECATED EAPI double elm_tooltip_delay_get(void);
+
+ /**
+ * Set the duration after which tooltip will be shown.
+ *
+ * @return EINA_TRUE if value is set.
+ * @deprecated Use elm_config_tooltip_delay_set(double delay);
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_tooltip_delay_set(double delay);
+
+ /**
+ * Set the corner of the bubble
+ *
+ * @param obj The bubble object.
+ * @param corner The given corner for the bubble.
+ *
+ * @deprecated Use elm_bubble_pos_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_bubble_corner_set(Evas_Object *obj, const char *corner);
+
+ /**
+ * Get the corner of the bubble
+ *
+ * @param obj The bubble object.
+ * @return The given corner for the bubble.
+ *
+ * @deprecated Use elm_bubble_pos_get()
+ */
+ EINA_DEPRECATED EAPI const char *elm_bubble_corner_get(const Evas_Object *obj);
+
+ /**
+ * Enable or disable day selection
+ *
+ * @param obj The calendar object.
+ * @param enabled @c EINA_TRUE to enable selection or @c EINA_FALSE to
+ * disable it.
+ *
+ * @deprecated Use elm_calendar_day_selection_disabled_set()
+ */
+ EINA_DEPRECATED EAPI void elm_calendar_day_selection_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+ /**
+ * Get a value whether day selection is enabled or not.
+ *
+ * @param obj The calendar object.
+ * @return EINA_TRUE means day selection is enabled. EINA_FALSE indicates
+ * it's disabled. If @p obj is NULL, EINA_FALSE is returned.
+ *
+ * @deprecated elm_calendar_day_selection_disabled_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_calendar_day_selection_enabled_get(const Evas_Object *obj);
+
+ /**
+ * @deprecated Use Elm_Calendar_Mark_Repeat_Type instead.
+ */
+ typedef _Elm_Calendar_Mark_Repeat_Type Elm_Calendar_Mark_Repeat EINA_DEPRECATED;
+
+ /**
+ * Get the configured font cache size
+ *
+ * This gets the globally configured font cache size, in bytes.
+ *
+ * @return The font cache size
+ * @deprecated elm_cache_font_cache_size_get(void);
+ */
+ EINA_DEPRECATED EAPI int elm_font_cache_get(void);
+
+ /**
+ * Set the configured font cache size
+ *
+ * This sets the globally configured font cache size, in bytes
+ *
+ * @param size The font cache size
+ * @deprecated elm_cache_font_cache_size_set(int size);
+ */
+ EINA_DEPRECATED EAPI void elm_font_cache_set(int size);
+
+ /**
+ * Get the configured image cache size
+ *
+ * This gets the globally configured image cache size, in bytes
+ *
+ * @return The image cache size
+ */
+ EINA_DEPRECATED EAPI int elm_image_cache_get(void);
+ EAPI int elm_cache_image_cache_size_get(void);
+
+ /**
+ * Set the configured image cache size
+ *
+ * This sets the globally configured image cache size, in bytes
+ *
+ * @param size The image cache size
+ * @deprecated Use elm_cache_image_cache_size_set(int size);
+ */
+ EINA_DEPRECATED EAPI void elm_image_cache_set(int size);
+
+
+ /**
+ * Get the configured edje file cache size.
+ *
+ * This gets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @return The edje file cache size
+ * @deprecated Use elm_cache_edje_file_cache_size_get(void);
+ */
+ EINA_DEPRECATED EAPI int elm_edje_file_cache_get(void);
+
+ /**
+ * Set the configured edje file cache size
+ *
+ * This sets the globally configured edje file cache size, in number
+ * of files.
+ *
+ * @param size The edje file cache size
+ * @deprecated Use elm_cache_edje_file_cache_size_get(int size);
+ */
+ EINA_DEPRECATED EAPI void elm_edje_file_cache_set(int size);
+
+ /**
+ * Get the configured edje collections (groups) cache size.
+ *
+ * This gets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @return The edje collections cache size
+ * @deprecated Use elm_cache_edje_collection_cache_size_get(void);
+ */
+ EINA_DEPRECATED EAPI int elm_edje_collection_cache_get(void);
+
+ /**
+ * Set the configured edje collections (groups) cache size
+ *
+ * This sets the globally configured edje collections cache size, in
+ * number of collections.
+ *
+ * @param size The edje collections cache size
+ * @deprecated elm_cache_edje_collection_cache_size_set(int size);
+ */
+ EINA_DEPRECATED EAPI void elm_edje_collection_cache_set(int size);
+
+ /**
+ * Gets whether browsing history is enabled for the given object
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
+ *
+ * @deprecated Use elm_web_history_enabled_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_web_history_enable_get(const Evas_Object *obj);
+
+ /**
+ * Enables or disables the browsing history
+ *
+ * @param obj The web object
+ * @param enable Whether to enable or disable the browsing history
+ *
+ * @deprecated Use elm_web_history_enabled_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
+
+ /**
+ * @brief Add an object swallowed in an item at the end of the given menu
+ * widget
+ *
+ * @param obj The menu object.
+ * @param parent The parent menu item (optional)
+ * @param subobj The object to swallow
+ * @param func Function called when the user select the item.
+ * @param data Data sent by the callback.
+ * @return Returns the new item.
+ *
+ * Add an evas object as an item to the menu.
+ * @deprecated please use "elm_menu_item_add" + "elm_object_item_content_set" instead.
+ */
+ EINA_DEPRECATED EAPI Elm_Object_Item *elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data);
+
+ /**
+ * @brief Sets whether events should be passed to by a click outside
+ * its area.
+ *
+ * @param obj The notify object
+ * @param repeat EINA_TRUE Events are repeats, else no
+ *
+ * When true if the user clicks outside the window the events will be caught
+ * by the others widgets, else the events are blocked.
+ *
+ * @note The default value is EINA_TRUE.
+ * @deprecated Please use elm_notify_allow_events_set() instead
+ */
+ EINA_DEPRECATED EAPI void elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat);
+
+ /**
+ * @brief Return true if events are repeat below the notify object
+ * @param obj the notify object
+ *
+ * @see elm_notify_repeat_events_set()
+ * @deprecated Please use elm_notify_allow_events_get() instead
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_notify_repeat_events_get(const Evas_Object *obj);
+
+ /**
+ * Set if the cursor set should be searched on the theme or should use
+ * the provided by the engine, only.
+ *
+ * @param obj an object with cursor already set.
+ * @param engine_only boolean to define if cursors should be looked only
+ * between the provided by the engine or searched on widget's theme as well.
+ *
+ * @deprecated Use elm_object_cursor_theme_search_enabled_set()
+ */
+ EINA_DEPRECATED EAPI void elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only);
+
+ /**
+ * Get the cursor engine only usage for this object cursor.
+ *
+ * @param obj an object with cursor already set.
+ * @return engine_only boolean to define it cursors should be
+ * looked only between the provided by the engine or searched on
+ * widget's theme as well. If the object does not have a cursor
+ * set, then EINA_FALSE is returned.
+ *
+ * @deprecated Use elm_object_cursor_theme_search_enabled_get();
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_object_cursor_engine_only_get(const Evas_Object *obj);
+
+ /**
+ * Go to a given items level on a index widget
+ *
+ * @param obj The index object
+ * @param level The index level (one of @c 0 or @c 1)
+ *
+ * @deprecated please use "elm_index_level_go" instead.
+ */
+ EINA_DEPRECATED EAPI void elm_index_item_go(Evas_Object *obj, int level);
+
+ /**
+ * Enable or disable auto hiding feature for a given index widget.
+ *
+ * @param obj The index object
+ * @param active @c EINA_TRUE to enable auto hiding, @c EINA_FALSE to disable
+ *
+ * @see elm_index_active_get()
+ *
+ * @deprecated please use "elm_index_autohide_disabled_set" instead.
+ */
+ EINA_DEPRECATED EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active);
+
+ /**
+ * Get whether auto hiding feature is enabled or not for a given index widget.
+ *
+ * @param obj The index object
+ * @return @c EINA_TRUE, if auto hiding is enabled, @c EINA_FALSE otherwise
+ *
+ * @see elm_index_active_set() for more details
+ *
+ * @deprecated please use "elm_index_autohide_disabled_get" instead.
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_index_active_get(const Evas_Object *obj);
+
+ /**
+ * Append a new item, on a given index widget, <b>after the item
+ * having @p relative as data</b>.
+ *
+ * @param obj The index object.
+ * @param letter Letter under which the item should be indexed
+ * @param item The item data to set for the index's item
+ * @param relative The index item to be the predecessor of this new one
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * Despite the most common usage of the @p letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @c item will be the pointer returned back on @c "changed", @c
+ * "delay,changed" and @c "selected" smart events.
+ *
+ * @note If @p relative is @c NULL this function will behave as
+ * elm_index_item_append().
+ *
+ * @deprecated please use "elm_index_item_insert_after" instead.
+ */
+ EAPI Elm_Object_Item *elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative);
+
+ /**
+ * Prepend a new item, on a given index widget, <b>after the item
+ * having @p relative as data</b>.
+ *
+ * @param obj The index object.
+ * @param letter Letter under which the item should be indexed
+ * @param item The item data to set for the index's item
+ * @param relative The index item to be the successor of this new one
+ * @return A handle to the item added or @c NULL, on errors
+ *
+ * Despite the most common usage of the @p letter argument is for
+ * single char strings, one could use arbitrary strings as index
+ * entries.
+ *
+ * @c item will be the pointer returned back on @c "changed", @c
+ * "delay,changed" and @c "selected" smart events.
+ *
+ * @note If @p relative is @c NULL this function will behave as
+ * elm_index_item_prepend().
+ *
+ * @deprecated please use "elm_index_item_insert_before" instead.
+ */
+ EAPI Elm_Object_Item *elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative);
+
+ /**
+ * Set the transparency state of a window.
+ *
+ * Use elm_win_alpha_set() instead.
+ *
+ * @param obj The window object
+ * @param transparent If true, the window is transparent
+ *
+ * @see elm_win_alpha_set()
+ * @deprecated Please use elm_win_alpha_set()
+ */
+ EINA_DEPRECATED EAPI void elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent);
+
+ /**
+ * Get the transparency state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is transparent
+ *
+ * @see elm_win_transparent_set()
+ * @deprecated Please use elm_win_alpha_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_win_transparent_get(const Evas_Object *obj);
+
+ /**
+ * Set the theme for all elementary using applications on the current display
+ *
+ * @param theme The name of the theme to use. Format same as the ELM_THEME
+ * environment variable.
+ * @deprecated Use elm_theme_set(NULL, theme); elm_config_all_flush(); instead.
+ */
+ EINA_DEPRECATED EAPI void elm_theme_all_set(const char *theme);
+
+ /**
+ * Returns the Evas_Object that represents the content area.
+ *
+ * @param obj The conformant object.
+ * @return The content area of the widget.
+ *
+ */
+ EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_area_get(const Evas_Object *obj);
+
+ /**
+ * Set if the object is (up/down) resizable.
+ *
+ * @param obj The image object
+ * @param scale_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param scale_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the image resize ability. If @p scale_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original image size. Same is valid for @p scale_down.
+ *
+ * @see elm_image_scale_get()
+ * @deprecated Please use elm_image_resizable_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down);
+
+ /**
+ * Get if the object is (up/down) resizable.
+ *
+ * @param obj The image object
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
+ *
+ * @see elm_image_scale_set()
+ * @deprecated Please use elm_image_resizable_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_image_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down);
+
+ /**
+ * Set if the object is (up/down) resizable.
+ *
+ * @param obj The icon object
+ * @param scale_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param scale_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the icon object resize ability. If @p scale_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original icon size. Same is valid for @p scale_down.
+ *
+ * @see elm_icon_scale_get()
+ * @deprecated Please use elm_icon_resizable_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down);
+
+ /**
+ * Get if the object is (up/down) resizable.
+ *
+ * @param obj The icon object
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
+ *
+ * @see elm_icon_scale_set()
+ * @deprecated Please use elm_icon_resizable_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_icon_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down);
+
+ /**
+ * Enable or disable preloading of the icon
+ *
+ * @param obj The icon object
+ * @param disable If EINA_TRUE, preloading will be disabled
+ * @deprecated Use elm_icon_preload_disabled_set() instead
+ */
+ EINA_DEPRECATED EAPI void elm_icon_preload_set(Evas_Object *obj, Eina_Bool disable);
+
+ /**
+ * Returns the last selected item, for a given index widget.
+ *
+ * @param obj The index object.
+ * @return The last item @b selected on @p obj (or @c NULL, on errors).
+ * @deprecated Please use elm_index_selected_item_get() instead.
+ *
+ *
+ */
+ EINA_DEPRECATED EAPI Elm_Object_Item *elm_index_item_selected_get(const Evas_Object *obj, int level);
+
+ /**
+ * Get the value of shrink_mode state.
+ *
+ * @deprecated elm_multibuttonentry_expanded_get()
+ */
+ EINA_DEPRECATED EAPI int elm_multibuttonentry_shrink_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set/Unset the multibuttonentry to shrink mode state of single line
+ *
+ * @deprecated elm_multibuttonentry_expanded_set()
+ */
+ EINA_DEPRECATED EAPI void elm_multibuttonentry_shrink_mode_set(Evas_Object *obj, int shrink_mode);
+
+ /**
+ * Get the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @return The guide text, or NULL if none
+ *
+ * @deprecated Please use elm_object_part_text_get(obj, "guide");
+ */
+ EINA_DEPRECATED EAPI const char *elm_multibuttonentry_guide_text_get(const Evas_Object *obj);
+
+ /**
+ * Set the guide text
+ *
+ * @param obj The multibuttonentry object
+ * @param guidetext The guide text string
+ *
+ * @deprecated Please use elm_object_part_text_set(obj, "guide", guidetext);
+ */
+ EINA_DEPRECATED EAPI void elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext);
+
+ /**
+ * Make the elementary object and its children to be unfocusable
+ * (or focusable).
+ *
+ * @param obj The Elementary object to operate on
+ * @param tree_unfocusable @c EINA_TRUE for unfocusable,
+ * @c EINA_FALSE for focusable.
+ *
+ * This sets whether the object @p obj and its children objects
+ * are able to take focus or not. If the tree is set as unfocusable,
+ * newest focused object which is not in this tree will get focus.
+ * This API can be helpful for an object to be deleted.
+ * When an object will be deleted soon, it and its children may not
+ * want to get focus (by focus reverting or by other focus controls).
+ * Then, just use this API before deleting.
+ *
+ * @see elm_object_tree_unfocusable_get()
+ *
+ * @deprecated Please use elm_object_tree_unfocusable_set()
+ */
+ EINA_DEPRECATED EAPI void elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable);
+
+ /**
+ * Get whether an Elementary object and its children are unfocusable or not.
+ *
+ * @param obj The Elementary object to get the information from
+ * @return @c EINA_TRUE, if the tree is unfocussable,
+ * @c EINA_FALSE if not (and on errors).
+ *
+ * @see elm_object_tree_unfocusable_set()
+ *
+ * @deprecated Please use elm_object_tree_unfocusable_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj);
+
+ /**
+ * Animatedly bring in, to the visible are of a genlist, a given
+ * item on it.
+ *
+ * @deprecated elm_genlist_item_bring_in()
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_top_bring_in(Elm_Object_Item *it);
+
+ /**
+ * Animatedly bring in, to the visible are of a genlist, a given
+ * item on it.
+ *
+ * @deprecated elm_genlist_item_bring_in()
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_middle_bring_in(Elm_Object_Item *it);
+
+ /**
+ * Show the portion of a genlist's internal list containing a given
+ * item, immediately.
+ *
+ * @param it The item to display
+ *
+ * @deprecated elm_genlist_item_show()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_top_show(Elm_Object_Item *it);
+
+ /**
+ * Show the portion of a genlist's internal list containing a given
+ * item, immediately.
+ *
+ * @param it The item to display
+ *
+ * @deprecated elm_genlist_item_show()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_middle_show(Elm_Object_Item *it);
+
+ /**
+ * Enable or disable round mode.
+ *
+ * @param obj The diskselector object.
+ * @param round @c EINA_TRUE to enable round mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * Disabled by default. If round mode is enabled the items list will
+ * work like a circle list, so when the user reaches the last item,
+ * the first one will popup.
+ *
+ * @see elm_diskselector_round_enabled_get()
+ *
+ * @deprecated elm_diskselector_round_enabled_set()
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round);
+
+ /**
+ * Set the always select mode.
+ *
+ * @param obj The genlist object
+ * @param always_select The always select mode (@c EINA_TRUE = on, @c
+ * EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * Items will only call their selection func and callback when first
+ * becoming selected. Any further clicks will do nothing, unless you
+ * enable always select with elm_genlist_always_select_mode_set().
+ * This means that, even if selected, every click will make the selected
+ * callbacks be called.
+ *
+ * @see elm_genlist_always_select_mode_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+
+ /**
+ * Get the always select mode.
+ *
+ * @param obj The genlist object
+ * @return The always select mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_always_select_mode_set()
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Enable/disable the no select mode.
+ *
+ * @param obj The genlist object
+ * @param no_select The no select mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * This will turn off the ability to select items entirely and they
+ * will neither appear selected nor call selected callback functions.
+ *
+ * @see elm_genlist_no_select_mode_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+ /**
+ * Gets whether the no select mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The no select mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_no_select_mode_set()
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set whether items on a given gengrid widget are to get their
+ * selection callbacks issued for @b every subsequent selection
+ * click on them or just for the first click.
+ *
+ * @param obj The gengrid object
+ * @param always_select @c EINA_TRUE to make items "always
+ * selected", @c EINA_FALSE, otherwise
+ *
+ * By default, grid items will only call their selection callback
+ * function when firstly getting selected, any subsequent further
+ * clicks will do nothing. With this call, you make those
+ * subsequent clicks also to issue the selection callbacks.
+ *
+ * @note <b>Double clicks</b> will @b always be reported on items.
+ *
+ * @see elm_gengrid_always_select_mode_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+ /**
+ * Get whether items on a given gengrid widget have their selection
+ * callbacks issued for @b every subsequent selection click on them
+ * or just for the first click.
+ *
+ * @param obj The gengrid object.
+ * @return @c EINA_TRUE if the gengrid items are "always selected",
+ * @c EINA_FALSE, otherwise
+ *
+ * @see elm_gengrid_always_select_mode_set() for more details
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set whether items on a given gengrid widget can be selected or not.
+ *
+ * @param obj The gengrid object
+ * @param no_select @c EINA_TRUE to make items selectable,
+ * @c EINA_FALSE otherwise
+ *
+ * This will make items in @p obj selectable or not. In the latter
+ * case, any user interaction on the gengrid items will neither make
+ * them appear selected nor them call their selection callback
+ * functions.
+ *
+ * @see elm_gengrid_no_select_mode_get()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+ /**
+ * Get whether items on a given gengrid widget can be selected or
+ * not.
+ *
+ * @param obj The gengrid object
+ * @return @c EINA_TRUE, if items are selectable, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_gengrid_no_select_mode_set() for more details
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Get the side labels max length.
+ *
+ * @see elm_diskselector_side_text_max_length_set() for details.
+ *
+ * @param obj The diskselector object.
+ * @return The max length defined for side labels, or 0 if not a valid
+ * diskselector.
+ *
+ * @deprecated elm_diskselector_side_text_max_length_get()
+ */
+ EINA_DEPRECATED EAPI int elm_diskselector_side_label_length_get(const Evas_Object *obj);
+
+ /**
+ * Set the side labels max length.
+ *
+ * @param obj The diskselector object.
+ * @param len The max length defined for side labels.
+ *
+ * Length is the number of characters of items' label that will be
+ * visible when it's set on side positions. It will just crop
+ * the string after defined size. E.g.:
+ *
+ * An item with label "January" would be displayed on side position as
+ * "Jan" if max length is set to 3, or "Janu", if this property
+ * is set to 4.
+ *
+ * When it's selected, the entire label will be displayed, except for
+ * width restrictions. In this case label will be cropped and "..."
+ * will be concatenated.
+ *
+ * Default side label max length is 3.
+ *
+ * This property will be applied over all items, included before or
+ * later this function call.
+ *
+ * @deprecated elm_diskselector_side_text_max_length_set()
+ */
+ EINA_DEPRECATED EAPI void elm_diskselector_side_label_length_set(Evas_Object *obj, int len);
+
+ /**
+ * Set whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @param always_select @c EINA_TRUE to enable always-select mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * This will cause the toolbar to always have an item selected, and clicking
+ * the selected item will not cause a selected event to be emitted. Enabling this mode
+ * will immediately select the first toolbar item.
+ *
+ * Always-selected is disabled by default.
+ *
+ * @see elm_toolbar_always_select_mode_get().
+ *
+ * @ingroup Toolbar
+ */
+ EINA_DEPRECATED EAPI void elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+ /**
+ * Get whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @return @c EINA_TRUE means an item will always be selected, @c EINA_FALSE indicates
+ * that it is possible to have no items selected. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_always_select_mode_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_always_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set whether the toolbar items' should be selected by the user or not.
+ *
+ * @param obj The toolbar object.
+ * @param no_select @c EINA_TRUE to disable selection or @c EINA_FALSE to
+ * enable it.
+ *
+ * This will turn off the ability to select items entirely and they will
+ * neither appear selected nor emit selected signals. The clicked
+ * callback function will still be called.
+ *
+ * Selection is enabled by default.
+ *
+ * @see elm_toolbar_no_select_mode_get().
+ *
+ * @ingroup Toolbar
+ */
+ EINA_DEPRECATED EAPI void elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+ /**
+ * Set whether the toolbar items' should be selected by the user or not.
+ *
+ * @param obj The toolbar object.
+ * @return @c EINA_TRUE means items can be selected. @c EINA_FALSE indicates
+ * they can't. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_no_select_mode_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_toolbar_no_select_mode_get(const Evas_Object *obj);
+
+ /*
+ * Set the interval on time updates for a user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @param interval The (first) interval value in seconds
+ *
+ * This interval value is @b decreased while the user holds the
+ * mouse pointer either incrementing or decrementing a given the
+ * clock digit's value.
+ *
+ * This helps the user to get to a given time distant from the
+ * current one easier/faster, as it will start to flip quicker and
+ * quicker on mouse button holds.
+ *
+ * The calculation for the next flip interval value, starting from
+ * the one set with this call, is the previous interval divided by
+ * 1.05, so it decreases a little bit.
+ *
+ * The default starting interval value for automatic flips is
+ * @b 0.85 seconds.
+ *
+ * @deprecated elm_clock_first_interval_set()
+ *
+ */
+ EINA_DEPRECATED EAPI void elm_clock_interval_set(Evas_Object *obj, double interval);
+
+ /**
+ * Get the interval on time updates for a user mouse button hold
+ * on clock widgets' time edition.
+ *
+ * @param obj The clock object
+ * @return The (first) interval value, in seconds, set on it
+ *
+ * @elm_clock_first_interval_get()
+ */
+ EINA_DEPRECATED EAPI double elm_clock_interval_get(const Evas_Object *obj);
+
+ /**
+ * Set what digits of the given clock widget should be editable
+ * when in edition mode.
+ *
+ * @param obj The clock object
+ * @param digedit Bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Edit_Mode).
+ *
+ * If the @p digedit param is #ELM_CLOCK_NONE, editing will be
+ * disabled on @p obj (same effect as elm_clock_edit_set(), with @c
+ * EINA_FALSE).
+ *
+ * @deprecated elm_clock_edit_mode_set()
+ */
+ EINA_DEPRECATED EAPI void elm_clock_digit_edit_set(Evas_Object *obj, Elm_Clock_Edit_Mode digedit);
+
+ /**
+ * Retrieve what digits of the given clock widget should be
+ * editable when in edition mode.
+ *
+ * @param obj The clock object
+ * @return Bit mask indicating the digits to be editable
+ * (values in #Elm_Clock_Edit_Mode).
+ *
+ * @deprecated elm_clock_edit_mode_get()
+ */
+ EINA_DEPRECATED EAPI Elm_Clock_Edit_Mode elm_clock_digit_edit_get(const Evas_Object *obj);
+
+ /**
+ * Enable or disable always select mode on the list object.
+ *
+ * @param obj The list object
+ * @param always_select @c EINA_TRUE to enable always select mode or
+ * @c EINA_FALSE to disable it.
+ *
+ * @note Always select mode is disabled by default.
+ *
+ * Default behavior of list items is to only call its callback function
+ * the first time it's pressed, i.e., when it is selected. If a selected
+ * item is pressed again, and multi-select is disabled, it won't call
+ * this function (if multi-select is enabled it will unselect the item).
+ *
+ * If always select is enabled, it will call the callback function
+ * every time a item is pressed, so it will call when the item is selected,
+ * and again when a selected item is pressed.
+ *
+ * @deprecated elm_list_always_select_mode_set()
+ */
+ EINA_DEPRECATED EAPI void elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+ /**
+ * Get a value whether always select mode is enabled or not, meaning that
+ * an item will always call its callback function, even if already selected.
+ *
+ * @param obj The list object
+ * @return @c EINA_TRUE means horizontal mode selection is enabled.
+ * @c EINA_FALSE indicates it's disabled. If @p obj is @c NULL,
+ * @c EINA_FALSE is returned.
+ *
+ * @see elm_list_always_select_mode_set() for details.
+ *
+ * @deprecated elm_list_always_select_mode_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_list_always_select_mode_get(const Evas_Object *obj);
+
+ /*
+ * Queries whether it's possible to go back in history
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if it's possible to back in history, EINA_FALSE
+ * otherwise
+ * @deprecated elm_web_back_possible_get();
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_web_backward_possible(Evas_Object *obj);
+
+ /**
+ * Queries whether it's possible to go forward in history
+ *
+ * @param obj The web object
+ *
+ * @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
+ * otherwise
+ *
+ * @deprecated elm_web_forward_possible_get();
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_web_forward_possible(Evas_Object *obj);
+
+ /**
+ * Queries whether it's possible to jump the given number of steps
+ *
+ * @deprecated elm_web_navigate_possible_get();
+ *
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_web_navigate_possible(Evas_Object *obj, int steps);
+
+ /*
+ * Enable/disable compress mode.
+ *
+ * @param obj The genlist object
+ * @param compress The compress mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * This will enable the compress mode where items are "compressed"
+ * horizontally to fit the genlist scrollable viewport width. This is
+ * special for genlist. Do not rely on
+ * elm_genlist_mode_set() being set to @c ELM_LIST_COMPRESS to
+ * work as genlist needs to handle it specially.
+ *
+ * @deprecated elm_genlist_mode_set(obj, ELM_LIST_COMPRESS)
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_compress_mode_set(Evas_Object *obj, Eina_Bool compress);
+
+ /**
+ * Sets the display only state of an item.
+ *
+ * @param it The item
+ * @param display_only @c EINA_TRUE if the item is display only, @c
+ * EINA_FALSE otherwise.
+ *
+ * A display only item cannot be selected or unselected. It is for
+ * display only and not selecting or otherwise clicking, dragging
+ * etc. by the user, thus finger size rules will not be applied to
+ * this item.
+ *
+ * It's good to set group index items to display only state.
+ *
+ * @see elm_genlist_item_display_only_get()
+ *
+ * @deprecated elm_genlist_item_display_only_set()
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_display_only_set(Elm_Object_Item *it, Eina_Bool display_only);
+
+ /**
+ * Get the display only state of an item
+ *
+ * @param it The item
+ * @return @c EINA_TRUE if the item is display only, @c
+ * EINA_FALSE otherwise.
+ *
+ * @see elm_genlist_item_display_only_set()
+ *
+ * @deprecated elm_genlist_item_display_only_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_item_display_only_get(const Elm_Object_Item *it);
+
+ /**
+ * Get whether the compress mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The compress mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @deprecated elm_genlsit_mode_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_compress_mode_get(const Evas_Object *obj);
+
+ /**
+ * Enable/disable height-for-width mode.
+ *
+ * @param obj The genlist object
+ * @param height_for_width The height-for-width mode (@c EINA_TRUE = on,
+ * @c EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * With height-for-width mode the item width will be fixed (restricted
+ * to a minimum of) to the list width when calculating its size in
+ * order to allow the height to be calculated based on it. This allows,
+ * for instance, text block to wrap lines if the Edje part is
+ * configured with "text.min: 0 1".
+ *
+ * @note This mode will make list resize slower as it will have to
+ * recalculate every item height again whenever the list width
+ * changes!
+ *
+ * @note When height-for-width mode is enabled, it also enables
+ * compress mode (see elm_genlist_compress_mode_set()) and
+ * disables homogeneous (see elm_genlist_homogeneous_set()).
+ *
+ * @deprecated elm_genlist_mode_set(obj, ELM_LIST_COMPRESS)
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_height_for_width_mode_set(Evas_Object *obj, Eina_Bool height_for_width);
+
+ /**
+ * Get whether the height-for-width mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The height-for-width mode (@c EINA_TRUE = on, @c EINA_FALSE =
+ * off)
+ *
+ * @deprecated elm_genlist_mode_set(obj, ELM_LIST_COMPRESS)
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_height_for_width_mode_get(const Evas_Object *obj);
+
+ /**
+ * Activate a genlist mode on an item
+ *
+ * @param it The genlist item
+ * @param mode_type Mode name
+ * @param mode_set Boolean to define set or unset mode.
+ *
+ * A genlist mode is a different way of selecting an item. Once a mode is
+ * activated on an item, any other selected item is immediately unselected.
+ * This feature provides an easy way of implementing a new kind of animation
+ * for selecting an item, without having to entirely rewrite the item style
+ * theme. However, the elm_genlist_selected_* API can't be used to get what
+ * item is activate for a mode.
+ *
+ * The current item style will still be used, but applying a genlist mode to
+ * an item will select it using a different kind of animation.
+ *
+ * The current active item for a mode can be found by
+ * elm_genlist_decorated_item_get().
+ *
+ * The characteristics of genlist mode are:
+ * - Only one mode can be active at any time, and for only one item.
+ * - Genlist handles deactivating other items when one item is activated.
+ * - A mode is defined in the genlist theme (edc), and more modes can easily
+ * be added.
+ * - A mode style and the genlist item style are different things. They
+ * can be combined to provide a default style to the item, with some kind
+ * of animation for that item when the mode is activated.
+ *
+ * When a mode is activated on an item, a new view for that item is created.
+ * The theme of this mode defines the animation that will be used to transit
+ * the item from the old view to the new view. This second (new) view will be
+ * active for that item while the mode is active on the item, and will be
+ * destroyed after the mode is totally deactivated from that item.
+ *
+ * @deprecated elm_genlist_item_decorate_mode_set()
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_item_mode_set(Elm_Object_Item *it, const char *mode_type, Eina_Bool mode_set);
+
+ /**
+ * Get the last (or current) genlist mode used.
+ *
+ * @param obj The genlist object
+ *
+ * This function just returns the name of the last used genlist mode. It will
+ * be the current mode if it's still active.
+ *
+ * @deprecated elm_genlist_item_decorate_mode_get()
+ */
+ EINA_DEPRECATED EAPI const char *elm_genlist_mode_type_get(const Evas_Object *obj);
+
+ /**
+ * Get active genlist mode item
+ *
+ * @param obj The genlist object
+ * @return The active item for that current mode. Or @c NULL if no item is
+ * activated with any mode.
+ *
+ * This function returns the item that was activated with a mode, by the
+ * function elm_genlist_item_decorate_mode_set().
+ *
+ * @deprecated elm_genlist_decorated_item_get()
+ */
+ EINA_DEPRECATED EAPI const Elm_Object_Item *elm_genlist_mode_item_get(const Evas_Object *obj);
+
+ /**
+ * Set Genlist edit mode
+ *
+ * This sets Genlist edit mode.
+ *
+ * @param obj The Genlist object
+ * @param The edit mode status
+ * (EINA_TRUE = edit mode, EINA_FALSE = normal mode
+ *
+ * @deprecated elm_genlist_decorate_mode_set
+ */
+ EINA_DEPRECATED EAPI void elm_genlist_edit_mode_set(Evas_Object *obj, Eina_Bool edit_mode);
+
+ /**
+ * Get Genlist edit mode
+ *
+ * @param obj The genlist object
+ * @return The edit mode status
+ * (EINA_TRUE = edit mode, EINA_FALSE = normal mode
+ *
+ * @deprecated elm_genlist_decorate_mode_get()
+ */
+ EINA_DEPRECATED EAPI Eina_Bool elm_genlist_edit_mode_get(const Evas_Object *obj);
+
+ /**
+ * @}
+ */
++>>>>>>> remotes/origin/upstream
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++=======
++>>>>>>> remotes/origin/upstream
Elm_Diskselector_Item *item, *item2, *dit;
Eina_List *l;
int i = 0;
Widget_Data *wd;
++<<<<<<< HEAD
+ item = (Elm_Diskselector_Item *) it;
++=======
+ item = (Elm_Diskselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
_theme_data_get(Widget_Data *wd)
{
const char* str;
++<<<<<<< HEAD
+ Evas_Object *parent;
++=======
++>>>>>>> remotes/origin/upstream
str = edje_object_data_get(wd->right_blank, "len_threshold");
if (str) wd->len_threshold = MAX(0, atoi(str));
else wd->len_threshold = 0;
}
str = edje_object_data_get(wd->right_blank, "min_width");
++<<<<<<< HEAD
+ if (str) wd->minw = MAX(-1, atoi(str)) * elm_scale_get();
+ else
+ {
+ parent = elm_widget_parent_widget_get(wd->self);
+ if (!parent) wd->minw = -1;
+ else evas_object_geometry_get(parent, NULL, NULL, &wd->minw, NULL);
+ }
+
+ str = edje_object_data_get(wd->right_blank, "min_height");
+ if (str) wd->minh = MAX(-1, atoi(str)) * elm_scale_get();
++=======
+ if (str) wd->minw = MAX(-1, atoi(str));
+ else wd->minw = -1;
+
+ str = edje_object_data_get(wd->right_blank, "min_height");
+ if (str) wd->minh = MAX(-1, atoi(str));
++>>>>>>> remotes/origin/upstream
else wd->minh = -1;
}
}
evas_object_geometry_get(wd->scroller, NULL, &y, &w, &h);
++<<<<<<< HEAD
+ //move scroller in two steps for getting smooth launching effect.
+ if (i > 2)
+ elm_smart_scroller_child_region_show(wd->scroller, w / wd->display_item_num * (i-2), y, w, h);
+ elm_smart_scroller_region_bring_in(wd->scroller, w / wd->display_item_num * i, y, w, h);
+
++=======
+ elm_smart_scroller_child_region_show(wd->scroller, w / wd->display_item_num * i, y, w, h);
++>>>>>>> remotes/origin/upstream
_select_item(dit);
if (wd->idler)
{
static void
_item_text_set_hook(Elm_Object_Item *it, const char *part, const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Diskselector_Item *item;
+ if (part && strcmp(part, "default")) return;
+ item = (Elm_Diskselector_Item *) it;
++=======
+ Elm_Diskselector_Item *item;
+ if (part && strcmp(part, "default")) return;
+ item = (Elm_Diskselector_Item *)it;
++>>>>>>> remotes/origin/upstream
eina_stringshare_replace(&item->label, label);
edje_object_part_text_set(VIEW(item), "elm.text", item->label);
}
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Diskselector_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Diskselector_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static void
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ if (part && strcmp(part, "icon")) return;
+ _item_icon_set((Elm_Diskselector_Item *) it, content);
+ _check_identical_item((Elm_Diskselector_Item *) it, content);
++=======
+ if (part && strcmp(part, "icon")) return;
+ _item_icon_set((Elm_Diskselector_Item *)it, content);
+ _check_identical_item((Elm_Diskselector_Item *)it, content);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "icon")) return NULL;
+ return ((Elm_Diskselector_Item *) it)->icon;
+}
+
++=======
+ if (part && strcmp(part, "icon")) return NULL;
+ return ((Elm_Diskselector_Item *)it)->icon;
+ }
+
+
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_diskselector_add(Evas_Object *parent)
{
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_diskselector_round_get(const Evas_Object *obj)
++=======
+ elm_diskselector_round_enabled_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_diskselector_round_set(Evas_Object * obj, Eina_Bool round)
++=======
+ elm_diskselector_round_enabled_set(Evas_Object * obj, Eina_Bool enabled)
++>>>>>>> remotes/origin/upstream
{
Eina_List *elist;
Elm_Diskselector_Item *it;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->round == round)
+ return;
+
+ wd->round = round;
+ if (round)
++=======
+ if (wd->round == enabled)
+ return;
+
+ wd->round = !!enabled;
+ if (enabled)
++>>>>>>> remotes/origin/upstream
{
wd->r_items = eina_list_clone(wd->items);
elm_box_unpack(wd->main_box, wd->left_blank);
}
EAPI int
++<<<<<<< HEAD
+elm_diskselector_side_label_length_get(const Evas_Object *obj)
++=======
+ elm_diskselector_side_text_max_length_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) 0;
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_diskselector_side_label_length_set(Evas_Object *obj, int len)
++=======
+ elm_diskselector_side_text_max_length_set(Evas_Object *obj, int len)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_diskselector_side_label_lenght_set(Evas_Object *obj, int len)
+{
+ return elm_diskselector_side_label_length_set(obj, len);
+}
+
+EAPI int
+elm_diskselector_side_label_lenght_get(const Evas_Object *obj)
+{
+ return elm_diskselector_side_label_length_get(obj);
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_diskselector_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce)
{
ELM_CHECK_WIDTYPE(obj, widtype);
if (!wd->idler)
wd->idler = ecore_idle_enterer_before_add(_move_scroller, obj);
_sizing_eval(obj);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
+}
+
+EAPI void
+elm_diskselector_item_del(Elm_Object_Item * it)
+{
+ elm_object_item_del(it);
+}
+
+EAPI const char *
+elm_diskselector_item_label_get(const Elm_Object_Item * it)
+{
+ return _item_text_get_hook(it, NULL);
+}
+
+EAPI void
+elm_diskselector_item_label_set(Elm_Object_Item * it, const char *label)
+{
+ _item_text_set_hook(it, NULL, label);
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Widget_Data *wd;
++<<<<<<< HEAD
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *) it;
++=======
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return;
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return (wd->selected_item == ((Elm_Diskselector_Item *) it));
+}
+
+EAPI void
+elm_diskselector_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func)
+{
+ elm_object_item_del_cb_set(it, func);
+}
+
+EAPI void *
+elm_diskselector_item_data_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_data_get(it);
+}
+
+EAPI Evas_Object *
+elm_diskselector_item_icon_get(const Elm_Object_Item *it)
+{
+ return _item_content_get_hook(it, NULL);
+}
+
+EAPI void
+elm_diskselector_item_icon_set(Elm_Object_Item *it, Evas_Object *icon)
+{
+ _item_content_set_hook(it, NULL, icon);
++=======
+ return (wd->selected_item == ((Elm_Diskselector_Item *)it));
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_diskselector_item_prev_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *) it;
++=======
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->node->prev) return item->node->prev->data;
else return NULL;
}
elm_diskselector_item_next_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *) it;
++=======
+ Elm_Diskselector_Item *item = (Elm_Diskselector_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->node->next) return item->node->next->data;
else return NULL;
}
}
EAPI void
++<<<<<<< HEAD
+elm_diskselector_item_tooltip_text_set(Elm_Object_Item *it, const char *text)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_tooltip_text_set(it, text);
+}
+
+EAPI void
+elm_diskselector_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_tooltip_content_cb_set(it, func, data, del_cb);
+}
+
+EAPI void
+elm_diskselector_item_tooltip_unset(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_tooltip_unset(it);
+}
+
+EAPI void
+elm_diskselector_item_tooltip_style_set(Elm_Object_Item *it, const char *style)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_tooltip_style_set(it, style);
+}
+
+EAPI const char *
+elm_diskselector_item_tooltip_style_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ return elm_widget_item_tooltip_style_get(it);
+}
+
+EAPI void
+elm_diskselector_item_cursor_set(Elm_Object_Item *it, const char *cursor)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_cursor_set(it, cursor);
+}
+
+EAPI const char *
+elm_diskselector_item_cursor_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ return elm_widget_item_cursor_get(it);
+}
+
+EAPI void
+elm_diskselector_item_cursor_unset(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_cursor_unset(it);
+}
+
+EAPI void
+elm_diskselector_item_cursor_style_set(Elm_Object_Item *it, const char *style)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_cursor_style_set(it, style);
+}
+
+EAPI const char *
+elm_diskselector_item_cursor_style_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ return elm_widget_item_cursor_style_get(it);
+}
+
+EAPI void
+elm_diskselector_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ elm_widget_item_cursor_engine_only_set(it, engine_only);
+}
+
+EAPI Eina_Bool
+elm_diskselector_item_cursor_engine_only_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ return elm_widget_item_cursor_engine_only_get(it);
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_diskselector_display_item_num_set(Evas_Object *obj, int num)
{
ELM_CHECK_WIDTYPE(obj, widtype);
* Available styles for it:
* - @c "default"
*
++<<<<<<< HEAD
+ * Default contents parts of the diskseletor items that you can use for are:
++=======
+ * Default content parts of the diskselector items that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon in the diskselector item
*
* Default text parts of the diskselector items that you can use for are:
* Enable or disable round mode.
*
* @param obj The diskselector object.
++<<<<<<< HEAD
+ * @param round @c EINA_TRUE to enable round mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * Disabled by default. If round mode is enabled the items list will
+ * work like a circle list, so when the user reaches the last item,
+ * the first one will popup.
+ *
+ * @see elm_diskselector_round_get()
+ *
+ * @ingroup Diskselector
+ */
+EAPI void elm_diskselector_round_set(Evas_Object *obj, Eina_Bool round);
++=======
+ * @param enabled @c EINA_TRUE to enable round mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * Disabled by default. If round mode is enabled the items list will
+ * work like a circular list, so when the user reaches the last item,
+ * the first one will popup.
+ *
+ * @see elm_diskselector_round_enabled_get()
+ *
+ * @ingroup Diskselector
+ */
+ EAPI void elm_diskselector_round_enabled_set(Evas_Object *obj, Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* Get a value whether round mode is enabled or not.
*
++<<<<<<< HEAD
+ * @see elm_diskselector_round_set() for details.
++=======
+ * @see elm_diskselector_round_enabled_set() for details.
++>>>>>>> remotes/origin/upstream
*
* @param obj The diskselector object.
* @return @c EINA_TRUE means round mode is enabled. @c EINA_FALSE indicates
*
* @ingroup Diskselector
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_diskselector_round_get(const Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_diskselector_round_enabled_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Get the side labels max length.
*
++<<<<<<< HEAD
+ * @see elm_diskselector_side_label_length_set() for details.
++=======
+ * @see elm_diskselector_side_text_max_length_set() for details.
++>>>>>>> remotes/origin/upstream
*
* @param obj The diskselector object.
* @return The max length defined for side labels, or 0 if not a valid
*
* @ingroup Diskselector
*/
++<<<<<<< HEAD
+EAPI int elm_diskselector_side_label_length_get(const Evas_Object *obj);
++=======
+ EAPI int elm_diskselector_side_text_max_length_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set the side labels max length.
*
* Default side label max length is 3.
*
++<<<<<<< HEAD
+ * This property will be applyed over all items, included before or
++=======
+ * This property will be applied over all items, included before or
++>>>>>>> remotes/origin/upstream
* later this function call.
*
* @ingroup Diskselector
*/
++<<<<<<< HEAD
+EAPI void elm_diskselector_side_label_length_set(Evas_Object *obj, int len);
++=======
+ EAPI void elm_diskselector_side_text_max_length_set(Evas_Object *obj, int len);
++>>>>>>> remotes/origin/upstream
/**
* Set the number of items to be displayed.
* @param obj The diskselector object.
* @param num The number of items the diskselector will display.
*
++<<<<<<< HEAD
+ * Default value is 3, and also it's the minimun. If @p num is less
++=======
+ * Default value is 3, and also it's the minimum. If @p num is less
++>>>>>>> remotes/origin/upstream
* than 3, it will be set to 3.
*
* Also, it can be set on theme, using data item @c display_item_num
* axis is reached scrolling.
*
* @param obj The diskselector object.
++<<<<<<< HEAD
+ * @param h_bounce Pointer where to store the bounce state of the horizontal
+ * axis.
+ * @param v_bounce Pointer where to store the bounce state of the vertical
++=======
+ * @param h_bounce Pointer to store the bounce state of the horizontal
+ * axis.
+ * @param v_bounce Pointer to store the bounce state of the vertical
++>>>>>>> remotes/origin/upstream
* axis.
*
* @see elm_scroller_bounce_get()
* @see elm_diskselector_scroller_policy_get() for details.
*
* @param obj The diskselector object.
++<<<<<<< HEAD
+ * @param policy_h Pointer where to store horizontal scrollbar policy.
+ * @param policy_v Pointer where to store vertical scrollbar policy.
++=======
+ * @param policy_h Pointer to store horizontal scrollbar policy.
+ * @param policy_v Pointer to store vertical scrollbar policy.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Diskselector
*/
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_object_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user stops the diskselector with this
* item on center position. If such function isn't needed, just passing
* @c NULL as @p func is enough. The same should be done for @p data.
* disk = elm_diskselector_add(win);
* ic = elm_icon_add(win);
* elm_icon_file_set(ic, "path/to/image", NULL);
++<<<<<<< HEAD
+ * elm_icon_scale_set(ic, EINA_TRUE, EINA_TRUE);
++=======
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
* elm_diskselector_item_append(disk, "label", ic, NULL, NULL);
* @endcode
*
* diskselector will be selected.
*
* The selected item always will be centered on diskselector, with
++<<<<<<< HEAD
+ * full label displayed, i.e., max lenght set to side labels won't
+ * apply on the selected item. More details on
+ * elm_diskselector_side_label_length_set().
++=======
+ * full label displayed, i.e., max length set to side labels won't
+ * apply on the selected item. More details on
+ * elm_diskselector_side_text_max_length_set().
++>>>>>>> remotes/origin/upstream
*
* @ingroup Diskselector
*/
* This sets the selected state of the given item @p it.
* @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
*
++<<<<<<< HEAD
+ * If a new item is selected the previosly selected will be unselected.
+ * Previoulsy selected item can be get with function
++=======
+ * If a new item is selected the previously selected will be unselected.
+ * Previously selected item can be get with function
++>>>>>>> remotes/origin/upstream
* elm_diskselector_selected_item_get().
*
* If the item @p it is unselected, the first item of diskselector will
*/
EAPI Elm_Object_Item *elm_diskselector_item_next_get(const Elm_Object_Item *it);
++<<<<<<< HEAD
+
+/**
+ * Set the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it Target item
+ * @param cursor the cursor name to be used.
+ *
+ * @see elm_object_cursor_set() for more details.
+ *
+ * @ingroup Diskselector
+ */
+EAPI void elm_diskselector_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+
+/**
+ * Get the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it diskselector item with cursor already set.
+ * @return the cursor name.
+ *
+ * @see elm_object_cursor_get() for more details.
+ * @see elm_diskselector_cursor_set()
+ *
+ * @ingroup Diskselector
+ */
+EAPI const char *elm_diskselector_item_cursor_get(const Elm_Object_Item *it);
+
+/**
+ * Unset the cursor to be shown when mouse is over the diskselector item
+ *
+ * @param it Target item
+ *
+ * @see elm_object_cursor_unset() for more details.
+ * @see elm_diskselector_cursor_set()
+ *
+ * @ingroup Diskselector
+ */
+EAPI void elm_diskselector_item_cursor_unset(Elm_Object_Item *it);
+
+/**
+ * Sets a different style for this item cursor.
+ *
+ * @note before you set a style you should define a cursor with
+ * elm_diskselector_item_cursor_set()
+ *
+ * @param it diskselector item with cursor already set.
+ * @param style the theme style to use (default, transparent, ...)
+ *
+ * @see elm_object_cursor_style_set() for more details.
+ *
+ * @ingroup Diskselector
+ */
+EAPI void elm_diskselector_item_cursor_style_set(Elm_Object_Item *it, const char *style);
+
+/**
+ * Get the style for this item cursor.
+ *
+ * @param it diskselector item with cursor already set.
+ * @return style the theme style in use, defaults to "default". If the
+ * object does not have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_object_cursor_style_get() for more details.
+ * @see elm_diskselector_item_cursor_style_set()
+ *
+ * @ingroup Diskselector
+ */
+EAPI const char *elm_diskselector_item_cursor_style_get(const Elm_Object_Item *it);
+
+
+/**
+ * Set if the cursor set should be searched on the theme or should use
+ * the provided by the engine, only.
+ *
+ * @note before you set if should look on theme you should define a cursor
+ * with elm_diskselector_item_cursor_set().
+ * By default it will only look for cursors provided by the engine.
+ *
+ * @param it widget item with cursor already set.
+ * @param engine_only boolean to define if cursors set with
+ * elm_diskselector_item_cursor_set() should be searched only
+ * between cursors provided by the engine or searched on widget's
+ * theme as well.
+ *
+ * @see elm_object_cursor_engine_only_set() for more details.
+ *
+ * @ingroup Diskselector
+ */
+EAPI void elm_diskselector_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+/**
+ * Get the cursor engine only usage for this item cursor.
+ *
+ * @param it widget item with cursor already set.
+ * @return engine_only boolean to define it cursors should be looked only
+ * between the provided by the engine or searched on widget's theme as well.
+ * If the item does not have a cursor set, then @c EINA_FALSE is returned.
+ *
+ * @see elm_object_cursor_engine_only_get() for more details.
+ * @see elm_diskselector_item_cursor_engine_only_set()
+ *
+ * @ingroup Diskselector
+ */
+EAPI Eina_Bool elm_diskselector_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
++=======
++>>>>>>> remotes/origin/upstream
/**
* @}
*/
#include <Elementary.h>
#include <Elementary_Cursor.h>
#include "elm_priv.h"
++<<<<<<< HEAD
+#include "elm_module_priv.h"
++=======
++>>>>>>> remotes/origin/upstream
#include "els_scroller.h"
typedef struct _Widget_Data Widget_Data;
typedef struct _Elm_Entry_Context_Menu_Item Elm_Entry_Context_Menu_Item;
typedef struct _Elm_Entry_Item_Provider Elm_Entry_Item_Provider;
++<<<<<<< HEAD
+typedef struct _Elm_Entry_Text_Filter Elm_Entry_Text_Filter;
++=======
+ typedef struct _Elm_Entry_Markup_Filter Elm_Entry_Markup_Filter;
++>>>>>>> remotes/origin/upstream
struct _Widget_Data
{
Evas_Object *ent, *scroller;
++<<<<<<< HEAD
++=======
+ Evas_Object *hoversel;
++>>>>>>> remotes/origin/upstream
Ecore_Job *deferred_recalc_job;
Ecore_Event_Handler *sel_notify_handler;
Ecore_Event_Handler *sel_clear_handler;
Eina_List *items;
Eina_List *item_providers;
Eina_List *text_filters;
++<<<<<<< HEAD
++=======
+ Eina_List *markup_filters;
++>>>>>>> remotes/origin/upstream
Ecore_Job *hovdeljob;
Mod_Api *api; // module api if supplied
int cursor_pos;
Elm_Input_Panel_Return_Key_Type input_panel_return_key_type;
void *input_panel_imdata;
int input_panel_imdata_len;
++<<<<<<< HEAD
++=======
+ struct {
+ Evas_Object *hover_parent;
+ Evas_Object *pop, *hover;
+ const char *hover_style;
+ } anchor_hover;
++>>>>>>> remotes/origin/upstream
Eina_Bool changed : 1;
Eina_Bool single_line : 1;
Eina_Bool password : 1;
Eina_Bool drag_selection_asked : 1;
Eina_Bool can_write : 1;
Eina_Bool autosave : 1;
++<<<<<<< HEAD
+ Eina_Bool textonly : 1;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Bool usedown : 1;
Eina_Bool scroll : 1;
Eina_Bool h_bounce : 1;
Eina_Bool prediction_allow : 1;
Eina_Bool input_panel_return_key_disabled : 1;
Eina_Bool autoreturnkey : 1;
++<<<<<<< HEAD
+//// TIZEN ONLY
+ Evas_Object *hoversel;
+ Evas_Object *mgf_proxy;
+ Evas_Object *mgf_clip;
+ Evas_Object *mgf_bg;
+ Evas_Coord mgf_height;
+ float mgf_scale;
+ int mgf_type;
+ Ecore_Job *region_get_job;
+ Ecore_Job *region_recalc_job;
+ const char *password_text;
+ Evas_Coord cx, cy, cw, ch;
+ Eina_Bool double_clicked : 1;
+ Eina_Bool long_pressed : 1;
+ Eina_Bool magnifier_enabled : 1;
+ Elm_CNP_Mode cnp_mode : 2;
+//
++=======
+ Elm_Cnp_Mode cnp_mode : 2;
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Entry_Context_Menu_Item
void *data;
};
++<<<<<<< HEAD
+struct _Elm_Entry_Text_Filter
++=======
+ struct _Elm_Entry_Markup_Filter
++>>>>>>> remotes/origin/upstream
{
Elm_Entry_Filter_Cb func;
void *data;
} Length_Unit;
static const char *widtype = NULL;
++<<<<<<< HEAD
+// start for cbhm
+static Evas_Object *cnpwidgetdata = NULL;
+// end for cbhm
++=======
++>>>>>>> remotes/origin/upstream
#ifdef HAVE_ELEMENTARY_X
static Eina_Bool _drag_drop_cb(void *data, Evas_Object *obj, Elm_Selection_Data *);
static void _signal_entry_cut_notify(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _signal_cursor_changed(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _add_chars_till_limit(Evas_Object *obj, char **text, int can_add, Length_Unit unit);
++<<<<<<< HEAD
+//// TIZEN ONLY
+static void _signal_selection_end(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _signal_handler_move_start(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _signal_handler_move_end(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _signal_handler_moving(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void _magnifier_create(void *data);
+static void _magnifier_show(void *data);
+static void _magnifier_hide(void *data);
+static void _magnifier_move(void *data);
+static Evas_Coord_Rectangle _layout_region_get(Evas_Object *data);
+static Evas_Coord_Rectangle _viewport_region_get(Evas_Object *data);
+static void _region_get_job(void *data);
+static void _region_recalc_job(void *data);
+//
++=======
+ static void _entry_hover_anchor_clicked(void *data, Evas_Object *obj, void *event_info);
+
++>>>>>>> remotes/origin/upstream
static const char SIG_CHANGED[] = "changed";
static const char SIG_CHANGED_USER[] = "changed,user";
static const char SIG_ACTIVATED[] = "activated";
static const char SIG_CURSOR_CHANGED[] = "cursor,changed";
static const char SIG_CURSOR_CHANGED_MANUAL[] = "cursor,changed,manual";
static const char SIG_ANCHOR_CLICKED[] = "anchor,clicked";
++<<<<<<< HEAD
++=======
+ static const char SIG_ANCHOR_HOVER_OPENED[] = "anchor,hover,opened";
++>>>>>>> remotes/origin/upstream
static const char SIG_ANCHOR_DOWN[] = "anchor,down";
static const char SIG_ANCHOR_UP[] = "anchor,up";
static const char SIG_ANCHOR_IN[] = "anchor,in";
{SIG_CURSOR_CHANGED, ""},
{SIG_CURSOR_CHANGED_MANUAL, ""},
{SIG_ANCHOR_CLICKED, ""},
++<<<<<<< HEAD
++=======
+ {SIG_ANCHOR_HOVER_OPENED, ""},
++>>>>>>> remotes/origin/upstream
{SIG_ANCHOR_DOWN, ""},
{SIG_ANCHOR_UP, ""},
{SIG_ANCHOR_IN, ""},
{NULL, NULL}
};
++<<<<<<< HEAD
+typedef enum _Elm_Entry_Magnifier_Type
+{
+ _ENTRY_MAGNIFIER_FIXEDSIZE = 0,
+ _ENTRY_MAGNIFIER_FILLWIDTH,
+ _ENTRY_MAGNIFIER_CIRCULAR,
+} Elm_Entry_Magnifier_Type;
+
++=======
++>>>>>>> remotes/origin/upstream
static Eina_List *entries = NULL;
struct _Mod_Api
void (*obj_hook) (Evas_Object *obj);
void (*obj_unhook) (Evas_Object *obj);
void (*obj_longpress) (Evas_Object *obj);
++<<<<<<< HEAD
+ void (*obj_hidemenu) (Evas_Object *obj);
+ void (*obj_mouseup) (Evas_Object *obj);
++=======
++>>>>>>> remotes/origin/upstream
};
static Mod_Api *
_elm_module_symbol_get(m, "obj_unhook");
((Mod_Api *)(m->api) )->obj_longpress = // called on long press menu
_elm_module_symbol_get(m, "obj_longpress");
++<<<<<<< HEAD
+ ((Mod_Api *)(m->api) )->obj_hidemenu = // called on hide menu
+ _elm_module_symbol_get(m, "obj_hidemenu");
+ ((Mod_Api *)(m->api) )->obj_mouseup = // called on mouseup
+ _elm_module_symbol_get(m, "obj_mouseup");
++=======
++>>>>>>> remotes/origin/upstream
ok: // ok - return api
return m->api;
}
return NULL;
}
++<<<<<<< HEAD
+static void
++=======
+ static Eina_Bool
++>>>>>>> remotes/origin/upstream
_load(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
char *text;
++<<<<<<< HEAD
+ if (!wd) return;
+ if (!wd->file)
+ {
+ elm_object_text_set(obj, "");
+ return;
++=======
+ if (!wd) return EINA_FALSE;
+ if (!wd->file)
+ {
+ elm_object_text_set(obj, "");
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
switch (wd->format)
{
{
elm_object_text_set(obj, text);
free(text);
++<<<<<<< HEAD
+ }
+ else
+ elm_object_text_set(obj, "");
++=======
+ return EINA_TRUE;
+ }
+ else
+ {
+ elm_object_text_set(obj, "");
+ return EINA_FALSE;
+ }
++>>>>>>> remotes/origin/upstream
}
static void
return ECORE_CALLBACK_CANCEL;
}
++<<<<<<< HEAD
+static Elm_Entry_Text_Filter *
+_filter_new(Elm_Entry_Filter_Cb func, void *data)
+{
+ Elm_Entry_Text_Filter *tf = ELM_NEW(Elm_Entry_Text_Filter);
++=======
+ static Elm_Entry_Markup_Filter *
+ _filter_new(Elm_Entry_Filter_Cb func, void *data)
+ {
+ Elm_Entry_Markup_Filter *tf = ELM_NEW(Elm_Entry_Markup_Filter);
++>>>>>>> remotes/origin/upstream
if (!tf) return NULL;
tf->func = func;
}
static void
++<<<<<<< HEAD
+_filter_free(Elm_Entry_Text_Filter *tf)
++=======
+ _filter_free(Elm_Entry_Markup_Filter *tf)
++>>>>>>> remotes/origin/upstream
{
if (tf->func == elm_entry_filter_limit_size)
{
wd->delay_write = NULL;
if (wd->autosave) _save(obj);
}
++<<<<<<< HEAD
++=======
+ elm_entry_anchor_hover_end(obj);
+ elm_entry_anchor_hover_parent_set(obj, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Entry_Context_Menu_Item *it;
Elm_Entry_Item_Provider *ip;
++<<<<<<< HEAD
+ Elm_Entry_Text_Filter *tf;
++=======
+ Elm_Entry_Markup_Filter *tf;
++>>>>>>> remotes/origin/upstream
evas_event_freeze(evas_object_evas_get(obj));
#endif
if (wd->cut_sel) eina_stringshare_del(wd->cut_sel);
if (wd->text) eina_stringshare_del(wd->text);
++<<<<<<< HEAD
+ if (wd->password_text) eina_stringshare_del(wd->password_text);
if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job);
+ if (wd->region_get_job) ecore_job_del(wd->region_get_job);
+ if (wd->region_recalc_job) ecore_job_del(wd->region_recalc_job);
++=======
++ if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job);
++>>>>>>> remotes/origin/upstream
if (wd->append_text_idler)
{
ecore_idler_del(wd->append_text_idler);
wd->append_text_left = NULL;
wd->append_text_idler = NULL;
}
++<<<<<<< HEAD
+ if (wd->mgf_proxy) evas_object_del(wd->mgf_proxy);
+ if (wd->mgf_bg) evas_object_del(wd->mgf_bg);
+ if (wd->mgf_clip) evas_object_del(wd->mgf_clip);
++=======
++>>>>>>> remotes/origin/upstream
if (wd->longpress_timer) ecore_timer_del(wd->longpress_timer);
EINA_LIST_FREE(wd->items, it)
{
{
_filter_free(tf);
}
++<<<<<<< HEAD
++=======
+ EINA_LIST_FREE(wd->markup_filters, tf)
+ {
+ _filter_free(tf);
+ }
++>>>>>>> remotes/origin/upstream
if (wd->delay_write) ecore_timer_del(wd->delay_write);
if (wd->input_panel_imdata) free(wd->input_panel_imdata);
free(wd);
++<<<<<<< HEAD
++=======
+ if (wd->anchor_hover.hover_style) eina_stringshare_del(wd->anchor_hover.hover_style);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
{
Widget_Data *wd = elm_widget_data_get(obj);
edje_object_mirrored_set(wd->ent, rtl);
++<<<<<<< HEAD
++=======
+ if (wd->anchor_hover.hover)
+ elm_widget_mirrored_set(wd->anchor_hover.hover, rtl);
++>>>>>>> remotes/origin/upstream
}
static void
edje_object_signal_emit(wd->ent, "elm,state,disabled", "elm");
edje_object_part_text_input_panel_layout_set(wd->ent, "elm.text", wd->input_panel_layout);
edje_object_part_text_autocapital_type_set(wd->ent, "elm.text", wd->autocapital_type);
++<<<<<<< HEAD
++=======
+ edje_object_part_text_prediction_allow_set(wd->ent, "elm.text", wd->prediction_allow);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_input_panel_enabled_set(wd->ent, "elm.text", wd->input_panel_enable);
edje_object_part_text_input_panel_imdata_set(wd->ent, "elm.text", wd->input_panel_imdata, wd->input_panel_imdata_len);
edje_object_part_text_input_panel_return_key_type_set(wd->ent, "elm.text", wd->input_panel_return_key_type);
elm_widget_highlight_in_theme_set(obj, EINA_FALSE);
}
_sizing_eval(obj);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
elm_smart_scroller_child_viewport_size_get(wd->scroller, &vw, &vh);
++<<<<<<< HEAD
+ if ((minw > 0) && (vw < minw)) vw = minw;
+ if (minh > 0) vh = minh;
++=======
+ if (minw > vw) vw = minw;
+ if (minh > vh) vh = minh;
++>>>>>>> remotes/origin/upstream
evas_object_resize(wd->ent, vw, vh);
edje_object_size_min_calc
if (!wd->editable) return;
if (elm_widget_focus_get(obj))
{
++<<<<<<< HEAD
+ printf("[Elm_entry::Focused] obj : %p\n", obj);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_focus_set(wd->ent, EINA_TRUE);
edje_object_signal_emit(wd->ent, "elm,action,focus", "elm");
if (top && wd->input_panel_enable)
elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
_check_enable_return_key(obj);
++<<<<<<< HEAD
+ wd->mgf_type = _ENTRY_MAGNIFIER_FIXEDSIZE;
}
else
{
+ printf("[Elm_entry::Unfocused] obj : %p\n", obj);
++=======
++ }
++ else
++ {
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(wd->ent, "elm,action,unfocus", "elm");
evas_object_focus_set(wd->ent, EINA_FALSE);
if (top && wd->input_panel_enable)
elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
evas_object_smart_callback_call(obj, SIG_UNFOCUSED, NULL);
++<<<<<<< HEAD
+
+ if ((wd->api) && (wd->api->obj_hidemenu))
+ {
+ wd->api->obj_hidemenu(obj);
+ }
++=======
++>>>>>>> remotes/origin/upstream
}
}
Widget_Data *wd = elm_widget_data_get(data);
if (wd->hoversel) _hoversel_position(data);
++<<<<<<< HEAD
+
+ if (!_elm_config->desktop_entry)
+ {
+ if (wd->region_get_job) ecore_job_del(wd->region_get_job);
+ wd->region_get_job = ecore_job_add(_region_get_job, data);
+ }
++=======
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_resize(wd->ent, vw, vh);
}
if (wd->hoversel) _hoversel_position(data);
++<<<<<<< HEAD
+
+ if (!_elm_config->desktop_entry)
+ {
+ if (wd->region_get_job) ecore_job_del(wd->region_get_job);
+ wd->region_get_job = ecore_job_add(_region_get_job, data);
+ }
++=======
++>>>>>>> remotes/origin/upstream
}
static void
}
static void
++<<<<<<< HEAD
+_selectall(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ wd->selmode = EINA_TRUE;
+ edje_object_part_text_select_none(wd->ent, "elm.text");
+ edje_object_signal_emit(wd->ent, "elm,state,select,on", "elm");
+ edje_object_part_text_select_all(wd->ent, "elm.text");
+ elm_object_scroll_freeze_pop(data);
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_select(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Widget_Data *wd = elm_widget_data_get(data);
}
edje_object_signal_emit(wd->ent, "elm,state,select,on", "elm");
if (!_elm_config->desktop_entry)
++<<<<<<< HEAD
+ elm_object_scroll_freeze_pop(data); // TIZEN ONLY
+ //elm_widget_scroll_hold_push(data);
++=======
+ elm_widget_scroll_hold_push(data);
+ }
+
+ static char *
+ _remove_item_tags(const char *str)
+ {
+ char *ret;
+ if (!str)
+ return NULL;
+
+ Eina_Strbuf *buf = eina_strbuf_new();
+ if (!buf)
+ return NULL;
+
+ if (!eina_strbuf_append(buf, str))
+ return NULL;
+
+ while (EINA_TRUE)
+ {
+ const char *temp = eina_strbuf_string_get(buf);
+
+ char *startTag = NULL;
+ char *endTag = NULL;
+
+ startTag = strstr(temp, "<item");
+ if (!startTag)
+ startTag = strstr(temp, "</item");
+ if (startTag)
+ endTag = strstr(startTag, ">");
+ else
+ break;
+ if (!endTag || startTag > endTag)
+ break;
+
+ size_t sindex = startTag - temp;
+ size_t eindex = endTag - temp + 1;
+ if (!eina_strbuf_remove(buf, sindex, eindex))
+ break;
+ }
+ ret = eina_strbuf_string_steal(buf);
+ eina_strbuf_free(buf);
+ return ret;
++>>>>>>> remotes/origin/upstream
}
void
_elm_entry_entry_paste(Evas_Object *obj, const char *entry)
{
++<<<<<<< HEAD
+ Elm_Entry_Change_Info info;
+ info.insert = EINA_TRUE;
+ info.change.insert.pos = elm_entry_cursor_pos_get(obj);
+ info.change.insert.content = eina_stringshare_add(entry);
+ {
+ char *tmp;
+ tmp = evas_textblock_text_markup_to_utf8(elm_entry_textblock_get(obj),
+ info.change.insert.content);
+ info.change.insert.plain_length = eina_unicode_utf8_get_len(tmp);
+ free(tmp);
+ }
+
+ elm_entry_entry_insert(obj, entry);
+ evas_object_smart_callback_call(obj, SIG_CHANGED_USER, &info);
+
+ eina_stringshare_del(info.change.insert.content);
++=======
+ Widget_Data *wd = elm_widget_data_get(obj);
+ char *str = NULL;
+
+ if (wd->cnp_mode == ELM_CNP_MODE_NO_IMAGE)
+ {
+ str = _remove_item_tags(entry);
+ if (!str) str = strdup(entry);
+ }
+ else
+ str = strdup(entry);
+ if (!str) str = (char *)entry;
+
+ edje_object_part_text_user_insert(wd->ent, "elm.text", str);
+ if (str != entry) free(str);
++>>>>>>> remotes/origin/upstream
}
static void
formats = ELM_SEL_FORMAT_TEXT;
else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
formats |= ELM_SEL_FORMAT_IMAGE;
++<<<<<<< HEAD
+ elm_cnp_selection_get(ELM_SEL_TYPE_CLIPBOARD, formats, data, NULL, NULL);
++=======
+ elm_cnp_selection_get(data, ELM_SEL_TYPE_CLIPBOARD, formats, NULL, NULL);
++>>>>>>> remotes/origin/upstream
#endif
}
}
{
Widget_Data *wd = elm_widget_data_get(obj);
const char *sel;
++<<<<<<< HEAD
+ char *sel_str = NULL;
+ Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
++=======
++>>>>>>> remotes/origin/upstream
if (!wd) return;
sel = edje_object_part_text_selection_get(wd->ent, "elm.text");
if ((!sel) || (!sel[0])) return; /* avoid deleting our own selection */
++<<<<<<< HEAD
+ if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
+ {
+ sel_str = elm_entry_markup_to_utf8(sel);
+ if (!sel_str)
+ return;
+ formats = ELM_SEL_FORMAT_TEXT;
+ }
+ else
+ {
+ sel_str = strdup(sel);
+ if (!sel_str)
+ return;
+ if (wd->cnp_mode == ELM_CNP_MODE_NO_IMAGE)
+ {
+ while (EINA_TRUE)
+ {
+ char *startTag = NULL;
+ char *endTag = NULL;
+
+ startTag = strstr(sel_str, "<item");
+ if (!startTag)
+ startTag = strstr(sel_str, "</item");
+ if (startTag)
+ endTag = strstr(startTag, ">");
+ else
+ break;
+ if (!endTag || startTag > endTag)
+ break;
+
+ size_t sindex = startTag - sel_str;
+ size_t eindex = endTag - sel_str + 1;
+
+ Eina_Strbuf *buf = eina_strbuf_new();
+ if (buf)
+ {
+ eina_strbuf_append(buf, sel_str);
+ eina_strbuf_remove(buf, sindex, eindex);
+ sel_str = eina_strbuf_string_steal(buf);
+ eina_strbuf_free(buf);
+ }
+ }
+ }
+ }
+ elm_cnp_selection_set(seltype, obj, formats, sel_str, strlen(sel_str));
+ if (seltype == ELM_SEL_TYPE_CLIPBOARD)
+ eina_stringshare_replace(&wd->cut_sel, sel);
+ free(sel_str);
++=======
+ elm_cnp_selection_set(obj, seltype, ELM_SEL_FORMAT_MARKUP, sel, strlen(sel));
+ if (seltype == ELM_SEL_TYPE_CLIPBOARD)
+ eina_stringshare_replace(&wd->cut_sel, sel);
++>>>>>>> remotes/origin/upstream
}
static void
if (!_elm_config->desktop_entry)
elm_widget_scroll_hold_pop(data);
_store_selection(ELM_SEL_TYPE_CLIPBOARD, data);
++<<<<<<< HEAD
+ edje_object_part_text_insert(wd->ent, "elm.text", "");
+ edje_object_part_text_select_none(wd->ent, "elm.text");
++=======
+ edje_object_part_text_user_insert(wd->ent, "elm.text", "");
++>>>>>>> remotes/origin/upstream
_sizing_eval(data);
}
edje_object_part_text_select_none(wd->ent, "elm.text");
}
++<<<<<<< HEAD
+// start for cbhm
+static void
+_cnpinit(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ cnpwidgetdata = data;
+}
+// end for cbhm
+
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_item_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
}
}
++<<<<<<< HEAD
+static void
+_magnifier_hide(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ evas_object_hide(wd->mgf_bg);
+ evas_object_hide(wd->mgf_clip);
+
+ if (wd->scroll)
+ elm_smart_scroller_freeze_set(wd->scroller, EINA_FALSE);
+}
+
+static void
+_magnifier_show(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ evas_object_show(wd->mgf_bg);
+ evas_object_show(wd->mgf_clip);
+}
+
+static void
+_magnifier_move(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ Evas_Coord x, y, w, h;
+ Evas_Coord cx, cy, cw, ch, ox, oy;
+
+ edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", &cx, &cy, &cw, &ch);
+
+ if (wd->scroll)
+ {
+ evas_object_geometry_get(wd->scroller, &x, &y, &w, &h);
+ elm_smart_scroller_child_pos_get(wd->scroller, &ox, &oy);
+ cx -= ox;
+ cy -= oy;
+ }
+ else
+ evas_object_geometry_get(data, &x, &y, &w, &h);
+
+ ox = oy = 0;
+
+ if ((cy + y) - wd->mgf_height < 0)
+ oy = -1 * ((cy + y) - wd->mgf_height);
+
+ if (wd->mgf_type == _ENTRY_MAGNIFIER_FIXEDSIZE)
+ evas_object_move(wd->mgf_bg, (cx + x + cw/2) + ox, (cy + y) - wd->mgf_height + oy);
+ else if (wd->mgf_type == _ENTRY_MAGNIFIER_FILLWIDTH)
+ evas_object_move(wd->mgf_bg, x, (cy + y) - wd->mgf_height + oy);
+ else
+ return;
+
+ evas_object_move(wd->mgf_proxy, (1 - wd->mgf_scale) * cx + x + ox, (1 - wd->mgf_scale) * cy + y - wd->mgf_height/2 - ch/2 + oy);
+}
+
+static void
+_magnifier_create(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Coord x, y, w, h, mw, mh;
+ const char* key_data = NULL;
+ double elm_scale;
+
+ if (!wd) return;
+
+ if (wd->mgf_proxy)
+ {
+ evas_object_image_source_unset(wd->mgf_proxy);
+ evas_object_color_set(wd->mgf_proxy, 255, 255, 255, 0);
+ evas_object_hide(wd->mgf_proxy);
+ evas_object_clip_unset(wd->mgf_proxy);
+ evas_object_del(wd->mgf_proxy);
+ }
+ if (wd->mgf_bg) evas_object_del(wd->mgf_bg);
+ if (wd->mgf_clip) evas_object_del(wd->mgf_clip);
+
+ if (wd->scroll)
+ evas_object_geometry_get(wd->scroller, &x, &y, &w, &h);
+ else
+ evas_object_geometry_get(data, &x, &y, &w, &h);
+
+ if ((w <= 0) || (h <= 0))
+ return;
+
+ wd->mgf_bg = edje_object_add(evas_object_evas_get(data));
+
+ if (wd->mgf_type == _ENTRY_MAGNIFIER_FIXEDSIZE)
+ _elm_theme_object_set(data, wd->mgf_bg, "entry", "magnifier", "fixed-size");
+ else if (wd->mgf_type == _ENTRY_MAGNIFIER_FILLWIDTH)
+ _elm_theme_object_set(data, wd->mgf_bg, "entry", "magnifier", "fill-width");
+ else
+ return;
+
+ wd->mgf_clip = evas_object_rectangle_add(evas_object_evas_get(data));
+ evas_object_color_set(wd->mgf_clip, 255, 255, 255, 255);
+ edje_object_part_swallow(wd->mgf_bg, "swallow", wd->mgf_clip);
+
+ key_data = edje_object_data_get(wd->mgf_bg, "height");
+ if (key_data) wd->mgf_height = atoi(key_data);
+ key_data = edje_object_data_get(wd->mgf_bg, "scale");
+ if (key_data) wd->mgf_scale = atof(key_data);
+
+ elm_scale = elm_scale_get();
+ wd->mgf_height = (int)((float)wd->mgf_height * elm_scale);
+
+ if (wd->mgf_type == _ENTRY_MAGNIFIER_FILLWIDTH)
+ evas_object_resize(wd->mgf_bg, w, wd->mgf_height);
+
+ if (wd->scroll)
+ {
+ elm_smart_scroller_freeze_set(wd->scroller, EINA_TRUE);
+ wd->mgf_proxy = evas_object_image_add(evas_object_evas_get(wd->scroller));
+ evas_object_image_source_set(wd->mgf_proxy, wd->scroller);
+ }
+ else
+ {
+ wd->mgf_proxy = evas_object_image_add(evas_object_evas_get(data));
+ evas_object_image_source_set(wd->mgf_proxy, data);
+ }
+
+ mw = (Evas_Coord)((float)w * wd->mgf_scale);
+ mh = (Evas_Coord)((float)h * wd->mgf_scale);
+ if ((mw <= 0) || (mh <= 0))
+ return;
+
+ evas_object_resize(wd->mgf_proxy, mw, mh);
+ evas_object_image_fill_set(wd->mgf_proxy, 0, 0, mw, mh);
+ evas_object_color_set(wd->mgf_proxy, 255, 255, 255, 255);
+ evas_object_pass_events_set(wd->mgf_proxy, EINA_TRUE);
+ evas_object_show(wd->mgf_proxy);
+ evas_object_clip_set(wd->mgf_proxy, wd->mgf_clip);
+
+ evas_object_layer_set(wd->mgf_bg, EVAS_LAYER_MAX);
+ evas_object_layer_set(wd->mgf_proxy, EVAS_LAYER_MAX);
+}
+
+static void
+_signal_long_pressed(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+
+ if (!wd) return;
+ wd->long_pressed = EINA_TRUE;
+ _cancel(data, NULL, NULL);
+ if (wd->magnifier_enabled)
+ {
+ _magnifier_create(data);
+ _magnifier_move(data);
+ _magnifier_show(data);
+ elm_object_scroll_freeze_push(data);
+ }
+}
+
++=======
++>>>>>>> remotes/origin/upstream
static Eina_Bool
_long_press(void *data)
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return ECORE_CALLBACK_CANCEL;
++<<<<<<< HEAD
+ //_menu_press(data); /////// TIZEN ONLY
++=======
+ _menu_press(data);
++>>>>>>> remotes/origin/upstream
wd->longpress_timer = NULL;
evas_object_smart_callback_call(data, SIG_LONGPRESSED, NULL);
return ECORE_CALLBACK_CANCEL;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
wd->downx = ev->canvas.x;
wd->downy = ev->canvas.y;
++<<<<<<< HEAD
+ wd->long_pressed = EINA_FALSE;
++=======
++>>>>>>> remotes/origin/upstream
if (ev->button == 1)
{
if (wd->longpress_timer) ecore_timer_del(wd->longpress_timer);
if (wd->disabled) return;
if (ev->button == 1)
{
++<<<<<<< HEAD
+ if (!wd->double_clicked)
+ {
+ if ((wd->api) && (wd->api->obj_mouseup))
+ wd->api->obj_mouseup(data);
+ }
+ if (wd->magnifier_enabled)
+ {
+ _magnifier_hide(data);
+ elm_object_scroll_freeze_pop(data);
+ }
+ if (wd->long_pressed)
+ _menu_press(data);
++=======
++>>>>>>> remotes/origin/upstream
if (wd->longpress_timer)
{
ecore_timer_del(wd->longpress_timer);
Evas_Event_Mouse_Move *ev = event_info;
if (!wd) return;
if (wd->disabled) return;
++<<<<<<< HEAD
+
+ if (ev->buttons == 1)
+ {
+ if ((wd->long_pressed) && (wd->magnifier_enabled))
+ {
+ _magnifier_show(data);
+ _magnifier_move(data);
+ }
+ }
++=======
++>>>>>>> remotes/origin/upstream
if (!wd->selmode)
{
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
}
}
}
++<<<<<<< HEAD
+ return "base";
+}
+
+#ifndef HAVE_STRCASESTR
+char* _strcasestr(const char *s, const char *find)
+{
+ char c, sc;
+ size_t len;
+
+ if ((c = *find++) != 0) {
+ c = tolower((unsigned char) c);
+ len = strlen(find);
+ do {
+ do {
+ if( (sc = *s++) == 0)
+ return NULL;
+ } while ((char)tolower((unsigned char)sc) != c);
+ } while (strncasecmp(s, find, len) != 0);
+ s--;
+ }
+ return ((char*) s);
}
+#endif
++=======
++}
++
++>>>>>>> remotes/origin/upstream
static void
_entry_changed_common_handling(void *data, const char *event)
{
_sizing_eval(data);
if (wd->text) eina_stringshare_del(wd->text);
wd->text = NULL;
++<<<<<<< HEAD
+ if (wd->password_text) eina_stringshare_del(wd->password_text);
+ wd->password_text = NULL;
++=======
++>>>>>>> remotes/origin/upstream
if (wd->delay_write)
{
ecore_timer_del(wd->delay_write);
wd->delay_write = NULL;
}
++<<<<<<< HEAD
+
+ if ((wd->api) && (wd->api->obj_hidemenu))
+ wd->api->obj_hidemenu(data);
+
++=======
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(data));
evas_event_thaw_eval(evas_object_evas_get(data));
if ((wd->autosave) && (wd->file))
}
static void
++<<<<<<< HEAD
+_signal_handler_move_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ elm_object_scroll_freeze_push(data);
+
+ if ((wd->api) && (wd->api->obj_hidemenu))
+ wd->api->obj_hidemenu(data);
+
+ if (wd->magnifier_enabled)
+ {
+ _magnifier_create(data);
+ _magnifier_move(data);
+ _magnifier_show(data);
+ }
+}
+
+static void
+_signal_handler_move_end(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ elm_object_scroll_freeze_pop(data);
+
+ if (wd->have_selection)
+ {
+ _magnifier_hide(data);
+ _menu_press(data);
+ }
+}
+
+static void
+_signal_handler_moving(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ if (wd->magnifier_enabled)
+ {
+ _magnifier_move(data);
+ _magnifier_show(data);
+ }
+}
+
+static Evas_Coord_Rectangle
+_intersection_region_get(Evas_Coord_Rectangle rect1, Evas_Coord_Rectangle rect2)
+{
+ Evas_Coord_Rectangle ret_rect;
+ Evas_Coord_Point l1, l2, r1, r2, p1, p2;
+
+ l1.x = rect1.x;
+ l1.y = rect1.y;
+ r1.x = rect1.x + rect1.w;
+ r1.y = rect1.y + rect1.h;
+
+ l2.x = rect2.x;
+ l2.y = rect2.y;
+ r2.x = rect2.x + rect2.w;
+ r2.y = rect2.y + rect2.h;
+
+ p1.x = (l1.x > l2.x) ? l1.x : l2.x;
+ p1.y = (l1.y > l2.y) ? l1.y : l2.y;
+ p2.x = (r1.x < r2.x) ? r1.x : r2.x;
+ p2.y = (r1.y < r2.y) ? r1.y : r2.y;
+
+ ret_rect.x = p1.x;
+ ret_rect.y = p1.y;
+ ret_rect.w = (p2.x > p1.x) ? p2.x - p1.x : -1;
+ ret_rect.h = (p2.y > p1.y) ? p2.y - p1.y : -1;
+
+ return ret_rect;
+}
+
+static Evas_Coord_Rectangle
+_viewport_region_get(Evas_Object *data)
+{
+ Evas_Coord_Rectangle geometry, ret_rect;
+ geometry.x = geometry.y = geometry.w = geometry.h = -1;
+ ret_rect = geometry;
+
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return geometry;
+ if (!data || !strlen(elm_widget_type_get(data))) return geometry;
+
+ if (wd->scroll)
+ {
+ evas_object_geometry_get(wd->scroller, &geometry.x, &geometry.y, &geometry.w, &geometry.h);
+ ret_rect = geometry;
+ }
+
+ Evas_Object *parent_obj = data;
+
+ while ((parent_obj = elm_widget_parent_get(parent_obj)))
+ {
+ if (!strcmp(elm_widget_type_get(parent_obj), "scroller") ||
+ !strcmp(elm_widget_type_get(parent_obj), "genlist"))
+ {
+ evas_object_geometry_get(parent_obj, &geometry.x, &geometry.y, &geometry.w, &geometry.h);
+ if ((ret_rect.w == -1) && (ret_rect.h == -1)) ret_rect = geometry;
+ ret_rect = _intersection_region_get(geometry, ret_rect);
+ }
+ }
+
+ return ret_rect;
+}
+
+static Evas_Coord_Rectangle
+_layout_region_get(Evas_Object *data)
+{
+ Evas_Coord_Rectangle geometry;
+ geometry.x = geometry.y = geometry.w = geometry.h = -1;
+
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return geometry;
+ if (!data || !strlen(elm_widget_type_get(data))) return geometry;
+
+ Evas_Object *child_obj = data;
+ Evas_Object *parent_obj;
+
+ while ((parent_obj = elm_widget_parent_get(child_obj)))
+ {
+ if (!strcmp(elm_widget_type_get(parent_obj), "conformant"))
+ {
+ evas_object_geometry_get(child_obj, &geometry.x, &geometry.y, &geometry.w, &geometry.h);
+ return geometry;
+ }
+ child_obj = parent_obj;
+ }
+
+ return geometry;
+}
+
+static void
+_region_get_job(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Coord_Rectangle ret_rect;
+ if (!wd) return;
+ wd->region_get_job = NULL;
+
+ if (!_elm_config->desktop_entry)
+ {
+ if (wd->region_recalc_job) ecore_job_del(wd->region_recalc_job);
+ wd->region_recalc_job = ecore_job_add(_region_recalc_job, data);
+
+ evas_smart_objects_calculate(evas_object_evas_get(data));
+ }
+}
+
+static void
+_region_recalc_job(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Coord_Rectangle ret_rect;
+ if (!wd) return;
+ wd->region_recalc_job = NULL;
+
+ if (!_elm_config->desktop_entry)
+ {
+ ret_rect = _viewport_region_get(data);
+ edje_object_part_text_viewport_region_set(wd->ent, "elm.text", ret_rect.x, ret_rect.y, ret_rect.w, ret_rect.h);
+ ret_rect = _layout_region_get(data);
+ edje_object_part_text_layout_region_set(wd->ent, "elm.text", ret_rect.x, ret_rect.y, ret_rect.w, ret_rect.h);
+ }
+}
+
+static void
+_signal_selection_end(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ if (wd->magnifier_enabled)
+ _magnifier_hide(data);
+ _menu_press(data);
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_signal_entry_changed_user(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
Elm_Entry_Change_Info info;
if (entry != data) elm_entry_select_none(entry);
}
wd->have_selection = EINA_TRUE;
++<<<<<<< HEAD
+ wd->selmode = EINA_TRUE;
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(data, SIG_SELECTION_START, NULL);
#ifdef HAVE_ELEMENTARY_X
if (wd->sel_notify_handler)
top = elm_widget_top_get(data);
if (txt && top && (elm_win_xwindow_get(top)))
++<<<<<<< HEAD
+ elm_cnp_selection_set(ELM_SEL_TYPE_PRIMARY, data,
++=======
+ elm_cnp_selection_set(data, ELM_SEL_TYPE_PRIMARY,
++>>>>>>> remotes/origin/upstream
ELM_SEL_FORMAT_MARKUP, txt, strlen(txt));
}
#endif
}
static void
++<<<<<<< HEAD
+_signal_magnifier_changed(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Evas_Coord cx, cy, cw, ch;
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+
+ edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", &cx, &cy, &cw, &ch);
+ if (!wd->deferred_recalc_job)
+ elm_widget_show_region_set(data, cx, cy, cw, ch, EINA_FALSE);
+ else
+ {
+ wd->deferred_cur = EINA_TRUE;
+ wd->cx = cx;
+ wd->cy = cy;
+ wd->cw = cw;
+ wd->ch = ch;
+ }
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
_signal_selection_all(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
Widget_Data *wd = elm_widget_data_get(data);
static void
_signal_selection_changed(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Evas_Coord cx, cy, cw, ch;
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ wd->have_selection = EINA_TRUE;
+ wd->selmode = EINA_TRUE;
+ evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
+ _store_selection(ELM_SEL_TYPE_PRIMARY, data);
+
+// TIZEN ONLY
+ edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text", &cx, &cy, &cw, &ch);
+ if (!wd->deferred_recalc_job)
+ elm_widget_show_region_set(data, cx, cy, cw, ch, EINA_FALSE);
+ else
+ {
+ wd->deferred_cur = EINA_TRUE;
+ wd->cx = cx;
+ wd->cy = cy;
+ wd->cw = cw;
+ wd->ch = ch;
+ }
+//
++=======
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ wd->have_selection = EINA_TRUE;
+ evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
+ _store_selection(ELM_SEL_TYPE_PRIMARY, data);
++>>>>>>> remotes/origin/upstream
}
static void
if (!wd) return;
if (!wd->have_selection) return;
wd->have_selection = EINA_FALSE;
++<<<<<<< HEAD
+ wd->selmode = EINA_FALSE; /////////////// exist in ours only - necessary ?
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(data, SIG_SELECTION_CLEARED, NULL);
if (wd->sel_notify_handler)
{
top = elm_widget_top_get(data);
if ((top) && (elm_win_xwindow_get(top)))
++<<<<<<< HEAD
+ elm_cnp_selection_set(ELM_SEL_TYPE_PRIMARY, data,
++=======
+ elm_cnp_selection_set(data, ELM_SEL_TYPE_PRIMARY,
++>>>>>>> remotes/origin/upstream
ELM_SEL_FORMAT_MARKUP, wd->cut_sel,
strlen(wd->cut_sel));
#endif
top = elm_widget_top_get(data);
if ((top) && (elm_win_xwindow_get(top)))
++<<<<<<< HEAD
+ elm_cnp_selection_clear(ELM_SEL_TYPE_PRIMARY, data);
+#endif
+ }
+ }
+
+ if ((wd->api) && (wd->api->obj_hidemenu))
+ {
+ wd->api->obj_hidemenu(data);
+ }
++=======
+ elm_object_cnp_selection_clear(data, ELM_SEL_TYPE_PRIMARY);
+ #endif
+ }
+ }
++>>>>>>> remotes/origin/upstream
}
static void
formats = ELM_SEL_FORMAT_TEXT;
else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
formats |= ELM_SEL_FORMAT_IMAGE;
++<<<<<<< HEAD
+ elm_cnp_selection_get(ELM_SEL_TYPE_CLIPBOARD, formats, data,
+ NULL, NULL);
++=======
+ elm_cnp_selection_get(data, type, formats,
+ NULL, NULL);
++>>>>>>> remotes/origin/upstream
}
#endif
}
static void
_signal_entry_copy_notify(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
++=======
+ evas_object_smart_callback_call(data, SIG_SELECTION_COPY, NULL);
++>>>>>>> remotes/origin/upstream
_copy(data, NULL, NULL);
}
static void
_signal_entry_cut_notify(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
++=======
+ evas_object_smart_callback_call(data, SIG_SELECTION_CUT, NULL);
++>>>>>>> remotes/origin/upstream
_cut(data, NULL, NULL);
}
_signal_anchor_geoms_do_things_with(wd, &ei);
if (!wd->disabled)
++<<<<<<< HEAD
+ evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, &ei);
++=======
+ {
+ evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, &ei);
+
+ _entry_hover_anchor_clicked(data, data, &ei);
+ }
++>>>>>>> remotes/origin/upstream
}
static void
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
++<<<<<<< HEAD
+ wd->double_clicked = EINA_FALSE;
evas_object_smart_callback_call(data, SIG_PRESS, NULL);
+
+ if ((wd->api) && (wd->api->obj_hidemenu))
+ wd->api->obj_hidemenu(data);
++=======
++ evas_object_smart_callback_call(data, SIG_PRESS, NULL);
++>>>>>>> remotes/origin/upstream
}
static void
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
++<<<<<<< HEAD
+
+ if (!_elm_config->desktop_entry && !wd->double_clicked)
+ _cancel(data, NULL, NULL);
++=======
++>>>>>>> remotes/origin/upstream
}
static void
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
++<<<<<<< HEAD
+ wd->double_clicked = EINA_TRUE;
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, NULL);
}
static Eina_Bool
_event_selection_clear(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
{
++<<<<<<< HEAD
+#if 0
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(data);
Ecore_X_Event_Selection_Clear *ev = event;
if (!wd) return ECORE_CALLBACK_PASS_ON;
{
elm_entry_select_none(data);
}
++<<<<<<< HEAD
+#else
+
+ // start for cbhm
+ Evas_Object *top = elm_widget_top_get(data);
+ Ecore_X_Event_Selection_Clear *ev = event;
+
+ if (!top)
+ return ECORE_CALLBACK_PASS_ON;
+
+ if (ev->selection != ECORE_X_SELECTION_SECONDARY)
+ {
+ return ECORE_CALLBACK_PASS_ON;
+ }
+
+ if (cnpwidgetdata == data)
+ {
+ Widget_Data *wd = elm_widget_data_get(data);
+ Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
+ evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
+ if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
+ formats = ELM_SEL_FORMAT_TEXT;
+ else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
+ formats |= ELM_SEL_FORMAT_IMAGE;
+ elm_cnp_selection_get(ELM_SEL_TYPE_SECONDARY, formats, data, NULL, NULL);
+ }
+
+ // end for cbhm
+#endif
++=======
++>>>>>>> remotes/origin/upstream
return ECORE_CALLBACK_PASS_ON;
}
{
Widget_Data *wd = elm_widget_data_get(data);
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Entry_Text_Filter *tf;
++=======
+ Elm_Entry_Markup_Filter *tf;
++>>>>>>> remotes/origin/upstream
if (type == EDJE_TEXT_FILTER_FORMAT)
return;
}
}
++<<<<<<< HEAD
++=======
+ static void
+ _markup_filter(void *data, Evas_Object *edje __UNUSED__, const char *part __UNUSED__, char **text)
+ {
+ Widget_Data *wd = elm_widget_data_get(data);
+ Eina_List *l;
+ Elm_Entry_Markup_Filter *tf;
+
+ EINA_LIST_FOREACH(wd->markup_filters, l, tf)
+ {
+ tf->func(tf->data, data, text);
+ if (!*text)
+ break;
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
/* This function is used to insert text by chunks in jobs */
static Eina_Bool
_text_append_idler(void *data)
char backup;
Evas_Object *obj = (Evas_Object *) data;
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (wd->text) eina_stringshare_del(wd->text);
+ wd->text = NULL;
+ if (wd->password_text) eina_stringshare_del(wd->password_text);
+ wd->password_text = NULL;
+ evas_event_freeze(evas_object_evas_get(obj));
++=======
+ evas_event_freeze(evas_object_evas_get(obj));
+ if (wd->text) eina_stringshare_del(wd->text);
+ wd->text = NULL;
++>>>>>>> remotes/origin/upstream
wd->changed = EINA_TRUE;
start = wd->append_text_position;
if (wd->text) eina_stringshare_del(wd->text);
wd->text = NULL;
++<<<<<<< HEAD
+ if (wd->password_text) eina_stringshare_del(wd->password_text);
+ wd->password_text = NULL;
++=======
++>>>>>>> remotes/origin/upstream
wd->changed = EINA_TRUE;
/* Clear currently pending job if there is one */
if (item && strcmp(item, "default")) return NULL;
const char *text;
if (!wd) return NULL;
++<<<<<<< HEAD
+ if (wd->password)
+ {
+ if(wd->password_text) return wd->password_text;
+ }
+ else if (wd->text)
+ {
+ return wd->text;
+ }
++=======
+ if (wd->text) return wd->text;
++>>>>>>> remotes/origin/upstream
text = edje_object_part_text_get(wd->ent, "elm.text");
if (!text)
{
ERR("text=NULL for edje %p, part 'elm.text'", wd->ent);
return NULL;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
if (wd->append_text_len > 0)
{
char *tmpbuf;
{
eina_stringshare_replace(&wd->text, text);
}
++<<<<<<< HEAD
+ if (wd->password)
+ {
+ char *pw_text;
+ pw_text = elm_entry_markup_to_utf8(wd->text);
+ if (pw_text)
+ {
+ eina_stringshare_replace(&wd->password_text, pw_text);
+ free(pw_text);
+ return wd->password_text;
+ }
+ }
++=======
++>>>>>>> remotes/origin/upstream
return wd->text;
}
wd->disabled = EINA_FALSE;
wd->context_menu = EINA_TRUE;
wd->autosave = EINA_TRUE;
++<<<<<<< HEAD
+ wd->textonly = EINA_FALSE;
+ wd->scroll = EINA_FALSE;
+ wd->input_panel_imdata = NULL;
+//TIZEN ONLY
+ wd->cnp_mode = ELM_CNP_MODE_MARKUP;
+ wd->magnifier_enabled = EINA_TRUE;
+//
++=======
+ wd->cnp_mode = ELM_CNP_MODE_MARKUP;
+ wd->scroll = EINA_FALSE;
+ wd->input_panel_imdata = NULL;
++>>>>>>> remotes/origin/upstream
wd->ent = edje_object_add(e);
edje_object_item_provider_set(wd->ent, _get_item, obj);
edje_object_text_insert_filter_callback_add(wd->ent,"elm.text", _text_filter, obj);
++<<<<<<< HEAD
++=======
+ edje_object_text_markup_filter_callback_add(wd->ent,"elm.text", _markup_filter, obj);
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(wd->ent, EVAS_CALLBACK_MOVE, _move, obj);
evas_object_event_callback_add(wd->ent, EVAS_CALLBACK_MOUSE_DOWN,
_mouse_down, obj);
_signal_undo_request, obj);
edje_object_signal_callback_add(wd->ent, "entry,redo,request", "elm.text",
_signal_redo_request, obj);
++<<<<<<< HEAD
+// TIZEN ONLY
+ edje_object_signal_callback_add(wd->ent, "handler,move,start", "elm.text",
+ _signal_handler_move_start, obj);
+ edje_object_signal_callback_add(wd->ent, "handler,move,end", "elm.text",
+ _signal_handler_move_end, obj);
+ edje_object_signal_callback_add(wd->ent, "handler,moving", "elm.text",
+ _signal_handler_moving, obj);
+ edje_object_signal_callback_add(wd->ent, "selection,end", "elm.text",
+ _signal_selection_end, obj);
+ edje_object_signal_callback_add(wd->ent, "long,pressed", "elm.text",
+ _signal_long_pressed, obj);
+ edje_object_signal_callback_add(wd->ent, "magnifier,changed", "elm.text",
+ _signal_magnifier_changed, obj);
+//
+ edje_object_part_text_set(wd->ent, "elm.text", "");
+ if (_elm_config->desktop_entry)
+ edje_object_part_text_select_allow_set(wd->ent, "elm.text", EINA_TRUE);
+ else
+ {
+ edje_object_part_text_copy_paste_disabled_set(wd->ent, "elm.text", EINA_FALSE);
+ edje_object_part_text_viewport_region_set(wd->ent, "elm.text", -1, -1, -1, -1);
+ edje_object_part_text_layout_region_set(wd->ent, "elm.text", -1, -1, -1, -1);
+ }
++=======
+ edje_object_part_text_set(wd->ent, "elm.text", "");
+ if (_elm_config->desktop_entry)
+ edje_object_part_text_select_allow_set(wd->ent, "elm.text", EINA_TRUE);
++>>>>>>> remotes/origin/upstream
elm_widget_resize_object_set(obj, wd->ent);
_sizing_eval(obj);
elm_entry_input_panel_layout_set(obj, ELM_INPUT_PANEL_LAYOUT_NORMAL);
++<<<<<<< HEAD
+
+ wd->input_panel_enable = edje_object_part_text_input_panel_enabled_get(wd->ent, "elm.text");
++=======
+ elm_entry_input_panel_enabled_set(obj, EINA_TRUE);
+ elm_entry_prediction_allow_set(obj, EINA_TRUE);
+
++>>>>>>> remotes/origin/upstream
wd->autocapital_type = edje_object_part_text_autocapital_type_get(wd->ent, "elm.text");
#ifdef HAVE_ELEMENTARY_X
return obj;
}
++<<<<<<< HEAD
+void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extension_data *ext_mod)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ ext_mod->cancel = _cancel;
+ ext_mod->copy = _copy;
+ ext_mod->cut = _cut;
+ ext_mod->paste = _paste;
+ ext_mod->select = _select;
+ ext_mod->selectall = _selectall;
+ ext_mod->ent = wd->ent;
+ ext_mod->items = wd->items;
+ ext_mod->editable = wd->editable;
+ ext_mod->have_selection = wd->have_selection;
+ ext_mod->password = wd->password;
+ ext_mod->selmode = wd->selmode;
+ ext_mod->cnpinit = _cnpinit;
+ ext_mod->context_menu = wd->context_menu;
+ ext_mod->cnp_mode = wd->cnp_mode;
+ ext_mod->viewport_rect = _viewport_region_get(obj);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI void
elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line)
{
if (wd->scroller)
{
if (wd->single_line)
++<<<<<<< HEAD
+ {
+ elm_smart_scroller_policy_set(wd->scroller,
+ ELM_SMART_SCROLLER_POLICY_OFF,
+ ELM_SMART_SCROLLER_POLICY_OFF);
+ elm_smart_scroller_bounce_allow_set(wd->scroller, EINA_FALSE, EINA_FALSE); // TIZEN ONLY
+ }
++=======
+ elm_smart_scroller_policy_set(wd->scroller,
+ ELM_SMART_SCROLLER_POLICY_OFF,
+ ELM_SMART_SCROLLER_POLICY_OFF);
++>>>>>>> remotes/origin/upstream
else
{
const Elm_Scroller_Policy map[3] =
elm_smart_scroller_policy_set(wd->scroller,
map[wd->policy_h],
map[wd->policy_v]);
++<<<<<<< HEAD
+ elm_smart_scroller_bounce_allow_set(wd->scroller, EINA_FALSE, EINA_FALSE); // TIZEN ONLY
++=======
++>>>>>>> remotes/origin/upstream
}
_sizing_eval(obj);
}
Evas_Textblock_Cursor *cur;
Eina_Bool ret;
if (!wd) return EINA_TRUE;
++<<<<<<< HEAD
+
+ if (0) { // TIZEN ONLY
++=======
++>>>>>>> remotes/origin/upstream
/* It's a hack until we get the support suggested above.
* We just create a cursor, point it to the begining, and then
* try to advance it, if it can advance, the tb is not empty,
evas_textblock_cursor_free(cur);
return !ret;
++<<<<<<< HEAD
+ }
+
+ char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+ if (!str) return EINA_TRUE;
+
+ ret = (strlen(str) == 0);
+
+ free(str);
+ return ret;
++=======
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
++<<<<<<< HEAD
+ return edje_object_part_object_get(wd->ent, "elm.text");
++=======
+ return (Evas_Object *) edje_object_part_object_get(wd->ent, "elm.text");
++>>>>>>> remotes/origin/upstream
}
EAPI void
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
edje_object_part_text_insert(wd->ent, "elm.text", entry);
++<<<<<<< HEAD
+ // start for cbhm
+#ifdef HAVE_ELEMENTARY_X
+ if (cnpwidgetdata == obj)
+ ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
+#endif
+ // end for cbhm
++=======
++>>>>>>> remotes/origin/upstream
wd->changed = EINA_TRUE;
_sizing_eval(obj);
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
edje_object_part_text_cursor_end_set(wd->ent, "elm.text", EDJE_CURSOR_MAIN);
++<<<<<<< HEAD
+ edje_object_message_signal_process(wd->ent);
++=======
++>>>>>>> remotes/origin/upstream
}
EAPI void
if (!wd) return;
if (wd->context_menu == !disabled) return;
wd->context_menu = !disabled;
++<<<<<<< HEAD
+
+ if (!_elm_config->desktop_entry)
+ edje_object_part_text_copy_paste_disabled_set(wd->ent, "elm.text", disabled);
++=======
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
}
EAPI void
++<<<<<<< HEAD
+elm_entry_magnifier_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->magnifier_enabled == !disabled) return;
+ wd->magnifier_enabled = !disabled;
+}
+
+EAPI Eina_Bool
+elm_entry_magnifier_disabled_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return !wd->magnifier_enabled;
+}
+
+EAPI void
+elm_entry_item_provider_append(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data)
++=======
+ elm_entry_item_provider_append(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_entry_item_provider_prepend(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data)
++=======
+ elm_entry_item_provider_prepend(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_entry_item_provider_remove(Evas_Object *obj, Evas_Object *(*func) (void *data, Evas_Object *entry, const char *item), void *data)
++=======
+ elm_entry_item_provider_remove(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
elm_entry_text_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data)
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Elm_Entry_Text_Filter *tf;
++=======
+ Elm_Entry_Markup_Filter *tf;
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
wd = elm_widget_data_get(obj);
elm_entry_text_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data)
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Elm_Entry_Text_Filter *tf;
++=======
+ Elm_Entry_Markup_Filter *tf;
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
wd = elm_widget_data_get(obj);
{
Widget_Data *wd;
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Entry_Text_Filter *tf;
++=======
+ Elm_Entry_Markup_Filter *tf;
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
wd = elm_widget_data_get(obj);
}
}
++<<<<<<< HEAD
++=======
+ EAPI void
+ elm_entry_markup_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data)
+ {
+ Widget_Data *wd;
+ Elm_Entry_Markup_Filter *tf;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ wd = elm_widget_data_get(obj);
+
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ tf = _filter_new(func, data);
+ if (!tf) return;
+
+ wd->markup_filters = eina_list_append(wd->markup_filters, tf);
+ }
+
+ EAPI void
+ elm_entry_markup_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data)
+ {
+ Widget_Data *wd;
+ Elm_Entry_Markup_Filter *tf;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ wd = elm_widget_data_get(obj);
+
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ tf = _filter_new(func, data);
+ if (!tf) return;
+
+ wd->markup_filters = eina_list_prepend(wd->markup_filters, tf);
+ }
+
+ EAPI void
+ elm_entry_markup_filter_remove(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data)
+ {
+ Widget_Data *wd;
+ Eina_List *l;
+ Elm_Entry_Markup_Filter *tf;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ wd = elm_widget_data_get(obj);
+
+ EINA_SAFETY_ON_NULL_RETURN(func);
+
+ EINA_LIST_FOREACH(wd->markup_filters, l, tf)
+ {
+ if ((tf->func == func) && ((!data) || (tf->data == data)))
+ {
+ wd->markup_filters = eina_list_remove_list(wd->markup_filters, l);
+ _filter_free(tf);
+ return;
+ }
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI char *
elm_entry_markup_to_utf8(const char *s)
{
char *current, *utfstr;
int len, newlen;
const char *(*text_get)(const Evas_Object *);
++<<<<<<< HEAD
+ const char *widget_type;
++=======
++>>>>>>> remotes/origin/upstream
EINA_SAFETY_ON_NULL_RETURN(data);
EINA_SAFETY_ON_NULL_RETURN(entry);
/* hack. I don't want to copy the entire function to work with
* scrolled_entry */
++<<<<<<< HEAD
+ widget_type = elm_widget_type_get(entry);
++=======
++>>>>>>> remotes/origin/upstream
text_get = _text_get;
current = elm_entry_markup_to_utf8(text_get(entry));
*insert = 0;
}
++<<<<<<< HEAD
+EAPI void
+elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
++=======
+ EAPI Eina_Bool
+ elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (wd->delay_write)
{
ecore_timer_del(wd->delay_write);
if (wd->autosave) _save(obj);
eina_stringshare_replace(&wd->file, file);
wd->format = format;
++<<<<<<< HEAD
+ _load(obj);
++=======
+ return _load(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI void
return wd->autosave;
}
++<<<<<<< HEAD
+EAPI void
+elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ elm_entry_cnp_mode_set(obj, textonly ? ELM_CNP_MODE_NO_IMAGE : ELM_CNP_MODE_MARKUP);
+}
+
+EAPI Eina_Bool
++=======
+ EINA_DEPRECATED EAPI void
+ elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Elm_Cnp_Mode cnp_mode = ELM_CNP_MODE_MARKUP;
+ if (textonly)
+ cnp_mode = ELM_CNP_MODE_NO_IMAGE;
+ elm_entry_cnp_mode_set(obj, cnp_mode);
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_entry_cnp_textonly_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
}
EAPI void
++<<<<<<< HEAD
+elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode)
++=======
+ elm_entry_cnp_mode_set(Evas_Object *obj, Elm_Cnp_Mode cnp_mode)
++>>>>>>> remotes/origin/upstream
{
Elm_Sel_Format format = ELM_SEL_FORMAT_MARKUP;
ELM_CHECK_WIDTYPE(obj, widtype);
#endif
}
++<<<<<<< HEAD
+EAPI Elm_CNP_Mode
+elm_entry_cnp_mode_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
++=======
+ EAPI Elm_Cnp_Mode
+ elm_entry_cnp_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_CNP_MODE_MARKUP;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return ELM_CNP_MODE_MARKUP;
++>>>>>>> remotes/origin/upstream
return wd->cnp_mode;
}
return wd->input_panel_enable;
}
++<<<<<<< HEAD
+EINA_DEPRECATED EAPI void
+elm_entry_line_char_wrap_set(Evas_Object *obj, Eina_Bool wrap)
+{
+ if (wrap) elm_entry_line_wrap_set(obj, ELM_WRAP_CHAR);
+}
+
+EAPI void
+elm_entry_autocapitalization_set(Evas_Object *obj, Eina_Bool autocap)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (autocap)
+ wd->autocapital_type = ELM_AUTOCAPITAL_TYPE_SENTENCE;
+ else
+ wd->autocapital_type = ELM_AUTOCAPITAL_TYPE_NONE;
+
+ if (wd->input_panel_layout == ELM_INPUT_PANEL_LAYOUT_URL ||
+ wd->input_panel_layout == ELM_INPUT_PANEL_LAYOUT_EMAIL)
+ wd->autocapital_type = ELM_AUTOCAPITAL_TYPE_NONE;
+
+ edje_object_part_text_autocapital_type_set(wd->ent, "elm.text", wd->autocapital_type);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI void
elm_entry_input_panel_show(Evas_Object *obj)
{
}
EAPI void
++<<<<<<< HEAD
+elm_entry_input_panel_return_key_autoenabled_set(Evas_Object *obj, Eina_Bool on)
++=======
+ elm_entry_input_panel_return_key_autoenabled_set(Evas_Object *obj, Eina_Bool enabled)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->autoreturnkey = on;
+ _check_enable_return_key(obj);
+}
+
+EINA_DEPRECATED EAPI void
+elm_entry_autoperiod_set(Evas_Object *obj __UNUSED__, Eina_Bool autoperiod __UNUSED__)
+{
+ // will be deleted
+}
+
+EINA_DEPRECATED EAPI void
+elm_entry_autoenable_returnkey_set(Evas_Object *obj __UNUSED__, Eina_Bool on __UNUSED__)
+{
+ // will be deleted
+}
+
+EAPI Ecore_IMF_Context *elm_entry_imf_context_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd || !wd->ent) return NULL;
+
+ return edje_object_part_text_imf_context_get(wd->ent, "elm.text");
+}
+
+EAPI void
+elm_entry_magnifier_type_set(Evas_Object *obj, int type)
++=======
+ wd->autoreturnkey = enabled;
+ _check_enable_return_key(obj);
+ }
+
+ EAPI void*
+ elm_entry_imf_context_get(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+
+ return edje_object_part_text_imf_context_get(wd->ent, "elm.text");
+ }
+
+ /* START - ANCHOR HOVER */
+ static void
+ _parent_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ Widget_Data *wd = elm_widget_data_get(data);
+ if (!wd) return;
+ wd->anchor_hover.hover_parent = NULL;
+ }
+
+ EAPI void
+ elm_entry_anchor_hover_parent_set(Evas_Object *obj, Evas_Object *parent)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->anchor_hover.hover_parent)
+ evas_object_event_callback_del_full(wd->anchor_hover.hover_parent, EVAS_CALLBACK_DEL, _parent_del, obj);
+ wd->anchor_hover.hover_parent = parent;
+ if (wd->anchor_hover.hover_parent)
+ evas_object_event_callback_add(wd->anchor_hover.hover_parent, EVAS_CALLBACK_DEL, _parent_del, obj);
+ }
+
+ EAPI Evas_Object *
+ elm_entry_anchor_hover_parent_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return wd->anchor_hover.hover_parent;
+ }
+
+ EAPI void
+ elm_entry_anchor_hover_style_set(Evas_Object *obj, const char *style)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
+ eina_stringshare_replace(&wd->anchor_hover.hover_style, style);
+ }
+
+ EAPI const char *
+ elm_entry_anchor_hover_style_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return wd->anchor_hover.hover_style;
+ }
+
+ EAPI void
+ elm_entry_anchor_hover_end(Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
++<<<<<<< HEAD
+
+ wd->mgf_type = type;
+ _magnifier_create(obj);
+}
++=======
+ if (wd->anchor_hover.hover) evas_object_del(wd->anchor_hover.hover);
+ if (wd->anchor_hover.pop) evas_object_del(wd->anchor_hover.pop);
+ wd->anchor_hover.hover = NULL;
+ wd->anchor_hover.pop = NULL;
+ }
+
+
+ static void
+ _anchor_hover_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ elm_entry_anchor_hover_end(data);
+ }
+
+ static void
+ _entry_hover_anchor_clicked(void *data, Evas_Object *obj, void *event_info)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Entry_Anchor_Info *info = event_info;
+ Evas_Object *hover_parent;
+ Elm_Entry_Anchor_Hover_Info ei;
+ Evas_Coord x, w, y, h, px, py;
+ if (!wd) return;
+ ei.anchor_info = event_info;
+ wd->anchor_hover.pop = elm_icon_add(obj);
+ evas_object_move(wd->anchor_hover.pop, info->x, info->y);
+ evas_object_resize(wd->anchor_hover.pop, info->w, info->h);
+ wd->anchor_hover.hover = elm_hover_add(obj);
+ elm_widget_mirrored_set(wd->anchor_hover.hover, elm_widget_mirrored_get(obj));
+ if (wd->anchor_hover.hover_style)
+ elm_object_style_set(wd->anchor_hover.hover, wd->anchor_hover.hover_style);
+ hover_parent = wd->anchor_hover.hover_parent;
+ if (!hover_parent) hover_parent = obj;
+ elm_hover_parent_set(wd->anchor_hover.hover, hover_parent);
+ elm_hover_target_set(wd->anchor_hover.hover, wd->anchor_hover.pop);
+ ei.hover = wd->anchor_hover.hover;
+ evas_object_geometry_get(hover_parent, &x, &y, &w, &h);
+ ei.hover_parent.x = x;
+ ei.hover_parent.y = y;
+ ei.hover_parent.w = w;
+ ei.hover_parent.h = h;
+ px = info->x + (info->w / 2);
+ py = info->y + (info->h / 2);
+ ei.hover_left = 1;
+ if (px < (x + (w / 3))) ei.hover_left = 0;
+ ei.hover_right = 1;
+ if (px > (x + ((w * 2) / 3))) ei.hover_right = 0;
+ ei.hover_top = 1;
+ if (py < (y + (h / 3))) ei.hover_top = 0;
+ ei.hover_bottom = 1;
+ if (py > (y + ((h * 2) / 3))) ei.hover_bottom = 0;
+
+ if (elm_widget_mirrored_get(wd->anchor_hover.hover))
+ { /* Swap right and left because they switch sides in RTL */
+ Eina_Bool tmp = ei.hover_left;
+ ei.hover_left = ei.hover_right;
+ ei.hover_right = tmp;
+ }
+
+ evas_object_smart_callback_call(data, SIG_ANCHOR_HOVER_OPENED, &ei);
+ evas_object_smart_callback_add(wd->anchor_hover.hover, "clicked", _anchor_hover_clicked, data);
+ evas_object_show(wd->anchor_hover.hover);
+ }
+ /* END - ANCHOR HOVER */
++>>>>>>> remotes/origin/upstream
++<<<<<<< HEAD
+typedef enum
+{
+ ELM_TEXT_FORMAT_PLAIN_UTF8,
+ ELM_TEXT_FORMAT_MARKUP_UTF8
+} Elm_Text_Format;
+
+/**
+ * Line wrapping types.
+ */
+typedef enum
+{
+ ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
+ ELM_WRAP_CHAR, /**< Char wrap - wrap between characters */
+ ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
+ ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
+ ELM_WRAP_LAST
+} Elm_Wrap_Type; /**< Type of word or character wrapping to use */
+
+typedef enum
+{
+ ELM_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
+ ELM_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
+ ELM_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
+ ELM_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
+ ELM_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
+ ELM_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
+ ELM_INPUT_PANEL_LAYOUT_INVALID, /**< Never use this */
+ ELM_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout */
+ ELM_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout */
+ ELM_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. */
+} Elm_Input_Panel_Layout; /**< Type of input panel (virtual keyboard) to use - this is a hint and may not provide exactly what is desired. */
+
+typedef enum
+{
+ ELM_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */
+ ELM_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */
+} Elm_Input_Panel_Lang;
+
+typedef enum
+{
+ ELM_AUTOCAPITAL_TYPE_NONE, /**< No auto-capitalization when typing */
+ ELM_AUTOCAPITAL_TYPE_WORD, /**< Autocapitalize each word typed */
+ ELM_AUTOCAPITAL_TYPE_SENTENCE, /**< Autocapitalize the start of each sentence */
+ ELM_AUTOCAPITAL_TYPE_ALLCHARACTER, /**< Autocapitalize all letters */
+} Elm_Autocapital_Type; /**< Choose method of auto-capitalization */
+
+typedef enum
+{
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH,
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND
+} Elm_Input_Panel_Return_Key_Type;
+
+/**
+ * @enum _Elm_CNP_Mode
+ * @typedef Elm_CNP_Mode
+ * Enum of entry's copy & paste policy.
+ *
+ * @see elm_entry_cnp_mode_set()
+ * @see elm_entry_cnp_mode_get()
+ */
+ typedef enum _Elm_CNP_Mode {
+ ELM_CNP_MODE_MARKUP = 0, /**< copy & paste text with markup tag */
+ ELM_CNP_MODE_NO_IMAGE = 1, /**< copy & paste text without item(image) tag */
+ ELM_CNP_MODE_PLAINTEXT = 2 /**< copy & paste text without markup tag */
+ } Elm_CNP_Mode;
+
++=======
++>>>>>>> remotes/origin/upstream
/**
* @defgroup Entry Entry
*
*
* An entry is a convenience widget which shows a box that the user can
* enter text into. Entries by default don't scroll, so they grow to
++<<<<<<< HEAD
+ * accomodate the entire text, resizing the parent window as needed. This
++=======
+ * accommodate the entire text, resizing the parent window as needed. This
++>>>>>>> remotes/origin/upstream
* can be changed with the elm_entry_scrollable_set() function.
*
* They can also be single line or multi line (the default) and when set
* to multi line mode they support text wrapping in any of the modes
++<<<<<<< HEAD
+ * indicated by Elm_Wrap_Type.
+ *
+ * Other features include password mode, filtering of inserted text with
+ * elm_entry_text_filter_append() and related functions, inline "items" and
++=======
+ * indicated by #Elm_Wrap_Type.
+ *
+ * Other features include password mode, filtering of inserted text with
+ * elm_entry_markup_filter_append() and related functions, inline "items" and
++>>>>>>> remotes/origin/upstream
* formatted markup text.
*
* @section entry-markup Formatted text
* enclosed text.
* @li \<b\>...\</b\>: Sets the @b bold style for the enclosed text.
* @li \<link\>...\</link\>: Underlines the enclosed text.
++<<<<<<< HEAD
+ * @li \<hilight\>...\</hilight\>: Hilights the enclosed text.
++=======
+ * @li \<hilight\>...\</hilight\>: Highlights the enclosed text.
++>>>>>>> remotes/origin/upstream
*
* @section entry-special Special markups
*
* Besides those used to format text, entries support two special markup
++<<<<<<< HEAD
+ * tags used to insert clickable portions of text or items inlined within
++=======
+ * tags used to insert click-able portions of text or items inlined within
++>>>>>>> remotes/origin/upstream
* the text.
*
* @subsection entry-anchors Anchors
* @li relsize: Size is adjusted for the item to fit within the current
* line height.
*
++<<<<<<< HEAD
+ * Besides their size, items are specificed a @c vsize value that affects
++=======
+ * Besides their size, items are specified a @c vsize value that affects
++>>>>>>> remotes/origin/upstream
* how their final size and position are calculated. The possible values
* are:
* @li ascent: Item will be placed within the line's baseline and its
*
* @section entry-files Loading and saving files
*
++<<<<<<< HEAD
+ * Entries have convinience functions to load text from a file and save
++=======
+ * Entries have convenience functions to load text from a file and save
++>>>>>>> remotes/origin/upstream
* changes back to it after a short delay. The automatic saving is enabled
* by default, but can be disabled with elm_entry_autosave_set() and files
* can be loaded directly as plain text or have any markup in them
* @li "preedit,changed": The preedit string has changed.
* @li "language,changed": Program language changed.
*
++<<<<<<< HEAD
+ * Default contents parts of the entry items that you can use for are:
++=======
+ * Default content parts of the entry items that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon in the entry
* @li "end" - A content in the end of the entry
*
*/
/**
++<<<<<<< HEAD
++=======
+ * @enum _Elm_Text_Format
+ * @typedef Elm_Text_Format
+ *
+ * Text Format types.
+ *
+ * @see elm_entry_file_set()
+ */
+ typedef enum
+ {
+ ELM_TEXT_FORMAT_PLAIN_UTF8, /**< Plain UTF8 type */
+ ELM_TEXT_FORMAT_MARKUP_UTF8 /**< Markup UTF8 type */
+ } Elm_Text_Format;
+
+ /**
+ * @enum _Elm_Wrap_Type
+ * @typedef Elm_Wrap_Type
+ *
+ * Line wrapping types.
+ *
+ * @see elm_entry_line_wrap_set()
+ */
+ typedef enum
+ {
+ ELM_WRAP_NONE = 0, /**< No wrap - value is zero */
+ ELM_WRAP_CHAR, /**< Char wrap - wrap between characters */
+ ELM_WRAP_WORD, /**< Word wrap - wrap in allowed wrapping points (as defined in the unicode standard) */
+ ELM_WRAP_MIXED, /**< Mixed wrap - Word wrap, and if that fails, char wrap. */
+ ELM_WRAP_LAST
+ } Elm_Wrap_Type; /**< Type of word or character wrapping to use */
+
+ /**
+ * @enum _Elm_Input_Panel_Layout
+ * @typedef Elm_Input_Panel_Layout
+ *
+ * Input panel (virtual keyboard) layout types.
+ *
+ * @see elm_entry_input_panel_layout_set()
+ */
+ typedef enum
+ {
+ ELM_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
+ ELM_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
+ ELM_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
+ ELM_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */
+ ELM_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
+ ELM_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
+ ELM_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
+ ELM_INPUT_PANEL_LAYOUT_INVALID, /**< Never use this */
+ ELM_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout */
+ ELM_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout */
+ ELM_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. */
+ } Elm_Input_Panel_Layout; /**< Type of input panel (virtual keyboard) to use - this is a hint and may not provide exactly what is desired. */
+
+ /**
+ * @enum _Elm_Input_Panel_Lang
+ * @typedef Elm_Input_Panel_Lang
+ *
+ * Input panel (virtual keyboard) language modes.
+ *
+ * @see elm_entry_input_panel_language_set()
+ */
+ typedef enum
+ {
+ ELM_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */
+ ELM_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */
+ } Elm_Input_Panel_Lang;
+
+ /**
+ * @enum _Elm_Autocapital_Type
+ * @typedef Elm_Autocapital_Type
+ *
+ * Autocapitalization Types.
+ *
+ * @see elm_entry_autocapital_type_set()
+ */
+ typedef enum
+ {
+ ELM_AUTOCAPITAL_TYPE_NONE, /**< No auto-capitalization when typing */
+ ELM_AUTOCAPITAL_TYPE_WORD, /**< Autocapitalize each word typed */
+ ELM_AUTOCAPITAL_TYPE_SENTENCE, /**< Autocapitalize the start of each sentence */
+ ELM_AUTOCAPITAL_TYPE_ALLCHARACTER, /**< Autocapitalize all letters */
+ } Elm_Autocapital_Type; /**< Choose method of auto-capitalization */
+
+ /**
+ * @enum _Elm_Input_Panel_Return_Key_Type
+ * @typedef Elm_Input_Panel_Return_Key_Type
+ *
+ * "Return" Key types on the input panel (virtual keyboard).
+ *
+ * @see elm_entry_input_panel_return_key_type_set()
+ */
+ typedef enum
+ {
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search string or magnifier icon */
+ ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND /**< Send */
+ } Elm_Input_Panel_Return_Key_Type;
+
+ /**
++>>>>>>> remotes/origin/upstream
* @typedef Elm_Entry_Anchor_Info
*
* The info sent in the callback for the "anchor,clicked" signals emitted
};
/**
++<<<<<<< HEAD
++=======
+ * @typedef Elm_Entry_Anchor_Hover_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchor_Hover widget.
+ */
+ typedef struct _Elm_Entry_Anchor_Hover_Info Elm_Entry_Anchor_Hover_Info;
+
+ /**
+ * @struct _Elm_Entry_Anchor_Hover_Info
+ *
+ * The info sent in the callback for "anchor,clicked" signals emitted by
+ * the Anchor_Hover widget.
+ */
+ struct _Elm_Entry_Anchor_Hover_Info
+ {
+ const Elm_Entry_Anchor_Info *anchor_info; /**< The actual anchor info. */
+ Evas_Object *hover; /**< The hover object to use for the popup */
+ struct
+ {
+ Evas_Coord x, y, w, h;
+ } hover_parent; /**< Geometry of the object used as parent by the
+ hover */
+ Eina_Bool hover_left : 1; /**< Hint indicating if there's space
+ for content on the left side of
+ the hover. Before calling the
+ callback, the widget will make the
+ necessary calculations to check
+ which sides are fit to be set with
+ content, based on the position the
+ hover is activated and its distance
+ to the edges of its parent object
+ */
+ Eina_Bool hover_right : 1; /**< Hint indicating content fits on
+ the right side of the hover.
+ See @ref hover_left */
+ Eina_Bool hover_top : 1; /**< Hint indicating content fits on top
+ of the hover. See @ref hover_left */
+ Eina_Bool hover_bottom : 1; /**< Hint indicating content fits
+ below the hover. See @ref
+ hover_left */
+ };
+
+ /**
+ * @typedef Elm_Entry_Item_Provider_Cb
+ * This callback type is used to provide items.
+ * If it returns an object handle other than NULL (it should create an
+ * object to do this), then this object is used to replace the current item.
+ * If not the next provider is called until one provides an item object, or the
+ * default provider in entry does.
+ * @param data The data specified as the last param when adding the provider
+ * @param entry The entry object
+ * @param text A pointer to the item href string in the text
+ * @return The object to be placed in the entry like an icon, or other element
+ * @see elm_entry_item_provider_append
+ * @see elm_entry_item_provider_prepend
+ * @see elm_entry_item_provider_remove
+ */
+ typedef Evas_Object * (*Elm_Entry_Item_Provider_Cb)(void *data, Evas_Object * entry, const char *item);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @typedef Elm_Entry_Filter_Cb
* This callback type is used by entry filters to modify text.
* @param data The data specified as the last param when adding the filter
* @param entry The entry object
++<<<<<<< HEAD
+ * @param text A pointer to the location of the text being filtered. This data can be modified,
+ * but any additional allocations must be managed by the user.
+ * @see elm_entry_text_filter_append
+ * @see elm_entry_text_filter_prepend
++=======
+ * @param text A pointer to the location of the text being filtered. The type of text is always markup. This data can be modified, but any additional allocations must be managed by the user.
+ * @see elm_entry_markup_filter_append
+ * @see elm_entry_markup_filter_prepend
+ * @see elm_entry_markup_filter_remove
++>>>>>>> remotes/origin/upstream
*/
typedef void (*Elm_Entry_Filter_Cb)(void *data, Evas_Object *entry, char **text);
* @param obj The entry object
* @param entry The text to be displayed
*
++<<<<<<< HEAD
+ * @see elm_entry_text_filter_append()
++=======
+ * @see elm_entry_markup_filter_append()
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_entry_entry_append(Evas_Object *obj, const char *entry);
* @param obj The entry object
* @param entry The text to insert
*
++<<<<<<< HEAD
+ * @see elm_entry_text_filter_append()
++=======
+ * @see elm_entry_markup_filter_append()
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_entry_entry_insert(Evas_Object *obj, const char *entry);
EAPI Eina_Bool elm_entry_context_menu_disabled_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * This disables the entry's magnifer feature.
+ *
+ * @param obj The entry object
+ * @param disabled If true, the magnifier is not displayed
+ */
+
+EAPI void elm_entry_magnifier_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+/**
+ * This returns whether the entry's magnifier feature is disabled.
+ *
+ * @param obj The entry object
+ * @return If true, the feature is disabled
+ */
+EAPI Eina_Bool elm_entry_magnifier_disabled_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* This appends a custom item provider to the list for that entry
*
* This appends the given callback. The list is walked from beginning to end
*
* @see @ref entry-items
*/
++<<<<<<< HEAD
+EAPI void elm_entry_item_provider_append(Evas_Object *obj, Evas_Object * (*func)(void *data, Evas_Object * entry, const char *item), void *data);
++=======
+ EAPI void elm_entry_item_provider_append(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* This prepends a custom item provider to the list for that entry
* @param func The function called to provide the item object
* @param data The data passed to @p func
*/
++<<<<<<< HEAD
+EAPI void elm_entry_item_provider_prepend(Evas_Object *obj, Evas_Object * (*func)(void *data, Evas_Object * entry, const char *item), void *data);
++=======
+ EAPI void elm_entry_item_provider_prepend(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* This removes a custom item provider to the list for that entry
* @param func The function called to provide the item object
* @param data The data passed to @p func
*/
++<<<<<<< HEAD
+EAPI void elm_entry_item_provider_remove(Evas_Object *obj, Evas_Object * (*func)(void *data, Evas_Object * entry, const char *item), void *data);
+
+/**
+ * Append a filter function for text inserted in the entry
+ *
+ * Append the given callback to the list. This functions will be called
+ * whenever any text is inserted into the entry, with the text to be inserted
+ * as a parameter. The callback function is free to alter the text in any way
+ * it wants, but it must remember to free the given pointer and update it.
++=======
+ EAPI void elm_entry_item_provider_remove(Evas_Object *obj, Elm_Entry_Item_Provider_Cb func, void *data);
+
+ /**
+ * Append a markup filter function for text inserted in the entry
+ *
+ * Append the given callback to the list. This functions will be called
+ * whenever any text is inserted into the entry, with the text to be inserted
+ * as a parameter. The type of given text is always markup.
+ * The callback function is free to alter the text in any way it wants, but
+ * it must remember to free the given pointer and update it.
++>>>>>>> remotes/origin/upstream
* If the new text is to be discarded, the function can free it and set its
* text parameter to NULL. This will also prevent any following filters from
* being called.
* @param func The function to use as text filter
* @param data User data to pass to @p func
*/
++<<<<<<< HEAD
+EAPI void elm_entry_text_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+/**
+ * Prepend a filter function for text insdrted in the entry
+ *
+ * Prepend the given callback to the list. See elm_entry_text_filter_append()
++=======
+ EAPI void elm_entry_markup_filter_append(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+ /**
+ * Prepend a markup filter function for text inserted in the entry
+ *
+ * Prepend the given callback to the list. See elm_entry_markup_filter_append()
++>>>>>>> remotes/origin/upstream
* for more information
*
* @param obj The entry object
* @param func The function to use as text filter
* @param data User data to pass to @p func
*/
++<<<<<<< HEAD
+EAPI void elm_entry_text_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+/**
+ * Remove a filter from the list
+ *
+ * Removes the given callback from the filter list. See
+ * elm_entry_text_filter_append() for more information.
++=======
+ EAPI void elm_entry_markup_filter_prepend(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
+
+ /**
+ * Remove a markup filter from the list
+ *
+ * Removes the given callback from the filter list. See
+ * elm_entry_markup_filter_append() for more information.
++>>>>>>> remotes/origin/upstream
*
* @param obj The entry object
* @param func The filter function to remove
* @param data The user data passed when adding the function
*/
++<<<<<<< HEAD
+EAPI void elm_entry_text_filter_remove(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
++=======
+ EAPI void elm_entry_markup_filter_remove(Evas_Object *obj, Elm_Entry_Filter_Cb func, void *data);
++>>>>>>> remotes/origin/upstream
/**
* This converts a markup (HTML-like) string into UTF-8.
* @param obj The entry object
* @param file The path to the file to load and save
* @param format The file format
++<<<<<<< HEAD
+ */
+EAPI void elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format);
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_entry_file_set(Evas_Object *obj, const char *file, Elm_Text_Format format);
++>>>>>>> remotes/origin/upstream
/**
* Gets the file being edited by the entry.
EAPI Eina_Bool elm_entry_autosave_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Control pasting of text and images for the widget.
+ *
+ * Normally the entry allows both text and images to be pasted.
+ * By setting textonly to be ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past.
+ * By setting textonly to be ELM_CNP_MODE_PLAINTEXT, this remove all tags in text .
+ *
+ * @note this only changes the behaviour of text.
+ *
+ * @param obj The entry object
+ * @param mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP,
+ * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+ */
+EAPI void elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode);
+
+/**
+ * Getting elm_entry text paste/drop mode.
+ *
+ * Normally the entry allows both text and images to be pasted.
+ * This gets the copy & paste mode of the entry.
+ *
+ * @param obj The entry object
+ * @return mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP,
+ * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+ */
+EAPI Elm_CNP_Mode elm_entry_cnp_mode_get(const Evas_Object *obj);
+
+/**
+ * Control pasting of text and images for the widget.
+ *
+ * Normally the entry allows both text and images to be pasted. By setting
+ * textonly to be true, this prevents images from being pasted.
+ *
+ * Note this only changes the behaviour of text.
+ *
+ * @param obj The entry object
+ * @param textonly paste mode - EINA_TRUE is text only, EINA_FALSE is
+ * text+image+other.
+ */
+
+/**
+ * Control pasting of text and images for the widget.
+ *
+ * Normally the entry allows both text and images to be pasted. By setting
+ * textonly to be true, this prevents images from being pasted.
+ *
+ * Note this only changes the behaviour of text.
+ *
+ * @param obj The entry object
+ * @param textonly paste mode - EINA_TRUE is text only, EINA_FALSE is
+ * text+image+other.
+ */
+EAPI void elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly);
+
+/**
+ * Getting elm_entry text paste/drop mode.
+ *
+ * In textonly mode, only text may be pasted or dropped into the widget.
+ *
+ * @param obj The entry object
+ * @return If the widget only accepts text from pastes.
+ */
+EAPI Eina_Bool elm_entry_cnp_textonly_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Enable or disable scrolling in entry
*
* Normally the entry is not scrollable unless you enable it with this call.
EAPI Eina_Bool elm_entry_scrollable_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Sets the visibility of the left-side widget of the scrolled entry,
+ * set by elm_entry_icon_set().
+ *
+ * @param obj The scrolled entry object
++=======
+ * Sets the visibility of the left-side widget of the entry,
+ * set by elm_entry_icon_set().
+ *
+ * @param obj The entry object
++>>>>>>> remotes/origin/upstream
* @param setting EINA_TRUE if the object should be displayed,
* EINA_FALSE if not.
*/
EAPI void elm_entry_icon_visible_set(Evas_Object *obj, Eina_Bool setting);
/**
++<<<<<<< HEAD
+ * Sets the visibility of the end widget of the scrolled entry, set by
+ * elm_object_part_content_set(ent, "end", content).
+ *
+ * @param obj The scrolled entry object
++=======
+ * Sets the visibility of the end widget of the entry, set by
+ * elm_object_part_content_set(ent, "end", content).
+ *
+ * @param obj The entry object
++>>>>>>> remotes/origin/upstream
* @param setting EINA_TRUE if the object should be displayed,
* EINA_FALSE if not.
*/
EAPI void elm_entry_end_visible_set(Evas_Object *obj, Eina_Bool setting);
/**
++<<<<<<< HEAD
+ * This sets the scrolled entry's scrollbar policy (ie. enabling/disabling
++=======
+ * This sets the entry's scrollbar policy (i.e. enabling/disabling
++>>>>>>> remotes/origin/upstream
* them).
*
* Setting an entry to single-line mode with elm_entry_single_line_set()
* will automatically disable the display of scrollbars when the entry
* moves inside its scroller.
*
++<<<<<<< HEAD
+ * @param obj The scrolled entry object
++=======
+ * @param obj The entry object
++>>>>>>> remotes/origin/upstream
* @param h The horizontal scrollbar policy to apply
* @param v The vertical scrollbar policy to apply
*/
* This function sets whether the entry will bounce when scrolling reaches
* the end of the contained entry.
*
++<<<<<<< HEAD
+ * @param obj The scrolled entry object
++=======
+ * @param obj The entry object
++>>>>>>> remotes/origin/upstream
* @param h_bounce The horizontal bounce state
* @param v_bounce The vertical bounce state
*/
* Show the input panel (virtual keyboard) based on the input panel property of entry such as layout, autocapital types, and so on.
*
* Note that input panel is shown or hidden automatically according to the focus state of entry widget.
++<<<<<<< HEAD
+ * This API can be used in the case of manually controling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE)
++=======
+ * This API can be used in the case of manually controlling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE).
++>>>>>>> remotes/origin/upstream
*
* @param obj The entry object
*/
* Hide the input panel (virtual keyboard).
*
* Note that input panel is shown or hidden automatically according to the focus state of entry widget.
++<<<<<<< HEAD
+ * This API can be used in the case of manually controling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE)
++=======
+ * This API can be used in the case of manually controlling by using elm_entry_input_panel_enabled_set(en, EINA_FALSE)
++>>>>>>> remotes/origin/upstream
*
* @param obj The entry object
*/
/**
* Set whether the return key on the input panel is disabled automatically when entry has no text.
*
++<<<<<<< HEAD
+ * If @p on is EINA_TRUE, The return key on input panel is disabled when the entry has no text.
+ * The return Key on the input panel is automatically enabled when the entry has text.
+ * The default value is EINA_FALSE.
+ *
+ * @param obj The entry object
+ * @param on If @p on is EINA_TRUE, the return key is automatically disabled when the entry has no text.
+ */
+EAPI void elm_entry_input_panel_return_key_autoenabled_set(Evas_Object *obj, Eina_Bool on);
++=======
+ * If @p enabled is EINA_TRUE, The return key on input panel is disabled when the entry has no text.
+ * The return key on the input panel is automatically enabled when the entry has text.
+ * The default value is EINA_FALSE.
+ *
+ * @param obj The entry object
+ * @param enabled If @p enabled is EINA_TRUE, the return key is automatically disabled when the entry has no text.
+ */
+ EAPI void elm_entry_input_panel_return_key_autoenabled_set(Evas_Object *obj, Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* Reset the input method context of the entry if needed.
*
* Add this filter to an entry to limit the characters that it will accept
* based the the contents of the provided #Elm_Entry_Filter_Limit_Size.
++<<<<<<< HEAD
+ * The funtion works on the UTF-8 representation of the string, converting
++=======
+ * The function works on the UTF-8 representation of the string, converting
++>>>>>>> remotes/origin/upstream
* it from the set markup, thus not accounting for any format in it.
*
* The user must create an #Elm_Entry_Filter_Limit_Size structure and pass
* it as data when setting the filter. In it, it's possible to set limits
* by character count or bytes (any of them is disabled if 0), and both can
* be set at the same time. In that case, it first checks for characters,
++<<<<<<< HEAD
+ * then bytes.
++=======
+ * then bytes. The #Elm_Entry_Filter_Limit_Size structure must be alive and
+ * valid for as long as the entry is alive AND the elm_entry_filter_limit_size
+ * filter is set.
++>>>>>>> remotes/origin/upstream
*
* The function will cut the inserted text in order to allow only the first
* number of characters that are still allowed. The cut is made in
* Add this filter to an entry to restrict the set of accepted characters
* based on the sets in the provided #Elm_Entry_Filter_Accept_Set.
* This structure contains both accepted and rejected sets, but they are
++<<<<<<< HEAD
+ * mutually exclusive.
++=======
+ * mutually exclusive. This structure must be available for as long as
+ * the entry is alive AND the elm_entry_filter_accept_set is being used.
++>>>>>>> remotes/origin/upstream
*
* The @c accepted set takes preference, so if it is set, the filter will
* only work based on the accepted characters, ignoring anything in the
*/
EAPI void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text);
++<<<<<<< HEAD
+EAPI Ecore_IMF_Context *elm_entry_imf_context_get(Evas_Object *obj);
+EAPI void elm_entry_magnifier_type_set(Evas_Object *obj, int type);
++=======
+ /**
+ * Returns the input method context of the entry.
+ *
+ * This function exposes the internal input method context.
+ *
+ * IMPORTANT: Many functions may change (i.e delete and create a new one)
+ * the internal input method context. Do NOT cache the returned object.
+ *
+ * @param obj The entry object
+ * @return The input method context (Ecore_IMF_Context *) in entry.
+ */
+ EAPI void *elm_entry_imf_context_get(Evas_Object *obj);
+
+ /**
+ * @enum _Elm_Cnp_Mode
+ * @typedef Elm_Cnp_Mode
+ * Enum of entry's copy & paste policy.
+ *
+ * @see elm_entry_cnp_mode_set()
+ * @see elm_entry_cnp_mode_get()
+ */
+ typedef enum _Elm_Cnp_Mode {
+ ELM_CNP_MODE_MARKUP, /**< copy & paste text with markup tag */
+ ELM_CNP_MODE_NO_IMAGE, /**< copy & paste text without item(image) tag */
+ ELM_CNP_MODE_PLAINTEXT /**< copy & paste text without markup tag */
+ } Elm_Cnp_Mode;
+
+ /**
+ * Control pasting of text and images for the widget.
+ *
+ * Normally the entry allows both text and images to be pasted.
+ * By setting cnp_mode to be ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past.
+ * By setting cnp_mode to be ELM_CNP_MODE_PLAINTEXT, this remove all tags in text .
+ *
+ * @note this only changes the behaviour of text.
+ *
+ * @param obj The entry object
+ * @param mode One of #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP,
+ * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+ */
+ EAPI void elm_entry_cnp_mode_set(Evas_Object *obj, Elm_Cnp_Mode cnp_mode);
+
+ /**
+ * Getting elm_entry text paste/drop mode.
+ *
+ * Normally the entry allows both text and images to be pasted.
+ * This gets the copy & paste mode of the entry.
+ *
+ * @param obj The entry object
+ * @return mode One of #Elm_Cnp_Mode: #ELM_CNP_MODE_MARKUP,
+ * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
+ */
+ EAPI Elm_Cnp_Mode elm_entry_cnp_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set the parent of the hover popup
+ *
+ * Sets the parent object to use by the hover created by the entry
+ * when an anchor is clicked. See @ref Hover for more details on this.
+ *
+ * @param obj The entry object
+ * @param parent The object to use as parent for the hover
+ */
+ EAPI void elm_entry_anchor_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
+
+ /**
+ * Get the parent of the hover popup
+ *
+ * Get the object used as parent for the hover created by the entry
+ * widget. See @ref Hover for more details on this.
+ * If no parent is set, the same entry object will be used.
+ *
+ * @param obj The entry object
+ * @return The object used as parent for the hover, NULL if none is set.
+ */
+ EAPI Evas_Object *elm_entry_anchor_hover_parent_get(const Evas_Object *obj);
+
+ /**
+ * Set the style that the hover should use
+ *
+ * When creating the popup hover, entry will request that it's
+ * themed according to @p style.
+ *
+ * Setting style no NULL means disabling automatic hover.
+ *
+ * @param obj The entry object
+ * @param style The style to use for the underlying hover
+ *
+ * @see elm_object_style_set()
+ */
+ EAPI void elm_entry_anchor_hover_style_set(Evas_Object *obj, const char *style);
+
+ /**
+ * Get the style that the hover should use
+ *
+ * Get the style, the hover created by entry will use.
+ *
+ * @param obj The entry object
+ * @return The style to use by the hover. NULL means the default is used.
+ *
+ * @see elm_object_style_set()
+ */
+ EAPI const char *elm_entry_anchor_hover_style_get(const Evas_Object *obj);
+
+ /**
+ * Ends the hover popup in the entry
+ *
+ * When an anchor is clicked, the entry widget will create a hover
+ * object to use as a popup with user provided content. This function
+ * terminates this popup, returning the entry to its normal state.
+ *
+ * @param obj The entry object
+ */
+ EAPI void elm_entry_anchor_hover_end(Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
static void _child_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__);
static void _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content);
static Evas_Object *_content_get_hook(const Evas_Object *obj, const char *part);
++<<<<<<< HEAD
++=======
+ static Evas_Object *_content_unset_hook(Evas_Object *obj, const char *part);
++>>>>>>> remotes/origin/upstream
static const char SIG_REALIZE[] = "realize";
static const char SIG_UNREALIZE[] = "unrealize";
if (evas_object_smart_data_get(wd->content))
evas_object_smart_calculate(wd->content);
}
++<<<<<<< HEAD
+ //wd->last_calc_count =
+ //evas_smart_objects_calculate_count_get(evas_object_evas_get(obj));
++=======
+ wd->last_calc_count =
+ evas_smart_objects_calculate_count_get(evas_object_evas_get(obj));
++>>>>>>> remotes/origin/upstream
}
}
else
{
if (wd->content)
{
++<<<<<<< HEAD
+ //if (wd->last_calc_count !=
+ //evas_smart_objects_calculate_count_get(evas_object_evas_get(obj)))
++=======
+ if (wd->last_calc_count !=
+ evas_smart_objects_calculate_count_get(evas_object_evas_get(obj)))
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(obj, SIG_UNREALIZE, NULL);
}
}
// printf("FAC-- = %i\n", fac);
}
++<<<<<<< HEAD
++=======
+ static Evas_Object *
+ _content_unset_hook(Evas_Object *obj, const char *part)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd;
+ Evas_Object *content;
+
+ if (part && strcmp(part, "default")) return NULL;
+ wd = elm_widget_data_get(obj);
+ if (!wd || !wd->content) return NULL;
+
+ content = wd->content;
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _child_change, obj);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_DEL,
+ _child_del, obj);
+ wd->content = NULL;
+ fac--;
+ // printf("FAC-- = %i\n", fac);
+ return content;
+ }
+
++>>>>>>> remotes/origin/upstream
static void
_content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd;
++<<<<<<< HEAD
++=======
+ Evas_Object *prev_content;
++>>>>>>> remotes/origin/upstream
if (part && strcmp(part, "default")) return;
wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->content == content) return;
++<<<<<<< HEAD
+ if (wd->content)
+ {
+ Evas_Object *o = wd->content;
+
+ evas_object_event_callback_del_full(wd->content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _child_change, obj);
+ evas_object_event_callback_del_full(wd->content,
+ EVAS_CALLBACK_DEL,
+ _child_del, obj);
+ wd->content = NULL;
+ evas_object_del(o);
+ fac--;
+// printf("FAC-- = %i\n", fac);
+ }
+ wd->content = content;
+ if (wd->content)
+ {
+ fac++;
+// printf("FAC++ = %i\n", fac);
+ elm_widget_resize_object_set(obj, wd->content);
+ evas_object_event_callback_add(wd->content, EVAS_CALLBACK_DEL,
+ _child_del, obj);
+ evas_object_event_callback_add(wd->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _child_change, obj);
+ wd->eval = EINA_TRUE;
+ wd->szeval = EINA_TRUE;
+ evas_object_smart_changed(obj);
+ }
++=======
+
+ prev_content = _content_unset_hook(obj, part);
+ if (prev_content) evas_object_del(prev_content);
+
+ wd->content = content;
+ if (!content) return;
+
+ elm_widget_resize_object_set(obj, content);
+ evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, _child_del, obj);
+ evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _child_change, obj);
+ wd->eval = EINA_TRUE;
+ wd->szeval = EINA_TRUE;
+ evas_object_smart_changed(obj);
+ fac++;
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
elm_widget_focus_next_hook_set(obj, _focus_next_hook);
elm_widget_content_set_hook_set(obj, _content_set_hook);
elm_widget_content_get_hook_set(obj, _content_get_hook);
++<<<<<<< HEAD
++=======
+ elm_widget_content_unset_hook_set(obj, _content_unset_hook);
++>>>>>>> remotes/origin/upstream
elm_widget_can_focus_set(obj, EINA_FALSE);
elm_widget_changed_hook_set(obj, _changed);
}
EAPI void
++<<<<<<< HEAD
+elm_factory_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ _content_set_hook(obj, NULL, content);
+}
+
+EAPI Evas_Object *
+elm_factory_content_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI void
++=======
++>>>>>>> remotes/origin/upstream
elm_factory_maxmin_mode_set(Evas_Object *obj, Eina_Bool enabled)
{
ELM_CHECK_WIDTYPE(obj, widtype);
++<<<<<<< HEAD
++=======
+ /* this api is currently disabled due to being incomplete. you cannot
+ * use it as it is not compiled in */
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *elm_factory_add(Evas_Object *parent);
EAPI void elm_factory_maxmin_mode_set(Evas_Object *obj, Eina_Bool enabled);
EAPI Eina_Bool elm_factory_maxmin_mode_get(const Evas_Object *obj);
*/
/**
++<<<<<<< HEAD
+ * Get the configured "finger size"
+ *
+ * @return The finger size
+ *
+ * This gets the globally configured finger size, <b>in pixels</b>
+ *
+ * @ingroup Fingers
+ */
+EAPI Evas_Coord elm_finger_size_get(void);
+
+/**
+ * Set the configured finger size
+ *
+ * This sets the globally configured finger size in pixels
+ *
+ * @param size The finger size
+ * @ingroup Fingers
+ */
+EAPI void elm_finger_size_set(Evas_Coord size);
+
+/**
+ * Set the configured finger size for all applications on the display
+ *
+ * This sets the globally configured finger size in pixels for all
+ * applications on the display
+ *
+ * @param size The finger size
+ * @ingroup Fingers
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_finger_size_all_set(Evas_Coord size);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Adjust size of an element for finger usage.
*
* @param times_w How many fingers should fit horizontally
* accommodate it. On return the @p w and @p h sizes pointed to by
* these parameters will be modified, on those conditions.
*
++<<<<<<< HEAD
+ * @note This is kind of a low level Elementary call, most useful
++=======
+ * @note This is kind of low level Elementary call, most useful
++>>>>>>> remotes/origin/upstream
* on size evaluation times for widgets. An external user wouldn't
* be calling, most of the time.
*
}
static Eina_Bool
++<<<<<<< HEAD
+_elm_flip_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd)
+ return EINA_FALSE;
++=======
+ _elm_flip_focus_next_hook(const Evas_Object *obj,
+ Elm_Focus_Direction dir, Evas_Object **next)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
/* Try Focus cycle in subitem */
if (wd->state)
return elm_widget_focus_next_get(wd->front.content, dir, next);
else
return elm_widget_focus_next_get(wd->back.content, dir, next);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
}
static void
if (!wd) return;
if (sub == wd->front.content)
{
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++=======
+ evas_object_event_callback_del_full(sub,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++>>>>>>> remotes/origin/upstream
_changed_size_hints, obj);
wd->front.content = NULL;
evas_object_hide(wd->front.clip);
}
else if (sub == wd->back.content)
{
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++=======
+ evas_object_event_callback_del_full(sub,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++>>>>>>> remotes/origin/upstream
_changed_size_hints, obj);
wd->back.content = NULL;
evas_object_hide(wd->back.clip);
elm_widget_sub_object_add(st->obj, sl->obj);
evas_object_clip_set(sl->obj, evas_object_clip_get(st->obj));
evas_object_smart_member_add(sl->obj, st->obj);
++<<<<<<< HEAD
+ evas_object_image_smooth_scale_set(sl->obj, 0);
+ evas_object_pass_events_set(sl->obj, 1);
++=======
+ evas_object_image_smooth_scale_set(sl->obj, EINA_FALSE);
+ evas_object_pass_events_set(sl->obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_image_source_set(sl->obj, obj);
return sl;
}
}
static void
++<<<<<<< HEAD
+_slice_apply(Widget_Data *st, Slice *sl,
+ Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__, Evas_Coord w, Evas_Coord h __UNUSED__,
++=======
+ _slice_apply(Widget_Data *st, Slice *sl, Evas_Coord x __UNUSED__,
+ Evas_Coord y __UNUSED__, Evas_Coord w, Evas_Coord h __UNUSED__,
++>>>>>>> remotes/origin/upstream
Evas_Coord ox, Evas_Coord oy, Evas_Coord ow, Evas_Coord oh)
{
Evas_Map *m;
m = evas_map_new(4);
if (!m) return;
++<<<<<<< HEAD
+ evas_map_smooth_set(m, 0);
++=======
+ evas_map_smooth_set(m, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
for (i = 0; i < 4; i++)
{
evas_map_point_color_set(m, i, 255, 255, 255, 255);
if (st->dir == 0)
{
int p[4] = { 0, 1, 2, 3 };
++<<<<<<< HEAD
+ evas_map_point_coord_set(m, i, ox + sl->x[p[i]], oy + sl->y[p[i]], sl->z[p[i]]);
++=======
+ evas_map_point_coord_set(m, i, ox + sl->x[p[i]], oy + sl->y[p[i]],
+ sl->z[p[i]]);
++>>>>>>> remotes/origin/upstream
evas_map_point_image_uv_set(m, i, sl->u[p[i]] , sl->v[p[i]]);
}
else if (st->dir == 1)
{
int p[4] = { 1, 0, 3, 2 };
++<<<<<<< HEAD
+ evas_map_point_coord_set(m, i, ox + (w - sl->x[p[i]]), oy + sl->y[p[i]], sl->z[p[i]]);
+ evas_map_point_image_uv_set(m, i, ow - sl->u[p[i]] , sl->v[p[i]]);
++=======
+ evas_map_point_coord_set(m, i, ox + (w - sl->x[p[i]]),
+ oy + sl->y[p[i]], sl->z[p[i]]);
+ evas_map_point_image_uv_set(m, i, ow - sl->u[p[i]], sl->v[p[i]]);
++>>>>>>> remotes/origin/upstream
}
else if (st->dir == 2)
{
int p[4] = { 1, 0, 3, 2 };
++<<<<<<< HEAD
+ evas_map_point_coord_set(m, i, ox + sl->y[p[i]], oy + sl->x[p[i]], sl->z[p[i]]);
++=======
+ evas_map_point_coord_set(m, i, ox + sl->y[p[i]], oy + sl->x[p[i]],
+ sl->z[p[i]]);
++>>>>>>> remotes/origin/upstream
evas_map_point_image_uv_set(m, i, sl->v[p[i]] , sl->u[p[i]]);
}
else/* if (st->dir == 3) will be this anyway */
{
int p[4] = { 0, 1, 2, 3 };
++<<<<<<< HEAD
+ evas_map_point_coord_set(m, i, ox + sl->y[p[i]], oy + (w - sl->x[p[i]]), sl->z[p[i]]);
++=======
+ evas_map_point_coord_set(m, i, ox + sl->y[p[i]],
+ oy + (w - sl->x[p[i]]), sl->z[p[i]]);
++>>>>>>> remotes/origin/upstream
evas_map_point_image_uv_set(m, i, sl->v[p[i]] , oh - sl->u[p[i]]);
}
}
}
static void
++<<<<<<< HEAD
+_slice_3d(Widget_Data *st __UNUSED__, Slice *sl, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
++=======
+ _slice_3d(Widget_Data *st __UNUSED__, Slice *sl, Evas_Coord x, Evas_Coord y,
+ Evas_Coord w, Evas_Coord h)
++>>>>>>> remotes/origin/upstream
{
Evas_Map *m = (Evas_Map *)evas_object_map_get(sl->obj);
int i;
evas_map_util_3d_perspective(m, x + (w / 2), y + (h / 2), 0, 1024);
for (i = 0; i < 4; i++)
{
++<<<<<<< HEAD
+ Evas_Coord x, y, z;
+ evas_map_point_coord_get(m, i, &x, &y, &z);
+ evas_map_point_coord_set(m, i, x, y, 0);
++=======
+ Evas_Coord xx, yy, zz;
+ evas_map_point_coord_get(m, i, &xx, &yy, &zz);
+ evas_map_point_coord_set(m, i, xx, yy, 0);
++>>>>>>> remotes/origin/upstream
}
if (evas_map_util_clockwise_get(m)) evas_object_show(sl->obj);
else evas_object_hide(sl->obj);
static void
_slice_xyz(Widget_Data *st __UNUSED__, Slice *sl,
++<<<<<<< HEAD
+ double x1, double y1, double z1,
+ double x2, double y2, double z2,
+ double x3, double y3, double z3,
+ double x4, double y4, double z4)
+{
+ sl->x[0] = x1; sl->y[0] = y1; sl->z[0] = z1;
+ sl->x[1] = x2; sl->y[1] = y2; sl->z[1] = z2;
+ sl->x[2] = x3; sl->y[2] = y3; sl->z[2] = z3;
+ sl->x[3] = x4; sl->y[3] = y4; sl->z[3] = z4;
++=======
+ double xx1, double yy1, double zz1,
+ double xx2, double yy2, double zz2,
+ double xx3, double yy3, double zz3,
+ double xx4, double yy4, double zz4)
+ {
+ sl->x[0] = xx1; sl->y[0] = yy1; sl->z[0] = zz1;
+ sl->x[1] = xx2; sl->y[1] = yy2; sl->z[1] = zz2;
+ sl->x[2] = xx3; sl->y[2] = yy3; sl->z[2] = zz3;
+ sl->x[3] = xx4; sl->y[3] = yy4; sl->z[3] = zz4;
++>>>>>>> remotes/origin/upstream
}
static void
Evas_Map *m;
if (!s) return;
++<<<<<<< HEAD
+ m = (Evas_Map *)evas_object_map_get(s->obj);
++=======
+ m = (Evas_Map *) evas_object_map_get(s->obj);
++>>>>>>> remotes/origin/upstream
if (!m) return;
evas_map_point_color_set(m, p, r, g, b, a);
evas_object_map_set(s->obj, m);
static int
_state_update(Widget_Data *st)
{
++<<<<<<< HEAD
+ Evas_Coord x1, y1, x2, y2, mx, my;
++=======
+ Evas_Coord xx1, yy1, xx2, yy2, mx, my;
++>>>>>>> remotes/origin/upstream
Evas_Coord x, y, w, h, ox, oy, ow, oh;
int i, j, num, nn, jump, num2;
Slice *sl;
Vertex3 *tvo, *tvol;
Evas_Object *front, *back;
++<<<<<<< HEAD
+ st->backflip = 1;
++=======
+ st->backflip = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
if (st->state)
{
front = st->front.content;
evas_object_geometry_get(st->obj, &x, &y, &w, &h);
ox = x; oy = y; ow = w; oh = h;
++<<<<<<< HEAD
+ x1 = st->down_x;
+ y1 = st->down_y;
+ x2 = st->x;
+ y2 = st->y;
++=======
+ xx1 = st->down_x;
+ yy1 = st->down_y;
+ xx2 = st->x;
+ yy2 = st->y;
++>>>>>>> remotes/origin/upstream
if (st->dir == 0)
{
}
else if (st->dir == 1)
{
++<<<<<<< HEAD
+ x1 = (w - 1) - x1;
+ x2 = (w - 1) - x2;
++=======
+ xx1 = (w - 1) - xx1;
+ xx2 = (w - 1) - xx2;
++>>>>>>> remotes/origin/upstream
}
else if (st->dir == 2)
{
Evas_Coord tmp;
++<<<<<<< HEAD
+ tmp = x1; x1 = y1; y1 = tmp;
+ tmp = x2; x2 = y2; y2 = tmp;
++=======
+ tmp = xx1; xx1 = yy1; yy1 = tmp;
+ tmp = xx2; xx2 = yy2; yy2 = tmp;
++>>>>>>> remotes/origin/upstream
tmp = w; w = h; h = tmp;
}
else/* if (st->dir == 3) will be this anyway */
{
Evas_Coord tmp;
++<<<<<<< HEAD
+ tmp = x1; x1 = y1; y1 = tmp;
+ tmp = x2; x2 = y2; y2 = tmp;
+ tmp = w; w = h; h = tmp;
+ x1 = (w - 1) - x1;
+ x2 = (w - 1) - x2;
+ }
+
+ if (x2 >= x1) x2 = x1 - 1;
+ mx = (x1 + x2) / 2;
+ my = (y1 + y2) / 2;
++=======
+ tmp = xx1; xx1 = yy1; yy1 = tmp;
+ tmp = xx2; xx2 = yy2; yy2 = tmp;
+ tmp = w; w = h; h = tmp;
+ xx1 = (w - 1) - xx1;
+ xx2 = (w - 1) - xx2;
+ }
+
+ if (xx2 >= xx1) xx2 = xx1 - 1;
+ mx = (xx1 + xx2) / 2;
+ my = (yy1 + yy2) / 2;
++>>>>>>> remotes/origin/upstream
if (mx < 0) mx = 0;
else if (mx >= w) mx = w - 1;
if (my < 0) my = 0;
else if (my >= h) my = h - 1;
++<<<<<<< HEAD
+ mgrad = (double)(y1 - y2) / (double)(x1 - x2);
++=======
+ mgrad = (double)(yy1 - yy2) / (double)(xx1 - xx2);
++>>>>>>> remotes/origin/upstream
if (mx < 1) mx = 1; // quick hack to keep curl line visible
}
}
++<<<<<<< HEAD
+ perc = (double)x2 / (double)x1;
+ percm = (double)mx / (double)x1;
++=======
+ perc = (double)xx2 / (double)xx1;
+ percm = (double)mx / (double)xx1;
++>>>>>>> remotes/origin/upstream
if (perc < 0.0) perc = 0.0;
else if (perc > 1.0) perc = 1.0;
if (percm < 0.0) percm = 0.0;
vo[2].x, vo[2].y, vo[2].z,
vo[3].x, vo[3].y, vo[3].z);
if (b <= 0)
++<<<<<<< HEAD
+ _slice_uv(st, sl,
+ gx, gy, gx + gw, gy,
+ gx + gw, gy + gh, gx, gy + gh);
+ else
+ _slice_uv(st, sl,
+ gx, h - (gy + gh), gx + gw, h - (gy + gh),
+ gx + gw, h - gy, gx, h - gy);
+
+ // BACK
++=======
+ _slice_uv(st, sl,
+ gx, gy, gx + gw, gy, gx + gw, gy + gh, gx, gy + gh);
+ else
+ _slice_uv(st, sl,
+ gx, h - (gy + gh), gx + gw, h - (gy + gh), gx + gw,
+ h - gy, gx, h - gy);
+
+ // BACK
++>>>>>>> remotes/origin/upstream
sl = st->slices2[nn];
if (!sl)
{
if (st->backflip)
{
if (b <= 0)
++<<<<<<< HEAD
+ _slice_uv(st, sl,
+ gx + gw, gy, gx, gy,
+ gx, gy + gh, gx + gw, gy + gh);
+ else
+ _slice_uv(st, sl,
+ gx + gw, h - (gy + gh), gx, h - (gy + gh),
+ gx, h - gy, gx + gw, h - gy);
++=======
+ _slice_uv(st, sl, gx + gw, gy, gx, gy, gx, gy + gh, gx + gw,
+ gy + gh);
+ else
+ _slice_uv(st, sl, gx + gw, h - (gy + gh), gx, h - (gy + gh),
+ gx, h - gy, gx + gw, h - gy);
++>>>>>>> remotes/origin/upstream
}
else
{
if (b <= 0)
++<<<<<<< HEAD
+ _slice_uv(st, sl,
+ w - (gx + gw), gy, w - (gx), gy,
+ w - (gx), gy + gh, w - (gx + gw), gy + gh);
+ else
+ _slice_uv(st, sl,
+ w - (gx + gw), h - (gy + gh), w - (gx), h - (gy + gh),
+ w - (gx), h - gy, w - (gx + gw), h - gy);
++=======
+ _slice_uv(st, sl, w - (gx + gw), gy, w - (gx), gy, w - (gx),
+ gy + gh, w - (gx + gw), gy + gh);
+ else
+ _slice_uv(st, sl, w - (gx + gw), h - (gy + gh), w - (gx),
+ h - (gy + gh), w - (gx), h - gy, w - (gx + gw),
+ h - gy);
++>>>>>>> remotes/origin/upstream
}
}
}
Slice *s[4];
s[0] = s[1] = s[2] = s[3] = NULL;
++<<<<<<< HEAD
+ if ((i > 0) && (j > 0))
+ s[0] = st->slices[num - 1 - st->slices_h];
+ if ((i < st->slices_w) && (j > 0))
+ s[1] = st->slices[num - 1];
+ if ((i > 0) && (j < st->slices_h))
++=======
+ if ((i > 0) && (j > 0))
+ s[0] = st->slices[num - 1 - st->slices_h];
+ if ((i < st->slices_w) && (j > 0))
+ s[1] = st->slices[num - 1];
+ if ((i > 0) && (j < st->slices_h))
++>>>>>>> remotes/origin/upstream
s[2] = st->slices[num - st->slices_h];
if ((i < st->slices_w) && (j < st->slices_h))
s[3] = st->slices[num];
if (st->dir == 0)
++<<<<<<< HEAD
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3,
+ s[2], 1, s[3], 0);
+ else if (st->dir == 1)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2,
+ s[2], 0, s[3], 1);
+ else if (st->dir == 2)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2,
+ s[2], 0, s[3], 1);
+ else/* if (st->dir == 3) will be this anyway */
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3,
+ s[2], 1, s[3], 0);
+ s[0] = s[1] = s[2] = s[3] = NULL;
+ if ((i > 0) && (j > 0))
+ s[0] = st->slices2[num - 1 - st->slices_h];
+ if ((i < st->slices_w) && (j > 0))
+ s[1] = st->slices2[num - 1];
+ if ((i > 0) && (j < st->slices_h))
+ s[2] = st->slices2[num - st->slices_h];
+ if ((i < st->slices_w) && (j < st->slices_h))
+ s[3] = st->slices2[num];
+ if (st->dir == 0)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2,
+ s[2], 0, s[3], 1);
+ else if (st->dir == 1)
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3,
+ s[2], 1, s[3], 0);
+ else if (st->dir == 2)
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3,
+ s[2], 1, s[3], 0);
+ else/* if (st->dir == 3) will be this anyway */
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2,
+ s[2], 0, s[3], 1);
++=======
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3, s[2], 1, s[3], 0);
+ else if (st->dir == 1)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2, s[2], 0, s[3], 1);
+ else if (st->dir == 2)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2, s[2], 0, s[3], 1);
+ else/* if (st->dir == 3) will be this anyway */
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3, s[2], 1, s[3], 0);
+ s[0] = s[1] = s[2] = s[3] = NULL;
+ if ((i > 0) && (j > 0))
+ s[0] = st->slices2[num - 1 - st->slices_h];
+ if ((i < st->slices_w) && (j > 0))
+ s[1] = st->slices2[num - 1];
+ if ((i > 0) && (j < st->slices_h))
+ s[2] = st->slices2[num - st->slices_h];
+ if ((i < st->slices_w) && (j < st->slices_h))
+ s[3] = st->slices2[num];
+ if (st->dir == 0)
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2, s[2], 0, s[3], 1);
+ else if (st->dir == 1)
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3, s[2], 1, s[3], 0);
+ else if (st->dir == 2)
+ _slice_obj_vert_color_merge(s[0], 2, s[1], 3, s[2], 1, s[3], 0);
+ else/* if (st->dir == 3) will be this anyway */
+ _slice_obj_vert_color_merge(s[0], 3, s[1], 2, s[2], 0, s[3], 1);
++>>>>>>> remotes/origin/upstream
num++;
}
}
flip_show_hide(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (elm_flip_front_get(obj))
++=======
+ if (elm_flip_front_visible_get(obj))
++>>>>>>> remotes/origin/upstream
{
if (wd->pageflip)
{
if (!wd) return;
mf = evas_map_new(4);
++<<<<<<< HEAD
+ evas_map_smooth_set(mf, 0);
+ mb = evas_map_new(4);
+ evas_map_smooth_set(mb, 0);
++=======
+ evas_map_smooth_set(mf, EINA_FALSE);
+ mb = evas_map_new(4);
+ evas_map_smooth_set(mb, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
if (wd->front.content)
{
if (wd->dir == 0)
{
if (wd->down_x > 0)
++<<<<<<< HEAD
+ t = 1.0 - ((double)wd->x / (double)wd->down_x);
++=======
+ t = 1.0 - ((double)wd->x / (double)wd->down_x);
++>>>>>>> remotes/origin/upstream
*rev = 1;
}
else if (wd->dir == 1)
{
if (wd->down_x < w)
++<<<<<<< HEAD
+ t = 1.0 - ((double)(w - wd->x) / (double)(w - wd->down_x));
++=======
+ t = 1.0 - ((double)(w - wd->x) / (double)(w - wd->down_x));
++>>>>>>> remotes/origin/upstream
}
else if (wd->dir == 2)
{
if (wd->down_y > 0)
++<<<<<<< HEAD
+ t = 1.0 - ((double)wd->y / (double)wd->down_y);
++=======
+ t = 1.0 - ((double)wd->y / (double)wd->down_y);
++>>>>>>> remotes/origin/upstream
}
else if (wd->dir == 3)
{
if (wd->down_y < h)
++<<<<<<< HEAD
+ t = 1.0 - ((double)(h - wd->y) / (double)(h - wd->down_y));
++=======
+ t = 1.0 - ((double)(h - wd->y) / (double)(h - wd->down_y));
++>>>>>>> remotes/origin/upstream
*rev = 1;
}
dx = wd->x - wd->down_x;
dy = wd->y - wd->down_y;
++<<<<<<< HEAD
+ if (((dx * dx) + (dy * dy)) > (_elm_config->finger_size * _elm_config->finger_size / 4))
+ {
+ wd->dir = 0;
+ if ((wd->x > (w / 2)) && (dx < 0) && (abs(dx) > abs(dy))) wd->dir = 0; // left
+ else if ((wd->x < (w / 2)) && (dx >= 0) && (abs(dx) > abs(dy))) wd->dir = 1; // right
+ else if ((wd->y > (h / 2)) && (dy < 0) && (abs(dy) >= abs(dx))) wd->dir = 2; // up
+ else if ((wd->y < (h / 2)) && (dy >= 0) && (abs(dy) >= abs(dx))) wd->dir = 3; // down
+ wd->started = EINA_TRUE;
+ if (wd->intmode == ELM_FLIP_INTERACTION_PAGE)
+ wd->pageflip = EINA_TRUE;
++=======
+ if (((dx * dx) + (dy * dy)) >
+ (_elm_config->finger_size * _elm_config->finger_size / 4))
+ {
+ wd->dir = 0;
+ if ((wd->x > (w / 2)) &&
+ (dx < 0) && (abs(dx) > abs(dy)))
+ wd->dir = 0; // left
+ else if ((wd->x < (w / 2)) && (dx >= 0) &&
+ (abs(dx) > abs(dy)))
+ wd->dir = 1; // right
+ else if ((wd->y > (h / 2)) && (dy < 0) && (abs(dy) >= abs(dx)))
+ wd->dir = 2; // up
+ else if ((wd->y < (h / 2)) && (dy >= 0) && (abs(dy) >= abs(dx)))
+ wd->dir = 3; // down
+ wd->started = EINA_TRUE;
+ if (wd->intmode == ELM_FLIP_INTERACTION_PAGE)
+ wd->pageflip = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
flip_show_hide(data);
evas_smart_objects_calculate(evas_object_evas_get(data));
_flip(data);
// FIXME: hack around evas rendering bug (only fix makes evas bitch-slow)
++<<<<<<< HEAD
+ evas_object_map_enable_set(wd->front.content, 0);
+ evas_object_map_enable_set(wd->back.content, 0);
++=======
+ evas_object_map_enable_set(wd->front.content, EINA_FALSE);
+ evas_object_map_enable_set(wd->back.content, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
// FIXME: XXX why does this bork interactive flip??
// evas_object_resize(wd->front.content, 0, 0);
// evas_object_resize(wd->back.content, 0, 0);
wd->job = ecore_job_add(_update_job, wd);
}
++<<<<<<< HEAD
++=======
+ static void
+ _flip_content_front_set(Evas_Object *obj, Evas_Object *content)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ int i;
+
+ if (wd->front.content == content) return;
+ if (wd->front.content) evas_object_del(wd->front.content);
+ wd->front.content = content;
+ if (content)
+ {
+ elm_widget_sub_object_add(obj, content);
+ evas_object_smart_member_add(content, obj);
+ evas_object_clip_set(content, wd->front.clip);
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ _sizing_eval(obj);
+ }
+
+ // force calc to contents are the right size before transition
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+ flip_show_hide(obj);
+ _configure(obj);
+ if (wd->intmode != ELM_FLIP_INTERACTION_NONE)
+ {
+ for (i = 0; i < 4; i++) evas_object_raise(wd->event[i]);
+ }
+ }
+
+ static void
+ _flip_content_back_set(Evas_Object *obj, Evas_Object *content)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ int i;
+ if (wd->back.content == content) return;
+ if (wd->back.content) evas_object_del(wd->back.content);
+ wd->back.content = content;
+ if (content)
+ {
+ elm_widget_sub_object_add(obj, content);
+ evas_object_smart_member_add(content, obj);
+ evas_object_clip_set(content, wd->back.clip);
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ _sizing_eval(obj);
+ }
+
+ // force calc to contents are the right size before transition
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+ flip_show_hide(obj);
+ _configure(obj);
+ if (wd->intmode != ELM_FLIP_INTERACTION_NONE)
+ {
+ for (i = 0; i < 4; i++) evas_object_raise(wd->event[i]);
+ }
+ }
+
+ static Evas_Object *
+ _content_front_unset(Evas_Object *obj)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if ((!wd) || (!wd->front.content)) return NULL;
+
+ Evas_Object *content = wd->front.content;
+ evas_object_clip_unset(content);
+ elm_widget_sub_object_del(obj, content);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ evas_object_smart_member_del(content);
+ wd->front.content = NULL;
+ return content;
+ }
+
+ static Evas_Object *
+ _content_back_unset(Evas_Object *obj)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if ((!wd) || (!wd->back.content)) return NULL;
+
+ Evas_Object *content = wd->back.content;
+ evas_object_clip_unset(content);
+ elm_widget_sub_object_del(obj, content);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ evas_object_smart_member_del(content);
+ wd->back.content = NULL;
+ return content;
+ }
+
+ static void
+ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ if (!part || !strcmp(part, "front"))
+ _flip_content_front_set(obj, content);
+ else if (!strcmp(part, "back"))
+ _flip_content_back_set(obj, content);
+ }
+
+ static Evas_Object *
+ _content_get_hook(const Evas_Object *obj, const char *part)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+
+ if (!part || !strcmp(part, "front"))
+ return wd->front.content;
+ else if (!strcmp(part, "back"))
+ return wd->back.content;
+
+ return NULL;
+ }
+
+ static Evas_Object *
+ _content_unset_hook(Evas_Object *obj, const char *part)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+
+ if (!part || !strcmp(part, "front"))
+ return _content_front_unset(obj);
+ else if (!strcmp(part, "back"))
+ return _content_back_unset(obj);
+
+ return NULL;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_flip_add(Evas_Object *parent)
{
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_focus_next_hook_set(obj, _elm_flip_focus_next_hook);
elm_widget_can_focus_set(obj, EINA_FALSE);
++<<<<<<< HEAD
++=======
+ elm_widget_content_set_hook_set(obj, _content_set_hook);
+ elm_widget_content_get_hook_set(obj, _content_get_hook);
+ elm_widget_content_unset_hook_set(obj, _content_unset_hook);
++>>>>>>> remotes/origin/upstream
wd->obj = obj;
wd->clip = evas_object_rectangle_add(e);
++<<<<<<< HEAD
+ evas_object_static_clip_set(wd->clip, 1);
++=======
+ evas_object_static_clip_set(wd->clip, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_color_set(wd->clip, 255, 255, 255, 255);
evas_object_move(wd->clip, -49999, -49999);
evas_object_resize(wd->clip, 99999, 99999);
evas_object_smart_member_add(wd->clip, obj);
wd->front.clip = evas_object_rectangle_add(e);
++<<<<<<< HEAD
+ evas_object_static_clip_set(wd->front.clip, 1);
++=======
+ evas_object_static_clip_set(wd->front.clip, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_data_set(wd->front.clip, "_elm_leaveme", obj);
evas_object_color_set(wd->front.clip, 255, 255, 255, 255);
evas_object_move(wd->front.clip, -49999, -49999);
evas_object_clip_set(wd->front.clip, wd->clip);
wd->back.clip = evas_object_rectangle_add(e);
++<<<<<<< HEAD
+ evas_object_static_clip_set(wd->back.clip, 1);
++=======
+ evas_object_static_clip_set(wd->back.clip, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
evas_object_data_set(wd->back.clip, "_elm_leaveme", obj);
evas_object_color_set(wd->back.clip, 255, 255, 255, 255);
evas_object_move(wd->back.clip, -49999, -49999);
evas_object_smart_callbacks_descriptions_set(obj, _signals);
++<<<<<<< HEAD
+ wd->state = 1;
++=======
+ wd->state = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
wd->intmode = ELM_FLIP_INTERACTION_NONE;
_sizing_eval(obj);
EAPI void
elm_flip_content_front_set(Evas_Object *obj, Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ int i;
+ if (!wd) return;
+ if (wd->front.content == content) return;
+ if (wd->front.content) evas_object_del(wd->front.content);
+ wd->front.content = content;
+ if (content)
+ {
+ elm_widget_sub_object_add(obj, content);
+ evas_object_smart_member_add(content, obj);
+ evas_object_clip_set(content, wd->front.clip);
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ _sizing_eval(obj);
+ }
+ // force calc to contents are the right size before transition
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+ flip_show_hide(obj);
+ _configure(obj);
+ if (wd->intmode != ELM_FLIP_INTERACTION_NONE)
+ {
+ for (i = 0; i < 4; i++) evas_object_raise(wd->event[i]);
+ }
++=======
+ elm_object_part_content_set(obj, NULL, content);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_flip_content_back_set(Evas_Object *obj, Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ int i;
+ if (!wd) return;
+ if (wd->back.content == content) return;
+ if (wd->back.content) evas_object_del(wd->back.content);
+ wd->back.content = content;
+ if (content)
+ {
+ elm_widget_sub_object_add(obj, content);
+ evas_object_smart_member_add(content, obj);
+ evas_object_clip_set(content, wd->back.clip);
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ _sizing_eval(obj);
+ }
+ // force calc to contents are the right size before transition
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+ flip_show_hide(obj);
+ _configure(obj);
+ if (wd->intmode != ELM_FLIP_INTERACTION_NONE)
+ {
+ for (i = 0; i < 4; i++) evas_object_raise(wd->event[i]);
+ }
++=======
+ elm_object_part_content_set(obj, "back", content);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_flip_content_front_get(const Evas_Object *obj)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->front.content;
+}
+
+
+EAPI Evas_Object *
+elm_flip_content_back_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->back.content;
++=======
+ return elm_object_part_content_get(obj, NULL);
+ }
+
+ EAPI Evas_Object *
+ elm_flip_content_back_get(const Evas_Object *obj)
+ {
+ return elm_object_part_content_get(obj, "back");
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_flip_content_front_unset(Evas_Object *obj)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (!wd->front.content) return NULL;
+ Evas_Object *content = wd->front.content;
+ evas_object_clip_unset(content);
+ elm_widget_sub_object_del(obj, content);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ evas_object_smart_member_del(content);
+ wd->front.content = NULL;
+ return content;
++=======
+ return elm_object_part_content_unset(obj, NULL);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_flip_content_back_unset(Evas_Object *obj)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (!wd->back.content) return NULL;
+ Evas_Object *content = wd->back.content;
+ evas_object_clip_unset(content);
+ elm_widget_sub_object_del(obj, content);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ evas_object_smart_member_del(content);
+ wd->back.content = NULL;
+ return content;
+}
+
+EAPI Eina_Bool
+elm_flip_front_get(const Evas_Object *obj)
++=======
+ return elm_object_part_content_unset(obj, "back");
+ }
+
+ EAPI Eina_Bool
+ elm_flip_front_visible_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
return wd->state;
}
++<<<<<<< HEAD
++=======
+ EAPI Eina_Bool
+ elm_flip_front_get(const Evas_Object *obj)
+ {
+ return elm_flip_front_visible_get(obj);
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_flip_perspective_set(Evas_Object *obj, Evas_Coord foc __UNUSED__, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__)
{
{
if ((wd->dir_enabled[i]) && (!wd->event[i]))
{
++<<<<<<< HEAD
+ wd->event[i] = evas_object_rectangle_add(evas_object_evas_get(obj));
++=======
+ Evas *e = evas_object_evas_get(obj);
+ wd->event[i] = evas_object_rectangle_add(e);
++>>>>>>> remotes/origin/upstream
elm_widget_sub_object_add(obj, wd->event[i]);
evas_object_clip_set(wd->event[i], evas_object_clip_get(obj));
evas_object_color_set(wd->event[i], 0, 0, 0, 0);
evas_object_show(wd->event[i]);
evas_object_smart_member_add(wd->event[i], obj);
++<<<<<<< HEAD
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_DOWN, _down_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_UP, _up_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_MOVE, _move_cb, obj);
++=======
+ evas_object_event_callback_add(wd->event[i],
+ EVAS_CALLBACK_MOUSE_DOWN,
+ _down_cb, obj);
+ evas_object_event_callback_add(wd->event[i],
+ EVAS_CALLBACK_MOUSE_UP,
+ _up_cb, obj);
+ evas_object_event_callback_add(wd->event[i],
+ EVAS_CALLBACK_MOUSE_MOVE,
+ _move_cb, obj);
++>>>>>>> remotes/origin/upstream
}
}
}
}
EAPI void
++<<<<<<< HEAD
+elm_flip_interacton_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled)
++=======
+ elm_flip_interaction_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
int i = -1;
if (!wd) return;
enabled = !!enabled;
++<<<<<<< HEAD
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
++=======
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
++>>>>>>> remotes/origin/upstream
else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
else if (dir == ELM_FLIP_DIRECTION_RIGHT) i = 3;
evas_object_color_set(wd->event[i], 0, 0, 0, 0);
evas_object_show(wd->event[i]);
evas_object_smart_member_add(wd->event[i], obj);
++<<<<<<< HEAD
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_DOWN, _down_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_UP, _up_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_MOVE, _move_cb, obj);
++=======
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_DOWN,
+ _down_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_UP,
+ _up_cb, obj);
+ evas_object_event_callback_add(wd->event[i], EVAS_CALLBACK_MOUSE_MOVE,
+ _move_cb, obj);
++>>>>>>> remotes/origin/upstream
}
else if (!(wd->dir_enabled[i]) && (wd->event[i]))
{
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_flip_interacton_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir)
++=======
+ elm_flip_interaction_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
int i = -1;
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++=======
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++>>>>>>> remotes/origin/upstream
else if (dir == ELM_FLIP_DIRECTION_RIGHT) i = 3;
if (i < 0) return EINA_FALSE;
return wd->dir_enabled[i];
}
EAPI void
++<<<<<<< HEAD
+elm_flip_interacton_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize)
++=======
+ elm_flip_interaction_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
int i = -1;
if (!wd) return;
++<<<<<<< HEAD
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++=======
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++>>>>>>> remotes/origin/upstream
else if (dir == ELM_FLIP_DIRECTION_RIGHT) i = 3;
if (i < 0) return;
if (hitsize < 0.0) hitsize = 0.0;
}
EAPI double
++<<<<<<< HEAD
+elm_flip_interacton_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir)
++=======
+ elm_flip_interaction_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
int i = -1;
if (!wd) return 0.0;
++<<<<<<< HEAD
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++=======
+ if (dir == ELM_FLIP_DIRECTION_UP) i = 0;
+ else if (dir == ELM_FLIP_DIRECTION_DOWN) i = 1;
+ else if (dir == ELM_FLIP_DIRECTION_LEFT) i = 2;
++>>>>>>> remotes/origin/upstream
else if (dir == ELM_FLIP_DIRECTION_RIGHT) i = 3;
if (i < 0) return 0.0;
return wd->dir_hitsize[i];
* "animate,begin" - when a flip animation was started
* "animate,done" - when a flip animation is finished
*
++<<<<<<< HEAD
++=======
+ * Default content parts of the flip widget that you can use for are:
+ * @li "front" - A front content of the flip
+ * @li "back" - A back content of the flip
+ *
+ * Supported elm_object common APIs.
+ * @li elm_object_part_content_set
+ * @li elm_object_part_content_get
+ * @li elm_object_part_content_unset
+ *
++>>>>>>> remotes/origin/upstream
* @ref tutorial_flip show how to use most of the API.
*
* @{
EAPI Evas_Object *elm_flip_add(Evas_Object *parent);
/**
++<<<<<<< HEAD
+ * @brief Set the front content of the flip widget.
+ *
+ * @param obj The flip object
+ * @param content The new front content object
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_flip_content_front_unset() function.
+ */
+EAPI void elm_flip_content_front_set(Evas_Object *obj, Evas_Object *content);
+
+/**
+ * @brief Set the back content of the flip widget.
+ *
+ * @param obj The flip object
+ * @param content The new back content object
+ *
+ * Once the content object is set, a previously set one will be deleted.
+ * If you want to keep that old content object, use the
+ * elm_flip_content_back_unset() function.
+ */
+EAPI void elm_flip_content_back_set(Evas_Object *obj, Evas_Object *content);
+
+/**
+ * @brief Get the front content used for the flip
+ *
+ * @param obj The flip object
+ * @return The front content object that is being used
+ *
+ * Return the front content object which is set for this widget.
+ */
+EAPI Evas_Object *elm_flip_content_front_get(const Evas_Object *obj);
+
+/**
+ * @brief Get the back content used for the flip
+ *
+ * @param obj The flip object
+ * @return The back content object that is being used
+ *
+ * Return the back content object which is set for this widget.
+ */
+EAPI Evas_Object *elm_flip_content_back_get(const Evas_Object *obj);
+
+/**
+ * @brief Unset the front content used for the flip
+ *
+ * @param obj The flip object
+ * @return The front content object that was being used
+ *
+ * Unparent and return the front content object which was set for this widget.
+ */
+EAPI Evas_Object *elm_flip_content_front_unset(Evas_Object *obj);
+
+/**
+ * @brief Unset the back content used for the flip
+ *
+ * @param obj The flip object
+ * @return The back content object that was being used
+ *
+ * Unparent and return the back content object which was set for this widget.
+ */
+EAPI Evas_Object *elm_flip_content_back_unset(Evas_Object *obj);
+
+/**
+ * @brief Get flip front visibility state
+ *
+ * @param obj The flip objct
+ * @return EINA_TRUE if front front is showing, EINA_FALSE if the back is
+ * showing.
+ */
+EAPI Eina_Bool elm_flip_front_get(const Evas_Object *obj);
++=======
+ * @brief Get flip front visibility state
+ *
+ * @param obj The flip object
+ * @return EINA_TRUE if front front is showing, EINA_FALSE if the back is
+ * showing.
+ */
+ Eina_Bool elm_flip_front_visible_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @brief Set flip perspective
* @param mode The mode type
*
* Flips the front and back contents using the @p mode animation. This
++<<<<<<< HEAD
+ * efectively hides the currently visible content and shows the hidden one.
++=======
+ * effectively hides the currently visible content and shows the hidden one.
++>>>>>>> remotes/origin/upstream
*
* There a number of possible animations to use for the flipping:
* @li ELM_FLIP_ROTATE_X_CENTER_AXIS - Rotate the currently visible content
* drag a side of the flip to reveal the back page and cause it to flip).
* By default a flip is not interactive. You may also need to set which
* sides of the flip are "active" for flipping and how much space they use
++<<<<<<< HEAD
+ * (a minimum of a finger size) with elm_flip_interacton_direction_enabled_set()
+ * and elm_flip_interacton_direction_hitsize_set()
+ *
+ * The four avilable mode of interaction are:
++=======
+ * (a minimum of a finger size) with elm_flip_interaction_direction_enabled_set()
+ * and elm_flip_interaction_direction_hitsize_set()
+ *
+ * The four available mode of interaction are:
++>>>>>>> remotes/origin/upstream
* @li ELM_FLIP_INTERACTION_NONE - No interaction is allowed
* @li ELM_FLIP_INTERACTION_ROTATE - Interaction will cause rotate animation
* @li ELM_FLIP_INTERACTION_CUBE - Interaction will cause cube animation
*
* @note ELM_FLIP_INTERACTION_ROTATE won't cause
* ELM_FLIP_ROTATE_XZ_CENTER_AXIS or ELM_FLIP_ROTATE_YZ_CENTER_AXIS to
++<<<<<<< HEAD
+ * happen, those can only be acheived with elm_flip_go();
++=======
+ * happen, those can only be achieved with elm_flip_go();
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_flip_interaction_set(Evas_Object *obj, Elm_Flip_Interaction mode);
*
* @see elm_flip_interaction_set()
*/
++<<<<<<< HEAD
+EAPI void elm_flip_interacton_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled);
++=======
+ EAPI void elm_flip_interaction_direction_enabled_set(Evas_Object *obj, Elm_Flip_Direction dir, Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* @brief Get the enabled state of that flip direction
* @param dir The direction to check
* @return If that direction is enabled or not
*
++<<<<<<< HEAD
+ * Gets the enabled state set by elm_flip_interacton_direction_enabled_set()
+ *
+ * @see elm_flip_interaction_set()
+ */
+EAPI Eina_Bool elm_flip_interacton_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir);
++=======
+ * Gets the enabled state set by elm_flip_interaction_direction_enabled_set()
+ *
+ * @see elm_flip_interaction_set()
+ */
+ EAPI Eina_Bool elm_flip_interaction_direction_enabled_get(Evas_Object *obj, Elm_Flip_Direction dir);
++>>>>>>> remotes/origin/upstream
/**
* @brief Set the amount of the flip that is sensitive to interactive flip
*
* @see elm_flip_interaction_set()
*/
++<<<<<<< HEAD
+EAPI void elm_flip_interacton_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize);
++=======
+ EAPI void elm_flip_interaction_direction_hitsize_set(Evas_Object *obj, Elm_Flip_Direction dir, double hitsize);
++>>>>>>> remotes/origin/upstream
/**
* @brief Get the amount of the flip that is sensitive to interactive flip
* @param dir The direction to check
* @return The size set for that direction
*
++<<<<<<< HEAD
+ * Returns the amount os sensitive area set by
+ * elm_flip_interacton_direction_hitsize_set().
+ */
+EAPI double elm_flip_interacton_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir);
++=======
+ * Returns the amount of sensitive area set by
+ * elm_flip_interaction_direction_hitsize_set().
+ */
+ EAPI double elm_flip_interaction_direction_hitsize_get(Evas_Object *obj, Elm_Flip_Direction dir);
++>>>>>>> remotes/origin/upstream
/**
* @}
/* TODO: if one ever wants to extend it to receiving generic widgets
as items, be my guest. in this case, remember to implement the
items tooltip infra. */
++<<<<<<< HEAD
+/* TODO: implement disabled mode -- disable_hook() and stuff. */
++=======
++>>>>>>> remotes/origin/upstream
/* TODO: fix default theme image borders for looong strings as item
labels. */
/* TODO: set text elipsis on labels if one enforces mininum size on
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
Eina_List *l;
Elm_Flipselector_Item *item;
if (part && strcmp(part ,"default")) return;
++<<<<<<< HEAD
+ item = (Elm_Flipselector_Item *) it;
++=======
+ item = (Elm_Flipselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if ((!wd) || (!wd->items)) return;
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+
+ Elm_Flipselector_Item *item, *_item;
+ Widget_Data *wd;
+ Eina_List *l;
+
+ if (part && strcmp(part ,"default")) return NULL;
+
+ item = (Elm_Flipselector_Item *) it;
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items)) return NULL;
+
+ EINA_LIST_FOREACH(wd->items, l, _item)
+ if (_item == item) return item->label;
+ return NULL;
++=======
+ if (part && strcmp(part ,"default")) return NULL;
+
+ return ((Elm_Flipselector_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static void
const char *emission,
const char *source)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Flipselector_Item *item = (Elm_Flipselector_Item *) it;
++=======
+ Elm_Flipselector_Item *item = (Elm_Flipselector_Item *)it;
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(VIEW(item), emission, source);
}
}
static void
++<<<<<<< HEAD
++=======
+ _disable_hook(Evas_Object *obj)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (elm_widget_disabled_get(obj))
+ edje_object_signal_emit(wd->base, "elm,state,disabled", "elm");
+ else
+ edje_object_signal_emit(wd->base, "elm,state,enabled", "elm");
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_theme_hook(Evas_Object *obj)
{
Widget_Data *wd;
EINA_LIST_FOREACH(wd->items, l, it)
{
++<<<<<<< HEAD
+ if (strlen(elm_object_item_text_get((Elm_Object_Item *) it)) >
++=======
+ if (strlen(elm_object_item_text_get((Elm_Object_Item *)it)) >
++>>>>>>> remotes/origin/upstream
strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))
wd->sentinel = l;
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
Elm_Flipselector_Item *item, *item2;
Eina_List *l;
++<<<<<<< HEAD
+ item = (Elm_Flipselector_Item *) it;
++=======
+ item = (Elm_Flipselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
wd->self = obj;
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
++<<<<<<< HEAD
+ /* TODO: elm_widget_disable_hook_set(obj, _disable_hook); */
++=======
+ elm_widget_disable_hook_set(obj, _disable_hook);
++>>>>>>> remotes/origin/upstream
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
}
if (!wd->sentinel ||
++<<<<<<< HEAD
+ (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
++=======
+ (strlen(elm_object_item_text_get((Elm_Object_Item *)item)) >
++>>>>>>> remotes/origin/upstream
strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
{
wd->sentinel = eina_list_last(wd->items);
if (eina_list_count(wd->items) >= 2)
edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
++<<<<<<< HEAD
+ return (Elm_Object_Item *) item;
++=======
+ return (Elm_Object_Item *)item;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
}
if (!wd->sentinel ||
++<<<<<<< HEAD
+ (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
++=======
+ (strlen(elm_object_item_text_get((Elm_Object_Item *)item)) >
++>>>>>>> remotes/origin/upstream
strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
{
wd->sentinel = wd->items;
if (eina_list_count(wd->items) >= 2)
edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
++<<<<<<< HEAD
+ return (Elm_Object_Item *) item;
+}
+
+/* TODO: account for deleted items? */
++=======
+ return (Elm_Object_Item *)item;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI const Eina_List *
elm_flipselector_items_get(const Evas_Object *obj)
{
EINA_LIST_FOREACH(wd->items, l, it)
{
if (it->deleted) continue;
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
EINA_LIST_REVERSE_FOREACH(wd->items, l, it)
{
if (it->deleted) continue;
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (!wd || !wd->current) return NULL;
++=======
+ if (!wd) return NULL;
++>>>>>>> remotes/origin/upstream
return DATA_GET(wd->current);
}
Widget_Data *wd;
Eina_List *l;
++<<<<<<< HEAD
+ item = (Elm_Flipselector_Item *) it;
++=======
+ item = (Elm_Flipselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return;
Widget_Data *wd;
Elm_Flipselector_Item *item;
++<<<<<<< HEAD
+ item = (Elm_Flipselector_Item *) it;
++=======
+ item = (Elm_Flipselector_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
return (eina_list_data_get(wd->current) == item);
}
++<<<<<<< HEAD
+EAPI void
+elm_flipselector_item_del(Elm_Object_Item *it)
+{
+ elm_object_item_del(it);
+}
+
+EAPI const char *
+elm_flipselector_item_label_get(const Elm_Object_Item *it)
+{
+ return _item_text_get_hook(it, NULL);
+}
+
+EAPI void
+elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label)
+{
+ _item_text_set_hook(it, NULL, label);
+}
+
+EAPI Elm_Object_Item *
+elm_flipselector_item_prev_get(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+
+ Elm_Flipselector_Item *item, *_item;
+ Widget_Data *wd;
+ Eina_List *l;
+
+ item = (Elm_Flipselector_Item *) it;
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items)) return NULL;
+
+ EINA_LIST_FOREACH(wd->items, l, _item)
+ if (_item == item)
+ {
+ l = eina_list_prev(l);
+ if (!l) return NULL;
+ return DATA_GET(l);
+ }
++=======
+ EAPI Elm_Object_Item *
+ elm_flipselector_item_prev_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+
+ Widget_Data *wd;
+ Eina_List *l;
+ Elm_Flipselector_Item *item = (Elm_Flipselector_Item *)it;
+
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items)) return NULL;
+
+ l = eina_list_data_find_list(wd->items, it);
+ if (l && l->prev) return DATA_GET(l->prev);
+
++>>>>>>> remotes/origin/upstream
return NULL;
}
EAPI Elm_Object_Item *
++<<<<<<< HEAD
+elm_flipselector_item_next_get(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+
+ Elm_Flipselector_Item *item, *_item;
+ Widget_Data *wd;
+ Eina_List *l;
+
+ item = (Elm_Flipselector_Item *) it;
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items)) return NULL;
+
+ EINA_LIST_FOREACH(wd->items, l, _item)
+ if (_item == item)
+ {
+ l = eina_list_next(l);
+ if (!l) return NULL;
+ return DATA_GET(l);
+ }
++=======
+ elm_flipselector_item_next_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+
+ Widget_Data *wd;
+ Eina_List *l;
+ Elm_Flipselector_Item *item = (Elm_Flipselector_Item *)it;
+
+ wd = elm_widget_data_get(WIDGET(item));
+ if ((!wd) || (!wd->items)) return NULL;
+
+ l = eina_list_data_find_list(wd->items, it);
+ if (l && l->next) return DATA_GET(l->next);
+
++>>>>>>> remotes/origin/upstream
return NULL;
}
EAPI void
++<<<<<<< HEAD
+elm_flipselector_interval_set(Evas_Object *obj, double interval)
++=======
+ elm_flipselector_first_interval_set(Evas_Object *obj, double interval)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
}
EAPI double
++<<<<<<< HEAD
+elm_flipselector_interval_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
++=======
+ elm_flipselector_first_interval_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return 0;
return wd->first_interval;
}
++<<<<<<< HEAD
++=======
+
+ EINA_DEPRECATED EAPI void
+ elm_flipselector_interval_set(Evas_Object *obj, double interval)
+ {
+ elm_flipselector_first_interval_set(obj, interval);
+ }
+
+ EINA_DEPRECATED EAPI double
+ elm_flipselector_interval_get(const Evas_Object *obj)
+ {
+ return elm_flipselector_first_interval_get(obj);
+ }
+
++>>>>>>> remotes/origin/upstream
* (thus, the "flip" in the name).
*
* User clicks to flip sheets which are @b held for some time will
++<<<<<<< HEAD
+ * make the flip selector to flip continuosly and automatically for
++=======
+ * make the flip selector to flip continuously and automatically for
++>>>>>>> remotes/origin/upstream
* the user. The interval between flips will keep growing in time,
* so that it helps the user to reach an item which is distant from
* the current selection.
* Default text parts of the flipselector items that you can use for are:
* @li "default" - label of the flipselector item
*
++<<<<<<< HEAD
++=======
+ * Supported elm_object common APIs.
+ * @li elm_object_disabled_set
+ * @li elm_object_disabled_get
+ *
++>>>>>>> remotes/origin/upstream
* Supported elm_object_item common APIs.
* @li elm_object_item_text_set
* @li elm_object_item_part_text_set
*
* @param obj The flipselector object
* @return The selected item or @c NULL, if the widget has no items
++<<<<<<< HEAD
+ * (and on erros)
++=======
+ * (and on errors)
++>>>>>>> remotes/origin/upstream
*
* @ingroup Flipselector
*/
* @param selected @c EINA_TRUE to select it, @c EINA_FALSE to unselect.
*
* This sets whether @p item is or not the selected (thus, under
++<<<<<<< HEAD
+ * display) one. If @p item is different than one under display,
++=======
+ * display) one. If @p item is different than the one under display,
++>>>>>>> remotes/origin/upstream
* the latter will be unselected. If the @p item is set to be
* unselected, on the other hand, the @b first item in the widget's
* internal members list will be the new selected one.
*
* @ingroup Flipselector
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it);
+
+/**
+ * Gets the item before @p item in a flip selector widget's
+ * internal list of items.
+ *
+ * @param it The item to fetch previous from
+ * @return The item before the @p item, in its parent's list. If
+ * there is no previous item for @p item or there's an
+ * error, @c NULL is returned.
++=======
+ EAPI Eina_Bool elm_flipselector_item_selected_get(const Elm_Object_Item *it);
+
+ /**
+ * Gets the item before @p item in a flip selector widget's internal list of
+ * items.
+ *
+ * @param it The item to fetch previous from
+ * @return The item before the @p item, in its parent's list. If there is no
+ * previous item for @p item or there's an error, @c NULL is returned.
++>>>>>>> remotes/origin/upstream
*
* @see elm_flipselector_item_next_get()
*
* @ingroup Flipselector
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_flipselector_item_prev_get(Elm_Object_Item *it);
++=======
+ EAPI Elm_Object_Item *elm_flipselector_item_prev_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Gets the item after @p item in a flip selector widget's
* internal list of items.
*
* @param it The item to fetch next from
++<<<<<<< HEAD
+ * @return The item after the @p item, in its parent's list. If
+ * there is no next item for @p item or there's an
+ * error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_next_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI Elm_Object_Item *elm_flipselector_item_next_get(Elm_Object_Item *it);
+
+/**
+ * Set the interval on time updates for an user mouse button hold
++=======
+ * @return The item after the @p item, in its parent's list. If there is no next
+ * item for @p item or there's an error, @c NULL is returned.
+ *
+ * @see elm_flipselector_item_prev_get()
+ *
+ * @ingroup Flipselector
+ */
+ EAPI Elm_Object_Item *elm_flipselector_item_next_get(const Elm_Object_Item *it);
+
+ /**
+ * Set the interval on time updates for a user mouse button hold
++>>>>>>> remotes/origin/upstream
* on a flip selector widget.
*
* @param obj The flip selector object
* @param interval The (first) interval value in seconds
*
* This interval value is @b decreased while the user holds the
++<<<<<<< HEAD
+ * mouse pointer either flipping up or flipping doww a given flip
++=======
+ * mouse pointer either flipping up or flipping down a given flip
++>>>>>>> remotes/origin/upstream
* selector.
*
* This helps the user to get to a given item distant from the
* The default starting interval value for automatic flips is
* @b 0.85 seconds.
*
++<<<<<<< HEAD
+ * @see elm_flipselector_interval_get()
+ *
+ * @ingroup Flipselector
+ */
+EAPI void elm_flipselector_interval_set(Evas_Object *obj, double interval);
++=======
+ * @see elm_flipselector_first_interval_get()
+ *
+ * @ingroup Flipselector
+ */
+ EAPI void elm_flipselector_first_interval_set(Evas_Object *obj, double interval);
++>>>>>>> remotes/origin/upstream
/**
* Get the interval on time updates for an user mouse button hold
* @param obj The flip selector object
* @return The (first) interval value, in seconds, set on it
*
++<<<<<<< HEAD
+ * @see elm_flipselector_interval_set() for more details
+ *
+ * @ingroup Flipselector
+ */
+EAPI double elm_flipselector_interval_get(const Evas_Object *obj);
++=======
+ * @see elm_flipselector_first_interval_set() for more details
+ *
+ * @ingroup Flipselector
+ */
+ EAPI double elm_flipselector_first_interval_get(const Evas_Object *obj);
+
++>>>>>>> remotes/origin/upstream
/**
* @}
*/
* objects by input (tab key) or programmatically. The default
* focus chain for an application is the one define by the order in
* which the widgets where added in code. One will cycle through
++<<<<<<< HEAD
+ * top level widgets, and, for each one containg sub-objects, cycle
++=======
+ * top level widgets, and, for each one containing sub-objects, cycle
++>>>>>>> remotes/origin/upstream
* through them all, before returning to the level
* above. Elementary also allows one to set @b custom focus chains
* for their applications.
*/
/**
++<<<<<<< HEAD
+ * Get the enable status of the focus highlight
+ *
+ * This gets whether the highlight on focused objects is enabled or not
+ * @ingroup Focus
+ */
+EAPI Eina_Bool elm_focus_highlight_enabled_get(void);
+
+/**
+ * Set the enable status of the focus highlight
+ *
+ * @param enable Enable highlight if EINA_TRUE, disable otherwise
+ *
+ * Set whether to show or not the highlight on focused objects
+ * @ingroup Focus
+ */
+EAPI void elm_focus_highlight_enabled_set(Eina_Bool enable);
+
+/**
+ * Get the enable status of the highlight animation
+ *
+ * @return The focus hilight mode set
+ *
+ * Get whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ *
+ * @ingroup Focus
+ */
+EAPI Eina_Bool elm_focus_highlight_animate_get(void);
+
+/**
+ * Set the enable status of the highlight animation
+ *
+ * @param animate Enable animation if EINA_TRUE, disable otherwise
+ *
+ * Set whether the focus highlight, if enabled, will animate its switch from
+ * one object to the next
+ *
+ * @ingroup Focus
+ */
+EAPI void elm_focus_highlight_animate_set(Eina_Bool animate);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Get the whether an Elementary object has the focus or not.
*
* @param obj The Elementary object to get the information from
EAPI void elm_object_focus_set(Evas_Object *obj, Eina_Bool focus);
/**
++<<<<<<< HEAD
+ * Set the ability for an Element object to be focused
++=======
+ * Set the ability for an Elementary object to be focused
++>>>>>>> remotes/origin/upstream
*
* @param obj The Elementary object to operate on
* @param enable @c EINA_TRUE if the object can be focused, @c
* first object of chain.
*
* @param obj The object root of sub-tree
++<<<<<<< HEAD
+ * @param dir Direction to cycle the focus
+ *
+ * @ingroup Focus
+ */
+EAPI void elm_object_focus_cycle(Evas_Object *obj, Elm_Focus_Direction dir);
+
+/**
+ * Give focus to near object in one direction.
+ *
+ * Give focus to near object in direction of one object.
+ * If none focusable object in given direction, the focus will not change.
+ *
+ * @param obj The reference object
+ * @param x Horizontal component of direction to focus
+ * @param y Vertical component of direction to focus
+ *
+ * @ingroup Focus
+ */
+EAPI void elm_object_focus_direction_go(Evas_Object *obj, int x, int y);
+
+/**
+ * Make the elementary object and its children to be unfocusable
+ * (or focusable).
+ *
+ * @param obj The Elementary object to operate on
+ * @param tree_unfocusable @c EINA_TRUE for unfocusable,
+ * @c EINA_FALSE for focusable.
++=======
+ * @param dir Direction to move the focus
+ *
+ * @ingroup Focus
+ */
+ EAPI void elm_object_focus_next(Evas_Object *obj, Elm_Focus_Direction dir);
+
+ /**
+ * Make the elementary object and its children to be focusable
+ * (or unfocusable).
+ *
+ * @param obj The Elementary object to operate on
+ * @param focusable @c EINA_TRUE for focusable,
+ * @c EINA_FALSE for unfocusable.
++>>>>>>> remotes/origin/upstream
*
* This sets whether the object @p obj and its children objects
* are able to take focus or not. If the tree is set as unfocusable,
* want to get focus (by focus reverting or by other focus controls).
* Then, just use this API before deleting.
*
++<<<<<<< HEAD
+ * @see elm_object_tree_unfocusable_get()
+ *
+ * @ingroup Focus
+ */
+EAPI void elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable);
+
+/**
+ * Get whether an Elementary object and its children are unfocusable or not.
+ *
+ * @param obj The Elementary object to get the information from
+ * @return @c EINA_TRUE, if the tree is unfocussable,
+ * @c EINA_FALSE if not (and on errors).
+ *
+ * @see elm_object_tree_unfocusable_set()
+ *
+ * @ingroup Focus
+ */
+EAPI Eina_Bool elm_object_tree_unfocusable_get(const Evas_Object *obj);
++=======
+ * @see elm_object_tree_focus_allow_get()
+ *
+ * @ingroup Focus
+ *
+ */
+ EAPI void elm_object_tree_focus_allow_set(Evas_Object *obj, Eina_Bool focusable);
+
+ /**
+ * Get whether an Elementary object and its children are focusable or not.
+ *
+ * @param obj The Elementary object to get the information from
+ * @return @c EINA_TRUE, if the tree is focusable,
+ * @c EINA_FALSE if not (and on errors).
+ *
+ * @see elm_object_tree_focus_allow_set()
+ *
+ * @ingroup Focus
+ */
+ EAPI Eina_Bool elm_object_tree_focus_allow_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
len = s1 - font;
name = calloc(sizeof(char), len + 1);
++<<<<<<< HEAD
++=======
+ if (!name) return NULL;
++>>>>>>> remotes/origin/upstream
strncpy(name, font, len);
/* get subname (should be english) */
{
len = s2 - name;
name = realloc(name, sizeof(char) * len + 1);
++<<<<<<< HEAD
+ memset(name, 0, sizeof(char) * len + 1);
+ strncpy(name, font, len);
++=======
+ if (name)
+ {
+ memset(name, 0, sizeof(char) * len + 1);
+ strncpy(name, font, len);
+ }
++>>>>>>> remotes/origin/upstream
}
if (!strncmp(s1, ELM_FONT_TOKEN_STYLE, strlen(ELM_FONT_TOKEN_STYLE)))
if (!efp)
{
efp = calloc(1, sizeof(Elm_Font_Properties));
++<<<<<<< HEAD
+ efp->name = eina_stringshare_add(name);
+ if (font_hash)
+ {
+ if (!*font_hash)
+ *font_hash = eina_hash_string_superfast_new(NULL);
+ eina_hash_add(*font_hash, name, efp);
++=======
+ if (efp)
+ {
+ efp->name = eina_stringshare_add(name);
+ if ((font_hash && !*font_hash))
+ {
+ *font_hash = eina_hash_string_superfast_new(NULL);
+ eina_hash_add(*font_hash, name, efp);
+ }
++>>>>>>> remotes/origin/upstream
}
}
s2 = strchr(style, ',');
len = s2 - style;
style_old = style;
style = calloc(sizeof(char), len + 1);
++<<<<<<< HEAD
+ strncpy(style, style_old, len);
+ efp->styles = eina_list_append(efp->styles,
+ eina_stringshare_add(style));
+ free(style);
++=======
+ if (style)
+ {
+ strncpy(style, style_old, len);
+ efp->styles = eina_list_append(efp->styles,
+ eina_stringshare_add(style));
+ free(style);
+ }
++>>>>>>> remotes/origin/upstream
}
else
efp->styles = eina_list_append(efp->styles,
if (!efp)
{
efp = calloc(1, sizeof(Elm_Font_Properties));
++<<<<<<< HEAD
+ efp->name = eina_stringshare_add(font);
+ if (font_hash)
+ {
+ if (!*font_hash)
+ *font_hash = eina_hash_string_superfast_new(NULL);
+ eina_hash_add(*font_hash, font, efp);
++=======
+ if (efp)
+ {
+ efp->name = eina_stringshare_add(font);
+ if (font_hash && !*font_hash)
+ {
+ *font_hash = eina_hash_string_superfast_new(NULL);
+ eina_hash_add(*font_hash, font, efp);
+ }
++>>>>>>> remotes/origin/upstream
}
}
}
return efp;
}
++<<<<<<< HEAD
+/* FIXME: do we really need it? */
++=======
++>>>>>>> remotes/origin/upstream
Eina_Hash *
_elm_font_available_hash_add(Eina_Hash *font_hash,
const char *full_name)
void
_elm_font_available_hash_del(Eina_Hash *hash)
{
++<<<<<<< HEAD
+ if (!hash) return ;
+
+ eina_hash_foreach(hash, _font_hash_free_cb, NULL);
++=======
+ if (!hash) return;
+
+ eina_hash_foreach(hash, _font_hash_free_cb, NULL);
+ eina_hash_free(hash);
+ }
+
+ EAPI Elm_Font_Properties *
+ elm_font_properties_get(const char *font)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
+ return _elm_font_properties_get(NULL, font);
+ }
+
+ EAPI void
+ elm_font_properties_free(Elm_Font_Properties *efp)
+ {
+ const char *str;
+
+ EINA_SAFETY_ON_NULL_RETURN(efp);
+ EINA_LIST_FREE(efp->styles, str)
+ if (str) eina_stringshare_del(str);
+ if (efp->name) eina_stringshare_del(efp->name);
+ free(efp);
+ }
+
+ EAPI char *
+ elm_font_fontconfig_name_get(const char *name,
+ const char *style)
+ {
+ char buf[256];
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+ if (!style || style[0] == 0) return (char *) eina_stringshare_add(name);
+ snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
+ return (char *) eina_stringshare_add(buf);
+ }
+
+ EAPI void
+ elm_font_fontconfig_name_free(char *name)
+ {
+ eina_stringshare_del(name);
+ }
+
+ EAPI Eina_Hash *
+ elm_font_available_hash_add(Eina_List *list)
+ {
+ Eina_Hash *font_hash;
+ Eina_List *l;
+ void *key;
+
+ font_hash = NULL;
+
+ /* populate with default font families */
+ //FIXME: Need to check whether fonts are being added multiple times.
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Sans:style=Bold Oblique");
+
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Serif:style=Bold Oblique");
+
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Bold Oblique");
+
+ EINA_LIST_FOREACH(list, l, key)
+ if (key) _elm_font_available_hash_add(font_hash, key);
+
+ return font_hash;
+ }
+
+ EAPI void
+ elm_font_available_hash_del(Eina_Hash *hash)
+ {
+ _elm_font_available_hash_del(hash);
++>>>>>>> remotes/origin/upstream
}
static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
static void _theme_hook(Evas_Object *obj);
static void _sizing_eval(Evas_Object *obj);
++<<<<<<< HEAD
+static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
++=======
+ static void _changed_size_hints(void *data,
+ Evas *e, Evas_Object *obj,
+ void *event_info);
++>>>>>>> remotes/origin/upstream
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
static void
if (!wd) return;
_elm_widget_mirrored_reload(obj);
_mirrored_set(obj, elm_widget_mirrored_get(obj));
++<<<<<<< HEAD
+ _elm_theme_object_set(obj, wd->frm, "frame", "base", elm_widget_style_get(obj));
+ edje_object_part_text_set(wd->frm, "elm.text", wd->label);
+ if (wd->content)
+ edje_object_part_swallow(wd->frm, "elm.swallow.content", wd->content);
+ edje_object_scale_set(wd->frm, elm_widget_scale_get(obj) * _elm_config->scale);
++=======
+ _elm_theme_object_set(obj, wd->frm, "frame", "base",
+ elm_widget_style_get(obj));
+ edje_object_part_text_set(wd->frm, "elm.text", wd->label);
+ if (wd->content)
+ edje_object_part_swallow(wd->frm, "elm.swallow.content", wd->content);
+ edje_object_scale_set(wd->frm,
+ elm_widget_scale_get(obj) * _elm_config->scale);
++>>>>>>> remotes/origin/upstream
_sizing_eval(obj);
}
_elm_frame_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
{
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ Evas_Object *cur;
++=======
++>>>>>>> remotes/origin/upstream
if ((!wd) || (!wd->content))
return EINA_FALSE;
++<<<<<<< HEAD
+ cur = wd->content;
+
+ /* Try Focus cycle in subitem */
+ return elm_widget_focus_next_get(cur, dir, next);
++=======
+ /* Try Focus cycle in subitem */
+ return elm_widget_focus_next_get(wd->content, dir, next);
++>>>>>>> remotes/origin/upstream
}
static void
_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Widget_Data *wd = elm_widget_data_get(data);
++<<<<<<< HEAD
+ // FIXME: why is this needed? how does edje get this unswallowed or
+ // lose its callbacks to edje
+ if (!wd) return;
+ if (wd->anim) return;
++=======
+ if (!wd) return;
+ if (wd->anim) return;
+ // FIXME: why is this needed? how does edje get this unswallowed or
+ // lose its callbacks to edje
++>>>>>>> remotes/origin/upstream
edje_object_part_swallow(wd->frm, "elm.swallow.content", wd->content);
_sizing_eval(data);
}
if (!wd) return;
if (sub == wd->content)
{
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++=======
+ evas_object_event_callback_del_full(sub,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++>>>>>>> remotes/origin/upstream
_changed_size_hints, obj);
wd->content = NULL;
_sizing_eval(obj);
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (item && strcmp(item, "default")) return NULL;
+ if (!wd) return NULL;
++=======
+ if (!wd) return NULL;
+ if (item && strcmp(item, "default")) return NULL;
++>>>>>>> remotes/origin/upstream
return wd->label;
}
if (content)
{
elm_widget_sub_object_add(obj, content);
++<<<<<<< HEAD
+ evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++=======
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++>>>>>>> remotes/origin/upstream
_changed_size_hints, obj);
edje_object_part_swallow(wd->frm, "elm.swallow.content", content);
}
if (part && strcmp(part, "default")) return NULL;
wd = elm_widget_data_get(obj);
if (!wd) return NULL;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
return wd->content;
}
Evas_Object *content;
if (part && strcmp(part, "default")) return NULL;
wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (!wd) return NULL;
+ if (!wd->content) return NULL;
++=======
+ if (!wd || !wd->content) return NULL;
++>>>>>>> remotes/origin/upstream
content = wd->content;
elm_widget_sub_object_del(obj, wd->content);
evas_object_event_callback_del_full(wd->content,
}
EAPI void
++<<<<<<< HEAD
+elm_frame_autocollapse_set(Evas_Object *obj, Eina_Bool enable)
++=======
+ elm_frame_autocollapse_set(Evas_Object *obj, Eina_Bool autocollapse)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd;
ELM_CHECK_WIDTYPE(obj, widtype);
wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->collapsible = !!enable;
+}
+
+EAPI Eina_Bool
+elm_frame_autocollapse_get(Evas_Object *obj)
++=======
+ wd->collapsible = !!autocollapse;
+ }
+
+ EAPI Eina_Bool
+ elm_frame_autocollapse_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd;
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
if (wd->collapsed == collapse) return;
edje_object_signal_emit(wd->frm, "elm,action,switch", "elm");
edje_object_message_signal_process(wd->frm);
++<<<<<<< HEAD
+ wd->collapsed = collapse;
++=======
+ wd->collapsed = !!collapse;
++>>>>>>> remotes/origin/upstream
wd->anim = EINA_FALSE;
_sizing_eval(obj);
}
collapse = !!collapse;
if (wd->collapsed == collapse) return;
edje_object_signal_emit(wd->frm, "elm,action,toggle", "elm");
++<<<<<<< HEAD
+ evas_object_smart_callback_add(wd->frm, "recalc", (Evas_Smart_Cb)_recalc, obj);
++=======
+ evas_object_smart_callback_add(wd->frm, "recalc", _recalc, obj);
++>>>>>>> remotes/origin/upstream
wd->collapsed = collapse;
wd->anim = EINA_TRUE;
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_frame_collapse_get(Evas_Object *obj)
++=======
+ elm_frame_collapse_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd;
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
if (!wd) return EINA_FALSE;
return wd->collapsed;
}
++<<<<<<< HEAD
+
+
+EAPI void
+elm_frame_label_set(Evas_Object *obj, const char *label)
+{
+ _elm_frame_label_set(obj, NULL, label);
+}
+
+EAPI const char *
+elm_frame_label_get(const Evas_Object *obj)
+{
+ return _elm_frame_label_get(obj, NULL);
+}
+
+EAPI void
+elm_frame_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ _content_set_hook(obj, NULL, content);
+}
+
+EAPI Evas_Object *
+elm_frame_content_get(const Evas_Object *obj)
+{
+ return _content_get_hook(obj, NULL);
+}
+
+EAPI Evas_Object *
+elm_frame_content_unset(Evas_Object *obj)
+{
+ return _content_unset_hook(obj, NULL);
+}
++=======
++>>>>>>> remotes/origin/upstream
*
* @brief Frame is a widget that holds some content and has a title.
*
++<<<<<<< HEAD
+ * The default look is a frame with a title, but Frame supports multple
++=======
+ * The default look is a frame with a title, but Frame supports multiple
++>>>>>>> remotes/origin/upstream
* styles:
* @li default
* @li pad_small
* Smart callbacks one can listen to:
* - @c "clicked" - The user has clicked the frame's label
*
++<<<<<<< HEAD
+ * Default contents parts of the frame widget that you can use for are:
++=======
+ * Default content parts of the frame widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the frame
*
* Default text parts of the frame widget that you can use for are:
/**
* @brief Toggle autocollapsing of a frame
* @param obj The frame
++<<<<<<< HEAD
+ * @param enable Whether to enable autocollapse
++=======
+ * @param autocollapse Whether to enable autocollapse
++>>>>>>> remotes/origin/upstream
*
* When @p enable is EINA_TRUE, clicking a frame's label will collapse the frame
* vertically, shrinking it to the height of the label.
* By default, this is DISABLED.
*/
++<<<<<<< HEAD
+EAPI void elm_frame_autocollapse_set(Evas_Object *obj, Eina_Bool enable);
++=======
+ EAPI void elm_frame_autocollapse_set(Evas_Object *obj, Eina_Bool autocollapse);
++>>>>>>> remotes/origin/upstream
/**
* @brief Determine autocollapsing of a frame
* vertically, shrinking it to the height of the label.
* By default, this is DISABLED.
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_frame_autocollapse_get(Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_frame_autocollapse_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @brief Manually collapse a frame without animations
EAPI void elm_frame_collapse_set(Evas_Object *obj, Eina_Bool collapse);
/**
++<<<<<<< HEAD
+ * @brief Manually collapse a frame with animations
+ * @param obj The frame
+ * @param collapse true to collapse, false to expand
+ *
+ * Use this to toggle the collapsed state of a frame, triggering animations.
+ */
+EAPI void elm_frame_collapse_go(Evas_Object *obj, Eina_Bool collapse);
+
+/**
+ * @brief Determine the collapse state of a frame
+ * @param obj The frame
+ * @return true if collapsed, false otherwise
+ *
+ * Use this to determine the collapse state of a frame.
+ */
+EAPI Eina_Bool elm_frame_collapse_get(Evas_Object *obj);
+/**
++=======
+ * @brief Determine the collapse state of a frame
+ * @param obj The frame
+ * @return true if collapsed, false otherwise
+ *
+ * Use this to determine the collapse state of a frame.
+ */
+ EAPI Eina_Bool elm_frame_collapse_get(const Evas_Object *obj);
+
+ /**
+ * @brief Manually collapse a frame with animations
+ * @param obj The frame
+ * @param collapse true to collapse, false to expand
+ *
+ * Use this to toggle the collapsed state of a frame, triggering animations.
+ */
+ EAPI void elm_frame_collapse_go(Evas_Object *obj, Eina_Bool collapse);
+
+ /*
++>>>>>>> remotes/origin/upstream
* @}
*/
++<<<<<<< HEAD
+#include <Elementary.h>
+#include <Elementary_Cursor.h>
+#include "elm_priv.h"
+
+#define ELM_GEN_ITEM_FROM_INLIST(it) \
+ ((it) ? EINA_INLIST_CONTAINER_GET(it, Elm_Gen_Item) : NULL)
+
+typedef struct Elm_Gen_Item_Type Elm_Gen_Item_Type;
+typedef struct Elm_Gen_Item_Tooltip Elm_Gen_Item_Tooltip;
+typedef struct _Widget_Data Widget_Data;
+typedef struct _Pan Pan;
+
+struct Elm_Gen_Item_Tooltip
+{
+ const void *data;
+ Elm_Tooltip_Item_Content_Cb content_cb;
+ Evas_Smart_Cb del_cb;
+ const char *style;
+ Eina_Bool free_size : 1;
+};
+
+struct _Pan
+{
+ Evas_Object_Smart_Clipped_Data __clipped_data;
+ Widget_Data *wd;
+ Ecore_Job *resize_job;
+};
+
+struct Elm_Gen_Item
+{
+ ELM_WIDGET_ITEM;
+ EINA_INLIST;
+ Widget_Data *wd;
+ Elm_Gen_Item_Type *item;
+ const Elm_Gen_Item_Class *itc;
+ Evas_Coord x, y, dx, dy;
+ Evas_Object *spacer;
+ Elm_Gen_Item *parent;
+ Eina_List *labels, *contents, *states, *content_objs;
+ Ecore_Timer *long_timer;
+ int relcount;
+ int walking;
+ const char *mouse_cursor;
+
+ struct
+ {
+ Evas_Smart_Cb func;
+ const void *data;
+ } func;
+
+ Elm_Gen_Item_Tooltip tooltip;
+ Ecore_Cb del_cb, sel_cb, highlight_cb;
+ Ecore_Cb unsel_cb, unhighlight_cb, unrealize_cb;
+
+ Eina_Bool want_unrealize : 1;
+ Eina_Bool display_only : 1;
+ Eina_Bool realized : 1;
+ Eina_Bool selected : 1;
+ Eina_Bool highlighted : 1;
+ Eina_Bool disabled : 1;
+ Eina_Bool dragging : 1;
+ Eina_Bool delete_me : 1;
+ Eina_Bool down : 1;
+ Eina_Bool group : 1;
+ Eina_Bool reorder : 1;
+ Eina_Bool mode_set : 1; /* item uses style mode for highlight/select */
+};
+
+Elm_Gen_Item *
+elm_gen_item_new(Widget_Data *wd,
+ const Elm_Gen_Item_Class *itc,
+ const void *data,
+ Elm_Gen_Item *parent,
+ Evas_Smart_Cb func,
+ const void *func_data);
+
+void
+elm_gen_item_unrealize(Elm_Gen_Item *it,
+ Eina_Bool calc);
+void
+elm_gen_item_del_serious(Elm_Gen_Item *it);
+
+void
+elm_gen_item_del_notserious(Elm_Gen_Item *it);
++=======
+ typedef struct Elm_Gen_Item Elm_Gen_Item;
+
+ /**
+ * @struct Elm_Gen_Item_Class
+ *
+ * Gengrid or Genlist item class definition.
+ * field details.
+ */
+ typedef struct _Elm_Gen_Item_Class Elm_Gen_Item_Class;
+
+ /**
+ * Text fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The allocated (NOT stringshared) string to set as the text
+ */
+ typedef char *(*Elm_Gen_Item_Text_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gen item classes. */
+
+ /**
+ * Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The content object to swallow
+ */
+ typedef Evas_Object *(*Elm_Gen_Item_Content_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< Content(swallowed object) fetching class function for gen item classes. */
+
+ /**
+ * State fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The hell if I know
+ */
+ typedef Eina_Bool (*Elm_Gen_Item_State_Get_Cb)(void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gen item classes. */
+
+ /**
+ * Deletion class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ */
+ typedef void (*Elm_Gen_Item_Del_Cb)(void *data, Evas_Object *obj); /**< Deletion class function for gen item classes. */
+
+ struct _Elm_Gen_Item_Class
+ {
+ int version; /**< Set by elementary if you alloc an item class using elm_gengrid_item_class_new() or elm_genlist_item_class_new(), or if you set your own class (must be const) then set it to ELM_GENGRID_ITEM_CLASS_VERSION */
+ unsigned int refcount; /**< Set it to 0 if you use your own const class, or its managed for you by class ref/unref calls */
+ Eina_Bool delete_me : 1; /**< Leave this alone - set it to 0 if you have a const class of your own */
+ const char *item_style; /**< Name of the visual style to use for this item. If you don't know use "default" */
+ const char *mode_item_style; /**< Style used if item is set to a specific mode. @see elm_genlist_item_mode_set() or NULL if you don't care. currently it's used only in genlist. */
+ const char *edit_item_style; /**< Style to use when in edit mode, or NULL if you don't care. currently it's used only in genlist. */
+ struct {
+ Elm_Gen_Item_Text_Get_Cb text_get; /**< Text fetching class function for gengrid/list item classes.*/
+ Elm_Gen_Item_Content_Get_Cb content_get; /**< Content fetching class function for gengrid/list item classes. */
+ Elm_Gen_Item_State_Get_Cb state_get; /**< State fetching class function for gengrid/list item classes. */
+ Elm_Gen_Item_Del_Cb del; /**< Deletion class function for gengrid/list item classes. */
+ } func;
+ }; /**< #Elm_Gen_Item_Class member definitions */
+
+ #define ELM_GEN_ITEM_CLASS_VERSION 2
+ #define ELM_GEN_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_VERSION, 0, 0
++>>>>>>> remotes/origin/upstream
((it) ? EINA_INLIST_CONTAINER_GET(it, Elm_Gen_Item) : NULL)
#define SWIPE_MOVES 12
++<<<<<<< HEAD
+struct Elm_Genlist_Item;
+struct Elm_Genlist_Item_Class;
++=======
++>>>>>>> remotes/origin/upstream
typedef struct Elm_Gen_Item_Type Elm_Gen_Item_Type;
typedef struct Elm_Gen_Item_Tooltip Elm_Gen_Item_Tooltip;
typedef struct _Widget_Data Widget_Data;
++<<<<<<< HEAD
+typedef enum
+{
+ ELM_GENLIST_ITEM_SCROLLTO_NONE = 0, /**< no scrollto */
+ ELM_GENLIST_ITEM_SCROLLTO_IN = (1 << 0), /**< show, bring in */
+ ELM_GENLIST_ITEM_SCROLLTO_TOP = (1 << 1), /**< top show, top bring in */
+ ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< middle show, middle bring in */
+} Elm_Genlist_Item_Scrollto_Type;
+
++=======
++>>>>>>> remotes/origin/upstream
struct Elm_Gen_Item_Tooltip
{
const void *data;
Elm_Gen_Item_Type *item;
const Elm_Gen_Item_Class *itc;
Evas_Coord x, y, dx, dy;
++<<<<<<< HEAD
+ Evas_Object *spacer;
++=======
+ Evas_Object *spacer, *edit_obj;
++>>>>>>> remotes/origin/upstream
Elm_Gen_Item *parent;
Eina_List *texts, *contents, *states, *content_objs;
Ecore_Timer *long_timer;
int relcount;
int walking;
++<<<<<<< HEAD
+ int generation; /* a generation of an item. when the item is created, this value is set to the value of genlist generation. this value will be decreased when the item is going to be deleted */
+ const char *mouse_cursor;
+
+ struct
+ {
+ Evas_Smart_Cb func;
+ const void *data;
+ } func;
++=======
+ int generation; /**< a generation of an item. when the item is created, this value is set to the value of genlist generation. this value will be decreased when the item is going to be deleted */
+ const char *mouse_cursor;
+
+ struct
+ {
+ Evas_Smart_Cb func;
+ const void *data;
+ } func;
++>>>>>>> remotes/origin/upstream
Elm_Gen_Item_Tooltip tooltip;
Ecore_Cb del_cb, sel_cb, highlight_cb;
Ecore_Cb unsel_cb, unhighlight_cb, unrealize_cb;
int position;
++<<<<<<< HEAD
+
+ Eina_Bool position_update : 1;
+ Eina_Bool want_unrealize : 1;
+ Eina_Bool display_only : 1;
+ Eina_Bool realized : 1;
+ Eina_Bool selected : 1;
+ Eina_Bool highlighted : 1;
+ Eina_Bool disabled : 1;
+ Eina_Bool dragging : 1;
+ Eina_Bool down : 1;
+ Eina_Bool group : 1;
+ Eina_Bool reorder : 1;
+ Eina_Bool mode_set : 1; /* item uses style mode for highlight/select */
++=======
+ Elm_Object_Select_Mode select_mode;
+
+ Eina_Bool position_update : 1;
+ Eina_Bool want_unrealize : 1;
+ Eina_Bool realized : 1;
+ Eina_Bool selected : 1;
+ Eina_Bool highlighted : 1;
+ Eina_Bool dragging : 1; /**< this is set true when an item is being dragged. this is set false on multidown/mouseup/mousedown. when this is true, the item should not be unrealized. or evas mouse down/up event will be corrupted. */
+ Eina_Bool down : 1;
+ Eina_Bool group : 1;
+ Eina_Bool reorder : 1;
+ Eina_Bool mode_set : 1; /**< item uses style mode for highlight/select */
+ Eina_Bool flipped : 1; /**< a flag that shows the flip status of the item. */
++>>>>>>> remotes/origin/upstream
};
typedef struct _Pan Pan;
struct _Widget_Data
{
Eina_Inlist_Sorted_State *state;
++<<<<<<< HEAD
+ Evas_Object *obj; /* the genlist object */
+ Evas_Object *scr; /* a smart scroller object which is used internally in genlist */
+ Evas_Object *pan_smart; /* "elm_genlist_pan" evas smart object. this is an extern pan of smart scroller(scr). */
+ Eina_List *selected;
+ Eina_List *group_items; /* list of groups index items */
+ Eina_Inlist *items; /* inlist of all items */
+ Elm_Gen_Item *reorder_it; /* item currently being repositioned */
+ Elm_Gen_Item *last_selected_item;
+ Pan *pan; /* pan_smart object's smart data */
++=======
+ Evas_Object *obj; /**< the genlist object */
+ Evas_Object *scr; /**< a smart scroller object which is used internally in genlist */
+ Evas_Object *pan_smart; /**< "elm_genlist_pan" evas smart object. this is an extern pan of smart scroller(scr). */
+ Eina_List *selected; /**< a list of selected items */
+ Eina_List *group_items; /**< a list of groups index items */
+ Eina_Inlist *items; /**< an inlist of all items */
+ Elm_Gen_Item *reorder_it; /**< item currently being repositioned */
+ Elm_Object_Item *last_selected_item;
+ Pan *pan; /**< pan_smart object's smart data */
++>>>>>>> remotes/origin/upstream
Ecore_Job *calc_job;
int walking;
int item_width, item_height;
int group_item_width, group_item_height;
int minw, minh;
++<<<<<<< HEAD
+ long count;
+ Evas_Coord pan_x, pan_y;
+ Eina_Bool reorder_mode : 1; /* a flag for reorder mode enable/disable */
+ Eina_Bool on_hold : 1;
+ Eina_Bool multi : 1; /* a flag for item multi selection */
+ Eina_Bool no_select : 1;
+ Eina_Bool wasselected : 1;
+ Eina_Bool always_select : 1;
+ Eina_Bool clear_me : 1; /* a flag whether genlist is marked as to be cleared or not. if this flag is true, genlist clear was already deferred. */
++=======
+ unsigned int item_count;
+ Evas_Coord pan_x, pan_y;
+ Elm_Object_Select_Mode select_mode;
+ Eina_Bool reorder_mode : 1; /**< a flag for reorder mode enable/disable */
+ Eina_Bool on_hold : 1;
+ Eina_Bool multi : 1; /**< a flag for item multi selection */
+ Eina_Bool wasselected : 1;
+ Eina_Bool no_highlight : 1;
+ Eina_Bool clear_me : 1; /**< a flag whether genlist is marked as to be cleared or not. if this flag is true, genlist clear was already deferred. */
++>>>>>>> remotes/origin/upstream
Eina_Bool h_bounce : 1;
Eina_Bool v_bounce : 1;
Ecore_Cb del_cb, calc_cb, sizing_cb;
Ecore_Cb clear_cb;
////////////////////////////////////
++<<<<<<< HEAD
+ Eina_Inlist *blocks; /* inlist of all blocks. a block consists of a certain number of items. maximum number of items in a block is 'max_items_per_block'. */
++=======
+ Eina_Inlist *blocks; /**< an inlist of all blocks. a block consists of a certain number of items. maximum number of items in a block is 'max_items_per_block'. */
++>>>>>>> remotes/origin/upstream
Evas_Coord reorder_old_pan_y, w, h, realminw, prev_viewport_w;
Ecore_Job *update_job;
Ecore_Idle_Enterer *queue_idle_enterer;
Ecore_Idler *must_recalc_idler;
Eina_List *queue;
Elm_Gen_Item *show_item, *anchor_item, *mode_item, *reorder_rel, *expanded_item;
++<<<<<<< HEAD
+ Eina_Inlist *item_cache; /* an inlist of edje object it cache. */
+ Evas_Coord anchor_y;
+ Evas_Coord reorder_start_y; /* reorder it's initial y coordinate in the pan. */
++=======
+ Eina_Inlist *item_cache; /**< an inlist of edje object it cache. */
+ Evas_Coord anchor_y;
+ Evas_Coord reorder_start_y; /**< reorder it's initial y coordinate in the pan. */
++>>>>>>> remotes/origin/upstream
Elm_List_Mode mode;
Ecore_Timer *multi_timer, *scr_hold_timer;
Ecore_Animator *reorder_move_animator;
const char *mode_type;
++<<<<<<< HEAD
+ const char *mode_item_style;
+ unsigned int start_time;
++=======
+ double start_time;
++>>>>>>> remotes/origin/upstream
Evas_Coord prev_x, prev_y, prev_mx, prev_my;
Evas_Coord cur_x, cur_y, cur_mx, cur_my;
Eina_Bool mouse_down : 1;
Eina_Bool multi_timeout : 1;
Eina_Bool multitouched : 1;
Eina_Bool longpressed : 1;
++<<<<<<< HEAD
+ Eina_Bool bring_in : 1; /* a flag to describe the scroll animation. (show, bring in) */
+ Eina_Bool compress : 1;
+ Eina_Bool height_for_width : 1;
+ Eina_Bool homogeneous : 1;
+ Eina_Bool swipe : 1;
+ Eina_Bool reorder_pan_move : 1;
+ Eina_Bool auto_scroll_enabled : 1;
+ Eina_Bool pan_changed : 1;
+ Eina_Bool requeued : 1; /* this is set to EINA_TRUE when the item is re-queued. this happens when the item is un-queued but the rel item is still in the queue. this item will be processed later. */
+ Eina_Bool check_scroll : 1; /* this flag means genlist is supposed to be scrolled. if this flag is set to EINA_TRUE, genlist checks whether it's ok to scroll genlist now or not. */
+ struct
+ {
+ Evas_Coord x, y;
+ } history[SWIPE_MOVES];
+ int multi_device;
+ int item_cache_count;
+ int item_cache_max; /* maximum number of cached items */
+ int movements;
+ int max_items_per_block; /* maximum number of items per block */
+ double longpress_timeout; /* longpress timeout. this value comes from _elm_config by default. this can be changed by elm_genlist_longpress_timeout_set() */
+ int generation; /* a generation of genlist. when genlist is cleared, this value will be increased and a new generation will start */
+ Eina_Compare_Cb item_compare_cb;
+ Eina_Compare_Cb item_compare_data_cb;
+ Elm_Genlist_Item_Scrollto_Type scrollto_type; /* a scrollto type which remembers where to scroll ex) in, top, middle */
++=======
+ Eina_Bool bring_in : 1; /**< a flag to describe the scroll animation. (show, bring in) */
+ Eina_Bool height_for_width : 1;
+ Eina_Bool homogeneous : 1;
+ Eina_Bool swipe : 1;
+ Eina_Bool decorate_mode : 1;
+ Eina_Bool reorder_pan_move : 1;
+ Eina_Bool auto_scroll_enabled : 1;
+ Eina_Bool pan_changed : 1;
+ Eina_Bool requeued : 1; /**< this is set to EINA_TRUE when the item is re-queued. this happens when the item is un-queued but the rel item is still in the queue. this item will be processed later. */
+ Eina_Bool check_scroll : 1; /**< this flag means genlist is supposed to be scrolled. if this flag is set to EINA_TRUE, genlist checks whether it's ok to scroll genlist now or not. */
+ Eina_Bool tree_effect_enabled : 1; /**< tree effect */
+ struct
+ {
+ Evas_Coord x, y;
+ } history[SWIPE_MOVES];
+ int multi_device;
+ int item_cache_count;
+ int item_cache_max; /**< maximum number of cached items */
+ int movements;
+ int max_items_per_block; /**< maximum number of items per block */
+ double longpress_timeout; /**< longpress timeout. this value comes from _elm_config by default. this can be changed by elm_genlist_longpress_timeout_set() */
+ int generation; /**< a generation of genlist. when genlist is cleared, this value will be increased and a new generation will start */
+ Eina_Compare_Cb item_compare_cb;
+ Eina_Compare_Cb item_compare_data_cb;
+ Elm_Genlist_Item_Scrollto_Type scrollto_type; /**< a scrollto type which remembers where to scroll ex) in, top, middle */
+ Evas_Object *alpha_bg; /**< not to receive event when tree effect is not finished */
+ Eina_List *move_items; /**< items move for tree effect */
+ Elm_Gen_Item *expanded_next_item;
+ Ecore_Animator *item_moving_effect_timer; /**< tree effect */
+ Elm_Genlist_Item_Move_Effect_Mode move_effect_mode;
++>>>>>>> remotes/origin/upstream
/* The stuff below directly come from gengrid without any thinking */
unsigned int nmax;
Eina_Bool filled : 1;
};
++<<<<<<< HEAD
+Elm_Genlist_Item *_elm_genlist_item_new(Widget_Data *wd, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Genlist_Item *parent, Evas_Smart_Cb func, const void *func_data);
+
+Evas_Object *_elm_genlist_item_widget_get(const Elm_Genlist_Item *it);
++=======
+ Elm_Gen_Item *_elm_genlist_item_new(Widget_Data *wd, const Elm_Gen_Item_Class *itc, const void *data, Elm_Gen_Item *parent, Evas_Smart_Cb func, const void *func_data);
+
+ Evas_Object *_elm_genlist_item_widget_get(const Elm_Gen_Item *it);
++>>>>>>> remotes/origin/upstream
void _elm_genlist_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
void _elm_genlist_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
++<<<<<<< HEAD
+void _elm_genlist_item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc);
+void _elm_genlist_item_del_serious(Elm_Genlist_Item *it);
+
+void _elm_genlist_item_del_notserious(Elm_Genlist_Item *it);
+
+#if 1
+Elm_Gen_Item *_elm_gengrid_item_new(Widget_Data *wd, const Elm_Gen_Item_Class *itc, const void *data, Elm_Gen_Item *parent, Evas_Smart_Cb func, const void *func_data);
+
+Evas_Object *_elm_gengrid_item_widget_get(const Elm_Gen_Item *it);
+
+void _elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
+
+void _elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
+
+void _elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
+
+void _elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+void _elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+void _elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+void _elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+void _elm_gengrid_item_unrealize(Elm_Gen_Item *it, Eina_Bool calc);
+void _elm_gengrid_item_del_serious(Elm_Gen_Item *it);
+
+void _elm_gengrid_item_del_notserious(Elm_Gen_Item *it);
+#endif
++=======
+ void _elm_genlist_item_unrealize(Elm_Gen_Item *it, Eina_Bool calc);
+ void _elm_genlist_item_del_serious(Elm_Gen_Item *it);
+
+ void _elm_genlist_item_del_notserious(Elm_Gen_Item *it);
++>>>>>>> remotes/origin/upstream
#endif
ELM_FOCUS_NEXT
} Elm_Focus_Direction;
++<<<<<<< HEAD
++=======
+ typedef enum
+ {
+ ELM_OBJECT_SELECT_MODE_DEFAULT = 0, /**< default select mode */
+ ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always select mode */
+ ELM_OBJECT_SELECT_MODE_NONE, /**< no select mode */
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< no select mode with no finger size rule*/
+ ELM_OBJECT_SELECT_MODE_MAX
+ } Elm_Object_Select_Mode;
+
++>>>>>>> remotes/origin/upstream
/**
* @typedef Elm_Object_Item
* An Elementary Object item handle.
#include "els_scroller.h"
#include "elm_gen_common.h"
++<<<<<<< HEAD
++=======
+ // internally allocated
+ #define CLASS_ALLOCATED 0x3a70f00f
+
++>>>>>>> remotes/origin/upstream
/* --
* TODO:
* Handle non-homogeneous objects too.
Eina_Bool reorder_mode : 1;
Eina_Bool on_hold : 1;
Eina_Bool multi : 1;
++<<<<<<< HEAD
+ Eina_Bool no_select : 1;
Eina_Bool wasselected : 1;
+ Eina_Bool always_select : 1;
++=======
++ Eina_Bool wasselected : 1;
++>>>>>>> remotes/origin/upstream
Eina_Bool clear_me : 1;
Eina_Bool h_bounce : 1;
Eina_Bool v_bounce : 1;
Evas_Callback_Type type,
void *event_info);
static Eina_Bool _deselect_all_items(Widget_Data *wd);
++<<<<<<< HEAD
+#if 1
+static void _elm_gengrid_clear(Evas_Object *obj,
+ Eina_Bool standby);
+#endif
++=======
++>>>>>>> remotes/origin/upstream
static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION;
static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
static const char SIG_EDGE_LEFT[] = "edge,left";
static const char SIG_EDGE_RIGHT[] = "edge,right";
static const char SIG_MOVED[] = "moved";
++<<<<<<< HEAD
++=======
+ static const char SIG_INDEX_UPDATE[] = "index,update";
++>>>>>>> remotes/origin/upstream
static const Evas_Smart_Cb_Description _signals[] = {
{SIG_ACTIVATED, ""},
else if ((!strcmp(ev->keyname, "Home")) || (!strcmp(ev->keyname, "KP_Home")))
{
it = elm_gengrid_first_item_get(obj);
++<<<<<<< HEAD
+ elm_gengrid_item_bring_in(it);
++=======
+ elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_IN);
+ elm_gengrid_item_selected_set(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
else if ((!strcmp(ev->keyname, "End")) || (!strcmp(ev->keyname, "KP_End")))
{
it = elm_gengrid_last_item_get(obj);
++<<<<<<< HEAD
+ elm_gengrid_item_bring_in(it);
++=======
+ elm_gengrid_item_bring_in(it, ELM_GENGRID_ITEM_SCROLLTO_IN);
+ elm_gengrid_item_selected_set(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
{
elm_gengrid_item_selected_set(wd->last_selected_item, EINA_FALSE);
wd->last_selected_item = prev;
++<<<<<<< HEAD
+ elm_gengrid_item_show(wd->last_selected_item);
++=======
+ elm_gengrid_item_show(wd->last_selected_item, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
else
{
elm_gengrid_item_selected_set(prev, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show(prev);
++=======
+ elm_gengrid_item_show(prev, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
return EINA_TRUE;
{
elm_gengrid_item_selected_set(wd->last_selected_item, EINA_FALSE);
wd->last_selected_item = next;
++<<<<<<< HEAD
+ elm_gengrid_item_show(wd->last_selected_item);
++=======
+ elm_gengrid_item_show(wd->last_selected_item, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
else
{
elm_gengrid_item_selected_set(next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show(next);
++=======
+ elm_gengrid_item_show(next, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
return EINA_TRUE;
while ((prev) && (prev->generation < wd->generation))
prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
elm_gengrid_item_selected_set((Elm_Object_Item *) prev, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) prev);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) prev, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
else
_deselect_all_items(wd);
elm_gengrid_item_selected_set((Elm_Object_Item *) prev, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) prev);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) prev, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
while ((next) && (next->generation < wd->generation))
next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
elm_gengrid_item_selected_set((Elm_Object_Item *) next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) next);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) next, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
else
_deselect_all_items(wd);
elm_gengrid_item_selected_set((Elm_Object_Item *) next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) next);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) next, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
_deselect_all_items(wd);
elm_gengrid_item_selected_set((Elm_Object_Item *) prev, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) prev);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) prev, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
_deselect_all_items(wd);
elm_gengrid_item_selected_set((Elm_Object_Item *) next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_gengrid_item_show((Elm_Object_Item *) next);
++=======
+ elm_gengrid_item_show((Elm_Object_Item *) next, ELM_GENGRID_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
while (it)
{
edje_object_mirrored_set(VIEW(it), rtl);
++<<<<<<< HEAD
+ elm_gengrid_item_update((Elm_Object_Item *) it);
++=======
+ elm_gengrid_item_update((Elm_Object_Item *)it);
++>>>>>>> remotes/origin/upstream
it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
}
}
}
return;
}
++<<<<<<< HEAD
+ if (!it->display_only)
++=======
+ if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
++>>>>>>> remotes/origin/upstream
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
x = ev->cur.canvas.x - x;
if (dragged)
{
if (it->want_unrealize)
++<<<<<<< HEAD
+ _elm_gengrid_item_unrealize(it, EINA_FALSE);
++=======
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
if (elm_widget_item_disabled_get(it) || (dragged)) return;
if (it->wd->multi)
static void
_item_highlight(Elm_Gen_Item *it)
{
++<<<<<<< HEAD
+ if ((it->wd->no_select) || (it->generation < it->wd->generation) || (it->highlighted)) return;
++=======
+ if ((it->wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
+ (it->wd->no_highlight) || (it->highlighted) ||
+ (it->generation < it->wd->generation)) return;
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
it->highlighted = EINA_TRUE;
}
static void
++<<<<<<< HEAD
++=======
+ _elm_gengrid_item_index_update(Elm_Gen_Item *it)
+ {
+ if (it->position_update)
+ {
+ evas_object_smart_callback_call(WIDGET(it), SIG_INDEX_UPDATE, it);
+ it->position_update = EINA_FALSE;
+ }
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_item_realize(Elm_Gen_Item *it)
{
char buf[1024];
evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_MOUSE_MOVE,
_mouse_move, it);
++<<<<<<< HEAD
++=======
+ _elm_gengrid_item_index_update(it);
+
++>>>>>>> remotes/origin/upstream
if (it->selected)
edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
if (elm_widget_item_disabled_get(it))
_reorder_item_moving_effect_timer_cb(void *data)
{
Elm_Gen_Item *it = data;
++<<<<<<< HEAD
+ double time, t;
+ Evas_Coord dx, dy;
+
+ time = REORDER_EFFECT_TIME;
++=======
+ double tt, t;
+ Evas_Coord dx, dy;
+
+ tt = REORDER_EFFECT_TIME;
++>>>>>>> remotes/origin/upstream
t = ((0.0 > (t = ecore_loop_time_get()-it->item->moving_effect_start_time)) ? 0.0 : t);
dx = ((it->item->tx - it->item->ox) / 10) * _elm_config->scale;
dy = ((it->item->ty - it->item->oy) / 10) * _elm_config->scale;
++<<<<<<< HEAD
+ if (t <= time)
+ {
+ it->item->rx += (1 * sin((t / time) * (M_PI / 2)) * dx);
+ it->item->ry += (1 * sin((t / time) * (M_PI / 2)) * dy);
++=======
+ if (t <= tt)
+ {
+ it->item->rx += (1 * sin((t / tt) * (M_PI / 2)) * dx);
+ it->item->ry += (1 * sin((t / tt) * (M_PI / 2)) * dy);
++>>>>>>> remotes/origin/upstream
}
else
{
evas_object_raise(VIEW(it));
}
else
++<<<<<<< HEAD
+ _elm_gengrid_item_unrealize(it, EINA_FALSE);
++=======
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
}
alignh = 0;
alignw = 0;
++<<<<<<< HEAD
+ items_count = it->wd->count - eina_list_count(it->wd->group_items) + it->wd->items_lost;
++=======
+ items_count = it->wd->item_count - eina_list_count(it->wd->group_items) + it->wd->items_lost;
++>>>>>>> remotes/origin/upstream
if (it->wd->horizontal)
{
int columns, items_visible = 0, items_row;
alignw = (vw - tcw) * it->wd->align_x;
items_row = items_visible;
++<<<<<<< HEAD
+ if (items_row > it->wd->count)
+ items_row = it->wd->count;
+ if (it->wd->filled
+ && (unsigned int)it->wd->nmax > (unsigned int)it->wd->count)
++=======
+ if ((unsigned int)items_row > it->wd->item_count)
+ items_row = it->wd->item_count;
+ if (it->wd->filled
+ && (unsigned int)it->wd->nmax > (unsigned int)it->wd->item_count)
++>>>>>>> remotes/origin/upstream
tch = it->wd->nmax * it->wd->item_height;
else
tch = items_row * it->wd->item_height;
}
else
{
++<<<<<<< HEAD
+ int rows, items_visible = 0, items_col;
++=======
+ unsigned int rows, items_visible = 0, items_col;
++>>>>>>> remotes/origin/upstream
if (it->wd->item_width > 0)
items_visible = vw / it->wd->item_width;
alignh = (vh - tch) * it->wd->align_y;
items_col = items_visible;
++<<<<<<< HEAD
+ if (items_col > it->wd->count)
+ items_col = it->wd->count;
+ if (it->wd->filled
+ && (unsigned int)it->wd->nmax > (unsigned int)it->wd->count)
++=======
+ if (items_col > it->wd->item_count)
+ items_col = it->wd->item_count;
+ if (it->wd->filled
+ && (unsigned int)it->wd->nmax > (unsigned int)it->wd->item_count)
++>>>>>>> remotes/origin/upstream
tcw = it->wd->nmax * it->wd->item_width;
else
tcw = items_col * it->wd->item_width;
else
{
if (!it->group)
++<<<<<<< HEAD
+ _elm_gengrid_item_unrealize(it, EINA_FALSE);
++=======
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
else
it->item->group_realized = EINA_FALSE;
}
}
static void
++<<<<<<< HEAD
++=======
+ _item_position_update(Eina_Inlist *list, int idx)
+ {
+ Elm_Gen_Item *it;
+
+ EINA_INLIST_FOREACH(list, it)
+ {
+ it->position = idx++;
+ it->position_update = EINA_TRUE;
+ }
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_item_del(Elm_Gen_Item *it)
{
Evas_Object *obj = WIDGET(it);
evas_event_freeze(evas_object_evas_get(obj));
it->wd->selected = eina_list_remove(it->wd->selected, it);
++<<<<<<< HEAD
+ if (it->realized) _elm_gengrid_item_unrealize(it, EINA_FALSE);
+ it->wd->count--;
+ _elm_gengrid_item_del_serious(it);
++=======
+ if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
+ it->wd->item_count--;
+ _elm_genlist_item_del_serious(it);
+ elm_gengrid_item_class_unref((Elm_Gengrid_Item_Class *)it->itc);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
count++;
}
}
++<<<<<<< HEAD
+ count = wd->count + wd->items_lost - count_group;
++=======
+ count = wd->item_count + wd->items_lost - count_group;
++>>>>>>> remotes/origin/upstream
if (wd->horizontal)
{
minw = (ceil(count / (float)nmax) * wd->item_width) + (count_group * wd->group_item_width);
}
static int
++<<<<<<< HEAD
+_elm_gengrid_item_compare_data(const void *data, const void *data1)
+{
+ const Elm_Gen_Item *it = data;
+ const Elm_Gen_Item *item1 = data1;
+
+ return it->wd->item_compare_data_cb(it->base.data, item1->base.data);
+}
+
+static int
++=======
++>>>>>>> remotes/origin/upstream
_elm_gengrid_item_compare(const void *data, const void *data1)
{
Elm_Gen_Item *it, *item1;
static void
_item_disable_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return;
static void
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ if ((_it->relcount > 0) || (_it->walking > 0))
+ {
+ _elm_gengrid_item_del_notserious(_it);
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if ((_it->relcount > 0) || (_it->walking > 0))
+ {
+ _elm_genlist_item_del_notserious(_it);
++>>>>>>> remotes/origin/upstream
return;
}
_item_del(_it);
}
++<<<<<<< HEAD
+#if 1
+void
+_item_select(Elm_Gen_Item *it)
+{
+ if ((it->wd->no_select) || (it->generation < it->wd->generation) || (it->mode_set)) return;
+ if (!it->selected)
+ {
+ it->selected = EINA_TRUE;
+ it->wd->selected = eina_list_append(it->wd->selected, it);
+ }
+ else if (!it->wd->always_select) return;
+
+ evas_object_ref(WIDGET(it));
+ it->walking++;
+ it->wd->walking++;
+ if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
+ if (it->generation == it->wd->generation)
+ evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
+ it->walking--;
+ it->wd->walking--;
+ evas_object_unref(WIDGET(it));
+ if ((it->wd->clear_me) && (!it->wd->walking))
+ _elm_gengrid_clear(WIDGET(it), EINA_TRUE);
+ else
+ {
+ if ((!it->walking) && (it->generation < it->wd->generation))
+ {
+ if (!it->relcount)
+ {
+ it->del_cb(it);
+ elm_widget_item_free(it);
+ }
+ }
+ else
+ it->wd->last_selected_item = (Elm_Object_Item *) it;
+ }
+}
+
+static Evas_Object *
+_item_content_get_hook(Elm_Gen_Item *it, const char *part)
+{
+ return edje_object_part_swallow_get(VIEW(it), part);
+}
+
+static void
+_item_content_set_hook(Elm_Gen_Item *it, const char *part, Evas_Object *content)
+{
+ edje_object_part_swallow(VIEW(it), part, content);
+}
+
+static Evas_Object *
+_item_content_unset_hook(Elm_Gen_Item *it, const char *part)
+{
+ Evas_Object *obj;
+
+ obj = edje_object_part_swallow_get(VIEW(it), part);
+ if (!obj) return NULL;
+ edje_object_part_unswallow(VIEW(it), obj);
+ return obj;
+}
+
+static const char *
+_item_text_hook(Elm_Gen_Item *it, const char *part)
+{
+ if (!it->itc->func.text_get) return NULL;
+ return edje_object_part_text_get(VIEW(it), part);
+}
+
+Elm_Gen_Item *
+_elm_gengrid_item_new(Widget_Data *wd,
+ const Elm_Gen_Item_Class *itc,
+ const void *data,
+ Elm_Gen_Item *parent,
+ Evas_Smart_Cb func,
+ const void *func_data)
+{
+ Elm_Gen_Item *it;
+
+ it = elm_widget_item_new(wd->obj, Elm_Gen_Item);
+ if (!it) return NULL;
+ it->wd = wd;
+ it->generation = wd->generation;
+ it->itc = itc;
+ it->base.data = data;
+ it->parent = parent;
+ it->func.func = func;
+ it->func.data = func_data;
+ elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
+ elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
+ elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
+ //elm_widget_item_disable_hook_set(it, _item_disable_hook);
+ //elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
+ /* TEMPORARY */
+ it->sel_cb = (Ecore_Cb)_item_select;
+
+ elm_widget_item_text_get_hook_set(it, _item_text_hook);
+ return it;
+}
+#endif
+
++=======
++>>>>>>> remotes/origin/upstream
static Elm_Gen_Item *
_item_new(Widget_Data *wd,
const Elm_Gengrid_Item_Class *itc,
{
Elm_Gen_Item *it;
++<<<<<<< HEAD
+#if 0
+ it = _elm_genlist_item_new(wd, itc, data, NULL, func, func_data);
+#else
+ it = _elm_gengrid_item_new(wd, itc, data, NULL, func, func_data);
+#endif
+ if (!it) return NULL;
+ elm_widget_item_disable_hook_set(it, _item_disable_hook);
+ elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
+ it->item = ELM_NEW(Elm_Gen_Item_Type);
+ wd->count++;
++=======
+ it = _elm_genlist_item_new(wd, itc, data, NULL, func, func_data);
+ if (!it) return NULL;
+ elm_widget_item_disable_hook_set(it, _item_disable_hook);
+ elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
+ elm_gengrid_item_class_ref((Elm_Gengrid_Item_Class *)itc);
+ it->item = ELM_NEW(Elm_Gen_Item_Type);
+ wd->item_count++;
++>>>>>>> remotes/origin/upstream
it->group = it->itc->item_style && (!strcmp(it->itc->item_style, "group_index"));
ELM_GEN_ITEM_SETUP(it);
elm_smart_scroller_object_theme_set(obj, wd->scr, "gengrid", "base",
"default");
elm_smart_scroller_bounce_allow_set(wd->scr, bounce,
++<<<<<<< HEAD
+ _elm_config->thumbscroll_bounce_enable);
++=======
+ _elm_config->thumbscroll_bounce_enable);
++>>>>>>> remotes/origin/upstream
elm_widget_resize_object_set(obj, wd->scr);
evas_object_smart_callback_add(wd->scr, "animate,start", _scr_anim_start, obj);
it = _item_new(wd, itc, data, func, func_data);
if (!it) return NULL;
wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
++<<<<<<< HEAD
++=======
+ it->position = eina_inlist_count(wd->items);
+ it->position_update = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
if (it->group)
wd->group_items = eina_list_prepend(wd->group_items, it);
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
it = _item_new(wd, itc, data, func, func_data);
if (!it) return NULL;
wd->items = eina_inlist_prepend(wd->items, EINA_INLIST_GET(it));
++<<<<<<< HEAD
++=======
+ _item_position_update(wd->items, 0);
+
++>>>>>>> remotes/origin/upstream
if (it->group)
wd->group_items = eina_list_append(wd->group_items, it);
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
if (!it) return NULL;
wd->items = eina_inlist_prepend_relative
(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET((Elm_Gen_Item *) relative));
++<<<<<<< HEAD
++=======
+ Eina_Inlist *tmp = eina_inlist_find(wd->items, EINA_INLIST_GET(it));
+ _item_position_update(tmp, ((Elm_Gen_Item *)relative)->position);
+
++>>>>>>> remotes/origin/upstream
if (it->group)
wd->group_items = eina_list_append_relative(wd->group_items, it, ((Elm_Gen_Item *) relative)->parent);
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
if (!it) return NULL;
wd->items = eina_inlist_append_relative
(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET((Elm_Gen_Item *) relative));
++<<<<<<< HEAD
++=======
+ Eina_Inlist *tmp = eina_inlist_find(wd->items, EINA_INLIST_GET(it));
+ _item_position_update(tmp, ((Elm_Gen_Item *)relative)->position+1);
+
++>>>>>>> remotes/origin/upstream
if (it->group)
wd->group_items = eina_list_prepend_relative(wd->group_items, it, ((Elm_Gen_Item *) relative)->parent);
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
+}
+
+EAPI Elm_Object_Item *
+elm_gengrid_item_direct_sorted_insert(Evas_Object *obj,
+ const Elm_Gengrid_Item_Class *itc,
+ const void *data,
+ Eina_Compare_Cb comp,
+ Evas_Smart_Cb func,
+ const void *func_data)
++=======
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_gengrid_item_sorted_insert(Evas_Object *obj,
+ const Elm_Gengrid_Item_Class *itc,
+ const void *data,
+ Eina_Compare_Cb comp,
+ Evas_Smart_Cb func,
+ const void *func_data)
++>>>>>>> remotes/origin/upstream
{
Elm_Gen_Item *it;
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
wd->item_compare_cb = comp;
wd->items = eina_inlist_sorted_state_insert(wd->items, EINA_INLIST_GET(it),
_elm_gengrid_item_compare, wd->state);
++<<<<<<< HEAD
+ if (wd->calc_job) ecore_job_del(wd->calc_job);
+ wd->calc_job = ecore_job_add(_calc_job, wd);
+
+ return (Elm_Object_Item *) it;
+}
+
+EAPI Elm_Object_Item *
+elm_gengrid_item_sorted_insert(Evas_Object *obj,
+ const Elm_Gengrid_Item_Class *itc,
+ const void *data,
+ Eina_Compare_Cb comp,
+ Evas_Smart_Cb func,
+ const void *func_data)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ wd->item_compare_data_cb = comp;
+
+ return elm_gengrid_item_direct_sorted_insert(obj, itc, data, _elm_gengrid_item_compare_data, func, func_data);
++=======
+ _item_position_update(wd->items, 0);
+
+ if (wd->calc_job) ecore_job_del(wd->calc_job);
+ wd->calc_job = ecore_job_add(_calc_job, wd);
+
+ return (Elm_Object_Item *)it;
+ }
+
+ EINA_DEPRECATED Elm_Object_Item *
+ elm_gengrid_item_direct_sorted_insert(Evas_Object *obj,
+ const Elm_Gengrid_Item_Class *itc,
+ const void *data,
+ Eina_Compare_Cb comp,
+ Evas_Smart_Cb func,
+ const void *func_data)
+ {
+ return elm_gengrid_item_sorted_insert(obj, itc, data, comp, func, func_data);
++>>>>>>> remotes/origin/upstream
}
EAPI void
EAPI void
elm_gengrid_horizontal_set(Evas_Object *obj,
++<<<<<<< HEAD
+ Eina_Bool setting)
++=======
+ Eina_Bool horizontal)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (setting == wd->horizontal) return;
+ wd->horizontal = setting;
++=======
+ horizontal = !!horizontal;
+ if (horizontal == wd->horizontal) return;
+ wd->horizontal = horizontal;
++>>>>>>> remotes/origin/upstream
/* Update the items to conform to the new layout */
if (wd->calc_job) ecore_job_del(wd->calc_job);
return wd->horizontal;
}
++<<<<<<< HEAD
+#if 1
+static void
+_elm_gengrid_clear(Evas_Object *obj, Eina_Bool standby)
+{
+ Eina_Inlist *next, *l;
+
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (!standby) wd->generation++;
+
+ if (wd->state)
+ {
+ eina_inlist_sorted_state_free(wd->state);
+ wd->state = NULL;
+ }
+
+ if (wd->walking > 0)
+ {
+ wd->clear_me = 1;
+ return;
+ }
+ evas_event_freeze(evas_object_evas_get(wd->obj));
+ for (l = wd->items, next = l ? l->next : NULL;
+ l;
+ l = next, next = next ? next->next : NULL)
+ {
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(l);
+
+ if (it->generation < wd->generation)
+ {
+ Elm_Gen_Item *itn = NULL;
+
+ if (next) itn = ELM_GEN_ITEM_FROM_INLIST(next);
+ if (itn) itn->walking++; /* prevent early death of subitem */
+ it->del_cb(it);
+ elm_widget_item_free(it);
+ if (itn) itn->walking--;
+ }
+ }
+ wd->clear_me = 0;
+ wd->pan_changed = EINA_TRUE;
+ if (wd->calc_job)
+ {
+ ecore_job_del(wd->calc_job);
+ wd->calc_job = NULL;
+ }
+ if (wd->selected) wd->selected = eina_list_free(wd->selected);
+ if (wd->clear_cb) wd->clear_cb(wd);
+ wd->pan_x = 0;
+ wd->pan_y = 0;
+ wd->minw = 0;
+ wd->minh = 0;
+ wd->count = 0;
+ if (wd->pan_smart)
+ {
+ evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh);
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ }
+ if (wd->sizing_cb) wd->sizing_cb(wd->obj);
+ elm_smart_scroller_child_region_show(wd->scr, 0, 0, 0, 0);
+ evas_event_thaw(evas_object_evas_get(wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(wd->obj));
+}
+#endif
+
+EAPI void
+elm_gengrid_clear(Evas_Object *obj)
+{
+#if 0
+ elm_genlist_clear(obj);
+#else
+ _elm_gengrid_clear(obj, EINA_FALSE);
+#endif
+}
+
+EAPI const Evas_Object *
++=======
+ EAPI void
+ elm_gengrid_clear(Evas_Object *obj)
+ {
+ elm_genlist_clear(obj);
+ }
+
+ EINA_DEPRECATED EAPI const Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_gengrid_item_object_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
elm_gengrid_item_update(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ if (!_it->realized) return;
+ if (_it->want_unrealize) return;
+ _elm_gengrid_item_unrealize(_it, EINA_FALSE);
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if (!_it->realized) return;
+ if (_it->want_unrealize) return;
+ _elm_genlist_item_unrealize(_it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
_item_realize(_it);
_item_place(_it, _it->x, _it->y);
}
EAPI const Elm_Gengrid_Item_Class *
elm_gengrid_item_item_class_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ if (_it->generation < _it->wd->generation) return NULL;
+ return _it->itc;
+}
+
+EAPI void
+elm_gengrid_item_item_class_set(Elm_Object_Item *it,
+ const Elm_Gengrid_Item_Class *itc)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ EINA_SAFETY_ON_NULL_RETURN(itc);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ return (Elm_Gengrid_Item_Class *) elm_genlist_item_item_class_get(it);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_gengrid_item_item_class_set(Elm_Object_Item *it,
+ const Elm_Gengrid_Item_Class *itc)
+ {
+ elm_gengrid_item_item_class_update(it, itc);
+ }
+
+ EAPI void
+ elm_gengrid_item_item_class_update(Elm_Object_Item *it,
+ const Elm_Gengrid_Item_Class *itc)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ EINA_SAFETY_ON_NULL_RETURN(itc);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return;
_it->itc = itc;
elm_gengrid_item_update(it);
unsigned int *y)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ if (x) *x = ((Elm_Gen_Item *) it)->x;
+ if (y) *y = ((Elm_Gen_Item *) it)->y;
++=======
+ if (x) *x = ((Elm_Gen_Item *)it)->x;
+ if (y) *y = ((Elm_Gen_Item *)it)->y;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->multi = multi;
++=======
+ wd->multi = !!multi;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
EAPI const Eina_List *
elm_gengrid_selected_items_get(const Evas_Object *obj)
{
++<<<<<<< HEAD
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return wd->selected;
++=======
+ return elm_genlist_selected_items_get(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_item_selected_set(Elm_Object_Item *it,
Eina_Bool selected)
{
++<<<<<<< HEAD
+#if 0
elm_genlist_item_selected_set(it, selected);
+#else
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ Widget_Data *wd = _it->wd;
+ if (!wd) return;
+ if ((_it->generation < wd->generation) || elm_widget_item_disabled_get(_it))
+ return;
+ selected = !!selected;
+ if (_it->selected == selected) return;
+
+ if (selected)
+ {
+ if (!wd->multi)
+ {
+ while (wd->selected)
+ {
+ if (_it->unhighlight_cb) _it->unhighlight_cb(wd->selected->data);
+ _it->unsel_cb(wd->selected->data);
+ }
+ }
+ _it->highlight_cb(_it);
+ _item_select(_it);
+ return;
+ }
+ if (_it->unhighlight_cb) _it->unhighlight_cb(_it);
+ _it->unsel_cb(_it);
+#endif
++=======
++ elm_genlist_item_selected_set(it, selected);
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
elm_gengrid_item_selected_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+#if 0
+ return elm_genlist_item_selected_get(it);
+#else
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ return ((Elm_Gen_Item *) it)->selected;
+#endif
++=======
+ return elm_genlist_item_selected_get(it);
+ }
+
+ EAPI Eina_List *
+ elm_gengrid_realized_items_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_List *list = NULL;
+ Elm_Gen_Item *it;
+
+ EINA_INLIST_FOREACH(wd->items, it)
+ {
+ if (it->realized) list = eina_list_append(list, (Elm_Object_Item *)it);
+ }
+ return list;
+ }
+
+ EAPI void
+ elm_gengrid_realized_items_update(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Eina_List *list, *l;
+ Elm_Object_Item *it;
+
+ list = elm_gengrid_realized_items_get(obj);
+ EINA_LIST_FOREACH(list, l, it)
+ elm_gengrid_item_update(it);
++>>>>>>> remotes/origin/upstream
}
EAPI void
Evas_Smart_Cb del_cb)
{
ELM_OBJ_ITEM_CHECK_OR_GOTO(it, error);
++<<<<<<< HEAD
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((_it->tooltip.content_cb == func) && (_it->tooltip.data == data))
return;
elm_gengrid_item_tooltip_unset(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((VIEW(_it)) && (_it->tooltip.content_cb))
elm_widget_item_tooltip_unset(_it);
const char *style)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ eina_stringshare_replace(&((Elm_Gen_Item *) it)->tooltip.style, style);
++=======
+ eina_stringshare_replace(&((Elm_Gen_Item *)it)->tooltip.style, style);
++>>>>>>> remotes/origin/upstream
if (VIEW(it)) elm_widget_item_tooltip_style_set(it, style);
}
elm_gengrid_item_tooltip_style_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return ((Elm_Gen_Item *) it)->tooltip.style;
++=======
+ return ((Elm_Gen_Item *)it)->tooltip.style;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
elm_gengrid_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ ((Elm_Gen_Item *) it)->tooltip.free_size = disable;
++=======
+ ((Elm_Gen_Item *)it)->tooltip.free_size = disable;
++>>>>>>> remotes/origin/upstream
if (VIEW(it)) return elm_widget_item_tooltip_window_mode_set(it, disable);
return EINA_TRUE;
}
elm_gengrid_item_tooltip_window_mode_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Gen_Item *) it)->tooltip.free_size;
++=======
+ return ((Elm_Gen_Item *)it)->tooltip.free_size;
++>>>>>>> remotes/origin/upstream
}
EAPI void
const char *cursor)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ eina_stringshare_replace(&((Elm_Gen_Item *) it)->mouse_cursor, cursor);
++=======
+ eina_stringshare_replace(&((Elm_Gen_Item *)it)->mouse_cursor, cursor);
++>>>>>>> remotes/origin/upstream
if (VIEW(it)) elm_widget_item_cursor_set(it, cursor);
}
EAPI const char *
elm_gengrid_item_cursor_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_get(it);
}
elm_gengrid_item_cursor_unset(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!_it->mouse_cursor)
return;
elm_gengrid_item_cursor_style_set(Elm_Object_Item *it,
const char *style)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
elm_widget_item_cursor_style_set(it, style);
}
EAPI const char *
elm_gengrid_item_cursor_style_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_style_get(it);
}
elm_gengrid_item_cursor_engine_only_set(Elm_Object_Item *it,
Eina_Bool engine_only)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
elm_widget_item_cursor_engine_only_set(it, engine_only);
}
EAPI Eina_Bool
elm_gengrid_item_cursor_engine_only_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_engine_only_get(it);
}
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->reorder_mode = reorder_mode;
++=======
+ wd->reorder_mode = !!reorder_mode;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
return wd->reorder_mode;
}
++<<<<<<< HEAD
+EAPI void
+elm_gengrid_always_select_mode_set(Evas_Object *obj,
+ Eina_Bool always_select)
+{
+#if 0
+ elm_genlist_always_select_mode_set(obj, always_select);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->always_select = always_select;
+#endif
+}
+
+EAPI Eina_Bool
+elm_gengrid_always_select_mode_get(const Evas_Object *obj)
+{
+#if 0
+ return elm_genlist_always_select_mode_get(obj);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->always_select;
+#endif
+}
+
+EAPI void
+elm_gengrid_no_select_mode_set(Evas_Object *obj,
+ Eina_Bool no_select)
+{
+#if 0
+ elm_genlist_no_select_mode_set(obj, no_select);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->no_select = no_select;
+#endif
+}
+
+EAPI Eina_Bool
+elm_gengrid_no_select_mode_get(const Evas_Object *obj)
+{
+#if 0
+ return elm_genlist_no_select_mode_get(obj);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->no_select;
+#endif
++=======
+ EINA_DEPRECATED EAPI void
+ elm_gengrid_always_select_mode_set(Evas_Object *obj,
+ Eina_Bool always_select)
+ {
+ if (always_select)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_gengrid_always_select_mode_get(const Evas_Object *obj)
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_gengrid_no_select_mode_set(Evas_Object *obj,
+ Eina_Bool no_select)
+ {
+ if (no_select)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_gengrid_no_select_mode_get(const Evas_Object *obj)
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
Eina_Bool h_bounce,
Eina_Bool v_bounce)
{
++<<<<<<< HEAD
+#if 0
+ elm_genlist_bounce_set(obj, h_bounce, v_bounce);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ elm_smart_scroller_bounce_allow_set(wd->scr, h_bounce, v_bounce);
+ wd->h_bounce = h_bounce;
+ wd->v_bounce = v_bounce;
+#endif
++=======
+ elm_genlist_bounce_set(obj, h_bounce, v_bounce);
++>>>>>>> remotes/origin/upstream
}
EAPI void
Eina_Bool *h_bounce,
Eina_Bool *v_bounce)
{
++<<<<<<< HEAD
+#if 0
+ elm_genlist_bounce_get(obj, h_bounce, v_bounce);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (h_bounce) *h_bounce = wd->h_bounce;
+ if (v_bounce) *v_bounce = wd->v_bounce;
+#endif
++=======
+ elm_genlist_bounce_get(obj, h_bounce, v_bounce);
++>>>>>>> remotes/origin/upstream
}
EAPI void
double h_pagerel,
double v_pagerel)
{
++<<<<<<< HEAD
+#if 0
_elm_genlist_page_relative_set(obj, h_pagerel, v_pagerel);
+#else
+ Evas_Coord pagesize_h;
+ Evas_Coord pagesize_v;
+
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ elm_smart_scroller_paging_get(wd->scr, NULL, NULL, &pagesize_h, &pagesize_v);
+ elm_smart_scroller_paging_set(wd->scr, h_pagerel, v_pagerel, pagesize_h,
+ pagesize_v);
+#endif
++=======
++ _elm_genlist_page_relative_set(obj, h_pagerel, v_pagerel);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel)
{
++<<<<<<< HEAD
+#if 0
_elm_genlist_page_relative_get(obj, h_pagerel, v_pagerel);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ elm_smart_scroller_paging_get(wd->scr, h_pagerel, v_pagerel, NULL, NULL);
+#endif
++=======
++ _elm_genlist_page_relative_get(obj, h_pagerel, v_pagerel);
++>>>>>>> remotes/origin/upstream
}
EAPI void
Evas_Coord h_pagesize,
Evas_Coord v_pagesize)
{
++<<<<<<< HEAD
+#if 0
_elm_genlist_page_size_set(obj, h_pagesize, v_pagesize);
+#else
+ double pagerel_h;
+ double pagerel_v;
+
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ elm_smart_scroller_paging_get(wd->scr, &pagerel_h, &pagerel_v, NULL, NULL);
+ elm_smart_scroller_paging_set(wd->scr, pagerel_h, pagerel_v, h_pagesize,
+ v_pagesize);
+#endif
++=======
++ _elm_genlist_page_size_set(obj, h_pagesize, v_pagesize);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber)
{
++<<<<<<< HEAD
+#if 0
_elm_genlist_current_page_get(obj, h_pagenumber, v_pagenumber);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->scr)
+ elm_smart_scroller_current_page_get(wd->scr, h_pagenumber, v_pagenumber);
+#endif
++=======
++ _elm_genlist_current_page_get(obj, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber)
{
++<<<<<<< HEAD
+#if 0
+ _elm_genlist_last_page_get(obj, h_pagenumber, v_pagenumber);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->scr)
+ elm_smart_scroller_last_page_get(wd->scr, h_pagenumber, v_pagenumber);
+#endif
++=======
+ _elm_genlist_last_page_get(obj, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber)
{
++<<<<<<< HEAD
+#if 0
+ _elm_genlist_page_show(obj, h_pagenumber, v_pagenumber);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->scr)
+ elm_smart_scroller_page_show(wd->scr, h_pagenumber, v_pagenumber);
+#endif
++=======
+ _elm_genlist_page_show(obj, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber)
{
++<<<<<<< HEAD
+#if 0
+ _elm_genlist_page_bring_in(obj, h_pagenumber, v_pagenumber);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->scr)
+ elm_smart_scroller_page_bring_in(wd->scr, h_pagenumber, v_pagenumber);
+#endif
++=======
+ _elm_genlist_page_bring_in(obj, h_pagenumber, v_pagenumber);
+ }
+
+ EAPI void
+ elm_gengrid_scroller_policy_set(Evas_Object *obj,
+ Elm_Scroller_Policy policy_h,
+ Elm_Scroller_Policy policy_v)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if ((!wd) || (!wd->scr)) return;
+ if ((policy_h >= ELM_SCROLLER_POLICY_LAST) ||
+ (policy_v >= ELM_SCROLLER_POLICY_LAST))
+ return;
+ elm_smart_scroller_policy_set(wd->scr, policy_h, policy_v);
+ }
+
+ EAPI void
+ elm_gengrid_scroller_policy_get(const Evas_Object *obj,
+ Elm_Scroller_Policy *policy_h,
+ Elm_Scroller_Policy *policy_v)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Smart_Scroller_Policy s_policy_h, s_policy_v;
+ if ((!wd) || (!wd->scr)) return;
+ elm_smart_scroller_policy_get(wd->scr, &s_policy_h, &s_policy_v);
+ if (policy_h) *policy_h = (Elm_Scroller_Policy)s_policy_h;
+ if (policy_v) *policy_v = (Elm_Scroller_Policy)s_policy_v;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_gengrid_first_item_get(const Evas_Object *obj)
{
++<<<<<<< HEAD
+#if 0
+ return elm_genlist_first_item_get(obj);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (!wd->items) return NULL;
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ return (Elm_Object_Item *) it;
+#endif
++=======
+ return elm_genlist_first_item_get(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_gengrid_last_item_get(const Evas_Object *obj)
{
++<<<<<<< HEAD
+#if 0
return elm_genlist_last_item_get(obj);
+#else
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (!wd->items) return NULL;
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items->last);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ return (Elm_Object_Item *) it;
+#endif
++=======
++ return elm_genlist_last_item_get(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_gengrid_item_next_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+#if 0
+ return elm_genlist_item_next_get(it);
+#else
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ while (_it)
+ {
+ _it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->next);
+ if ((_it) && (_it->generation == _it->wd->generation)) break;
+ }
+ return (Elm_Object_Item *) _it;
+#endif
++=======
+ return elm_genlist_item_next_get(it);
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_gengrid_item_prev_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+#if 0
+ return elm_genlist_item_prev_get(it);
+#else
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+ while (_it)
+ {
+ _it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->prev);
+ if ((_it) && (_it->generation == _it->wd->generation)) break;
+ }
+ return (Elm_Object_Item *) _it;
+#endif
++=======
+ return elm_genlist_item_prev_get(it);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
}
EAPI void
++<<<<<<< HEAD
+elm_gengrid_item_show(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ elm_gengrid_item_show(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = _it->wd;
Evas_Coord minx = 0, miny = 0;
if ((_it->generation < _it->wd->generation)) return;
_pan_min_get(wd->pan_smart, &minx, &miny);
++<<<<<<< HEAD
++=======
+ if (type==ELM_GENGRID_ITEM_SCROLLTO_IN)
+ {
+ //TODO : type based handling like genlist
+ }
+
++>>>>>>> remotes/origin/upstream
if (wd->horizontal)
elm_smart_scroller_region_bring_in(_it->wd->scr,
((_it->x - _it->item->prev_group) * wd->item_width) + (_it->item->prev_group * _it->wd->group_item_width) + minx,
}
EAPI void
++<<<<<<< HEAD
+elm_gengrid_item_bring_in(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
++=======
+ elm_gengrid_item_bring_in(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return;
Widget_Data *wd = _it->wd;
_pan_min_get(wd->pan_smart, &minx, &miny);
++<<<<<<< HEAD
++=======
+ if (type==ELM_GENGRID_ITEM_SCROLLTO_IN)
+ {
+ //TODO : type based handling like genlist
+ }
+
++>>>>>>> remotes/origin/upstream
if (wd->horizontal)
elm_smart_scroller_region_bring_in(_it->wd->scr,
((_it->x - _it->item->prev_group) * wd->item_width) + (_it->item->prev_group * _it->wd->group_item_width) + minx,
return wd->filled;
}
++<<<<<<< HEAD
+#if 1
+void
+_elm_gengrid_item_unrealize(Elm_Gen_Item *it,
+ Eina_Bool calc)
+{
+ Evas_Object *content;
+
+ if (!it->realized) return;
+ if (it->wd->reorder_it == it) return;
+ evas_event_freeze(evas_object_evas_get(WIDGET(it)));
+ if (!calc)
+ evas_object_smart_callback_call(WIDGET(it), SIG_UNREALIZED, it);
+ if (it->long_timer)
+ {
+ ecore_timer_del(it->long_timer);
+ it->long_timer = NULL;
+ }
+
+ elm_widget_stringlist_free(it->texts);
+ it->texts = NULL;
+ elm_widget_stringlist_free(it->contents);
+ it->contents = NULL;
+ elm_widget_stringlist_free(it->states);
+ it->states = NULL;
+
+ EINA_LIST_FREE(it->content_objs, content)
+ evas_object_del(content);
+
+ it->unrealize_cb(it);
+
+ it->realized = EINA_FALSE;
+ it->want_unrealize = EINA_FALSE;
+ evas_event_thaw(evas_object_evas_get(WIDGET(it)));
+ evas_event_thaw_eval(evas_object_evas_get(WIDGET(it)));
+}
+
+void
+_elm_gengrid_item_del_notserious(Elm_Gen_Item *it)
+{
+ elm_widget_item_pre_notify_del(it);
+ it->generation = it->wd->generation - 1; /* This means that the item is deleted */
+ if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it);
+
+ if (it->itc->func.del)
+ it->itc->func.del((void *)it->base.data, WIDGET(it));
+}
+
+void
+_elm_gengrid_item_del_serious(Elm_Gen_Item *it)
+{
+ _elm_gengrid_item_del_notserious(it);
+ it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ if (it->tooltip.del_cb)
+ it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it);
+ it->wd->walking -= it->walking;
+ if (it->long_timer) ecore_timer_del(it->long_timer);
+ if (it->group)
+ it->wd->group_items = eina_list_remove(it->wd->group_items, it);
+
+ if (it->wd->state)
+ {
+ eina_inlist_sorted_state_free(it->wd->state);
+ it->wd->state = NULL;
+ }
+ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
+ it->wd->calc_job = ecore_job_add(it->wd->calc_cb, it->wd);
+ free(it->item);
+
+ it->item = NULL;
+ if (it->wd->last_selected_item == (Elm_Object_Item *) it)
+ it->wd->last_selected_item = NULL;
+}
+#endif
++=======
+ EAPI unsigned int
+ elm_gengrid_items_count(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+ return wd->item_count;
+ }
+
+ EAPI Elm_Gengrid_Item_Class *
+ elm_gengrid_item_class_new(void)
+ {
+ Elm_Gengrid_Item_Class *itc;
+
+ itc = calloc(1, sizeof(Elm_Gengrid_Item_Class));
+ if (!itc)
+ return NULL;
+ itc->version = CLASS_ALLOCATED;
+ itc->refcount = 1;
+ itc->delete_me = EINA_FALSE;
+
+ return itc;
+ }
+
+ EAPI void
+ elm_gengrid_item_class_free(Elm_Gengrid_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ if (!itc->delete_me) itc->delete_me = EINA_TRUE;
+ if (itc->refcount > 0) elm_gengrid_item_class_unref(itc);
+ else
+ {
+ itc->version = 0;
+ free(itc);
+ }
+ }
+ }
+
+ EAPI void
+ elm_gengrid_item_class_ref(Elm_Gengrid_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ itc->refcount++;
+ if (itc->refcount == 0) itc->refcount--;
+ }
+ }
+
+ EAPI void
+ elm_gengrid_item_class_unref(Elm_Gengrid_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ if (itc->refcount > 0) itc->refcount--;
+ if (itc->delete_me && (!itc->refcount))
+ elm_gengrid_item_class_free(itc);
+ }
+ }
+
+ EAPI void
+ elm_gengrid_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode)
+ {
+ elm_genlist_select_mode_set(obj, mode);
+ }
+
+ EAPI Elm_Object_Select_Mode
+ elm_gengrid_select_mode_get(const Evas_Object *obj)
+ {
+ return elm_genlist_select_mode_get(obj);
+ }
+
+ EAPI void
+ elm_gengrid_highlight_mode_set(Evas_Object *obj,
+ Eina_Bool highlight)
+ {
+ elm_genlist_highlight_mode_set(obj, highlight);
+ }
+
+ EAPI Eina_Bool
+ elm_gengrid_highlight_mode_get(const Evas_Object *obj)
+ {
+ return elm_genlist_highlight_mode_get(obj);
+ }
+
+ EAPI int
+ elm_gengrid_item_index_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, -1);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ return _it->position;
+ }
++>>>>>>> remotes/origin/upstream
++<<<<<<< HEAD
+// XXX: elm_gengrid - make sure api's match 1:1 with genlist api's
+// for eventual move to back-end of gengrid == genlist (in grid mode)
++=======
++>>>>>>> remotes/origin/upstream
/**
* @defgroup Gengrid Gengrid (Generic grid)
*
* of the state parts in the Edje group implementing the item's
* theme. Return @c EINA_FALSE for false/off or @c EINA_TRUE for
* true/on. Gengrids will emit a signal to its theming Edje object
++<<<<<<< HEAD
+ * with @c "elm,state,XXX,active" and @c "elm" as "emission" and
+ * "source" arguments, respectively, when the state is true (the
+ * default is false), where @c XXX is the name of the (state) part.
++=======
+ * with @c "elm,state,xxx,active" and @c "elm" as "emission" and
+ * "source" arguments, respectively, when the state is true (the
+ * default is false), where @c xxx is the name of the (state) part.
++>>>>>>> remotes/origin/upstream
* See #Elm_Gengrid_Item_State_Get_Cb.
* - @c func.del - This is called when elm_object_item_del() is
* called on an item or elm_gengrid_clear() is called on the
* Grid cells will only have their selection smart callbacks called
* when firstly getting selected. Any further clicks will do
* nothing, unless you enable the "always select mode", with
++<<<<<<< HEAD
+ * elm_gengrid_always_select_mode_set(), thus making every click to
+ * issue selection callbacks. elm_gengrid_no_select_mode_set() will
++=======
+ * elm_gengrid_select_mode_set() as ELM_OBJECT_SELECT_MODE_ALWAYS,
+ * thus making every click to issue selection callbacks.
+ * elm_gengrid_select_mode_set() as ELM_OBJECT_SELECT_MODE_NONE will
++>>>>>>> remotes/origin/upstream
* turn off the ability to select items entirely in the widget and
* they will neither appear selected nor call the selection smart
* callbacks.
* @{
*/
++<<<<<<< HEAD
+typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */
+#define Elm_Gengrid_Item_Class Elm_Gen_Item_Class
+typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */
+
+/**
+ * Text fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The allocated (NOT stringshared) string to set as the text
+ */
+typedef char *(*Elm_Gengrid_Item_Text_Get_Cb)(void *data, Evas_Object *obj, const char *part);
+
+/**
+ * Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The content object to swallow
+ */
+typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb)(void *data, Evas_Object *obj, const char *part);
+
+/**
+ * State fetching class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ * @param part The part name of the swallow
+ * @return The hell if I know
+ */
+typedef Eina_Bool (*Elm_Gengrid_Item_State_Get_Cb)(void *data, Evas_Object *obj, const char *part);
+
+/**
+ * Deletion class function for Elm_Gen_Item_Class.
+ * @param data The data passed in the item creation function
+ * @param obj The base widget object
+ */
+typedef void (*Elm_Gengrid_Item_Del_Cb)(void *data, Evas_Object *obj);
+
+/**
+ * @struct _Elm_Gengrid_Item_Class
+ *
+ * Gengrid item class definition. See @ref Gengrid_Item_Class for
+ * field details.
+ */
+struct _Elm_Gengrid_Item_Class
+{
+ const char *item_style;
+ struct _Elm_Gengrid_Item_Class_Func
+ {
+ Elm_Gengrid_Item_Text_Get_Cb text_get; /**< Text fetching class function for gengrid item classes.*/
+ Elm_Gengrid_Item_Content_Get_Cb content_get; /**< Content fetching class function for gengrid item classes. */
+ Elm_Gengrid_Item_State_Get_Cb state_get; /**< State fetching class function for gengrid item classes. */
+ Elm_Gengrid_Item_Del_Cb del; /**< Deletion class function for gengrid item classes. */
+ } func;
+}; /**< #Elm_Gengrid_Item_Class member definitions */
+#define Elm_Gengrid_Item_Class_Func Elm_Gen_Item_Class_Func
++=======
+ #define ELM_GENGRID_ITEM_CLASS_VERSION ELM_GEN_ITEM_CLASS_VERSION
+ #define ELM_GENGRID_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_HEADER
+
+ /**
+ * Defines where to position the item in the genlist.
+ *
+ * @ingroup Genlist
+ */
+ typedef enum
+ {
+ ELM_GENGRID_ITEM_SCROLLTO_NONE = 0, /**< no scrollto */
+ ELM_GENGRID_ITEM_SCROLLTO_IN = (1 << 0), /**< to the nearest viewport */
+ ELM_GENGRID_ITEM_SCROLLTO_TOP = (1 << 1), /**< to the top of viewport */
+ ELM_GENGRID_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< to the middle of viewport */
+ } Elm_Gengrid_Item_Scrollto_Type;
+
+
+ /**
+ * @see Elm_Gen_Item_Class
+ */
+ typedef Elm_Gen_Item_Class Elm_Gengrid_Item_Class;
+
+ /**
+ * @see Elm_Gen_Item_Text_Get_Cb
+ */
+ typedef Elm_Gen_Item_Text_Get_Cb Elm_Gengrid_Item_Text_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_Content_Get_Cb
+ */
+ typedef Elm_Gen_Item_Content_Get_Cb Elm_Gengrid_Item_Content_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_State_Get_Cb
+ */
+ typedef Elm_Gen_Item_State_Get_Cb Elm_Gengrid_Item_State_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_Del_Cb
+ */
+ typedef Elm_Gen_Item_Del_Cb Elm_Gengrid_Item_Del_Cb;
++>>>>>>> remotes/origin/upstream
/**
* Add a new gengrid widget to the given parent Elementary
EAPI Evas_Object *elm_gengrid_add(Evas_Object *parent);
/**
- * @note By default, multi-selection is @b disabled on gengrids
++<<<<<<< HEAD
+ * Set the size for the items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w The items' width.
+ * @param h The items' height;
+ *
+ * A gengrid, after creation, has still no information on the size
+ * to give to each of its cells. So, you most probably will end up
+ * with squares one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for you items,
+ * making them as big as you wish.
+ *
+ * @see elm_gengrid_item_size_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * Get the size set for the items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w Pointer to a variable where to store the items' width.
+ * @param h Pointer to a variable where to store the items' height.
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_item_size_get() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * Set the size for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w The group items' width.
+ * @param h The group items' height;
+ *
+ * A gengrid, after creation, has still no information on the size
+ * to give to each of its cells. So, you most probably will end up
+ * with squares one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for you group items,
+ * making them as big as you wish.
+ *
+ * @see elm_gengrid_group_item_size_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_group_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+/**
+ * Get the size set for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w Pointer to a variable where to store the group items' width.
+ * @param h Pointer to a variable where to store the group items' height.
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_group_item_size_get() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_group_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+/**
+ * Set the items grid's alignment within a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param align_x Alignment in the horizontal axis (0 <= align_x <= 1).
+ * @param align_y Alignment in the vertical axis (0 <= align_y <= 1).
+ *
+ * This sets the alignment of the whole grid of items of a gengrid
+ * within its given viewport. By default, those values are both
+ * 0.5, meaning that the gengrid will have its items grid placed
+ * exactly in the middle of its viewport.
+ *
+ * @note If given alignment values are out of the cited ranges,
+ * they'll be changed to the nearest boundary values on the valid
+ * ranges.
+ *
+ * @see elm_gengrid_align_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_align_set(Evas_Object *obj, double align_x, double align_y);
+
+/**
+ * Get the items grid's alignment values within a given gengrid
+ * widget
+ *
+ * @param obj The gengrid object.
+ * @param align_x Pointer to a variable where to store the
+ * horizontal alignment.
+ * @param align_y Pointer to a variable where to store the vertical
+ * alignment.
+ *
+ * @note Use @c NULL pointers on the alignment values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_align_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_align_get(const Evas_Object *obj, double *align_x, double *align_y);
+
+/**
+ * Set whether a given gengrid widget is or not able have items
+ * @b reordered
+ *
+ * @param obj The gengrid object
+ * @param reorder_mode Use @c EINA_TRUE to turn reoderding on,
+ * @c EINA_FALSE to turn it off
+ *
+ * If a gengrid is set to allow reordering, a click held for more
+ * than 0.5 over a given item will highlight it specially,
+ * signalling the gengrid has entered the reordering state. From
+ * that time on, the user will be able to, while still holding the
+ * mouse button down, move the item freely in the gengrid's
+ * viewport, replacing to said item to the locations it goes to.
+ * The replacements will be animated and, whenever the user
+ * releases the mouse button, the item being replaced gets a new
+ * definitive place in the grid.
+ *
+ * @see elm_gengrid_reorder_mode_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+/**
+ * Get whether a given gengrid widget is or not able have items
+ * @b reordered
+ *
+ * @param obj The gengrid object
+ * @return @c EINA_TRUE, if reoderding is on, @c EINA_FALSE if it's
+ * off
+ *
+ * @see elm_gengrid_reorder_mode_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI Eina_Bool elm_gengrid_reorder_mode_get(const Evas_Object *obj);
++=======
+ * Remove all items from a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ *
+ * This removes (and deletes) all items in @p obj, leaving it
+ * empty.
+ *
+ * @see elm_object_item_del(), to remove just one item.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_clear(Evas_Object *obj);
+
+ /**
+ * Enable or disable multi-selection in a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param multi @c EINA_TRUE, to enable multi-selection,
+ * @c EINA_FALSE to disable it.
+ *
+ * Multi-selection is the ability to have @b more than one
+ * item selected, on a given gengrid, simultaneously. When it is
+ * enabled, a sequence of clicks on different items will make them
+ * all selected, progressively. A click on an already selected item
+ * will unselect it. If interacting via the keyboard,
+ * multi-selection is enabled while holding the "Shift" key.
+ *
++ * @note By default, multi-selection is @b disabled on gengrids
++ *
++ * @see elm_gengrid_multi_select_get()
++ *
++ * @ingroup Gengrid
++ */
++EAPI void elm_gengrid_multi_select_set(Evas_Object *obj, Eina_Bool multi);
++
++/**
++ * Get whether multi-selection is enabled or disabled for a given
++ * gengrid widget
++ *
++ * @param obj The gengrid object.
++ * @return @c EINA_TRUE, if multi-selection is enabled, @c
++ * EINA_FALSE otherwise
++ *
++ * @see elm_gengrid_multi_select_set() for more details
++ *
++ * @ingroup Gengrid
++ */
++EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
++
++/**
++ * Set the direction in which a given gengrid widget will expand while
++ * placing its items.
++ *
++ * @param obj The gengrid object.
++ * @param horizontal @c EINA_TRUE to make the gengrid expand
++ * horizontally, @c EINA_FALSE to expand vertically.
++ *
++ * When in "horizontal mode" (@c EINA_TRUE), items will be placed
++ * in @b columns, from top to bottom and, when the space for a
++ * column is filled, another one is started on the right, thus
++ * expanding the grid horizontally. When in "vertical mode"
++ * (@c EINA_FALSE), though, items will be placed in @b rows, from left
++ * to right and, when the space for a row is filled, another one is
++ * started below, thus expanding the grid vertically.
++ *
++ * @see elm_gengrid_horizontal_get()
++ *
++ * @ingroup Gengrid
++ */
++EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
++
++/**
++ * Get for what direction a given gengrid widget will expand while
++ * placing its items.
++ *
++ * @param obj The gengrid object.
++ * @return @c EINA_TRUE, if @p obj is set to expand horizontally,
++ * @c EINA_FALSE if it's set to expand vertically.
++ *
++ * @see elm_gengrid_horizontal_set() for more details
++ *
++ * @ingroup Gengrid
++ */
++EAPI Eina_Bool elm_gengrid_horizontal_get(const Evas_Object *obj);
++
++/**
++ * Enable or disable bouncing effect for a given gengrid widget
++ *
++ * @param obj The gengrid object
++ * @param h_bounce @c EINA_TRUE, to enable @b horizontal bouncing,
++ * @c EINA_FALSE to disable it
++ * @param v_bounce @c EINA_TRUE, to enable @b vertical bouncing,
++ * @c EINA_FALSE to disable it
++ *
++ * The bouncing effect occurs whenever one reaches the gengrid's
++ * edge's while panning it -- it will scroll past its limits a
++ * little bit and return to the edge again, in a animated for,
++ * automatically.
++ *
++ * @note By default, gengrids have bouncing enabled on both axis
++ *
++ * @see elm_gengrid_bounce_get()
++ *
++ * @ingroup Gengrid
++ */
++EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
++
++/**
++ * Get whether bouncing effects are enabled or disabled, for a
++ * given gengrid widget, on each axis
++ *
++ * @param obj The gengrid object
++ * @param h_bounce Pointer to a variable where to store the
++ * horizontal bouncing flag.
++ * @param v_bounce Pointer to a variable where to store the
++ * vertical bouncing flag.
++ *
++ * @see elm_gengrid_bounce_set() for more details
++ *
++ * @ingroup Gengrid
++ */
++EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
++>>>>>>> remotes/origin/upstream
+
+/**
+ * Append a new item in a given gengrid widget.
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param func Convenience function called when the item is
+ * selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This adds an item to the beginning of the gengrid.
+ *
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_before()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * Prepend a new item in a given gengrid widget.
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param func Convenience function called when the item is
+ * selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This adds an item to the end of the gengrid.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_insert_before()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_prepend(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * Insert an item before another in a gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param relative The item to place this new one before.
+ * @param func Convenience function called when the item is
+ * selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This inserts an item before another in the gengrid.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_insert_before(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Object_Item *relative, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * Insert an item after another in a gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param relative The item to place this new one after.
+ * @param func Convenience function called when the item is
+ * selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This inserts an item after another in the gengrid.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_insert_after(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Elm_Object_Item *relative, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * Insert an item in a gengrid widget using a user-defined sort function.
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param comp User defined comparison function that defines the sort order
+ * based on Elm_Gen_Item and its data param.
+ * @param func Convenience function called when the item is selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
++<<<<<<< HEAD
+ * This inserts an item in the gengrid based on user defined comparison function.
++=======
++ * This inserts an item in the gengrid based on user defined comparison
++ * function. The two arguments passed to the function @p func are gengrid
++ * item handles to compare.
++>>>>>>> remotes/origin/upstream
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
++<<<<<<< HEAD
+ * @see elm_gengrid_item_direct_sorted_insert()
++=======
++>>>>>>> remotes/origin/upstream
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+
+/**
++<<<<<<< HEAD
+ * Insert an item in a gengrid widget using a user-defined sort function.
+ *
+ * @param obj The gengrid object.
+ * @param gic The item class for the item.
+ * @param data The item data.
+ * @param comp User defined comparison function that defines the sort order
+ * based on Elm_Gen_Item.
+ * @param func Convenience function called when the item is selected.
+ * @param func_data Data to be passed to @p func.
+ * @return A handle to the item added or @c NULL, on errors.
+ *
+ * This inserts an item in the gengrid based on user defined comparison function.
+ *
+ * @see elm_gengrid_item_append()
+ * @see elm_gengrid_item_prepend()
+ * @see elm_gengrid_item_insert_after()
+ * @see elm_object_item_del()
+ * @see elm_gengrid_item_sorted_insert()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_direct_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+
+/**
+ * Set whether items on a given gengrid widget are to get their
+ * selection callbacks issued for @b every subsequent selection
+ * click on them or just for the first click.
+ *
+ * @param obj The gengrid object
+ * @param always_select @c EINA_TRUE to make items "always
+ * selected", @c EINA_FALSE, otherwise
+ *
+ * By default, grid items will only call their selection callback
+ * function when firstly getting selected, any subsequent further
+ * clicks will do nothing. With this call, you make those
+ * subsequent clicks also to issue the selection callbacks.
+ *
+ * @note <b>Double clicks</b> will @b always be reported on items.
+ *
+ * @see elm_gengrid_always_select_mode_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+/**
+ * Get whether items on a given gengrid widget have their selection
+ * callbacks issued for @b every subsequent selection click on them
+ * or just for the first click.
+ *
+ * @param obj The gengrid object.
+ * @return @c EINA_TRUE if the gengrid items are "always selected",
+ * @c EINA_FALSE, otherwise
+ *
+ * @see elm_gengrid_always_select_mode_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI Eina_Bool elm_gengrid_always_select_mode_get(const Evas_Object *obj);
+
+/**
+ * Set whether items on a given gengrid widget can be selected or not.
+ *
+ * @param obj The gengrid object
+ * @param no_select @c EINA_TRUE to make items selectable,
+ * @c EINA_FALSE otherwise
+ *
+ * This will make items in @p obj selectable or not. In the latter
+ * case, any user interaction on the gengrid items will neither make
+ * them appear selected nor them call their selection callback
+ * functions.
+ *
+ * @see elm_gengrid_no_select_mode_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+/**
+ * Get whether items on a given gengrid widget can be selected or
+ * not.
+ *
+ * @param obj The gengrid object
+ * @return @c EINA_TRUE, if items are selectable, @c EINA_FALSE
+ * otherwise
+ *
+ * @see elm_gengrid_no_select_mode_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI Eina_Bool elm_gengrid_no_select_mode_get(const Evas_Object *obj);
+
+/**
+ * Enable or disable multi-selection in a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param multi @c EINA_TRUE, to enable multi-selection,
+ * @c EINA_FALSE to disable it.
+ *
+ * Multi-selection is the ability to have @b more than one
+ * item selected, on a given gengrid, simultaneously. When it is
+ * enabled, a sequence of clicks on different items will make them
+ * all selected, progressively. A click on an already selected item
+ * will unselect it. If interacting via the keyboard,
+ * multi-selection is enabled while holding the "Shift" key.
+ *
+ * @note By default, multi-selection is @b disabled on gengrids
+ *
+ * @see elm_gengrid_multi_select_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_multi_select_set(Evas_Object *obj, Eina_Bool multi);
+
+/**
+ * Get whether multi-selection is enabled or disabled for a given
+ * gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @return @c EINA_TRUE, if multi-selection is enabled, @c
+ * EINA_FALSE otherwise
+ *
+ * @see elm_gengrid_multi_select_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI Eina_Bool elm_gengrid_multi_select_get(const Evas_Object *obj);
+
+/**
+ * Enable or disable bouncing effect for a given gengrid widget
+ *
+ * @param obj The gengrid object
+ * @param h_bounce @c EINA_TRUE, to enable @b horizontal bouncing,
+ * @c EINA_FALSE to disable it
+ * @param v_bounce @c EINA_TRUE, to enable @b vertical bouncing,
+ * @c EINA_FALSE to disable it
+ *
+ * The bouncing effect occurs whenever one reaches the gengrid's
+ * edge's while panning it -- it will scroll past its limits a
+ * little bit and return to the edge again, in a animated for,
+ * automatically.
+ *
+ * @note By default, gengrids have bouncing enabled on both axis
+ *
+ * @see elm_gengrid_bounce_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
+
+/**
+ * Get whether bouncing effects are enabled or disabled, for a
+ * given gengrid widget, on each axis
+ *
+ * @param obj The gengrid object
+ * @param h_bounce Pointer to a variable where to store the
+ * horizontal bouncing flag.
+ * @param v_bounce Pointer to a variable where to store the
+ * vertical bouncing flag.
+ *
+ * @see elm_gengrid_bounce_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
+
+/**
+ * Set a given gengrid widget's scrolling page size, relative to
+ * its viewport size.
+ *
+ * @param obj The gengrid object
+ * @param h_pagerel The horizontal page (relative) size
+ * @param v_pagerel The vertical page (relative) size
+ *
+ * The gengrid's scroller is capable of binding scrolling by the
+ * user to "pages". It means that, while scrolling and, specially
+ * after releasing the mouse button, the grid will @b snap to the
+ * nearest displaying page's area. When page sizes are set, the
+ * grid's continuous content area is split into (equal) page sized
+ * pieces.
+ *
+ * This function sets the size of a page <b>relatively to the
+ * viewport dimensions</b> of the gengrid, for each axis. A value
+ * @c 1.0 means "the exact viewport's size", in that axis, while @c
+ * 0.0 turns paging off in that axis. Likewise, @c 0.5 means "half
+ * a viewport". Sane usable values are, than, between @c 0.0 and @c
+ * 1.0. Values beyond those will make it behave behave
+ * inconsistently. If you only want one axis to snap to pages, use
+ * the value @c 0.0 for the other one.
+ *
+ * There is a function setting page size values in @b absolute
+ * values, too -- elm_gengrid_page_size_set(). Naturally, its use
+ * is mutually exclusive to this one.
+ *
+ * @see elm_gengrid_page_relative_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel);
+
+/**
+ * Get a given gengrid widget's scrolling page size, relative to
+ * its viewport size.
+ *
+ * @param obj The gengrid object
+ * @param h_pagerel Pointer to a variable where to store the
+ * horizontal page (relative) size
+ * @param v_pagerel Pointer to a variable where to store the
+ * vertical page (relative) size
+ *
+ * @see elm_gengrid_page_relative_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel);
+
+/**
+ * Set a given gengrid widget's scrolling page size
+ *
+ * @param obj The gengrid object
+ * @param h_pagerel The horizontal page size, in pixels
+ * @param v_pagerel The vertical page size, in pixels
+ *
+ * The gengrid's scroller is capable of binding scrolling by the
+ * user to "pages". It means that, while scrolling and, specially
+ * after releasing the mouse button, the grid will @b snap to the
+ * nearest displaying page's area. When page sizes are set, the
+ * grid's continuous content area is split into (equal) page sized
+ * pieces.
+ *
+ * This function sets the size of a page of the gengrid, in pixels,
+ * for each axis. Sane usable values are, between @c 0 and the
+ * dimensions of @p obj, for each axis. Values beyond those will
+ * make it behave behave inconsistently. If you only want one axis
+ * to snap to pages, use the value @c 0 for the other one.
+ *
+ * There is a function setting page size values in @b relative
+ * values, too -- elm_gengrid_page_relative_set(). Naturally, its
+ * use is mutually exclusive to this one.
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize);
+
+/**
+ * @brief Get gengrid current page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * Current page means the page which meet the top-left of the viewport.
+ * If there are two or more pages in the viewport, it returns the number of page
+ * which meet the top-left of the viewport.
+ *
+ * @see elm_gengrid_last_page_get()
+ * @see elm_gengrid_page_show()
+ * @see elm_gengrid_page_brint_in()
+ */
+EAPI void elm_gengrid_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * @brief Get scroll last page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * The page number starts from 0. 0 is the first page.
+ * This returns the last page number among the pages.
+ *
+ * @see elm_gengrid_current_page_get()
+ * @see elm_gengrid_page_show()
+ * @see elm_gengrid_page_brint_in()
+ */
+EAPI void elm_gengrid_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
+
+/**
+ * Show a specific virtual region within the gengrid content object by page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will jump to the page directly without animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_gengrid_add(win);
+ * elm_gengrid_content_set(sc, content);
+ * elm_gengrid_page_relative_set(sc, 1, 0);
+ * elm_gengrid_current_page_get(sc, &h_page, &v_page);
+ * elm_gengrid_page_show(sc, h_page + 1, v_page);
+ * @endcode
+ *
+ * @see elm_gengrid_page_bring_in()
+ */
+EAPI void elm_gengrid_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * Show a specific virtual region within the gengrid content object by page number.
+ *
+ * @param obj The gengrid object
+ * @param h_pagenumber The horizontal page number
+ * @param v_pagenumber The vertical page number
+ *
+ * 0, 0 of the indicated page is located at the top-left of the viewport.
+ * This will slide to the page with animation.
+ *
+ * Example of usage:
+ *
+ * @code
+ * sc = elm_gengrid_add(win);
+ * elm_gengrid_content_set(sc, content);
+ * elm_gengrid_page_relative_set(sc, 1, 0);
+ * elm_gengrid_last_page_get(sc, &h_page, &v_page);
+ * elm_gengrid_page_bring_in(sc, h_page, v_page);
+ * @endcode
+ *
+ * @see elm_gengrid_page_show()
+ */
+EAPI void elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber);
+
+/**
+ * Set the direction in which a given gengrid widget will expand while
+ * placing its items.
+ *
+ * @param obj The gengrid object.
+ * @param setting @c EINA_TRUE to make the gengrid expand
+ * horizontally, @c EINA_FALSE to expand vertically.
+ *
+ * When in "horizontal mode" (@c EINA_TRUE), items will be placed
+ * in @b columns, from top to bottom and, when the space for a
+ * column is filled, another one is started on the right, thus
+ * expanding the grid horizontally. When in "vertical mode"
+ * (@c EINA_FALSE), though, items will be placed in @b rows, from left
+ * to right and, when the space for a row is filled, another one is
+ * started below, thus expanding the grid vertically.
+ *
+ * @see elm_gengrid_horizontal_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool setting);
+
+/**
+ * Get for what direction a given gengrid widget will expand while
+ * placing its items.
+ *
+ * @param obj The gengrid object.
+ * @return @c EINA_TRUE, if @p obj is set to expand horizontally,
+ * @c EINA_FALSE if it's set to expand vertically.
+ *
+ * @see elm_gengrid_horizontal_set() for more detais
+ *
+ * @ingroup Gengrid
+ */
+EAPI Eina_Bool elm_gengrid_horizontal_get(const Evas_Object *obj);
+
+/**
+ * Get the first item in a given gengrid widget
+ *
+ * @param obj The gengrid object
+ * @return The first item's handle or @c NULL, if there are no
+ * items in @p obj (and on errors)
+ *
+ * This returns the first item in the @p obj's internal list of
+ * items.
+ *
+ * @see elm_gengrid_last_item_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_first_item_get(const Evas_Object *obj);
+
+/**
+ * Get the last item in a given gengrid widget
+ *
+ * @param obj The gengrid object
+ * @return The last item's handle or @c NULL, if there are no
+ * items in @p obj (and on errors)
+ *
+ * This returns the last item in the @p obj's internal list of
+ * items.
+ *
+ * @see elm_gengrid_first_item_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_last_item_get(const Evas_Object *obj);
+
+/**
+ * Get the @b next item in a gengrid widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The gengrid item to fetch next from
+ * @return The item after @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed after the @p item, on the container
+ * gengrid.
+ *
+ * @see elm_gengrid_item_prev_get()
+ *
+ * @ingroup Gengrid
+ */
+EAPI Elm_Object_Item *elm_gengrid_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * Get the @b previous item in a gengrid widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The gengrid item to fetch previous from
+ * @return The item before @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed before the @p item, on the container
+ * gengrid.
*
- * @see elm_gengrid_multi_select_get()
+ * @see elm_gengrid_item_next_get()
*
* @ingroup Gengrid
*/
*
* @ingroup Gengrid
*/
-EAPI Elm_Object_Item *elm_gengrid_item_sorted_insert(Evas_Object *obj, const Elm_Gengrid_Item_Class *gic, const void *data, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+EAPI void elm_gengrid_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
/**
+ * Set the content to be shown in a given gengrid item's tooltip
++=======
+ * Get the selected item in a given gengrid widget
*
- * @param it The gengrid item.
- * @param func The function returning the tooltip contents.
- * @param data What to provide to @a func as callback data/context.
- * @param del_cb Called when data is not needed anymore, either when
- * another callback replaces @p func, the tooltip is unset with
- * elm_gengrid_item_tooltip_unset() or the owner @p item
- * dies. This callback receives as its first parameter the
- * given @p data, being @c event_info the item handle.
+ * @param obj The gengrid object.
+ * @return The selected item's handle or @c NULL, if none is
+ * selected at the moment (and on errors)
*
- * This call will setup the tooltip's contents to @p item
- * (analogous to elm_object_tooltip_content_cb_set(), but being
- * item tooltips with higher precedence than object tooltips). It
- * can have only one tooltip at a time, so any previous tooltip
- * content will get removed. @p func (with @p data) will be called
- * every time Elementary needs to show the tooltip and it should
- * return a valid Evas object, which will be fully managed by the
- * tooltip system, getting deleted when the tooltip is gone.
+ * This returns the selected item in @p obj. If multi selection is
+ * enabled on @p obj (@see elm_gengrid_multi_select_set()), only
+ * the first item in the list is selected, which might not be very
+ * useful. For that case, see elm_gengrid_selected_items_get().
*
* @ingroup Gengrid
*/
*
* @ingroup Gengrid
*/
- EAPI const char *elm_gengrid_item_tooltip_style_get(const Elm_Object_Item *it);
+ EAPI void elm_gengrid_realized_items_update(Evas_Object *obj);
/**
- * @brief Disable size restrictions on an object's tooltip
- * @param it The tooltip's anchor object
- * @param disable If EINA_TRUE, size restrictions are disabled
- * @return EINA_FALSE on failure, EINA_TRUE on success
+ * Get the first item in a given gengrid widget
*
- * This function allows a tooltip to expand beyond its parant window's canvas.
- * It will instead be limited only by the size of the display.
+ * @param obj The gengrid object
+ * @return The first item's handle or @c NULL, if there are no
+ * items in @p obj (and on errors)
+ *
+ * This returns the first item in the @p obj's internal list of
+ * items.
+ *
+ * @see elm_gengrid_last_item_get()
+ *
+ * @ingroup Gengrid
*/
- EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+ EAPI Elm_Object_Item *elm_gengrid_first_item_get(const Evas_Object *obj);
/**
- * @brief Retrieve size restriction state of an object's tooltip
- * @param it The tooltip's anchor object
- * @return If EINA_TRUE, size restrictions are disabled
+ * Get the last item in a given gengrid widget
*
- * This function returns whether a tooltip is allowed to expand beyond
- * its parant window's canvas.
- * It will instead be limited only by the size of the display.
+ * @param obj The gengrid object
+ * @return The last item's handle or @c NULL, if there are no
+ * items in @p obj (and on errors)
+ *
+ * This returns the last item in the @p obj's internal list of
+ * items.
+ *
+ * @see elm_gengrid_first_item_get()
+ *
+ * @ingroup Gengrid
*/
- EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_get(const Elm_Object_Item *it);
+ EAPI Elm_Object_Item *elm_gengrid_last_item_get(const Evas_Object *obj);
/**
- * Set the type of mouse pointer/cursor decoration to be shown,
- * when the mouse pointer is over the given gengrid widget item
+ * Set the scrollbar policy
*
- * @param it gengrid item to customize cursor on
- * @param cursor the cursor type's name
+ * @param obj The gengrid object
+ * @param policy_h Horizontal scrollbar policy.
+ * @param policy_v Vertical scrollbar policy.
*
- * This function works analogously as elm_object_cursor_set(), but
- * here the cursor's changing area is restricted to the item's
+ * This sets the scrollbar visibility policy for the given gengrid
+ * scroller. #ELM_SMART_SCROLLER_POLICY_AUTO means the scrollbar is
+ * made visible if it is needed, and otherwise kept hidden.
+ * #ELM_SMART_SCROLLER_POLICY_ON turns it on all the time, and
+ * #ELM_SMART_SCROLLER_POLICY_OFF always keeps it off. This applies
+ * respectively for the horizontal and vertical scrollbars. Default is
+ * #ELM_SMART_SCROLLER_POLICY_AUTO
+ *
+ * @see elm_gengrid_scroller_policy_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+ /**
+ * Get the scrollbar policy
+ *
+ * @param obj The gengrid object
+ * @param policy_h Pointer to store the horizontal scrollbar policy.
+ * @param policy_v Pointer to store the vertical scrollbar policy.
+ *
+ * @see elm_gengrid_scroller_policy_set()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+ /**
+ * Get the @b next item in a gengrid widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The gengrid item to fetch next from
+ * @return The item after @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed after the @p item, on the container
+ * gengrid.
+ *
+ * @see elm_gengrid_item_prev_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Elm_Object_Item *elm_gengrid_item_next_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the @b previous item in a gengrid widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The gengrid item to fetch previous from
+ * @return The item before @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed before the @p item, on the container
+ * gengrid.
+ *
+ * @see elm_gengrid_item_next_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Elm_Object_Item *elm_gengrid_item_prev_get(const Elm_Object_Item *it);
+
+ /**
+ * Set whether a given gengrid item is selected or not
+ *
+ * @param it The gengrid item
+ * @param selected Use @c EINA_TRUE, to make it selected, @c
+ * EINA_FALSE to make it unselected
+ *
+ * This sets the selected state of an item. If multi-selection is
+ * not enabled on the containing gengrid and @p selected is @c
+ * EINA_TRUE, any other previously selected items will get
+ * unselected in favor of this new one.
+ *
+ * @see elm_gengrid_item_selected_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+ /**
+ * Get whether a given gengrid item is selected or not
+ *
+ * @param it The gengrid item
+ * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
+ *
+ * This API returns EINA_TRUE for all the items selected in multi-select mode as well.
+ *
+ * @see elm_gengrid_item_selected_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Object_Item *it);
+
+ /**
+ * Show the portion of a gengrid's internal grid containing a given
+ * item, @b immediately.
+ *
+ * @param it The item to display
+ * @param type Where to position the item in the viewport.
+ *
+ * This causes gengrid to @b redraw its viewport's contents to the
+ * region containing the given @p item item, if it is not fully
+ * visible.
+ *
+ * @see elm_gengrid_item_bring_in()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_show(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type);
+
+ /**
+ * Animatedly bring in, to the visible area of a gengrid, a given
+ * item on it.
+ *
+ * @param it The gengrid item to display
+ * @param type Where to position the item in the viewport.
+ *
+ * This causes gengrid to jump to the given @p item and show
+ * it (by scrolling), if it is not fully visible. This will use
+ * animation to do so and take a period of time to complete.
+ *
+ * @see elm_gengrid_item_show()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_bring_in(Elm_Object_Item *it, Elm_Gengrid_Item_Scrollto_Type type);
+
+ /**
+ * Update the contents of a given gengrid item
+ *
+ * @param it The gengrid item
+ *
+ * This updates an item by calling all the item class functions
+ * again to get the contents, texts and states. Use this when the
+ * original item data has changed and you want the changes to be
+ * reflected.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_update(Elm_Object_Item *it);
+
+ /**
+ * Update the item class of a gengrid item.
+ *
+ * This sets another class of the item, changing the way that it is
+ * displayed. After changing the item class, elm_gengrid_item_update() is
+ * called on the item @p it.
+ *
+ * @param it The gengrid item
+ * @param gic The gengrid item class describing the function pointers and the item style.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_item_class_update(Elm_Object_Item *it, const Elm_Gengrid_Item_Class *gic);
+
+ /**
+ * Get the Gengrid Item class for the given Gengrid Item.
+ *
+ * @param it The gengrid item
+ *
+ * This returns the Gengrid_Item_Class for the given item. It can be used to examine
+ * the function pointers and item_style.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI const Elm_Gengrid_Item_Class *elm_gengrid_item_item_class_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the index of the item. It is only valid once displayed.
+ *
+ * @param it a gengrid item
+ * @return the position inside the list of item.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI int elm_gengrid_item_index_get(const Elm_Object_Item *it);
+
+ /**
+ * Return how many items are currently in a list
+ *
+ * @param obj The list
+ * @return The total number of list items in the list
+ *
+ * This behavior is O(1) and includes items which may or may not be realized.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI unsigned int elm_gengrid_items_count(const Evas_Object *obj);
+
+ /**
+ * Add a new gengrid item class in a given gengrid widget.
+ *
+ * @return New allocated a gengrid item class.
+ *
+ * This adds gengrid item class for the gengrid widget. When adding a item,
+ * gengrid_item_{append, prepend, insert} function needs item class of the item.
+ * Given callback parameters are used at retrieving {text, content} of
+ * added item. Set as NULL if it's not used.
+ * If there's no available memory, return can be NULL.
+ *
+ * @see elm_gengrid_item_class_free()
+ * @see elm_gengrid_item_append()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Elm_Gengrid_Item_Class *elm_gengrid_item_class_new(void);
+
+ /**
+ * Remove a item class in a given gengrid widget.
+ *
+ * @param itc The itc to be removed.
+ *
+ * This removes item class from the gengrid widget.
+ * Whenever it has no more references to it, item class is going to be freed.
+ * Otherwise it just decreases its reference count.
+ *
+ * @see elm_gengrid_item_class_new()
+ * @see elm_gengrid_item_class_ref()
+ * @see elm_gengrid_item_class_unref()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_class_free(Elm_Gengrid_Item_Class *itc);
+
+ /**
+ * Increments object reference count for the item class.
+ *
+ * @param itc The given item class object to reference
+ *
+ * This API just increases its reference count for item class management.
+ *
+ * @see elm_gengrid_item_class_unref()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_class_ref(Elm_Gengrid_Item_Class *itc);
+
+ /**
+ * Decrements object reference count for the item class.
+ *
+ * @param itc The given item class object to reference
+ *
+ * This API just decreases its reference count for item class management.
+ * Reference count can't be less than 0.
+ *
+ * @see elm_gengrid_item_class_ref()
+ * @see elm_gengrid_item_class_free()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_class_unref(Elm_Gengrid_Item_Class *itc);
+
+ /**
+ * Set the text to be shown in a given gengrid item's tooltips.
+ *
+ * @param it The gengrid item
+ * @param text The text to set in the content
+ *
+ * This call will setup the text to be used as tooltip to that item
+ * (analogous to elm_object_tooltip_text_set(), but being item
+ * tooltips with higher precedence than object tooltips). It can
+ * have only one tooltip at a time, so any previous tooltip data
+ * will get removed.
+ *
+ * In order to set a content or something else as a tooltip, look at
+ * elm_gengrid_item_tooltip_content_cb_set().
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
+
+ /**
+ * Set the content to be shown in a given gengrid item's tooltip
++>>>>>>> remotes/origin/upstream
+ *
+ * @param it The gengrid item.
+ * @param func The function returning the tooltip contents.
+ * @param data What to provide to @a func as callback data/context.
+ * @param del_cb Called when data is not needed anymore, either when
+ * another callback replaces @p func, the tooltip is unset with
+ * elm_gengrid_item_tooltip_unset() or the owner @p item
+ * dies. This callback receives as its first parameter the
+ * given @p data, being @c event_info the item handle.
+ *
+ * This call will setup the tooltip's contents to @p item
+ * (analogous to elm_object_tooltip_content_cb_set(), but being
+ * item tooltips with higher precedence than object tooltips). It
+ * can have only one tooltip at a time, so any previous tooltip
+ * content will get removed. @p func (with @p data) will be called
+ * every time Elementary needs to show the tooltip and it should
+ * return a valid Evas object, which will be fully managed by the
+ * tooltip system, getting deleted when the tooltip is gone.
+ *
++<<<<<<< HEAD
++=======
+ * In order to set just a text as a tooltip, look at
+ * elm_gengrid_item_tooltip_text_set().
+ *
++>>>>>>> remotes/origin/upstream
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
+
+ /**
+ * Unset a tooltip from a given gengrid item
+ *
+ * @param it gengrid item to remove a previously set tooltip from.
+ *
+ * This call removes any tooltip set on @p item. The callback
+ * provided as @c del_cb to
+ * elm_gengrid_item_tooltip_content_cb_set() will be called to
+ * notify it is not used anymore (and have resources cleaned, if
+ * need be).
+ *
+ * @see elm_gengrid_item_tooltip_content_cb_set()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_tooltip_unset(Elm_Object_Item *it);
+
+ /**
+ * Set a different @b style for a given gengrid item's tooltip.
+ *
+ * @param it gengrid item with tooltip set
+ * @param style the <b>theme style</b> to use on tooltips (e.g. @c
+ * "default", @c "transparent", etc)
+ *
+ * Tooltips can have <b>alternate styles</b> to be displayed on,
+ * which are defined by the theme set on Elementary. This function
+ * works analogously as elm_object_tooltip_style_set(), but here
+ * applied only to gengrid item objects. The default style for
+ * tooltips is @c "default".
+ *
+ * @note before you set a style you should define a tooltip with
+ * elm_gengrid_item_tooltip_content_cb_set() or
+ * elm_gengrid_item_tooltip_text_set()
+ *
+ * @see elm_gengrid_item_tooltip_style_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
+
+ /**
+ * Get the style set a given gengrid item's tooltip.
+ *
+ * @param it gengrid item with tooltip already set on.
+ * @return style the theme style in use, which defaults to
+ * "default". If the object does not have a tooltip set,
+ * then @c NULL is returned.
+ *
+ * @see elm_gengrid_item_tooltip_style_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI const char *elm_gengrid_item_tooltip_style_get(const Elm_Object_Item *it);
+
+ /**
+ * @brief Disable size restrictions on an object's tooltip
+ * @param it The tooltip's anchor object
+ * @param disable If EINA_TRUE, size restrictions are disabled
+ * @return EINA_FALSE on failure, EINA_TRUE on success
+ *
++<<<<<<< HEAD
++ * This function allows a tooltip to expand beyond its parant window's canvas.
++=======
+ * This function allows a tooltip to expand beyond its parent window's canvas.
++>>>>>>> remotes/origin/upstream
+ * It will instead be limited only by the size of the display.
+ */
+ EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+
+ /**
+ * @brief Retrieve size restriction state of an object's tooltip
+ * @param it The tooltip's anchor object
+ * @return If EINA_TRUE, size restrictions are disabled
+ *
+ * This function returns whether a tooltip is allowed to expand beyond
++<<<<<<< HEAD
++ * its parant window's canvas.
++=======
+ * its parent window's canvas.
++>>>>>>> remotes/origin/upstream
+ * It will instead be limited only by the size of the display.
+ */
+ EAPI Eina_Bool elm_gengrid_item_tooltip_window_mode_get(const Elm_Object_Item *it);
+
+ /**
+ * Set the type of mouse pointer/cursor decoration to be shown,
+ * when the mouse pointer is over the given gengrid widget item
+ *
+ * @param it gengrid item to customize cursor on
+ * @param cursor the cursor type's name
+ *
+ * This function works analogously as elm_object_cursor_set(), but
+ * here the cursor's changing area is restricted to the item's
* area, and not the whole widget's. Note that that item cursors
* have precedence over widget cursors, so that a mouse over @p
* item will always show cursor @p type.
*
* @ingroup Gengrid
*/
- EAPI void elm_gengrid_item_cursor_set(Elm_Object_Item *it, const char *cursor);
+ EAPI void elm_gengrid_item_cursor_style_set(Elm_Object_Item *it, const char *style);
/**
- * Get the type of mouse pointer/cursor decoration set to be shown,
- * when the mouse pointer is over the given gengrid widget item
+ * Get the current @b style set for a given gengrid item's custom
+ * cursor
*
- * @param it gengrid item with custom cursor set
- * @return the cursor type's name or @c NULL, if no custom cursors
- * were set to @p item (and on errors)
+ * @param it gengrid item with custom cursor set.
+ * @return style the cursor style in use. If the object does not
+ * have a cursor set, then @c NULL is returned.
+ *
+ * @see elm_gengrid_item_cursor_style_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI const char *elm_gengrid_item_cursor_style_get(const Elm_Object_Item *it);
+
+ /**
+ * Set if the (custom) cursor for a given gengrid item should be
+ * searched in its theme, also, or should only rely on the
+ * rendering engine.
+ *
+ * @param it item with custom (custom) cursor already set on
+ * @param engine_only Use @c EINA_TRUE to have cursors looked for
+ * only on those provided by the rendering engine, @c EINA_FALSE to
+ * have them searched on the widget's theme, as well.
+ *
+ * @note This call is of use only if you've set a custom cursor
+ * for gengrid items, with elm_gengrid_item_cursor_set().
+ *
+ * @note By default, cursors will only be looked for between those
+ * provided by the rendering engine.
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
+
+ /**
+ * Get if the (custom) cursor for a given gengrid item is being
+ * searched in its theme, also, or is only relying on the rendering
+ * engine.
+ *
+ * @param it a gengrid item
+ * @return @c EINA_TRUE, if cursors are being looked for only on
+ * those provided by the rendering engine, @c EINA_FALSE if they
+ * are being searched on the widget's theme, as well.
+ *
+ * @see elm_gengrid_item_cursor_engine_only_set(), for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Eina_Bool elm_gengrid_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
+ /**
++<<<<<<< HEAD
++ * Remove all items from a given gengrid widget
++ *
++ * @param obj The gengrid object.
++ *
++ * This removes (and deletes) all items in @p obj, leaving it
++ * empty.
++ *
++ * @see elm_object_item_del(), to remove just one item.
++ *
++ * @ingroup Gengrid
++ */
++EAPI void elm_gengrid_clear(Evas_Object *obj);
++
++/**
++ * Get the selected item in a given gengrid widget
++ *
++ * @param obj The gengrid object.
++ * @return The selected item's handleor @c NULL, if none is
++ * selected at the moment (and on errors)
++ *
++ * This returns the selected item in @p obj. If multi selection is
++ * enabled on @p obj (@see elm_gengrid_multi_select_set()), only
++ * the first item in the list is selected, which might not be very
++ * useful. For that case, see elm_gengrid_selected_items_get().
++ *
++ * @ingroup Gengrid
++ */
++EAPI Elm_Object_Item *elm_gengrid_selected_item_get(const Evas_Object *obj);
++
++/**
++ * Get <b>a list</b> of selected items in a given gengrid
++ *
++ * @param obj The gengrid object.
++ * @return The list of selected items or @c NULL, if none is
++ * selected at the moment (and on errors)
++ *
++ * This returns a list of the selected items, in the order that
++ * they appear in the grid. This list is only valid as long as no
++ * more items are selected or unselected (or unselected implictly
++ * by deletion). The list contains #Gengrid item pointers as
++ * data, naturally.
++ *
++ * @see elm_gengrid_selected_item_get()
++ *
++ * @ingroup Gengrid
++ */
++EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj);
++=======
+ * Set the size for the items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w The items' width.
+ * @param h The items' height;
+ *
+ * A gengrid, after creation, has still no information on the size
+ * to give to each of its cells. So, you most probably will end up
+ * with squares one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for you items,
+ * making them as big as you wish.
+ *
+ * @see elm_gengrid_item_size_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+ /**
+ * Get the size set for the items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w Pointer to a variable where to store the items' width.
+ * @param h Pointer to a variable where to store the items' height.
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_item_size_get() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+ /**
+ * Set the size for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w The group items' width.
+ * @param h The group items' height;
+ *
+ * A gengrid, after creation, has still no information on the size
+ * to give to each of its cells. So, you most probably will end up
+ * with squares one @ref Fingers "finger" wide, the default
+ * size. Use this function to force a custom size for you group items,
+ * making them as big as you wish.
+ *
+ * @see elm_gengrid_group_item_size_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_group_item_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+
+ /**
+ * Get the size set for the group items of a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param w Pointer to a variable where to store the group items' width.
+ * @param h Pointer to a variable where to store the group items' height.
+ *
+ * @note Use @c NULL pointers on the size values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_group_item_size_get() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_group_item_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+
+ /**
+ * Set the items grid's alignment within a given gengrid widget
+ *
+ * @param obj The gengrid object.
+ * @param align_x Alignment in the horizontal axis (0 <= align_x <= 1).
+ * @param align_y Alignment in the vertical axis (0 <= align_y <= 1).
+ *
+ * This sets the alignment of the whole grid of items of a gengrid
+ * within its given viewport. By default, those values are both
+ * 0.5, meaning that the gengrid will have its items grid placed
+ * exactly in the middle of its viewport.
+ *
+ * @note If given alignment values are out of the cited ranges,
+ * they'll be changed to the nearest boundary values on the valid
+ * ranges.
+ *
+ * @see elm_gengrid_align_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_align_set(Evas_Object *obj, double align_x, double align_y);
+
+ /**
+ * Get the items grid's alignment values within a given gengrid
+ * widget
+ *
+ * @param obj The gengrid object.
+ * @param align_x Pointer to a variable where to store the
+ * horizontal alignment.
+ * @param align_y Pointer to a variable where to store the vertical
+ * alignment.
+ *
+ * @note Use @c NULL pointers on the alignment values you're not
+ * interested in: they'll be ignored by the function.
+ *
+ * @see elm_gengrid_align_set() for more details
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_align_get(const Evas_Object *obj, double *align_x, double *align_y);
+
+ /**
+ * Set whether a given gengrid widget is or not able have items
+ * @b reordered
+ *
+ * @param obj The gengrid object
+ * @param reorder_mode Use @c EINA_TRUE to turn reordering on,
+ * @c EINA_FALSE to turn it off
+ *
+ * If a gengrid is set to allow reordering, a click held for more
+ * than 0.5 over a given item will highlight it specially,
+ * signaling the gengrid has entered the reordering state. From
+ * that time on, the user will be able to, while still holding the
+ * mouse button down, move the item freely in the gengrid's
+ * viewport, replacing to said item to the locations it goes to.
+ * The replacements will be animated and, whenever the user
+ * releases the mouse button, the item being replaced gets a new
+ * definitive place in the grid.
+ *
+ * @see elm_gengrid_reorder_mode_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+ /**
+ * Get whether a given gengrid widget is or not able have items
+ * @b reordered
+ *
+ * @param obj The gengrid object
+ * @return @c EINA_TRUE, if reordering is on, @c EINA_FALSE if it's
+ * off
*
- * @see elm_object_cursor_get()
- * @see elm_gengrid_item_cursor_set() for more details
- * @see elm_gengrid_item_cursor_unset()
+ * @see elm_gengrid_reorder_mode_set() for more details
*
* @ingroup Gengrid
*/
*
* @ingroup Gengrid
*/
- EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj);
+ EAPI void elm_gengrid_item_pos_get(const Elm_Object_Item *it, unsigned int *x, unsigned int *y);
++>>>>>>> remotes/origin/upstream
/**
* Set how the items grid's filled within a given gengrid widget
* @param fill Filled if True
*
* This sets the fill state of the whole grid of items of a gengrid
++<<<<<<< HEAD
+ * within its given viewport. By default, this value is False, meaning
+ * that if the first line of items grid's aren't filled
+ *
+ * Set how the items grid's filled within a given gengrid widget.
+ * This sets the fill state of the whole grid of items of a gengrid
++=======
++>>>>>>> remotes/origin/upstream
* within its given viewport. By default, this value is false, meaning
* that if the first line of items grid's isn't filled, the items are
* centered with the alignment
* @see elm_gengrid_filled_get()
*
* @ingroup Gengrid
++<<<<<<< HEAD
+ */
+EAPI void elm_gengrid_filled_set(Evas_Object *obj, Eina_Bool fill);
+
+
++=======
+ *
+ */
+ EAPI void elm_gengrid_filled_set(Evas_Object *obj, Eina_Bool fill);
+
++>>>>>>> remotes/origin/upstream
/**
* Get how the items grid's filled within a given gengrid widget
*
EAPI Eina_Bool elm_gengrid_filled_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set the gengrid select mode.
+ *
+ * @param obj The gengrid object
+ * @param mode The select mode
+ *
+ * elm_gengrid_select_mode_set() changes item select mode in the gengrid widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+ * callback when first becoming selected. Any further clicks will
+ * do nothing, unless you set always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click will make the selected callbacks be called.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+ * entirely and they will neither appear selected nor call selected
+ * callback functions.
+ *
+ * @see elm_gengrid_select_mode_get()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI void elm_gengrid_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+ /**
+ * Get the gengrid select mode.
+ *
+ * @param obj The gengrid object
+ * @return The select mode
+ * (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_gengrid_select_mode_set()
+ *
+ * @ingroup Gengrid
+ */
+ EAPI Elm_Object_Select_Mode elm_gengrid_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set whether the gengrid items' should be highlighted when item selected.
+ *
+ * @param obj The gengrid object.
+ * @param highlight @c EINA_TRUE to enable highlight or @c EINA_FALSE to
+ * disable it.
+ *
+ * This will turn on/off the highlight effect when items are selected and
+ * they will or will not be highlighted. The selected and clicked
+ * callback functions will still be called.
+ *
+ * highlight is enabled by default.
+ *
+ * @see elm_gengrid_highlight_mode_get().
+ *
+ * @ingroup Gengrid
+ */
+
+ EAPI void elm_gengrid_highlight_mode_set(Evas_Object *obj, Eina_Bool highlight);
+
+ /**
+ * Get whether the gengrid items' should be highlighted when item selected.
+ *
+ * @param obj The gengrid object.
+ * @return @c EINA_TRUE means items can be highlighted. @c EINA_FALSE indicates
+ * they can't. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_gengrid_highlight_mode_set() for details.
+ *
+ * @ingroup Gengrid
+ */
+
+ EAPI Eina_Bool elm_gengrid_highlight_mode_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
#include <Elementary_Cursor.h>
#include "elm_priv.h"
#include "els_scroller.h"
++<<<<<<< HEAD
+//#include "elm_gen_common.h" //upstream
+
+#define SWIPE_MOVES 12
+#define MAX_ITEMS_PER_BLOCK 32
+#define REORDER_EFFECT_TIME 0.5
+
+typedef struct _Widget_Data Widget_Data;
+typedef struct _Item_Block Item_Block;
+typedef struct _Pan Pan;
+typedef struct _Item_Cache Item_Cache;
+typedef enum _Elm_Genlist_Item_Move_effect_Mode
+{
+ ELM_GENLIST_ITEM_MOVE_EFFECT_NONE = 0,
+ ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND = (1 << 0),
+ ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT = (1 << 1),
+ ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE = (1 << 2),
+} Elm_Genlist_Item_Move_effect_Mode;
+
+typedef enum _Elm_Genlist_Item_Scrollto_Type
+{
+ ELM_GENLIST_ITEM_SCROLLTO_NONE = 0, /**< no scrollto */
+ ELM_GENLIST_ITEM_SCROLLTO_IN = (1 << 0), /**< show, bring in */
+ ELM_GENLIST_ITEM_SCROLLTO_TOP = (1 << 1), /**< top show, top bring in */
+ ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< middle show, middle bring in */
+} Elm_Genlist_Item_Scrollto_Type;
+
+struct _Widget_Data
+{
+ Evas_Object *obj, *scr, *pan_smart;
+ Eina_Inlist *items, *blocks;
+ Eina_List *group_items;
+ Pan *pan;
+ Evas_Coord pan_x, pan_y, reorder_old_pan_y, w, h, minw, minh, realminw, prev_viewport_w;
+ Ecore_Job *calc_job, *update_job;
+ Ecore_Idle_Enterer *queue_idle_enterer;
+ Ecore_Idler *must_recalc_idler;
+ Eina_List *queue, *selected;
+ Elm_Object_Item *last_selected_item;
+ Elm_Genlist_Item *show_item, *anchor_item, *mode_item, *reorder_it, *reorder_rel, *expanded_item;
+ Eina_Inlist *item_cache;
+ Evas_Coord anchor_y, reorder_start_y;
+ Elm_List_Mode mode;
+ Ecore_Timer *multi_timer, *scr_hold_timer;
+ Ecore_Animator *reorder_move_animator;
+ const char *mode_type;
+ unsigned int start_time;
+ Evas_Coord prev_x, prev_y, prev_mx, prev_my;
+ Evas_Coord cur_x, cur_y, cur_mx, cur_my;
+ Eina_Bool mouse_down : 1;
+ Eina_Bool multi_down : 1;
+ Eina_Bool multi_timeout : 1;
+ Eina_Bool multitouched : 1;
+ Eina_Bool on_hold : 1;
+ Eina_Bool multi : 1;
+ Eina_Bool always_select : 1;
+ Eina_Bool longpressed : 1;
+ Eina_Bool wasselected : 1;
+ Eina_Bool no_select : 1;
+ Eina_Bool bring_in : 1; /* a flag to describe the scroll animation. (show, bring in) */
+ Eina_Bool compress : 1;
+ Eina_Bool height_for_width : 1;
+ Eina_Bool pan_resize : 1;
+ Eina_Bool homogeneous : 1;
+ Eina_Bool clear_me : 1;
+ Eina_Bool swipe : 1;
+ Eina_Bool reorder_mode : 1;
+ Eina_Bool reorder_pan_move : 1;
+ struct
+ {
+ Evas_Coord x, y;
+ } history[SWIPE_MOVES];
+ int multi_device;
+ int item_cache_count;
+ int item_cache_max;
+ int movements;
+ int walking;
+ int item_width;
+ int item_height;
+ int group_item_width;
+ int group_item_height;
+ int max_items_per_block;
+ double longpress_timeout;
+ int generation;
+
+ // TODO : refactoring
+ Eina_Bool reorder_deleted : 1;
+ Eina_Bool effect_mode : 1;
+ Eina_Bool auto_scroll_enabled : 1;
+ Eina_Bool pan_changed : 1;
+ Eina_Bool drag_started : 1;
+ Eina_Bool check_scroll : 1; /* this flag means genlist is supposed to be scrolled. if this flag is set to EINA_TRUE, genlist checks whether it's ok to scroll genlist now or not. */
+ Eina_Bool expanded_move_effect_set : 1;
+ int edit_mode;
+ Elm_Genlist_Item_Scrollto_Type scrollto_type; /* a scrollto type which remembers where to scroll ex) in, top, middle */
+ Ecore_Animator *item_moving_effect_timer;
+ Evas_Object *alpha_bg;
+ Evas_Coord expand_item_end;
+ Evas_Coord expand_item_gap;
+ int move_effect_mode;
+ Ecore_Job *changed_job;
+ Elm_Genlist_Item *rename_it, *expanded_next_item;
+};
+
+struct _Elm_Genlist_Item
+{
+ ELM_WIDGET_ITEM;
+ EINA_INLIST;
+ Widget_Data *wd;
+ Item_Block *block;
+ Eina_List *items;
+ Evas_Coord x, y, w, h, minw, minh;
+ const Elm_Genlist_Item_Class *itc;
+ Elm_Genlist_Item *parent;
+ Elm_Genlist_Item *group_item;
+ Elm_Genlist_Item_Flags flags;
+ struct
+ {
+ Evas_Smart_Cb func;
+ const void *data;
+ } func;
+
+ Evas_Object *spacer;
+ Eina_List *texts, *contents, *states, *content_objs;
+ Eina_List *mode_texts, *mode_contents, *mode_states, *mode_content_objs;
+ Ecore_Timer *long_timer;
+ Ecore_Timer *swipe_timer;
+ Evas_Coord dx, dy;
+ Evas_Coord scrl_x, scrl_y;
+
+ Elm_Genlist_Item *rel;
+ Evas_Object *mode_view;
+
+ struct
+ {
+ const void *data;
+ Elm_Tooltip_Item_Content_Cb content_cb;
+ Evas_Smart_Cb del_cb;
+ const char *style;
+ } tooltip;
+
+ const char *mouse_cursor;
+
+ int relcount;
+ int walking;
+ int generation;
+ int expanded_depth;
+ int order_num_in;
+ int position;
+
+ Eina_Bool position_update : 1;
+ Eina_Bool before : 1;
+
+ Eina_Bool want_unrealize : 1;
+ Eina_Bool realized : 1;
+ Eina_Bool selected : 1;
+ Eina_Bool highlighted : 1;
+ Eina_Bool expanded : 1;
+ Eina_Bool display_only : 1;
+ Eina_Bool mincalcd : 1;
+ Eina_Bool queued : 1;
+ Eina_Bool showme : 1;
+ Eina_Bool down : 1;
+ Eina_Bool dragging : 1;
+ Eina_Bool updateme : 1;
+ Eina_Bool nocache : 1;
+ Eina_Bool stacking_even : 1;
+ Eina_Bool nostacking : 1;
+ Eina_Bool move_effect_enabled : 1;
+ Eina_Bool defer_unrealize : 1;
+ Eina_Bool can_focus : 1;
+ Eina_Bool no_select : 1;
+
+
+ // TODO: refactoring
+ Eina_Bool effect_done : 1;
+ Eina_Bool reordering : 1;
+ Eina_Bool renamed : 1;
+ Eina_Bool effect_item_realized : 1;
+ Eina_List *edit_content_objs;
+ Evas_Object *edit_obj;
+ int num;
+ Ecore_Animator *item_moving_effect_timer;
+ Evas_Coord old_scrl_y;
++=======
+ #include "elm_gen_common.h"
+
+ // internally allocated
+ #define CLASS_ALLOCATED 0x3a70f11f
+
+ #define MAX_ITEMS_PER_BLOCK 32
+ #define REORDER_EFFECT_TIME 0.5
+
+ #define ELM_GEN_SETUP(wd) \
+ (wd)->calc_cb = (Ecore_Cb)_calc_job; \
+ (wd)->clear_cb = (Ecore_Cb)_clear_cb; \
+ (wd)->sizing_cb = (Ecore_Cb)_sizing_eval
+
+ #define ELM_GEN_ITEM_SETUP(it) \
+ (it)->del_cb = (Ecore_Cb)_item_del; \
+ (it)->highlight_cb = (Ecore_Cb)_item_highlight; \
+ (it)->unsel_cb = (Ecore_Cb)_item_unselect; \
+ (it)->unhighlight_cb = (Ecore_Cb)_item_unhighlight; \
+ (it)->unrealize_cb = (Ecore_Cb)_item_unrealize_cb
+
+ #define ELM_GENLIST_CHECK_ITC_VER(itc) \
+ do \
+ { \
+ if (!itc) \
+ { \
+ ERR("Genlist_Item_Class(itc) is NULL"); \
+ return; \
+ } \
+ if ((itc->version != ELM_GENLIST_ITEM_CLASS_VERSION) && \
+ (itc->version != CLASS_ALLOCATED)) \
+ { \
+ ERR("Genlist_Item_Class version mismatched! current = (%d), required = (%d) or (%d)", itc->version, ELM_GENLIST_ITEM_CLASS_VERSION, CLASS_ALLOCATED); \
+ return; \
+ } \
+ } \
+ while(0)
+
+ typedef struct _Item_Block Item_Block;
+ typedef struct _Item_Cache Item_Cache;
+
+ struct Elm_Gen_Item_Type
+ {
+ Elm_Gen_Item *it;
+ Item_Block *block;
+ Eina_List *items;
+ Evas_Coord w, h, minw, minh;
+ Elm_Gen_Item *group_item;
+ Elm_Genlist_Item_Type type;
+ Eina_List *mode_texts, *mode_contents, *mode_states, *mode_content_objs;
+ Eina_List *edit_texts, *edit_contents, *edit_states, *edit_content_objs;
+ Ecore_Timer *swipe_timer;
+ Evas_Coord scrl_x, scrl_y, old_scrl_y;
+
+ Elm_Gen_Item *rel;
+ Evas_Object *mode_view;
+ int expanded_depth;
+ int order_num_in;
+
+ Eina_Bool before : 1;
+
+ Eina_Bool want_realize : 1;
+ Eina_Bool expanded : 1;
+ Eina_Bool mincalcd : 1;
+ Eina_Bool queued : 1;
+ Eina_Bool showme : 1;
+ Eina_Bool updateme : 1;
+ Eina_Bool nocache : 1; /* do not use cache for this item */
+ Eina_Bool nocache_once : 1; /* do not use cache for this item only once */
+ Eina_Bool stacking_even : 1;
+ Eina_Bool nostacking : 1;
+ Eina_Bool move_effect_enabled : 1;
+ Eina_Bool decorate_mode_item_realized : 1;
+ Eina_Bool tree_effect_finished : 1; /* tree effect */
++>>>>>>> remotes/origin/upstream
};
struct _Item_Block
Eina_Bool realized : 1;
Eina_Bool changed : 1;
Eina_Bool updateme : 1;
++<<<<<<< HEAD
+ Eina_Bool changeme : 1;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Bool showme : 1;
Eina_Bool must_recalc : 1;
};
Evas_Object *base_view, *spacer;
const char *item_style; // it->itc->item_style
++<<<<<<< HEAD
+ Eina_Bool tree : 1; // it->flags & ELM_GENLIST_ITEM_SUBITEMS
+ Eina_Bool compress : 1; // it->wd->compress
+
+ Eina_Bool selected : 1; // it->selected
+ Eina_Bool disabled : 1; // it->disabled
+ Eina_Bool expanded : 1; // it->expanded
+};
+
+#define ELM_GENLIST_ITEM_FROM_INLIST(item) \
+ ((item) ? EINA_INLIST_CONTAINER_GET(item, Elm_Genlist_Item) : NULL)
+
+struct _Pan
+{
+ Evas_Object_Smart_Clipped_Data __clipped_data;
+ Widget_Data *wd;
+ Ecore_Job *resize_job;
++=======
+ Eina_Bool tree : 1; // it->group
+
+ Eina_Bool selected : 1; // it->selected
+ Eina_Bool disabled : 1; // it->disabled
+ Eina_Bool expanded : 1; // it->item->expanded
++>>>>>>> remotes/origin/upstream
};
static const char *widtype = NULL;
static void _show_region_hook(void *data,
Evas_Object *obj);
static void _sizing_eval(Evas_Object *obj);
++<<<<<<< HEAD
+static void _item_realize(Elm_Genlist_Item *it,
+ int in,
+ Eina_Bool calc);
+static void _item_unrealize(Elm_Genlist_Item *it,
+ Eina_Bool calc);
++=======
+ static void _item_realize(Elm_Gen_Item *it,
+ int in,
+ Eina_Bool calc);
+ static void _item_unrealize_cb(Elm_Gen_Item *it);
++>>>>>>> remotes/origin/upstream
static void _item_block_unrealize(Item_Block *itb);
static void _calc_job(void *data);
static void _on_focus_hook(void *data,
Evas_Object *obj);
++<<<<<<< HEAD
+static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _changed_job(void *data);
++=======
++>>>>>>> remotes/origin/upstream
static Eina_Bool _item_multi_select_up(Widget_Data *wd);
static Eina_Bool _item_multi_select_down(Widget_Data *wd);
static Eina_Bool _item_single_select_up(Widget_Data *wd);
Evas_Callback_Type type,
void *event_info);
static void _signal_emit_hook(Evas_Object *obj,
++<<<<<<< HEAD
+ const char *emission,
+ const char *source);
++=======
+ const char *emission,
+ const char *source);
++>>>>>>> remotes/origin/upstream
static Eina_Bool _deselect_all_items(Widget_Data *wd);
static void _pan_calculate(Evas_Object *obj);
static void _pan_max_get(Evas_Object *obj,
Evas_Coord *x,
Evas_Coord *y);
++<<<<<<< HEAD
+static void _item_position(Elm_Genlist_Item *it,
+ Evas_Object *obj,
+ Evas_Coord it_x,
+ Evas_Coord it_y);
+static void _mode_item_realize(Elm_Genlist_Item *it);
+static void _mode_item_unrealize(Elm_Genlist_Item *it);
+static void _item_mode_set(Elm_Genlist_Item *it);
+static void _item_mode_unset(Widget_Data *wd);
+static void _item_move_after(Elm_Genlist_Item *it,
+ Elm_Genlist_Item *after);
+static void _item_move_before(Elm_Genlist_Item *it,
+ Elm_Genlist_Item *before);
+
+// TODO : refactoring
+static Evas_Object* _create_tray_alpha_bg(const Evas_Object *obj);
+static unsigned int current_time_get();
+static Eina_Bool _item_moving_effect_timer_cb(void *data);
+static int _item_flip_effect_show(Elm_Genlist_Item *it);
+static void _effect_item_controls(Elm_Genlist_Item *it, int itx, int ity);
+static void _effect_item_realize(Elm_Genlist_Item *it, Eina_Bool effect_on);
+static void _effect_item_unrealize(Elm_Genlist_Item *it);
+static void _item_auto_scroll(Widget_Data *wd);
+static void _pan_child_size_get(Evas_Object *obj,
+ Evas_Coord *w,
+ Evas_Coord *h);
+static void _elm_genlist_clear(Evas_Object *obj,
+ Eina_Bool standby);
+static void _elm_genlist_item_del_serious(Elm_Genlist_Item *it);
+static void _elm_genlist_item_del_notserious(Elm_Genlist_Item *it);
++=======
+ static void _item_position(Elm_Gen_Item *it,
+ Evas_Object *obj,
+ Evas_Coord it_x,
+ Evas_Coord it_y);
+ static void _mode_item_realize(Elm_Gen_Item *it);
+ static void _mode_item_unrealize(Elm_Gen_Item *it);
+ static void _item_mode_set(Elm_Gen_Item *it);
+ static void _item_mode_unset(Widget_Data *wd);
+ static void _decorate_mode_item_position(Elm_Gen_Item *it, int itx, int ity);
+ static void _decorate_mode_item_realize(Elm_Gen_Item *it, Eina_Bool effect_on);
+ static void _decorate_mode_item_unrealize(Elm_Gen_Item *it);
+ static void _group_items_recalc(void *data);
+ static void _item_move_after(Elm_Gen_Item *it,
+ Elm_Gen_Item *after);
+ static void _item_move_before(Elm_Gen_Item *it,
+ Elm_Gen_Item *before);
+ static void _item_auto_scroll(Widget_Data *wd);
+ static void _elm_genlist_clear(Evas_Object *obj,
+ Eina_Bool standby);
+ static void _pan_child_size_get(Evas_Object *obj,
+ Evas_Coord *w,
+ Evas_Coord *h);
+ static Evas_Object* _create_tray_alpha_bg(const Evas_Object *obj);
+ static void _item_contract_emit(Elm_Gen_Item *it);
+ static int _item_tree_effect_before(Elm_Gen_Item *it);
+ static void _item_tree_effect(Widget_Data *wd, int y);
+ static void _item_tree_effect_finish(Widget_Data *wd);
+ static Eina_Bool _item_moving_effect_timer_cb(void *data);
++>>>>>>> remotes/origin/upstream
static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION;
static const char SIG_MULTI_PINCH_OUT[] = "multi,pinch,out";
static const char SIG_MULTI_PINCH_IN[] = "multi,pinch,in";
static const char SIG_SWIPE[] = "swipe";
++<<<<<<< HEAD
+static const char SIG_INDEX_UPDATE[] = "index,update";
++=======
+ static const char SIG_MOVED[] = "moved";
+ static const char SIG_INDEX_UPDATE[] = "index,update";
+ static const char SIG_TREE_EFFECT_FINISHED [] = "tree,effect,finished";
++>>>>>>> remotes/origin/upstream
static const Evas_Smart_Cb_Description _signals[] = {
{SIG_CLICKED_DOUBLE, ""},
{SIG_MULTI_PINCH_OUT, ""},
{SIG_MULTI_PINCH_IN, ""},
{SIG_SWIPE, ""},
++<<<<<<< HEAD
++ {NULL, NULL}
++};
++
++=======
+ {SIG_MOVED, ""},
+ {SIG_TREE_EFFECT_FINISHED, ""},
{NULL, NULL}
};
+ /* TEMPORARY */
+ #undef ELM_CHECK_WIDTYPE
+ #define ELM_CHECK_WIDTYPE(obj, widtype) \
+ if ((!obj) || (!elm_genlist_type_check((obj), __func__))) return
+ #undef ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN
+ #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, ...) \
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \
+ ELM_CHECK_WIDTYPE(WIDGET((it)), widtype) __VA_ARGS__;
+
+ static const char *_gengrid = NULL;
+ static const char *_genlist = NULL;
+
+ /* THIS FUNCTION IS HACKY AND TEMPORARY!!! */
+ Eina_Bool
+ elm_genlist_type_check(const Evas_Object *obj,
+ const char *func)
+ {
+ const char *provided, *expected = "(unknown)";
+ static int abort_on_warn = -1;
+ provided = elm_widget_type_get(obj);
+ if (!_genlist) _genlist = eina_stringshare_add("genlist");
+ if (!_gengrid) _gengrid = eina_stringshare_add("gengrid");
+ if (EINA_LIKELY(provided == _genlist) || EINA_LIKELY(provided == _gengrid))
+ return EINA_TRUE;
+ if ((!provided) || (!provided[0]))
+ {
+ provided = evas_object_type_get(obj);
+ if ((!provided) || (!provided[0]))
+ provided = "(unknown)";
+ }
+ ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected);
+ if (abort_on_warn == -1)
+ {
+ if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1;
+ else abort_on_warn = 0;
+ }
+ if (abort_on_warn == 1) abort();
+ return EINA_FALSE;
+ }
+
++>>>>>>> remotes/origin/upstream
static Eina_Bool
_event_hook(Evas_Object *obj,
Evas_Object *src __UNUSED__,
else if ((!strcmp(ev->keyname, "Home")) || (!strcmp(ev->keyname, "KP_Home")))
{
it = elm_genlist_first_item_get(obj);
++<<<<<<< HEAD
+ elm_genlist_item_bring_in(it);
++=======
+ elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ elm_genlist_item_selected_set(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
else if ((!strcmp(ev->keyname, "End")) || (!strcmp(ev->keyname, "KP_End")))
{
it = elm_genlist_last_item_get(obj);
++<<<<<<< HEAD
+ elm_genlist_item_bring_in(it);
++=======
+ elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_IN);
+ elm_genlist_item_selected_set(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
{
elm_genlist_item_selected_set(wd->last_selected_item, EINA_FALSE);
wd->last_selected_item = prev;
++<<<<<<< HEAD
+ elm_genlist_item_show(wd->last_selected_item);
++=======
+ elm_genlist_item_show(wd->last_selected_item, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
else
{
elm_genlist_item_selected_set(prev, EINA_TRUE);
++<<<<<<< HEAD
+ elm_genlist_item_show(prev);
++=======
+ elm_genlist_item_show(prev, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
return EINA_TRUE;
}
{
elm_genlist_item_selected_set(wd->last_selected_item, EINA_FALSE);
wd->last_selected_item = next;
++<<<<<<< HEAD
+ elm_genlist_item_show(wd->last_selected_item);
++=======
+ elm_genlist_item_show(wd->last_selected_item, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
else
{
elm_genlist_item_selected_set(next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_genlist_item_show(next);
++=======
+ elm_genlist_item_show(next, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
}
return EINA_TRUE;
}
static Eina_Bool
_item_single_select_up(Widget_Data *wd)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *prev;
+ if (!wd->selected)
+ {
+ prev = ELM_GENLIST_ITEM_FROM_INLIST(wd->items->last);
+ while ((prev) && (prev->generation < wd->generation))
+ prev = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
+ }
+ else prev = (Elm_Genlist_Item *)elm_genlist_item_prev_get(wd->last_selected_item);
++=======
+ Elm_Gen_Item *prev;
+ if (!wd->selected)
+ {
+ prev = ELM_GEN_ITEM_FROM_INLIST(wd->items->last);
+ while ((prev) && (prev->generation < wd->generation))
+ prev = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(prev)->prev);
+ }
+ else prev = (Elm_Gen_Item *) elm_genlist_item_prev_get(wd->last_selected_item);
++>>>>>>> remotes/origin/upstream
if (!prev) return EINA_FALSE;
_deselect_all_items(wd);
++<<<<<<< HEAD
+ elm_genlist_item_selected_set((Elm_Object_Item *)prev, EINA_TRUE);
+ elm_genlist_item_show((Elm_Object_Item *)prev);
++=======
+ elm_genlist_item_selected_set((Elm_Object_Item *) prev, EINA_TRUE);
+ elm_genlist_item_show((Elm_Object_Item *) prev, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
static Eina_Bool
_item_single_select_down(Widget_Data *wd)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *next;
+ if (!wd->selected)
+ {
+ next = ELM_GENLIST_ITEM_FROM_INLIST(wd->items);
+ while ((next) && (next->generation < wd->generation))
+ next = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
+ }
+ else next = (Elm_Genlist_Item *) elm_genlist_item_next_get(wd->last_selected_item);
++=======
+ Elm_Gen_Item *next;
+ if (!wd->selected)
+ {
+ next = ELM_GEN_ITEM_FROM_INLIST(wd->items);
+ while ((next) && (next->generation < wd->generation))
+ next = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(next)->next);
+ }
+ else next = (Elm_Gen_Item *) elm_genlist_item_next_get(wd->last_selected_item);
++>>>>>>> remotes/origin/upstream
if (!next) return EINA_FALSE;
_deselect_all_items(wd);
elm_genlist_item_selected_set((Elm_Object_Item *) next, EINA_TRUE);
++<<<<<<< HEAD
+ elm_genlist_item_show((Elm_Object_Item *) next);
++=======
+ elm_genlist_item_show((Elm_Object_Item *) next, ELM_GENLIST_ITEM_SCROLLTO_IN);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
{
elm_object_signal_emit(wd->obj, "elm,action,focus", "elm");
evas_object_focus_set(wd->obj, EINA_TRUE);
++<<<<<<< HEAD
+ if ((wd->items) && (wd->selected) && (!wd->last_selected_item))
++=======
+ if ((wd->selected) && (!wd->last_selected_item))
++>>>>>>> remotes/origin/upstream
wd->last_selected_item = eina_list_data_get(wd->selected);
}
else
if (wd->calc_job) ecore_job_del(wd->calc_job);
if (wd->update_job) ecore_job_del(wd->update_job);
if (wd->queue_idle_enterer) ecore_idle_enterer_del(wd->queue_idle_enterer);
++<<<<<<< HEAD
+ if (wd->changed_job) ecore_job_del(wd->changed_job);
++=======
++>>>>>>> remotes/origin/upstream
if (wd->must_recalc_idler) ecore_idler_del(wd->must_recalc_idler);
if (wd->multi_timer) ecore_timer_del(wd->multi_timer);
if (wd->mode_type) eina_stringshare_del(wd->mode_type);
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->edit_mode) elm_genlist_edit_mode_set(wd->obj, EINA_FALSE);
++=======
+ if (wd->decorate_mode) elm_genlist_decorate_mode_set(wd->obj, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
elm_genlist_clear(obj);
evas_object_del(wd->pan_smart);
wd->pan_smart = NULL;
_mirrored_set(obj, elm_widget_mirrored_get(obj));
elm_smart_scroller_object_theme_set(obj, wd->scr, "genlist", "base",
elm_widget_style_get(obj));
++<<<<<<< HEAD
+ // edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale);
++=======
+ edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale);
++>>>>>>> remotes/origin/upstream
wd->item_width = wd->item_height = 0;
wd->group_item_width = wd->group_item_height = 0;
wd->minw = wd->minh = wd->realminw = 0;
EINA_INLIST_FOREACH(wd->blocks, itb)
{
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+
+ if (itb->realized) _item_block_unrealize(itb);
+ EINA_LIST_FOREACH(itb->items, l, it)
+ it->mincalcd = EINA_FALSE;
++=======
+ Elm_Gen_Item *it;
+
+ if (itb->realized) _item_block_unrealize(itb);
+ EINA_LIST_FOREACH(itb->items, l, it)
+ it->item->mincalcd = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
itb->changed = EINA_TRUE;
}
evas_object_size_hint_min_get(wd->scr, &minw, &minh);
evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
minh = -1;
++<<<<<<< HEAD
+ if (wd->height_for_width)
++=======
+ if (wd->mode == ELM_LIST_COMPRESS)
++>>>>>>> remotes/origin/upstream
{
Evas_Coord vw, vh;
wd->calc_job = ecore_job_add(_calc_job, wd);
}
}
++<<<<<<< HEAD
+ if (wd->mode == ELM_LIST_LIMIT)
++=======
+ else if (wd->mode == ELM_LIST_LIMIT)
++>>>>>>> remotes/origin/upstream
{
Evas_Coord vmw, vmh;
}
static void
++<<<<<<< HEAD
+_item_highlight(Elm_Genlist_Item *it)
+{
+ const char *selectraise;
+ if ((it->wd->no_select) || (it->no_select) || (it->generation < it->wd->generation) ||
+ (it->highlighted) || elm_widget_item_disabled_get(it) || (it->display_only))
++=======
+ _item_highlight(Elm_Gen_Item *it)
+ {
+ const char *selectraise;
+ if ((it->wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
+ (it->wd->no_highlight) ||
+ (it->generation < it->wd->generation) ||
+ (it->highlighted) || elm_widget_item_disabled_get(it) ||
+ (it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) || (it->item->mode_view) ||
+ (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
++>>>>>>> remotes/origin/upstream
return;
edje_object_signal_emit(VIEW(it), "elm,state,selected", "elm");
if (it->edit_obj) edje_object_signal_emit(it->edit_obj, "elm,state,selected", "elm");
{
if (it->edit_obj) evas_object_raise(it->edit_obj);
else evas_object_raise(VIEW(it));
++<<<<<<< HEAD
++=======
+ if ((it->item->group_item) && (it->item->group_item->realized))
+ evas_object_raise(it->item->VIEW(group_item));
++>>>>>>> remotes/origin/upstream
}
it->highlighted = EINA_TRUE;
}
static void
++<<<<<<< HEAD
+_item_unhighlight(Elm_Genlist_Item *it)
++=======
+ _item_unhighlight(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
if ((it->generation < it->wd->generation) || (!it->highlighted)) return;
edje_object_signal_emit(VIEW(it), "elm,state,unselected", "elm");
if (it->edit_obj) edje_object_signal_emit(it->edit_obj, "elm,state,unselected", "elm");
++<<<<<<< HEAD
+ if (!it->nostacking)
+ {
+ if ((it->order_num_in & 0x1) ^ it->stacking_even) evas_object_lower(VIEW(it));
+ else evas_object_raise(VIEW(it));
++=======
+ if (!it->item->nostacking)
+ {
+ if ((it->item->order_num_in & 0x1) ^ it->item->stacking_even)
+ {
+ if (it->edit_obj) evas_object_lower(it->edit_obj);
+ else evas_object_lower(VIEW(it));
+ }
+ else
+ {
+ if (it->edit_obj) evas_object_raise(it->edit_obj);
+ else evas_object_raise(VIEW(it));
+ }
++>>>>>>> remotes/origin/upstream
}
it->highlighted = EINA_FALSE;
}
static void
_item_position_update(Eina_List *list, int idx)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
Eina_List *l;
EINA_LIST_FOREACH(list, l, it)
}
static void
++<<<<<<< HEAD
+_item_block_del(Elm_Genlist_Item *it)
+{
+ Eina_Inlist *il;
+ Item_Block *itb = it->block;
+ Eina_Bool block_changed;
++=======
+ _item_block_del(Elm_Gen_Item *it)
+ {
+ Eina_Inlist *il;
+ Item_Block *itb = it->item->block;
++>>>>>>> remotes/origin/upstream
itb->items = eina_list_remove(itb->items, it);
itb->count--;
itb->changed = EINA_TRUE;
++<<<<<<< HEAD
+ if (!it->wd->reorder_deleted)
+ {
+ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
+ it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
+ }
++=======
+ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
+ it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
++>>>>>>> remotes/origin/upstream
if (itb->count < 1)
{
il = EINA_INLIST_GET(itb);
Item_Block *itbn = (Item_Block *)(il->next);
if (it->parent)
++<<<<<<< HEAD
+ it->parent->items = eina_list_remove(it->parent->items, it);
++=======
+ it->parent->item->items = eina_list_remove(it->parent->item->items, it);
++>>>>>>> remotes/origin/upstream
else
{
_item_block_position_update(il->next, itb->position);
Item_Block *itbn = (Item_Block *)(il->next);
if ((itbp) && ((itbp->count + itb->count) < itb->wd->max_items_per_block + itb->wd->max_items_per_block/2))
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it2;
+
+ EINA_LIST_FREE(itb->items, it2)
+ {
+ it2->block = itbp;
++=======
+ Elm_Gen_Item *it2;
+
+ EINA_LIST_FREE(itb->items, it2)
+ {
+ it2->item->block = itbp;
++>>>>>>> remotes/origin/upstream
itbp->items = eina_list_append(itbp->items, it2);
itbp->count++;
itbp->changed = EINA_TRUE;
it->wd->blocks = eina_inlist_remove(it->wd->blocks,
EINA_INLIST_GET(itb));
free(itb);
++<<<<<<< HEAD
+ block_changed = EINA_TRUE;
++=======
++>>>>>>> remotes/origin/upstream
}
else if ((itbn) && ((itbn->count + itb->count) < itb->wd->max_items_per_block + itb->wd->max_items_per_block/2))
{
while (itb->items)
{
Eina_List *last = eina_list_last(itb->items);
++<<<<<<< HEAD
+ Elm_Genlist_Item *it2 = last->data;
+
+ it2->block = itbn;
++=======
+ Elm_Gen_Item *it2 = last->data;
+
+ it2->item->block = itbn;
++>>>>>>> remotes/origin/upstream
itb->items = eina_list_remove_list(itb->items, last);
itbn->items = eina_list_prepend(itbn->items, it2);
itbn->count++;
it->wd->blocks =
eina_inlist_remove(it->wd->blocks, EINA_INLIST_GET(itb));
free(itb);
++<<<<<<< HEAD
+ block_changed = EINA_TRUE;
+ }
+ }
+ }
+ if (block_changed)
+ {
+ it->wd->pan_changed = EINA_TRUE;
+ evas_object_smart_changed(it->wd->pan_smart);
+ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
+ it->wd->calc_job = NULL;
+ }
+}
+
+static void
+_item_subitems_clear(Elm_Genlist_Item *it)
+{
+ if (!it) return;
+ Eina_List *tl = NULL, *l;
+ Elm_Object_Item *it2;
+
+ EINA_LIST_FOREACH(it->items, l, it2)
+ tl = eina_list_append(tl, it2);
+
++=======
+ }
+ }
+ }
+ }
+
+ static void
+ _item_subitems_clear(Elm_Gen_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Eina_List *tl = NULL, *l;
+ Elm_Object_Item *it2;
+
+ EINA_LIST_FOREACH(it->item->items, l, it2)
+ tl = eina_list_append(tl, it2);
++>>>>>>> remotes/origin/upstream
EINA_LIST_FREE(tl, it2)
elm_object_item_del(it2);
}
static void
++<<<<<<< HEAD
+_item_del(Elm_Genlist_Item *it)
++=======
+ _item_del(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = WIDGET(it);
evas_event_freeze(evas_object_evas_get(obj));
++<<<<<<< HEAD
+ elm_genlist_item_subitems_clear((Elm_Object_Item *) it);
+ if (it->wd->show_item == it) it->wd->show_item = NULL;
+ if (it->realized) _item_unrealize(it, EINA_FALSE);
+ if (it->block) _item_block_del(it);
+ if (it->effect_item_realized) _effect_item_unrealize(it);
+ if (it->queued)
+ it->wd->queue = eina_list_remove(it->wd->queue, it);
+#ifdef ANCHOR_ITEM
+ if (it->wd->anchor_item == it)
+ {
+ it->wd->anchor_item = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ if (!it->wd->anchor_item)
+ it->wd->anchor_item = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ }
+#endif
+ if (it->parent)
+ it->parent->items = eina_list_remove(it->parent->items, it);
+ if (it->swipe_timer) ecore_timer_del(it->swipe_timer);
+ _elm_genlist_item_del_serious(it);
++=======
+ elm_genlist_item_subitems_clear((Elm_Object_Item *)it);
+ if (it->wd->show_item == it) it->wd->show_item = NULL;
+ if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
+ if (it->item->decorate_mode_item_realized) _decorate_mode_item_unrealize(it);
+ if (it->item->block) _item_block_del(it);
+ if (it->item->queued)
+ it->wd->queue = eina_list_remove(it->wd->queue, it);
+ if (it->wd->anchor_item == it)
+ {
+ it->wd->anchor_item = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ if (!it->wd->anchor_item)
+ it->wd->anchor_item = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ }
+ if (it->wd->expanded_item == it) it->wd->expanded_item = NULL;
+ if (it->parent)
+ it->parent->item->items = eina_list_remove(it->parent->item->items, it);
+ if (it->item->swipe_timer) ecore_timer_del(it->item->swipe_timer);
+ _elm_genlist_item_del_serious(it);
+ elm_genlist_item_class_unref((Elm_Genlist_Item_Class *)it->itc);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
}
static void
++<<<<<<< HEAD
+_item_select(Elm_Genlist_Item *it)
+{
+ Eina_List *l;
+ Evas_Object *obj;
+
+ if ((it->wd->no_select) || (it->no_select) || (it->generation < it->wd->generation)) return;
+ if (!it->selected)
+ {
+ it->selected = EINA_TRUE;
+ it->wd->selected = eina_list_append(it->wd->selected, it);
+ }
+ else if (!it->wd->always_select) return;
+
+ evas_object_ref(WIDGET(it));
+ it->walking++;
+ it->wd->walking++;
+ if (it->wd->last_selected_item &&
+ (it != (Elm_Genlist_Item *) it->wd->last_selected_item))
+ {
+ EINA_LIST_FOREACH(((Elm_Genlist_Item *)it->wd->last_selected_item)->content_objs, l, obj)
+ {
+ elm_widget_focused_object_clear(obj);
+ elm_widget_tree_unfocusable_set(obj, EINA_TRUE);
+ }
+ ((Elm_Genlist_Item *)it->wd->last_selected_item)->can_focus = EINA_FALSE;
+ }
+ if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
+ if (it->generation == it->wd->generation)
+ evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
+ it->walking--;
+ it->wd->walking--;
+ if ((it->wd->clear_me) && (!it->wd->walking))
+ _elm_genlist_clear(WIDGET(it), EINA_TRUE);
+ else
+ {
+ if ((!it->walking) && (it->generation < it->wd->generation))
+ {
+ if (!it->relcount)
+ {
+ _item_del(it);
+ elm_widget_item_free(it);
+ }
+ }
+ else
+ it->wd->last_selected_item = (Elm_Object_Item *) it;
+ }
+ evas_object_unref(WIDGET(it));
+}
+
+static void
+_item_unselect(Elm_Genlist_Item *it)
++=======
+ _item_unselect(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
if ((it->generation < it->wd->generation) || (!it->selected)) return;
it->selected = EINA_FALSE;
Evas_Object *obj,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord minw = 0, minh = 0, x, y, dx, dy, adx, ady;
Evas_Coord ox, oy, ow, oh, it_scrl_y, y_pos;
if (!it->wd->on_hold)
{
it->wd->on_hold = EINA_TRUE;
++<<<<<<< HEAD
+ if ((!it->wd->wasselected) && (!it->renamed))
++=======
+ if ((!it->wd->wasselected) && (!it->flipped))
++>>>>>>> remotes/origin/upstream
{
_item_unhighlight(it);
_item_unselect(it);
it_scrl_y = ev->cur.canvas.y - it->wd->reorder_it->dy;
if (!it->wd->reorder_start_y)
++<<<<<<< HEAD
+ it->wd->reorder_start_y = it->block->y + it->y;
+
+ if (it_scrl_y < oy)
+ y_pos = oy;
+ else if (it_scrl_y + it->wd->reorder_it->h > oy + oh)
+ y_pos = oy + oh - it->wd->reorder_it->h;
++=======
+ it->wd->reorder_start_y = it->item->block->y + it->y;
+
+ if (it_scrl_y < oy)
+ y_pos = oy;
+ else if (it_scrl_y + it->wd->reorder_it->item->h > oy + oh)
+ y_pos = oy + oh - it->wd->reorder_it->item->h;
++>>>>>>> remotes/origin/upstream
else
y_pos = it_scrl_y;
if (it->edit_obj)
++<<<<<<< HEAD
+ _item_position(it, it->edit_obj, it->scrl_x, y_pos);
+ else
+ _item_position(it, VIEW(it), it->scrl_x, y_pos);
++=======
+ _item_position(it, it->edit_obj, it->item->scrl_x, y_pos);
+ else
+ _item_position(it, VIEW(it), it->item->scrl_x, y_pos);
++>>>>>>> remotes/origin/upstream
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
}
return;
}
++<<<<<<< HEAD
+ if (!it->display_only)
++=======
+ if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
++>>>>>>> remotes/origin/upstream
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
x = ev->cur.canvas.x - x;
ecore_timer_del(it->long_timer);
it->long_timer = NULL;
}
++<<<<<<< HEAD
+ if ((!it->wd->wasselected) && (!it->renamed))
++=======
+ if (!it->wd->wasselected)
++>>>>>>> remotes/origin/upstream
{
_item_unhighlight(it);
_item_unselect(it);
}
if (dy < 0)
{
++<<<<<<< HEAD
+ if ((ady > adx) && (!it->wd->drag_started))
++=======
+ if (ady > adx)
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(WIDGET(it),
SIG_DRAG_START_UP, it);
else
}
else
{
++<<<<<<< HEAD
+ if ((ady > adx) && (!it->wd->drag_started))
++=======
+ if (ady > adx)
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(WIDGET(it),
SIG_DRAG_START_DOWN, it);
else
static Eina_Bool
_long_press(void *data)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data, *it_tmp;
+ Eina_List *list, *l;
+
+ it->long_timer = NULL;
+ if (elm_widget_item_disabled_get(it) || (it->dragging) || (it->display_only) || (it->wd->rename_it))
+ return ECORE_CALLBACK_CANCEL;
+ it->wd->longpressed = EINA_TRUE;
+ evas_object_smart_callback_call(WIDGET(it), SIG_LONGPRESSED, it);
+ if ((it->wd->reorder_mode) && (it->flags != ELM_GENLIST_ITEM_GROUP))
++=======
+ Elm_Gen_Item *it = data, *it_tmp;
+ Eina_List *list, *l;
+
+ it->long_timer = NULL;
+ if (elm_widget_item_disabled_get(it) || (it->dragging) ||
+ (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
+ return ECORE_CALLBACK_CANCEL;
+ it->wd->longpressed = EINA_TRUE;
+ evas_object_smart_callback_call(WIDGET(it), SIG_LONGPRESSED, it);
+ if ((it->wd->reorder_mode) && (!it->group))
++>>>>>>> remotes/origin/upstream
{
it->wd->reorder_it = it;
it->wd->reorder_start_y = 0;
{
if (it != it_tmp) _item_unselect(it_tmp);
}
++<<<<<<< HEAD
+ if (it->items)
+ {
+ EINA_LIST_FOREACH(it->items, l, it_tmp)
+ {
+ if (elm_genlist_item_expanded_get((Elm_Object_Item *) it_tmp))
+ {
+ elm_genlist_item_expanded_set((Elm_Object_Item *)it_tmp,
+ EINA_FALSE);
+ return ECORE_CALLBACK_RENEW;
+ }
+ }
+ }
+ if (elm_genlist_item_expanded_get((Elm_Object_Item *) it))
+ {
+ elm_genlist_item_expanded_set((Elm_Object_Item *) it, EINA_FALSE);
+ return ECORE_CALLBACK_RENEW;
+ }
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj, "elm,action,item,reorder_start", "elm");
+ else
++=======
+ if (elm_genlist_item_expanded_get((Elm_Object_Item *)it))
+ {
+ elm_genlist_item_expanded_set((Elm_Object_Item *)it, EINA_FALSE);
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ if (!it->wd->decorate_mode)
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(VIEW(it), "elm,state,reorder,enabled", "elm");
}
return ECORE_CALLBACK_CANCEL;
}
static void
++<<<<<<< HEAD
+_swipe(Elm_Genlist_Item *it)
++=======
+ _swipe(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
int i, sum = 0;
if (!it) return;
++<<<<<<< HEAD
+ if ((it->display_only) || elm_widget_item_disabled_get(it)) return;
++=======
+ if ((it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) ||
+ elm_widget_item_disabled_get(it)) return;
++>>>>>>> remotes/origin/upstream
it->wd->swipe = EINA_FALSE;
for (i = 0; i < it->wd->movements; i++)
{
static Eina_Bool
_swipe_cancel(void *data)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
if (!it) return ECORE_CALLBACK_CANCEL;
it->wd->swipe = EINA_FALSE;
static void
_multi_touch_gesture_eval(void *data)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
it->wd->multitouched = EINA_FALSE;
if (it->wd->multi_timer)
Evas_Object *obj __UNUSED__,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
Evas_Event_Multi_Down *ev = event_info;
if ((it->wd->multi_device != 0) || (it->wd->multitouched) || (it->wd->multi_timeout)) return;
it->dragging = EINA_FALSE;
evas_object_smart_callback_call(WIDGET(it), SIG_DRAG_STOP, it);
}
++<<<<<<< HEAD
+ if (it->swipe_timer)
+ {
+ ecore_timer_del(it->swipe_timer);
+ it->swipe_timer = NULL;
++=======
+ if (it->item->swipe_timer)
+ {
+ ecore_timer_del(it->item->swipe_timer);
+ it->item->swipe_timer = NULL;
++>>>>>>> remotes/origin/upstream
}
if (it->wd->on_hold)
{
Evas_Object *obj __UNUSED__,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
Evas_Event_Multi_Up *ev = event_info;
if (it->wd->multi_device != ev->device) return;
Evas_Object *obj __UNUSED__,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
Evas_Event_Multi_Move *ev = event_info;
if (it->wd->multi_device != ev->device) return;
Evas_Object *obj,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+ Evas_Event_Mouse_Down *ev = event_info;
+ Evas_Coord x, y;
+ Eina_List *l;
+ Evas_Object *iobj;
+
+ if (ev->button != 1) return;
+ if (!it->can_focus)
+ {
+ EINA_LIST_FOREACH(it->content_objs, l, iobj)
+ {
+ elm_widget_tree_unfocusable_set(iobj, EINA_FALSE);
+ }
+ it->can_focus = EINA_TRUE;
+ }
++=======
+ Elm_Gen_Item *it = data;
+ Evas_Event_Mouse_Down *ev = event_info;
+ Evas_Coord x, y;
+
+ if (ev->button != 1) return;
++>>>>>>> remotes/origin/upstream
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
it->wd->on_hold = EINA_TRUE;
it->wd->wasselected = it->selected;
_item_highlight(it);
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
++<<<<<<< HEAD
+ if ((!elm_widget_item_disabled_get(it)) && (!it->display_only))
++=======
+ if ((!elm_widget_item_disabled_get(it)) &&
+ (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
++>>>>>>> remotes/origin/upstream
{
evas_object_smart_callback_call(WIDGET(it), SIG_CLICKED_DOUBLE, it);
evas_object_smart_callback_call(WIDGET(it), SIG_ACTIVATED, it);
}
if (it->long_timer) ecore_timer_del(it->long_timer);
++<<<<<<< HEAD
+ if (it->swipe_timer) ecore_timer_del(it->swipe_timer);
+ it->swipe_timer = ecore_timer_add(0.4, _swipe_cancel, it);
++=======
+ if (it->item->swipe_timer) ecore_timer_del(it->item->swipe_timer);
+ it->item->swipe_timer = ecore_timer_add(0.4, _swipe_cancel, it);
++>>>>>>> remotes/origin/upstream
if (it->realized)
it->long_timer = ecore_timer_add(it->wd->longpress_timeout, _long_press,
it);
Evas_Object *obj __UNUSED__,
void *event_info)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
++=======
+ Elm_Gen_Item *it = data;
++>>>>>>> remotes/origin/upstream
Evas_Event_Mouse_Up *ev = event_info;
Eina_Bool dragged = EINA_FALSE;
it->wd->mouse_down = EINA_FALSE;
if (it->wd->multitouched)
{
++<<<<<<< HEAD
+ // in single selection modes, some multi touching can make multi highlighted items.
+ // if a item not selected and highlighted, it should be unhighlighted.
++=======
++>>>>>>> remotes/origin/upstream
if ((!it->wd->multi) && (!it->selected) && (it->highlighted)) _item_unhighlight(it);
if (it->wd->multi_down) return;
_multi_touch_gesture_eval(data);
evas_object_smart_callback_call(WIDGET(it), SIG_DRAG_STOP, it);
dragged = 1;
}
++<<<<<<< HEAD
+ if (it->swipe_timer)
+ {
+ ecore_timer_del(it->swipe_timer);
+ it->swipe_timer = NULL;
++=======
+ if (it->item->swipe_timer)
+ {
+ ecore_timer_del(it->item->swipe_timer);
+ it->item->swipe_timer = NULL;
++>>>>>>> remotes/origin/upstream
}
if (it->wd->multi_timer)
{
if (it->wd->reorder_rel && (it->wd->reorder_it->parent == it->wd->reorder_rel->parent))
{
++<<<<<<< HEAD
+ if (it_scrl_y <= it->wd->reorder_rel->scrl_y)
++=======
+ if (it_scrl_y <= it->wd->reorder_rel->item->scrl_y)
++>>>>>>> remotes/origin/upstream
_item_move_before(it->wd->reorder_it, it->wd->reorder_rel);
else
_item_move_after(it->wd->reorder_it, it->wd->reorder_rel);
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
}
++<<<<<<< HEAD
+ it->wd->reorder_deleted = EINA_FALSE;
+ edje_object_signal_emit(it->edit_obj, "elm,action,item,reorder_end", "elm");
+ it->wd->reorder_it = it->wd->reorder_rel = NULL;
+ elm_smart_scroller_hold_set(it->wd->scr, EINA_FALSE);
+ elm_smart_scroller_bounce_allow_set(it->wd->scr, EINA_FALSE, EINA_TRUE);
++=======
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,disabled", "elm");
+ it->wd->reorder_it = it->wd->reorder_rel = NULL;
+ elm_smart_scroller_hold_set(it->wd->scr, EINA_FALSE);
+ elm_smart_scroller_bounce_allow_set(it->wd->scr, it->wd->h_bounce, it->wd->v_bounce);
++>>>>>>> remotes/origin/upstream
}
if (it->wd->longpressed)
{
it->wd->longpressed = EINA_FALSE;
++<<<<<<< HEAD
+ if ((!it->wd->wasselected) && (!it->renamed))
++=======
+ if ((!it->wd->wasselected) && (!it->flipped))
++>>>>>>> remotes/origin/upstream
{
_item_unhighlight(it);
_item_unselect(it);
{
if (it->want_unrealize)
{
++<<<<<<< HEAD
+ _item_unrealize(it, EINA_FALSE);
+ if (it->block->want_unrealize)
+ _item_block_unrealize(it->block);
+ }
+ }
+ if (elm_widget_item_disabled_get(it) || (dragged) || (it->display_only))
++=======
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
+ if (it->item->block->want_unrealize)
+ _item_block_unrealize(it->item->block);
+ }
+ }
+ if (elm_widget_item_disabled_get(it) || (dragged) ||
+ (it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY))
++>>>>>>> remotes/origin/upstream
return;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if (it->wd->multi)
if (!it->selected)
{
_item_highlight(it);
++<<<<<<< HEAD
+ _item_select(it);
++=======
+ it->sel_cb(it);
++>>>>>>> remotes/origin/upstream
}
else
{
else
{
const Eina_List *l, *l_next;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it2;
++=======
+ Elm_Gen_Item *it2;
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH_SAFE(it->wd->selected, l, l_next, it2)
if (it2 != it)
//_item_select(it);
}
_item_highlight(it);
++<<<<<<< HEAD
+ _item_select(it);
+ }
+}
+
+static void
+_mouse_down_scroller(void *data,
+ Evas *evas __UNUSED__,
+ Evas_Object *obj __UNUSED__,
+ void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+
+ if (!wd) return;
+ wd->drag_started = EINA_FALSE;
+}
+
+static void
+_mouse_up_scroller(void *data,
+ Evas *evas __UNUSED__,
+ Evas_Object *obj __UNUSED__,
+ void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+
+ if (!wd) return;
+ wd->drag_started = EINA_FALSE;
+}
+
+static void
+_mouse_move_scroller(void *data,
+ Evas *evas __UNUSED__,
+ Evas_Object *obj __UNUSED__,
+ void *event_info)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Event_Mouse_Move *ev = event_info;
+ Evas_Coord minw = 0, minh = 0, dx, dy, adx, ady;
+
+ if (!wd) return;
+ if (wd->drag_started) return;
+
+ elm_coords_finger_size_adjust(1, &minw, 1, &minh);
+ dx = ev->cur.canvas.x - ev->prev.canvas.x;
+ dy = ev->cur.canvas.y - ev->prev.canvas.y;
+ adx = dx;
+ ady = dy;
+ if (adx < 0) adx = -dx;
+ if (ady < 0) ady = -dy;
+ if (((ady < minh) && (ady > minh / 2)) && (ady > adx))
+ {
+ if (dy < 0)
+ {
+ evas_object_smart_callback_call(data, SIG_DRAG_START_UP, NULL);
+ wd->drag_started = EINA_TRUE;
+ }
+ else
+ {
+ evas_object_smart_callback_call(data, SIG_DRAG_START_DOWN, NULL);
+ wd->drag_started = EINA_TRUE;
+ }
++=======
+ it->sel_cb(it);
++>>>>>>> remotes/origin/upstream
}
}
const char *emission __UNUSED__,
const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+
+ if (it->expanded)
++=======
+ Elm_Gen_Item *it = data;
+
+ if (it->item->expanded)
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(WIDGET(it), SIG_CONTRACT_REQUEST, it);
else
evas_object_smart_callback_call(WIDGET(it), SIG_EXPAND_REQUEST, it);
const char *emission __UNUSED__,
const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+
+ if (!it->expanded)
++=======
+ Elm_Gen_Item *it = data;
+
+ if (!it->item->expanded)
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(WIDGET(it), SIG_EXPAND_REQUEST, it);
}
const char *emission __UNUSED__,
const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+
+ if (it->expanded)
++=======
+ Elm_Gen_Item *it = data;
+
+ if (it->item->expanded)
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(WIDGET(it), SIG_CONTRACT_REQUEST, it);
}
{
if (!data) return;
if (!obj) return;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+ if ((it->generation < it->wd->generation) || (!it->realized) || (!it->mode_view)) return;
++=======
+ Elm_Gen_Item *it = data;
+ if ((it->generation < it->wd->generation) || (!it->realized) || (!it->item->mode_view)) return;
++>>>>>>> remotes/origin/upstream
char buf[1024];
Evas *te = evas_object_evas_get(obj);
evas_event_freeze(te);
++<<<<<<< HEAD
+ it->nocache = EINA_FALSE;
+ _mode_item_unrealize(it);
++=======
+ it->item->nocache_once = EINA_FALSE;
+ _mode_item_unrealize(it);
+ if (it->item->group_item)
+ evas_object_raise(it->item->VIEW(group_item));
++>>>>>>> remotes/origin/upstream
snprintf(buf, sizeof(buf), "elm,state,%s,passive,finished", it->wd->mode_type);
edje_object_signal_callback_del_full(obj, buf, "elm", _mode_finished_signal_cb, it);
evas_event_thaw(te);
wd->item_cache_count--;
if (itc->spacer) evas_object_del(itc->spacer);
if (itc->base_view) evas_object_del(itc->base_view);
++<<<<<<< HEAD
+ if (itc->item_style) eina_stringshare_del(itc->item_style);
++=======
+ eina_stringshare_del(itc->item_style);
++>>>>>>> remotes/origin/upstream
free(itc);
}
evas_event_thaw(evas_object_evas_get(wd->obj));
}
static void
++<<<<<<< HEAD
+_item_cache_add(Elm_Genlist_Item *it)
++=======
+ _item_cache_add(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
Item_Cache *itc;
it->spacer = NULL;
itc->base_view = VIEW(it);
VIEW(it) = NULL;
++<<<<<<< HEAD
+ evas_object_hide(itc->base_view);
+ evas_object_move(itc->base_view, -9999, -9999);
+ itc->item_style = eina_stringshare_add(it->itc->item_style);
+ if (it->flags & ELM_GENLIST_ITEM_SUBITEMS) itc->tree = 1;
+ itc->compress = (it->wd->compress);
+ itc->selected = it->selected;
+ itc->disabled = elm_widget_item_disabled_get(it);
+ itc->expanded = it->expanded;
++=======
+ edje_object_signal_emit(itc->base_view, "elm,state,unselected", "elm");
+ evas_object_hide(itc->base_view);
+ evas_object_move(itc->base_view, -9999, -9999);
+ itc->item_style = eina_stringshare_add(it->itc->item_style);
+ if (it->item->type & ELM_GENLIST_ITEM_TREE) itc->tree = 1;
+ itc->selected = it->selected;
+ itc->disabled = elm_widget_item_disabled_get(it);
+ itc->expanded = it->item->expanded;
++>>>>>>> remotes/origin/upstream
if (it->long_timer)
{
ecore_timer_del(it->long_timer);
it->long_timer = NULL;
}
++<<<<<<< HEAD
+ if (it->swipe_timer)
+ {
+ ecore_timer_del(it->swipe_timer);
+ it->swipe_timer = NULL;
++=======
+ if (it->item->swipe_timer)
+ {
+ ecore_timer_del(it->item->swipe_timer);
+ it->item->swipe_timer = NULL;
++>>>>>>> remotes/origin/upstream
}
// FIXME: other callbacks?
edje_object_signal_callback_del_full(itc->base_view,
}
static Item_Cache *
++<<<<<<< HEAD
+_item_cache_find(Elm_Genlist_Item *it)
++=======
+ _item_cache_find(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
Item_Cache *itc;
Eina_Bool tree = 0;
++<<<<<<< HEAD
+ if (it->flags & ELM_GENLIST_ITEM_SUBITEMS) tree = 1;
++=======
+ if (it->item->type & ELM_GENLIST_ITEM_TREE) tree = 1;
++>>>>>>> remotes/origin/upstream
EINA_INLIST_FOREACH(it->wd->item_cache, itc)
{
if ((itc->selected) || (itc->disabled) || (itc->expanded))
continue;
if ((itc->tree == tree) &&
++<<<<<<< HEAD
+ (itc->compress == it->wd->compress) &&
+ (!strcmp(it->itc->item_style, itc->item_style)))
++=======
+ (((!it->itc->item_style) && (!itc->item_style)) ||
+ (it->itc->item_style && itc->item_style &&
+ (!strcmp(it->itc->item_style, itc->item_style)))))
++>>>>>>> remotes/origin/upstream
{
it->wd->item_cache = eina_inlist_remove(it->wd->item_cache,
EINA_INLIST_GET(itc));
}
static void
++<<<<<<< HEAD
+_elm_genlist_item_index_update(Elm_Genlist_Item *it)
+{
+ if (it->position_update || it->block->position_update)
++=======
+ _elm_genlist_item_index_update(Elm_Gen_Item *it)
+ {
+ if (it->position_update || it->item->block->position_update)
++>>>>>>> remotes/origin/upstream
{
evas_object_smart_callback_call(WIDGET(it), SIG_INDEX_UPDATE, it);
it->position_update = EINA_FALSE;
}
static void
++<<<<<<< HEAD
+_elm_genlist_item_odd_even_update(Elm_Genlist_Item *it)
+{
+ if (!it->nostacking)
+ {
+ if ((it->order_num_in & 0x1) ^ it->stacking_even)
+ evas_object_lower(VIEW(it));
+ else
+ evas_object_raise(VIEW(it));
+ }
+
+ if (it->order_num_in & 0x1)
+ edje_object_signal_emit(VIEW(it), "elm,state,odd", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,even", "elm");
+}
+
+static void
+_elm_genlist_item_state_update(Elm_Genlist_Item *it, Item_Cache *itc)
++=======
+ _elm_genlist_item_odd_even_update(Elm_Gen_Item *it)
+ {
+ if (!it->item->nostacking)
+ {
+ if ((it->item->order_num_in & 0x1) ^ it->item->stacking_even)
+ {
+ if (it->edit_obj) evas_object_lower(it->edit_obj);
+ else evas_object_lower(VIEW(it));
+ }
+ else
+ {
+ if (it->edit_obj) evas_object_raise(it->edit_obj);
+ else evas_object_raise(VIEW(it));
+ }
+ }
+
+ if (it->item->order_num_in & 0x1)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,odd", "elm");
+ if (it->edit_obj) edje_object_signal_emit(it->edit_obj, "elm,state,odd", "elm");
+ }
+ else
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,even", "elm");
+ if (it->edit_obj) edje_object_signal_emit(it->edit_obj, "elm,state,even", "elm");
+ }
+ }
+
+ static void
+ _elm_genlist_item_state_update(Elm_Gen_Item *it, Item_Cache *itc)
++>>>>>>> remotes/origin/upstream
{
if (itc)
{
if (it->selected != itc->selected)
{
if (it->selected)
++<<<<<<< HEAD
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,selected", "elm");
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,selected", "elm");
+ }
++=======
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,selected", "elm");
+
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,selected", "elm");
++>>>>>>> remotes/origin/upstream
}
if (elm_widget_item_disabled_get(it) != itc->disabled)
{
if (elm_widget_item_disabled_get(it))
++<<<<<<< HEAD
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,disabled", "elm");
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,disabled", "elm");
+ }
+ }
+ if (it->expanded != itc->expanded)
+ {
+ if (it->expanded)
+ {
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,expanded", "elm");
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,expanded", "elm");
+ }
++=======
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,disabled", "elm");
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,disabled", "elm");
+ }
+ if (it->item->expanded != itc->expanded)
+ {
+ if (it->item->expanded)
+ edje_object_signal_emit(VIEW(it),
+ "elm,state,expanded", "elm");
+ if (it->edit_obj)
+ edje_object_signal_emit(it->edit_obj,
+ "elm,state,expanded", "elm");
++>>>>>>> remotes/origin/upstream
}
}
else
edje_object_signal_emit(it->edit_obj,
"elm,state,selected", "elm");
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
if (elm_widget_item_disabled_get(it))
{
edje_object_signal_emit(VIEW(it),
edje_object_signal_emit(it->edit_obj,
"elm,state,disabled", "elm");
}
++<<<<<<< HEAD
+ if (it->expanded)
++=======
+ if (it->item->expanded)
++>>>>>>> remotes/origin/upstream
{
edje_object_signal_emit(VIEW(it),
"elm,state,expanded", "elm");
}
static void
-_item_cache_free(Item_Cache *itc)
++<<<<<<< HEAD
+_content_focused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
- if (itc->spacer) evas_object_del(itc->spacer);
- if (itc->base_view) evas_object_del(itc->base_view);
- eina_stringshare_del(itc->item_style);
- free(itc);
+ Elm_Genlist_Item *it = data;
+ if (it) it->defer_unrealize = EINA_TRUE;
}
static void
if (parts && fnmatch(parts, key, FNM_PERIOD))
continue;
- char *s = it->itc->func.text_get
- ((void *)it->base.data, WIDGET(it), key);
+ ic = edje_object_part_swallow_get(target, key);
+ if (ic)
+ {
+ res = eina_list_remove(res, ic);
+ edje_object_part_unswallow(target, ic);
+ evas_object_del(ic);
+ }
+ }
+ }
+
+ return res;
+}
+
+static Eina_List *
+_item_mode_content_realize(Elm_Genlist_Item *it,
+ Evas_Object *target,
+ Eina_List **source,
+ const char *parts,
+ Eina_List **contents_list,
+ const char *contents_part)
+
+{
+ Eina_List *res = NULL;
+
+ if (it->itc->func.content_get)
+ {
+ const Eina_List *l;
+ const char *key;
+
+ *source = elm_widget_stringlist_get(edje_object_data_get(target, contents_part));
+ if (parts && (eina_list_count(*source) != eina_list_count(*contents_list)))
+ res = *contents_list;
+ EINA_LIST_FOREACH(*source, l, key)
+ {
+ if (parts && fnmatch(parts, key, FNM_PERIOD))
+ continue;
+
+ Evas_Object *ic = it->itc->func.content_get
+ ((void *)it->base.data, WIDGET(it), l->data);
+
+ if (ic)
+ {
+ res = eina_list_append(res, ic);
+ edje_object_part_swallow(target, key, ic);
+ evas_object_show(ic);
+ elm_widget_sub_object_add(WIDGET(it), ic);
+ if (it->mode_view || it->wd->edit_mode)
+ {
+ if (elm_widget_item_disabled_get(it))
+ elm_widget_disabled_set(ic, EINA_TRUE);
+ }
+ else if (it->renamed)
+ {
+ // FIXME: if entry calcuates its cursor position correctly and conformant works,
+ // genlist does not need to handle this focus thing.
+ evas_object_smart_callback_add(ic, "focused", _content_focused, it);
+ evas_object_smart_callback_add(ic, "unfocused", _content_unfocused, it);
+ }
+ }
+ }
+ }
+
+ return res;
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
+_item_cache_free(Item_Cache *itc)
+{
+ if (itc->spacer) evas_object_del(itc->spacer);
+ if (itc->base_view) evas_object_del(itc->base_view);
++<<<<<<< HEAD
+ if (itc->item_style) eina_stringshare_del(itc->item_style);
++=======
++ eina_stringshare_del(itc->item_style);
++>>>>>>> remotes/origin/upstream
+ free(itc);
+}
+
+static void
++<<<<<<< HEAD
+_item_text_realize(Elm_Genlist_Item *it,
++=======
++_item_text_realize(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
+ Evas_Object *target,
+ Eina_List **source,
+ const char *parts)
+{
+ if (it->itc->func.text_get)
+ {
+ const Eina_List *l;
+ const char *key;
+
+ *source = elm_widget_stringlist_get(edje_object_data_get(target, "texts"));
+ EINA_LIST_FOREACH(*source, l, key)
+ {
+ if (parts && fnmatch(parts, key, FNM_PERIOD))
+ continue;
+
+ char *s = it->itc->func.text_get
+ ((void *)it->base.data, WIDGET(it), key);
if (s)
{
}
static Eina_List *
++<<<<<<< HEAD
+_item_content_unrealize(Elm_Genlist_Item *it,
+ Evas_Object *target,
+ Eina_List **source,
+ const char *parts)
++=======
+ _item_content_unrealize(Elm_Gen_Item *it,
+ Evas_Object *target,
+ Eina_List **source,
+ const char *parts)
++>>>>>>> remotes/origin/upstream
{
Eina_List *res = it->content_objs;
}
static Eina_List *
++<<<<<<< HEAD
+_item_content_realize(Elm_Genlist_Item *it,
++=======
+ _item_content_realize(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
Evas_Object *target,
Eina_List **source,
const char *parts)
*source = elm_widget_stringlist_get(edje_object_data_get(target, "contents"));
if (parts && (eina_list_count(*source) != eina_list_count(it->content_objs)))
++<<<<<<< HEAD
+ res = it->content_objs;
++=======
+ res = it->content_objs;
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(*source, l, key)
{
edje_object_part_swallow(target, key, ic);
evas_object_show(ic);
elm_widget_sub_object_add(WIDGET(it), ic);
++<<<<<<< HEAD
+ evas_object_event_callback_add(ic, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it);
++=======
++>>>>>>> remotes/origin/upstream
if (elm_widget_item_disabled_get(it))
elm_widget_disabled_set(ic, EINA_TRUE);
}
}
static void
++<<<<<<< HEAD
+_item_state_realize(Elm_Genlist_Item *it,
++=======
+ _item_state_realize(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
Evas_Object *target,
Eina_List **source,
const char *parts)
}
}
++<<<<<<< HEAD
+static void
+_item_realize(Elm_Genlist_Item *it,
++=======
+ static Eina_List *
+ _item_flips_realize(Elm_Gen_Item *it,
+ Evas_Object *target,
+ Eina_List **source)
+ {
+ Eina_List *res = NULL;
+
+ if (it->itc->func.content_get)
+ {
+ const Eina_List *l;
+ const char *key;
+ Evas_Object *ic = NULL;
+
+ *source = elm_widget_stringlist_get(edje_object_data_get(target, "flips"));
+
+ EINA_LIST_FOREACH(*source, l, key)
+ {
+ if (it->itc->func.content_get)
+ ic = it->itc->func.content_get
+ ((void *)it->base.data, WIDGET(it), key);
+ if (ic)
+ {
+ res = eina_list_append(res, ic);
+ edje_object_part_swallow(target, key, ic);
+ evas_object_show(ic);
+ elm_widget_sub_object_add(WIDGET(it), ic);
+ if (elm_widget_item_disabled_get(it))
+ elm_widget_disabled_set(ic, EINA_TRUE);
+ }
+ }
+ }
+
+ return res;
+ }
+
+ static void
+ _item_realize(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
int in,
Eina_Bool calc)
{
Item_Cache *itc = NULL;
if (it->generation < it->wd->generation) return;
++<<<<<<< HEAD
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ if (it->realized)
+ {
+ if (it->order_num_in != in)
+ {
+ it->order_num_in = in;
++=======
+ //evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ if (it->realized)
+ {
+ if (it->item->order_num_in != in)
+ {
+ it->item->order_num_in = in;
++>>>>>>> remotes/origin/upstream
_elm_genlist_item_odd_even_update(it);
_elm_genlist_item_state_update(it, NULL);
_elm_genlist_item_index_update(it);
}
++<<<<<<< HEAD
+ evas_event_thaw(evas_object_evas_get(it->wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
+ return;
+ }
+ it->order_num_in = in;
+ if (it->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE) calc = EINA_FALSE;
+ if ((it->nocache) && (!it->renamed))
+ it->nocache = EINA_FALSE;
+ else
+ itc = _item_cache_find(it);
+ if (itc && (!it->wd->effect_mode))
++=======
+ //evas_event_thaw(evas_object_evas_get(it->wd->obj));
+ //evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
+ return;
+ }
+ it->item->order_num_in = in;
+
+ if (it->item->nocache_once)
+ it->item->nocache_once = EINA_FALSE;
+ else if (!it->item->nocache)
+ itc = _item_cache_find(it);
+ if (itc && (!it->wd->tree_effect_enabled))
++>>>>>>> remotes/origin/upstream
{
VIEW(it) = itc->base_view;
itc->base_view = NULL;
evas_object_smart_member_add(VIEW(it), it->wd->pan_smart);
elm_widget_sub_object_add(WIDGET(it), VIEW(it));
++<<<<<<< HEAD
+ if (it->flags & ELM_GENLIST_ITEM_SUBITEMS)
+ strncpy(buf, "tree", sizeof(buf));
+ else strncpy(buf, "item", sizeof(buf));
+ if (it->wd->compress)
+ strncat(buf, "_compress", sizeof(buf) - strlen(buf));
+
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+ strncat(buf, it->itc->item_style, sizeof(buf) - strlen(buf));
++=======
+ if (it->item->type & ELM_GENLIST_ITEM_TREE)
+ snprintf(buf, sizeof(buf), "tree%s/%s", it->wd->mode == ELM_LIST_COMPRESS ? "_compress" : "", it->itc->item_style ?: "default");
+ else
+ snprintf(buf, sizeof(buf), "item%s/%s", it->wd->mode == ELM_LIST_COMPRESS ? "_compress" : "", it->itc->item_style ?: "default");
++>>>>>>> remotes/origin/upstream
_elm_theme_object_set(WIDGET(it), VIEW(it), "genlist", buf,
elm_widget_style_get(WIDGET(it)));
stacking_even = edje_object_data_get(VIEW(it), "stacking_even");
if (!stacking_even) stacking_even = "above";
++<<<<<<< HEAD
+ it->stacking_even = !!strcmp("above", stacking_even);
+
+ stacking = edje_object_data_get(VIEW(it), "stacking");
+ if (!stacking) stacking = "yes";
+ it->nostacking = !!strcmp("yes", stacking);
++=======
+ it->item->stacking_even = !!strcmp("above", stacking_even);
+
+ stacking = edje_object_data_get(VIEW(it), "stacking");
+ if (!stacking) stacking = "yes";
+ it->item->nostacking = !!strcmp("yes", stacking);
++>>>>>>> remotes/origin/upstream
edje_object_mirrored_set(VIEW(it),
elm_widget_mirrored_get(WIDGET(it)));
treesize = edje_object_data_get(VIEW(it), "treesize");
if (treesize) tsize = atoi(treesize);
evas_object_size_hint_min_set(it->spacer,
++<<<<<<< HEAD
+ (it->expanded_depth * tsize) * _elm_config->scale, 1);
++=======
+ (it->item->expanded_depth * tsize) * _elm_config->scale, 1);
++>>>>>>> remotes/origin/upstream
edje_object_part_swallow(VIEW(it), "elm.swallow.pad", it->spacer);
if (!calc)
{
evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_MULTI_MOVE,
_multi_move, it);
++<<<<<<< HEAD
+ if ((!it->edit_obj) &&(it->wd->edit_mode) &&
+ (it->flags != ELM_GENLIST_ITEM_GROUP) && (it->itc->edit_item_style))
+ _effect_item_realize(it, EINA_FALSE);
++=======
+ if ((it->wd->decorate_mode) && (!it->edit_obj) &&
+ (it->item->type != ELM_GENLIST_ITEM_GROUP) && (it->itc->edit_item_style))
+ _decorate_mode_item_realize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
_elm_genlist_item_state_update(it, itc);
_elm_genlist_item_index_update(it);
((it->wd->item_width) && (it->wd->group_item_width))))
{
/* homogenous genlist shortcut */
++<<<<<<< HEAD
+ if (!it->mincalcd)
+ {
+ if (it->flags & ELM_GENLIST_ITEM_GROUP)
+ {
+ it->w = it->minw = it->wd->group_item_width;
+ it->h = it->minh = it->wd->group_item_height;
+ }
+ else
+ {
+ it->w = it->minw = it->wd->item_width;
+ it->h = it->minh = it->wd->item_height;
+ }
+ it->mincalcd = EINA_TRUE;
++=======
+ if (!it->item->mincalcd)
+ {
+ if (it->group)
+ {
+ it->item->w = it->item->minw = it->wd->group_item_width;
+ it->item->h = it->item->minh = it->wd->group_item_height;
+ }
+ else
+ {
+ it->item->w = it->item->minw = it->wd->item_width;
+ it->item->h = it->item->minh = it->wd->item_height;
+ }
+ it->item->mincalcd = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
}
else
{
++<<<<<<< HEAD
+ _item_text_realize(it, VIEW(it), &it->texts, NULL);
+ it->content_objs = _item_content_realize(it, VIEW(it), &it->contents, NULL);
+ _item_state_realize(it, VIEW(it), &it->states, NULL);
+ if (it->itc->func.content_get) // for rename mode
+ {
+ const Eina_List *l;
+ const char *key;
+ if (it->renamed)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,rename,enabled", "elm");
+ it->contents =
+ elm_widget_stringlist_get(edje_object_data_get(VIEW(it), "renames"));
+ EINA_LIST_FOREACH(it->contents, l, key)
+ {
+ Evas_Object *ic = it->itc->func.content_get
+ ((void *)it->base.data, WIDGET(it), l->data);
+ if (ic)
+ {
+ it->content_objs = eina_list_append(it->content_objs, ic);
+ edje_object_part_swallow(VIEW(it), key, ic);
+ evas_object_show(ic);
+ elm_widget_sub_object_add(WIDGET(it), ic);
+ // FIXME: if entry calcuates its cursor position correctly and conformant works,
+ // genlist does not need to handle this focus thing.
+ evas_object_smart_callback_add(ic, "focused", _content_focused, it);
+ evas_object_smart_callback_add(ic, "unfocused", _content_unfocused, it);
+ }
+ }
+ }
+ }
+ if (!it->mincalcd || it->wd->pan_resize || ((it->wd->height_for_width) && (it->w != it->minw)))
+ {
+ Evas_Coord mw = -1, mh = -1;
+
+ if (it->wd->height_for_width) mw = it->wd->w; // TODO: Removed this. This was removed from upstream.
+
+ if (!it->display_only)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ if (it->wd->height_for_width) mw = it->wd->prev_viewport_w;
+ edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw,
+ mh);
+ if (!it->display_only)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ it->w = it->minw = mw;
+ it->h = it->minh = mh;
+ it->mincalcd = EINA_TRUE;
+
+ if ((!it->wd->group_item_width) && (it->flags == ELM_GENLIST_ITEM_GROUP))
++=======
+ /* FIXME: If you see that assert, please notify us and we
+ will clean our mess */
+ assert(eina_list_count(it->content_objs) == 0);
+
+ _item_text_realize(it, VIEW(it), &it->texts, NULL);
+ it->content_objs = _item_content_realize(it, VIEW(it), &it->contents, NULL);
+ _item_state_realize(it, VIEW(it), &it->states, NULL);
+ if (it->flipped)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,flip,enabled", "elm");
+ it->content_objs = _item_flips_realize(it, VIEW(it), &it->contents);
+ }
+
+ if (!it->item->mincalcd)
+ {
+ Evas_Coord mw = -1, mh = -1;
+
+ if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ if (it->wd->mode == ELM_LIST_COMPRESS) mw = it->wd->prev_viewport_w;
+ edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw,
+ mh);
+ if (it->select_mode != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ it->item->w = it->item->minw = mw;
+ it->item->h = it->item->minh = mh;
+ it->item->mincalcd = EINA_TRUE;
+
+ if ((!it->wd->group_item_width) && (it->group))
++>>>>>>> remotes/origin/upstream
{
it->wd->group_item_width = mw;
it->wd->group_item_height = mh;
}
++<<<<<<< HEAD
+ else if ((!it->wd->item_width) && (it->flags == ELM_GENLIST_ITEM_NONE))
++=======
+ else if ((!it->wd->item_width) && (it->item->type == ELM_GENLIST_ITEM_NONE))
++>>>>>>> remotes/origin/upstream
{
it->wd->item_width = mw;
it->wd->item_height = mh;
it->tooltip.content_cb,
it->tooltip.data, NULL);
elm_widget_item_tooltip_style_set(it, it->tooltip.style);
++<<<<<<< HEAD
+ //elm_widget_item_tooltip_window_mode_set(it, it->tooltip.free_size); //upstream
++=======
+ elm_widget_item_tooltip_window_mode_set(it, it->tooltip.free_size);
++>>>>>>> remotes/origin/upstream
}
if (it->mouse_cursor)
it->want_unrealize = EINA_FALSE;
if (itc) _item_cache_free(itc);
++<<<<<<< HEAD
+ evas_event_thaw(evas_object_evas_get(it->wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
+ if (!calc)
+ evas_object_smart_callback_call(WIDGET(it), SIG_REALIZED, it);
+ if ((!calc) && (it->wd->edit_mode) && (it->flags != ELM_GENLIST_ITEM_GROUP))
+ {
+ if (it->itc->edit_item_style)
+ {
+ if (!it->edit_obj) _effect_item_realize(it, EINA_FALSE);
++=======
+ //evas_event_thaw(evas_object_evas_get(it->wd->obj));
+ //evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
+ if (!calc)
+ evas_object_smart_callback_call(WIDGET(it), SIG_REALIZED, it);
+
+ if ((!calc) && (it->wd->decorate_mode) && (it->item->type != ELM_GENLIST_ITEM_GROUP))
+ {
+ if (it->itc->edit_item_style)
+ {
+ if (!it->edit_obj) _decorate_mode_item_realize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
edje_object_message_signal_process(it->edit_obj);
}
}
}
static void
++<<<<<<< HEAD
+_item_unrealize(Elm_Genlist_Item *it,
+ Eina_Bool calc)
+{
+ Evas_Object *content;
+
+ if (!it->realized) return;
+ if (it->wd->reorder_it == it) return;
+ if (it->defer_unrealize && !it->updateme) return;
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ if (!calc)
+ evas_object_smart_callback_call(WIDGET(it), SIG_UNREALIZED, it);
+ if (it->long_timer)
+ {
+ ecore_timer_del(it->long_timer);
+ it->long_timer = NULL;
+ }
+ if (it->nocache)
++=======
+ _item_unrealize_cb(Elm_Gen_Item *it)
+ {
+ if (it->item->nocache_once || it->item->nocache)
++>>>>>>> remotes/origin/upstream
{
evas_object_del(VIEW(it));
VIEW(it) = NULL;
* _elm_config->scale);
_item_cache_add(it);
}
++<<<<<<< HEAD
+ elm_widget_stringlist_free(it->texts);
+ it->texts = NULL;
+ elm_widget_stringlist_free(it->contents);
+ it->contents = NULL;
+ elm_widget_stringlist_free(it->states);
+
+ EINA_LIST_FREE(it->content_objs, content)
+ evas_object_del(content);
++=======
++>>>>>>> remotes/origin/upstream
_mode_item_unrealize(it);
it->states = NULL;
it->realized = EINA_FALSE;
it->want_unrealize = EINA_FALSE;
++<<<<<<< HEAD
+ evas_event_thaw(evas_object_evas_get(it->wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
+ if (it->wd->edit_mode) _effect_item_unrealize(it);
++=======
+ if (it->wd->decorate_mode) _decorate_mode_item_unrealize(it);
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
Eina_Bool qadd)
{
const Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
Evas_Coord minw = 0, minh = 0;
Eina_Bool showme = EINA_FALSE, changed = EINA_FALSE;
Evas_Coord y = 0;
++<<<<<<< HEAD
+ evas_event_freeze(evas_object_evas_get(itb->wd->obj));
++=======
+ //evas_event_freeze(evas_object_evas_get(itb->wd->obj));
++>>>>>>> remotes/origin/upstream
itb->num = in;
EINA_LIST_FOREACH(itb->items, l, it)
{
if (it->generation < it->wd->generation) continue;
++<<<<<<< HEAD
+ showme |= it->showme;
++=======
+ showme |= it->item->showme;
++>>>>>>> remotes/origin/upstream
if (!itb->realized)
{
if (qadd)
{
++<<<<<<< HEAD
+ if (!it->mincalcd) changed = EINA_TRUE;
+ if (changed)
+ {
+ _item_realize(it, in, EINA_TRUE);
+ _item_unrealize(it, EINA_TRUE);
++=======
+ if (!it->item->mincalcd) changed = EINA_TRUE;
+ if (changed)
+ {
+ _item_realize(it, in, EINA_TRUE);
+ _elm_genlist_item_unrealize(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
}
else
{
_item_realize(it, in, EINA_TRUE);
++<<<<<<< HEAD
+ _item_unrealize(it, EINA_TRUE);
++=======
+ _elm_genlist_item_unrealize(it, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
}
else
_item_realize(it, in, EINA_FALSE);
++<<<<<<< HEAD
+ minh += it->minh;
+ if (minw < it->minw) minw = it->minw;
+ in++;
+ it->x = 0;
+ it->y = y;
+ y += it->h;
++=======
+ minh += it->item->minh;
+ if (minw < it->item->minw) minw = it->item->minw;
+ in++;
+ it->x = 0;
+ it->y = y;
+ y += it->item->h;
++>>>>>>> remotes/origin/upstream
}
itb->minw = minw;
itb->minh = minh;
itb->changed = EINA_FALSE;
itb->position_update = EINA_FALSE;
++<<<<<<< HEAD
+ evas_event_thaw(evas_object_evas_get(itb->wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj));
++=======
+ //evas_event_thaw(evas_object_evas_get(itb->wd->obj));
+ //evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj));
++>>>>>>> remotes/origin/upstream
return showme;
}
_item_block_unrealize(Item_Block *itb)
{
const Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
Eina_Bool dragging = EINA_FALSE;
if (!itb->realized) return;
evas_event_freeze(evas_object_evas_get(itb->wd->obj));
EINA_LIST_FOREACH(itb->items, l, it)
{
++<<<<<<< HEAD
+ if (itb->must_recalc || it->flags != ELM_GENLIST_ITEM_GROUP)
++=======
+ if (itb->must_recalc || !it->group)
++>>>>>>> remotes/origin/upstream
{
if (it->dragging)
{
it->want_unrealize = EINA_TRUE;
}
else
++<<<<<<< HEAD
+ _item_unrealize(it, EINA_FALSE);
++=======
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
}
}
if (!dragging)
}
static int
++<<<<<<< HEAD
+_get_space_for_reorder_item(Elm_Genlist_Item *it)
+{
+ Evas_Coord rox, roy, row, roh, oy, oh;
+ Eina_Bool top = EINA_FALSE;
+ Elm_Genlist_Item *reorder_it = it->wd->reorder_it;
++=======
+ _get_space_for_reorder_item(Elm_Gen_Item *it)
+ {
+ Evas_Coord rox, roy, row, roh, oy, oh;
+ Eina_Bool top = EINA_FALSE;
+ Elm_Gen_Item *reorder_it = it->wd->reorder_it;
++>>>>>>> remotes/origin/upstream
if (!reorder_it) return 0;
evas_object_geometry_get(it->wd->pan_smart, NULL, &oy, NULL, &oh);
evas_object_geometry_get(it->wd->VIEW(reorder_it), &rox, &roy, &row, &roh);
++<<<<<<< HEAD
+ if ((it->wd->reorder_start_y < it->block->y) &&
+ (roy - oy + (roh / 2) >= it->block->y - it->wd->pan_y))
+ {
+ it->block->reorder_offset = it->wd->reorder_it->h * -1;
+ if (it->block->count == 1)
+ it->wd->reorder_rel = it;
+ }
+ else if ((it->wd->reorder_start_y >= it->block->y) &&
+ (roy - oy + (roh / 2) <= it->block->y - it->wd->pan_y))
+ {
+ it->block->reorder_offset = it->wd->reorder_it->h;
+ }
+ else
+ it->block->reorder_offset = 0;
+
+ it->scrl_y += it->block->reorder_offset;
+
+ top = (ELM_RECTS_INTERSECT(it->scrl_x, it->scrl_y, it->w, it->h,
++=======
+ if ((it->wd->reorder_start_y < it->item->block->y) &&
+ (roy - oy + (roh / 2) >= it->item->block->y - it->wd->pan_y))
+ {
+ it->item->block->reorder_offset = it->wd->reorder_it->item->h * -1;
+ if (it->item->block->count == 1)
+ it->wd->reorder_rel = it;
+ }
+ else if ((it->wd->reorder_start_y >= it->item->block->y) &&
+ (roy - oy + (roh / 2) <= it->item->block->y - it->wd->pan_y))
+ {
+ it->item->block->reorder_offset = it->wd->reorder_it->item->h;
+ }
+ else
+ it->item->block->reorder_offset = 0;
+
+ it->item->scrl_y += it->item->block->reorder_offset;
+
+ top = (ELM_RECTS_INTERSECT(it->item->scrl_x, it->item->scrl_y, it->item->w, it->item->h,
++>>>>>>> remotes/origin/upstream
rox, roy + (roh / 2), row, 1));
if (top)
{
it->wd->reorder_rel = it;
++<<<<<<< HEAD
+ it->scrl_y += it->wd->reorder_it->h;
+ return it->wd->reorder_it->h;
++=======
+ it->item->scrl_y += it->wd->reorder_it->item->h;
+ return it->wd->reorder_it->item->h;
++>>>>>>> remotes/origin/upstream
}
else
return 0;
static Eina_Bool
_reorder_move_animator_cb(void *data)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = data;
+ Eina_Bool down = EINA_FALSE;
+ double t;
+ int y, dy = it->h / 10 * _elm_config->scale, diff;
++=======
+ Elm_Gen_Item *it = data;
+ Eina_Bool down = EINA_FALSE;
+ double t;
+ int y, dy = it->item->h / 10 * _elm_config->scale, diff;
++>>>>>>> remotes/origin/upstream
t = ((0.0 > (t = ecore_loop_time_get()-it->wd->start_time)) ? 0.0 : t);
if (t <= REORDER_EFFECT_TIME) y = (1 * sin((t / REORDER_EFFECT_TIME) * (M_PI / 2)) * dy);
else y = dy;
- down = EINA_FALSE;
- }
++<<<<<<< HEAD
+ diff = abs(it->old_scrl_y - it->scrl_y);
+ if (diff > it->h) y = diff / 2;
+ if (it->old_scrl_y < it->scrl_y)
+ {
+ it->old_scrl_y += y;
+ down = EINA_TRUE;
+ }
+ else if (it->old_scrl_y > it->scrl_y)
+ {
+ it->old_scrl_y -= y;
++=======
+ diff = abs(it->item->old_scrl_y - it->item->scrl_y);
+ if (diff > it->item->h) y = diff / 2;
- if (it->edit_obj)
- _item_position(it, it->edit_obj, it->scrl_x, it->old_scrl_y);
+ if (it->item->old_scrl_y < it->item->scrl_y)
+ {
+ it->item->old_scrl_y += y;
+ down = EINA_TRUE;
+ }
+ else if (it->item->old_scrl_y > it->item->scrl_y)
+ {
+ it->item->old_scrl_y -= y;
++>>>>>>> remotes/origin/upstream
+ down = EINA_FALSE;
+ }
+
+ if (it->edit_obj)
++<<<<<<< HEAD
++ _item_position(it, it->edit_obj, it->scrl_x, it->old_scrl_y);
+ else
+ _item_position(it, VIEW(it), it->scrl_x, it->old_scrl_y);
+ if ((it->wd->reorder_pan_move) ||
+ (down && it->old_scrl_y >= it->scrl_y) ||
+ (!down && it->old_scrl_y <= it->scrl_y))
+ {
+ it->old_scrl_y = it->scrl_y;
+ it->move_effect_enabled = EINA_FALSE;
++=======
+ _item_position(it, it->edit_obj, it->item->scrl_x, it->item->old_scrl_y);
+ else
+ _item_position(it, VIEW(it), it->item->scrl_x, it->item->old_scrl_y);
+ _group_items_recalc(it->wd);
+
+ if ((it->wd->reorder_pan_move) ||
+ (down && it->item->old_scrl_y >= it->item->scrl_y) ||
+ (!down && it->item->old_scrl_y <= it->item->scrl_y))
+ {
+ it->item->old_scrl_y = it->item->scrl_y;
+ it->item->move_effect_enabled = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
it->wd->reorder_move_animator = NULL;
return ECORE_CALLBACK_CANCEL;
}
}
static void
++<<<<<<< HEAD
+_item_position(Elm_Genlist_Item *it,
++=======
+ _item_position(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
Evas_Object *view,
Evas_Coord it_x,
Evas_Coord it_y)
if (!view) return;
evas_event_freeze(evas_object_evas_get(it->wd->obj));
++<<<<<<< HEAD
+ evas_object_resize(view, it->w, it->h);
++=======
+ evas_object_resize(view, it->item->w, it->item->h);
++>>>>>>> remotes/origin/upstream
evas_object_move(view, it_x, it_y);
evas_object_show(view);
evas_event_thaw(evas_object_evas_get(it->wd->obj));
int in)
{
const Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+ Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+ Evas_Coord minh = 0;
+ int vis = 0;
++=======
+ Elm_Gen_Item *it;
+ Elm_Gen_Item *git;
+ Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+ Eina_Bool vis = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
evas_event_freeze(evas_object_evas_get(itb->wd->obj));
evas_object_geometry_get(itb->wd->pan_smart, &ox, &oy, &ow, &oh);
{
if (it->generation < it->wd->generation) continue;
else if (it->wd->reorder_it == it) continue;
++<<<<<<< HEAD
+
+ it->x = 0;
+ it->y = y;
+ it->w = itb->w;
+ it->scrl_x = itb->x + it->x - it->wd->pan_x + ox;
+ it->scrl_y = itb->y + it->y - it->wd->pan_y + oy;
+
+ vis = (ELM_RECTS_INTERSECT(it->scrl_x, it->scrl_y, it->w, it->h,
+ cvx, cvy, cvw, cvh));
+ if ((itb->realized) && (!it->realized))
+ {
+ if (vis) _item_realize(it, in, EINA_FALSE);
+ }
+ if (it->realized)
+ {
+ if (vis)
+ {
+ if (it->wd->reorder_mode)
+ y += _get_space_for_reorder_item(it);
+ if ((it->wd->reorder_it) && (it->old_scrl_y != it->scrl_y))
+ {
+ if (!it->move_effect_enabled)
+ {
+ it->move_effect_enabled = EINA_TRUE;
+ it->wd->reorder_move_animator =
+ ecore_animator_add(
+ _reorder_move_animator_cb, it);
+ }
+ }
+ if (!it->move_effect_enabled)
+ if (!it->wd->effect_mode || it->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_NONE || ((it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE) && it->parent == it->wd->expanded_item))
+ {
+ if (it->wd->edit_mode && it->itc->edit_item_style)
+ {
+ _item_position(it, it->edit_obj, it->scrl_x, it->scrl_y);
+ }
+ else
+ {
+ if((!it->wd->effect_mode || it->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_NONE) || ((it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_NONE) && (it->old_scrl_y == it->scrl_y)))
+ {
+ if (it->mode_view)
+ _item_position(it, it->mode_view, it->scrl_x,
+ it->scrl_y);
+ else
+ _item_position(it, VIEW(it), it->scrl_x,
+ it->scrl_y);
+ }
+ else
+ {
+ evas_object_resize(VIEW(it), it->w, it->h);
+ evas_object_move(VIEW(it), it->scrl_x, it->scrl_y);
+ evas_object_hide(VIEW(it));
+ }
+ }
+ }
+ }
+ else
+ {
+ if ((!it->dragging && (!it->wd->item_moving_effect_timer)) ||
+ (it->wd->expanded_item && (it->wd->expanded_item->block != itb)))
+ _item_unrealize(it, EINA_FALSE);
+ }
+ }
+ in++;
+ if (!it->wd->effect_mode || it->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_NONE || ((it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE) && it->parent == it->wd->expanded_item))
+ {
+ it->old_scrl_y = it->scrl_y;
+ }
+ y += it->h;
+ minh += it->minh;
+ }
+ if (!itb->wd->reorder_it) itb->minh = minh;
++=======
+ it->x = 0;
+ it->y = y;
+ it->item->w = itb->w;
+ it->item->scrl_x = itb->x + it->x - it->wd->pan_x + ox;
+ it->item->scrl_y = itb->y + it->y - it->wd->pan_y + oy;
+
+ vis = (ELM_RECTS_INTERSECT(it->item->scrl_x, it->item->scrl_y, it->item->w, it->item->h,
+ cvx, cvy, cvw, cvh));
+ if (!it->group)
+ {
+ if ((itb->realized) && (!it->realized))
+ {
+ if (vis) _item_realize(it, in, EINA_FALSE);
+ }
+ if (it->realized)
+ {
+ if (vis || it->dragging)
+ {
+ if (it->wd->reorder_mode)
+ y += _get_space_for_reorder_item(it);
+ git = it->item->group_item;
+ if (git)
+ {
+ if (git->item->scrl_y < oy)
+ git->item->scrl_y = oy;
+ if ((git->item->scrl_y + git->item->h) > (it->item->scrl_y + it->item->h))
+ git->item->scrl_y = (it->item->scrl_y + it->item->h) - git->item->h;
+ git->item->want_realize = EINA_TRUE;
+ }
+ if ((it->wd->reorder_it) && (it->item->old_scrl_y != it->item->scrl_y))
+ {
+ if (!it->item->move_effect_enabled)
+ {
+ it->item->move_effect_enabled = EINA_TRUE;
+ it->wd->reorder_move_animator =
+ ecore_animator_add(
+ _reorder_move_animator_cb, it);
+ }
+ }
+ if (!it->item->move_effect_enabled)
+ {
+ if ((it->wd->decorate_mode) && (it->itc->edit_item_style))
+ _decorate_mode_item_position(it, it->item->scrl_x,
+ it->item->scrl_y);
+ else
+ {
+ if (it->item->mode_view)
+ _item_position(it, it->item->mode_view,
+ it->item->scrl_x,
+ it->item->scrl_y);
+ else
+ _item_position(it, VIEW(it), it->item->scrl_x,
+ it->item->scrl_y);
+ }
+ it->item->old_scrl_y = it->item->scrl_y;
+ }
+ }
+ else
+ {
+ if (!it->wd->item_moving_effect_timer)
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
+ }
+ }
+ in++;
+ }
+ else
+ {
+ if (vis) it->item->want_realize = EINA_TRUE;
+ }
+ y += it->item->h;
+ }
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(itb->wd->obj));
evas_event_thaw_eval(evas_object_evas_get(itb->wd->obj));
}
static void
++<<<<<<< HEAD
+_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Elm_Genlist_Item *it = data;
+ if (!it) return;
+ it->mincalcd = EINA_FALSE;
+ it->block->changeme = EINA_TRUE;
+ if (it->wd->changed_job) ecore_job_del(it->wd->changed_job);
+ it->wd->changed_job = ecore_job_add(_changed_job, it->wd);
++=======
+ _group_items_recalc(void *data)
+ {
+ Widget_Data *wd = data;
+ Eina_List *l;
+ Elm_Gen_Item *git;
+
+ evas_event_freeze(evas_object_evas_get(wd->obj));
+ EINA_LIST_FOREACH(wd->group_items, l, git)
+ {
+ if (git->item->want_realize)
+ {
+ if (!git->realized)
+ _item_realize(git, 0, EINA_FALSE);
+ evas_object_resize(VIEW(git), wd->minw, git->item->h);
+ evas_object_move(VIEW(git), git->item->scrl_x, git->item->scrl_y);
+ evas_object_show(VIEW(git));
+ evas_object_raise(VIEW(git));
+ }
+ else if (!git->item->want_realize && git->realized)
+ {
+ if (!git->dragging)
+ _elm_genlist_item_unrealize(git, EINA_FALSE);
+ }
+ }
+ evas_event_thaw(evas_object_evas_get(wd->obj));
+ evas_event_thaw_eval(evas_object_evas_get(wd->obj));
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
static void
_scroll_item(Widget_Data *wd)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = NULL;
+ Evas_Coord ow, oh, dx = 0, dy = 0, dw = 0, dh = 0;
+ if (!wd->show_item) return;
+
+ evas_object_geometry_get(wd->pan_smart, NULL, NULL, &ow, &oh);
+ it = wd->show_item;
+ dx = it->x + it->block->x;
+ dy = it->y + it->block->y;
+ dw = it->block->w;
++=======
+ Elm_Gen_Item *it = NULL;
+ Evas_Coord gith = 0;
+ Evas_Coord ow, oh, dx = 0, dy = 0, dw = 0, dh = 0;
+
+ evas_object_geometry_get(wd->pan_smart, NULL, NULL, &ow, &oh);
+ it = wd->show_item;
+ dx = it->x + it->item->block->x;
+ dy = it->y + it->item->block->y;
+ dw = it->item->block->w;
++>>>>>>> remotes/origin/upstream
dh = oh;
switch (wd->scrollto_type)
{
case ELM_GENLIST_ITEM_SCROLLTO_TOP:
++<<<<<<< HEAD
+ break;
+ case ELM_GENLIST_ITEM_SCROLLTO_MIDDLE:
+ dy += (it->h / 2 - oh / 2);
++=======
+ if (it->item->group_item) gith = it->item->group_item->item->h;
+ dy -= gith;
+ break;
+ case ELM_GENLIST_ITEM_SCROLLTO_MIDDLE:
+ dy += (it->item->h / 2 - oh / 2);
++>>>>>>> remotes/origin/upstream
break;
case ELM_GENLIST_ITEM_SCROLLTO_IN:
default:
if ((wd->expanded_item) &&
++<<<<<<< HEAD
+ ((wd->show_item->y + wd->show_item->block->y + wd->show_item->h)
+ - (wd->expanded_item->y + wd->expanded_item->block->y) > oh))
+ {
+ it = wd->expanded_item;
+ dx = it->x + it->block->x;
+ dy = it->y + it->block->y;
+ dw = it->block->w;
+ }
+ else
+ {
+ dh = it->h;
++=======
+ ((wd->show_item->y + wd->show_item->item->block->y + wd->show_item->item->h)
+ - (wd->expanded_item->y + wd->expanded_item->item->block->y) > oh))
+ {
+ it = wd->expanded_item;
+ if (it->item->group_item) gith = it->item->group_item->item->h;
+ dx = it->x + it->item->block->x;
+ dy = it->y + it->item->block->y - gith;
+ dw = it->item->block->w;
+ }
+ else
+ {
+ if ((it->item->group_item) && (wd->pan_y > (it->y + it->item->block->y)))
+ gith = it->item->group_item->item->h;
+ dy -= gith;
+ dh = it->item->h;
++>>>>>>> remotes/origin/upstream
}
break;
}
else
elm_smart_scroller_child_region_show(wd->scr, dx, dy, dw, dh);
++<<<<<<< HEAD
+ it->showme = EINA_FALSE;
++=======
+ it->item->showme = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
wd->show_item = NULL;
wd->auto_scroll_enabled = EINA_FALSE;
wd->check_scroll = EINA_FALSE;
Evas_Coord minw = -1, minh = 0, y = 0, ow, dy = 0, vw;
Evas_Coord pan_w = 0, pan_h = 0;
int in = 0;
++<<<<<<< HEAD
+ double t0, t;
+ Eina_Bool minw_change = EINA_FALSE;
+ Eina_Bool did_must_recalc = EINA_FALSE;
+ if (!wd) return;
+ ELM_CHECK_WIDTYPE(wd->obj,widtype);
+
+ t0 = ecore_time_get();
++=======
+ Eina_Bool minw_change = EINA_FALSE;
+ Eina_Bool did_must_recalc = EINA_FALSE;
+ if (!wd) return;
+
++>>>>>>> remotes/origin/upstream
evas_object_geometry_get(wd->pan_smart, NULL, NULL, &ow, &wd->h);
elm_smart_scroller_child_viewport_size_get(wd->scr, &vw, NULL);
if (itb->must_recalc)
{
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+ EINA_LIST_FOREACH(itb->items, l, it)
+ if (it->mincalcd) it->mincalcd = EINA_FALSE;
++=======
+ Elm_Gen_Item *it;
+ EINA_LIST_FOREACH(itb->items, l, it)
+ if (it->item->mincalcd) it->item->mincalcd = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
itb->changed = EINA_TRUE;
if (itb->must_recalc) did_must_recalc = EINA_TRUE;
if (itb->realized) _item_block_unrealize(itb);
itb->h = itb->minh;
y += itb->h;
in += itb->count;
++<<<<<<< HEAD
+ if ((showme) && (wd->show_item) && (!wd->show_item->queued))
++=======
+ if ((showme) && (wd->show_item) && (!wd->show_item->item->queued))
++>>>>>>> remotes/origin/upstream
wd->check_scroll = EINA_TRUE;
}
if (minw_change)
{
wd->minw = minw;
wd->minh = minh;
++<<<<<<< HEAD
+ if (wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ _sizing_eval(wd->obj);
+#ifdef ANCHOR_ITEM
+ if ((wd->anchor_item) && (wd->anchor_item->block) && (!wd->auto_scroll_enabled))
+ {
+ Elm_Genlist_Item *it;
++=======
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ _sizing_eval(wd->obj);
+ if ((wd->anchor_item) && (wd->anchor_item->item->block) && (!wd->auto_scroll_enabled))
+ {
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
Evas_Coord it_y;
it = wd->anchor_item;
it_y = wd->anchor_y;
elm_smart_scroller_child_pos_set(wd->scr, wd->pan_x,
++<<<<<<< HEAD
+ it->block->y + it->y + it_y);
+ wd->anchor_item = it;
+ wd->anchor_y = it_y;
+ }
+#endif
+ }
+ t = ecore_time_get();
++=======
+ it->item->block->y + it->y + it_y);
+ wd->anchor_item = it;
+ wd->anchor_y = it_y;
+ }
+ }
++>>>>>>> remotes/origin/upstream
if (did_must_recalc)
{
if (!wd->must_recalc_idler)
dy = 0;
break;
}
++<<<<<<< HEAD
+
+ if (wd->show_item)
+ {
+ if ((pan_w > (wd->show_item->x + wd->show_item->block->x)) &&
+ (pan_h > (wd->show_item->y + wd->show_item->block->y + dy)))
+ {
+ _scroll_item(wd);
+ }
++=======
+ if ((pan_w > (wd->show_item->x + wd->show_item->item->block->x)) &&
+ (pan_h > (wd->show_item->y + wd->show_item->item->block->y + dy)))
+ {
+ _scroll_item(wd);
++>>>>>>> remotes/origin/upstream
}
}
wd->calc_job = NULL;
EINA_INLIST_FOREACH(wd->blocks, itb)
{
Evas_Coord itminw, itminh;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
if (!itb->updateme)
{
recalc = EINA_FALSE;
EINA_LIST_FOREACH(itb->items, l2, it)
{
++<<<<<<< HEAD
+ if (it->updateme)
+ {
+ itminw = it->minw;
+ itminh = it->minh;
+
+ if (it->realized)
+ {
+ _item_unrealize(it, EINA_FALSE);
++=======
+ if (it->item->updateme)
+ {
+ itminw = it->item->minw;
+ itminh = it->item->minh;
+
+ it->item->updateme = EINA_FALSE;
+ if (it->realized)
+ {
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
_item_realize(it, num, EINA_FALSE);
position = EINA_TRUE;
}
else
{
_item_realize(it, num, EINA_TRUE);
++<<<<<<< HEAD
+ _item_unrealize(it, EINA_TRUE);
+ }
+ if ((it->minw != itminw) || (it->minh != itminh))
+ recalc = EINA_TRUE;
+ it->updateme = EINA_FALSE;
++=======
+ _elm_genlist_item_unrealize(it, EINA_TRUE);
+ }
+ if ((it->item->minw != itminw) || (it->item->minh != itminh))
+ recalc = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
num++;
}
}
static void
-_pan_set(Evas_Object *obj,
- Evas_Coord x,
- Evas_Coord y)
++<<<<<<< HEAD
+_changed_job(void *data)
{
- Pan *sd = evas_object_smart_data_get(obj);
+ Widget_Data *wd = data; Eina_List *l2;
Item_Block *itb;
-
- if (!sd) return;
- // Evas_Coord ow, oh;
- // evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
- // ow = sd->wd->minw - ow;
- // if (ow < 0) ow = 0;
- // oh = sd->wd->minh - oh;
- // if (oh < 0) oh = 0;
- // if (x < 0) x = 0;
- // if (y < 0) y = 0;
- // if (x > ow) x = ow;
- // if (y > oh) y = oh;
- if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
- sd->wd->pan_x = x;
- sd->wd->pan_y = y;
-
- EINA_INLIST_FOREACH(sd->wd->blocks, itb)
+ int num, num0, position = 0;
+ Eina_Bool width_changed = EINA_FALSE, height_changed = EINA_FALSE;
+ if (!wd) return;
+ wd->changed_job = NULL;
+ num = 0;
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ Evas_Coord itminw, itminh;
+ Elm_Genlist_Item *it;
+
+ if (!itb->changeme)
+ {
+ num += itb->count;
+ if (position)
+ _item_block_position(itb, num);
+ continue;
+ }
+ num0 = num;
+ width_changed = height_changed = EINA_FALSE;
+ EINA_LIST_FOREACH(itb->items, l2, it)
+ {
+ if ((!it->mincalcd) && (it->realized))
+ {
+ Evas_Coord mw = -1, mh = -1;
+ itminw = it->minw;
+ itminh = it->minh;
+
+ if (it->wd->height_for_width) mw = it->wd->w;
+ if (!it->display_only)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ if (it->wd->height_for_width) mw = it->wd->prev_viewport_w;
+ edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh);
+ if (!it->display_only)
+ elm_coords_finger_size_adjust(1, &mw, 1, &mh);
+ if (mw > itb->w)
+ width_changed = EINA_TRUE;
+ else
+ mw = itb->w;
+ it->w = it->minw = mw;
+ it->h = it->minh = mh;
+ it->mincalcd = EINA_TRUE;
+
+ //if ((it->minw != itminw) || (it->minh != itminh))
+ //if ((it->minh != itminh))
+ // recalc = 1;
+ if ((it->minw != itminw))
+ width_changed = EINA_TRUE;
+ if ((it->minh != itminh))
+ height_changed = EINA_TRUE;
+
+ if ((!it->wd->group_item_width) && (it->flags == ELM_GENLIST_ITEM_GROUP))
+ {
+ it->wd->group_item_width = mw;
+ it->wd->group_item_height = mh;
+ }
+ else if ((!it->wd->item_width) && (it->flags == ELM_GENLIST_ITEM_NONE))
+ {
+ it->wd->item_width = mw;
+ it->wd->item_height = mh;
+ }
+ }
+ num++;
+ }
+ itb->changeme = EINA_FALSE;
+ // TODO: why this is separated.
+ if (height_changed)
+ {
+ position = 1;
+ itb->changed = EINA_TRUE;
+ _item_block_recalc(itb, num0, 0);
+ _item_block_position(itb, num0);
+ }
+ else if (width_changed)
+ {
+ _item_block_position(itb, num0);
+ }
+ }
+ if (position)
+ {
+ if (wd->calc_job) ecore_job_del(wd->calc_job);
+ wd->calc_job = ecore_job_add(_calc_job, wd);
+ }
+}
+
+static void
++=======
++>>>>>>> remotes/origin/upstream
+_pan_set(Evas_Object *obj,
+ Evas_Coord x,
+ Evas_Coord y)
+{
+ Pan *sd = evas_object_smart_data_get(obj);
++<<<<<<< HEAD
+#ifdef ANCHOR_ITEM
+ Item_Block *itb;
+#endif
++=======
++ Item_Block *itb;
++>>>>>>> remotes/origin/upstream
+
+ if (!sd) return;
+ // Evas_Coord ow, oh;
+ // evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
+ // ow = sd->wd->minw - ow;
+ // if (ow < 0) ow = 0;
+ // oh = sd->wd->minh - oh;
+ // if (oh < 0) oh = 0;
+ // if (x < 0) x = 0;
+ // if (y < 0) y = 0;
+ // if (x > ow) x = ow;
+ // if (y > oh) y = oh;
+ if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
+ sd->wd->pan_x = x;
+ sd->wd->pan_y = y;
+
++<<<<<<< HEAD
+#ifdef ANCHOR_ITEM
++=======
++>>>>>>> remotes/origin/upstream
+ EINA_INLIST_FOREACH(sd->wd->blocks, itb)
{
if ((itb->y + itb->h) > y)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
Eina_List *l2;
EINA_LIST_FOREACH(itb->items, l2, it)
}
}
done:
++<<<<<<< HEAD
+#endif
++=======
++>>>>>>> remotes/origin/upstream
if (!sd->wd->reorder_move_animator) evas_object_smart_changed(obj);
}
if (!sd) return;
evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
if ((ow == w) && (oh == h)) return;
++<<<<<<< HEAD
+ if ((sd->wd->height_for_width) && (ow != w))
+ {
+ sd->wd->pan_resize = EINA_TRUE;
++=======
+ if ((sd->wd->mode == ELM_LIST_COMPRESS) && (ow != w))
+ {
+ /* fix me later */
++>>>>>>> remotes/origin/upstream
if (sd->resize_job) ecore_job_del(sd->resize_job);
sd->resize_job = ecore_job_add(_pan_resize_job, sd);
}
evas_object_smart_changed(obj);
if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
sd->wd->calc_job = NULL;
++<<<<<<< HEAD
++=======
+ /* OLD
+ if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
+ sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
+ */
++>>>>>>> remotes/origin/upstream
}
static void
Item_Block *itb;
Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
int in = 0;
++<<<<<<< HEAD
+ Elm_Genlist_Item *git;
++=======
+ Elm_Gen_Item *git;
++>>>>>>> remotes/origin/upstream
Eina_List *l;
if (!sd) return;
}
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
++<<<<<<< HEAD
+ sd->wd->prev_viewport_w = ow;
+ evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
++=======
+ evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
+ EINA_LIST_FOREACH(sd->wd->group_items, l, git)
+ {
+ git->item->want_realize = EINA_FALSE;
+ }
++>>>>>>> remotes/origin/upstream
EINA_INLIST_FOREACH(sd->wd->blocks, itb)
{
itb->w = sd->wd->minw;
cvx, cvy, cvw, cvh))
{
if ((!itb->realized) || (itb->changed))
++<<<<<<< HEAD
+ {
+ _item_block_realize(itb);
+
+ if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
+ sd->wd->calc_job = NULL;
+ _calc_job(sd->wd);
+ }
++=======
+ _item_block_realize(itb);
++>>>>>>> remotes/origin/upstream
_item_block_position(itb, in);
}
else
}
in += itb->count;
}
++<<<<<<< HEAD
+
+ if ((sd->wd->reorder_mode) && (sd->wd->reorder_it))
+ {
+ if (sd->wd->pan_y != sd->wd->reorder_old_pan_y)
+ sd->wd->reorder_pan_move = EINA_TRUE;
+ else sd->wd->reorder_pan_move = EINA_FALSE;
+ evas_object_raise(sd->wd->reorder_it->edit_obj);
++=======
+ if ((!sd->wd->reorder_it) || (sd->wd->reorder_pan_move))
+ _group_items_recalc(sd->wd);
+ if ((sd->wd->reorder_mode) && (sd->wd->reorder_it))
+ {
+ if (sd->wd->pan_y != sd->wd->reorder_old_pan_y)
+ sd->wd->reorder_pan_move = EINA_TRUE;
+ else sd->wd->reorder_pan_move = EINA_FALSE;
+ evas_object_raise(sd->wd->VIEW(reorder_it));
++>>>>>>> remotes/origin/upstream
sd->wd->reorder_old_pan_y = sd->wd->pan_y;
sd->wd->start_time = ecore_loop_time_get();
}
++<<<<<<< HEAD
+ if (sd->wd->effect_mode &&
+ ((sd->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND) ||
+ (sd->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT) ||
+ (sd->wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)))
+ {
+ if (!sd->wd->item_moving_effect_timer)
+ {
+ if (sd->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)
+ _item_flip_effect_show(sd->wd->expanded_item);
+
+ evas_object_raise(sd->wd->alpha_bg);
+ evas_object_show(sd->wd->alpha_bg);
+ elm_smart_scroller_bounce_animator_disabled_set(sd->wd->scr, EINA_TRUE);
+ sd->wd->start_time = current_time_get();
+ sd->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, sd->wd);
+ }
+ }
+ else _item_auto_scroll(sd->wd);
+ sd->wd->pan_resize = EINA_FALSE;
++=======
+ if (sd->wd->tree_effect_enabled && (sd->wd->move_effect_mode != ELM_GENLIST_TREE_EFFECT_NONE))
+ {
+ if (!sd->wd->item_moving_effect_timer)
+ {
+ _item_tree_effect_before(sd->wd->expanded_item);
+ evas_object_raise(sd->wd->alpha_bg);
+ evas_object_show(sd->wd->alpha_bg);
+ sd->wd->start_time = ecore_time_get();
+ sd->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, sd->wd);
+ }
+ }
+ else
+ _item_auto_scroll(sd->wd);
+
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
static void
_edge_left(void *data,
++<<<<<<< HEAD
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++=======
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = data;
evas_object_smart_callback_call(obj, SIG_EDGE_LEFT, NULL);
static void
_edge_right(void *data,
++<<<<<<< HEAD
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++=======
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = data;
evas_object_smart_callback_call(obj, SIG_EDGE_RIGHT, NULL);
static void
_edge_top(void *data,
++<<<<<<< HEAD
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++=======
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = data;
evas_object_smart_callback_call(obj, SIG_EDGE_TOP, NULL);
static void
_edge_bottom(void *data,
++<<<<<<< HEAD
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++=======
+ Evas_Object *scr __UNUSED__,
+ void *event_info __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = data;
evas_object_smart_callback_call(obj, SIG_EDGE_BOTTOM, NULL);
}
static void
++<<<<<<< HEAD
+_mode_item_realize(Elm_Genlist_Item *it)
+{
+ char buf[1024];
+
+ if ((it->mode_view) || (it->generation < it->wd->generation)) return;
+
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ it->mode_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
+ edje_object_scale_set(it->mode_view,
+ elm_widget_scale_get(WIDGET(it)) *
+ _elm_config->scale);
+ evas_object_smart_member_add(it->mode_view, it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), it->mode_view);
+
+ strncpy(buf, "item", sizeof(buf));
+ if (it->wd->compress)
+ strncat(buf, "_compress", sizeof(buf) - strlen(buf));
+
+ if (it->order_num_in & 0x1) strncat(buf, "_odd", sizeof(buf) - strlen(buf));
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+ strncat(buf, it->itc->mode_item_style, sizeof(buf) - strlen(buf));
+
+ _elm_theme_object_set(WIDGET(it), it->mode_view, "genlist", buf,
+ elm_widget_style_get(WIDGET(it)));
+ edje_object_mirrored_set(it->mode_view,
+ elm_widget_mirrored_get(WIDGET(it)));
+
+ /* signal callback add */
+ evas_object_event_callback_add(it->mode_view, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down, it);
+ evas_object_event_callback_add(it->mode_view, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up, it);
+ evas_object_event_callback_add(it->mode_view, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move, it);
+
+ /* text_get, content_get, state_get */
+ _item_text_realize(it, it->mode_view, &it->mode_texts, NULL);
+ if (it->itc->func.content_get)
+ {
+ const Eina_List *l;
+ const char *key;
+
+ it->mode_contents =
+ elm_widget_stringlist_get(edje_object_data_get(it->mode_view,
+ "contents"));
+ EINA_LIST_FOREACH(it->mode_contents, l, key)
+ {
+ Evas_Object *ic = it->itc->func.content_get
+ ((void *)it->base.data, WIDGET(it), l->data);
+
+ if (ic)
+ {
+ it->mode_content_objs = eina_list_append(it->mode_content_objs, ic);
+ edje_object_part_swallow(it->mode_view, key, ic);
+ evas_object_show(ic);
+ elm_widget_sub_object_add(WIDGET(it), ic);
+ if (elm_widget_item_disabled_get(it))
+ elm_widget_disabled_set(ic, EINA_TRUE);
+ }
+ }
+ }
+ _item_state_realize(it, it->mode_view, &it->mode_states, NULL);
+ edje_object_part_swallow(it->mode_view,
+ edje_object_data_get(it->mode_view, "mode_part"),
++=======
+ _mode_item_realize(Elm_Gen_Item *it)
+ {
+ char buf[1024];
+
+ if ((it->item->mode_view) || (it->generation < it->wd->generation)) return;
+
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ it->item->mode_view = edje_object_add(evas_object_evas_get(WIDGET(it)));
+ edje_object_scale_set(it->item->mode_view,
+ elm_widget_scale_get(WIDGET(it)) *
+ _elm_config->scale);
+ evas_object_smart_member_add(it->item->mode_view, it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), it->item->mode_view);
+
+ strncpy(buf, "item", sizeof(buf));
+ if (it->wd->mode == ELM_LIST_COMPRESS)
+ strncat(buf, "_compress", sizeof(buf) - strlen(buf));
+
+ if (it->item->order_num_in & 0x1) strncat(buf, "_odd", sizeof(buf) - strlen(buf));
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+ strncat(buf, it->itc->mode_item_style, sizeof(buf) - strlen(buf));
+
+ _elm_theme_object_set(WIDGET(it), it->item->mode_view, "genlist", buf,
+ elm_widget_style_get(WIDGET(it)));
+ edje_object_mirrored_set(it->item->mode_view,
+ elm_widget_mirrored_get(WIDGET(it)));
+
+ /* signal callback add */
+ evas_object_event_callback_add(it->item->mode_view, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down, it);
+ evas_object_event_callback_add(it->item->mode_view, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up, it);
+ evas_object_event_callback_add(it->item->mode_view, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move, it);
+
+ /* text_get, content_get, state_get */
+ /* FIXME: If you see that assert, please notify us and we
+ will clean our mess */
+ assert(eina_list_count(it->item->mode_content_objs) == 0);
+
+ _item_text_realize(it, it->item->mode_view, &it->item->mode_texts, NULL);
+ it->item->mode_content_objs =
+ _item_content_realize(it, it->item->mode_view,
+ &it->item->mode_contents, NULL);
+ _item_state_realize(it, it->item->mode_view, &it->item->mode_states, NULL);
+
+ edje_object_part_swallow(it->item->mode_view,
+ edje_object_data_get(it->item->mode_view, "mode_part"),
++>>>>>>> remotes/origin/upstream
VIEW(it));
it->want_unrealize = EINA_FALSE;
}
static void
++<<<<<<< HEAD
+_mode_item_unrealize(Elm_Genlist_Item *it)
+{
+ Widget_Data *wd = it->wd;
+ Evas_Object *content;
+ if (!it->mode_view) return;
+
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ elm_widget_stringlist_free(it->mode_texts);
+ it->mode_texts = NULL;
+ elm_widget_stringlist_free(it->mode_contents);
+ it->mode_contents = NULL;
+ elm_widget_stringlist_free(it->mode_states);
+
+ EINA_LIST_FREE(it->mode_content_objs, content)
+ evas_object_del(content);
+
+ edje_object_part_unswallow(it->mode_view, VIEW(it));
+ evas_object_smart_member_add(VIEW(it), wd->pan_smart);
+ evas_object_del(it->mode_view);
+ it->mode_view = NULL;
++=======
+ _mode_item_unrealize(Elm_Gen_Item *it)
+ {
+ Widget_Data *wd = it->wd;
+ Evas_Object *content;
+ if (!it->item->mode_view) return;
+
+ evas_event_freeze(evas_object_evas_get(it->wd->obj));
+ elm_widget_stringlist_free(it->item->mode_texts);
+ it->item->mode_texts = NULL;
+ elm_widget_stringlist_free(it->item->mode_contents);
+ it->item->mode_contents = NULL;
+ elm_widget_stringlist_free(it->item->mode_states);
+
+ EINA_LIST_FREE(it->item->mode_content_objs, content)
+ evas_object_del(content);
+
+ edje_object_part_unswallow(it->item->mode_view, VIEW(it));
+ evas_object_smart_member_add(VIEW(it), wd->pan_smart);
+ evas_object_del(it->item->mode_view);
+ it->item->mode_view = NULL;
++>>>>>>> remotes/origin/upstream
if (wd->mode_item == it)
wd->mode_item = NULL;
}
static void
++<<<<<<< HEAD
+_item_mode_set(Elm_Genlist_Item *it)
++=======
+ _item_mode_set(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
if (!it) return;
Widget_Data *wd = it->wd;
char buf[1024];
wd->mode_item = it;
++<<<<<<< HEAD
+ it->nocache = EINA_TRUE;
++=======
+ it->item->nocache_once = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
if (wd->scr_hold_timer)
{
evas_event_freeze(evas_object_evas_get(it->wd->obj));
_mode_item_realize(it);
++<<<<<<< HEAD
+ if (it->group_item)
+ evas_object_raise(it->VIEW(group_item));
+ _item_position(it, it->mode_view, it->scrl_x, it->scrl_y);
++=======
+ if (it->item->group_item)
+ evas_object_raise(it->item->VIEW(group_item));
+ _item_position(it, it->item->mode_view, it->item->scrl_x, it->item->scrl_y);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(it->wd->obj));
evas_event_thaw_eval(evas_object_evas_get(it->wd->obj));
snprintf(buf, sizeof(buf), "elm,state,%s,active", wd->mode_type);
++<<<<<<< HEAD
+ edje_object_signal_emit(it->mode_view, buf, "elm");
++=======
+ edje_object_signal_emit(it->item->mode_view, buf, "elm");
++>>>>>>> remotes/origin/upstream
}
static void
if (!wd) return;
if (!wd->mode_item) return;
char buf[1024], buf2[1024];
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+
+ it = wd->mode_item;
+ it->nocache = EINA_TRUE;
++=======
+ Elm_Gen_Item *it;
+
+ it = wd->mode_item;
+ it->item->nocache_once = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
snprintf(buf, sizeof(buf), "elm,state,%s,passive", wd->mode_type);
snprintf(buf2, sizeof(buf2), "elm,state,%s,passive,finished", wd->mode_type);
++<<<<<<< HEAD
+ edje_object_signal_emit(it->mode_view, buf, "elm");
+ edje_object_signal_callback_add(it->mode_view, buf2, "elm", _mode_finished_signal_cb, it);
++=======
+ edje_object_signal_emit(it->item->mode_view, buf, "elm");
+ edje_object_signal_callback_add(it->item->mode_view, buf2, "elm", _mode_finished_signal_cb, it);
++>>>>>>> remotes/origin/upstream
wd->mode_item = NULL;
}
static void
++<<<<<<< HEAD
+_item_auto_scroll(Widget_Data *wd)
+{
+ if (!wd) return;
+ Elm_Genlist_Item *tmp_item = NULL;
+
+ if ((wd->expanded_item) && (wd->auto_scroll_enabled))
+ {
+ tmp_item = eina_list_data_get(eina_list_last(wd->expanded_item->items));
++=======
+ _decorate_mode_item_position(Elm_Gen_Item *it, int itx, int ity)
+ {
+ if ((!it) || (!it->wd->decorate_mode)) return;
+ evas_object_resize(it->edit_obj, it->item->w, it->item->h);
+ evas_object_move(it->edit_obj, itx, ity);
+ }
+
+ static void
+ _decorate_mode_item_realize(Elm_Gen_Item *it, Eina_Bool effect_on)
+ {
+ char buf[1024];
+ const char *stacking_even;
+ const char *stacking;
+
+ if ((!it) || (it->item->decorate_mode_item_realized) ||
+ (it->generation < it->wd->generation))
+ return;
+
+ it->edit_obj = edje_object_add(evas_object_evas_get(WIDGET(it)));
+ edje_object_scale_set(it->edit_obj, elm_widget_scale_get(WIDGET(it)) *
+ _elm_config->scale);
+ evas_object_smart_member_add(it->edit_obj, it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), it->edit_obj);
+
+ if (it->item->type & ELM_GENLIST_ITEM_TREE)
+ strncpy(buf, "tree", sizeof(buf));
+ else strncpy(buf, "item", sizeof(buf));
+ if (it->wd->mode == ELM_LIST_COMPRESS)
+ strncat(buf, "_compress", sizeof(buf) - strlen(buf));
+
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+ strncat(buf, it->itc->edit_item_style, sizeof(buf) - strlen(buf));
+
+ _elm_theme_object_set(WIDGET(it), it->edit_obj, "genlist", buf,
+ elm_widget_style_get(WIDGET(it)));
+
+ stacking_even = edje_object_data_get(VIEW(it), "stacking_even");
+ if (!stacking_even) stacking_even = "above";
+ it->item->stacking_even = !!strcmp("above", stacking_even);
+
+ stacking = edje_object_data_get(VIEW(it), "stacking");
+ if (!stacking) stacking = "yes";
+ it->item->nostacking = !!strcmp("yes", stacking);
+
+ edje_object_mirrored_set(it->edit_obj,
+ elm_widget_mirrored_get(WIDGET(it)));
+
+ _elm_genlist_item_odd_even_update(it);
+ _elm_genlist_item_state_update(it, NULL);
+
+ if (effect_on) edje_object_signal_emit(it->edit_obj, "elm,state,edit,enabled,effect", "elm");
+ else edje_object_signal_emit(it->edit_obj, "elm,state,edit,enabled", "elm");
+
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down, it);
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up, it);
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move, it);
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MULTI_DOWN,
+ _multi_down, it);
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MULTI_UP,
+ _multi_up, it);
+ evas_object_event_callback_add(it->edit_obj, EVAS_CALLBACK_MULTI_MOVE,
+ _multi_move, it);
+
+ _item_text_realize(it, it->edit_obj, &it->item->edit_texts, NULL);
+ if (it->flipped) edje_object_signal_emit(it->edit_obj, "elm,state,flip,enabled", "elm");
+ it->item->edit_content_objs =
+ _item_content_realize(it, it->edit_obj, &it->item->edit_contents, NULL);
+ _item_state_realize(it, it->edit_obj, &it->item->edit_states, NULL);
+ edje_object_part_swallow(it->edit_obj, "elm.swallow.edit.content", VIEW(it));
+
+ _decorate_mode_item_position(it, it->item->scrl_x, it->item->scrl_y);
+ evas_object_show(it->edit_obj);
+
+ it->item->decorate_mode_item_realized = EINA_TRUE;
+ it->want_unrealize = EINA_FALSE;
+ }
+
+ static void
+ _decorate_mode_item_unrealize(Elm_Gen_Item *it)
+ {
+ Evas_Object *icon;
+ if ((!it) || (!it->item->decorate_mode_item_realized)) return;
+
+ edje_object_part_unswallow(it->edit_obj, VIEW(it));
+ evas_object_smart_member_add(VIEW(it), it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), VIEW(it));
+ _elm_genlist_item_odd_even_update(it);
+ _elm_genlist_item_state_update(it, NULL);
+
+ evas_object_del(it->edit_obj);
+ it->edit_obj = NULL;
+ elm_widget_stringlist_free(it->item->edit_texts);
+ it->item->edit_texts = NULL;
+ elm_widget_stringlist_free(it->item->edit_contents);
+ it->item->edit_contents = NULL;
+ elm_widget_stringlist_free(it->item->edit_states);
+ it->item->edit_states = NULL;
+ EINA_LIST_FREE(it->item->edit_content_objs, icon)
+ evas_object_del(icon);
+ edje_object_message_signal_process(it->edit_obj);
+
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down, it);
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up, it);
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move, it);
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MULTI_DOWN,
+ _multi_down, it);
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MULTI_UP,
+ _multi_up, it);
+ evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MULTI_MOVE,
+ _multi_move, it);
+ it->item->decorate_mode_item_realized = EINA_FALSE;
+ }
+
+ static void
+ _item_auto_scroll(Widget_Data *wd)
+ {
+ if (!wd) return;
+ Elm_Gen_Item *tmp_item = NULL;
+
+ if ((wd->expanded_item) && (wd->auto_scroll_enabled))
+ {
+ tmp_item = eina_list_data_get(eina_list_last(wd->expanded_item->item->items));
++>>>>>>> remotes/origin/upstream
if (!tmp_item) return;
wd->show_item = tmp_item;
wd->bring_in = EINA_TRUE;
wd->scrollto_type = ELM_GENLIST_ITEM_SCROLLTO_IN;
++<<<<<<< HEAD
+ if ((wd->show_item->queued) || (!wd->show_item->mincalcd))
+ {
+ wd->show_item->showme = EINA_TRUE;
++=======
+ if ((wd->show_item->item->queued) || (!wd->show_item->item->mincalcd))
+ {
+ wd->show_item->item->showme = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
wd->auto_scroll_enabled = EINA_FALSE;
}
else
ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
ELM_SET_WIDTYPE(widtype, "genlist");
++<<<<<<< HEAD
++=======
+ ELM_GEN_SETUP(wd);
++>>>>>>> remotes/origin/upstream
elm_widget_type_set(obj, "genlist");
elm_widget_sub_object_add(parent, obj);
elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
wd->generation = 1;
wd->scr = elm_smart_scroller_add(e);
++<<<<<<< HEAD
+ evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down_scroller, obj);
+ evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up_scroller, obj);
+ evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_MOUSE_MOVE,
+ _mouse_move_scroller, obj);
++=======
++>>>>>>> remotes/origin/upstream
elm_smart_scroller_widget_set(wd->scr, obj);
elm_smart_scroller_object_theme_set(obj, wd->scr, "genlist", "base",
elm_widget_style_get(obj));
wd->max_items_per_block = MAX_ITEMS_PER_BLOCK;
wd->item_cache_max = wd->max_items_per_block * 2;
wd->longpress_timeout = _elm_config->longpress_timeout;
++<<<<<<< HEAD
+ wd->effect_mode = _elm_config->effect_enable;
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj);
evas_object_size_hint_min_set(obj, minw, minh);
evas_object_smart_callbacks_descriptions_set(obj, _signals);
++<<<<<<< HEAD
+
++=======
+
++>>>>>>> remotes/origin/upstream
_mirrored_set(obj, elm_widget_mirrored_get(obj));
_sizing_eval(obj);
return obj;
}
++<<<<<<< HEAD
+static Evas_Object *
+_item_content_get_hook(Elm_Genlist_Item *it, const char *part)
++=======
+ void
+ _item_select(Elm_Gen_Item *it)
+ {
+ if ((it->generation < it->wd->generation) || (it->mode_set) ||
+ (it->wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE))
+ return;
+ if (!it->selected)
+ {
+ it->selected = EINA_TRUE;
+ it->wd->selected = eina_list_append(it->wd->selected, it);
+ }
+ else if (it->wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) return;
+
+ evas_object_ref(WIDGET(it));
+ it->walking++;
+ it->wd->walking++;
+ if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
+ if (it->generation == it->wd->generation)
+ evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
+ it->walking--;
+ it->wd->walking--;
+ evas_object_unref(WIDGET(it));
+ if ((it->wd->clear_me) && (!it->wd->walking))
+ _elm_genlist_clear(WIDGET(it), EINA_TRUE);
+ else
+ {
+ if ((!it->walking) && (it->generation < it->wd->generation))
+ {
+ if (!it->relcount)
+ {
+ it->del_cb(it);
+ elm_widget_item_free(it);
+ }
+ }
+ else
+ it->wd->last_selected_item = (Elm_Object_Item *)it;
+ }
+ }
+
+ static Evas_Object *
+ _item_content_get_hook(Elm_Gen_Item *it, const char *part)
++>>>>>>> remotes/origin/upstream
{
return edje_object_part_swallow_get(VIEW(it), part);
}
static void
++<<<<<<< HEAD
+_item_content_set_hook(Elm_Genlist_Item *it, const char *part, Evas_Object *content)
++=======
+ _item_content_set_hook(Elm_Gen_Item *it, const char *part, Evas_Object *content)
++>>>>>>> remotes/origin/upstream
{
if (content && part)
{
}
static Evas_Object *
++<<<<<<< HEAD
+_item_content_unset_hook(Elm_Genlist_Item *it, const char *part)
++=======
+ _item_content_unset_hook(Elm_Gen_Item *it, const char *part)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj;
obj = edje_object_part_swallow_get(VIEW(it), part);
}
static const char *
++<<<<<<< HEAD
+_item_text_hook(Elm_Genlist_Item *it, const char *part)
++=======
+ _item_text_hook(Elm_Gen_Item *it, const char *part)
++>>>>>>> remotes/origin/upstream
{
if (!it->itc->func.text_get) return NULL;
return edje_object_part_text_get(VIEW(it), part);
static void
_item_disable_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Eina_List *l;
+ Evas_Object *obj;
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Eina_List *l;
+ Evas_Object *obj;
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return;
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((_it->relcount > 0) || (_it->walking > 0))
{
elm_genlist_item_subitems_clear(it);
if (_it->wd->show_item == _it) _it->wd->show_item = NULL;
_elm_genlist_item_del_notserious(_it);
++<<<<<<< HEAD
+ if (_it->block)
+ {
+ if (_it->realized) _item_unrealize(_it, EINA_FALSE);
+ _it->block->changed = EINA_TRUE;
++=======
+ if (_it->item->block)
+ {
+ if (_it->realized) _elm_genlist_item_unrealize(_it, EINA_FALSE);
+ _it->item->block->changed = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
if (_it->wd->calc_job) ecore_job_del(_it->wd->calc_job);
_it->wd->calc_job = ecore_job_add(_calc_job, _it->wd);
}
if (_it->parent)
{
++<<<<<<< HEAD
+ _it->parent->items =
+ eina_list_remove(_it->parent->items, it);
++=======
+ _it->parent->item->items =
+ eina_list_remove(_it->parent->item->items, it);
++>>>>>>> remotes/origin/upstream
_it->parent = NULL;
}
return EINA_FALSE;
return EINA_TRUE;
}
++<<<<<<< HEAD
+Elm_Genlist_Item *
+_elm_genlist_item_new(Widget_Data *wd,
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Genlist_Item *parent,
+ Evas_Smart_Cb func,
+ const void *func_data)
+{
+ Elm_Genlist_Item *it;
+
+ it = elm_widget_item_new(wd->obj, Elm_Genlist_Item);
++=======
+ Elm_Gen_Item *
+ _elm_genlist_item_new(Widget_Data *wd,
+ const Elm_Gen_Item_Class *itc,
+ const void *data,
+ Elm_Gen_Item *parent,
+ Evas_Smart_Cb func,
+ const void *func_data)
+ {
+ Elm_Gen_Item *it;
+
+ it = elm_widget_item_new(wd->obj, Elm_Gen_Item);
++>>>>>>> remotes/origin/upstream
if (!it) return NULL;
it->wd = wd;
it->generation = wd->generation;
it->itc = itc;
++<<<<<<< HEAD
++=======
+ elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)itc);
++>>>>>>> remotes/origin/upstream
it->base.data = data;
it->parent = parent;
it->func.func = func;
elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
- int depth = 0;
++<<<<<<< HEAD
+ elm_widget_item_disable_hook_set(it, _item_disable_hook);
+ elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
+ /* TEMPORARY */
+// it->sel_cb = (Ecore_Cb)_item_select;
+
+ elm_widget_item_text_get_hook_set(it, _item_text_hook);
+ return it;
+}
+
+static Elm_Genlist_Item *
+_item_new(Widget_Data *wd,
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Genlist_Item *parent,
+ Elm_Genlist_Item_Flags flags,
+ Evas_Smart_Cb func,
+ const void *func_data)
+{
+ Elm_Genlist_Item *it, *it2;
++=======
+ elm_widget_item_text_get_hook_set(it, _item_text_hook);
+ elm_widget_item_disable_hook_set(it, _item_disable_hook);
+ elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
+ /* TEMPORARY */
+ it->sel_cb = (Ecore_Cb)_item_select;
- it = _elm_genlist_item_new(wd, itc, data, parent, func, func_data);
+ return it;
+ }
+
+ static Elm_Gen_Item *
+ _item_new(Widget_Data *wd,
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Gen_Item *parent,
+ Elm_Genlist_Item_Type type,
+ Evas_Smart_Cb func,
+ const void *func_data)
+ {
+ Elm_Gen_Item *it, *it2;
++>>>>>>> remotes/origin/upstream
+ int depth = 0;
+
+ it = _elm_genlist_item_new(wd, itc, data, parent, func, func_data);
if (!it) return NULL;
++<<<<<<< HEAD
+ it->flags = flags;
+ it->mouse_cursor = NULL;
+ it->expanded_depth = 0;
+ it->can_focus = EINA_TRUE;
+ if (it->parent)
+ {
+ if (it->parent->flags & ELM_GENLIST_ITEM_GROUP)
+ it->group_item = parent;
+ else if (it->parent->group_item)
+ it->group_item = it->parent->group_item;
+ }
+ for (it2 = it, depth = 0; it2->parent; it2 = it2->parent)
+ {
+ if (it2->parent->flags != ELM_GENLIST_ITEM_GROUP) depth += 1;
+ }
+ it->expanded_depth = depth;
+ return it;
+}
+
+static void
+_item_block_add(Widget_Data *wd,
+ Elm_Genlist_Item *it)
+{
+ Item_Block *itb = NULL;
+
+ if (!it->rel)
+ {
+newblock:
+ if (it->rel)
+ {
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ if (!it->rel->block)
++=======
+ it->item = ELM_NEW(Elm_Gen_Item_Type);
+ it->item->type = type;
+ if (type & ELM_GENLIST_ITEM_GROUP) it->group++;
+ it->item->expanded_depth = 0;
+ ELM_GEN_ITEM_SETUP(it);
+ if (it->parent)
+ {
+ if (it->parent->group)
+ it->item->group_item = parent;
+ else if (it->parent->item->group_item)
+ it->item->group_item = it->parent->item->group_item;
+ }
+ for (it2 = it, depth = 0; it2->parent; it2 = it2->parent)
+ {
+ if (!it2->parent->group) depth += 1;
+ }
+ it->item->expanded_depth = depth;
+ wd->item_count++;
+ return it;
+ }
+
+ static Item_Block *
+ _item_block_new(Widget_Data *wd, Eina_Bool prepend)
+ {
+ Item_Block *itb;
+
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return NULL;
+ itb->wd = wd;
+ if (prepend)
+ {
+ wd->blocks = eina_inlist_prepend(wd->blocks, EINA_INLIST_GET(itb));
+ _item_block_position_update(wd->blocks, 0);
+ }
+ else
+ {
+ wd->blocks = eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
+ itb->position_update = EINA_TRUE;
+ if (wd->blocks != EINA_INLIST_GET(itb))
+ {
+ itb->position = ((Item_Block *) (EINA_INLIST_GET(itb)->prev))->position + 1;
+ }
+ else
+ {
+ itb->position = 0;
+ }
+ }
+ return itb;
+ }
+
+ static Eina_Bool
+ _item_block_add(Widget_Data *wd,
+ Elm_Gen_Item *it)
+ {
+ Item_Block *itb = NULL;
+
+ if (!it->item->rel)
+ {
+ newblock:
+ if (it->item->rel)
+ {
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return EINA_FALSE;
+ itb->wd = wd;
+ if (!it->item->rel->item->block)
++>>>>>>> remotes/origin/upstream
{
wd->blocks =
eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
{
Eina_List *tmp;
++<<<<<<< HEAD
+ tmp = eina_list_data_find_list(itb->items, it->rel);
+ if (it->before)
+ {
+ wd->blocks = eina_inlist_prepend_relative
+ (wd->blocks, EINA_INLIST_GET(itb),
+ EINA_INLIST_GET(it->rel->block));
++=======
+ tmp = eina_list_data_find_list(itb->items, it->item->rel);
+ if (it->item->before)
+ {
+ wd->blocks = eina_inlist_prepend_relative
+ (wd->blocks, EINA_INLIST_GET(itb),
+ EINA_INLIST_GET(it->item->rel->item->block));
++>>>>>>> remotes/origin/upstream
itb->items =
eina_list_prepend_relative_list(itb->items, it, tmp);
/* Update index from where we prepended */
++<<<<<<< HEAD
+ _item_position_update(eina_list_prev(tmp), it->rel->position);
+ _item_block_position_update(EINA_INLIST_GET(itb),
+ it->rel->block->position);
++=======
+ _item_position_update(eina_list_prev(tmp), it->item->rel->position);
+ _item_block_position_update(EINA_INLIST_GET(itb),
+ it->item->rel->item->block->position);
++>>>>>>> remotes/origin/upstream
}
else
{
wd->blocks = eina_inlist_append_relative
(wd->blocks, EINA_INLIST_GET(itb),
++<<<<<<< HEAD
+ EINA_INLIST_GET(it->rel->block));
++=======
+ EINA_INLIST_GET(it->item->rel->item->block));
++>>>>>>> remotes/origin/upstream
itb->items =
eina_list_append_relative_list(itb->items, it, tmp);
/* Update block index from where we appended */
++<<<<<<< HEAD
+ _item_position_update(eina_list_next(tmp), it->rel->position + 1);
+ _item_block_position_update(EINA_INLIST_GET(itb),
+ it->rel->block->position + 1);
++=======
+ _item_position_update(eina_list_next(tmp), it->item->rel->position + 1);
+ _item_block_position_update(EINA_INLIST_GET(itb),
+ it->item->rel->item->block->position + 1);
++>>>>>>> remotes/origin/upstream
}
}
}
else
{
++<<<<<<< HEAD
+ if (it->before)
++=======
+ if (it->item->before)
++>>>>>>> remotes/origin/upstream
{
if (wd->blocks)
{
itb = (Item_Block *)(wd->blocks);
if (itb->count >= wd->max_items_per_block)
{
++<<<<<<< HEAD
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks =
+ eina_inlist_prepend(wd->blocks,
+ EINA_INLIST_GET(itb));
+ _item_block_position_update(wd->blocks, 0);
++=======
+ itb = _item_block_new(wd, EINA_TRUE);
+ if (!itb) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
}
else
{
++<<<<<<< HEAD
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks =
+ eina_inlist_prepend(wd->blocks, EINA_INLIST_GET(itb));
+ _item_block_position_update(wd->blocks, 0);
++=======
+ itb = _item_block_new(wd, EINA_TRUE);
+ if (!itb) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
itb->items = eina_list_prepend(itb->items, it);
itb = (Item_Block *)(wd->blocks->last);
if (itb->count >= wd->max_items_per_block)
{
++<<<<<<< HEAD
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks =
+ eina_inlist_append(wd->blocks,
+ EINA_INLIST_GET(itb));
+ itb->position_update = EINA_TRUE;
+ if (wd->blocks != EINA_INLIST_GET(itb))
+ {
+ itb->position = ((Item_Block *) (EINA_INLIST_GET(itb)->prev))->position + 1;
+ }
+ else
+ {
+ itb->position = 0;
+ }
++=======
+ itb = _item_block_new(wd, EINA_FALSE);
+ if (!itb) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
}
else
{
++<<<<<<< HEAD
+ itb = calloc(1, sizeof(Item_Block));
+ if (!itb) return;
+ itb->wd = wd;
+ wd->blocks =
+ eina_inlist_append(wd->blocks, EINA_INLIST_GET(itb));
+ itb->position_update = EINA_TRUE;
+ if (wd->blocks != EINA_INLIST_GET(itb))
+ {
+ itb->position = ((Item_Block *) (EINA_INLIST_GET(itb)->prev))->position + 1;
+ }
+ else
+ {
+ itb->position = 0;
+ }
++=======
+ itb = _item_block_new(wd, EINA_FALSE);
+ if (!itb) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
itb->items = eina_list_append(itb->items, it);
it->position = eina_list_count(itb->items);
{
Eina_List *tmp;
++<<<<<<< HEAD
+ itb = it->rel->block;
+ tmp = eina_list_data_find_list(itb->items, it->rel);
+ if (!itb) goto newblock;
+ if (it->before)
+ {
+ itb->items = eina_list_prepend_relative_list(itb->items, it, tmp);
+ _item_position_update(eina_list_prev(tmp), it->rel->position);
++=======
+ if (it->item->rel->item->queued)
+ {
+ /* NOTE: for a strange reason eina_list and eina_inlist don't have the same property
+ on sorted insertion order, so the queue is not always ordered like the item list.
+ This lead to issue where we depend on an item that is not yet created. As a quick
+ work around, we reschedule the calc of the item and stop reordering the list to
+ prevent any nasty issue to show up here.
+ */
+ wd->queue = eina_list_append(wd->queue, it);
+ wd->requeued = EINA_TRUE;
+ it->item->queued = EINA_TRUE;
+ return EINA_FALSE;
+ }
+ itb = it->item->rel->item->block;
+ if (!itb) goto newblock;
+ tmp = eina_list_data_find_list(itb->items, it->item->rel);
+ if (it->item->before)
+ {
+ itb->items = eina_list_prepend_relative_list(itb->items, it, tmp);
+ _item_position_update(eina_list_prev(tmp), it->item->rel->position);
++>>>>>>> remotes/origin/upstream
}
else
{
itb->items = eina_list_append_relative_list(itb->items, it, tmp);
++<<<<<<< HEAD
+ _item_position_update(eina_list_next(tmp), it->rel->position + 1);
++=======
+ _item_position_update(eina_list_next(tmp), it->item->rel->position + 1);
++>>>>>>> remotes/origin/upstream
}
}
itb->count++;
itb->changed = EINA_TRUE;
++<<<<<<< HEAD
+ it->block = itb;
+ if (itb->wd->calc_job) ecore_job_del(itb->wd->calc_job);
+ itb->wd->calc_job = ecore_job_add(_calc_job, itb->wd);
+ if (it->rel)
+ {
+ it->rel->relcount--;
+ if ((it->rel->generation < it->wd->generation) && (!it->rel->relcount))
+ {
+ _item_del(it->rel);
+ elm_widget_item_free(it->rel);
+ }
+
+ it->rel = NULL;
+ }
+ if (itb->count > itb->wd->max_items_per_block)
+ {
+ int newc;
+ Item_Block *itb2;
+ Elm_Genlist_Item *it2;
+
+ newc = itb->count / 2;
+ itb2 = calloc(1, sizeof(Item_Block));
+ if (!itb2) return;
+ itb2->wd = wd;
+ wd->blocks =
+ eina_inlist_append_relative(wd->blocks, EINA_INLIST_GET(itb2),
+ EINA_INLIST_GET(itb));
+ itb2->changed = EINA_TRUE;
+ while ((itb->count > newc) && (itb->items))
+ {
+ Eina_List *l;
+
+ l = eina_list_last(itb->items);
+ it2 = l->data;
+ itb->items = eina_list_remove_list(itb->items, l);
+ itb->count--;
+
+ itb2->items = eina_list_prepend(itb2->items, it2);
+ it2->block = itb2;
+ itb2->count++;
+ }
+ }
++=======
+ it->item->block = itb;
+ if (itb->wd->calc_job) ecore_job_del(itb->wd->calc_job);
+ itb->wd->calc_job = ecore_job_add(_calc_job, itb->wd);
+ if (it->item->rel)
+ {
+ it->item->rel->relcount--;
+ if ((it->item->rel->generation < it->wd->generation) && (!it->item->rel->relcount))
+ {
+ _item_del(it->item->rel);
+ elm_widget_item_free(it->item->rel);
+ }
+ it->item->rel = NULL;
+ }
+ if (itb->count > itb->wd->max_items_per_block)
+ {
+ Item_Block *itb2;
+ Elm_Gen_Item *it2;
+ int newc;
+ Eina_Bool done = EINA_FALSE;
+
+ newc = itb->count / 2;
+
+ if (EINA_INLIST_GET(itb)->prev)
+ {
+ Item_Block *itbp = (Item_Block *)(EINA_INLIST_GET(itb)->prev);
+
+ if (itbp->count + newc < wd->max_items_per_block / 2)
+ {
+ /* moving items to previous block */
+ while ((itb->count > newc) && (itb->items))
+ {
+ it2 = eina_list_data_get(itb->items);
+ itb->items = eina_list_remove_list(itb->items, itb->items);
+ itb->count--;
+
+ itbp->items = eina_list_append(itbp->items, it2);
+ it2->item->block = itbp;
+ itbp->count++;
+ }
+
+ done = EINA_TRUE;
+ }
+ }
+
+ if (!done && EINA_INLIST_GET(itb)->next)
+ {
+ Item_Block *itbn = (Item_Block *)(EINA_INLIST_GET(itb)->next);
+
+ if (itbn->count + newc < wd->max_items_per_block / 2)
+ {
+ /* moving items to next block */
+ while ((itb->count > newc) && (itb->items))
+ {
+ Eina_List *l;
+
+ l = eina_list_last(itb->items);
+ it2 = eina_list_data_get(l);
+ itb->items = eina_list_remove_list(itb->items, l);
+ itb->count--;
+
+ itbn->items = eina_list_prepend(itbn->items, it2);
+ it2->item->block = itbn;
+ itbn->count++;
+ }
+
+ done = EINA_TRUE;
+ }
+ }
+
+ if (!done)
+ {
+ /* moving items to new block */
+ itb2 = calloc(1, sizeof(Item_Block));
+ if (!itb2) return EINA_FALSE;
+ itb2->wd = wd;
+ wd->blocks =
+ eina_inlist_append_relative(wd->blocks, EINA_INLIST_GET(itb2),
+ EINA_INLIST_GET(itb));
+ itb2->changed = EINA_TRUE;
+ while ((itb->count > newc) && (itb->items))
+ {
+ Eina_List *l;
+
+ l = eina_list_last(itb->items);
+ it2 = l->data;
+ itb->items = eina_list_remove_list(itb->items, l);
+ itb->count--;
+
+ itb2->items = eina_list_prepend(itb2->items, it2);
+ it2->item->block = itb2;
+ itb2->count++;
+ }
+ }
+ }
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
static int
//evas_event_freeze(evas_object_evas_get(wd->obj));
for (n = 0; (wd->queue) && (n < 128); n++)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+
+ it = eina_list_data_get(wd->queue);
+ wd->queue = eina_list_remove_list(wd->queue, wd->queue);
+ it->queued = EINA_FALSE;
+ _item_block_add(wd, it);
+ if (!wd->blocks)
+ _item_block_realize(it->block);
+ t = ecore_time_get();
+ if (it->block->changed)
+ {
+ showme = _item_block_recalc(it->block, it->block->num, EINA_TRUE);
+ it->block->changed = 0;
++=======
+ Elm_Gen_Item *it;
+
+ it = eina_list_data_get(wd->queue);
+ wd->queue = eina_list_remove_list(wd->queue, wd->queue);
+ it->item->queued = EINA_FALSE;
+ if (!_item_block_add(wd, it)) continue;
+ if (!wd->blocks)
+ _item_block_realize(it->item->block);
+ t = ecore_time_get();
+ if (it->item->block->changed)
+ {
+ showme = _item_block_recalc(it->item->block, it->item->block->num, EINA_TRUE);
+ it->item->block->changed = 0;
++>>>>>>> remotes/origin/upstream
if (wd->pan_changed)
{
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->pan_changed = EINA_FALSE;
}
}
++<<<<<<< HEAD
+ if (showme) it->block->showme = EINA_TRUE;
+ if (eina_inlist_count(wd->blocks) > 1)
++=======
+ if (showme) it->item->block->showme = EINA_TRUE;
+ /* same as eina_inlist_count > 1 */
+ if (wd->blocks && wd->blocks->next)
++>>>>>>> remotes/origin/upstream
{
if ((t - t0) > (ecore_animator_frametime_get())) break;
}
}
static void
++<<<<<<< HEAD
+_item_queue(Widget_Data *wd,
+ Elm_Genlist_Item *it)
+{
+ if (it->queued) return;
+ it->queued = EINA_TRUE;
+ wd->queue = eina_list_append(wd->queue, it);
++=======
+ _item_queue(Widget_Data *wd,
+ Elm_Gen_Item *it,
+ Eina_Compare_Cb cb)
+ {
+ if (it->item->queued) return;
+ it->item->queued = EINA_TRUE;
+ if (cb && !wd->requeued)
+ wd->queue = eina_list_sorted_insert(wd->queue, cb, it);
+ else
+ wd->queue = eina_list_append(wd->queue, it);
++>>>>>>> remotes/origin/upstream
// FIXME: why does a freeze then thaw here cause some genlist
// elm_genlist_item_append() to be much much slower?
// evas_event_freeze(evas_object_evas_get(wd->obj));
wd->queue_idle_enterer = ecore_idle_enterer_add(_item_idle_enterer, wd);
}
++<<<<<<< HEAD
+static void
+_item_move_after(Elm_Genlist_Item *it, Elm_Genlist_Item *after)
+{
+ if (!it) return;
+ if (!after) return;
+ Elm_Object_Item *_it = (Elm_Object_Item *) it;
+ Elm_Object_Item *_after = (Elm_Object_Item *) after;
+
+ it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ it->wd->reorder_deleted = EINA_TRUE;
+ _item_block_del(it);
+
+ it->wd->items = eina_inlist_append_relative(it->wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
+ it->rel = after;
+ it->rel->relcount++;
+ it->before = EINA_FALSE;
+ if (after->group_item) it->group_item = after->group_item;
+ _item_queue(it->wd, it);
+
+ // TODO: change this to smart callback
+ if (it->itc->func.moved)
+ it->itc->func.moved(WIDGET(it), _it, _after, EINA_TRUE);
+}
+
+static void
+_item_move_before(Elm_Genlist_Item *it, Elm_Genlist_Item *before)
+{
+ if (!it) return;
+ if (!before) return;
+ Elm_Object_Item *_it = (Elm_Object_Item *) it;
+ Elm_Object_Item *_before = (Elm_Object_Item *) before;
+
+ it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ it->wd->reorder_deleted = EINA_TRUE;
+ _item_block_del(it);
+ it->wd->items = eina_inlist_prepend_relative(it->wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
+ it->rel = before;
+ it->rel->relcount++;
+ it->before = EINA_TRUE;
+ if (before->group_item) it->group_item = before->group_item;
+ _item_queue(it->wd, it);
+
+ // TODO: change this to smart callback
+ if (it->itc->func.moved)
+ it->itc->func.moved(WIDGET(it), _it, _before, EINA_FALSE);
++=======
+ static int
+ _elm_genlist_item_compare(const void *data, const void *data1)
+ {
+ const Elm_Gen_Item *it, *item1;
+ it = ELM_GEN_ITEM_FROM_INLIST(data);
+ item1 = ELM_GEN_ITEM_FROM_INLIST(data1);
+ return it->wd->item_compare_cb(it, item1);
+ }
+
+ static int
+ _elm_genlist_item_list_compare(const void *data, const void *data1)
+ {
+ const Elm_Gen_Item *it = data;
+ const Elm_Gen_Item *item1 = data1;
+ return it->wd->item_compare_cb(it, item1);
+ }
+
+ static void
+ _item_move_after(Elm_Gen_Item *it, Elm_Gen_Item *after)
+ {
+ if (!it) return;
+ if (!after) return;
+
+ it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ _item_block_del(it);
+
+ it->wd->items = eina_inlist_append_relative(it->wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(after));
+ it->item->rel = after;
+ it->item->rel->relcount++;
+ it->item->before = EINA_FALSE;
+ if (after->item->group_item) it->item->group_item = after->item->group_item;
+ _item_queue(it->wd, it, NULL);
+
+ evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
+ }
+
+ static void
+ _item_move_before(Elm_Gen_Item *it, Elm_Gen_Item *before)
+ {
+ if (!it) return;
+ if (!before) return;
+
+ it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
+ _item_block_del(it);
+ it->wd->items = eina_inlist_prepend_relative(it->wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(before));
+ it->item->rel = before;
+ it->item->rel->relcount++;
+ it->item->before = EINA_TRUE;
+ if (before->item->group_item) it->item->group_item = before->item->group_item;
+ _item_queue(it->wd, it, NULL);
+
+ evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
+ }
+
+ EAPI unsigned int
+ elm_genlist_items_count(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+ return wd->item_count;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
const Elm_Genlist_Item_Class *itc,
const void *data,
Elm_Object_Item *parent,
++<<<<<<< HEAD
+ Elm_Genlist_Item_Flags flags,
++=======
+ Elm_Genlist_Item_Type type,
++>>>>>>> remotes/origin/upstream
Evas_Smart_Cb func,
const void *func_data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, (Elm_Genlist_Item *)parent,
+ flags, func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if (flags & ELM_GENLIST_ITEM_GROUP)
+ wd->group_items = eina_list_append(wd->group_items, it);
+ wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
+ it->rel = NULL;
+ }
+ else
+ {
+ Elm_Genlist_Item *it2 = NULL;
+ Eina_List *ll = eina_list_last(it->parent->items);
+ if (ll) it2 = ll->data;
+ it->parent->items = eina_list_append(it->parent->items, it);
+ if (!it2) it2 = it->parent;
+ if (it2->generation < it2->wd->generation)
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it2);
+ wd->items =
+ eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(it2));
+ it->rel = it2;
+ it->rel->relcount++;
+ }
+ it->before = EINA_FALSE;
+ _item_queue(wd, it);
+ return (Elm_Object_Item *) it;
++=======
+ Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
+ func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if (it->group)
+ wd->group_items = eina_list_append(wd->group_items, it);
+ wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
+ it->item->rel = NULL;
+ }
+ else
+ {
+ Elm_Gen_Item *it2 = NULL;
+ Eina_List *ll = eina_list_last(it->parent->item->items);
+ if (ll) it2 = ll->data;
+ it->parent->item->items = eina_list_append(it->parent->item->items, it);
+ if (!it2) it2 = it->parent;
+ wd->items =
+ eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(it2));
+ it->item->rel = it2;
+ it->item->rel->relcount++;
+ }
+ it->item->before = EINA_FALSE;
+ _item_queue(wd, it, NULL);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
const Elm_Genlist_Item_Class *itc,
const void *data,
Elm_Object_Item *parent,
++<<<<<<< HEAD
+ Elm_Genlist_Item_Flags flags,
++=======
+ Elm_Genlist_Item_Type type,
++>>>>>>> remotes/origin/upstream
Evas_Smart_Cb func,
const void *func_data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
- Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
- func, func_data);
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, (Elm_Genlist_Item *)parent,
+ flags, func, func_data);
+
if (!it) return NULL;
if (!it->parent)
{
}
else
{
- Elm_Gen_Item *it2 = NULL;
- Eina_List *ll = it->parent->item->items;
+ Elm_Genlist_Item *it2 = NULL;
+ Eina_List *ll = it->parent->items;
if (ll) it2 = ll->data;
- it->parent->item->items = eina_list_prepend(it->parent->item->items, it);
+ it->parent->items = eina_list_prepend(it->parent->items, it);
+ if (!it2) it2 = it->parent;
+ if (it2->generation < it2->wd->generation)
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ wd->items =
+ eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(it2));
+ it->rel = it2;
+ it->rel->relcount++;
+ }
+ it->before = EINA_TRUE;
+ _item_queue(wd, it);
+ return (Elm_Object_Item *) it;
++=======
++ Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
++ func, func_data);
++ if (!it) return NULL;
++ if (!it->parent)
++ {
++ if (it->group)
++ wd->group_items = eina_list_prepend(wd->group_items, it);
++ wd->items = eina_inlist_prepend(wd->items, EINA_INLIST_GET(it));
++ it->item->rel = NULL;
++ }
++ else
++ {
++ Elm_Gen_Item *it2 = NULL;
++ Eina_List *ll = it->parent->item->items;
++ if (ll) it2 = ll->data;
++ it->parent->item->items = eina_list_prepend(it->parent->item->items, it);
+ if (!it2) it2 = it->parent;
+ wd->items =
+ eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(it2));
+ it->item->rel = it2;
+ it->item->rel->relcount++;
+ }
+ it->item->before = EINA_TRUE;
+ _item_queue(wd, it, NULL);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
const void *data,
Elm_Object_Item *parent,
Elm_Object_Item *after,
++<<<<<<< HEAD
+ Elm_Genlist_Item_Flags flags,
++=======
+ Elm_Genlist_Item_Type type,
++>>>>>>> remotes/origin/upstream
Evas_Smart_Cb func,
const void *func_data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
ELM_OBJ_ITEM_CHECK_OR_RETURN(after, NULL);
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_after = (Elm_Genlist_Item *) after;
+ if (!wd) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->items, NULL);
+
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, (Elm_Genlist_Item *)parent,
+ flags, func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if ((flags & ELM_GENLIST_ITEM_GROUP) &&
+ (((Elm_Genlist_Item * )after)->flags & ELM_GENLIST_ITEM_GROUP))
+ wd->group_items = eina_list_append_relative(wd->group_items, it,
+ after);
+ }
+ else
+ {
+ it->parent->items = eina_list_append_relative(it->parent->items, it,
+ after);
+ }
+ wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(_after));
+ it->rel = _after;
+ it->rel->relcount++;
+ it->before = EINA_FALSE;
+ _item_queue(wd, it);
+ return (Elm_Object_Item *) it;
++=======
+ Elm_Gen_Item *_after = (Elm_Gen_Item *) after;
+ if (!wd) return NULL;
+ /* It makes no sense to insert after in an empty list with after != NULL, something really bad is happening in your app. */
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->items, NULL);
+
+ Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
+ func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if ((it->group) && (_after->group))
+ wd->group_items = eina_list_append_relative(wd->group_items, it,
+ _after);
+ }
+ else
+ {
+ it->parent->item->items =
+ eina_list_append_relative(it->parent->item->items, it, _after);
+ }
+ wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(_after));
+ it->item->rel = _after;
+ it->item->rel->relcount++;
+ it->item->before = EINA_FALSE;
+ _item_queue(wd, it, NULL);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
const void *data,
Elm_Object_Item *parent,
Elm_Object_Item *before,
++<<<<<<< HEAD
+ Elm_Genlist_Item_Flags flags,
++=======
+ Elm_Genlist_Item_Type type,
++>>>>>>> remotes/origin/upstream
Evas_Smart_Cb func,
const void *func_data)
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
ELM_OBJ_ITEM_CHECK_OR_RETURN(before, NULL);
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_before = (Elm_Genlist_Item *) before;
+ if (!wd) return NULL;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->items, NULL);
+
+ Elm_Genlist_Item *it = _item_new(wd, itc, data, (Elm_Genlist_Item *)parent,
+ flags, func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if ((flags & ELM_GENLIST_ITEM_GROUP) &&
+ (_before->flags & ELM_GENLIST_ITEM_GROUP))
++=======
+ Elm_Gen_Item *_before = (Elm_Gen_Item *) before;
+ if (!wd) return NULL;
+ /* It makes no sense to insert before in an empty list with before != NULL, something really bad is happening in your app. */
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->items, NULL);
+
+ Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
+ func, func_data);
+ if (!it) return NULL;
+ if (!it->parent)
+ {
+ if (it->group && _before->group)
++>>>>>>> remotes/origin/upstream
wd->group_items = eina_list_prepend_relative(wd->group_items, it,
_before);
}
else
{
++<<<<<<< HEAD
+ it->parent->items = eina_list_prepend_relative(it->parent->items, it,
+ _before);
+ }
+ wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(_before));
+ it->rel = _before;
+ it->rel->relcount++;
+ it->before = EINA_TRUE;
+ _item_queue(wd, it);
+ return (Elm_Object_Item *) it;
++=======
+ it->parent->item->items =
+ eina_list_prepend_relative(it->parent->item->items, it, _before);
+ }
+ wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it),
+ EINA_INLIST_GET(_before));
+ it->item->rel = _before;
+ it->item->rel->relcount++;
+ it->item->before = EINA_TRUE;
+ _item_queue(wd, it, NULL);
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_genlist_item_sorted_insert(Evas_Object *obj,
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Object_Item *parent,
+ Elm_Genlist_Item_Type type,
+ Eina_Compare_Cb comp,
+ Evas_Smart_Cb func,
+ const void *func_data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ Elm_Gen_Item *rel = NULL;
+ Elm_Gen_Item *it = _item_new(wd, itc, data, (Elm_Gen_Item *) parent, type,
+ func, func_data);
+ if (!it) return NULL;
+
+ wd->item_compare_cb = comp;
+
+ if (it->parent)
+ {
+ Eina_List *l;
+ int cmp_result;
+
+ l = eina_list_search_sorted_near_list(it->parent->item->items,
+ _elm_genlist_item_list_compare,
+ it,
+ &cmp_result);
+ if (l)
+ rel = eina_list_data_get(l);
+ else
+ rel = it->parent;
+
+ if (cmp_result >= 0)
+ {
+ it->parent->item->items = eina_list_prepend_relative_list(it->parent->item->items, it, l);
+ wd->items = eina_inlist_prepend_relative(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(rel));
+ it->item->before = EINA_FALSE;
+ }
+ else if (cmp_result < 0)
+ {
+ it->parent->item->items = eina_list_append_relative_list(it->parent->item->items, it, l);
+ wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), EINA_INLIST_GET(rel));
+ it->item->before = EINA_TRUE;
+ }
+ }
+ else
+ {
+ if (!wd->state)
+ {
+ wd->state = eina_inlist_sorted_state_new();
+ eina_inlist_sorted_state_init(wd->state, wd->items);
+ wd->requeued = EINA_FALSE;
+ }
+
+ if (it->group)
+ wd->group_items = eina_list_append(wd->group_items, it);
+
+ wd->items = eina_inlist_sorted_state_insert(wd->items, EINA_INLIST_GET(it),
+ _elm_genlist_item_compare, wd->state);
+
+ if (EINA_INLIST_GET(it)->next)
+ {
+ rel = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ it->item->before = EINA_TRUE;
+ }
+ else if (EINA_INLIST_GET(it)->prev)
+ {
+ rel = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ it->item->before = EINA_FALSE;
+ }
+ }
+
+ if (rel)
+ {
+ it->item->rel = rel;
+ it->item->rel->relcount++;
+ }
+
+ _item_queue(wd, it, _elm_genlist_item_list_compare);
+
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
static void
if (!standby) wd->generation++;
++<<<<<<< HEAD
++=======
+ if (wd->state)
+ {
+ eina_inlist_sorted_state_free(wd->state);
+ wd->state = NULL;
+ }
+
++>>>>>>> remotes/origin/upstream
if (wd->walking > 0)
{
wd->clear_me = EINA_TRUE;
l;
l = next, next = next ? next->next : NULL)
{
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = ELM_GENLIST_ITEM_FROM_INLIST(l);
+
+ if (it->generation < wd->generation)
+ {
+ Elm_Genlist_Item *itn = NULL;
+
+ if (next) itn = ELM_GENLIST_ITEM_FROM_INLIST(next);
+ if (itn) itn->walking++; /* prevent early death of subitem */
+ _item_del(it);
++=======
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(l);
+
+ if (it->generation < wd->generation)
+ {
+ Elm_Gen_Item *itn = NULL;
+
+ if (next) itn = ELM_GEN_ITEM_FROM_INLIST(next);
+ if (itn) itn->walking++; /* prevent early death of subitem */
+ it->del_cb(it);
++>>>>>>> remotes/origin/upstream
elm_widget_item_free(it);
if (itn) itn->walking--;
}
wd->calc_job = NULL;
}
if (wd->selected) wd->selected = eina_list_free(wd->selected);
++<<<<<<< HEAD
+ _clear_cb(wd);
++=======
+ if (wd->clear_cb) wd->clear_cb(wd);
++>>>>>>> remotes/origin/upstream
wd->pan_x = 0;
wd->pan_y = 0;
wd->minw = 0;
wd->minh = 0;
++<<<<<<< HEAD
+ if (wd->alpha_bg)
+ evas_object_del(wd->alpha_bg);
++=======
+ if (wd->alpha_bg) evas_object_del(wd->alpha_bg);
++>>>>>>> remotes/origin/upstream
wd->alpha_bg = NULL;
if (wd->pan_smart)
evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh);
evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
}
++<<<<<<< HEAD
+ _sizing_eval(obj);
++=======
+ if (wd->sizing_cb) wd->sizing_cb(wd->obj);
++>>>>>>> remotes/origin/upstream
elm_smart_scroller_child_region_show(wd->scr, 0, 0, 0, 0);
evas_event_thaw(evas_object_evas_get(wd->obj));
evas_event_thaw_eval(evas_object_evas_get(wd->obj));
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->multi = multi;
++=======
+ wd->multi = !!multi;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
if (itb->realized)
{
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
+
+ done = 1;
++=======
+ Elm_Gen_Item *it;
+
+ done = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(itb->items, l, it)
{
if (it->realized) list = eina_list_append(list, it);
EINA_INLIST_FOREACH(wd->blocks, itb)
{
Eina_List *l;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it;
++=======
+ Elm_Gen_Item *it;
++>>>>>>> remotes/origin/upstream
if (!ELM_RECTS_INTERSECT(ox + itb->x - itb->wd->pan_x,
oy + itb->y - itb->wd->pan_y,
itx = ox + itb->x + it->x - itb->wd->pan_x;
ity = oy + itb->y + it->y - itb->wd->pan_y;
++<<<<<<< HEAD
+ if (ELM_RECTS_INTERSECT(itx, ity, it->w, it->h, x, y, 1, 1))
+ {
+ if (posret)
+ {
+ if (y <= (ity + (it->h / 4))) *posret = -1;
+ else if (y >= (ity + it->h - (it->h / 4)))
+ *posret = 1;
+ else *posret = 0;
+ }
+ return (Elm_Object_Item *) it;
+ }
+ lasty = ity + it->h;
++=======
+ if (ELM_RECTS_INTERSECT(itx, ity, it->item->w, it->item->h, x, y, 1, 1))
+ {
+ if (posret)
+ {
+ if (y <= (ity + (it->item->h / 4))) *posret = -1;
+ else if (y >= (ity + it->item->h - (it->item->h / 4)))
+ *posret = 1;
+ else *posret = 0;
+ }
+ return (Elm_Object_Item *)it;
+ }
+ lasty = ity + it->item->h;
++>>>>>>> remotes/origin/upstream
}
}
if (posret)
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
if (!wd->items) return NULL;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = ELM_GENLIST_ITEM_FROM_INLIST(wd->items);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ return (Elm_Object_Item *) it;
++=======
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
if (!wd->items) return NULL;
++<<<<<<< HEAD
+ Elm_Genlist_Item *it = ELM_GENLIST_ITEM_FROM_INLIST(wd->items->last);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ return (Elm_Object_Item *) it;
++=======
+ Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items->last);
+ while ((it) && (it->generation < wd->generation))
+ it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_genlist_item_next_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ while (_it)
+ {
+ _it = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->next);
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ while (_it)
+ {
+ _it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->next);
++>>>>>>> remotes/origin/upstream
if ((_it) && (_it->generation == _it->wd->generation)) break;
}
return (Elm_Object_Item *) _it;
elm_genlist_item_prev_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ while (_it)
+ {
+ _it = ELM_GENLIST_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->prev);
+ if ((_it) && (_it->generation == _it->wd->generation)) break;
+ }
+ return (Elm_Object_Item *)_it;
+}
+
+EAPI Evas_Object *
+elm_genlist_item_genlist_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_widget_get(it);
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ while (_it)
+ {
+ _it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(_it)->prev);
+ if ((_it) && (_it->generation == _it->wd->generation)) break;
+ }
+ return (Elm_Object_Item *) _it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_genlist_item_parent_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) ((Elm_Genlist_Item *) it)->parent;
++=======
+ return (Elm_Object_Item *) ((Elm_Gen_Item *)it)->parent;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
if (!wd) return;
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ Elm_Genlist_Item *it2, *it3;
+ Evas_Coord y, h;
+
+ if (!wd->effect_mode || !wd->move_effect_mode)
+ _item_subitems_clear(_it);
+ else
+ {
+ if ((!wd->item_moving_effect_timer) && (_it->flags != ELM_GENLIST_ITEM_GROUP) &&
+ wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)
+ {
+ wd->expanded_item = _it;
+ _item_flip_effect_show(_it);
+ evas_object_geometry_get(VIEW(it), NULL, &y, NULL, &h);
+ wd->expand_item_end = y + h;
+
+ it2 = _it;
+ do {
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ if (!it2) break;
+ } while (it2->expanded_depth > _it->expanded_depth);
+ if (it2)
+ {
+ int diff;
+ Evas_Coord vy, vh;
+ evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), NULL, &vy, NULL, &vh);
+ diff = it2->old_scrl_y - (vy + vh);
+ if (diff > 0)
+ {
+ it3 = it2;
+ while (it3)
+ {
+ it3->old_scrl_y = it3->old_scrl_y - diff;
+ it3 = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it3);
+ }
+ }
+
+ wd->expand_item_gap = wd->expand_item_end - it2->old_scrl_y;
+ }
+ else
+ wd->expand_item_gap = 0;
+
+ evas_object_raise(wd->alpha_bg);
+ evas_object_show(wd->alpha_bg);
+
+ wd->start_time = current_time_get();
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+
+ if (!wd->tree_effect_enabled || !wd->move_effect_mode)
+ _item_subitems_clear(_it);
+ else
+ {
+ if (!wd->item_moving_effect_timer)
+ {
+ wd->expanded_item = _it;
+ _item_tree_effect_before(_it);
+ evas_object_raise(wd->alpha_bg);
+ evas_object_show(wd->alpha_bg);
+ wd->start_time = ecore_time_get();
++>>>>>>> remotes/origin/upstream
wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, wd);
}
else
EAPI void
elm_genlist_item_selected_set(Elm_Object_Item *it,
++<<<<<<< HEAD
+ Eina_Bool selected)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Eina_Bool selected)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = _it->wd;
if (!wd) return;
if ((_it->generation < wd->generation) || elm_widget_item_disabled_get(_it))
{
while (wd->selected)
{
++<<<<<<< HEAD
+ _item_unhighlight(wd->selected->data);
+ _item_unselect(wd->selected->data);
+ }
+ }
+ _item_highlight(_it);
+ _item_select(_it);
+ return;
+ }
+ _item_unhighlight(_it);
+ _item_unselect(_it);
++=======
+ if (_it->unhighlight_cb) _it->unhighlight_cb(wd->selected->data);
+ _it->unsel_cb(wd->selected->data);
+ }
+ }
+ _it->highlight_cb(_it);
+ _item_select(_it);
+ return;
+ }
+ if (_it->unhighlight_cb) _it->unhighlight_cb(_it);
+ _it->unsel_cb(_it);
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
elm_genlist_item_selected_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Genlist_Item *) it)->selected;
+}
+
+EAPI void
+elm_genlist_item_expanded_set(Elm_Object_Item *it,
+ Eina_Bool expanded)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ if (_it->flags != ELM_GENLIST_ITEM_SUBITEMS) return;
+ if (_it->expanded == expanded) return;
+ _it->expanded = expanded;
+ _it->wd->expanded_item = _it;
+ if (_it->wd->effect_mode && !_it->wd->alpha_bg)
+ _it->wd->alpha_bg = _create_tray_alpha_bg(WIDGET(_it));
+
+ if (_it->expanded)
+ {
+ _it->wd->move_effect_mode = ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND;
+ _it->wd->expanded_move_effect_set = EINA_TRUE;
+ _it->wd->expanded_next_item = (Elm_Genlist_Item *) elm_genlist_item_next_get(it);
++=======
+ return ((Elm_Gen_Item *)it)->selected;
+ }
+
+ Elm_Gen_Item *
+ _elm_genlist_expanded_next_item_get(Elm_Gen_Item *it)
+ {
+ Elm_Gen_Item *it2;
+ if (it->item->expanded)
+ {
+ it2 = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it);
+ }
+ else
+ {
+ it2 = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it);
+ while (it2)
+ {
+ if (it->item->expanded_depth >= it2->item->expanded_depth) break;
+ it2 = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ }
+ }
+ return it2;
+ }
+
+ static void
+ _elm_genlist_move_items_set(Elm_Gen_Item *it)
+ {
+ Eina_List *l;
+ Elm_Gen_Item *it2 = NULL;
+ Evas_Coord ox, oy, ow, oh, dh = 0;
+
+ it->wd->expanded_next_item = _elm_genlist_expanded_next_item_get(it);
+
+ if (it->item->expanded)
+ {
+ it->wd->move_items = elm_genlist_realized_items_get(it->wd->obj);
+ EINA_LIST_FOREACH(it->wd->move_items, l, it2)
+ {
+ if (it2 == it->wd->expanded_next_item) break;
+ it->wd->move_items = eina_list_remove(it->wd->move_items, it2);
+ }
+ }
+ else
+ {
+ evas_object_geometry_get(it->wd->pan_smart, &ox, &oy, &ow, &oh);
+ it2 = it->wd->expanded_next_item;
+ while (it2 && (dh < oy + oh))
+ {
+ dh += it2->item->h;
+ it->wd->move_items = eina_list_append(it->wd->move_items, it2);
+ it2 = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ }
+ }
+ }
+
+ EAPI void
+ elm_genlist_item_expanded_set(Elm_Object_Item *it,
+ Eina_Bool expanded)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ expanded = !!expanded;
+ if (_it->item->expanded == expanded) return;
+ _it->item->expanded = expanded;
+ _it->wd->expanded_item = _it;
+ _elm_genlist_move_items_set(_it);
+
+ if (_it->wd->tree_effect_enabled && !_it->wd->alpha_bg)
+ _it->wd->alpha_bg = _create_tray_alpha_bg(WIDGET(_it));
+
+ if (_it->item->expanded)
+ {
+ _it->wd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_EXPAND;
++>>>>>>> remotes/origin/upstream
if (_it->realized)
edje_object_signal_emit(VIEW(_it), "elm,state,expanded", "elm");
evas_object_smart_callback_call(WIDGET(_it), SIG_EXPANDED, _it);
}
else
{
++<<<<<<< HEAD
+ _it->wd->move_effect_mode = ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT;
+ _it->wd->expanded_next_item = NULL;
++=======
+ _it->wd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_CONTRACT;
++>>>>>>> remotes/origin/upstream
if (_it->realized)
edje_object_signal_emit(VIEW(_it), "elm,state,contracted", "elm");
evas_object_smart_callback_call(WIDGET(_it), SIG_CONTRACTED, _it);
elm_genlist_item_expanded_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Genlist_Item *) it)->expanded;
++=======
+ return ((Elm_Gen_Item *)it)->item->expanded;
++>>>>>>> remotes/origin/upstream
}
EAPI int
elm_genlist_item_expanded_depth_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 0);
++<<<<<<< HEAD
+ return ((Elm_Genlist_Item *) it)->expanded_depth;
+}
+
+EAPI void
+elm_genlist_item_disabled_set(Elm_Object_Item *it,
+ Eina_Bool disabled)
+{
+ elm_object_item_disabled_set(it, disabled);
+}
+
+EAPI Eina_Bool
+elm_genlist_item_disabled_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_disabled_get(it);
+}
+
+EAPI void
+elm_genlist_item_display_only_set(Elm_Object_Item *it,
+ Eina_Bool display_only)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ display_only = !!display_only;
+if (_it->display_only == display_only) return;
+ if (_it->generation < _it->wd->generation) return;
+ _it->display_only = display_only;
+ _it->mincalcd = EINA_FALSE;
+ _it->updateme = EINA_TRUE;
+ if (_it->block) _it->block->updateme = EINA_TRUE;
+ if (_it->wd->update_job) ecore_job_del(_it->wd->update_job);
+ _it->wd->update_job = ecore_job_add(_update_job, _it->wd);
+}
+
+EAPI Eina_Bool
+elm_genlist_item_display_only_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ if (_it->generation < _it->wd->generation) return EINA_FALSE;
+ return _it->display_only;
+}
+
+EAPI void
+elm_genlist_item_show(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ if (_it->generation < _it->wd->generation) return;
+ if ((_it->queued) || (!_it->mincalcd))
+ {
+ _it->wd->show_item = _it;
+ _it->wd->bring_in = EINA_FALSE;
+ _it->wd->scrollto_type = ELM_GENLIST_ITEM_SCROLLTO_IN;
+ _it->showme = EINA_TRUE;
+ return;
+ }
+ if (_it->wd->show_item)
+ {
+ _it->wd->show_item->showme = EINA_FALSE;
+ _it->wd->show_item = NULL;
+ }
+ elm_smart_scroller_child_region_show(_it->wd->scr,
+ _it->x + _it->block->x,
+ _it->y + _it->block->y,
+ _it->block->w, _it->h);
++=======
+ return ((Elm_Gen_Item *)it)->item->expanded_depth;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_genlist_item_display_only_set(Elm_Object_Item *it,
+ Eina_Bool display_only)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ display_only = !!display_only;
+
+ if (display_only)
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_item_select_mode_get(it);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_genlist_item_display_only_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if (_it->generation < _it->wd->generation) return EINA_FALSE;
+ Elm_Object_Select_Mode oldmode = elm_genlist_item_select_mode_get(it);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+ return EINA_TRUE;
+ return EINA_FALSE;
+ }
+
+ static Eina_Bool _elm_genlist_item_compute_coordinates(
+ Elm_Object_Item *it,
+ Elm_Genlist_Item_Scrollto_Type type,
+ Evas_Coord *x,
+ Evas_Coord *y,
+ Evas_Coord *w,
+ Evas_Coord *h)
+ {
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ Evas_Coord gith = 0;
+ if (_it->generation < _it->wd->generation) return EINA_FALSE;
+ if ((_it->item->queued) || (!_it->item->mincalcd))
+ {
+ _it->wd->show_item = _it;
+ _it->wd->bring_in = EINA_FALSE;
+ _it->wd->scrollto_type = type;
+ _it->item->showme = EINA_TRUE;
+ return EINA_FALSE;
+ }
+ if (_it->wd->show_item)
+ {
+ _it->wd->show_item->item->showme = EINA_FALSE;
+ _it->wd->show_item = NULL;
+ }
+
+ evas_object_geometry_get(_it->wd->pan_smart, NULL, NULL, w, h);
+ if (type==ELM_GENLIST_ITEM_SCROLLTO_IN)
+ {
+ if ((_it->item->group_item) &&
+ (_it->wd->pan_y > (_it->y + _it->item->block->y)))
+ gith = _it->item->group_item->item->h;
+
+ *h = _it->item->h;
+ *y = _it->y + _it->item->block->y - gith;
+ }
+ else if (type==ELM_GENLIST_ITEM_SCROLLTO_TOP)
+ {
+ if (_it->item->group_item) gith = _it->item->group_item->item->h;
+ *y = _it->y + _it->item->block->y - gith;
+ }
+ else if (type==ELM_GENLIST_ITEM_SCROLLTO_MIDDLE)
+ {
+ *y = _it->y + _it->item->block->y - *h / 2 + _it->item->h / 2;
+ }
+ else
+ return EINA_FALSE;
+
+ *x = _it->x + _it->item->block->x;
+ *w = _it->item->block->w;
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_genlist_item_promote(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ if (_it->generation < _it->wd->generation) return;
+ _item_move_before(_it,
+ (Elm_Genlist_Item *) elm_genlist_first_item_get(WIDGET(_it)));
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if (_it->generation < _it->wd->generation) return;
+ _item_move_before(_it,
+ (Elm_Gen_Item *) elm_genlist_first_item_get(WIDGET(_it)));
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_genlist_item_demote(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
- Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
if (_it->generation < _it->wd->generation) return;
_item_move_after(_it,
- (Elm_Gen_Item *) elm_genlist_last_item_get(WIDGET(_it)));
+ (Elm_Genlist_Item *) elm_genlist_last_item_get(WIDGET(_it)));
}
EAPI void
}
EAPI void
-elm_genlist_item_all_contents_unset(Elm_Object_Item *it, Eina_List **l)
+elm_genlist_item_middle_bring_in(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Evas_Coord ow, oh;
+ Evas_Coord pan_w = 0, pan_h = 0;
+ Eina_Bool pan_size_ready = EINA_FALSE;
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
- Evas_Object *content;
- EINA_LIST_FREE(((Elm_Gen_Item *)it)->content_objs, content)
+ if (_it->generation < _it->wd->generation) return;
+ evas_object_geometry_get(_it->wd->pan_smart, NULL, NULL, &ow, &oh);
+ if (_it->block)
{
- elm_widget_sub_object_del(WIDGET(it), content);
- evas_object_smart_member_del(content);
- evas_object_hide(content);
- if (l)
+ _pan_child_size_get(_it->wd->pan_smart, &pan_w, &pan_h);
+ if ((pan_w > (_it->x + _it->block->x)) && (pan_h > (_it->y + _it->block->y + oh / 2)))
+ {
+ pan_size_ready = EINA_TRUE;
+ }
+ }
+ if ((_it->queued) || (!_it->mincalcd) || (!pan_size_ready))
+ {
+ _it->wd->show_item = _it;
+ _it->wd->bring_in = EINA_TRUE;
+ _it->wd->scrollto_type = ELM_GENLIST_ITEM_SCROLLTO_MIDDLE;
+ _it->showme = EINA_TRUE;
+ return;
+ }
+ if (_it->wd->show_item)
+ {
+ _it->wd->show_item->showme = EINA_FALSE;
+ _it->wd->show_item = NULL;
+ }
+ elm_smart_scroller_region_bring_in(_it->wd->scr,
+ _it->x + _it->block->x,
+ _it->y + _it->block->y - oh / 2 + _it->h / 2,
+ _it->block->w, oh);
+}
+
+EAPI void
+elm_genlist_item_del(Elm_Object_Item *it)
+{
+ elm_object_item_del(it);
+}
+
+EAPI void
+elm_genlist_item_data_set(Elm_Object_Item *it,
+ const void *data)
+{
+ elm_object_item_data_set(it, (void *) data);
+}
+
+EAPI void *
+elm_genlist_item_data_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_data_get(it);
+}
+
+EAPI void
+elm_genlist_item_contents_orphan(Elm_Object_Item *it)
++=======
++ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++ if (_it->generation < _it->wd->generation) return;
++ _item_move_after(_it,
++ (Elm_Gen_Item *) elm_genlist_last_item_get(WIDGET(_it)));
++}
++
++EAPI void
++elm_genlist_item_show(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type)
++{
++ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++ Evas_Coord x, y, w, h;
++ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++
++ if (_elm_genlist_item_compute_coordinates(it, type, &x, &y, &w, &h))
++ elm_smart_scroller_child_region_show(_it->wd->scr, x, y, w, h);
++}
++
++EAPI void
++elm_genlist_item_bring_in(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type)
++{
++
++ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++ Evas_Coord x, y, w, h;
++ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++
++ if (_elm_genlist_item_compute_coordinates(it, type, &x, &y, &w, &h))
++ elm_smart_scroller_region_bring_in(_it->wd->scr,x, y, w, h);
++}
++
++EINA_DEPRECATED EAPI void
++elm_genlist_item_top_show(Elm_Object_Item *it)
++{
++ elm_genlist_item_show(it, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++}
++
++EINA_DEPRECATED EAPI void
++elm_genlist_item_top_bring_in(Elm_Object_Item *it)
++{
++ elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_TOP);
++}
++
++EINA_DEPRECATED EAPI void
++elm_genlist_item_middle_show(Elm_Object_Item *it)
++{
++ elm_genlist_item_show(it, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
++}
++
++EINA_DEPRECATED EAPI void
++elm_genlist_item_middle_bring_in(Elm_Object_Item *it)
++{
++ elm_genlist_item_bring_in(it, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
++}
++
++EINA_DEPRECATED EAPI void
++elm_genlist_item_contents_orphan(Elm_Object_Item *it)
++{
++ elm_genlist_item_all_contents_unset(it, NULL);
++}
++
++EAPI void
++elm_genlist_item_all_contents_unset(Elm_Object_Item *it, Eina_List **l)
++>>>>>>> remotes/origin/upstream
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Evas_Object *content;
++<<<<<<< HEAD
+ EINA_LIST_FREE(((Elm_Genlist_Item *) it)->content_objs, content)
++=======
++ EINA_LIST_FREE(((Elm_Gen_Item *)it)->content_objs, content)
++>>>>>>> remotes/origin/upstream
+ {
+ elm_widget_sub_object_del(WIDGET(it), content);
+ evas_object_smart_member_del(content);
+ evas_object_hide(content);
++<<<<<<< HEAD
+ }
+}
+
+EAPI const Evas_Object *
++=======
++ if (l)
+ *l = eina_list_append(*l, content);
+ }
+ }
+
+ EINA_DEPRECATED EAPI const Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_genlist_item_object_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
elm_genlist_item_update(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+ if (!_it->block) return;
+ if (_it->generation < _it->wd->generation) return;
+ _it->mincalcd = EINA_FALSE;
+ _it->updateme = EINA_TRUE;
+ _it->block->updateme = EINA_TRUE;
+ if (_it->wd->update_job) ecore_job_del(_it->wd->update_job);
+ _it->wd->update_job = ecore_job_add(_update_job, _it->wd);
+ _it->defer_unrealize = EINA_FALSE;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ if (!_it->item->block) return;
+ if (_it->generation < _it->wd->generation) return;
+ _it->item->mincalcd = EINA_FALSE;
+ _it->item->updateme = EINA_TRUE;
+ _it->item->block->updateme = EINA_TRUE;
+ if (_it->wd->update_job) ecore_job_del(_it->wd->update_job);
+ _it->wd->update_job = ecore_job_add(_update_job, _it->wd);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_genlist_item_fields_update(Elm_Object_Item *it,
const char *parts,
++<<<<<<< HEAD
+ Elm_Genlist_Item_Field_Flags itf)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+ if (!_it->block) return;
++=======
+ Elm_Genlist_Item_Field_Type itf)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ if (!_it->item->block) return;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return;
if ((!itf) || (itf & ELM_GENLIST_ITEM_FIELD_TEXT))
if ((!itf) || (itf & ELM_GENLIST_ITEM_FIELD_CONTENT))
{
_it->content_objs = _item_content_unrealize(_it, VIEW(_it),
++<<<<<<< HEAD
+ &_it->contents, parts);
+ _it->content_objs = _item_content_realize(_it, VIEW(_it),
+ &_it->contents, parts);
+
+ if (_it->renamed)
+ {
+ _it->content_objs = _item_mode_content_unrealize(_it, VIEW(_it),
+ &_it->contents, parts, &_it->content_objs);
+ _it->content_objs = _item_mode_content_realize(_it, VIEW(_it),
+ &_it->contents, parts, &_it->content_objs, "renames");
+ }
+
+ if (_it->mode_view)
+ {
+ _it->mode_content_objs = _item_mode_content_unrealize(_it, _it->mode_view,
+ &_it->mode_contents, parts, &_it->mode_content_objs);
+ _it->mode_content_objs = _item_mode_content_realize(_it, _it->mode_view,
+ &_it->mode_contents, parts, &_it->mode_content_objs, "contents");
+ }
+
+ if (_it->wd->edit_mode)
+ {
+ _it->edit_content_objs = _item_mode_content_unrealize(_it, _it->edit_obj,
+ &_it->contents, parts, &_it->edit_content_objs);
+ _it->edit_content_objs = _item_mode_content_realize(_it, _it->edit_obj,
+ &_it->contents, parts, &_it->edit_content_objs, "edit_contents");
+ }
++=======
+ &_it->contents, parts);
+ _it->content_objs = _item_content_realize(_it, VIEW(_it),
+ &_it->contents, parts);
++>>>>>>> remotes/origin/upstream
}
if ((!itf) || (itf & ELM_GENLIST_ITEM_FIELD_STATE))
_item_state_realize(_it, VIEW(_it), &_it->states, parts);
}
EAPI void
++<<<<<<< HEAD
+elm_genlist_item_item_class_update(Elm_Object_Item *it,
+ const Elm_Genlist_Item_Class *itc)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+ if (!_it->block) return;
+ EINA_SAFETY_ON_NULL_RETURN(itc);
+ if (_it->generation < _it->wd->generation) return;
+ _it->itc = itc;
+ _it->nocache = EINA_TRUE;
++=======
+ elm_genlist_item_item_class_update(Elm_Object_Item *it,
+ const Elm_Genlist_Item_Class *itc)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ if (!_it->item->block) return;
+ EINA_SAFETY_ON_NULL_RETURN(itc);
+ if (_it->generation < _it->wd->generation) return;
+ _it->itc = itc;
+ _it->item->nocache_once = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
elm_genlist_item_update(it);
}
elm_genlist_item_item_class_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (_it->generation < _it->wd->generation) return NULL;
return _it->itc;
}
}
EAPI void
++<<<<<<< HEAD
+elm_genlist_item_tooltip_content_cb_set(Elm_Object_Item *it,
++=======
+ elm_genlist_item_tooltip_content_cb_set(Elm_Object_Item *it,
++>>>>>>> remotes/origin/upstream
Elm_Tooltip_Item_Content_Cb func,
const void *data,
Evas_Smart_Cb del_cb)
{
ELM_OBJ_ITEM_CHECK_OR_GOTO(it, error);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((_it->tooltip.content_cb == func) && (_it->tooltip.data == data))
return;
_it->tooltip.content_cb,
_it->tooltip.data, NULL);
elm_widget_item_tooltip_style_set(_it, _it->tooltip.style);
++<<<<<<< HEAD
+ //elm_widget_item_tooltip_window_mode_set(_it, _it->tooltip.free_size); //upstream
++=======
+ elm_widget_item_tooltip_window_mode_set(_it, _it->tooltip.free_size);
++>>>>>>> remotes/origin/upstream
}
return;
elm_genlist_item_tooltip_unset(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((VIEW(_it)) && (_it->tooltip.content_cb))
elm_widget_item_tooltip_unset(_it);
if (_it->tooltip.del_cb)
++<<<<<<< HEAD
+ _it->tooltip.del_cb((void *)_it->tooltip.data, WIDGET(_it), _it);
+ _it->tooltip.del_cb = NULL;
+ _it->tooltip.content_cb = NULL;
+ _it->tooltip.data = NULL;
+ //_it->tooltip.free_size = EINA_FALSE; //upstream
++=======
+ _it->tooltip.del_cb((void *) _it->tooltip.data, WIDGET(_it), _it);
+ _it->tooltip.del_cb = NULL;
+ _it->tooltip.content_cb = NULL;
+ _it->tooltip.data = NULL;
+ _it->tooltip.free_size = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (_it->tooltip.style)
elm_genlist_item_tooltip_style_set(it, NULL);
}
EAPI void
++<<<<<<< HEAD
+elm_genlist_item_tooltip_style_set(Elm_Object_Item *it,
+ const char *style)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ elm_genlist_item_tooltip_style_set(Elm_Object_Item *it,
+ const char *style)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
eina_stringshare_replace(&_it->tooltip.style, style);
if (VIEW(_it)) elm_widget_item_tooltip_style_set(_it, style);
Eina_Bool disable)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+// _it->tooltip.free_size = disable; //upstream
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ _it->tooltip.free_size = disable;
++>>>>>>> remotes/origin/upstream
if (VIEW(_it)) return elm_widget_item_tooltip_window_mode_set(_it, disable);
return EINA_TRUE;
}
}
EAPI void
++<<<<<<< HEAD
+elm_genlist_item_cursor_set(Elm_Object_Item *it,
+ const char *cursor)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+ eina_stringshare_replace(&_it->mouse_cursor, cursor);
+ if (VIEW(_it)) elm_widget_item_cursor_set(it, cursor);
++=======
+ elm_genlist_item_cursor_set(Elm_Object_Item *it,
+ const char *cursor)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ eina_stringshare_replace(&_it->mouse_cursor, cursor);
+ if (VIEW(_it)) elm_widget_item_cursor_set(_it, cursor);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
elm_genlist_item_cursor_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_get(it);
}
elm_genlist_item_cursor_unset(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!_it->mouse_cursor) return;
}
EAPI void
++<<<<<<< HEAD
+elm_genlist_item_cursor_style_set(Elm_Object_Item *it,
+ const char *style)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
+ elm_genlist_item_cursor_style_set(Elm_Object_Item *it,
+ const char *style)
+ {
++>>>>>>> remotes/origin/upstream
elm_widget_item_cursor_style_set(it, style);
}
EAPI const char *
elm_genlist_item_cursor_style_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_style_get(it);
}
EAPI void
elm_genlist_item_cursor_engine_only_set(Elm_Object_Item *it,
++<<<<<<< HEAD
+ Eina_Bool engine_only)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
+ Eina_Bool engine_only)
+ {
++>>>>>>> remotes/origin/upstream
elm_widget_item_cursor_engine_only_set(it, engine_only);
}
EAPI Eina_Bool
elm_genlist_item_cursor_engine_only_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++=======
++>>>>>>> remotes/origin/upstream
return elm_widget_item_cursor_engine_only_get(it);
}
EAPI int
++<<<<<<< HEAD
+elm_genlist_item_index_get(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, -1);
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+ if (_it->block)
+ return _it->position + (_it->block->position * _it->wd->max_items_per_block);
++=======
+ elm_genlist_item_index_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, -1);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+
+ if (_it->item->block)
+ return _it->position + _it->item->block->position;
++>>>>>>> remotes/origin/upstream
return -1;
}
EAPI void
elm_genlist_mode_set(Evas_Object *obj,
++<<<<<<< HEAD
+ Elm_List_Mode mode)
++=======
+ Elm_List_Mode mode)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->mode == mode) return;
wd->mode = mode;
++<<<<<<< HEAD
+ _sizing_eval(obj);
+}
+
+EAPI void
+elm_genlist_horizontal_set(Evas_Object *obj,
+ Elm_List_Mode mode)
+{
+ elm_genlist_mode_set(obj, mode);
+}
+
+EAPI void
+elm_genlist_horizontal_mode_set(Evas_Object *obj,
+ Elm_List_Mode mode)
+{
+ elm_genlist_mode_set(obj, mode);
+}
++=======
+ if (wd->mode == ELM_LIST_COMPRESS)
+ elm_genlist_homogeneous_set(obj, EINA_FALSE);
+ _sizing_eval(obj);
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI Elm_List_Mode
elm_genlist_mode_get(const Evas_Object *obj)
return wd->mode;
}
++<<<<<<< HEAD
+EAPI Elm_List_Mode
+elm_genlist_horizontal_get(const Evas_Object *obj)
+{
+ return elm_genlist_mode_get(obj);
+}
+
+EAPI Elm_List_Mode
+elm_genlist_horizontal_mode_get(const Evas_Object *obj)
+{
+ return elm_genlist_mode_get(obj);
+}
+
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_genlist_always_select_mode_set(Evas_Object *obj,
Eina_Bool always_select)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->always_select = always_select;
+}
+
+EAPI Eina_Bool
++=======
+ if (always_select)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_genlist_always_select_mode_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->always_select;
+}
+
+EAPI void
++=======
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ return EINA_TRUE;
+ return EINA_FALSE;
+ }
+
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_genlist_no_select_mode_set(Evas_Object *obj,
Eina_Bool no_select)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->no_select = no_select;
+}
+
+EAPI Eina_Bool
+elm_genlist_no_select_mode_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->no_select;
+}
+
+EAPI void
+elm_genlist_compress_mode_set(Evas_Object *obj,
+ Eina_Bool compress)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->compress = compress;
+ if (!compress) elm_genlist_homogeneous_set(obj, EINA_FALSE);
+}
+
+EAPI Eina_Bool
+elm_genlist_compress_mode_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->compress;
+}
+
+EAPI void
+elm_genlist_height_for_width_mode_set(Evas_Object *obj,
+ Eina_Bool height_for_width)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->height_for_width = !!height_for_width;
+ if (wd->height_for_width)
+ {
+ elm_genlist_homogeneous_set(obj, EINA_FALSE);
+ elm_genlist_compress_mode_set(obj, EINA_TRUE);
+ }
+}
+
+EAPI Eina_Bool
+elm_genlist_height_for_width_mode_get(const Evas_Object *obj)
++=======
+ if (no_select)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ elm_genlist_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_genlist_no_select_mode_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->height_for_width;
++=======
+ Elm_Object_Select_Mode oldmode = elm_genlist_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ return EINA_TRUE;
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ elm_smart_scroller_bounce_allow_set(wd->scr, h_bounce, v_bounce);
++=======
+ wd->h_bounce = !!h_bounce;
+ wd->v_bounce = !!v_bounce;
+ elm_smart_scroller_bounce_allow_set(wd->scr, wd->h_bounce, wd->v_bounce);
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce);
++=======
+ if (h_bounce) *h_bounce = wd->h_bounce;
+ if (v_bounce) *v_bounce = wd->v_bounce;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (homogeneous) elm_genlist_compress_mode_set(obj, EINA_TRUE);
+ wd->homogeneous = homogeneous;
++=======
+ wd->homogeneous = !!homogeneous;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
EAPI void
elm_genlist_block_count_set(Evas_Object *obj,
++<<<<<<< HEAD
+ int n)
++=======
+ int count)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->max_items_per_block = n;
++=======
+ wd->max_items_per_block = count;
++>>>>>>> remotes/origin/upstream
wd->item_cache_max = wd->max_items_per_block * 2;
_item_cache_clean(wd);
}
Eina_List *list, *l;
Elm_Object_Item *it;
- list = elm_genlist_realized_items_get(obj);
- EINA_LIST_FOREACH(list, l, it)
- elm_genlist_item_update(it);
+ list = elm_genlist_realized_items_get(obj);
+ EINA_LIST_FOREACH(list, l, it)
+ elm_genlist_item_update(it);
+ }
+
+ EAPI void
++<<<<<<< HEAD
++elm_genlist_item_mode_set(Elm_Object_Item *it,
++ const char *mode_type,
++ Eina_Bool mode_set)
++{
++ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++=======
+ elm_genlist_item_decorate_mode_set(Elm_Object_Item *it,
+ const char *mode_type,
+ Eina_Bool mode_set)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
++>>>>>>> remotes/origin/upstream
+
+ Widget_Data *wd = _it->wd;
+ Eina_List *l;
+ Elm_Object_Item *it2;
+
+ if (!wd) return;
+ if (!mode_type) return;
+ if ((_it->generation < _it->wd->generation) ||
+ elm_widget_item_disabled_get(_it)) return;
++<<<<<<< HEAD
++ if (wd->edit_mode) return;
++=======
+ if (wd->decorate_mode) return;
++>>>>>>> remotes/origin/upstream
+
+ if ((wd->mode_item == _it) &&
+ (!strcmp(mode_type, wd->mode_type)) &&
+ (mode_set))
+ return;
+ if (!_it->itc->mode_item_style) return;
++<<<<<<< HEAD
++=======
+ _it->mode_set = mode_set;
++>>>>>>> remotes/origin/upstream
+
+ if (wd->multi)
+ {
+ EINA_LIST_FOREACH(wd->selected, l, it2)
++<<<<<<< HEAD
++ if (((Elm_Genlist_Item *) it2)->realized)
++=======
+ if (((Elm_Gen_Item *)it2)->realized)
++>>>>>>> remotes/origin/upstream
+ elm_genlist_item_selected_set(it2, EINA_FALSE);
+ }
+ else
+ {
+ it2 = elm_genlist_selected_item_get(wd->obj);
++<<<<<<< HEAD
++ if ((it2) && (((Elm_Genlist_Item *) it2)->realized))
++=======
+ if ((it2) && (((Elm_Gen_Item *)it2)->realized))
++>>>>>>> remotes/origin/upstream
+ elm_genlist_item_selected_set(it2, EINA_FALSE);
+ }
+
+ if (((wd->mode_type) && (strcmp(mode_type, wd->mode_type))) ||
+ (mode_set) ||
+ ((_it == wd->mode_item) && (!mode_set)))
+ _item_mode_unset(wd);
+
+ eina_stringshare_replace(&wd->mode_type, mode_type);
+ if (mode_set) _item_mode_set(_it);
+ }
+
++<<<<<<< HEAD
++
++EAPI const char *
++elm_genlist_mode_item_style_get(const Evas_Object *obj)
++=======
+ EAPI const char *
+ elm_genlist_item_decorate_mode_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
++{
++ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++ Widget_Data *wd = elm_widget_data_get(obj);
++ if (!wd) return NULL;
++<<<<<<< HEAD
++ return wd->mode_item->itc->mode_item_style;
++}
++
++EAPI void
++elm_genlist_mode_item_style_set(Evas_Object *obj, const char *style)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ if (!wd) return;
++ if ((style == wd->mode_item->itc->mode_item_style) ||
++ (style && wd->mode_item->itc->mode_item_style &&
++ (!strcmp(style, wd->mode_item->itc->mode_item_style))))
++ return;
++ eina_stringshare_replace(&wd->mode_item->itc->mode_item_style, style);
++ elm_genlist_realized_items_update(obj);
++}
++
++EAPI const char *
++elm_genlist_mode_type_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return wd->mode_type;
+ }
+
+ EAPI const Elm_Object_Item *
++elm_genlist_mode_item_get(const Evas_Object *obj)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++ Widget_Data *wd = elm_widget_data_get(obj);
++ if (!wd) return NULL;
++ return (Elm_Object_Item *) wd->mode_item;
++=======
++ return wd->mode_type;
++}
++
++EAPI const Elm_Object_Item *
+ elm_genlist_decorated_item_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return (Elm_Object_Item *) wd->mode_item;
+ }
+
+ EAPI Eina_Bool
+ elm_genlist_decorate_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ return wd->decorate_mode;
+ }
+
+ EAPI void
+ elm_genlist_decorate_mode_set(Evas_Object *obj, Eina_Bool decorated)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Eina_List *list, *l;
+ Elm_Gen_Item *it;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ decorated = !!decorated;
+ if (wd->decorate_mode == decorated) return;
+ wd->decorate_mode = decorated;
+
+ list = elm_genlist_realized_items_get(obj);
+ if (!wd->decorate_mode)
+ {
+ EINA_LIST_FOREACH(list, l, it)
+ {
+ if (it->item->type != ELM_GENLIST_ITEM_GROUP)
+ _decorate_mode_item_unrealize(it);
+ }
+ _item_cache_zero(wd);
+ }
+ else
+ {
+ EINA_LIST_FOREACH(list, l, it)
+ {
+ if (it->item->type != ELM_GENLIST_ITEM_GROUP)
+ {
+ if (it->selected) _item_unselect(it);
+ if (it->itc->edit_item_style)
+ _decorate_mode_item_realize(it, EINA_TRUE);
+ }
+ }
+ }
+ if (wd->calc_job) ecore_job_del(wd->calc_job);
+ wd->calc_job = ecore_job_add(_calc_job, wd);
++>>>>>>> remotes/origin/upstream
+ }
+
+ EAPI void
+ elm_genlist_reorder_mode_set(Evas_Object *obj,
+ Eina_Bool reorder_mode)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
++<<<<<<< HEAD
++ wd->reorder_mode = reorder_mode;
++=======
+ wd->reorder_mode = !!reorder_mode;
++>>>>>>> remotes/origin/upstream
+ }
+
+ EAPI Eina_Bool
+ elm_genlist_reorder_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->reorder_mode;
+ }
+
++<<<<<<< HEAD
++EAPI Elm_Genlist_Item_Flags
++elm_genlist_item_flags_get(const Elm_Object_Item *it)
++{
++ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ELM_GENLIST_ITEM_MAX);
++ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
++ return _it->flags;
++=======
+ EAPI Elm_Genlist_Item_Type
+ elm_genlist_item_type_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ELM_GENLIST_ITEM_MAX);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ return _it->item->type;
+ }
+
+ EINA_DEPRECATED EAPI Elm_Genlist_Item_Type
+ elm_genlist_item_flags_get(const Elm_Object_Item *it)
+ {
+ return elm_genlist_item_type_get(it);
+ }
+
+ EAPI Elm_Genlist_Item_Class *
+ elm_genlist_item_class_new(void)
+ {
+ Elm_Genlist_Item_Class *itc;
+
+ itc = calloc(1, sizeof(Elm_Genlist_Item_Class));
+ if (!itc)
+ return NULL;
+ itc->version = CLASS_ALLOCATED;
+ itc->refcount = 1;
+ itc->delete_me = EINA_FALSE;
+
+ return itc;
+ }
+
+ EAPI void
+ elm_genlist_item_class_free(Elm_Genlist_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ if (!itc->delete_me) itc->delete_me = EINA_TRUE;
+ if (itc->refcount > 0) elm_genlist_item_class_unref(itc);
+ else
+ {
+ itc->version = 0;
+ free(itc);
+ }
+ }
+ }
+
+ EAPI void
+ elm_genlist_item_class_ref(Elm_Genlist_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ itc->refcount++;
+ if (itc->refcount == 0) itc->refcount--;
+ }
+ }
+
+ EAPI void
+ elm_genlist_item_class_unref(Elm_Genlist_Item_Class *itc)
+ {
+ if (itc && (itc->version == CLASS_ALLOCATED))
+ {
+ if (itc->refcount > 0) itc->refcount--;
+ if (itc->delete_me && (!itc->refcount))
+ elm_genlist_item_class_free(itc);
+ }
+ }
+
+ void _flip_job(void *data)
+ {
+ Elm_Gen_Item *it = (Elm_Gen_Item *) data;
+ _elm_genlist_item_unrealize(it, EINA_FALSE);
+ if (it->selected) _item_unselect(it);
+ it->flipped = EINA_TRUE;
+ it->item->nocache = EINA_TRUE;
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
- return wd->reorder_mode;
+ return !wd->no_highlight;
}
- EAPI Elm_Genlist_Item_Flags
- elm_genlist_item_flags_get(const Elm_Object_Item *it)
+ EAPI void
+ elm_genlist_item_select_mode_set(Elm_Object_Item *it,
+ Elm_Object_Select_Mode mode)
{
- ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ELM_GENLIST_ITEM_MAX);
- Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
- return _it->flags;
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if (!_it) return;
+ if (_it->generation < _it->wd->generation) return;
+ if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
+ return;
+ if (_it->select_mode != mode)
+ _it->select_mode = mode;
+
+ if (_it->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+ {
+ _it->item->mincalcd = EINA_FALSE;
+ _it->item->updateme = EINA_TRUE;
+ if (_it->item->block) _it->item->block->updateme = EINA_TRUE;
+ if (_it->wd->update_job) ecore_job_del(_it->wd->update_job);
+ _it->wd->update_job = ecore_job_add(_update_job, _it->wd);
+ }
+ }
+
+ EAPI Elm_Object_Select_Mode
+ elm_genlist_item_select_mode_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ELM_OBJECT_SELECT_MODE_MAX);
+ Elm_Gen_Item *_it = (Elm_Gen_Item *)it;
+ if (!_it) return ELM_OBJECT_SELECT_MODE_MAX;
+ return _it->select_mode;
++>>>>>>> remotes/origin/upstream
}
/* for gengrid as of now */
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->scr)
+ elm_smart_scroller_current_page_get(wd->scr, h_pagenumber, v_pagenumber);
++=======
+ elm_smart_scroller_current_page_get(wd->scr, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
/* for gengrid as of now */
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->scr)
+ elm_smart_scroller_last_page_get(wd->scr, h_pagenumber, v_pagenumber);
++=======
+ elm_smart_scroller_last_page_get(wd->scr, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
/* for gengrid as of now */
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->scr)
+ elm_smart_scroller_page_show(wd->scr, h_pagenumber, v_pagenumber);
++=======
+ elm_smart_scroller_page_show(wd->scr, h_pagenumber, v_pagenumber);
++>>>>>>> remotes/origin/upstream
}
/* for gengrid as of now */
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->scr)
+ elm_smart_scroller_page_bring_in(wd->scr, h_pagenumber, v_pagenumber);
+}
+
+void
+_elm_genlist_item_unrealize(Elm_Genlist_Item *it,
++=======
+ elm_smart_scroller_page_bring_in(wd->scr, h_pagenumber, v_pagenumber);
+ }
+
+ void
+ _elm_genlist_item_unrealize(Elm_Gen_Item *it,
++>>>>>>> remotes/origin/upstream
Eina_Bool calc)
{
Evas_Object *content;
if (!it->realized) return;
if (it->wd->reorder_it == it) return;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
evas_event_freeze(evas_object_evas_get(WIDGET(it)));
if (!calc)
evas_object_smart_callback_call(WIDGET(it), SIG_UNREALIZED, it);
EINA_LIST_FREE(it->content_objs, content)
evas_object_del(content);
++<<<<<<< HEAD
+ _item_unrealize(it, EINA_FALSE);//it->unrealize_cb(it); //upstream
++=======
+ it->unrealize_cb(it);
++>>>>>>> remotes/origin/upstream
it->realized = EINA_FALSE;
it->want_unrealize = EINA_FALSE;
}
void
++<<<<<<< HEAD
+_elm_genlist_item_del_notserious(Elm_Genlist_Item *it)
+{
+ elm_widget_item_pre_notify_del(it);
+ it->generation = it->wd->generation - 1; /* This means that the item is deleted */
+
+ if (it->walking) return; /* func.del is called twice when it->func.func is _elm_widget_item_del*/
++=======
+ _elm_genlist_item_del_notserious(Elm_Gen_Item *it)
+ {
+ elm_widget_item_pre_notify_del(it);
+ it->generation = it->wd->generation - 1; /* This means that the item is deleted */
++>>>>>>> remotes/origin/upstream
if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it);
if (it->itc->func.del)
}
void
++<<<<<<< HEAD
+_elm_genlist_item_del_serious(Elm_Genlist_Item *it)
++=======
+ _elm_genlist_item_del_serious(Elm_Gen_Item *it)
++>>>>>>> remotes/origin/upstream
{
_elm_genlist_item_del_notserious(it);
it->wd->items = eina_inlist_remove(it->wd->items, EINA_INLIST_GET(it));
it->tooltip.del_cb((void *)it->tooltip.data, WIDGET(it), it);
it->wd->walking -= it->walking;
if (it->long_timer) ecore_timer_del(it->long_timer);
++<<<<<<< HEAD
+ if (it->flags & ELM_GENLIST_ITEM_GROUP)
+ it->wd->group_items = eina_list_remove(it->wd->group_items, it);
+
+/*
++=======
+ if (it->group)
+ it->wd->group_items = eina_list_remove(it->wd->group_items, it);
+
++>>>>>>> remotes/origin/upstream
if (it->wd->state)
{
eina_inlist_sorted_state_free(it->wd->state);
it->wd->state = NULL;
}
++<<<<<<< HEAD
+*/
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
- it->wd->calc_job = ecore_job_add(it->wd->calc_cb, it->wd);
- free(it->item);
+ it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
+ //free(it->item); //upstream
- it->item = NULL;
- if (it->wd->last_selected_item == (Elm_Object_Item *)it)
+ //it->item = NULL; //upstream
+ if (it->wd->last_selected_item == (Elm_Object_Item *) it)
it->wd->last_selected_item = NULL;
- it->wd->item_count--;
}
EAPI void
-elm_genlist_tree_effect_enabled_set(Evas_Object *obj, Eina_Bool enabled)
+elm_genlist_item_move_after(Elm_Object_Item *it __UNUSED__, Elm_Object_Item *after __UNUSED__)
{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- if (!wd) return;
- wd->tree_effect_enabled = !!enabled;
+ return;
+}
+
+EAPI void
+elm_genlist_item_move_before(Elm_Object_Item *it __UNUSED__, Elm_Object_Item *before __UNUSED__)
+{
+ return;
+}
+
+EAPI void
+elm_genlist_effect_set(const Evas_Object *obj, Eina_Bool emode)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->effect_mode = emode;
+ // wd->point_rect = evas_object_rectangle_add(evas_object_evas_get(wd->obj));
+ // evas_object_resize(wd->point_rect, 10, 25);
+ // evas_object_color_set(wd->point_rect, 255, 0, 0, 130);
+ // evas_object_show(wd->point_rect);
+ // evas_object_hide(wd->point_rect);
++=======
++ if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
++ it->wd->calc_job = ecore_job_add(it->wd->calc_cb, it->wd);
++ free(it->item);
++
++ it->item = NULL;
++ if (it->wd->last_selected_item == (Elm_Object_Item *)it)
++ it->wd->last_selected_item = NULL;
++ it->wd->item_count--;
++}
++
++EAPI void
++elm_genlist_tree_effect_enabled_set(Evas_Object *obj, Eina_Bool enabled)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ if (!wd) return;
++ wd->tree_effect_enabled = !!enabled;
+ }
+
+ EAPI Eina_Bool
+ elm_genlist_tree_effect_enabled_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->tree_effect_enabled;
++>>>>>>> remotes/origin/upstream
}
static Evas_Object*
evas_object_color_set(bg,0,0,0,0);
evas_object_resize(bg , ow, oh);
evas_object_move(bg , ox, oy);
++<<<<<<< HEAD
+ evas_object_show(bg);
+ evas_object_hide(bg);
+ return bg ;
+}
+
+static unsigned int
+current_time_get()
+{
+ struct timeval timev;
+
+ gettimeofday(&timev, NULL);
+ return ((timev.tv_sec * 1000) + ((timev.tv_usec) / 1000));
+}
+
+// added for item moving animation.
+static Eina_Bool
+_item_moving_effect_timer_cb(void *data)
+{
+ Widget_Data *wd = data;
+ if (!wd) return EINA_FALSE;
+ Item_Block *itb;
+ Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+ Elm_Genlist_Item *it = NULL, *it2;
+ const Eina_List *l;
+ double time = 0.5, t;
+ int y, dy;
+ Eina_Bool check, end = EINA_FALSE, vis = EINA_TRUE;
+ int in = 0;
+
+ t = ((0.0 > (t = current_time_get() - wd->start_time)) ? 0.0 : t) / 1000;
+
+ evas_object_geometry_get(wd->pan_smart, &ox, &oy, &ow, &oh);
+ evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), &cvx, &cvy, &cvw, &cvh);
+ if (t > time) end = EINA_TRUE;
+
+ // Below while statement is needed, when the genlist is resized.
+ it2 = wd->expanded_item;
+ while (it2 && vis)
+ {
+ evas_object_move(VIEW(it2), it2->scrl_x, it2->scrl_y);
+ vis = (ELM_RECTS_INTERSECT(it2->scrl_x, it2->scrl_y, it2->w, it2->h,
+ cvx, cvy, cvw, cvh));
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it2);
+ }
+ if (wd->expanded_next_item)
+ {
+ Item_Block *itb2;
+ it2 = wd->expanded_next_item;
+ itb2 = wd->expanded_next_item->block;
+ if ((wd->expanded_move_effect_set) && (!(ELM_RECTS_INTERSECT(itb2->x - wd->pan_x + ox,
+ itb2->y - wd->pan_y + oy,
+ itb2->w, itb2->h,
+ cvx, cvy, cvw, cvh))))
+ {
+ _item_block_position(itb2, 0);
+ wd->expanded_move_effect_set = EINA_FALSE;
+ }
+ }
+ else
+ {
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) wd->expanded_item);
+ }
+ while (it2)
+ {
+ if (wd->expanded_item->expanded_depth >= it2->expanded_depth) break;
+ it2 = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ }
+ dy = 0;
+ if (it2)
+ {
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND)
+ dy = ((it2->scrl_y > cvy + cvh) ? cvy + cvh : it2->scrl_y) - it2->old_scrl_y;
+ else if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT)
+ dy = wd->expand_item_gap;
+
+ if (t <= time)
+ {
+ y = ((1 - (1 - (t / time)) * (1 - (t /time))) * dy);
+ }
+ else
+ {
+ end = EINA_TRUE;
+ y = dy;
+ }
+
+ check = EINA_FALSE;
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ itb->w = wd->minw;
+ if (ELM_RECTS_INTERSECT(itb->x - wd->pan_x + ox,
+ itb->y - wd->pan_y + oy,
+ itb->w, itb->h,
+ cvx, cvy, cvw, cvh))
+ {
+ EINA_LIST_FOREACH(itb->items, l, it)
+ {
+ if (it == it2) check = EINA_TRUE;
+ if (!check) continue;
+
+ if (!it->old_scrl_y)
+ it->old_scrl_y = it->scrl_y;
+ if (it->old_scrl_y + y < oy + oh)
+ {
+ if (!it->realized) _item_realize(it, in, 0);
+ }
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE && it->old_scrl_y + y < it->scrl_y)
+ it->old_scrl_y = it->scrl_y - y;
+ in++;
+
+ if (wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE ||
+ (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE && it->old_scrl_y + y >= it->scrl_y))
+ {
+ if (wd->edit_mode) _effect_item_controls(it, it->scrl_x, it->old_scrl_y + y);
+ else
+ {
+ evas_object_resize(VIEW(it), it->w, it->h);
+ evas_object_move(VIEW(it), it->scrl_x, it->old_scrl_y + y);
+ evas_object_show(VIEW(it));
+ evas_object_raise(VIEW(it));
+ }
+
+ if (it->group_item) evas_object_raise(it->group_item->base.view);
+ }
+ }
+ }
+ }
+
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND)
+ {
+ it = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it2);
+ while (it)
+ {
+ if (it->expanded_depth <= it2->expanded_depth) break;
+ if (it->scrl_y && (it->scrl_y < it2->old_scrl_y + y) && (it->expanded_depth > it2->expanded_depth))
+ {
+ if (!it->effect_done)
+ {
+ edje_object_signal_emit(VIEW(it), "flip_item", "");
+ evas_object_show(VIEW(it));
+ it->effect_done = EINA_TRUE;
+ }
+ }
+ it = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it);
+ }
+ }
+ else if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT)
+ {
+ it = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it2);
+ while (it)
+ {
+ if ((it->scrl_y > it2->old_scrl_y + y) && (it->expanded_depth > it2->expanded_depth))
+ {
+ if (!it->effect_done)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,hide", "");
+ it->effect_done = EINA_TRUE;
+ }
+ }
+ else
+ break;
+ it = (Elm_Genlist_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it);
+ }
+ }
+ }
+ else
+ {
+ int expand_num = 0;
+ int expand_order = 0;
+ if (wd->expanded_item) it = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) wd->expanded_item);
+ while (it)
+ {
+ expand_num++;
+ it = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it);
+ }
+ if (wd->expanded_item) it = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) wd->expanded_item);
+ while (it)
+ {
+ expand_order++;
+ if (wd->expanded_item->expanded_depth >= it->expanded_depth) break;
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND)
+ {
+ if (!it->effect_done)
+ {
+ if (t >= (((expand_order - 1) * time) / expand_num))
+ {
+ edje_object_signal_emit(VIEW(it), "flip_item", "");
+ evas_object_show(VIEW(it));
+ it->effect_done = EINA_TRUE;
+ }
+ }
+ }
+ it = (Elm_Genlist_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it);
+ }
+ }
+
+ if (end)
+ {
+ if (wd->item_moving_effect_timer)
+ {
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT)
+ _item_subitems_clear(wd->expanded_item);
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ EINA_LIST_FOREACH(itb->items, l, it)
+ {
+ it->effect_done = EINA_TRUE;
+ it->old_scrl_y = it->scrl_y;
+ }
+ }
+ }
+ wd->item_moving_effect_timer = NULL;
+ wd->expanded_move_effect_set = EINA_FALSE;
+
+ _item_auto_scroll(wd);
+ evas_object_lower(wd->alpha_bg);
+ evas_object_hide(wd->alpha_bg);
+ elm_smart_scroller_bounce_animator_disabled_set(wd->scr, EINA_FALSE);
+ wd->move_effect_mode = ELM_GENLIST_ITEM_MOVE_EFFECT_NONE;
+
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ evas_object_smart_callback_call(wd->obj, "effect_done", NULL);
+ evas_object_smart_changed(wd->pan_smart);
+ return ECORE_CALLBACK_CANCEL;
+ }
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void
+_emit_contract(Elm_Genlist_Item *it)
+{
+ Elm_Genlist_Item *it2;
+ Eina_List *l;
+
+ edje_object_signal_emit(VIEW(it), "elm,state,contract_flip", "");
+ it->effect_done = EINA_FALSE;
+
+ EINA_LIST_FOREACH(it->items, l, it2)
+ if (it2)
+ _emit_contract(it2);
+}
+
+// added for item moving animation.
+static int
+_item_flip_effect_show(Elm_Genlist_Item *it)
+{
+ Elm_Genlist_Item *it2;
+ Eina_List *l;
+ Widget_Data *wd = it->wd;
+
+ EINA_LIST_FOREACH(it->items, l, it2)
+ {
+ if (it2->parent && it == it2->parent)
+ {
+ if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_EXPAND)
+ edje_object_signal_emit(it2->base.view, "elm,state,hide", "");
+ else if (wd->move_effect_mode == ELM_GENLIST_ITEM_MOVE_EFFECT_CONTRACT)
+ _emit_contract(it2);
+ }
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+/*
+static void
+_elm_genlist_pinch_zoom_execute(Evas_Object *obj, Eina_Bool emode)
+{
+ printf("!!! NOW FIXING \n");
+}
+*/
+
+/**
+ * Set pinch zoom mode
+ *
+ * @param obj The genlist object
+ * @param emode
+ * (EINA_TRUE = pinch contract (zoom in), EINA_FALSE = pinch expand (zoom out)
+ *
+ * @ingroup Genlist
+ */
+EAPI void
+elm_genlist_pinch_zoom_mode_set(Evas_Object *obj __UNUSED__, Eina_Bool emode __UNUSED__)
+{
+ printf("!!! NOW FIXING \n");
+}
+
+/**
+ * Get pinch zoom mode
+ *
+ * @param obj The genlist object
+ * @return The pinch mode
+ * (EINA_TRUE = pinch contract (zoom in), EINA_FALSE = pinch expand (zoom out)
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool
+elm_genlist_pinch_zoom_mode_get(const Evas_Object *obj __UNUSED__)
+{
+ printf("!!! NOW FIXING \n");
+ return EINA_FALSE;
+}
+
+EAPI void
+elm_genlist_pinch_zoom_set(Evas_Object *obj __UNUSED__, Eina_Bool emode __UNUSED__)
+{
+ printf("!!! NOW FIXING \n");
+}
+
+
+////////////////////////////////////////////////////////////////////////
+// EDIT MODE
+////////////////////////////////////////////////////////////////////////
+
+static void
+_effect_item_controls(Elm_Genlist_Item *it, int itx, int ity)
+{
+ if (!it->wd->edit_mode) return;
+ evas_object_resize(it->edit_obj,it->w, it->h);
+ evas_object_move(it->edit_obj, itx, ity);
+}
+
+static void
+_effect_item_realize(Elm_Genlist_Item *it, Eina_Bool effect_on)
+{
+ if ((it->effect_item_realized) || (it->generation < it->wd->generation)) return;
+ char buf[1024];
+
+ if (it->mode_view)
+ _mode_finished_signal_cb(it, (Evas_Object *)elm_genlist_item_object_get((Elm_Object_Item *) it), NULL, NULL);
+
+ it->edit_obj = edje_object_add(evas_object_evas_get(WIDGET(it)));
+ edje_object_scale_set(it->edit_obj, elm_widget_scale_get(WIDGET(it)) *
+ _elm_config->scale);
+ evas_object_smart_member_add(it->edit_obj, it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), it->edit_obj);
+
+ if (it->flags & ELM_GENLIST_ITEM_SUBITEMS) strncpy(buf, "tree", sizeof(buf));
+ else strncpy(buf, "item", sizeof(buf));
+ if (it->wd->compress) strncat(buf, "_compress", sizeof(buf) - strlen(buf));
+
+ strncat(buf, "/", sizeof(buf) - strlen(buf));
+
+ if (it->itc->edit_item_style && strcmp(it->itc->edit_item_style, "default"))
+ {
+ strncat(buf, it->itc->edit_item_style, sizeof(buf) - strlen(buf));
+ _elm_theme_object_set(WIDGET(it), it->edit_obj, "genlist", buf, elm_widget_style_get(WIDGET(it)));
+ }
+ else
+ {
+ _elm_theme_object_set(WIDGET(it), it->edit_obj, "genlist", "item/edit_default", elm_widget_style_get(WIDGET(it)));
+ }
+
+ if (it->wd->reorder_mode)
+ {
+ if (effect_on) edje_object_signal_emit(it->edit_obj, "elm,state,reorder_enabled_effect", "elm");
+ else edje_object_signal_emit(it->edit_obj, "elm,state,reorder_enabled", "elm");
+ }
+ if (effect_on) edje_object_signal_emit(it->edit_obj, "elm,state,emode_enabled_effect", "elm");
+ else edje_object_signal_emit(it->edit_obj, "elm,state,emode_enabled", "elm");
+
+ if (elm_widget_item_disabled_get(it)) edje_object_signal_emit(it->edit_obj, "elm,state,disabled", "elm");
+ else edje_object_signal_emit(it->edit_obj, "elm,state,enabled", "elm");
+
+
+ if ((it->wd->edit_mode))
+ {
+ if (it->itc->func.content_get)
+ {
+ const Eina_List *l;
+ const char *key;
+
+ if (it->renamed) edje_object_signal_emit(it->edit_obj, "elm,state,rename,enabled", "elm");
+ it->contents = elm_widget_stringlist_get(edje_object_data_get(it->edit_obj, "edit_contents"));
+ EINA_LIST_FOREACH(it->contents, l, key)
+ {
+ Evas_Object *ic = it->itc->func.content_get
+ ((void *)it->base.data, WIDGET(it), l->data);
+
+ if (ic)
+ {
+ it->edit_content_objs = eina_list_append(it->edit_content_objs, ic);
+ edje_object_part_swallow(it->edit_obj, key, ic);
+ evas_object_show(ic);
+ elm_widget_sub_object_add(WIDGET(it), ic);
+ if (elm_widget_item_disabled_get(it))
+ elm_widget_disabled_set(ic, EINA_TRUE);
+ }
+ }
+ }
+ }
+ edje_object_part_swallow(it->edit_obj, "original_edc", VIEW(it));
+ _effect_item_controls(it,it->scrl_x, it->scrl_y);
+ evas_object_show(it->edit_obj);
+
+ it->effect_item_realized = EINA_TRUE;
+ it->want_unrealize = EINA_FALSE;
+}
+
+static void
+_effect_item_unrealize(Elm_Genlist_Item *it)
+{
+ Evas_Object *content;
+
+ if (!it->effect_item_realized) return;
+ if (it->wd->reorder_it && it->wd->reorder_it == it) return;
+
+ edje_object_signal_emit(it->edit_obj, "elm,state,reorder_disable_effect", "elm");
+ edje_object_signal_emit(it->edit_obj, "elm,state,sel,disable", "elm");
+ edje_object_message_signal_process(it->edit_obj);
+ edje_object_part_unswallow(it->edit_obj, VIEW(it));
+ evas_object_smart_member_add(VIEW(it), it->wd->pan_smart);
+ elm_widget_sub_object_add(WIDGET(it), VIEW(it));
+ // evas_object_smart_callback_call(it->edit_obj, "unrealized", it);
+ // _item_cache_add(it);
+ evas_object_del(it->edit_obj);
+ it->edit_obj = NULL;
+ EINA_LIST_FREE(it->edit_content_objs, content)
+ evas_object_del(content);
+
+// edje_object_signal_emit(it->edit_obj, "elm,state,edit_end,disable", "elm");
+ it->effect_item_realized = EINA_FALSE;
+}
+
+/**
+ * Get Genlist edit mode
+ *
+ * @param obj The genlist object
+ * @return The edit mode status
+ * (EINA_TRUE = edit mode, EINA_FALSE = normal mode
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool
+elm_genlist_edit_mode_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ if (wd->edit_mode) return EINA_TRUE;
+ else return EINA_FALSE;
+}
+
+/**
+ * Set Genlist edit mode
+ *
+ * This sets Genlist edit mode.
+ *
+ * @param obj The Genlist object
+ * @param emode ELM_GENLIST_EDIT_MODE_{NONE & REORDER & INSERT & DELETE & SELECT & SELECT_ALL}
+ * @param edit_class Genlist edit class (Elm_Genlist_Edit_Class structure)
+ *
+ * @ingroup Genlist
+ */
+EAPI void
+elm_genlist_edit_mode_set(Evas_Object *obj, Eina_Bool edit_mode)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Item_Block *itb;
+ Eina_List *l;
+ Elm_Genlist_Item *it;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->edit_mode == edit_mode) return;
+
+ wd->edit_mode = edit_mode;
+ if (!wd->edit_mode)
+ {
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ if (itb->realized)
+ {
+ EINA_LIST_FOREACH(itb->items, l, it)
+ {
+ if (it->flags != ELM_GENLIST_ITEM_GROUP && it->realized)
+ {
+ _effect_item_unrealize(it);
+ }
+ }
+ }
+ }
+ _item_cache_zero(wd);
+ }
+ else
+ {
+
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ if (itb->realized)
+ {
+ EINA_LIST_FOREACH(itb->items, l, it)
+ {
+ if (it->flags != ELM_GENLIST_ITEM_GROUP && it->realized)
+ {
+ if(it->selected) _item_unselect(it);
+ if (it->itc->edit_item_style) _effect_item_realize(it, EINA_TRUE);
+ }
+ }
+ }
+ }
+ }
+
+ if (wd->calc_job) ecore_job_del(wd->calc_job);
+ wd->calc_job = ecore_job_add(_calc_job, wd);
+}
+
+/**
+ * Set a given item's rename mode
+ *
+ * This renames the item's text from genlist
+ *
+ * @param it The item
+ * @param renamed set if emode is EINA_TRUE, unset if emode is EINA_FALSE
+ *
+ * @ingroup Genlist
+ */
+EAPI void
+elm_genlist_item_rename_mode_set(Elm_Object_Item *it, Eina_Bool renamed)
+{
+ if (!it) return;
+ Elm_Genlist_Item *_it = (Elm_Genlist_Item *) it;
+
+ if (renamed)
+ {
+ _item_unrealize(_it, EINA_FALSE);
+ _it->renamed = EINA_TRUE;
+ _it->wd->rename_it = _it;
+ _it->nocache = EINA_TRUE;
+ if (_it->selected) _item_unselect(_it);
+
+ if (_it->wd->calc_job) ecore_job_del(_it->wd->calc_job);
+ _it->wd->calc_job = ecore_job_add(_calc_job, _it->wd);
+ }
+ else
+ {
+ if (_it->renamed)
+ {
+ _it->renamed = EINA_FALSE;
+ _it->nocache = EINA_TRUE;
+ _it->wd->rename_it = NULL;
+ _item_cache_zero(_it->wd);
+ elm_genlist_item_update(it);
+ }
+ }
+}
+
+EAPI Eina_Bool
+elm_genlist_item_rename_mode_get(Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ return ((Elm_Genlist_Item *) it)->renamed;
+}
+
+EAPI void
+elm_genlist_item_no_select_mode_set(Elm_Object_Item *it,
+ Eina_Bool no_select)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ ((Elm_Genlist_Item *) it)->no_select = no_select;
+}
+
+EAPI Eina_Bool
+elm_genlist_item_no_select_mode_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ return ((Elm_Genlist_Item *) it)->no_select;
++=======
+ return bg ;
+ }
+
+ static void
+ _item_contract_emit(Elm_Gen_Item *it)
+ {
+ Elm_Gen_Item *it2;
+ Eina_List *l;
+
+ edje_object_signal_emit(VIEW(it), "elm,state,contract_flip", "");
+ it->item->tree_effect_finished = EINA_FALSE;
+
+ EINA_LIST_FOREACH(it->item->items, l, it2)
+ if (it2) _item_contract_emit(it2);
+ }
+
+ static int
+ _item_tree_effect_before(Elm_Gen_Item *it)
+ {
+ Elm_Gen_Item *it2;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(it->item->items, l, it2)
+ {
+ if (it2->parent && (it == it2->parent))
+ {
+ if (it->wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_EXPAND)
+ edje_object_signal_emit(VIEW(it2), "elm,state,hide", "");
+ else if (it->wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_CONTRACT)
+ _item_contract_emit(it2);
+ }
+ }
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ static void
+ _item_tree_effect(Widget_Data *wd, int y)
+ {
+ Elm_Gen_Item *it = NULL, *expanded_next_it;
+
+ expanded_next_it = wd->expanded_next_item;
+
+ if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_EXPAND)
+ {
+ it = (Elm_Gen_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) expanded_next_it);
+ while (it)
+ {
+ if (it->item->expanded_depth <= expanded_next_it->item->expanded_depth) break;
+ if (it->item->scrl_y && (it->item->scrl_y < expanded_next_it->item->old_scrl_y + y) &&
+ (it->item->expanded_depth > expanded_next_it->item->expanded_depth))
+ {
+ if (!it->item->tree_effect_finished)
+ {
+ edje_object_signal_emit(VIEW(it), "flip_item", "");
+ evas_object_show(VIEW(it));
+ it->item->tree_effect_finished = EINA_TRUE;
+ }
+ }
+ it = (Elm_Gen_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it);
+ }
+ }
+ else if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_CONTRACT)
+ {
+ it = (Elm_Gen_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) expanded_next_it);
+ while (it)
+ {
+ if ((it->item->scrl_y > expanded_next_it->item->old_scrl_y + y) &&
+ (it->item->expanded_depth > expanded_next_it->item->expanded_depth))
+ {
+ if (!it->item->tree_effect_finished)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,hide", "");
+ it->item->tree_effect_finished = EINA_TRUE;
+ }
+ }
+ else
+ break;
+ it = (Elm_Gen_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it);
+ }
+ }
+ }
+
+ static void
+ _item_tree_effect_finish(Widget_Data *wd)
+ {
+ Item_Block *itb;
+ Elm_Gen_Item *it = NULL;
+ const Eina_List *l;
+
+ if (wd->item_moving_effect_timer)
+ {
+ if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_CONTRACT)
+ _item_subitems_clear(wd->expanded_item);
+ EINA_INLIST_FOREACH(wd->blocks, itb)
+ {
+ EINA_LIST_FOREACH(itb->items, l, it)
+ {
+ it->item->tree_effect_finished = EINA_TRUE;
+ it->item->old_scrl_y = it->item->scrl_y;
+ }
+ }
+ }
+ _item_auto_scroll(wd);
+ evas_object_lower(wd->alpha_bg);
+ evas_object_hide(wd->alpha_bg);
+ wd->move_effect_mode = ELM_GENLIST_TREE_EFFECT_NONE;
+ if (wd->move_items) wd->move_items = eina_list_free(wd->move_items);
+
+ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+ evas_object_smart_callback_call(wd->obj, SIG_TREE_EFFECT_FINISHED, NULL);
+ evas_object_smart_changed(wd->pan_smart);
+
+ wd->item_moving_effect_timer = NULL;
+ }
+
+ static Eina_Bool
+ _item_moving_effect_timer_cb(void *data)
+ {
+ Widget_Data *wd = data;
+ if (!wd) return EINA_FALSE;
+ Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
+ Elm_Gen_Item *it = NULL, *it2, *expanded_next_it;
+ const Eina_List *l;
+ double effect_duration = 0.5, t;
+ int y = 0, dy = 0, dh = 0;
+ Eina_Bool end = EINA_FALSE, vis = EINA_TRUE;
+ int in = 0;
+
+ t = ((0.0 > (t = ecore_time_get() - wd->start_time)) ? 0.0 : t);
+ evas_object_geometry_get(wd->pan_smart, &ox, &oy, &ow, &oh);
+ evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), &cvx, &cvy, &cvw, &cvh);
+ if (t > effect_duration) end = EINA_TRUE;
+
+ // Below while statement is needed, when the genlist is resized.
+ it2 = wd->expanded_item;
+ while (it2 && vis)
+ {
+ evas_object_move(VIEW(it2), it2->item->scrl_x, it2->item->scrl_y);
+ vis = (ELM_RECTS_INTERSECT(it2->item->scrl_x, it2->item->scrl_y, it2->item->w, it2->item->h,
+ cvx, cvy, cvw, cvh));
+ it2 = (Elm_Gen_Item *) elm_genlist_item_prev_get((Elm_Object_Item *) it2);
+ }
+
+ if (wd->expanded_next_item)
+ {
+ expanded_next_it = wd->expanded_next_item;
+
+ /* move items */
+ EINA_LIST_FOREACH(wd->move_items, l, it)
+ {
+ if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_EXPAND)
+ {
+ expanded_next_it->item->old_scrl_y = wd->expanded_item->item->old_scrl_y + wd->expanded_item->item->h;
+ if (expanded_next_it->item->scrl_y < expanded_next_it->item->old_scrl_y) //did not calculate next item position
+ expanded_next_it->item->scrl_y = cvy + cvh;
+
+ dy = ((expanded_next_it->item->scrl_y >= (cvy + cvh)) ?
+ cvy + cvh : expanded_next_it->item->scrl_y) -
+ expanded_next_it->item->old_scrl_y;
+ }
+ else if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_CONTRACT)
+ {
+ if (expanded_next_it->item->scrl_y > expanded_next_it->item->old_scrl_y) //did not calculate next item position
+ expanded_next_it->item->old_scrl_y = cvy + cvh;
+
+ if (expanded_next_it->item->old_scrl_y > (cvy + cvh))
+ {
+ dy = (wd->expanded_item->item->scrl_y + wd->expanded_item->item->h) -
+ cvy + cvh;
+ expanded_next_it->item->old_scrl_y = cvy + cvh;
+ }
+ else
+ {
+ dy = (wd->expanded_item->item->scrl_y + wd->expanded_item->item->h) -
+ expanded_next_it->item->old_scrl_y;
+ }
+ }
+
+ if (t <= effect_duration)
+ {
+ y = ((1 - (1 - (t / effect_duration)) * (1 - (t /effect_duration))) * dy);
+ }
+ else
+ {
+ end = EINA_TRUE;
+ y = dy;
+ }
+
+ if (!it->realized)
+ {
+ _item_realize(it, in, 0);
+ }
+ in++;
+
+ if (it != expanded_next_it)
+ {
+ it->item->old_scrl_y = expanded_next_it->item->old_scrl_y + expanded_next_it->item->h + dh;
+ dh += it->item->h;
+ }
+
+ if ((it->item->old_scrl_y + y) < (cvy + cvh))
+ _item_position(it, VIEW(it),it->item->scrl_x, it->item->old_scrl_y + y);
+ }
+ /* tree effect */
+ _item_tree_effect(wd, y);
+ }
+ else
+ {
+ int expanded_item_num = 0;
+ int num = 0;
+
+ if (wd->expanded_item)
+ it = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) wd->expanded_item);
+
+ it2 = it;
+ while (it2)
+ {
+ expanded_item_num++;
+ it2 = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it2);
+ }
+
+ while (it)
+ {
+ num++;
+ if (wd->expanded_item->item->expanded_depth >= it->item->expanded_depth) break;
+ if (wd->move_effect_mode == ELM_GENLIST_TREE_EFFECT_EXPAND)
+ {
+ if (!it->item->tree_effect_finished)
+ {
+ if (t >= (((num - 1) * effect_duration) / expanded_item_num))
+ {
+ edje_object_signal_emit(VIEW(it), "flip_item", "");
+ evas_object_show(VIEW(it));
+ it->item->tree_effect_finished = EINA_TRUE;
+ }
+ }
+ }
+ it = (Elm_Gen_Item *) elm_genlist_item_next_get((Elm_Object_Item *) it);
+ }
+ }
+
+ if (end)
+ {
+ _item_tree_effect_finish(wd);
+ return ECORE_CALLBACK_CANCEL;
+ }
+ return ECORE_CALLBACK_RENEW;
++>>>>>>> remotes/origin/upstream
}
* - @c item_style - This is a constant string and simply defines the name
* of the item style. It @b must be specified and the default should be @c
* "default".
- *
++<<<<<<< HEAD
++ *
++=======
+ * - @c mode_item_style - This is a constant string and simply defines the name
+ * of the mode item style. It is used to specify mode item style. It can be
+ * used to set sweep mode.
+ * - @c edit_item_style - This is a constant string and simply defines the name
+ * of the edit item style. It is used to specify edit item style. It can be
+ * used to set selection, checking and deletion mode.
++>>>>>>> remotes/origin/upstream
* - @c func - A struct with pointers to functions that will be called when
* an item is going to be actually created. All of them receive a @c data
* parameter that will point to the same data passed to
* - @c func.state_get - The @c part parameter is the name string of one of
* the state parts in the Edje group implementing the item's theme. Return
* @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will
++<<<<<<< HEAD
+ * emit a signal to its theming Edje object with @c "elm,state,XXX,active"
+ * and @c "elm" as "emission" and "source" arguments, respectively, when
+ * the state is true (the default is false), where @c XXX is the name of
++=======
+ * emit a signal to its theming Edje object with @c "elm,state,xxx,active"
+ * and @c "elm" as "emission" and "source" arguments, respectively, when
+ * the state is true (the default is false), where @c xxx is the name of
++>>>>>>> remotes/origin/upstream
* the (state) part. See #Elm_Genlist_Item_State_Get_Cb.
* - @c func.del - This is intended for use when genlist items are deleted,
* so any data attached to the item (e.g. its data parameter on creation)
* Items can be added by several calls. All of them return a @ref
* Elm_Object_Item handle that is an internal member inside the genlist.
* They all take a data parameter that is meant to be used for a handle to
++<<<<<<< HEAD
+ * the applications internal data (eg the struct with the original item
+ * data). The parent parameter is the parent genlist item this belongs to if
+ * it is a tree or an indexed group, and NULL if there is no parent. The
+ * flags can be a bitmask of #ELM_GENLIST_ITEM_NONE,
+ * #ELM_GENLIST_ITEM_SUBITEMS and #ELM_GENLIST_ITEM_GROUP. If
+ * #ELM_GENLIST_ITEM_SUBITEMS is set then this item is displayed as an item
++=======
+ * the applications internal data (eg. the struct with the original item
+ * data). The parent parameter is the parent genlist item this belongs to if
+ * it is a tree or an indexed group, and NULL if there is no parent. The
+ * flags can be a bitmask of #ELM_GENLIST_ITEM_NONE,
+ * #ELM_GENLIST_ITEM_TREE and #ELM_GENLIST_ITEM_GROUP. If
+ * #ELM_GENLIST_ITEM_TREE is set then this item is displayed as an item
++>>>>>>> remotes/origin/upstream
* that is able to expand and have child items. If ELM_GENLIST_ITEM_GROUP
* is set then this item is group index item that is displayed at the top
* until the next group comes. The func parameter is a convenience callback
* let you know which item is the parent (and thus know how to skip them if
* wanted).
*
++<<<<<<< HEAD
+ * @section Genlist_Muti_Selection Multi-selection
++=======
+ * @section Genlist_Multi_Selection Multi-selection
++>>>>>>> remotes/origin/upstream
*
* If the application wants multiple items to be able to be selected,
* elm_genlist_multi_select_set() can enable this. If the list is
*
* @section Genlist_Usage_Hints Usage hints
*
++<<<<<<< HEAD
+ * There are also convenience functions. elm_genlist_item_genlist_get() will
++=======
+ * There are also convenience functions. elm_object_item_widget_get() will
++>>>>>>> remotes/origin/upstream
* return the genlist object the item belongs to. elm_genlist_item_show()
* will make the scroller scroll to show that specific item so its visible.
* elm_object_item_data_get() returns the data pointer set by the item
* elm_object_item_disabled_get() to get the disabled state.
*
* In general to indicate how the genlist should expand items horizontally to
++<<<<<<< HEAD
+ * fill the list area, use elm_genlist_horizontal_set(). Valid modes are
++=======
+ * fill the list area, use elm_genlist_mode_set(). Valid modes are
++>>>>>>> remotes/origin/upstream
* ELM_LIST_LIMIT and ELM_LIST_SCROLL. The default is ELM_LIST_SCROLL. This
* mode means that if items are too wide to fit, the scroller will scroll
* horizontally. Otherwise items are expanded to fill the width of the
*
* Items will only call their selection func and callback when first becoming
* selected. Any further clicks will do nothing, unless you enable always
++<<<<<<< HEAD
+ * select with elm_genlist_always_select_mode_set(). This means even if
+ * selected, every click will make the selected callbacks be called.
+ * elm_genlist_no_select_mode_set() will turn off the ability to select
+ * items entirely and they will neither appear selected nor call selected
+ * callback functions.
++=======
+ * select with elm_genlist_select_mode_set() as ELM_OBJECT_SELECT_MODE_ALWAYS.
+ * This means even if selected, every click will make the selected callbacks
+ * be called. elm_genlist_select_mode_set() as ELM_OBJECT_SELECT_MODE_NONE will
+ * turn off the ability to select items entirely and they will neither
+ * appear selected nor call selected callback functions.
++>>>>>>> remotes/origin/upstream
*
* Remember that you can create new styles and add your own theme augmentation
* per application with elm_theme_extension_add(). If you absolutely must
* event_info parameter is the genlist item that was indicated to contract.
* - @c "realized" - This is called when the item in the list is created as a
* real evas object. event_info parameter is the genlist item that was
++<<<<<<< HEAD
+ * created. The object may be deleted at any time, so it is up to the
+ * caller to not use the object pointer from elm_genlist_item_object_get()
+ * in a way where it may point to freed objects.
++=======
+ * created.
++>>>>>>> remotes/origin/upstream
* - @c "unrealized" - This is called just before an item is unrealized.
* After this call content objects provided will be deleted and the item
* object itself delete or be put into a floating cache.
* being dragged.
* - @c "drag" - This is called when the item in the list is being dragged.
* - @c "longpressed" - This is called when the item is pressed for a certain
++<<<<<<< HEAD
+ * amount of time. By default it's 1 second.
++=======
+ * amount of time. By default it's 1 second. The event_info parameter is the
+ * longpressed genlist item.
++>>>>>>> remotes/origin/upstream
* - @c "scroll,anim,start" - This is called when scrolling animation has
* started.
* - @c "scroll,anim,stop" - This is called when scrolling animation has
* - @c "moved" - This is called when a genlist item is moved.
* - @c "language,changed" - This is called when the program's language is
* changed.
++<<<<<<< HEAD
++=======
+ * - @c "tree,effect,finished" - This is called when a genlist tree effect is finished.
++>>>>>>> remotes/origin/upstream
*
* Supported elm_object common APIs
* @li elm_object_signal_emit()
* @{
*/
++<<<<<<< HEAD
++=======
+ #define ELM_GENLIST_ITEM_CLASS_VERSION ELM_GEN_ITEM_CLASS_VERSION
+ #define ELM_GENLIST_ITEM_CLASS_HEADER ELM_GEN_ITEM_CLASS_HEADER
+
++>>>>>>> remotes/origin/upstream
/**
* Defines if the item is of any special type (has subitems or it's the
* index of a group), or is just a simple item.
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+typedef enum _Elm_Genlist_Item_Flags
+{
+ ELM_GENLIST_ITEM_NONE = 0, /**< simple item */
+ ELM_GENLIST_ITEM_SUBITEMS = (1 << 0), /**< may expand and have child items */
+ ELM_GENLIST_ITEM_GROUP = (1 << 1), /**< index of a group of items */
+
+ ELM_GENLIST_ITEM_MAX = (1 << 2)
+} Elm_Genlist_Item_Flags;
+
+ typedef enum _Elm_Genlist_Item_Field_Flags
+ {
+ ELM_GENLIST_ITEM_FIELD_ALL = 0,
+ ELM_GENLIST_ITEM_FIELD_TEXT = (1 << 0),
+ ELM_GENLIST_ITEM_FIELD_CONTENT = (1 << 1),
+ ELM_GENLIST_ITEM_FIELD_STATE = (1 << 2)
+ } Elm_Genlist_Item_Field_Flags;
+ typedef struct _Elm_Genlist_Item_Class Elm_Genlist_Item_Class; /**< Genlist item class definition structs */
+ typedef struct _Elm_Genlist_Item Elm_Genlist_Item; /**< Item of Elm_Genlist. Sub-type of Elm_Widget_Item */
+ typedef struct _Elm_Genlist_Item_Class_Func Elm_Genlist_Item_Class_Func;
+ typedef char *(*GenlistItemTextGetFunc) (void *data, Evas_Object *obj, const char *part);
+ typedef Evas_Object *(*GenlistItemContentGetFunc) (void *data, Evas_Object *obj, const char *part);
+ typedef Eina_Bool (*GenlistItemStateGetFunc) (void *data, Evas_Object *obj, const char *part);
+ typedef void (*GenlistItemDelFunc) (void *data, Evas_Object *obj);
+ typedef void (*GenlistItemMovedFunc) ( Evas_Object *genlist, Elm_Object_Item *item, Elm_Object_Item *rel_item, Eina_Bool move_after);
+
+ /**
+ * @struct _Elm_Genlist_Item_Class
+ *
+ * Genlist item class definition structs.
+ *
+ * This struct contains the style and fetching functions that will define the
+ * contents of each item.
+ *
+ * @see @ref Genlist_Item_Class
+ */
+ struct _Elm_Genlist_Item_Class
+ {
+ const char *item_style;
+ struct {
+ GenlistItemTextGetFunc text_get;
+ GenlistItemContentGetFunc content_get;
+ GenlistItemStateGetFunc state_get;
+ GenlistItemDelFunc del;
+ GenlistItemMovedFunc moved;
+ } func;
+ const char *edit_item_style;
+ const char *mode_item_style;
+ };
+#define Elm_Genlist_Item_Class_Func Elm_Gen_Item_Class_Func
++=======
+ typedef enum
+ {
+ ELM_GENLIST_ITEM_NONE = 0, /**< simple item */
+ ELM_GENLIST_ITEM_TREE = (1 << 0), /**< this may be expanded and have child items. */
+ ELM_GENLIST_ITEM_GROUP = (1 << 1), /**< an index item of a group of items. this item can have child items. */
+
+ ELM_GENLIST_ITEM_MAX = (1 << 2)
+ } Elm_Genlist_Item_Type;
+
+ /**
+ * Defines the type of the item part
+ * Used while updating item's parts
+ * It can be used at updating multi fields.
+ *
+ * @ingroup Genlist
+ */
+ typedef enum
+ {
+ ELM_GENLIST_ITEM_FIELD_ALL = 0,
+ ELM_GENLIST_ITEM_FIELD_TEXT = (1 << 0),
+ ELM_GENLIST_ITEM_FIELD_CONTENT = (1 << 1),
+ ELM_GENLIST_ITEM_FIELD_STATE = (1 << 2)
+ } Elm_Genlist_Item_Field_Type;
+
+ /**
+ * Defines where to position the item in the genlist.
+ *
+ * @ingroup Genlist
+ */
+ typedef enum
+ {
+ ELM_GENLIST_ITEM_SCROLLTO_NONE = 0, /**< no scrollto */
+ ELM_GENLIST_ITEM_SCROLLTO_IN = (1 << 0), /**< to the nearest viewport */
+ ELM_GENLIST_ITEM_SCROLLTO_TOP = (1 << 1), /**< to the top of viewport */
+ ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = (1 << 2) /**< to the middle of viewport */
+ } Elm_Genlist_Item_Scrollto_Type;
+
+ typedef enum
+ {
+ ELM_GENLIST_TREE_EFFECT_NONE = 0,
+ ELM_GENLIST_TREE_EFFECT_EXPAND = 1,
+ ELM_GENLIST_TREE_EFFECT_CONTRACT = 2
+ } Elm_Genlist_Item_Move_Effect_Mode;
+
+ /**
+ * @see Elm_Gen_Item_Class
+ */
+ typedef Elm_Gen_Item_Class Elm_Genlist_Item_Class;
+
+ /**
+ * @see Elm_Gen_Item_Text_Get_Cb
+ */
+ typedef Elm_Gen_Item_Text_Get_Cb Elm_Genlist_Item_Text_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_Content_Get_Cb
+ */
+ typedef Elm_Gen_Item_Content_Get_Cb Elm_Genlist_Item_Content_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_State_Get_Cb
+ */
+ typedef Elm_Gen_Item_State_Get_Cb Elm_Genlist_Item_State_Get_Cb;
+
+ /**
+ * @see Elm_Gen_Item_Del_Cb
+ */
+ typedef Elm_Gen_Item_Del_Cb Elm_Genlist_Item_Del_Cb;
+
++>>>>>>> remotes/origin/upstream
/**
* Add a new genlist widget to the given parent Elementary
* (container) object
* @param mode The mode to use (one of #ELM_LIST_SCROLL or #ELM_LIST_LIMIT).
*
* This sets the mode used for sizing items horizontally. Valid modes
++<<<<<<< HEAD
+ * are #ELM_LIST_LIMIT and #ELM_LIST_SCROLL. The default is
++=======
+ * are #ELM_LIST_LIMIT, #ELM_LIST_SCROLL, and #ELM_LIST_COMPRESS. The default is
++>>>>>>> remotes/origin/upstream
* ELM_LIST_SCROLL. This mode means that if items are too wide to fit,
* the scroller will scroll horizontally. Otherwise items are expanded
* to fill the width of the viewport of the scroller. If it is
* ELM_LIST_LIMIT, items will be expanded to the viewport width and
++<<<<<<< HEAD
+ * limited to that size.
++=======
+ * limited to that size. If it is ELM_LIST_COMPRESS, the item width will be
+ * fixed (restricted to a minimum of) to the list width when calculating its
+ * size in order to allow the height to be calculated based on it. This allows,
+ * for instance, text block to wrap lines if the Edje part is configured with
+ * "text.min: 0 1".
+ * @note ELM_LIST_COMPRESS will make list resize slower as it will have to
+ * recalculate every item height again whenever the list width
+ * changes!
+ * @note When ELM_LIST_COMPRESS mode is enabled, it also enables
+ * compress mode (see elm_genlist_compress_mode_set()) and
+ * disables homogeneous (see elm_genlist_homogeneous_set()).
++>>>>>>> remotes/origin/upstream
*
* @see elm_genlist_mode_get()
*
* @return The mode to use
* (#ELM_LIST_LIMIT, #ELM_LIST_SCROLL)
*
++<<<<<<< HEAD
+ * @see elm_genlist_horizontal_set()
++=======
+ * @see elm_genlist_mode_set()
++>>>>>>> remotes/origin/upstream
*
* @ingroup Genlist
*/
EAPI Elm_List_Mode elm_genlist_mode_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the always select mode.
+ *
+ * @param obj The genlist object
+ * @param always_select The always select mode (@c EINA_TRUE = on, @c
+ * EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * Items will only call their selection func and callback when first
+ * becoming selected. Any further clicks will do nothing, unless you
+ * enable always select with elm_genlist_always_select_mode_set().
+ * This means that, even if selected, every click will make the selected
+ * callbacks be called.
+ *
+ * @see elm_genlist_always_select_mode_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+/**
+ * Get the always select mode.
+ *
+ * @param obj The genlist object
+ * @return The always select mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_always_select_mode_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_always_select_mode_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable the no select mode.
+ *
+ * @param obj The genlist object
+ * @param no_select The no select mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * This will turn off the ability to select items entirely and they
+ * will neither appear selected nor call selected callback functions.
+ *
+ * @see elm_genlist_no_select_mode_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+/**
+ * Gets whether the no select mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The no select mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_no_select_mode_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_no_select_mode_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable compress mode.
+ *
+ * @param obj The genlist object
+ * @param compress The compress mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * This will enable the compress mode where items are "compressed"
+ * horizontally to fit the genlist scrollable viewport width. This is
+ * special for genlist. Do not rely on
+ * elm_genlist_horizontal_set() being set to @c ELM_LIST_COMPRESS to
+ * work as genlist needs to handle it specially.
+ *
+ * @see elm_genlist_compress_mode_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_compress_mode_set(Evas_Object *obj, Eina_Bool compress);
+
+/**
+ * Get whether the compress mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The compress mode
+ * (@c EINA_TRUE = on, @c EINA_FALSE = off)
+ *
+ * @see elm_genlist_compress_mode_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_compress_mode_get(const Evas_Object *obj);
+
+/**
+ * Enable/disable height-for-width mode.
+ *
+ * @param obj The genlist object
+ * @param setting The height-for-width mode (@c EINA_TRUE = on,
+ * @c EINA_FALSE = off). Default is @c EINA_FALSE.
+ *
+ * With height-for-width mode the item width will be fixed (restricted
+ * to a minimum of) to the list width when calculating its size in
+ * order to allow the height to be calculated based on it. This allows,
+ * for instance, text block to wrap lines if the Edje part is
+ * configured with "text.min: 0 1".
+ *
+ * @note This mode will make list resize slower as it will have to
+ * recalculate every item height again whenever the list width
+ * changes!
+ *
+ * @note When height-for-width mode is enabled, it also enables
+ * compress mode (see elm_genlist_compress_mode_set()) and
+ * disables homogeneous (see elm_genlist_homogeneous_set()).
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_height_for_width_mode_set(Evas_Object *obj, Eina_Bool height_for_width);
+
+/**
+ * Get whether the height-for-width mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return The height-for-width mode (@c EINA_TRUE = on, @c EINA_FALSE =
+ * off)
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_height_for_width_mode_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Enable/disable horizontal and vertical bouncing effect.
*
* @param obj The genlist object
EAPI void elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
/**
++<<<<<<< HEAD
+ * Enable/disable homogeneous mode.
+ *
+ * @param obj The genlist object
+ * @param homogeneous Assume the items within the genlist are of the
+ * same height and width (EINA_TRUE = on, EINA_FALSE = off). Default is @c
+ * EINA_FALSE.
+ *
+ * This will enable the homogeneous mode where items are of the same
+ * height and width so that genlist may do the lazy-loading at its
+ * maximum (which increases the performance for scrolling the list). This
+ * implies 'compressed' mode.
+ *
+ * @see elm_genlist_compress_mode_set()
+ * @see elm_genlist_homogeneous_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_homogeneous_set(Evas_Object *obj, Eina_Bool homogeneous);
+
+/**
+ * Get whether the homogeneous mode is enabled.
+ *
+ * @param obj The genlist object
+ * @return Assume the items within the genlist are of the same height
+ * and width (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @see elm_genlist_homogeneous_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_homogeneous_get(const Evas_Object *obj);
+
+/**
+ * Set the maximum number of items within an item block
+ *
+ * @param obj The genlist object
+ * @param n Maximum number of items within an item block. Default is 32.
+ *
+ * This will configure the block count to tune to the target with
+ * particular performance matrix.
+ *
+ * A block of objects will be used to reduce the number of operations due to
+ * many objects in the screen. It can determine the visibility, or if the
+ * object has changed, it theme needs to be updated, etc. doing this kind of
+ * calculation to the entire block, instead of per object.
+ *
+ * The default value for the block count is enough for most lists, so unless
+ * you know you will have a lot of objects visible in the screen at the same
+ * time, don't try to change this.
+ *
+ * @see elm_genlist_block_count_get()
+ * @see @ref Genlist_Implementation
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_block_count_set(Evas_Object *obj, int n);
+
+/**
+ * Get the maximum number of items within an item block
+ *
+ * @param obj The genlist object
+ * @return Maximum number of items within an item block
+ *
+ * @see elm_genlist_block_count_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI int elm_genlist_block_count_get(const Evas_Object *obj);
+
+/**
+ * Set the timeout in seconds for the longpress event.
+ *
+ * @param obj The genlist object
+ * @param timeout timeout in seconds. Default is 1.
+ *
+ * This option will change how long it takes to send an event "longpressed"
+ * after the mouse down signal is sent to the list. If this event occurs, no
+ * "clicked" event will be sent.
+ *
+ * @see elm_genlist_longpress_timeout_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_longpress_timeout_set(Evas_Object *obj, double timeout);
+
+/**
+ * Get the timeout in seconds for the longpress event.
+ *
+ * @param obj The genlist object
+ * @return timeout in seconds
+ *
+ * @see elm_genlist_longpress_timeout_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI double elm_genlist_longpress_timeout_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Append a new item in a given genlist widget.
*
* @param obj The genlist object
* @param itc The item class for the item
* @param data The item data
* @param parent The parent item, or NULL if none
++<<<<<<< HEAD
+ * @param flags Item flags
++=======
+ * @param type Item type
++>>>>>>> remotes/origin/upstream
* @param func Convenience function called when the item is selected
* @param func_data Data passed to @p func above.
* @return A handle to the item added or @c NULL if not possible
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
++=======
+ EAPI Elm_Object_Item *elm_genlist_item_append(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
++>>>>>>> remotes/origin/upstream
/**
* Prepend a new item in a given genlist widget.
* @param itc The item class for the item
* @param data The item data
* @param parent The parent item, or NULL if none
++<<<<<<< HEAD
+ * @param flags Item flags
++=======
+ * @param type Item type
++>>>>>>> remotes/origin/upstream
* @param func Convenience function called when the item is selected
* @param func_data Data passed to @p func above.
* @return A handle to the item added or NULL if not possible
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_genlist_item_prepend(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
++=======
+ EAPI Elm_Object_Item *elm_genlist_item_prepend(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
++>>>>>>> remotes/origin/upstream
/**
* Insert an item before another in a genlist widget
* @param obj The genlist object
* @param itc The item class for the item
* @param data The item data
++<<<<<<< HEAD
+ * @param before The item to place this new one before.
+ * @param flags Item flags
++=======
+ * @param parent The parent item, or NULL if none
+ * @param before The item to place this new one before.
+ * @param type Item type
++>>>>>>> remotes/origin/upstream
* @param func Convenience function called when the item is selected
* @param func_data Data passed to @p func above.
* @return A handle to the item added or @c NULL if not possible
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *before, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
++=======
+ EAPI Elm_Object_Item *elm_genlist_item_insert_before(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *before, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
++>>>>>>> remotes/origin/upstream
/**
* Insert an item after another in a genlist widget
* @param obj The genlist object
* @param itc The item class for the item
* @param data The item data
++<<<<<<< HEAD
+ * @param after The item to place this new one after.
+ * @param flags Item flags
++=======
+ * @param parent The parent item, or NULL if none
+ * @param after The item to place this new one after.
+ * @param type Item type
++>>>>>>> remotes/origin/upstream
* @param func Convenience function called when the item is selected
* @param func_data Data passed to @p func above.
* @return A handle to the item added or @c NULL if not possible
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *after, Elm_Genlist_Item_Flags flags, Evas_Smart_Cb func, const void *func_data);
++=======
+ EAPI Elm_Object_Item *elm_genlist_item_insert_after(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Object_Item *after, Elm_Genlist_Item_Type type, Evas_Smart_Cb func, const void *func_data);
++>>>>>>> remotes/origin/upstream
/**
* Insert a new item into the sorted genlist object
* @param itc The item class for the item
* @param data The item data
* @param parent The parent item, or NULL if none
++<<<<<<< HEAD
+ * @param flags Item flags
++=======
+ * @param type Item type
++>>>>>>> remotes/origin/upstream
* @param comp The function called for the sort
* @param func Convenience function called when item selected
* @param func_data Data passed to @p func above.
* @return A handle to the item added or NULL if not possible
*
++<<<<<<< HEAD
+ * @ingroup Genlist
+ */
+// XXX: deprecate elm_genlist_item_sorted_insert() and rename
+// elm_genlist_item_direct_sorted_insert()
+EAPI Elm_Object_Item *elm_genlist_item_sorted_insert(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Flags flags, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
+EAPI Elm_Object_Item *elm_genlist_item_direct_sorted_insert(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Flags flags, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
++=======
+ * This inserts an item in the genlist based on user defined comparison
+ * function. The two arguments passed to the function @p func are genlist item
+ * handles to compare.
+ *
+ * @see elm_genlist_item_append()
+ * @see elm_genlist_item_prepend()
+ * @see elm_genlist_item_insert_after()
+ * @see elm_object_item_del()
+
+ * @ingroup Genlist
+ */
+ EAPI Elm_Object_Item *elm_genlist_item_sorted_insert(Evas_Object *obj, const Elm_Genlist_Item_Class *itc, const void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type type, Eina_Compare_Cb comp, Evas_Smart_Cb func, const void *func_data);
++>>>>>>> remotes/origin/upstream
/* operations to retrieve existing items */
/**
* useful, so see elm_genlist_selected_items_get() for when multi-selection is
* used).
*
- * If no item is selected, NULL is returned.
+ * If no item is selected, NULL is returned.
+ *
+ * @see elm_genlist_selected_items_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_selected_item_get(const Evas_Object *obj);
+
+/**
+ * Get a list of selected items in the genlist.
+ *
+ * @param obj The genlist object
+ * @return The list of selected items, or NULL if none are selected.
+ *
+ * It returns a list of the selected items. This list pointer is only valid so
+ * long as the selection doesn't change (no items are selected or unselected, or
+ * unselected implicitly by deletion). The list contains genlist items
+ * pointers. The order of the items in this list is the order which they were
+ * selected, i.e. the first item in this list is the first item that was
+ * selected, and so on.
+ *
+ * @note If not in multi-select mode, consider using function
+ * elm_genlist_selected_item_get() instead.
+ *
+ * @see elm_genlist_multi_select_set()
+ * @see elm_genlist_selected_item_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI const Eina_List *elm_genlist_selected_items_get(const Evas_Object *obj);
+
+/**
++<<<<<<< HEAD
+ * Get the mode item style of items in the genlist
+ * @param obj The genlist object
+ * @return The mode item style string, or NULL if none is specified
+ *
+ * This is a constant string and simply defines the name of the
+ * style that will be used for mode animations. It can be
+ * @c NULL if you don't plan to use Genlist mode. See
+ * elm_genlist_item_mode_set() for more info.
+ *
+ * @ingroup Genlist
+ */
+EAPI const char *elm_genlist_mode_item_style_get(const Evas_Object *obj);
+
+/**
+ * Set the mode item style of items in the genlist
+ * @param obj The genlist object
+ * @param style The mode item style string, or NULL if none is desired
+ *
+ * This is a constant string and simply defines the name of the
+ * style that will be used for mode animations. It can be
+ * @c NULL if you don't plan to use Genlist mode. See
+ * elm_genlist_item_mode_set() for more info.
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_mode_item_style_set(Evas_Object *obj, const char *style);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
+ * Get a list of realized items in genlist
+ *
+ * @param obj The genlist object
+ * @return The list of realized items, nor NULL if none are realized.
+ *
+ * This returns a list of the realized items in the genlist. The list
+ * contains genlist item pointers. The list must be freed by the
+ * caller when done with eina_list_free(). The item pointers in the
+ * list are only valid so long as those items are not deleted or the
+ * genlist is not deleted.
+ *
+ * @see elm_genlist_realized_items_update()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_List *elm_genlist_realized_items_get(const Evas_Object *obj);
+
+/**
++<<<<<<< HEAD
+ * Get the item that is at the x, y canvas coords.
+ *
+ * @param obj The genlist object.
+ * @param x The input x coordinate
+ * @param y The input y coordinate
+ * @param posret The position relative to the item returned here
+ * @return The item at the coordinates or NULL if none
+ *
+ * This returns the item at the given coordinates (which are canvas
+ * relative, not object-relative). If an item is at that coordinate,
+ * that item handle is returned, and if @p posret is not NULL, the
+ * integer pointed to is set to a value of -1, 0 or 1, depending if
+ * the coordinate is on the upper portion of that item (-1), on the
+ * middle section (0) or on the lower part (1). If NULL is returned as
+ * an item (no item found there), then posret may indicate -1 or 1
+ * based if the coordinate is above or below all items respectively in
+ * the genlist.
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *posret);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
+ * Get the first item in the genlist
+ *
+ * This returns the first item in the list.
+ *
+ * @param obj The genlist object
+ * @return The first item, or NULL if none
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_first_item_get(const Evas_Object *obj);
+
+/**
+ * Get the last item in the genlist
+ *
+ * This returns the last item in the list.
+ *
+ * @return The last item, or NULL if none
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_last_item_get(const Evas_Object *obj);
+
+/**
+ * Set the scrollbar policy
+ *
+ * @param obj The genlist object
+ * @param policy_h Horizontal scrollbar policy.
+ * @param policy_v Vertical scrollbar policy.
+ *
+ * This sets the scrollbar visibility policy for the given genlist
+ * scroller. #ELM_SMART_SCROLLER_POLICY_AUTO means the scrollbar is
+ * made visible if it is needed, and otherwise kept hidden.
+ * #ELM_SMART_SCROLLER_POLICY_ON turns it on all the time, and
+ * #ELM_SMART_SCROLLER_POLICY_OFF always keeps it off. This applies
+ * respectively for the horizontal and vertical scrollbars. Default is
+ * #ELM_SMART_SCROLLER_POLICY_AUTO
+ *
+ * @see elm_genlist_scroller_policy_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v);
+
+/**
+ * Get the scrollbar policy
+ *
+ * @param obj The genlist object
+ * @param policy_h Pointer to store the horizontal scrollbar policy.
+ * @param policy_v Pointer to store the vertical scrollbar policy.
+ *
+ * @see elm_genlist_scroller_policy_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v);
+
+/**
+ * Get the @b next item in a genlist widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The genlist item to fetch next from
+ * @return The item after @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed after the @p item, on the container
+ * genlist.
+ *
+ * @see elm_genlist_item_prev_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_item_next_get(const Elm_Object_Item *it);
+
+/**
+ * Get the @b previous item in a genlist widget's internal list of items,
+ * given a handle to one of those items.
+ *
+ * @param it The genlist item to fetch previous from
+ * @return The item before @p item, or @c NULL if there's none (and
+ * on errors)
+ *
+ * This returns the item placed before the @p item, on the container
+ * genlist.
+ *
+ * @see elm_genlist_item_next_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_item_prev_get(const Elm_Object_Item *it);
+
+/**
++<<<<<<< HEAD
+ * Get the parent item of the given item
+ *
+ * @param it The item
+ * @return The parent of the item or @c NULL if it has no parent.
+ *
+ * This returns the item that was specified as parent of the item @p it on
+ * elm_genlist_item_append() and insertion related functions.
+ *
+ * @ingroup Genlist
+ */
+EAPI Elm_Object_Item *elm_genlist_item_parent_get(const Elm_Object_Item *it);
+
+/**
+ * Remove all sub-items (children) of the given item
+ *
+ * @param it The item
+ *
+ * This removes all items that are children (and their descendants) of the
+ * given item @p it.
+ *
+ * @see elm_genlist_clear()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_subitems_clear(Elm_Object_Item *it);
+
+/**
+ * Set whether a given genlist item is selected or not
+ *
+ * @param it The item
+ * @param selected Use @c EINA_TRUE, to make it selected, @c
+ * EINA_FALSE to make it unselected
++=======
++ * Set whether a given genlist item is selected or not
++ *
++ * @param it The item
++ * @param selected Use @c EINA_TRUE, to make it selected, @c
++ * EINA_FALSE to make it unselected
++>>>>>>> remotes/origin/upstream
+ *
+ * This sets the selected state of an item. If multi selection is
+ * not enabled on the containing genlist and @p selected is @c
+ * EINA_TRUE, any other previously selected items will get
+ * unselected in favor of this new one.
+ *
+ * @see elm_genlist_item_selected_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+/**
+ * Get whether a given genlist item is selected or not
+ *
+ * @param it The item
+ * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
+ *
+ * @see elm_genlist_item_selected_set() for more details
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Object_Item *it);
+
+/**
++<<<<<<< HEAD
+ * Sets the expanded state of an item.
+ *
+ * @param it The item
+ * @param expanded The expanded state (@c EINA_TRUE expanded, @c EINA_FALSE not expanded).
+ *
+ * This function flags the item of type #ELM_GENLIST_ITEM_SUBITEMS as
+ * expanded or not.
+ *
+ * The theme will respond to this change visually, and a signal "expanded" or
+ * "contracted" will be sent from the genlist with a pointer to the item that
+ * has been expanded/contracted.
+ *
+ * Calling this function won't show or hide any child of this item (if it is
+ * a parent). You must manually delete and create them on the callbacks of
+ * the "expanded" or "contracted" signals.
+ *
+ * @see elm_genlist_item_expanded_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_expanded_set(Elm_Object_Item *it, Eina_Bool expanded);
+
+/**
+ * Get the expanded state of an item
+ *
+ * @param it The item
+ * @return The expanded state
+ *
+ * This gets the expanded state of an item.
+ *
+ * @see elm_genlist_item_expanded_set()
+ *
+ * @ingroup Genlist
+ */
+EAPI Eina_Bool elm_genlist_item_expanded_get(const Elm_Object_Item *it);
+
+/**
+ * Get the depth of expanded item
+ *
+ * @param it The genlist item object
+ * @return The depth of expanded item
+ *
+ * @ingroup Genlist
+ */
+EAPI int elm_genlist_item_expanded_depth_get(const Elm_Object_Item *it);
+
+
+/**
+ * Sets the display only state of an item.
+ *
+ * @param it The item
+ * @param display_only @c EINA_TRUE if the item is display only, @c
+ * EINA_FALSE otherwise.
+ *
+ * A display only item cannot be selected or unselected. It is for
+ * display only and not selecting or otherwise clicking, dragging
+ * etc. by the user, thus finger size rules will not be applied to
+ * this item.
+ *
+ * It's good to set group index items to display only state.
+ *
+ * @see elm_genlist_item_display_only_get()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_display_only_set(Elm_Object_Item *it, Eina_Bool display_only);
+
+/**
+ * Get the display only state of an item
+ *
+ * @param it The item
+ * @return @c EINA_TRUE if the item is display only, @c
+ * EINA_FALSE otherwise.
*
- * @see elm_genlist_selected_items_get()
+ * @see elm_genlist_item_display_only_set()
*
* @ingroup Genlist
*/
-EAPI Elm_Object_Item *elm_genlist_selected_item_get(const Evas_Object *obj);
+EAPI Eina_Bool elm_genlist_item_display_only_get(const Elm_Object_Item *it);
/**
- * Get a list of selected items in the genlist.
++=======
++>>>>>>> remotes/origin/upstream
+ * Show the portion of a genlist's internal list containing a given
+ * item, immediately.
*
- * @param obj The genlist object
- * @return The list of selected items, or NULL if none are selected.
+ * @param it The item to display
++<<<<<<< HEAD
*
- * It returns a list of the selected items. This list pointer is only valid so
- * long as the selection doesn't change (no items are selected or unselected, or
- * unselected implicitly by deletion). The list contains genlist items
- * pointers. The order of the items in this list is the order which they were
- * selected, i.e. the first item in this list is the first item that was
- * selected, and so on.
+ * This causes genlist to jump to the given item @p it and show it (by
+ * immediately scrolling to that position), if it is not fully visible.
*
- * @note If not in multi-select mode, consider using function
- * elm_genlist_selected_item_get() instead.
+ * @see elm_genlist_item_bring_in()
+ * @see elm_genlist_item_top_show()
+ * @see elm_genlist_item_middle_show()
*
- * @see elm_genlist_multi_select_set()
- * @see elm_genlist_selected_item_get()
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_show(Elm_Object_Item *it);
++=======
++ * @param type The position to bring in, the given item to.
++ * @ref Elm_Genlist_Item_Scrollto_Type
++ *
++ * This causes genlist to jump to the given item @p it and show it (by
++ * jumping to that position), if it is not fully visible.
++ *
++ * @see elm_genlist_item_bring_in()
+ *
+ * @ingroup Genlist
+ */
-EAPI const Eina_List *elm_genlist_selected_items_get(const Evas_Object *obj);
++EAPI void elm_genlist_item_show(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type);
++>>>>>>> remotes/origin/upstream
/**
- * Get a list of realized items in genlist
+ * Animatedly bring in, to the visible are of a genlist, a given
+ * item on it.
*
- * @param obj The genlist object
- * @return The list of realized items, nor NULL if none are realized.
+ * @param it The item to display
++<<<<<<< HEAD
*
- * This returns a list of the realized items in the genlist. The list
- * contains genlist item pointers. The list must be freed by the
- * caller when done with eina_list_free(). The item pointers in the
- * list are only valid so long as those items are not deleted or the
- * genlist is not deleted.
+ * This causes genlist to jump to the given item @p it and show it (by
+ * animatedly scrolling), if it is not fully visible. This may use animation
+ * to do so and take a period of time
*
- * @see elm_genlist_realized_items_update()
+ * @see elm_genlist_item_show()
+ * @see elm_genlist_item_top_bring_in()
+ * @see elm_genlist_item_middle_bring_in()
*
* @ingroup Genlist
*/
*
* @ingroup Genlist
*/
-EAPI void elm_genlist_item_show(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type);
+EAPI void elm_genlist_item_fields_update(Elm_Object_Item *it, const char *parts, Elm_Genlist_Item_Field_Flags itf);
/**
- * Animatedly bring in, to the visible are of a genlist, a given
- * item on it.
+ * Update the item class of an item
*
- * @param it The item to display
+ * @param it The item
+ * @param itc The item class for the item
+ *
+ * This sets another class of the item, changing the way that it is
+ * displayed. After changing the item class, elm_genlist_item_update() is
+ * called on the item @p it.
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_item_item_class_update(Elm_Object_Item *it, const Elm_Genlist_Item_Class *itc);
+EAPI const Elm_Genlist_Item_Class *elm_genlist_item_item_class_get(const Elm_Object_Item *it);
++=======
+ * @param type The position to bring in, the given item to.
+ * @ref Elm_Genlist_Item_Scrollto_Type
+ *
+ * This causes genlist to jump to the given item @p it and show it (by
+ * animatedly scrolling), if it is not fully visible.
+ * This may use animation and take a some time to do so.
+ *
+ * @see elm_genlist_item_show()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_bring_in(Elm_Object_Item *it, Elm_Genlist_Item_Scrollto_Type type);
+
+ /**
+ * Update the contents of an item
+ *
+ * @param it The item
+ *
+ * This updates an item by calling all the item class functions again
+ * to get the contents, texts and states. Use this when the original
+ * item data has changed and the changes are desired to be reflected.
+ *
+ * Use elm_genlist_realized_items_update() to update all already realized
+ * items.
+ *
+ * @see elm_genlist_realized_items_update()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_update(Elm_Object_Item *it);
+
+ /**
+ * Update the item class of an item
+ *
+ * @param it The item
+ * @param itc The item class for the item
+ *
+ * This sets another class of the item, changing the way that it is
+ * displayed. After changing the item class, elm_genlist_item_update() is
+ * called on the item @p it.
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_item_class_update(Elm_Object_Item *it, const Elm_Genlist_Item_Class *itc);
+
+ /**
+ * Get the Genlist Item class for the given Genlist Item.
+ *
+ * @param it The genlist item
+ *
+ * This returns the Genlist_Item_Class for the given item. It can be used to
+ * examine the function pointers and item_style.
+ *
+ * @ingroup Genlist
+ */
+ EAPI const Elm_Genlist_Item_Class *elm_genlist_item_item_class_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the index of the item. It is only valid once displayed.
+ *
+ * @param it a genlist item
+ * @return the position inside the list of item.
+ *
+ * @ingroup Genlist
+ */
+ EAPI int elm_genlist_item_index_get(const Elm_Object_Item *it);
+
+ /**
+ * Update the contents of all realized items.
+ *
+ * @param obj The genlist object.
+ *
+ * This updates all realized items by calling all the item class functions again
+ * to get the contents, texts and states. Use this when the original
+ * item data has changed and the changes are desired to be reflected.
+ *
+ * To update just one item, use elm_genlist_item_update().
+ *
+ * @see elm_genlist_realized_items_get()
+ * @see elm_genlist_item_update()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_realized_items_update(Evas_Object *obj);
+
+ /**
+ * Return how many items are currently in a list
+ *
+ * @param obj The list
+ * @return The total number of list items in the list
+ *
+ * This behavior is O(1) and includes items which may or may not be realized.
+ *
+ * @ingroup Genlist
+ */
+ EAPI unsigned int elm_genlist_items_count(const Evas_Object *obj);
+
+ /**
+ * Add a new genlist item class in a given genlist widget.
+ *
+ * @return New allocated a genlist item class.
+ *
+ * This adds genlist item class for the genlist widget. When adding a item,
+ * genlist_item_{append, prepend, insert} function needs item class of the item.
+ * Given callback parameters are used at retrieving {text, content} of
+ * added item. Set as NULL if it's not used.
+ * If there's no available memory, return can be NULL.
+ *
+ * @see elm_genlist_item_class_free()
+ * @see elm_genlist_item_append()
+ *
+ * @ingroup Genlist
+ */
+ EAPI Elm_Genlist_Item_Class *elm_genlist_item_class_new(void);
+
+ /**
+ * Remove a item class in a given genlist widget.
+ *
+ * @param itc The itc to be removed.
+ *
+ * This removes item class from the genlist widget.
+ * Whenever it has no more references to it, item class is going to be freed.
+ * Otherwise it just decreases its reference count.
+ *
+ * @see elm_genlist_item_class_new()
+ * @see elm_genlist_item_class_ref()
+ * @see elm_genlist_item_class_unref()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_class_free(Elm_Genlist_Item_Class *itc);
+
+ /**
+ * Increments object reference count for the item class.
+ *
+ * @param itc The given item class object to reference
+ *
+ * This API just increases its reference count for item class management.
+ *
+ * @see elm_genlist_item_class_unref()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_class_ref(Elm_Genlist_Item_Class *itc);
+
+ /**
+ * Decrements object reference count for the item class.
+ *
+ * @param itc The given item class object to reference
+ *
+ * This API just decreases its reference count for item class management.
+ * Reference count can't be less than 0.
+ *
+ * @see elm_genlist_item_class_ref()
+ * @see elm_genlist_item_class_free()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_class_unref(Elm_Genlist_Item_Class *itc);
++>>>>>>> remotes/origin/upstream
/**
* Set the text to be shown in a given genlist item's tooltips.
EAPI Eina_Bool elm_genlist_item_cursor_engine_only_get(const Elm_Object_Item *it);
/**
- * be added.
- * - A mode style and the genlist item style are different things. They
- * can be combined to provide a default style to the item, with some kind
- * of animation for that item when the mode is activated.
++<<<<<<< HEAD
+ * Get the index of the item. It is only valid once displayed.
+ *
+ * @param item a genlist item
+ * @return the position inside the list of item.
+ *
+ * @ingroup Genlist
+ */
+EAPI int elm_genlist_item_index_get(Elm_Object_Item *it);
+
+/**
+ * Update the contents of all realized items.
+ *
+ * @param obj The genlist object.
+ *
+ * This updates all realized items by calling all the item class functions again
+ * to get the contents, texts and states. Use this when the original
+ * item data has changed and the changes are desired to be reflected.
+ *
+ * To update just one item, use elm_genlist_item_update().
+ *
+ * @see elm_genlist_realized_items_get()
+ * @see elm_genlist_item_update()
+ *
+ * @ingroup Genlist
+ */
+EAPI void elm_genlist_realized_items_update(Evas_Object *obj);
+
+/**
+ * Activate a genlist mode on an item
+ *
+ * @param item The genlist item
+ * @param mode Mode name
+ * @param mode_set Boolean to define set or unset mode.
+ *
+ * A genlist mode is a different way of selecting an item. Once a mode is
+ * activated on an item, any other selected item is immediately unselected.
+ * This feature provides an easy way of implementing a new kind of animation
+ * for selecting an item, without having to entirely rewrite the item style
+ * theme. However, the elm_genlist_selected_* API can't be used to get what
+ * item is activate for a mode.
+ *
+ * The current item style will still be used, but applying a genlist mode to
+ * an item will select it using a different kind of animation.
+ *
+ * The current active item for a mode can be found by
+ * elm_genlist_mode_item_get().
+ *
+ * The characteristics of genlist mode are:
+ * - Only one mode can be active at any time, and for only one item.
+ * - Genlist handles deactivating other items when one item is activated.
+ * - A mode is defined in the genlist theme (edc), and more modes can easily
++=======
+ * Enable/disable homogeneous mode.
*
- * When a mode is activated on an item, a new view for that item is created.
- * The theme of this mode defines the animation that will be used to transit
- * the item from the old view to the new view. This second (new) view will be
- * active for that item while the mode is active on the item, and will be
- * destroyed after the mode is totally deactivated from that item.
+ * @param obj The genlist object
+ * @param homogeneous Assume the items within the genlist are of the
+ * same height and width (EINA_TRUE = on, EINA_FALSE = off). Default is @c
+ * EINA_FALSE.
*
- * @see elm_genlist_mode_get()
- * @see elm_genlist_mode_item_get()
+ * This will enable the homogeneous mode where items are of the same
+ * height and width so that genlist may do the lazy-loading at its
+ * maximum (which increases the performance for scrolling the list). This
+ * implies 'compressed' mode.
+ *
+ * @see elm_genlist_compress_mode_set()
+ * @see elm_genlist_homogeneous_get()
*
* @ingroup Genlist
*/
*
* @ingroup Genlist
*/
- EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+ EAPI int elm_genlist_block_count_get(const Evas_Object *obj);
/**
- * Get the reorder mode
+ * Set the timeout in seconds for the longpress event.
*
* @param obj The genlist object
- * @return The reorder mode
- * (EINA_TRUE = on, EINA_FALSE = off)
+ * @param timeout timeout in seconds. Default is elm config value(1.0)
*
- * @ingroup Genlist
- */
+ * This option will change how long it takes to send an event "longpressed"
+ * after the mouse down signal is sent to the list. If this event occurs, no
+ * "clicked" event will be sent.
+ *
+ * @warning If you set the longpress timeout value with this API, your genlist
+ * will not be affected by the longpress value of elementary config value
+ * later.
+ *
+ * @see elm_genlist_longpress_timeout_set()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_longpress_timeout_set(Evas_Object *obj, double timeout);
+
+ /**
+ * Get the timeout in seconds for the longpress event.
+ *
+ * @param obj The genlist object
+ * @return timeout in seconds
+ *
+ * @see elm_genlist_longpress_timeout_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI double elm_genlist_longpress_timeout_get(const Evas_Object *obj);
+
+ /**
+ * Get the item that is at the x, y canvas coords.
+ *
+ * @param obj The genlist object.
+ * @param x The input x coordinate
+ * @param y The input y coordinate
+ * @param posret The position relative to the item returned here
+ * @return The item at the coordinates or NULL if none
+ *
+ * This returns the item at the given coordinates (which are canvas
+ * relative, not object-relative). If an item is at that coordinate,
+ * that item handle is returned, and if @p posret is not NULL, the
+ * integer pointed to is set to a value of -1, 0 or 1, depending if
+ * the coordinate is on the upper portion of that item (-1), on the
+ * middle section (0) or on the lower part (1). If NULL is returned as
+ * an item (no item found there), then posret may indicate -1 or 1
+ * based if the coordinate is above or below all items respectively in
+ * the genlist.
+ *
+ * @ingroup Genlist
+ */
+ EAPI Elm_Object_Item *elm_genlist_at_xy_item_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *posret);
+
+ /**
+ * Get the parent item of the given item
+ *
+ * @param it The item
+ * @return The parent of the item or @c NULL if it has no parent.
+ *
+ * This returns the item that was specified as parent of the item @p it on
+ * elm_genlist_item_append() and insertion related functions.
+ *
+ * @ingroup Genlist
+ */
+ EAPI Elm_Object_Item *elm_genlist_item_parent_get(const Elm_Object_Item *it);
+
+ /**
+ * Remove all sub-items (children) of the given item
+ *
+ * @param it The item
+ *
+ * This removes all items that are children (and their descendants) of the
+ * given item @p it.
+ *
+ * @see elm_genlist_clear()
+ * @see elm_object_item_del()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_subitems_clear(Elm_Object_Item *it);
+
+ /**
+ * Sets the expanded state of an item.
+ *
+ * @param it The item
+ * @param expanded The expanded state (@c EINA_TRUE expanded, @c EINA_FALSE not expanded).
+ *
+ * This function flags the item of type #ELM_GENLIST_ITEM_TREE as
+ * expanded or not.
+ *
+ * The theme will respond to this change visually, and a signal "expanded" or
+ * "contracted" will be sent from the genlist with a pointer to the item that
+ * has been expanded/contracted.
+ *
+ * Calling this function won't show or hide any child of this item (if it is
+ * a parent). You must manually delete and create them on the callbacks of
+ * the "expanded" or "contracted" signals.
+ *
+ * @see elm_genlist_item_expanded_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_expanded_set(Elm_Object_Item *it, Eina_Bool expanded);
+
+ /**
+ * Get the expanded state of an item
+ *
+ * @param it The item
+ * @return The expanded state
+ *
+ * This gets the expanded state of an item.
+ *
+ * @see elm_genlist_item_expanded_set()
+ *
+ * @ingroup Genlist
+ */
+ EAPI Eina_Bool elm_genlist_item_expanded_get(const Elm_Object_Item *it);
+
+ /**
+ * Get the depth of expanded item
+ *
+ * @param it The genlist item object
+ * @return The depth of expanded item
+ *
+ * @ingroup Genlist
+ */
+ EAPI int elm_genlist_item_expanded_depth_get(const Elm_Object_Item *it);
+
+ /**
+ * Unset all contents fetched by the item class
+ *
+ * @param it The item
+ * @param l The contents list to return
+ *
+ * This instructs genlist to release references to contents in the item,
+ * meaning that they will no longer be managed by genlist and are
+ * floating "orphans" that can be re-used elsewhere if the user wants
+ * to.
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_all_contents_unset(Elm_Object_Item *it, Eina_List **l);
+
+ /**
+ * Promote an item to the top of the list
+ *
+ * @param it The item
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_promote(Elm_Object_Item *it);
+
+ /**
+ * Demote an item to the end of the list
+ *
+ * @param it The item
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_demote(Elm_Object_Item *it);
+
+ /**
+ * Update the part of an item
+ *
+ * @param it The item
+ * @param parts The name of item's part
+ * @param itf The type of item's part type
+ *
+ * This updates an item's part by calling item's fetching functions again
+ * to get the contents, texts and states. Use this when the original
+ * item data has changed and the changes are desired to be reflected.
+ * Second parts argument is used for globbing to match '*', '?', and '.'
+ * It can be used at updating multi fields.
+ *
+ * Use elm_genlist_realized_items_update() to update an item's all
+ * property.
+ *
+ * @see elm_genlist_item_update()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_fields_update(Elm_Object_Item *it, const char *parts, Elm_Genlist_Item_Field_Type itf);
+
+ /**
+ * Activate a genlist mode on an item
+ *
+ * @param it The genlist item
+ * @param mode_type Mode name
+ * @param mode_set Boolean to define set or unset mode.
+ *
+ * A genlist mode is a different way of selecting an item. Once a mode is
+ * activated on an item, any other selected item is immediately unselected.
+ * This feature provides an easy way of implementing a new kind of animation
+ * for selecting an item, without having to entirely rewrite the item style
+ * theme. However, the elm_genlist_selected_* API can't be used to get what
+ * item is activate for a mode.
+ *
+ * The current item style will still be used, but applying a genlist mode to
+ * an item will select it using a different kind of animation.
+ *
+ * The current active item for a mode can be found by
+ * elm_genlist_decorated_item_get().
+ *
+ * The characteristics of genlist mode are:
+ * - Only one mode can be active at any time, and for only one item.
+ * - Genlist handles deactivating other items when one item is activated.
+ * - A mode is defined in the genlist theme (edc), and more modes can easily
++>>>>>>> remotes/origin/upstream
+ * be added.
+ * - A mode style and the genlist item style are different things. They
+ * can be combined to provide a default style to the item, with some kind
+ * of animation for that item when the mode is activated.
+ *
+ * When a mode is activated on an item, a new view for that item is created.
+ * The theme of this mode defines the animation that will be used to transit
+ * the item from the old view to the new view. This second (new) view will be
+ * active for that item while the mode is active on the item, and will be
+ * destroyed after the mode is totally deactivated from that item.
+ *
+ * @see elm_genlist_mode_get()
++<<<<<<< HEAD
++ * @see elm_genlist_mode_item_get()
++ *
++ * @ingroup Genlist
++ */
++EAPI void elm_genlist_item_mode_set(Elm_Object_Item *it, const char *mode_type, Eina_Bool mode_set);
++=======
+ * @see elm_genlist_decorated_item_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_item_decorate_mode_set(Elm_Object_Item *it, const char *mode_type, Eina_Bool mode_set);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Get the last (or current) genlist mode used.
+ *
+ * @param obj The genlist object
+ *
+ * This function just returns the name of the last used genlist mode. It will
+ * be the current mode if it's still active.
+ *
++<<<<<<< HEAD
++ * @see elm_genlist_item_mode_set()
++ * @see elm_genlist_mode_item_get()
++ *
++ * @ingroup Genlist
++ */
++EAPI const char *elm_genlist_mode_type_get(const Evas_Object *obj);
++=======
+ * @see elm_genlist_item_decorate_mode_set()
+ * @see elm_genlist_decorated_item_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI const char *elm_genlist_item_decorate_mode_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Get active genlist mode item
+ *
+ * @param obj The genlist object
+ * @return The active item for that current mode. Or @c NULL if no item is
+ * activated with any mode.
+ *
+ * This function returns the item that was activated with a mode, by the
++<<<<<<< HEAD
++ * function elm_genlist_item_mode_set().
++ *
++ * @see elm_genlist_item_mode_set()
++=======
+ * function elm_genlist_item_decorate_mode_set().
+ *
+ * @see elm_genlist_item_decorate_mode_set()
++>>>>>>> remotes/origin/upstream
+ * @see elm_genlist_mode_get()
+ *
+ * @ingroup Genlist
+ */
++<<<<<<< HEAD
++EAPI const Elm_Object_Item *elm_genlist_mode_item_get(const Evas_Object *obj);
++=======
+ EAPI const Elm_Object_Item *elm_genlist_decorated_item_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Set reorder mode
+ *
+ * @param obj The genlist object
+ * @param reorder_mode The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_reorder_mode_set(Evas_Object *obj, Eina_Bool reorder_mode);
+
+ /**
+ * Get the reorder mode
+ *
+ * @param obj The genlist object
+ * @return The reorder mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Genlist
+ */
EAPI Eina_Bool elm_genlist_reorder_mode_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Get the Item's Flags
+ *
+ * @param item The genlist item
+ * @return The item flags.
++=======
+ * Get the Item's Type
+ *
+ * @param it The genlist item
+ * @return The item type.
++>>>>>>> remotes/origin/upstream
*
* This function returns the item's type. Normally the item's type.
* If it failed, return value is ELM_GENLIST_ITEM_MAX
*
* @ingroup Genlist
*/
++<<<<<<< HEAD
+EAPI Elm_Genlist_Item_Flags elm_genlist_item_flags_get(const Elm_Object_Item *it);
+
+ EAPI void elm_genlist_edit_mode_set(Evas_Object *obj, Eina_Bool edit_mode) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_edit_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_item_rename_mode_set(Elm_Object_Item *it, Eina_Bool renamed) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_item_rename_mode_get(Elm_Object_Item *item) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_item_move_after(Elm_Object_Item *it, Elm_Object_Item *after ) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_genlist_item_move_before(Elm_Object_Item *it, Elm_Object_Item *before) EINA_ARG_NONNULL(1, 2);
+ EAPI void elm_genlist_effect_set(const Evas_Object *obj, Eina_Bool emode) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_pinch_zoom_set(Evas_Object *obj, Eina_Bool emode) EINA_ARG_NONNULL(1);
+ EAPI void elm_genlist_pinch_zoom_mode_set(Evas_Object *obj, Eina_Bool emode) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_pinch_zoom_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+ EAPI void elm_genlist_item_no_select_mode_set(Elm_Object_Item *it, Eina_Bool no_select) EINA_ARG_NONNULL(1);
+ EAPI Eina_Bool elm_genlist_item_no_select_mode_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+
+ /**
+ * @}
+ */
++=======
+ EAPI Elm_Genlist_Item_Type elm_genlist_item_type_get(const Elm_Object_Item *it);
+
+ /**
+ * Set Genlist decorate mode
+ *
+ * This sets Genlist decorate mode to all items.
+ *
+ * @param obj The Genlist object
+ * @param The decorate mode status
+ * (EINA_TRUE = decorate mode, EINA_FALSE = normal mode
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_decorate_mode_set(Evas_Object *obj, Eina_Bool decorated);
+
+ /**
+ * Get Genlist decorate mode
+ *
+ * @param obj The genlist object
+ * @return The decorate mode status
+ * (EINA_TRUE = decorate mode, EINA_FALSE = normal mode
+ *
+ * @ingroup Genlist
+ */
+ EAPI Eina_Bool elm_genlist_decorate_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set the flip state of a given genlist item.
+ *
+ * @param it The genlist item object
+ * @param flip The flip mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * This function sets the flip state of a given genlist item.
+ * Flip mode overrides current item object.
+ * It can be used for on-the-fly item replace.
+ * Flip mode can be used with/without edit mode.
+ *
+ * @see elm_genlist_item_flip_get()
+ *
+ * @ingroup Genlist
+ */
+
+ EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool flip);
+
+ /**
+ * Get the flip state of a given genlist item.
+ *
+ * @param it The genlist item object
+ *
+ * This function returns the flip state of a given genlist item.
+ * If the parameter is invalid, it returns EINA_FALSE.
+ *
+ * @see elm_genlist_item_flip_set()
+ *
+ * @ingroup Genlist
+ */
+
+ EAPI Eina_Bool elm_genlist_item_flip_get(const Elm_Object_Item *it);
+
+ /**
+ * Set Genlist tree effect
+ *
+ * @param obj The genlist object
+ * @param The tree effect status
+ * (EINA_TRUE = enabled, EINA_FALSE = disabled
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_tree_effect_enabled_set(Evas_Object *obj, Eina_Bool enabled);
+
+ /**
+ * Get Genlist tree effect
+ *
+ * @param obj The genlist object
+ * @return The tree effect status
+ * (EINA_TRUE = enabled, EINA_FALSE = disabled
+ *
+ * @ingroup Genlist
+ */
+ EAPI Eina_Bool elm_genlist_tree_effect_enabled_get(const Evas_Object *obj);
+
+ /**
+ * Set the genlist select mode.
+ *
+ * @param obj The genlist object
+ * @param mode The select mode
+ *
+ * elm_genlist_select_mode_set() changes item select mode in the genlist widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+ * callback when first becoming selected. Any further clicks will
+ * do nothing, unless you set always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click will make the selected callbacks be called.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+ * entirely and they will neither appear selected nor call selected
+ * callback functions.
+ *
+ * @see elm_genlist_select_mode_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+ /**
+ * Get the genlist select mode.
+ *
+ * @param obj The genlist object
+ * @return The select mode
+ * (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_genlist_select_mode_set()
+ *
+ * @ingroup Genlist
+ */
+ EAPI Elm_Object_Select_Mode elm_genlist_select_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set whether the genlist items' should be highlighted when item selected.
+ *
+ * @param obj The genlist object.
+ * @param highlight @c EINA_TRUE to enable highlighting or @c EINA_FALSE to
+ * disable it.
+ *
+ * This will turn on/off the highlight effect when item selection and
+ * they will, or will not highlighted. The selected and clicked
+ * callback functions will still be called.
+ *
+ * Highlight is enabled by default.
+ *
+ * @see elm_genlist_highlight_mode_get().
+ *
+ * @ingroup Genlist
+ */
+ EAPI void elm_genlist_highlight_mode_set(Evas_Object *obj, Eina_Bool highlight);
+
+ /**
+ * Get whether the genlist items' should be highlighted when item selected.
+ *
+ * @param obj The genlist object.
+ * @return @c EINA_TRUE means items can be highlighted. @c EINA_FALSE indicates
+ * they can't. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_genlist_highlight_mode_set() for details.
+ *
+ * @ingroup Genlist
+ */
+ EAPI Eina_Bool elm_genlist_highlight_mode_get(const Evas_Object *obj);
+
+ /**
+ * Set the genlist item's select mode.
+ *
+ * @param it The genlist item object
+ * @param mode The select mode
+ *
+ * elm_genlist_select_mode_set() changes item's select mode.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : The item will only call their selection func and
+ * callback when first becoming selected. Any further clicks will
+ * do nothing, unless you set always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click will make the selected callbacks be called.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select the item
+ * entirely and they will neither appear selected nor call selected
+ * callback functions.
+ * - ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY : This will apply no-finger-size rule
+ * with ELM_OBJECT_SELECT_MODE_NONE. No-finger-size rule makes an item can be
+ * smaller than lower limit. Clickable objects should be bigger than
+ * human touch point device (your finger) for some touch or
+ * small screen devices. So it is enabled, the item can be shrink than
+ * predefined finger-size value. And the item will be updated.
+ *
+ * @see elm_genlist_item_select_mode_get()
+ *
+ * @ingroup Genlist
+ */
+ EAPI void
+ elm_genlist_item_select_mode_set(Elm_Object_Item *it,
+ Elm_Object_Select_Mode mode);
+
+ /**
+ * Get the genlist item's select mode.
+ *
+ * @param it The genlist item object
+ * @return The select mode
+ * (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_genlist_item_select_mode_set()
+ *
+ * @ingroup Genlist
+ */
+ EAPI Elm_Object_Select_Mode
+ elm_genlist_item_select_mode_get(const Elm_Object_Item *it);
+
+ /**
+ * @}
+ */
++>>>>>>> remotes/origin/upstream
Evas_Object *obj;
void *data; /**< Holds gesture intemidiate processing data */
Func_Data fn[ELM_GESTURE_STATE_ABORT + 1]; /**< Callback info for states */
++<<<<<<< HEAD
+ Elm_Gesture_Types g_type; /**< gesture type */
++=======
+ Elm_Gesture_Type g_type; /**< gesture type */
++>>>>>>> remotes/origin/upstream
Elm_Gesture_State state; /**< gesture state */
void *info; /**< Data for the state callback */
Eina_Bool test; /**< if true this gesture should be tested on input */
static void _reset_states(Widget_Data *wd);
static void _key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info);
static void _key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info);
++<<<<<<< HEAD
+static void _zoom_with_wheel_test(Evas_Object *obj, void *event_info, Evas_Callback_Type event_type, Elm_Gesture_Types g_type);
++=======
+ static void _zoom_with_wheel_test(Evas_Object *obj, void *event_info, Evas_Callback_Type event_type, Elm_Gesture_Type g_type);
++>>>>>>> remotes/origin/upstream
static void _mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info);
static void _mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
}
static Eina_Bool
++<<<<<<< HEAD
+_inside(Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2)
+{
+ int w = elm_finger_size_get() >> 1; /* Finger size devided by 2 */
+ if (x1 < (x2 - w))
+ return EINA_FALSE;
+
+ if (x1 > (x2 + w))
+ return EINA_FALSE;
+
+ if (y1 < (y2 - w))
+ return EINA_FALSE;
+
+ if (y1 > (y2 + w))
++=======
+ _inside(Evas_Coord xx1, Evas_Coord yy1, Evas_Coord xx2, Evas_Coord yy2)
+ {
+ int w = _elm_config->finger_size >> 1; /* Finger size devided by 2 */
+ if (xx1 < (xx2 - w))
+ return EINA_FALSE;
+
+ if (xx1 > (xx2 + w))
+ return EINA_FALSE;
+
+ if (yy1 < (yy2 - w))
+ return EINA_FALSE;
+
+ if (yy1 > (yy2 + w))
++>>>>>>> remotes/origin/upstream
return EINA_FALSE;
return EINA_TRUE;
Eina_List *l;
Pointer_Event *p;
EINA_LIST_FOREACH(st->touched, l, p)
++<<<<<<< HEAD
+ free(p);
+
+ eina_list_free(st->touched);
+ if (st->timeout) ecore_timer_del(st->timeout);
++=======
+ free(p);
+
+ eina_list_free(st->touched);
+ if (st->timeout)
+ {
+ ecore_timer_del(st->timeout);
+ st->timeout = NULL;
+ }
++>>>>>>> remotes/origin/upstream
memset(gesture->data, 0, sizeof(Long_Tap_Type));
}
}
if (!eina_list_search_unsorted_list(list, device_in_pending_list,
++<<<<<<< HEAD
+ (intptr_t*) device))
+ {
+ return eina_list_append(list, (intptr_t*) device);
++=======
+ (void *)(intptr_t)device))
+ {
+ return eina_list_append(list, (void *)(intptr_t)device);
++>>>>>>> remotes/origin/upstream
}
return list;
}
return eina_list_search_unsorted_list(list, device_in_pending_list,
++<<<<<<< HEAD
+ (intptr_t *) device);
++=======
+ (void *)(intptr_t)device);
++>>>>>>> remotes/origin/upstream
}
/**
Gesture_Info *p;
Evas *e = evas_object_evas_get(obj);
Eina_Bool gesture_found = EINA_FALSE;
++<<<<<<< HEAD
+ for (i = ELM_GESTURE_FIRST ; i < ELM_GESTURE_LAST; i++)
++=======
+ for (i = ELM_GESTURE_FIRST; i < ELM_GESTURE_LAST; i++)
++>>>>>>> remotes/origin/upstream
{
p = wd->gesture[i];
if (p)
Pointer_Event *data;
EINA_LIST_FREE(wd->touched, data)
++<<<<<<< HEAD
+ free(data);
++=======
+ free(data);
++>>>>>>> remotes/origin/upstream
if (!elm_widget_disabled_get(obj))
_unregister_callbacks(obj);
(pe1->event_type != EVAS_CALLBACK_MOUSE_DOWN))
return 1;
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
if (pe1->device == pe2->device)
return 0;
else if (pe1->device < pe2->device)
static void
_n_long_tap_test(Evas_Object *obj, Pointer_Event *pe,
void *event_info, Evas_Callback_Type event_type,
++<<<<<<< HEAD
+ Elm_Gesture_Types g_type)
++=======
+ Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{ /* Here we fill Recent_Taps struct and fire-up click/tap timers */
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
* @ingroup Elm_Gesture_Layer
*/
static void
++<<<<<<< HEAD
+_set_momentum(Elm_Gesture_Momentum_Info *momentum, Evas_Coord x1, Evas_Coord y1,
+ Evas_Coord x2, Evas_Coord y2, unsigned int t1x, unsigned int t1y,
+ unsigned int t2)
+{
+ Evas_Coord velx = 0, vely = 0, vel;
+ Evas_Coord dx = x2 - x1;
+ Evas_Coord dy = y2 - y1;
++=======
+ _set_momentum(Elm_Gesture_Momentum_Info *momentum,
+ Evas_Coord xx1, Evas_Coord yy1,
+ Evas_Coord xx2, Evas_Coord yy2,
+ unsigned int t1x, unsigned int t1y, unsigned int t2)
+ {
+ Evas_Coord velx = 0, vely = 0, vel;
+ Evas_Coord dx = xx2 - xx1;
+ Evas_Coord dy = yy2 - yy1;
++>>>>>>> remotes/origin/upstream
int dtx = t2 - t1x;
int dty = t2 - t1y;
if (dtx > 0)
* @ingroup Elm_Gesture_Layer
*/
static double
++<<<<<<< HEAD
+get_angle(Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2)
+{
+ double a, xx, yy, rt = (-1);
+ xx = fabs(x2 - x1);
+ yy = fabs(y2 - y1);
+
+ if (((int) xx) && ((int) yy))
+ {
+ rt = a = RAD2DEG(atan(yy / xx));
+ if (x1 < x2)
+ {
+ if (y1 < y2)
+ {
+ rt = 360 - a;
+ }
+ else
+ {
+ rt = (a);
+ }
+ }
+ else
+ {
+ if (y1 < y2)
+ {
+ rt = 180 + a;
+ }
+ else
+ {
+ rt = 180 - a;
+ }
++=======
+ get_angle(Evas_Coord xx1, Evas_Coord yy1, Evas_Coord xx2, Evas_Coord yy2)
+ {
+ double a, xx, yy, rt = (-1);
+ xx = fabs(xx2 - xx1);
+ yy = fabs(yy2 - yy1);
+
+ if (((int)xx) && ((int)yy))
+ {
+ rt = a = RAD2DEG(atan(yy / xx));
+ if (xx1 < xx2)
+ {
+ if (yy1 < yy2) rt = 360 - a;
+ else rt = a;
+ }
+ else
+ {
+ if (yy1 < yy2) rt = 180 + a;
+ else rt = 180 - a;
++>>>>>>> remotes/origin/upstream
}
}
if (rt < 0)
{ /* Do this only if rt is not set */
++<<<<<<< HEAD
+ if (((int) xx))
+ { /* Horizontal line */
+ if (x2 < x1)
+ {
+ rt = 180;
+ }
+ else
+ {
+ rt = 0.0;
+ }
+ }
+ else
+ { /* Vertical line */
+ if (y2 < y1)
+ {
+ rt = 90;
+ }
+ else
+ {
+ rt = 270;
+ }
++=======
+ if (((int)xx))
+ { /* Horizontal line */
+ if (xx2 < xx1) rt = 180;
+ else rt = 0.0;
+ }
+ else
+ { /* Vertical line */
+ if (yy2 < yy1) rt = 90;
+ else rt = 270;
++>>>>>>> remotes/origin/upstream
}
}
* original circle 180 0 We want: 270 90
* 270 180
*/
++<<<<<<< HEAD
+
+ rt = 450 - rt;
+ if (rt >= 360)
+ rt -= 360;
++=======
+ rt = 450 - rt;
+ if (rt >= 360) rt -= 360;
++>>>>>>> remotes/origin/upstream
return rt;
}
* @ingroup Elm_Gesture_Layer
*/
static void
++<<<<<<< HEAD
+get_vector(Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2,
+ Evas_Coord *l, double *a)
+{
+ Evas_Coord xx, yy;
+ xx = x2 - x1;
+ yy = y2 - y1;
+ *l = (Evas_Coord) sqrt(xx*xx + yy*yy);
+ *a = get_angle(x1, y1, x2, y2);
+}
+
+static int
+_get_direction(Evas_Coord x1, Evas_Coord x2)
+{
+ if (x2 < x1)
+ return -1;
+
+ if (x2 > x1)
+ return 1;
+
++=======
+ get_vector(Evas_Coord xx1, Evas_Coord yy1, Evas_Coord xx2, Evas_Coord yy2,
+ Evas_Coord *l, double *a)
+ {
+ Evas_Coord xx, yy;
+ xx = xx2 - xx1;
+ yy = yy2 - yy1;
+ *l = (Evas_Coord) sqrt((xx * xx) + (yy * yy));
+ *a = get_angle(xx1, yy1, xx2, yy2);
+ }
+
+ static int
+ _get_direction(Evas_Coord xx1, Evas_Coord xx2)
+ {
+ if (xx2 < xx1) return -1;
+ if (xx2 > xx1) return 1;
++>>>>>>> remotes/origin/upstream
return 0;
}
/**
*/
static void
_momentum_test(Evas_Object *obj, Pointer_Event *pe,
++<<<<<<< HEAD
+ void *event_info, Evas_Callback_Type event_type,
+ Elm_Gesture_Types g_type)
++=======
+ void *event_info, Evas_Callback_Type event_type,
+ Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
*/
static void
_n_line_test(Evas_Object *obj, Pointer_Event *pe, void *event_info,
++<<<<<<< HEAD
+ Evas_Callback_Type event_type, Elm_Gesture_Types g_type)
++=======
+ Evas_Callback_Type event_type, Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{
if (!pe)
return;
/* We report ABORT if lines length are NOT matching when fingers are up */
++<<<<<<< HEAD
+ if ((longest_line_len - shortest_line_len) > (elm_finger_size_get()*2))
++=======
+ if ((longest_line_len - shortest_line_len) > (_elm_config->finger_size * 2))
++>>>>>>> remotes/origin/upstream
{
ev_flag = _set_state(gesture, ELM_GESTURE_STATE_ABORT, &st->info,
EINA_FALSE);
* @ingroup Elm_Gesture_Layer
*/
static Evas_Coord
++<<<<<<< HEAD
+get_finger_gap_length(Evas_Coord x1, Evas_Coord y1, Evas_Coord x2,
+ Evas_Coord y2, Evas_Coord *x, Evas_Coord *y)
+{
+ double a, b, xx, yy, gap;
+ xx = fabs(x2 - x1);
+ yy = fabs(y2 - y1);
+ gap = sqrt(xx*xx + yy*yy);
++=======
+ get_finger_gap_length(Evas_Coord xx1, Evas_Coord yy1,
+ Evas_Coord xx2, Evas_Coord yy2,
+ Evas_Coord *x, Evas_Coord *y)
+ {
+ double a, b, xx, yy, gap;
+ xx = fabs(xx2 - xx1);
+ yy = fabs(yy2 - yy1);
+ gap = sqrt((xx * xx) + (yy * yy));
++>>>>>>> remotes/origin/upstream
/* START - Compute zoom center point */
/* The triangle defined as follows:
* b
* http://en.wikipedia.org/wiki/Trigonometric_functions
*************************************/
++<<<<<<< HEAD
+ if (((int) xx) && ((int) yy))
++=======
+ if (((int)xx) && ((int)yy))
++>>>>>>> remotes/origin/upstream
{
double A = atan((yy / xx));
#if defined(DEBUG_GESTURE_LAYER)
#endif
a = (Evas_Coord) ((gap / 2) * sin(A));
b = (Evas_Coord) ((gap / 2) * cos(A));
++<<<<<<< HEAD
+ *x = (Evas_Coord) ((x2 > x1) ? (x1 + b) : (x2 + b));
+ *y = (Evas_Coord) ((y2 > y1) ? (y1 + a) : (y2 + a));
+ }
+ else
+ {
+ if ((int) xx)
++=======
+ *x = (Evas_Coord) ((xx2 > xx1) ? (xx1 + b) : (xx2 + b));
+ *y = (Evas_Coord) ((yy2 > yy1) ? (yy1 + a) : (yy2 + a));
+ }
+ else
+ {
+ if ((int)xx)
++>>>>>>> remotes/origin/upstream
{ /* horiz line, take half width */
#if defined(DEBUG_GESTURE_LAYER)
printf("==== HORIZ ====\n");
#endif
++<<<<<<< HEAD
+ *x = (Evas_Coord) (xx / 2);
+ *y = (Evas_Coord) (y1);
+ }
+
+ if ((int) yy)
++=======
+ *x = (Evas_Coord) ((xx1 + xx2) / 2);
+ *y = (Evas_Coord) (yy1);
+ }
+
+ if ((int)yy)
++>>>>>>> remotes/origin/upstream
{ /* vert line, take half width */
#if defined(DEBUG_GESTURE_LAYER)
printf("==== VERT ====\n");
#endif
++<<<<<<< HEAD
+ *x = (Evas_Coord) (x1);
+ *y = (Evas_Coord) (yy / 2);
++=======
+ *x = (Evas_Coord) (xx1);
+ *y = (Evas_Coord) ((yy1 + yy2) / 2);
++>>>>>>> remotes/origin/upstream
}
}
/* END - Compute zoom center point */
* @ingroup Elm_Gesture_Layer
*/
static double
++<<<<<<< HEAD
+compute_zoom(Zoom_Type *st, Evas_Coord x1, Evas_Coord y1,
+ Evas_Coord x2, Evas_Coord y2, double zoom_finger_factor)
+{
+ double rt = 1.0;
+ unsigned int tm_end = (st->zoom_mv.timestamp > st->zoom_mv1.timestamp) ?
+ st->zoom_mv.timestamp : st->zoom_mv1.timestamp;
+
+ Evas_Coord diam = get_finger_gap_length(x1, y1, x2, y2,
+ &st->info.x, &st->info.y);
++=======
+ compute_zoom(Zoom_Type *st,
+ Evas_Coord xx1, Evas_Coord yy1,
+ Evas_Coord xx2, Evas_Coord yy2,
+ double zoom_finger_factor)
+ {
+ double rt = 1.0;
+ unsigned int tm_end = (st->zoom_mv.timestamp > st->zoom_mv1.timestamp) ?
+ st->zoom_mv.timestamp : st->zoom_mv1.timestamp;
+
+ Evas_Coord diam = get_finger_gap_length(xx1, yy1, xx2, yy2,
+ &st->info.x, &st->info.y);
++>>>>>>> remotes/origin/upstream
st->info.radius = diam / 2;
/* We use factor only on the difference between gap-base */
/* if gap=120, base=100, we get ((120-100)/100)=0.2*factor */
rt = ((1.0) + ((((float) diam - (float) st->zoom_base) /
++<<<<<<< HEAD
+ (float) st->zoom_base) * zoom_finger_factor));
++=======
+ (float) st->zoom_base) * zoom_finger_factor));
++>>>>>>> remotes/origin/upstream
/* Momentum: zoom per second: */
st->info.momentum = _zoom_momentum_get(st, tm_end, rt);
*/
static void
_zoom_with_wheel_test(Evas_Object *obj, void *event_info,
++<<<<<<< HEAD
+ Evas_Callback_Type event_type, Elm_Gesture_Types g_type)
++=======
+ Evas_Callback_Type event_type, Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
*/
static void
_zoom_test(Evas_Object *obj, Pointer_Event *pe, void *event_info,
++<<<<<<< HEAD
+ Evas_Callback_Type event_type, Elm_Gesture_Types g_type)
++=======
+ Evas_Callback_Type event_type, Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{
if (!pe)
return;
static void
_get_rotate_properties(Rotate_Type *st,
++<<<<<<< HEAD
+ Evas_Coord x1, Evas_Coord y1,
+ Evas_Coord x2, Evas_Coord y2,
+ double *angle)
+{ /* FIXME: Fix momentum computation, it's wrong */
+ double prev_angle = *angle;
+ st->info.radius = get_finger_gap_length(x1, y1, x2, y2,
+ &st->info.x, &st->info.y) / 2;
+
+ *angle = get_angle(x1, y1, x2, y2);
+
++=======
+ Evas_Coord xx1, Evas_Coord yy1,
+ Evas_Coord xx2, Evas_Coord yy2,
+ double *angle)
+ { /* FIXME: Fix momentum computation, it's wrong */
+ double prev_angle = *angle;
+ st->info.radius = get_finger_gap_length(xx1, yy1, xx2, yy2,
+ &st->info.x, &st->info.y) / 2;
+
+ *angle = get_angle(xx1, yy1, xx2, yy2);
+
++>>>>>>> remotes/origin/upstream
if (angle == &st->info.angle)
{ /* Fingers are moving, compute momentum */
unsigned int tm_start =
*/
static void
_rotate_test(Evas_Object *obj, Pointer_Event *pe, void *event_info,
++<<<<<<< HEAD
+ Evas_Callback_Type event_type, Elm_Gesture_Types g_type)
++=======
+ Evas_Callback_Type event_type, Elm_Gesture_Type g_type)
++>>>>>>> remotes/origin/upstream
{
if (!pe)
return;
if (rotation_broke_tolerance(st))
{ /* Rotation broke tolerance, report move */
double d = st->info.angle - st->next_step;
++<<<<<<< HEAD
+ if (d < 0.0)
++=======
+ if (d < 0)
++>>>>>>> remotes/origin/upstream
d = (-d);
if (d >= wd->rotate_step)
*
* @ingroup Elm_Gesture_Layer
*/
++<<<<<<< HEAD
+void continues_gestures_restart(void *data, Eina_Bool states_reset)
++=======
+ static void
+ continues_gestures_restart(void *data, Eina_Bool states_reset)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
Pointer_Event _pe;
Pointer_Event *pe = NULL;
Widget_Data *wd = elm_widget_data_get(data);
++<<<<<<< HEAD
+ if (!wd) return;
++=======
++>>>>>>> remotes/origin/upstream
#if defined(DEBUG_GESTURE_LAYER)
int i;
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_gesture_layer_hold_events_get(Evas_Object *obj)
+{
++=======
+ elm_gesture_layer_hold_events_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
}
EAPI void
++<<<<<<< HEAD
+elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool r)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ wd->repeat_events = !r;
+}
+
+EAPI void
+elm_gesture_layer_zoom_step_set(Evas_Object *obj, double s)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (s < 0.0)
+ return;
+
+ wd->zoom_step = s;
+}
+
+EAPI void
+elm_gesture_layer_rotate_step_set(Evas_Object *obj, double s)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (s < 0.0)
+ return;
+
+ wd->rotate_step = s;
+}
+
+EAPI Eina_Bool
+elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *t)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ if (!t)
+ return EINA_FALSE;
++=======
+ elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool hold_events)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ wd->repeat_events = !(!!hold_events);
+ }
+
+ EAPI double
+ elm_gesture_layer_zoom_step_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+
+ return wd->zoom_step;
+ }
+
+ EAPI void
+ elm_gesture_layer_zoom_step_set(Evas_Object *obj, double step)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (step < 0) return;
+
+ wd->zoom_step = step;
+ }
+
+ EAPI double
+ elm_gesture_layer_rotate_step_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+
+ return wd->rotate_step;
+ }
+
+ EAPI void
+ elm_gesture_layer_rotate_step_set(Evas_Object *obj, double step)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (step < 0) return;
+
+ wd->rotate_step = step;
+ }
+
+ EAPI Eina_Bool
+ elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *target)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ if (!target) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
/* if was attached before, unregister callbacks first */
if (wd->target)
_unregister_callbacks(obj);
++<<<<<<< HEAD
+ wd->target = t;
++=======
+ wd->target = target;
++>>>>>>> remotes/origin/upstream
_register_callbacks(obj);
return EINA_TRUE;
}
EAPI void
++<<<<<<< HEAD
+elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Types idx,
+ Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data)
+{
++=======
+ elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Type idx,
+ Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
Gesture_Info *p;
if (!wd) return;
elm_widget_disable_hook_set(obj, _disable_hook);
wd->target = NULL;
++<<<<<<< HEAD
+ wd->line_min_length =_elm_config->glayer_line_min_length * elm_finger_size_get();
+ wd->zoom_distance_tolerance = _elm_config->glayer_zoom_distance_tolerance * elm_finger_size_get();
+ wd->line_distance_tolerance = _elm_config->glayer_line_distance_tolerance * elm_finger_size_get();
++=======
+ wd->line_min_length =_elm_config->glayer_line_min_length * _elm_config->finger_size;
+ wd->zoom_distance_tolerance = _elm_config->glayer_zoom_distance_tolerance * _elm_config->finger_size;
+ wd->line_distance_tolerance = _elm_config->glayer_line_distance_tolerance * _elm_config->finger_size;
++>>>>>>> remotes/origin/upstream
wd->zoom_finger_factor = _elm_config->glayer_zoom_finger_factor;
wd->zoom_wheel_factor = _elm_config->glayer_zoom_wheel_factor; /* mouse wheel zoom steps */
wd->rotate_angular_tolerance = _elm_config->glayer_rotate_angular_tolerance;
* Now you need to tell gesture layer what gestures you follow.
* This is done with @ref elm_gesture_layer_cb_set call.
* By setting the callback you actually saying to gesture layer:
++<<<<<<< HEAD
+ * I would like to know when the gesture @ref Elm_Gesture_Types
++=======
+ * I would like to know when the gesture @ref Elm_Gesture_Type
++>>>>>>> remotes/origin/upstream
* switches to state @ref Elm_Gesture_State.
*
* Next, you need to implement the actual action that follows the input
* (again with @ref elm_gesture_layer_cb_set)
*
* The information reported by gesture layer to your callback is depending
++<<<<<<< HEAD
+ * on @ref Elm_Gesture_Types:
++=======
+ * on @ref Elm_Gesture_Type:
++>>>>>>> remotes/origin/upstream
* @ref Elm_Gesture_Taps_Info is the info reported for tap gestures:
* @ref ELM_GESTURE_N_TAPS, @ref ELM_GESTURE_N_LONG_TAPS,
* @ref ELM_GESTURE_N_DOUBLE_TAPS, @ref ELM_GESTURE_N_TRIPLE_TAPS.
ELM_GESTURE_N_DOUBLE_TAPS, /**< N fingers double-single taps */
ELM_GESTURE_N_TRIPLE_TAPS, /**< N fingers triple-single taps */
++<<<<<<< HEAD
+ ELM_GESTURE_MOMENTUM, /**< Reports momentum in the dircetion of move */
++=======
+ ELM_GESTURE_MOMENTUM, /**< Reports momentum in the direction of move */
++>>>>>>> remotes/origin/upstream
ELM_GESTURE_N_LINES, /**< N fingers line gesture */
ELM_GESTURE_N_FLICKS, /**< N fingers flick gesture */
ELM_GESTURE_ROTATE, /**< Rotate */
ELM_GESTURE_LAST
++<<<<<<< HEAD
+} Elm_Gesture_Types;
++=======
+ } Elm_Gesture_Type;
++>>>>>>> remotes/origin/upstream
/**
* @enum _Elm_Gesture_State
ELM_GESTURE_STATE_START, /**< Gesture STARTed */
ELM_GESTURE_STATE_MOVE, /**< Gesture is ongoing */
ELM_GESTURE_STATE_END, /**< Gesture completed */
++<<<<<<< HEAD
+ ELM_GESTURE_STATE_ABORT /**< Onging gesture was ABORTed */
++=======
+ ELM_GESTURE_STATE_ABORT /**< Ongoing gesture was ABORTed */
++>>>>>>> remotes/origin/upstream
} Elm_Gesture_State;
/**
* it means user isn't interested in gesture-state
* and it will not be tested.
*
++<<<<<<< HEAD
+ * @param obj Pointer to gesture-layer.
++=======
+ * @param obj gesture-layer.
++>>>>>>> remotes/origin/upstream
* @param idx The gesture you would like to track its state.
* @param cb callback function pointer.
* @param cb_type what event this callback tracks: START, MOVE, END, ABORT.
*
* @ingroup Elm_Gesture_Layer
*/
++<<<<<<< HEAD
+EAPI void elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Types idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data);
++=======
+ EAPI void elm_gesture_layer_cb_set(Evas_Object *obj, Elm_Gesture_Type idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data);
++>>>>>>> remotes/origin/upstream
/**
* Call this function to get repeat-events settings.
*
++<<<<<<< HEAD
+ * @param obj Pointer to gesture-layer.
++=======
+ * @param obj gesture-layer.
++>>>>>>> remotes/origin/upstream
*
* @return repeat events settings.
* @see elm_gesture_layer_hold_events_set()
* @ingroup Elm_Gesture_Layer
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_gesture_layer_hold_events_get(Evas_Object *obj);
+
+/**
+ * This function called in order to make gesture-layer repeat events.
+ * Set this of you like to get the raw events only if gestures were not detected.
+ * Clear this if you like gesture layer to fwd events as testing gestures.
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param r Repeat: TRUE/FALSE
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+EAPI void elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool r);
++=======
+ EAPI Eina_Bool elm_gesture_layer_hold_events_get(const Evas_Object *obj);
+
+ /**
+ * This function is to make gesture-layer repeat events.
+ * Set this if you like to get the raw events only if gestures were not
+ * detected.
+ * Clear this if you like gesture layer to forward events as testing gestures.
+ *
+ * @param obj gesture layer.
+ * @param hold_events hold events or not.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_hold_events_set(Evas_Object *obj, Eina_Bool hold_events);
++>>>>>>> remotes/origin/upstream
/**
* This function sets step-value for zoom action.
* Set step to any positive value.
++<<<<<<< HEAD
+ * Cancel step setting by setting to 0.0
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param s new zoom step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+EAPI void elm_gesture_layer_zoom_step_set(Evas_Object *obj, double s);
++=======
+ * Cancel step setting by setting to 0
+ *
+ * @param obj gesture-layer.
+ * @param step new zoom step value.
+ *
+ * @see elm_gesture_layer_zoom_step_get()
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_zoom_step_set(Evas_Object *obj, double step);
+
+ /**
+ * This function returns step-value for zoom action.
+ *
+ * @param obj gesture-layer.
+ * @return zoom step value.
+ *
+ * @see elm_gesture_layer_zoom_step_set()
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI double elm_gesture_layer_zoom_step_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* This function sets step-value for rotate action.
* Set step to any positive value.
++<<<<<<< HEAD
+ * Cancel step setting by setting to 0.0
+ *
+ * @param obj Pointer to gesture-layer.
+ * @param s new roatate step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+EAPI void elm_gesture_layer_rotate_step_set(Evas_Object *obj, double s);
+
+/**
+ * This function called to attach gesture-layer to an Evas_Object.
+ * @param obj Pointer to gesture-layer.
+ * @param t Pointer to underlying object (AKA Target)
++=======
+ * Cancel step setting by setting to 0
+ *
+ * @param obj gesture-layer.
+ * @param step new rotate step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI void elm_gesture_layer_rotate_step_set(Evas_Object *obj, double step);
+
+ /**
+ * This function returns step-value for rotate action.
+ *
+ * @param obj gesture-layer.
+ * @return rotate step value.
+ *
+ * @ingroup Elm_Gesture_Layer
+ */
+ EAPI double elm_gesture_layer_rotate_step_get(const Evas_Object *obj);
+
+ /**
+ * This function called to attach gesture-layer to an Evas_Object.
+ * @param obj gesture-layer.
+ * @param target Pointer to underlying object (AKA Target)
++>>>>>>> remotes/origin/upstream
*
* @return TRUE, FALSE on success, failure.
*
* @ingroup Elm_Gesture_Layer
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *t);
++=======
+ EAPI Eina_Bool elm_gesture_layer_attach(Evas_Object *obj, Evas_Object *target);
++>>>>>>> remotes/origin/upstream
/**
* Call this function to construct a new gesture-layer object.
*
* @param parent the parent object.
*
++<<<<<<< HEAD
+ * @return Pointer to new gesture-layer object.
++=======
+ * @return new gesture-layer object.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Elm_Gesture_Layer
*/
* ./autogen.sh
* @endverbatim
*
++<<<<<<< HEAD
+ * This will generate Makefile.in's, the confgure script and everything else.
++=======
+ * This will generate Makefile.in's, the configure script and everything else.
++>>>>>>> remotes/origin/upstream
* After this it works like all normal autotools projects:
* @verbatim
* ./configure
* specify a different prefix with configure:
*
* @verbatim
++<<<<<<< HEAD
+ * ./confiugre --prefix=$HOME/mysoftware
++=======
+ * ./configure --prefix=$HOME/mysoftware
++>>>>>>> remotes/origin/upstream
* @endverbatim
*
* Also remember that autotools buys you some useful commands like:
* // add a box object - default is vertical. a box holds children in a row,
* // either horizontally or vertically. nothing more.
* box = elm_box_add(win);
++<<<<<<< HEAD
+ * // make the box hotizontal
++=======
+ * // make the box horizontal
++>>>>>>> remotes/origin/upstream
* elm_box_horizontal_set(box, EINA_TRUE);
* // add object as a resize object for the window (controls window minimum
* // size as well as gets resized if window is resized)
struct _Widget_Data
{
++<<<<<<< HEAD
+ Evas_Object *glview_image;
++=======
+ Evas_Object *glview_image;
++>>>>>>> remotes/origin/upstream
Elm_GLView_Mode mode;
Elm_GLView_Resize_Policy scale_policy;
wd->w = w;
wd->h = h;
_glview_update_surface(data);
++<<<<<<< HEAD
+ /*
+ if (wd->render_func)
+ {
+ evas_gl_make_current(wd->evasgl, wd->surface, wd->context);
+ wd->render_func(data);
+ }
+ */
++=======
++>>>>>>> remotes/origin/upstream
}
}
}
EAPI void
++<<<<<<< HEAD
+elm_glview_size_set(Evas_Object *obj, int width, int height)
++=======
+ elm_glview_size_set(Evas_Object *obj, int w, int h)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if ((width == wd->w) && (height == wd->h)) return;
+ wd->w = width;
+ wd->h = height;
++=======
+ if ((w == wd->w) && (h == wd->h)) return;
+ wd->w = w;
+ wd->h = h;
++>>>>>>> remotes/origin/upstream
_glview_update_surface(obj);
elm_glview_changed_set(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_glview_size_get(const Evas_Object *obj, int *width, int *height)
++=======
+ elm_glview_size_get(const Evas_Object *obj, int *w, int *h)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (width) *width = wd->w;
+ if (height) *height = wd->h;
++=======
+ if (w) *w = wd->w;
+ if (h) *h = wd->h;
++>>>>>>> remotes/origin/upstream
}
EAPI void
/**
* @defgroup GLView GLView
*
++<<<<<<< HEAD
+ * A simple GLView widget that allows GL rendering.
+ *
+ * Signals that you can add callbacks for are:
+ *
++=======
+ * A GLView widget allows for simple GL rendering in elementary environment.
+ * GLView hides all the complicated evas_gl details so that the user only
+ * has to deal with registering a few callback functions for rendering
+ * to a surface using OpenGL APIs.
+ *
+ * Below is an illustrative example of how to use GLView and and OpenGL
+ * to render in elementary environment.
+ * @code
+ // Simple GLView example
+ #include <Elementary.h>
+ #include <Evas_GL.h>
+ #include <stdio.h>
+
+ typedef struct _GLData GLData;
+
+ // GL related data here..
+ struct _GLData
+ {
+ Evas_GL_API *glapi;
+ GLuint program;
+ GLuint vtx_shader;
+ GLuint fgmt_shader;
+ GLuint vbo;
+ int initialized : 1;
+ };
+
+
+ static float red = 1.0;
+
+ //--------------------------------//
+ // a helper function to load shaders from a shader source
+ static GLuint
+ load_shader( GLData *gld, GLenum type, const char *shader_src )
+ {
+ Evas_GL_API *gl = gld->glapi;
+ GLuint shader;
+ GLint compiled;
+
+ // Create the shader object
+ shader = gl->glCreateShader(type);
+ if (shader==0)
+ return 0;
+
+ // Load/Compile shader source
+ gl->glShaderSource(shader, 1, &shader_src, NULL);
+ gl->glCompileShader(shader);
+ gl->glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
+
+ if (!compiled)
+ {
+ GLint info_len = 0;
+ gl->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &info_len);
+ if (info_len > 1)
+ {
+ char* info_log = malloc(sizeof(char) * info_len);
+
+ gl->glGetShaderInfoLog(shader, info_len, NULL, info_log);
+ printf("Error compiling shader:\n%s\n======\n%s\n======\n", info_log, shader_src );
+ free(info_log);
+ }
+ gl->glDeleteShader(shader);
+ return 0;
+ }
+
+ return shader;
+ }
+
+ // Initialize the shader and program object
+ static int
+ init_shaders(GLData *gld)
+ {
+ Evas_GL_API *gl = gld->glapi;
+ GLbyte vShaderStr[] =
+ "attribute vec4 vPosition; \n"
+ "void main() \n"
+ "{ \n"
+ " gl_Position = vPosition; \n"
+ "} \n";
+
+ GLbyte fShaderStr[] =
+ "#ifdef GL_ES \n"
+ "precision mediump float; \n"
+ "#endif \n"
+ "void main() \n"
+ "{ \n"
+ " gl_FragColor = vec4 ( 1.0, 0.0, 0.0, 1.0 );\n"
+ "} \n";
+
+ GLint linked;
+
+ // Load the vertex/fragment shaders
+ gld->vtx_shader = load_shader(gld, GL_VERTEX_SHADER, (const char*)vShaderStr);
+ gld->fgmt_shader = load_shader(gld, GL_FRAGMENT_SHADER, (const char*)fShaderStr);
+
+ // Create the program object
+ gld->program = gl->glCreateProgram( );
+ if (gld->program==0)
+ return 0;
+
+ gl->glAttachShader(gld->program, gld->vtx_shader);
+ gl->glAttachShader(gld->program, gld->fgmt_shader);
+
+ gl->glBindAttribLocation(gld->program, 0, "vPosition");
+ gl->glLinkProgram(gld->program);
+ gl->glGetProgramiv(gld->program, GL_LINK_STATUS, &linked);
+
+ if (!linked)
+ {
+ GLint info_len = 0;
+ gl->glGetProgramiv(gld->program, GL_INFO_LOG_LENGTH, &info_len);
+ if (info_len > 1)
+ {
+ char* info_log = malloc(sizeof(char) * info_len);
+
+ gl->glGetProgramInfoLog(gld->program, info_len, NULL, info_log);
+ printf("Error linking program:\n%s\n", info_log);
+ free(info_log);
+ }
+ gl->glDeleteProgram(gld->program);
+ return 0;
+ }
+ return 1;
+ }
+
+
+
+ // Callbacks
+ // intialize callback that gets called once for intialization
+ static void
+ _init_gl(Evas_Object *obj)
+ {
+ GLData *gld = evas_object_data_get(obj, "gld");
+ Evas_GL_API *gl = gld->glapi;
+ GLfloat vVertices[] = { 0.0f, 0.5f, 0.0f,
+ -0.5f, -0.5f, 0.0f,
+ 0.5f, -0.5f, 0.0f };
+
+ if (!init_shaders(gld))
+ {
+ printf("Error Initializing Shaders\n");
+ return;
+ }
+
+ gl->glGenBuffers(1, &gld->vbo);
+ gl->glBindBuffer(GL_ARRAY_BUFFER, gld->vbo);
+ gl->glBufferData(GL_ARRAY_BUFFER, 3 * 3 * 4, vVertices, GL_STATIC_DRAW);
+ }
+
+ // delete callback gets called when glview is deleted
+ static void
+ _del_gl(Evas_Object *obj)
+ {
+ GLData *gld = evas_object_data_get(obj, "gld");
+ if (!gld)
+ {
+ printf("Unable to get GLData. \n");
+ return;
+ }
+ Evas_GL_API *gl = gld->glapi;
+
+ gl->glDeleteShader(gld->vtx_shader);
+ gl->glDeleteShader(gld->fgmt_shader);
+ gl->glDeleteProgram(gld->program);
+ gl->glDeleteBuffers(1, &gld->vbo);
+
+ evas_object_data_del((Evas_Object*)obj, "..gld");
+ free(gld);
+ }
+
+ // resize callback gets called every time object is resized
+ static void
+ _resize_gl(Evas_Object *obj)
+ {
+ int w, h;
+ GLData *gld = evas_object_data_get(obj, "gld");
+ Evas_GL_API *gl = gld->glapi;
+
+ elm_glview_size_get(obj, &w, &h);
+
+ // GL Viewport stuff. you can avoid doing this if viewport is all the
+ // same as last frame if you want
+ gl->glViewport(0, 0, w, h);
+ }
+
+
+ // draw callback is where all the main GL rendering happens
+ static void
+ _draw_gl(Evas_Object *obj)
+ {
+ Evas_GL_API *gl = elm_glview_gl_api_get(obj);
+ GLData *gld = evas_object_data_get(obj, "gld");
+ if (!gld) return;
+ int w, h;
+
+ elm_glview_size_get(obj, &w, &h);
+
+ gl->glViewport(0, 0, w, h);
+ gl->glClearColor(red,0.8,0.3,1);
+ gl->glClear(GL_COLOR_BUFFER_BIT);
+
+ // Draw a Triangle
+ gl->glEnable(GL_BLEND);
+
+ gl->glUseProgram(gld->program);
+
+ gl->glBindBuffer(GL_ARRAY_BUFFER, gld->vbo);
+ gl->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
+ 0, 0);
+ gl->glEnableVertexAttribArray(0);
+
+ gl->glDrawArrays(GL_TRIANGLES, 0, 3);
+
+ // Optional - Flush the GL pipeline
+ gl->glFinish();
+
+ red -= 0.1;
+ if (red < 0.0) red = 1.0;
+ }
+
+ // just need to notify that glview has changed so it can render
+ static Eina_Bool
+ _anim(void *data)
+ {
+ elm_glview_changed_set(data);
+ return EINA_TRUE;
+ }
+
+ static void
+ _on_done(void *data, Evas_Object *obj, void *event_info)
+ {
+ evas_object_del((Evas_Object*)data);
+ elm_exit();
+ }
+
+ static void
+ _del(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+ {
+ Ecore_Animator *ani = evas_object_data_get(obj, "ani");
+ ecore_animator_del(ani);
+ }
+
+
+ EAPI int
+ elm_main(int argc, char **argv)
+ {
+ Evas_Object *win, *bg, *bx, *bt, *gl;
+ Ecore_Animator *ani;
+ GLData *gld = NULL;
+
+ if (!(gld = calloc(1, sizeof(GLData)))) return 1;
+
+ // set the engine to opengl_x11
+ // if commented out, ELM will choose one
+ elm_engine_set("opengl_x11");
+
+ win = elm_win_add(NULL, "glview simple", ELM_WIN_BASIC);
+ elm_win_title_set(win, "GLView Simple");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ //-//-//-// THIS IS WHERE GL INIT STUFF HAPPENS (ALA EGL)
+ //-//
+ // create a new glview object
+ gl = elm_glview_add(win);
+ gld->glapi = elm_glview_gl_api_get(gl);
+ evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ // mode is simply for supporting alpha, depth buffering, and stencil
+ // buffering.
+ elm_glview_mode_set(gl, ELM_GLVIEW_ALPHA | ELM_GLVIEW_DEPTH);
+ // resize policy tells glview what to do with the surface when it
+ // resizes. ELM_GLVIEW_RESIZE_POLICY_RECREATE will tell it to
+ // destroy the current surface and recreate it to the new size
+ elm_glview_resize_policy_set(gl, ELM_GLVIEW_RESIZE_POLICY_RECREATE);
+ // render policy tells glview how it would like glview to render
+ // gl code. ELM_GLVIEW_RENDER_POLICY_ON_DEMAND will have the gl
+ // calls called in the pixel_get callback, which only gets called
+ // if the object is visible, hence ON_DEMAND. ALWAYS mode renders
+ // it despite the visibility of the object.
+ elm_glview_render_policy_set(gl, ELM_GLVIEW_RENDER_POLICY_ON_DEMAND);
+ // initialize callback function gets registered here
+ elm_glview_init_func_set(gl, _init_gl);
+ // delete callback function gets registered here
+ elm_glview_del_func_set(gl, _del_gl);
+ elm_glview_resize_func_set(gl, _resize_gggl);
+ elm_glview_render_func_set(gl, _draw_gl);
+ //-//
+ //-//-//-// END GL INIT BLOB
+
+ elm_box_pack_end(bx, gl);
+ evas_object_show(gl);
+
+ elm_object_focus_set(gl, EINA_TRUE);
+
+ // animating - just a demo. as long as you trigger an update on the image
+ // object via elm_glview_changed_set() it will be updated.
+ //
+ // NOTE: if you delete gl, this animator will keep running trying to access
+ // gl so you'd better delete this animator with ecore_animator_del().
+ ani = ecore_animator_add(_anim, gl);
+
+ evas_object_data_set(gl, "ani", ani);
+ evas_object_data_set(gl, "gld", gld);
+ evas_object_event_callback_add(gl, EVAS_CALLBACK_DEL, _del, gl);
+
+ // add an 'OK' button to end the program
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "OK");
+ evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+ evas_object_smart_callback_add(bt, "clicked", _on_done, win);
+
+ evas_object_resize(win, 320, 480);
+ evas_object_show(win);
+
+ // run the mainloop and process events and callbacks
+ elm_run();
+ return 0;
+ }
+ ELM_MAIN()
+ * @endcode
+ */
+
+
+
+ /**
+ * @addtogroup GLView
++>>>>>>> remotes/origin/upstream
* @{
*/
typedef enum _Elm_GLView_Mode
{
++<<<<<<< HEAD
+ ELM_GLVIEW_NONE = 0,
+ ELM_GLVIEW_ALPHA = (1<<1),
+ ELM_GLVIEW_DEPTH = (1<<2),
+ ELM_GLVIEW_STENCIL = (1<<3),
+ ELM_GLVIEW_DIRECT = (1<<4)
+} Elm_GLView_Mode;
+
+/**
+ * Defines a policy for the glview resizing.
++=======
+ ELM_GLVIEW_NONE = 0,
+ ELM_GLVIEW_ALPHA = (1<<1), /**< Alpha channel enabled rendering mode */
+ ELM_GLVIEW_DEPTH = (1<<2), /**< Depth buffer enabled rendering mode */
+ ELM_GLVIEW_STENCIL = (1<<3), /**< Stencil buffer enabled rendering mode */
+ ELM_GLVIEW_DIRECT = (1<<4) /**< Direct rendering optimization hint */
+ } Elm_GLView_Mode;
+
+ /**
+ * Defines a policy for the glview resizing.
+ *
+ * The resizing policy tells glview what to do with the underlying
+ * surface when resize happens. ELM_GLVIEW_RESIZE_POLICY_RECREATE
+ * will destroy the current surface and recreate the surface to the
+ * new size. ELM_GLVIEW_RESIZE_POLICY_SCALE will instead keep the
+ * current surface but only display the result at the desired size
+ * scaled.
++>>>>>>> remotes/origin/upstream
*
* @note Default is ELM_GLVIEW_RESIZE_POLICY_RECREATE
*/
typedef enum
{
ELM_GLVIEW_RESIZE_POLICY_RECREATE = 1, /**< Resize the internal surface along with the image */
++<<<<<<< HEAD
+ ELM_GLVIEW_RESIZE_POLICY_SCALE = 2 /**< Only reize the internal image and not the surface */
+} Elm_GLView_Resize_Policy;
+
+typedef enum
+{
+ ELM_GLVIEW_RENDER_POLICY_ON_DEMAND = 1, /**< Render only when there is a need for redrawing */
+ ELM_GLVIEW_RENDER_POLICY_ALWAYS = 2 /**< Render always even when it is not visible */
++=======
+ ELM_GLVIEW_RESIZE_POLICY_SCALE = 2 /**< Only resize the internal image and not the surface */
+ } Elm_GLView_Resize_Policy;
+
+ /**
+ * Defines a policy for gl rendering.
+ *
+ * The rendering policy tells glview where to run the gl rendering code.
+ * ELM_GLVIEW_RENDER_POLICY_ON_DEMAND tells glview to call the rendering
+ * calls on demand, which means that the rendering code gets called
+ * only when it is visible.
+ *
+ * @note Default is ELM_GLVIEW_RENDER_POLICY_ON_DEMAND
+ */
+ typedef enum
+ {
+ ELM_GLVIEW_RENDER_POLICY_ON_DEMAND = 1, /**< Render only when there is a need for redrawing */
+ ELM_GLVIEW_RENDER_POLICY_ALWAYS = 2 /**< Render always even when it is not visible */
++>>>>>>> remotes/origin/upstream
} Elm_GLView_Render_Policy;
/**
* Sets the size of the glview
*
* @param obj The glview object
++<<<<<<< HEAD
+ * @param width width of the glview object
+ * @param height height of the glview object
+ *
+ * @ingroup GLView
+ */
+EAPI void elm_glview_size_set(Evas_Object *obj, Evas_Coord width, Evas_Coord height);
++=======
+ * @param w width of the glview object
+ * @param h height of the glview object
+ *
+ * @ingroup GLView
+ */
+ EAPI void elm_glview_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
++>>>>>>> remotes/origin/upstream
/**
* Gets the size of the glview.
*
* @param obj The glview object
++<<<<<<< HEAD
+ * @param width width of the glview object
+ * @param height height of the glview object
++=======
+ * @param w width of the glview object
+ * @param h height of the glview object
++>>>>>>> remotes/origin/upstream
*
* Note that this function returns the actual image size of the
* glview. This means that when the scale policy is set to
*
* @ingroup GLView
*/
++<<<<<<< HEAD
+EAPI void elm_glview_size_get(const Evas_Object *obj, Evas_Coord *width, Evas_Coord *height);
++=======
+ EAPI void elm_glview_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
++>>>>>>> remotes/origin/upstream
/**
* Gets the gl api struct for gl rendering
EAPI Evas_GL_API *elm_glview_gl_api_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the mode of the GLView. Supports Three simple modes.
+ *
+ * @param obj The glview object
+ * @param mode The mode Options OR'ed enabling Alpha, Depth, Stencil.
+ * @return True if set properly.
+ *
++=======
+ * Set the mode of the GLView. Supports alpha, depth, stencil.
+ *
+ * @param obj The glview object
+ * @param mode The mode Options OR'ed enabling Alpha, Depth, Stencil, Direct.
+ * @return True if set properly.
+ *
+ * Direct is a hint for the elm_glview to render directly to the window
+ * given that the right conditions are met. Otherwise it falls back
+ * to rendering to an offscreen buffer before it gets composited to the
+ * window.
+ *
++>>>>>>> remotes/origin/upstream
* @ingroup GLView
*/
EAPI Eina_Bool elm_glview_mode_set(Evas_Object *obj, Elm_GLView_Mode mode);
* @param obj The glview object.
* @param policy The scaling policy.
*
++<<<<<<< HEAD
+ * By default, the resize policy is set to
+ * ELM_GLVIEW_RESIZE_POLICY_RECREATE. When resize is called it
+ * destroys the previous surface and recreates the newly specified
+ * size. If the policy is set to ELM_GLVIEW_RESIZE_POLICY_SCALE,
+ * however, glview only scales the image object and not the underlying
+ * GL Surface.
++=======
+ * By default, the resize policy is set to ELM_GLVIEW_RESIZE_POLICY_RECREATE.
+ * When resize is called it destroys the previous surface and recreates the
+ * newly specified size. If the policy is set to
+ * ELM_GLVIEW_RESIZE_POLICY_SCALE, however, glview only scales the image
+ * object and not the underlying GL Surface.
++>>>>>>> remotes/origin/upstream
*
* @ingroup GLView
*/
* @param obj The glview object.
* @param policy The render policy.
*
++<<<<<<< HEAD
+ * By default, the render policy is set to
+ * ELM_GLVIEW_RENDER_POLICY_ON_DEMAND. This policy is set such
+ * that during the render loop, glview is only redrawn if it needs
+ * to be redrawn. (i.e. When it is visible) If the policy is set to
+ * ELM_GLVIEWW_RENDER_POLICY_ALWAYS, it redraws regardless of
+ * whether it is visible/need redrawing or not.
++=======
+ * By default, the render policy is set to ELM_GLVIEW_RENDER_POLICY_ON_DEMAND.
+ * This policy is set such that during the render loop, glview is only
+ * redrawn if it needs to be redrawn. (i.e. when it is visible) If the policy
+ * is set to ELM_GLVIEWW_RENDER_POLICY_ALWAYS, it redraws regardless of
+ * whether it is visible or needs redrawing.
++>>>>>>> remotes/origin/upstream
*
* @ingroup GLView
*/
* @param obj The glview object.
* @param func The init function to be registered.
*
++<<<<<<< HEAD
+ * The registered init function gets called once during the render loop.
++=======
+ * The registered init function gets called once during the render loop.
+ * This function allows glview to hide all the rendering context/surface
+ * details and have the user just call GL calls that they desire
+ * for initialization GL calls.
++>>>>>>> remotes/origin/upstream
*
* @ingroup GLView
*/
* @param func The delete function to be registered.
*
* The registered del function gets called when GLView object is deleted.
++<<<<<<< HEAD
++=======
+ * This function allows glview to hide all the rendering context/surface
+ * details and have the user just call GL calls that they desire
+ * when delete happens.
++>>>>>>> remotes/origin/upstream
*
* @ingroup GLView
*/
* @param obj The glview object.
* @param func The resize function to be registered.
*
++<<<<<<< HEAD
++=======
+ * The resize function gets called during the render loop.
+ * This function allows glview to hide all the rendering context/surface
+ * details and have the user just call GL calls that they desire
+ * when resize happens.
+ *
++>>>>>>> remotes/origin/upstream
* @ingroup GLView
*/
EAPI void elm_glview_resize_func_set(Evas_Object *obj, Elm_GLView_Func_Cb func);
/**
* Set the render function that runs in the main loop.
*
++<<<<<<< HEAD
++=======
+ * The render function gets called in the main loop but whether it runs
+ * depends on the rendering policy and whether elm_glview_changed_set()
+ * gets called.
+ *
++>>>>>>> remotes/origin/upstream
* @param obj The glview object.
* @param func The render function to be registered.
*
dir, next);
if (list_free)
++<<<<<<< HEAD
+ list_free((Eina_List *)items);
++=======
+ list_free((Eina_List *)items);
++>>>>>>> remotes/origin/upstream
return ret;
}
Widget_Data *wd;
ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
++<<<<<<< HEAD
+
+ ELM_SET_WIDTYPE(widtype, "grid");
+ wd->obj = obj;
++=======
+ ELM_SET_WIDTYPE(widtype, "grid");
++>>>>>>> remotes/origin/upstream
elm_widget_type_set(obj, "grid");
elm_widget_sub_object_add(parent, obj);
elm_widget_data_set(obj, wd);
}
EAPI void
++<<<<<<< HEAD
+elm_grid_size_set(Evas_Object *obj, int w, int h)
++=======
+ elm_grid_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_grid_size_get(Evas_Object *obj, int *w, int *h)
++=======
+ elm_grid_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h)
++=======
+ elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h)
++=======
+ elm_grid_pack_set(Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *obj = elm_widget_parent_widget_get(subobj);
ELM_CHECK_WIDTYPE(obj, widtype);
if (!wd) return;
evas_object_grid_pack_get(wd->grd, subobj, x, y, w, h);
}
++<<<<<<< HEAD
++=======
+
+ EAPI Eina_List *
+ elm_grid_children_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ return evas_object_grid_children_get(wd->grd);
+ }
++>>>>>>> remotes/origin/upstream
*
* @ingroup Grid
*/
++<<<<<<< HEAD
+EAPI void elm_grid_size_set(Evas_Object *obj, int w, int h);
++=======
+ EAPI void elm_grid_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
++>>>>>>> remotes/origin/upstream
/**
* Get the virtual size of the grid
*
* @ingroup Grid
*/
++<<<<<<< HEAD
+EAPI void elm_grid_size_get(Evas_Object *obj, int *w, int *h);
++=======
+ EAPI void elm_grid_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
++>>>>>>> remotes/origin/upstream
/**
* Pack child at given position and size
*
* @ingroup Grid
*/
++<<<<<<< HEAD
+EAPI void elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, int x, int y, int w, int h);
++=======
+ EAPI void elm_grid_pack(Evas_Object *obj, Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
++>>>>>>> remotes/origin/upstream
/**
* Unpack a child from a grid object
*
* @ingroup Grid
*/
++<<<<<<< HEAD
+EAPI void elm_grid_pack_set(Evas_Object *subobj, int x, int y, int w, int h);
+
+/**
+ * get packing of a child
++=======
+ EAPI void elm_grid_pack_set(Evas_Object *subobj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+
+ /**
+ * Get packing of a child
++>>>>>>> remotes/origin/upstream
*
* @param subobj The child to query
* @param x Pointer to integer to store the virtual x coord
*
* @ingroup Grid
*/
++<<<<<<< HEAD
+EAPI void elm_grid_pack_get(Evas_Object *subobj, int *x, int *y, int *w, int *h);
++=======
+ EAPI void elm_grid_pack_get(Evas_Object *subobj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+ /**
+ * Get the list of the children for the grid.
+ *
+ * @param obj The grid object
+ *
+ * @note This is a duplicate of the list kept by the grid internally.
+ It's up to the user to destroy it when it no longer needs it.
+ It's possible to remove objects from the grid when walking this
+ list, but these removals won't be reflected on it.
+ *
+ * @ingroup Grid
+ */
+ EAPI Eina_List *elm_grid_children_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
_elm_hover_sub_obj_placement_eval(data);
}
++<<<<<<< HEAD
+EAPI void
+elm_hover_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content)
+{
+ _content_set_hook(obj, swallow, content);
+}
+
+EAPI Evas_Object *
+elm_hover_content_get(const Evas_Object *obj, const char *swallow)
+{
+ return _content_get_hook(obj, swallow);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_elm_hover_sub_obj_unparent(Evas_Object *obj)
{
wd->smt_sub = NULL;
}
++<<<<<<< HEAD
+EAPI Evas_Object *
+elm_hover_content_unset(Evas_Object *obj, const char *swallow)
+{
+ return _content_unset_hook(obj, swallow);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI const char *
elm_hover_best_content_location_get(const Evas_Object *obj, Elm_Hover_Axis pref_axis)
{
* @li "smart,changed" - a content object placed under the "smart"
* policy was replaced to a new slot direction.
*
++<<<<<<< HEAD
+ * Default contents parts of the hover widget that you can use for are:
++=======
+ * Default content parts of the hover widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "left"
* @li "top-left"
* @li "top"
* @li "middle"
* @li "smart"
*
++<<<<<<< HEAD
+ * @note These contents parts indicates the direction that the content will be
++=======
+ * @note These content parts indicates the direction that the content will be
++>>>>>>> remotes/origin/upstream
* displayed
*
* All directions may have contents at the same time, except for
* "smart". This is a special placement hint and its use case
++<<<<<<< HEAD
+ * independs of the calculations coming from
++=======
+ * depends of the calculations coming from
++>>>>>>> remotes/origin/upstream
* elm_hover_best_content_location_get(). Its use is for cases when
* one desires only one hover content, but with a dynamic special
* placement within the hover area. The content's geometry, whenever
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_HOVER_AXIS_NONE, /**< ELM_HOVER_AXIS_NONE -- no prefered orientation */
++=======
+ ELM_HOVER_AXIS_NONE, /**< ELM_HOVER_AXIS_NONE -- no preferred orientation */
++>>>>>>> remotes/origin/upstream
ELM_HOVER_AXIS_HORIZONTAL, /**< ELM_HOVER_AXIS_HORIZONTAL -- horizontal */
ELM_HOVER_AXIS_VERTICAL, /**< ELM_HOVER_AXIS_VERTICAL -- vertical */
ELM_HOVER_AXIS_BOTH /**< ELM_HOVER_AXIS_BOTH -- both */
* space.
*
* @p pref_axis may be one of
++<<<<<<< HEAD
+ * - @c ELM_HOVER_AXIS_NONE -- no prefered orientation
++=======
+ * - @c ELM_HOVER_AXIS_NONE -- no preferred orientation
++>>>>>>> remotes/origin/upstream
* - @c ELM_HOVER_AXIS_HORIZONTAL -- horizontal
* - @c ELM_HOVER_AXIS_VERTICAL -- vertical
* - @c ELM_HOVER_AXIS_BOTH -- both
*
++<<<<<<< HEAD
+ * If ELM_HOVER_AXIS_HORIZONTAL is choosen the returned position will
+ * nescessarily be along the horizontal axis("left" or "right"). If
+ * ELM_HOVER_AXIS_VERTICAL is choosen the returned position will nescessarily
+ * be along the vertical axis("top" or "bottom"). Chossing
++=======
+ * If ELM_HOVER_AXIS_HORIZONTAL is chosen the returned position will
+ * necessarily be along the horizontal axis("left" or "right"). If
+ * ELM_HOVER_AXIS_VERTICAL is chosen the returned position will necessarily
+ * be along the vertical axis("top" or "bottom"). Choosing
++>>>>>>> remotes/origin/upstream
* ELM_HOVER_AXIS_BOTH or ELM_HOVER_AXIS_NONE has the same effect and the
* returned position may be in either axis.
*
eina_stringshare_replace(&wd->thumb.file.path, file);
eina_stringshare_replace(&wd->thumb.file.key, group);
++<<<<<<< HEAD
+ if (elm_thumb_ethumb_client_connected())
++=======
+ if (elm_thumb_ethumb_client_connected_get())
++>>>>>>> remotes/origin/upstream
{
_icon_thumb_apply(wd);
return ;
#endif
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
EAPI Eina_Bool
elm_icon_animated_available_get(const Evas_Object *obj)
{
return wd->no_scale;
}
++<<<<<<< HEAD
+EAPI void
+elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down)
+{
++=======
+ EINA_DEPRECATED EAPI void
+ elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down)
+ {
+ elm_icon_resizable_set(obj, scale_up, scale_down);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_icon_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down)
+ {
+ elm_icon_resizable_get(obj, scale_up, scale_down);
+ }
+
+ EAPI void
+ elm_icon_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->scale_up = scale_up;
+ wd->scale_down = scale_down;
++=======
+ wd->scale_up = size_up;
+ wd->scale_down = size_down;
++>>>>>>> remotes/origin/upstream
if (!wd->in_eval) _sizing_eval(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_icon_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down)
++=======
+ elm_icon_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (scale_up) *scale_up = wd->scale_up;
+ if (scale_down) *scale_down = wd->scale_down;
++=======
+ if (size_up) *size_up = wd->scale_up;
+ if (size_down) *size_down = wd->scale_down;
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI void
++<<<<<<< HEAD
+elm_icon_preload_set(Evas_Object *obj, Eina_Bool disable)
++=======
+ elm_icon_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ _els_smart_icon_preload_set(wd->img, disable);
++=======
+ _els_smart_icon_preload_set(wd->img, !!disabled);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_icon_preload_set(Evas_Object *obj, Eina_Bool disable)
+ {
+ elm_icon_preload_disabled_set(obj, disable);
+ }
+
+ EAPI void
+ elm_icon_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ _els_smart_icon_aspect_fixed_set(wd->img, fixed);
+ }
+
+ EAPI Eina_Bool
+ elm_icon_aspect_fixed_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return _els_smart_icon_aspect_fixed_get(wd->img);
++>>>>>>> remotes/origin/upstream
}
* This function disables scaling of the icon object through the function
* elm_object_scale_set(). However, this does not affect the object
* size/resize in any way. For that effect, take a look at
++<<<<<<< HEAD
+ * elm_icon_scale_set().
+ *
+ * @see elm_icon_no_scale_get()
+ * @see elm_icon_scale_set()
++=======
+ * elm_icon_resizable_set().
+ *
+ * @see elm_icon_no_scale_get()
+ * @see elm_icon_resizable_set()
++>>>>>>> remotes/origin/upstream
* @see elm_object_scale_set()
*
* @ingroup Icon
* Set if the object is (up/down) resizable.
*
* @param obj The icon object
++<<<<<<< HEAD
+ * @param scale_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param scale_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the icon object resize ability. If @p scale_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original icon size. Same is valid for @p scale_down.
+ *
+ * @see elm_icon_scale_get()
+ *
+ * @ingroup Icon
+ */
+EAPI void elm_icon_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down);
++=======
+ * @param size_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param size_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the icon object resize ability. If @p size_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original icon size. Same is valid for @p size_down.
+ *
+ * @see elm_icon_resizable_get()
+ *
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down);
++>>>>>>> remotes/origin/upstream
/**
* Get if the object is (up/down) resizable.
*
* @param obj The icon object
++<<<<<<< HEAD
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
+ *
+ * @see elm_icon_scale_set()
+ *
+ * @ingroup Icon
+ */
+EAPI void elm_icon_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down);
++=======
+ * @param size_up A bool to set if the object is resizable up
+ * @param size_down A bool to set if the object is resizable down
+ *
+ * @see elm_icon_resizable_set()
+ *
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down);
++>>>>>>> remotes/origin/upstream
/**
* Get the object's image size
* Enable or disable preloading of the icon
*
* @param obj The icon object
++<<<<<<< HEAD
+ * @param disable If EINA_TRUE, preloading will be disabled
+ * @ingroup Icon
+ */
+EAPI void elm_icon_preload_set(Evas_Object *obj, Eina_Bool disable);
++=======
+ * @param disabled If EINA_TRUE, preloading will be disabled
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled);
++>>>>>>> remotes/origin/upstream
/**
* Get if the icon supports animation or not.
*
* Return if this elm icon's image can be animated. Currently Evas only
* supports gif animation. If the return value is EINA_FALSE, other
++<<<<<<< HEAD
+ * elm_icon_animated_XXX APIs won't work.
++=======
+ * elm_icon_animated_xxx APIs won't work.
++>>>>>>> remotes/origin/upstream
* @ingroup Icon
*/
EAPI Eina_Bool elm_icon_animated_available_get(const Evas_Object *obj);
* Set animation mode of the icon.
*
* @param obj The icon object
++<<<<<<< HEAD
+ * @param anim @c EINA_TRUE if the object do animation job,
++=======
+ * @param animated @c EINA_TRUE if the object do animation job,
++>>>>>>> remotes/origin/upstream
* @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
*
* Since the default animation mode is set to EINA_FALSE,
* @param play @c EINA_TRUE the object play animation images,
* @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
*
++<<<<<<< HEAD
+ * To play elm icon's animation, set play to EINA_TURE.
++=======
+ * To play elm icon's animation, set play to EINA_TRUE.
++>>>>>>> remotes/origin/upstream
* For example, you make gif player using this set/get API and click event.
* This literally lets you control current play or paused state. To have
* this work with animated GIF files for example, you first, before
* at all on the icon.
*
* 1. Click event occurs
++<<<<<<< HEAD
+ * 2. Check play flag using elm_icon_animaged_play_get
++=======
+ * 2. Check play flag using elm_icon_animated_play_get
++>>>>>>> remotes/origin/upstream
* 3. If elm icon was playing, set play to EINA_FALSE.
* Then animation will be stopped and vice versa
* @ingroup Icon
EAPI Eina_Bool elm_icon_animated_play_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set whether the original aspect ratio of the icon should be kept on resize.
+ *
+ * @param obj The icon object.
+ * @param fixed @c EINA_TRUE if the icon should retain the aspect,
+ * @c EINA_FALSE otherwise.
+ *
+ * The original aspect ratio (width / height) of the icon is usually
+ * distorted to match the object's size. Enabling this option will retain
+ * this original aspect, and the way that the icon is fit into the object's
+ * area depends on the option set by elm_icon_fill_outside_set().
+ *
+ * @see elm_icon_aspect_fixed_get()
+ * @see elm_icon_fill_outside_set()
+ *
+ * @ingroup Icon
+ */
+ EAPI void elm_icon_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+ /**
+ * Get if the object retains the original aspect ratio.
+ *
+ * @param obj The icon object.
+ * @return @c EINA_TRUE if the object keeps the original aspect, @c EINA_FALSE
+ * otherwise.
+ *
+ * @ingroup Icon
+ */
+ EAPI Eina_Bool elm_icon_aspect_fixed_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
return wd->no_scale;
}
++<<<<<<< HEAD
+EAPI void
+elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down)
+{
++=======
+ EINA_DEPRECATED EAPI void
+ elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down)
+ {
+ elm_image_resizable_set(obj, scale_up, scale_down);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_image_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down)
+ {
+ elm_image_resizable_get(obj, scale_up, scale_down);
+ }
+
+ EAPI void
+ elm_image_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->scale_up = scale_up;
+ wd->scale_down = scale_down;
++=======
+ wd->scale_up = size_up;
+ wd->scale_down = size_down;
++>>>>>>> remotes/origin/upstream
_sizing_eval(obj);
}
EAPI void
++<<<<<<< HEAD
+elm_image_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down)
++=======
+ elm_image_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (scale_up) *scale_up = wd->scale_up;
+ if (scale_down) *scale_down = wd->scale_down;
++=======
+ if (size_up) *size_up = wd->scale_up;
+ if (size_down) *size_down = wd->scale_down;
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI void
++<<<<<<< HEAD
++=======
+ elm_image_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ _els_smart_icon_preload_set(wd->img, !!disabled);
+ }
+
+ EAPI void
++>>>>>>> remotes/origin/upstream
elm_image_prescale_set(Evas_Object *obj, int size)
{
ELM_CHECK_WIDTYPE(obj, widtype);
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ return _els_smart_icon_aspect_fixed_set(wd->img, fixed);
++=======
+ _els_smart_icon_aspect_fixed_set(wd->img, fixed);
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
*
* This is the real size of the image, not the size of the object.
*
++<<<<<<< HEAD
+ * On error, neither w and h will be fileld with 0.
+ *
++=======
++>>>>>>> remotes/origin/upstream
* @ingroup Image
*/
EAPI void elm_image_object_size_get(const Evas_Object *obj, int *w, int *h);
* This function disables scaling of the elm_image widget through the
* function elm_object_scale_set(). However, this does not affect the widget
* size/resize in any way. For that effect, take a look at
++<<<<<<< HEAD
+ * elm_image_scale_set().
+ *
+ * @see elm_image_no_scale_get()
+ * @see elm_image_scale_set()
++=======
+ * elm_image_resizable_set().
+ *
+ * @see elm_image_no_scale_get()
+ * @see elm_image_resizable_set()
++>>>>>>> remotes/origin/upstream
* @see elm_object_scale_set()
*
* @ingroup Image
* Set if the object is (up/down) resizable.
*
* @param obj The image object
++<<<<<<< HEAD
+ * @param scale_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param scale_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the image resize ability. If @p scale_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original image size. Same is valid for @p scale_down.
+ *
+ * @see elm_image_scale_get()
+ *
+ * @ingroup Image
+ */
+EAPI void elm_image_scale_set(Evas_Object *obj, Eina_Bool scale_up, Eina_Bool scale_down);
++=======
+ * @param size_up A bool to set if the object is resizable up. Default is
+ * @c EINA_TRUE.
+ * @param size_down A bool to set if the object is resizable down. Default
+ * is @c EINA_TRUE.
+ *
+ * This function limits the image resize ability. If @p size_up is set to
+ * @c EINA_FALSE, the object can't have its height or width resized to a value
+ * higher than the original image size. Same is valid for @p size_down.
+ *
+ * @see elm_image_resizable_get()
+ *
+ * @ingroup Image
+ */
+ EAPI void elm_image_resizable_set(Evas_Object *obj, Eina_Bool size_up, Eina_Bool size_down);
++>>>>>>> remotes/origin/upstream
/**
* Get if the object is (up/down) resizable.
*
* @param obj The image object
++<<<<<<< HEAD
+ * @param scale_up A bool to set if the object is resizable up
+ * @param scale_down A bool to set if the object is resizable down
+ *
+ * @see elm_image_scale_set()
+ *
+ * @ingroup Image
+ */
+EAPI void elm_image_scale_get(const Evas_Object *obj, Eina_Bool *scale_up, Eina_Bool *scale_down);
++=======
+ * @param size_up A bool to set if the object is resizable up
+ * @param size_down A bool to set if the object is resizable down
+ *
+ * @see elm_image_resizable_set()
+ *
+ * @ingroup Image
+ */
+ EAPI void elm_image_resizable_get(const Evas_Object *obj, Eina_Bool *size_up, Eina_Bool *size_down);
++>>>>>>> remotes/origin/upstream
/**
* Set if the image fills the entire object area, when keeping the aspect ratio.
EAPI Eina_Bool elm_image_fill_outside_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Enable or disable preloading of the image
+ *
+ * @param obj The image object
+ * @param disabled If EINA_TRUE, preloading will be disabled
+ * @ingroup Icon
+ */
+ EAPI void elm_image_preload_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the prescale size for the image
*
* @param obj The image object
EAPI void elm_image_editable_set(Evas_Object *obj, Eina_Bool set);
/**
++<<<<<<< HEAD
+ * Check if the image 'editable'.
++=======
+ * Check if the image is 'editable'.
++>>>>>>> remotes/origin/upstream
*
* @param obj Image object.
* @return Editability.
EAPI Eina_Bool elm_image_editable_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Get the basic Evas_Image object from this object (widget).
++=======
+ * Get the inlined image object of the image widget.
++>>>>>>> remotes/origin/upstream
*
* @param obj The image object to get the inlined image from
* @return The inlined image object, or NULL if none exists
#include "elm_priv.h"
#include "els_box.h"
++<<<<<<< HEAD
+#define MIN_GRP_SIZE 2 //for symmetry it is 2, otherwise it can be 1 and zero have no meaning.
+#define MIN_PIXEL_VALUE 1 //Min pixel value is highly dependent on touch sensitivity support.
+#define MIN_OBJ_HEIGHT 24 //should be taken from .edc file.
+
+typedef struct _Widget_Data Widget_Data;
+
+typedef struct _PlacementPart PlacementPart;
++=======
+ typedef struct _Widget_Data Widget_Data;
++>>>>>>> remotes/origin/upstream
typedef struct _Elm_Index_Item Elm_Index_Item;
struct _Widget_Data
Evas_Object *bx[2]; // 2 - for now all that's supported
Eina_List *items; // 1 list. yes N levels, but only 2 for now and # of items will be small
int level;
++<<<<<<< HEAD
+ int tot_items_count[2];
+ int min_obj_height, max_grp_size;
+ int min_1st_level_obj_height;
+ int items_count;
+ Evas_Coord dx, dy;
+ Evas_Coord pwidth, pheight;
+ Ecore_Timer *delay;
+ const char *special_char;
+ Eina_Bool level_active[2];
+ Eina_Bool horizontal : 1;
+ Eina_Bool active : 1;
++=======
+ Evas_Coord dx, dy;
+ Ecore_Timer *delay;
+ Eina_Bool level_active[2];
+ Eina_Bool horizontal : 1;
+ Eina_Bool autohide_disabled : 1;
++>>>>>>> remotes/origin/upstream
Eina_Bool down : 1;
Eina_Bool indicator_disabled : 1;
};
struct _Elm_Index_Item
{
ELM_WIDGET_ITEM;
++<<<<<<< HEAD
+ const char *letter, *vis_letter;
+ int level, size;
+ Eina_Bool selected : 1;
+};
+
+struct _PlacementPart
+{
+ int start;
+ int count;
+};
+
++=======
+ const char *letter;
+ int level;
+ Evas_Smart_Cb func;
+ Eina_Bool selected : 1;
+ };
+
++>>>>>>> remotes/origin/upstream
static const char *widtype = NULL;
static void _del_hook(Evas_Object *obj);
static void _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level);
static void _index_box_clear(Evas_Object *obj, Evas_Object *box, int level);
static void _item_free(Elm_Index_Item *it);
++<<<<<<< HEAD
+static void _index_process(Evas_Object *obj);
++=======
++>>>>>>> remotes/origin/upstream
static const char SIG_CHANGED[] = "changed";
static const char SIG_DELAY_CHANGED[] = "delay,changed";
edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale);
_sizing_eval(obj);
_index_box_auto_fill(obj, wd->bx[0], 0);
++<<<<<<< HEAD
+ if (wd->active)
+ if (wd->level == 1)
+ _index_box_auto_fill(obj, wd->bx[1], 1);
++=======
+
+ if (wd->autohide_disabled)
+ {
+ if (wd->level == 1) _index_box_auto_fill(obj, wd->bx[1], 1);
+ edje_object_signal_emit(wd->base, "elm,state,active", "elm");
+ }
+ else
+ edje_object_signal_emit(wd->base, "elm,state,inactive", "elm");
++>>>>>>> remotes/origin/upstream
}
static void
{
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ _item_free((Elm_Index_Item *) it);
++=======
+ _item_free((Elm_Index_Item *)it);
++>>>>>>> remotes/origin/upstream
_index_box_clear(WIDGET(it), wd->bx[wd->level], wd->level);
return EINA_TRUE;
}
static Elm_Index_Item *
++<<<<<<< HEAD
+_item_new(Evas_Object *obj, const char *letter, const void *item)
++=======
+ _item_new(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
Elm_Index_Item *it;
it = elm_widget_item_new(obj, Elm_Index_Item);
if (!it) return NULL;
elm_widget_item_del_pre_hook_set(it, _item_del_pre_hook);
++<<<<<<< HEAD
+ it->base.data = item;
+ it->level = wd->level;
+ if(wd->level == 0)
+ it->size = wd->min_obj_height;
+ else
+ it->size = wd->min_1st_level_obj_height;
+ if(letter)
+ {
+ it->letter = eina_stringshare_add(letter);
+ it->vis_letter = eina_stringshare_add(letter);
+ }
++=======
+ if (letter) it->letter = eina_stringshare_add(letter);
+ it->func = func;
+ it->base.data = data;
+ it->level = wd->level;
++>>>>>>> remotes/origin/upstream
return it;
}
static Elm_Index_Item *
++<<<<<<< HEAD
+_item_find(Evas_Object *obj, const void *item)
++=======
+ _item_find(Evas_Object *obj, const void *data)
++>>>>>>> remotes/origin/upstream
{
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *l;
Elm_Index_Item *it;
if (!wd) return NULL;
EINA_LIST_FOREACH(wd->items, l, it)
++<<<<<<< HEAD
+ if (it->base.data == item) return it;
++=======
+ if (it->base.data == data) return it;
++>>>>>>> remotes/origin/upstream
return NULL;
}
if (!wd) return;
wd->items = eina_list_remove(wd->items, it);
if (it->letter) eina_stringshare_del(it->letter);
++<<<<<<< HEAD
+ if (it->vis_letter) eina_stringshare_del(it->vis_letter);
++=======
++>>>>>>> remotes/origin/upstream
}
// FIXME: always have index filled
o = edje_object_add(evas_object_evas_get(obj));
VIEW(it) = o;
edje_object_mirrored_set(VIEW(it), rtl);
++<<<<<<< HEAD
+ if (i & 0x1)
+ _elm_theme_object_set(obj, o, "index", "item_odd/vertical", elm_widget_style_get(obj));
+ else
+ _elm_theme_object_set(obj, o, "index", "item/vertical", elm_widget_style_get(obj));
++=======
+
+ if (wd->horizontal)
+ {
+ if (i & 0x1)
+ _elm_theme_object_set(obj, o, "index", "item_odd/horizontal",
+ elm_widget_style_get(obj));
+ else
+ _elm_theme_object_set(obj, o, "index", "item/horizontal",
+ elm_widget_style_get(obj));
+ }
+ else
+ {
+ if (i & 0x1)
+ _elm_theme_object_set(obj, o, "index", "item_odd/vertical",
+ elm_widget_style_get(obj));
+ else
+ _elm_theme_object_set(obj, o, "index", "item/vertical",
+ elm_widget_style_get(obj));
+ }
+
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(o, "elm.text", it->letter);
edje_object_size_min_restricted_calc(o, &mw, &mh, 0, 0);
evas_object_size_hint_min_set(o, mw, mh);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
++<<<<<<< HEAD
+ edje_object_part_text_set(o, "elm.text", it->vis_letter);
+ evas_object_size_hint_min_set(o, mw, it->size);
+ evas_object_size_hint_max_set(o, mw, it->size);
+ evas_object_resize(o, mw, it->size);
++=======
++>>>>>>> remotes/origin/upstream
elm_widget_sub_object_add(obj, o);
evas_object_box_append(box, o);
stacking = edje_object_data_get(o, "stacking");
}
evas_object_show(o);
i++;
++<<<<<<< HEAD
+ if(level == 1)
+ wd->tot_items_count[1] = i;
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_calculate(box); // force a calc so we know the size
evas_object_size_hint_min_get(box, &mw, &mh);
if (mh > h)
Elm_Object_Item *item;
if (!wd) return ECORE_CALLBACK_CANCEL;
wd->delay = NULL;
++<<<<<<< HEAD
+ item = elm_index_item_selected_get(data, wd->level);
++=======
+ item = elm_index_selected_item_get(data, wd->level);
++>>>>>>> remotes/origin/upstream
if (item) evas_object_smart_callback_call(data, SIG_DELAY_CHANGED, item);
return ECORE_CALLBACK_CANCEL;
}
Eina_List *l;
Evas_Coord x, y, w, h, bx, by, bw, bh, xx, yy;
double cdv = 0.5;
++<<<<<<< HEAD
+ double dmax = 0.0;
+ double dmin = 0.0;
++=======
++>>>>>>> remotes/origin/upstream
Evas_Coord dist;
char *label = NULL, *last = NULL;
int i;
it_closest = NULL;
dist = 0x7fffffff;
evas_object_geometry_get(wd->bx[i], &bx, &by, &bw, &bh);
++<<<<<<< HEAD
+
+ dmin = (double)(wd->min_1st_level_obj_height*wd->tot_items_count[1])/(2*(double)bh);
+ dmax = 1.0-dmin-0.08;
++=======
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(wd->items, l, it)
{
if (!((it->level == i) && (VIEW(it)))) continue;
if (!last) last = strdup("");
edje_object_part_text_set(wd->base, "elm.text.body", label);
edje_object_part_text_set(wd->base, "elm.text", last);
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->base, "hide_2nd_level", "");
++=======
++>>>>>>> remotes/origin/upstream
free(label);
free(last);
}
evas_object_geometry_get(wd->base, &x, &y, &w, NULL);
wd->dx = ev->canvas.x - x;
wd->dy = ev->canvas.y - y;
++<<<<<<< HEAD
+ elm_index_active_set(data, 1);
++=======
+ if (!wd->autohide_disabled)
+ {
+ _index_box_clear(data, wd->bx[1], 1);
+ _index_box_auto_fill(data, wd->bx[0], 0);
+ edje_object_signal_emit(wd->base, "elm,state,active", "elm");
+ }
++>>>>>>> remotes/origin/upstream
_sel_eval(data, ev->canvas.x, ev->canvas.y);
edje_object_part_drag_value_set(wd->base, "elm.dragable.pointer",
(!edje_object_mirrored_get(wd->base)) ? wd->dx : (wd->dx - w), wd->dy);
Widget_Data *wd = elm_widget_data_get(data);
Evas_Event_Mouse_Up *ev = event_info;
Elm_Object_Item *item;
++<<<<<<< HEAD
+ if (!wd) return;
+ if (ev->button != 1) return;
+ if (wd->level == 1 && wd->delay) ecore_timer_del(wd->delay);
+ wd->delay = NULL;
+ wd->down = 0;
+ item = elm_index_item_selected_get(data, wd->level);
+ if (item) evas_object_smart_callback_call(data, SIG_SELECTED, item);
+ elm_index_active_set(data, 0);
++=======
+ Elm_Index_Item *id_item;
+ if (!wd) return;
+ if (ev->button != 1) return;
+ wd->down = 0;
+ item = elm_index_selected_item_get(data, wd->level);
+ if (item)
+ {
+ evas_object_smart_callback_call(data, SIG_SELECTED, item);
+ id_item = (Elm_Index_Item *)item;
+ if (id_item->func)
+ id_item->func((void *)id_item->base.data, WIDGET(id_item), id_item);
+ }
+ if (!wd->autohide_disabled)
+ edje_object_signal_emit(wd->base, "elm,state,inactive", "elm");
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(wd->base, "elm,state,level,0", "elm");
if (wd->items && !wd->indicator_disabled)
edje_object_signal_emit(wd->base, "elm,indicator,state,inactive", "elm");
Widget_Data *wd = elm_widget_data_get(data);
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord minw = 0, minh = 0, x, y, dx, adx, w;
++<<<<<<< HEAD
+ Elm_Object_Item *item;
++=======
++>>>>>>> remotes/origin/upstream
char buf[1024];
if (!wd) return;
if (!wd->down) return;
wd->level = 0;
snprintf(buf, sizeof(buf), "elm,state,level,%i", wd->level);
edje_object_signal_emit(wd->base, buf, "elm");
++<<<<<<< HEAD
+ item = elm_index_item_selected_get(data, wd->level);
+ evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
+ if (wd->delay) ecore_timer_del(wd->delay);
+ wd->delay = ecore_timer_add(0.2, _delay_change, data);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_smart_callback_call(data, SIG_LEVEL_DOWN, NULL);
}
}
_sel_eval(data, ev->cur.canvas.x, ev->cur.canvas.y);
}
++<<<<<<< HEAD
+static void
+_index_box_refill_job(void *data)
+{
+ Widget_Data *wd = elm_widget_data_get((Evas_Object *)data);
+ if (!wd) return;
+
+ const char *string;
+ Evas_Coord pw, ph;
+
+ evas_object_geometry_get(wd->base, NULL, NULL, &pw, &ph);
+ string = edje_object_data_get(wd->base, "min_obj_height");
+ wd->min_obj_height = MIN_OBJ_HEIGHT;
+
+ wd->max_grp_size = wd->min_obj_height - 2*MIN_GRP_SIZE;
+ wd->items_count = ph/wd->min_obj_height;
+
+ if(pw != wd->pwidth && ph != wd->pheight)
+ {
+ if(wd->down == 1)
+ {
+ wd->active = 0;
+ elm_index_active_set(data, 1);
+ }
+ _index_box_clear((Evas_Object *)data, wd->bx[0], 0);
+ evas_object_smart_calculate( wd->bx[0]);
+ elm_index_item_go((Evas_Object *)data, wd->level);
+ wd->pwidth = pw;
+ wd->pheight = ph;
+ }
+}
+
+static void _index_object_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Widget_Data *wd;
+ if(!data) return;
+ wd = elm_widget_data_get((Evas_Object *)data);
+ if(!wd) return;
+ ecore_job_add(_index_box_refill_job, (Evas_Object *)data);
+}
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_index_add(Evas_Object *parent)
{
wd->indicator_disabled = EINA_FALSE;
wd->horizontal = EINA_FALSE;
++<<<<<<< HEAD
+ wd->min_obj_height = 0;
+ wd->max_grp_size = 0;
+ wd->items_count = 0;
+ wd->tot_items_count[0] = 0;
+ wd->tot_items_count[1] = 0;
+ wd->special_char = edje_object_data_get(wd->base, "special_char");
+ if(!wd->special_char) wd->special_char = eina_stringshare_add("*");
++=======
+ wd->autohide_disabled = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
wd->base = edje_object_add(e);
_elm_theme_object_set(obj, wd->base, "index", "base/vertical", "default");
evas_object_size_hint_min_set(o, minw, minh);
edje_object_part_swallow(wd->base, "elm.swallow.event.0", o);
elm_widget_sub_object_add(obj, o);
++<<<<<<< HEAD
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _index_object_resize, obj);
++=======
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, _wheel, obj);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, obj);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _mouse_up, obj);
}
evas_object_smart_callbacks_descriptions_set(obj, _signals);
++<<<<<<< HEAD
+ wd->min_1st_level_obj_height = MIN_OBJ_HEIGHT;
++=======
++>>>>>>> remotes/origin/upstream
_mirrored_set(obj, elm_widget_mirrored_get(obj));
_sizing_eval(obj);
return obj;
}
++<<<<<<< HEAD
+static int
+_group_count(Evas_Object *obj, int extraIndex, int adj_pos)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+ int group_count = MIN_GRP_SIZE;
+ while(group_count <= wd->max_grp_size)
+ {
+ if(extraIndex <= wd->max_grp_size*adj_pos)
+ {
+ if(group_count*adj_pos>=extraIndex) return group_count;
+ }
+ else
+ return wd->max_grp_size;
+
+ group_count += MIN_GRP_SIZE;
+ }
+ return group_count;
+}
+
+static void
+_index_process(Evas_Object *obj)
+{
+ int extraIndex;
+ int j,i, group_count;
+ Eina_List *l;
+ Elm_Index_Item *it;
+ int count;
+ int n;
+
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ if (wd->items_count == 0) return;
+
+ const int adj_pos = (wd->items_count-1)*0.5;
+ n = wd->tot_items_count[wd->level];
+ group_count = MIN_GRP_SIZE;
+
+ int *indx = (int*)calloc(n, sizeof(int));
+ if (!indx) return;
+
+ const int minh = wd->min_obj_height;
+ EINA_LIST_FOREACH(wd->items, l, it)
+ {
+ it->vis_letter = eina_stringshare_add(it->letter);
+ it->size = minh;
+ }
+ int remainder;
+ int numberofparts;
+ int N = wd->items_count;
+
+ for (i=0;i<n;i++)
+ {
+ indx[i] = minh;
+ }
+ extraIndex=n-N;
+ if (extraIndex < 0)
+ {
+ free(indx);
+ indx = NULL;
+ return;
+ }
+
+ group_count = _group_count(obj, extraIndex, adj_pos);
+ if (group_count <= 0)
+ {
+ if (indx)
+ free(indx);
+ indx = NULL;
+ return;
+ }
+
+ PlacementPart place[adj_pos];
+ remainder = extraIndex%group_count;
+ numberofparts=(extraIndex/group_count)+(remainder == 0? 0: 1);
+
+ for (i=0;i<numberofparts; i++)
+ {
+ place[i].count=group_count+1;
+ count = (int)(((float)(i+1)/(float)(numberofparts+1))*N);
+ place[i].start= count +i*group_count-1;
+ }
+ if (remainder)
+ place[numberofparts-1].count=remainder+1;
+
+ for (i=0;i<numberofparts;i++)
+ {
+ for (j=0;j<place[i].count; j++)
+ {
+ indx[((place[i].start)+j)]= MIN_PIXEL_VALUE;
+ }
+ indx[(place[i].start+(place[i].count)/2)] = minh-place[i].count+1;
+ }
+ count = 0;
+ EINA_LIST_FOREACH(wd->items, l, it)
+ {
+ int size = indx[count];
+ count++;
+ if (size == minh)
+ {
+ it->vis_letter = eina_stringshare_add(it->letter);
+ continue;
+ }
+ else if (size == 1)
+ {
+ eina_stringshare_del(it->vis_letter);
+ it->vis_letter = eina_stringshare_add("");
+ }
+ else
+ {
+ eina_stringshare_del(it->vis_letter);
+ it->vis_letter = eina_stringshare_add(wd->special_char);
+ }
+ it->size = size;
+ }
+ if (indx)
+ {
+ free(indx);
+ indx = NULL;
+ }
+}
+
+EAPI void
+elm_index_active_set(Evas_Object *obj, Eina_Bool active)
++=======
+ EINA_DEPRECATED EAPI void
+ elm_index_active_set(Evas_Object *obj, Eina_Bool active)
+ {
+ elm_index_autohide_disabled_set(obj, !active);
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_index_active_get(const Evas_Object *obj)
+ {
+ return !elm_index_autohide_disabled_get(obj);
+ }
+
+ EAPI void
+ elm_index_autohide_disabled_set(Evas_Object *obj, Eina_Bool disabled)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (wd->active == active) return;
+ wd->active = active;
+ wd->level = 0;
+ if (wd->active)
+ {
+ _index_box_clear(obj, wd->bx[1], 1);
+ _index_process(obj);
++=======
+ disabled = !!disabled;
+ if (wd->autohide_disabled == disabled) return;
+ wd->autohide_disabled = disabled;
+ wd->level = 0;
+ if (wd->autohide_disabled)
+ {
+ _index_box_clear(obj, wd->bx[1], 1);
++>>>>>>> remotes/origin/upstream
_index_box_auto_fill(obj, wd->bx[0], 0);
edje_object_signal_emit(wd->base, "elm,state,active", "elm");
}
else
edje_object_signal_emit(wd->base, "elm,state,inactive", "elm");
++<<<<<<< HEAD
+}
+
+EAPI Eina_Bool
+elm_index_active_get(const Evas_Object *obj)
++=======
+
+ //FIXME: Should be update indicator based on the indicator visiblility
+ }
+
+ EAPI Eina_Bool
+ elm_index_autohide_disabled_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->active;
++=======
+ return wd->autohide_disabled;
++>>>>>>> remotes/origin/upstream
}
EAPI void
return wd->level;
}
++<<<<<<< HEAD
+EAPI Elm_Object_Item *
+elm_index_item_selected_get(const Evas_Object *obj, int level)
+{
++=======
+ EAPI void
+ elm_index_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Evas_Coord x, y, w, h;
+ Widget_Data *wd = elm_widget_data_get(WIDGET(it));
+ if (!wd) return;
+
+ //FIXME: Should be update indicator based on the autohidden status & indicator visiblility
+
+ if (selected)
+ {
+ evas_object_geometry_get(VIEW(it), &x, &y, &w, &h);
+ _sel_eval(WIDGET(it), x + (w/2), y + (h/2));
+ }
+ else
+ _sel_eval(WIDGET(it), -99999, -9999);
+
+ }
+
+ EINA_DEPRECATED EAPI Elm_Object_Item *
+ elm_index_item_selected_get(const Evas_Object *obj, int level)
+ {
+ return elm_index_selected_item_get(obj, level);
+ }
+
+ EAPI Elm_Object_Item *
+ elm_index_selected_item_get(const Evas_Object *obj, int level)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *l;
EINA_LIST_FOREACH(wd->items, l, it)
{
if ((it->selected) && (it->level == level))
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
++<<<<<<< HEAD
+EAPI void
+elm_index_item_append(Evas_Object *obj, const char *letter, const void *item)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return;
+ it = _item_new(obj, letter, item);
+ if (!it) return;
+ wd->items = eina_list_append(wd->items, it);
+ wd->tot_items_count[wd->level]++;
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+}
+
+EAPI void
+elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+
+ if (!wd) return;
+ it = _item_new(obj, letter, item);
+ if (!it) return;
+ wd->items = eina_list_prepend(wd->items, it);
+ wd->tot_items_count[wd->level]++;
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+}
+
+EAPI void
+elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return;
+ if (!relative)
+ {
+ elm_index_item_append(obj, letter, item);
+ wd->tot_items_count[wd->level]++;
+ return;
+ }
+ it = _item_new(obj, letter, item);
+ if (!it) return;
+ wd->items = eina_list_append_relative(wd->items, it, relative);
+ wd->tot_items_count[wd->level]++;
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+}
+
+EAPI void
+elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return;
+ if (!relative)
+ {
+ elm_index_item_prepend(obj, letter, item);
+ wd->tot_items_count[wd->level]++;
+ return;
+ }
+ it = _item_new(obj, letter, item);
+ if (!it) return;
+ wd->items = eina_list_prepend_relative(wd->items, it, relative);
+ wd->tot_items_count[wd->level]++;
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+}
+
+EAPI void
+elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
++=======
+ EAPI Elm_Object_Item *
+ elm_index_item_append(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return NULL;
+ it = _item_new(obj, letter, func, data);
+ if (!it) return NULL;
+ wd->items = eina_list_append(wd->items, it);
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_index_item_prepend(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+
+ if (!wd) return NULL;
+ it = _item_new(obj, letter, func, data);
+ if (!it) return NULL;
+ wd->items = eina_list_prepend(wd->items, it);
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+ return (Elm_Object_Item *)it;
+ }
+
+ EINA_DEPRECATED EAPI Elm_Object_Item *
+ elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative)
+ {
+ return elm_index_item_insert_after(obj, (Elm_Object_Item *) relative, letter, NULL, item);
+ }
+
+ EINA_DEPRECATED EAPI Elm_Object_Item *
+ elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative)
+ {
+ return elm_index_item_insert_before(obj, (Elm_Object_Item *) relative, letter, NULL, item);
+ }
+
+ EAPI Elm_Object_Item *
+ elm_index_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *letter, Evas_Smart_Cb func, const void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return NULL;
+ if (!after) return elm_index_item_append(obj, letter, func, data);
+ it = _item_new(obj, letter, func, data);
+ if (!it) return NULL;
+ wd->items = eina_list_append_relative(wd->items, it, after);
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_index_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *letter, Evas_Smart_Cb func, const void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Elm_Index_Item *it;
+ if (!wd) return NULL;
+ if (!before) return elm_index_item_prepend(obj, letter, func, data);
+ it = _item_new(obj, letter, func, data);
+ if (!it) return NULL;
+ wd->items = eina_list_prepend_relative(wd->items, it, before);
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+ return (Elm_Object_Item *)it;
+ }
+
+ EAPI Elm_Object_Item *
+ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
Eina_List *lnear;
Elm_Index_Item *it;
int cmp;
++<<<<<<< HEAD
+ if (!wd) return;
+ if (!(wd->items))
+ {
+ elm_index_item_append(obj, letter, item);
+ return;
+ }
+
+ it = _item_new(obj, letter, item);
+ if (!it) return;
++=======
+ if (!wd) return NULL;
+ if (!(wd->items))
+ return elm_index_item_append(obj, letter, func, data);
+
+ it = _item_new(obj, letter, func, data);
+ if (!it) return NULL;
++>>>>>>> remotes/origin/upstream
lnear = eina_list_search_sorted_near_list(wd->items, cmp_func, it, &cmp);
if (cmp < 0)
elm_widget_item_free(it);
}
}
++<<<<<<< HEAD
+
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
++=======
+ _index_box_clear(obj, wd->bx[wd->level], wd->level);
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI Elm_Object_Item *
++<<<<<<< HEAD
+elm_index_item_find(Evas_Object *obj, const void *item)
++=======
+ elm_index_item_find(Evas_Object *obj, const void *data)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return NULL;
++<<<<<<< HEAD
+ return (Elm_Object_Item *) _item_find(obj, item);
++=======
+ return (Elm_Object_Item *) _item_find(obj, data);
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EINA_LIST_FREE(clear, it)
{
++<<<<<<< HEAD
+ wd->tot_items_count[wd->level]--;
++=======
++>>>>>>> remotes/origin/upstream
_item_free(it);
elm_widget_item_free(it);
}
}
++<<<<<<< HEAD
+EAPI void
+elm_index_item_go(Evas_Object *obj, int level)
++=======
+ EINA_DEPRECATED EAPI void
+ elm_index_item_go(Evas_Object *obj, int level __UNUSED__)
+ {
+ elm_index_level_go(obj, level);
+ }
+
+ EAPI void
+ elm_index_level_go(Evas_Object *obj, int level __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if(level == 0) _index_process(obj);
++=======
++>>>>>>> remotes/origin/upstream
_index_box_auto_fill(obj, wd->bx[0], 0);
if (wd->level == 1) _index_box_auto_fill(obj, wd->bx[1], 1);
}
elm_index_item_letter_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return ((Elm_Index_Item *) it)->letter;
+}
+
++=======
+ return ((Elm_Index_Item *)it)->letter;
+ }
+
+ EAPI void
+ elm_index_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+
+ horizontal = !!horizontal;
+ if (horizontal == wd->horizontal) return;
+ wd->horizontal = horizontal;
+ _theme_hook(obj);
+ }
+
+ EAPI Eina_Bool
+ elm_index_horizontal_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->horizontal;
+ }
+
+
++>>>>>>> remotes/origin/upstream
* Enable or disable auto hiding feature for a given index widget.
*
* @param obj The index object
++<<<<<<< HEAD
+ * @param active @c EINA_TRUE to enable auto hiding, @c EINA_FALSE to disable
+ *
+ * @see elm_index_active_get()
+ *
+ * @ingroup Index
+ */
+EAPI void elm_index_active_set(Evas_Object *obj, Eina_Bool active);
++=======
+ * @param disabled @c EINA_TRUE to disable auto hiding, @c EINA_FALSE to enable
+ *
+ * @see elm_index_autohide_disabled_get()
+ *
+ * @ingroup Index
+ */
+ EAPI void elm_index_autohide_disabled_set(Evas_Object *obj, Eina_Bool disabled);
++>>>>>>> remotes/origin/upstream
/**
* Get whether auto hiding feature is enabled or not for a given index widget.
*
* @param obj The index object
++<<<<<<< HEAD
+ * @return @c EINA_TRUE, if auto hiding is enabled, @c EINA_FALSE otherwise
++=======
+ * @return @c EINA_TRUE, if auto hiding is disabled, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* @see elm_index_active_set() for more details
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_index_active_get(const Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_index_autohide_disabled_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set the items level for a given index widget.
EAPI int elm_index_item_level_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set the selected state of an item.
+ *
+ * @param it The index item
+ * @param selected The selected state
+ *
+ * This sets the selected state of the given item @p it.
+ * @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
+ *
+ * If a new item is selected the previously selected will be unselected.
+ * Previously selected item can be get with function
+ * elm_index_selected_item_get().
+ *
+ * Selected items will be highlighted.
+ *
+ * @see elm_index_item_selected_get()
+ * @see elm_index_selected_item_get()
+ *
+ * @ingroup Index
+ */
+ EAPI void elm_index_item_selected_set(Elm_Object_Item *it, Eina_Bool selected);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Returns the last selected item, for a given index widget.
*
* @param obj The index object.
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_index_item_selected_get(const Evas_Object *obj, int level);
++=======
+ EAPI Elm_Object_Item *elm_index_selected_item_get(const Evas_Object *obj, int level);
++>>>>>>> remotes/origin/upstream
/**
* Append a new item on a given index widget.
*
* @param obj The index object.
* @param letter Letter under which the item should be indexed
++<<<<<<< HEAD
+ * @param item The item data to set for the index's item
++=======
+ * @param func The function to call when the item is selected.
+ * @param data The item data to set for the index's item
+ * @return A handle to the item added or @c NULL, on errors
++>>>>>>> remotes/origin/upstream
*
* Despite the most common usage of the @p letter argument is for
* single char strings, one could use arbitrary strings as index
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_append(Evas_Object *obj, const char *letter, const void *item);
++=======
+ EAPI Elm_Object_Item *elm_index_item_append(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data);
++>>>>>>> remotes/origin/upstream
/**
* Prepend a new item on a given index widget.
*
* @param obj The index object.
* @param letter Letter under which the item should be indexed
++<<<<<<< HEAD
+ * @param item The item data to set for the index's item
++=======
+ * @param func The function to call when the item is selected.
+ * @param data The item data to set for the index's item
+ * @return A handle to the item added or @c NULL, on errors
++>>>>>>> remotes/origin/upstream
*
* Despite the most common usage of the @p letter argument is for
* single char strings, one could use arbitrary strings as index
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_prepend(Evas_Object *obj, const char *letter, const void *item);
+
+/**
+ * Append a new item, on a given index widget, <b>after the item
+ * having @p relative as data</b>.
+ *
+ * @param obj The index object.
+ * @param letter Letter under which the item should be indexed
+ * @param item The item data to set for the index's item
+ * @param relative The index item to be the predecessor of this new one
++=======
+ EAPI Elm_Object_Item *elm_index_item_prepend(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data);
+
+ /**
+ * Insert a new item into the index object after item @p after.
+ *
+ * @param obj The index object.
+ * @param after The index item to insert after.
+ * @param letter Letter under which the item should be indexed
+ * @param func The function to call when the item is clicked.
+ * @param data The item data to set for the index's item
+ * @return A handle to the item added or @c NULL, on errors
++>>>>>>> remotes/origin/upstream
*
* Despite the most common usage of the @p letter argument is for
* single char strings, one could use arbitrary strings as index
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_append_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative);
+
+/**
+ * Prepend a new item, on a given index widget, <b>after the item
+ * having @p relative as data</b>.
+ *
+ * @param obj The index object.
+ * @param letter Letter under which the item should be indexed
+ * @param item The item data to set for the index's item
+ * @param relative The index item to be the successor of this new one
++=======
+ EAPI Elm_Object_Item *elm_index_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *letter, Evas_Smart_Cb func, const void *data);
+
+ /**
+ * Insert a new item into the index object before item @p before.
+ *
+ * @param obj The index object.
+ * @param before The index item to insert after.
+ * @param letter Letter under which the item should be indexed
+ * @param func The function to call when the item is clicked.
+ * @param data The item data to set for the index's item
+ * @return A handle to the item added or @c NULL, on errors
++>>>>>>> remotes/origin/upstream
*
* Despite the most common usage of the @p letter argument is for
* single char strings, one could use arbitrary strings as index
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_prepend_relative(Evas_Object *obj, const char *letter, const void *item, const Elm_Object_Item *relative);
++=======
+ EAPI Elm_Object_Item *elm_index_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *letter, Evas_Smart_Cb func, const void *data);
++>>>>>>> remotes/origin/upstream
/**
* Insert a new item into the given index widget, using @p cmp_func
*
* @param obj The index object.
* @param letter Letter under which the item should be indexed
++<<<<<<< HEAD
+ * @param item The item data to set for the index's item
++=======
+ * @param func The function to call when the item is clicked.
+ * @param data The item data to set for the index's item
++>>>>>>> remotes/origin/upstream
* @param cmp_func The comparing function to be used to sort index
* items <b>by #index item handles</b>
* @param cmp_data_func A @b fallback function to be called for the
* because all references to it will be lost. If this function is
* not provided (@c NULL is given), index items will be @b
* duplicated, if @p cmp_func returns @c 0.
++<<<<<<< HEAD
++=======
+ * @return A handle to the item added or @c NULL, on errors
++>>>>>>> remotes/origin/upstream
*
* Despite the most common usage of the @p letter argument is for
* single char strings, one could use arbitrary strings as index
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *item, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func);
++=======
+ EAPI Elm_Object_Item *elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func, Eina_Compare_Cb cmp_data_func);
++>>>>>>> remotes/origin/upstream
/**
* Find a given index widget's item, <b>using item data</b>.
*
* @param obj The index object
++<<<<<<< HEAD
+ * @param item The item data pointed to by the desired index item
++=======
+ * @param data The item data pointed to by the desired index item
++>>>>>>> remotes/origin/upstream
* @return The index item handle, if found, or @c NULL otherwise
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI Elm_Object_Item *elm_index_item_find(Evas_Object *obj, const void *item);
++=======
+ EAPI Elm_Object_Item *elm_index_item_find(Evas_Object *obj, const void *data);
++>>>>>>> remotes/origin/upstream
/**
* Removes @b all items from a given index widget.
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI void elm_index_item_go(Evas_Object *obj, int level);
++=======
+ EAPI void elm_index_level_go(Evas_Object *obj, int level);
++>>>>>>> remotes/origin/upstream
/**
* Get the letter (string) set on a given index widget item.
*
* @ingroup Index
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_index_indicator_disabled_get(const Evas_Object *obj);
+
+EAPI void elm_index_button_image_invisible_set(Evas_Object *obj, Eina_Bool invisible);
++=======
+ EAPI Eina_Bool elm_index_indicator_disabled_get(const Evas_Object *obj);
+
+ /**
+ * Enable or disable horizontal mode on the index object
+ *
+ * @param obj The index object.
+ * @param horizontal @c EINA_TRUE to enable horizontal or @c EINA_FALSE to
+ * disable it, i.e., to enable vertical mode. it's an area one @ref Fingers
+ * "finger" wide on the bottom side of the index widget's container.
+ *
+ * @note Vertical mode is set by default.
+ *
+ * On horizontal mode items are displayed on index from left to right,
+ * instead of from top to bottom. Also, the index will scroll horizontally.
+ *
+ * @see elm_index_horizontal_get()
+ *
+ * @ingroup Index
+ */
+ EAPI void elm_index_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
+
+ /**
+ * Get a value whether horizontal mode is enabled or not.
+ *
+ * @param obj The index object.
+ * @return @c EINA_TRUE means horizontal mode selection is enabled.
+ * @c EINA_FALSE indicates it's disabled. If @p obj is @c NULL,
+ * @c EINA_FALSE is returned.
+ *
+ * @see elm_index_horizontal_set() for details.
+ *
+ * @ingroup Index
+ */
+ EAPI Eina_Bool elm_index_horizontal_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
* @mainpage Elementary
* @image html elementary.png
* @version 0.8.0
++<<<<<<< HEAD
+ * @date 2008-2011
++=======
+ * @date 2008-2012
++>>>>>>> remotes/origin/upstream
*
* @section intro What is Elementary?
*
*
* @section organization Organization
*
++<<<<<<< HEAD
+ * One can divide Elemementary into three main groups:
++=======
+ * One can divide Elementary into three main groups:
++>>>>>>> remotes/origin/upstream
* @li @ref infralist - These are modules that deal with Elementary as a whole.
* @li @ref widgetslist - These are the widgets you'll compose your UI out of.
* @li @ref containerslist - These are the containers which hold the widgets.
* There is a lot that goes into making a widget set, and they don't happen out of
* nothing. It's like trying to make everyone everywhere happy, regardless of age,
* gender, race or nationality - and that is really tough. So thanks to people and
++<<<<<<< HEAD
+ * organisations behind this, as listed in the @ref authors page.
++=======
+ * organizations behind this, as listed in the @ref authors page.
++>>>>>>> remotes/origin/upstream
*/
struct _Widget_Data
{
Evas_Object *lbl;
++<<<<<<< HEAD
+ Evas_Object *bg;
++=======
++>>>>>>> remotes/origin/upstream
const char *label;
const char *format;
Ecore_Job *deferred_recalc_job;
double slide_duration;
Evas_Coord lastw;
Evas_Coord wrap_w;
++<<<<<<< HEAD
+ Evas_Coord wrap_h;
Elm_Wrap_Type linewrap;
Eina_Bool changed : 1;
+ Eina_Bool bgcolor : 1;
++=======
++ Elm_Wrap_Type linewrap;
++ Eina_Bool changed : 1;
++>>>>>>> remotes/origin/upstream
Eina_Bool ellipsis : 1;
Eina_Bool slidingmode : 1;
Eina_Bool slidingellipsis : 1;
static int _get_value_in_key_string(const char *oldstring, const char *key, char **value);
static int _strbuf_key_value_replace(Eina_Strbuf *srcbuf, const char *key, const char *value, int deleteflag);
static int _stringshare_key_value_replace(const char **srcstring, const char *key, const char *value, int deleteflag);
++<<<<<<< HEAD
+static int _is_width_over(Evas_Object *obj);
+static void _ellipsis_label_to_width(Evas_Object *obj);
+static void _label_sliding_change(Evas_Object *obj);
++=======
+ static void _label_sliding_change(Evas_Object *obj);
+ static void _label_format_set(Evas_Object *obj, const char *format);
++>>>>>>> remotes/origin/upstream
static void
_elm_recalc_job(void *data)
{
Widget_Data *wd = elm_widget_data_get(data);
Evas_Coord minw = -1, minh = -1;
++<<<<<<< HEAD
+ Evas_Coord resw, resh;
+ if (!wd) return;
+ evas_event_freeze(evas_object_evas_get(data));
+ wd->deferred_recalc_job = NULL;
+ evas_object_geometry_get(wd->lbl, NULL, NULL, &resw, &resh);
+ if (wd->wrap_w > resw)
+ resw = wd->wrap_w;
+ if (wd->wrap_h > resh)
+ resh = wd->wrap_h;
+
+ if (wd->wrap_h == -1) /* open source routine */
+ {
+ edje_object_size_min_restricted_calc(wd->lbl, &minw, &minh, resw, 0);
+ /* This is a hack to workaround the way min size hints are treated.
+ * If the minimum width is smaller than the restricted width, it means
+ * the mininmum doesn't matter. */
+ if ((minw <= resw) && (minw != wd->wrap_w))
+ {
+ Evas_Coord ominw = -1;
+ evas_object_size_hint_min_get(data, &ominw, NULL);
+ minw = ominw;
+ }
+ }
+ else /* ellipsis && linewrap && wrap_height_set routine */
+ {
+ edje_object_size_min_restricted_calc(wd->lbl, &minw, &minh, 0, resh);
+ if ((minh <= resh) && (minh != wd->wrap_h))
+ {
+ Evas_Coord ominh = -1;
+ evas_object_size_hint_min_get(data, NULL, &ominh);
+ minh = ominh;
+ }
+ evas_object_geometry_get(wd->lbl, NULL, NULL, &resw, &resh);
+ minw = resw;
+ if (minh > wd->wrap_h)
+ minh = wd->wrap_h;
+
+ }
+ evas_object_size_hint_min_set(data, minw, minh);
+ evas_object_size_hint_max_set(data, wd->wrap_w, wd->wrap_h);
+
+ if ((wd->ellipsis) && (wd->linewrap) && (wd->wrap_h > 0) &&
+ (_is_width_over(data) == 1))
+ _ellipsis_label_to_width(data);
++=======
+ Evas_Coord resw;
+ if (!wd) return;
+ evas_event_freeze(evas_object_evas_get(data));
+ wd->deferred_recalc_job = NULL;
+ evas_object_geometry_get(wd->lbl, NULL, NULL, &resw, NULL);
+ if (wd->wrap_w > resw)
+ resw = wd->wrap_w;
+
+ edje_object_size_min_restricted_calc(wd->lbl, &minw, &minh, resw, 0);
+ /* This is a hack to workaround the way min size hints are treated.
+ * If the minimum width is smaller than the restricted width, it means
+ * the mininmum doesn't matter. */
+ if ((minw <= resw) && (minw != wd->wrap_w))
+ {
+ Evas_Coord ominw = -1;
+ evas_object_size_hint_min_get(data, &ominw, NULL);
+ minw = ominw;
+ }
+ evas_object_size_hint_min_set(data, minw, minh);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(data));
evas_event_thaw_eval(evas_object_evas_get(data));
}
evas_event_freeze(evas_object_evas_get(obj));
if (wd->deferred_recalc_job) ecore_job_del(wd->deferred_recalc_job);
if (wd->label) eina_stringshare_del(wd->label);
++<<<<<<< HEAD
+ if (wd->bg) evas_object_del(wd->bg);
++=======
++>>>>>>> remotes/origin/upstream
free(wd);
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
_elm_widget_mirrored_reload(obj);
_mirrored_set(obj, elm_widget_mirrored_get(obj));
_theme_change(obj);
++<<<<<<< HEAD
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text", wd->format);
++=======
+ _label_format_set(wd->lbl, wd->format);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
edje_object_scale_set(wd->lbl, elm_widget_scale_get(obj) *
_elm_config->scale);
evas_object_geometry_get(wd->lbl, NULL, NULL, &resw, &resh);
edje_object_size_min_calc(wd->lbl, &minw, &minh);
if (wd->wrap_w > 0 && minw > wd->wrap_w) minw = wd->wrap_w;
++<<<<<<< HEAD
+ if (wd->wrap_h > 0 && minh > wd->wrap_h) minh = wd->wrap_h;
+ evas_object_size_hint_min_set(obj, minw, minh);
+ evas_object_size_hint_max_set(obj, wd->wrap_w, wd->wrap_h);
+ if ((wd->ellipsis) && (_is_width_over(obj) == 1))
+ _ellipsis_label_to_width(obj);
++=======
+ evas_object_size_hint_min_set(obj, minw, minh);
++>>>>>>> remotes/origin/upstream
evas_event_thaw(evas_object_evas_get(obj));
evas_event_thaw_eval(evas_object_evas_get(obj));
}
if (wd->linewrap) _sizing_eval(data);
}
++<<<<<<< HEAD
+static int
+_get_value_in_key_string(const char *oldstring, const char *key, char **value)
+{
+ char *curlocater, *starttag, *endtag;
++=======
+ static void
+ _label_format_set(Evas_Object *obj, const char *format)
+ {
+ if (format)
+ edje_object_part_text_style_user_push(obj, "elm.text", format);
+ else
+ edje_object_part_text_style_user_pop(obj, "elm.text");
+ }
+
+ static int
+ _get_value_in_key_string(const char *oldstring, const char *key, char **value)
+ {
+ char *curlocater, *endtag;
++>>>>>>> remotes/origin/upstream
int firstindex = 0, foundflag = -1;
curlocater = strstr(oldstring, key);
if (curlocater)
{
int key_len = strlen(key);
++<<<<<<< HEAD
+ starttag = curlocater;
++=======
++>>>>>>> remotes/origin/upstream
endtag = curlocater + key_len;
if ((!endtag) || (*endtag != '='))
{
firstindex += key_len + 1; // strlen("key") + strlen("=")
*value = (char *)oldstring + firstindex;
++<<<<<<< HEAD
+ while (oldstring != starttag)
+ {
+ if (*starttag == '>')
+ {
+ foundflag = 0;
+ break;
+ }
+ if (*starttag == '<')
+ break;
+ else
+ starttag--;
+ if (!starttag) break;
+ }
+
+ while (endtag)
+ {
+ if (*endtag == '<')
+ {
+ foundflag = 0;
+ break;
+ }
+ if (*endtag == '>')
+ break;
+ else
+ endtag++;
+ if (!endtag) break;
+ }
+
+ if ((foundflag) && (*starttag == '<') && (*endtag == '>'))
+ foundflag = 1;
+ else
+ foundflag = 0;
++=======
+ foundflag = 1;
++>>>>>>> remotes/origin/upstream
}
else
{
return -1;
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
static int
_strbuf_key_value_replace(Eina_Strbuf *srcbuf, const char *key, const char *value, int deleteflag)
{
return 0;
}
++<<<<<<< HEAD
+static int
+_is_width_over(Evas_Object *obj)
+{
+ Evas_Coord x, y, w, h;
+ Evas_Coord vx, vy, vw, vh;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+
+ evas_event_freeze(evas_object_evas_get(obj));
+ edje_object_part_geometry_get(wd->lbl, "elm.text", &x, &y, NULL, NULL);
+ /* Calc the formatted size with ellipsis turned off */
+ if (wd->ellipsis)
+ {
+ const Evas_Object *tb;
+ char *_kvalue;
+ double ellipsis = 0.0;
+ Eina_Bool found_key = EINA_FALSE;
+ if (_get_value_in_key_string(wd->format, "ellipsis", &_kvalue) == 0)
+ {
+ ellipsis = atof(_kvalue);
+ found_key = EINA_TRUE;
+ }
+
+ if (_stringshare_key_value_replace(&wd->format,
+ "ellipsis", NULL, 1) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ }
+
+ tb = edje_object_part_object_get(wd->lbl, "elm.text");
+ evas_object_textblock_size_formatted_get(tb, &w, &h);
+
+ if (found_key)
+ {
+ Eina_Strbuf *elpbuf;
+ elpbuf = eina_strbuf_new();
+ eina_strbuf_append_printf(elpbuf, "%f", ellipsis);
+ if (_stringshare_key_value_replace(&wd->format, "ellipsis",
+ eina_strbuf_string_get(elpbuf), 0) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ }
+ eina_strbuf_free(elpbuf);
+ }
+ }
+ else
+ {
+ const Evas_Object *tb;
+ tb = edje_object_part_object_get(wd->lbl, "elm.text");
+ evas_object_textblock_size_formatted_get(tb, &w, &h);
+ }
+ evas_object_geometry_get(obj, &vx, &vy, &vw, &vh);
+ evas_event_thaw(evas_object_evas_get(obj));
+ evas_event_thaw_eval(evas_object_evas_get(obj));
+
+ if (w > wd->wrap_w || h > wd->wrap_h)
+ return 1;
+
+ return 0;
+}
+
+static void
+_ellipsis_fontsize_set(Evas_Object *obj, int fontsize)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_Strbuf *fontbuf = NULL;
+ int removeflag = 0;
+ if (!wd) return;
+
+ fontbuf = eina_strbuf_new();
+ eina_strbuf_append_printf(fontbuf, "%d", fontsize);
+ if (fontsize == 0) removeflag = 1; // remove fontsize tag
+
+ if (_stringshare_key_value_replace(&wd->format, "font_size", eina_strbuf_string_get(fontbuf), removeflag) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ }
+ eina_strbuf_free(fontbuf);
+}
+
+static void
+_ellipsis_label_to_width(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ int cur_fontsize = 0;
+ char *kvalue;
+ const char *minfont, *deffont, *maxfont;
+ int minfontsize, maxfontsize;
+
+ evas_event_freeze(evas_object_evas_get(obj));
+ minfont = edje_object_data_get(wd->lbl, "min_font_size");
+ if (minfont) minfontsize = atoi(minfont);
+ else minfontsize = 1;
+ maxfont = edje_object_data_get(wd->lbl, "max_font_size");
+ if (maxfont) maxfontsize = atoi(maxfont);
+ else maxfontsize = 1;
+ deffont = edje_object_data_get(wd->lbl, "default_font_size");
+ if (deffont) cur_fontsize = atoi(deffont);
+ else cur_fontsize = 1;
+ if (minfontsize > maxfontsize || cur_fontsize == 1) return; // theme is not ready for ellipsis
+ if (eina_stringshare_strlen(wd->label) <= 0) return;
+
+ if (_get_value_in_key_string(wd->format, "font_size", &kvalue) == 0)
+ {
+ if (kvalue != NULL) cur_fontsize = atoi(kvalue);
+ }
+
+ evas_event_thaw(evas_object_evas_get(obj));
+ evas_event_thaw_eval(evas_object_evas_get(obj));
+}
+
++=======
++>>>>>>> remotes/origin/upstream
static void
_label_sliding_change(Evas_Object *obj)
{
if (item && strcmp(item, "default")) return;
if (!label) label = "";
eina_stringshare_replace(&wd->label, label);
++<<<<<<< HEAD
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
++=======
+ _label_format_set(wd->lbl, wd->format);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
wd->changed = 1;
_sizing_eval(obj);
elm_widget_text_get_hook_set(obj, _elm_label_label_get);
elm_widget_translate_hook_set(obj, _translate_hook);
++<<<<<<< HEAD
+ wd->bgcolor = EINA_FALSE;
+ wd->bg = evas_object_rectangle_add(e);
+ evas_object_color_set(wd->bg, 0, 0, 0, 0);
+
++=======
++>>>>>>> remotes/origin/upstream
wd->linewrap = ELM_WRAP_NONE;
wd->ellipsis = EINA_FALSE;
wd->slidingmode = EINA_FALSE;
wd->slidingellipsis = EINA_FALSE;
wd->wrap_w = -1;
++<<<<<<< HEAD
+ wd->wrap_h = -1;
++=======
++>>>>>>> remotes/origin/upstream
wd->slide_duration = 10;
wd->lbl = edje_object_add(e);
_elm_theme_object_set(obj, wd->lbl, "label", "base", "default");
wd->format = eina_stringshare_add("");
wd->label = eina_stringshare_add("<br>");
++<<<<<<< HEAD
+
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ elm_widget_resize_object_set(obj, wd->lbl);
++=======
+ _label_format_set(wd->lbl, wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+
+ elm_widget_resize_object_set(obj, wd->lbl);
+
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_add(wd->lbl, EVAS_CALLBACK_RESIZE, _lbl_resize, obj);
_mirrored_set(obj, elm_widget_mirrored_get(obj));
if (_stringshare_key_value_replace(&wd->format,
"wrap", wrap_str, 0) == 0)
{
++<<<<<<< HEAD
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
++=======
+ _label_format_set(wd->lbl, wd->format);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
wd->changed = 1;
_sizing_eval(obj);
if (wd->wrap_w == w) return;
if (wd->ellipsis)
{
++<<<<<<< HEAD
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
++=======
+ _label_format_set(wd->lbl, wd->format);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
}
wd->wrap_w = w;
return wd->wrap_w;
}
++<<<<<<< HEAD
+EAPI void
+elm_label_wrap_height_set(Evas_Object *obj,
+ Evas_Coord h)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (h < 0) h = 0;
+ if (wd->wrap_h == h) return;
+ if (wd->ellipsis)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ }
+ wd->wrap_h = h;
+ _sizing_eval(obj);
+}
+
+EAPI Evas_Coord
+elm_label_wrap_height_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+ return wd->wrap_h;
+}
+
+EAPI void
+elm_label_fontsize_set(Evas_Object *obj, int fontsize)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_Strbuf *fontbuf = NULL;
+ int len, removeflag = 0;
+
+ if (!wd) return;
+ _elm_dangerous_call_check(__FUNCTION__);
+ len = strlen(wd->label);
+ if (len <= 0) return;
+ fontbuf = eina_strbuf_new();
+ eina_strbuf_append_printf(fontbuf, "%d", fontsize);
+
+ if (fontsize == 0) removeflag = 1; // remove fontsize tag
+
+ if (_stringshare_key_value_replace(&wd->format, "font_size", eina_strbuf_string_get(fontbuf), removeflag) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ wd->changed = 1;
+ _sizing_eval(obj);
+ }
+ eina_strbuf_free(fontbuf);
+}
+
+EAPI void
+elm_label_text_align_set(Evas_Object *obj, const char *alignmode)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ int len;
+
+ if (!wd) return;
+ _elm_dangerous_call_check(__FUNCTION__);
+ len = strlen(wd->label);
+ if (len <= 0) return;
+
+ if (_stringshare_key_value_replace(&wd->format, "align", alignmode, 0) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ }
+
+ wd->changed = 1;
+ _sizing_eval(obj);
+}
+
+EAPI void
+elm_label_text_color_set(Evas_Object *obj,
+ unsigned int r,
+ unsigned int g,
+ unsigned int b,
+ unsigned int a)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_Strbuf *colorbuf = NULL;
+ int len;
+
+ if (!wd) return;
+ _elm_dangerous_call_check(__FUNCTION__);
+ len = strlen(wd->label);
+ if (len <= 0) return;
+ colorbuf = eina_strbuf_new();
+ eina_strbuf_append_printf(colorbuf, "#%02X%02X%02X%02X", r, g, b, a);
+
+ if (_stringshare_key_value_replace(&wd->format, "color", eina_strbuf_string_get(colorbuf), 0) == 0)
+ {
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
+ edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
+ wd->changed = 1;
+ _sizing_eval(obj);
+ }
+ eina_strbuf_free(colorbuf);
+}
+
+EAPI void
+elm_label_background_color_set(Evas_Object *obj,
+ unsigned int r,
+ unsigned int g,
+ unsigned int b,
+ unsigned int a)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ evas_object_color_set(wd->bg, r, g, b, a);
+
+ if (!wd) return;
+ _elm_dangerous_call_check(__FUNCTION__);
+ if (wd->bgcolor == EINA_FALSE)
+ {
+ wd->bgcolor = 1;
+ edje_object_part_swallow(wd->lbl, "label.swallow.background", wd->bg);
+ }
++=======
+ EINA_DEPRECATED EAPI void
+ elm_label_wrap_height_set(Evas_Object *obj __UNUSED__,
+ Evas_Coord h __UNUSED__)
+ {
+ return;
+ }
+
+ EINA_DEPRECATED EAPI Evas_Coord
+ elm_label_wrap_height_get(const Evas_Object *obj __UNUSED__)
+ {
+ return 0;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_label_fontsize_set(Evas_Object *obj __UNUSED__,
+ int fontsize __UNUSED__)
+ {
+ return;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_label_text_align_set(Evas_Object *obj __UNUSED__,
+ const char *alignmode __UNUSED__)
+ {
+ return;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_label_text_color_set(Evas_Object *obj __UNUSED__,
+ unsigned int r __UNUSED__,
+ unsigned int g __UNUSED__,
+ unsigned int b __UNUSED__,
+ unsigned int a __UNUSED__)
+ {
+ return;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_label_background_color_set(Evas_Object *obj __UNUSED__,
+ unsigned int r __UNUSED__,
+ unsigned int g __UNUSED__,
+ unsigned int b __UNUSED__,
+ unsigned int a __UNUSED__)
+ {
+ return;
++>>>>>>> remotes/origin/upstream
}
EAPI void
if (_stringshare_key_value_replace(&wd->format,
"ellipsis", eina_strbuf_string_get(fontbuf), removeflag) == 0)
{
++<<<<<<< HEAD
+ edje_object_part_text_style_user_set(wd->lbl, "elm.text",
+ wd->format);
++=======
+ _label_format_set(wd->lbl, wd->format);
++>>>>>>> remotes/origin/upstream
edje_object_part_text_set(wd->lbl, "elm.text", wd->label);
wd->changed = 1;
_sizing_eval(obj);
}
++<<<<<<< HEAD
++=======
+ EAPI Eina_Bool
+ elm_label_ellipsis_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->ellipsis;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_label_slide_set(Evas_Object *obj,
Eina_Bool slide)
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_label_slide_get(Evas_Object *obj)
++=======
+ elm_label_slide_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
}
EAPI double
++<<<<<<< HEAD
+elm_label_slide_duration_get(Evas_Object *obj)
++=======
+ elm_label_slide_duration_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
Widget_Data *wd = elm_widget_data_get(obj);
* text doesn't fit the geometry of the label it will be ellipsized or be
* cut. Elementary provides several styles for this widget:
* @li default - No animation
++<<<<<<< HEAD
+ * @li marker - Centers the text in the label and make it bold by default
+ * @li slide_long - The entire text appears from the right of the screen and
+ * slides until it disappears in the left of the screen(reappering on the
++=======
+ * @li marker - Centers the text in the label and makes it bold by default
+ * @li slide_long - The entire text appears from the right of the screen and
+ * slides until it disappears in the left of the screen(reappearing on the
++>>>>>>> remotes/origin/upstream
* right again).
* @li slide_short - The text appears in the left of the label and slides to
* the right to show the overflow. When all of the text has been shown the
EAPI Evas_Coord elm_label_wrap_width_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * @brief Set wrap height of the label
+ *
+ * @param obj The label object
+ * @param h The wrap height in pixels at a minimum where words need to wrap
+ *
+ * This function sets the maximum height size hint of the label.
+ *
+ * @warning This is only relevant if the label is inside a container.
+ */
+EAPI void elm_label_wrap_height_set(Evas_Object *obj, Evas_Coord h);
+
+/**
+ * @brief get wrap width of the label
+ *
+ * @param obj The label object
+ * @return The wrap height in pixels at a minimum where words need to wrap
+ */
+EAPI Evas_Coord elm_label_wrap_height_get(const Evas_Object *obj);
+
+/**
+ * @brief Set the font size on the label object.
+ *
+ * @param obj The label object
+ * @param size font size
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ */
+EAPI void elm_label_fontsize_set(Evas_Object *obj, int fontsize);
+
+/**
+ * @brief Set the text color on the label object
+ *
+ * @param obj The label object
+ * @param r Red property background color of The label object
+ * @param g Green property background color of The label object
+ * @param b Blue property background color of The label object
+ * @param a Alpha property background color of The label object
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ */
+EAPI void elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+
+/**
+ * @brief Set the text align on the label object
+ *
+ * @param obj The label object
+ * @param align align mode ("left", "center", "right")
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ */
+EAPI void elm_label_text_align_set(Evas_Object *obj, const char *alignmode);
+
+/**
+ * @brief Set background color of the label
+ *
+ * @param obj The label object
+ * @param r Red property background color of The label object
+ * @param g Green property background color of The label object
+ * @param b Blue property background color of The label object
+ * @param a Alpha property background alpha of The label object
+ *
+ * @warning NEVER use this. It is for hyper-special cases only. use styles
+ * instead. e.g. "default", "marker", "slide_long" etc.
+ */
+EAPI void elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @brief Set the ellipsis behavior of the label
*
* @param obj The label object
* will be shown at the end of the widget.
*
* @warning This doesn't work with slide(elm_label_slide_set()) or if the
++<<<<<<< HEAD
+ * choosen wrap method was ELM_WRAP_WORD.
++=======
+ * chosen wrap method was ELM_WRAP_WORD.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_label_ellipsis_set(Evas_Object *obj, Eina_Bool ellipsis);
/**
++<<<<<<< HEAD
+ * @brief Set the text slide of the label
+ *
+ * @param obj The label object
+ * @param slide To start slide or stop
++=======
+ * @brief Get the ellipsis behavior of the label
+ *
+ * @param obj The label object
+ * @return If true, an ellipsis will be shown at the end of the label area.
+ *
+ * @see elm_label_ellipsis_set()
+ */
+ EAPI Eina_Bool elm_label_ellipsis_get(const Evas_Object *obj);
+
+ /**
+ * @brief Set sliding effect of label widget.
+ *
+ * @param obj The label object
+ * @param slide If true, sliding effect will be shown
++>>>>>>> remotes/origin/upstream
*
* If set to true, the text of the label will slide/scroll through the length of
* label.
EAPI void elm_label_slide_set(Evas_Object *obj, Eina_Bool slide);
/**
++<<<<<<< HEAD
+ * @brief Get the text slide mode of the label
+ *
+ * @param obj The label object
+ * @return slide slide mode value
+ *
+ * @see elm_label_slide_set()
+ */
+EAPI Eina_Bool elm_label_slide_get(Evas_Object *obj);
++=======
+ * @brief Get whether sliding effect is shown or not.
+ *
+ * @param obj The label object
+ * @return If true, sliding effect is shown.
+ *
+ * @see elm_label_slide_set()
+ */
+ EAPI Eina_Bool elm_label_slide_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @brief Set the slide duration(speed) of the label
*
* @param obj The label object
++<<<<<<< HEAD
+ * @return The duration in seconds in moving text from slide begin position
++=======
+ * @param duration The duration in seconds in moving text from slide begin position
++>>>>>>> remotes/origin/upstream
* to slide end position
*/
EAPI void elm_label_slide_duration_set(Evas_Object *obj, double duration);
*
* @see elm_label_slide_duration_set()
*/
++<<<<<<< HEAD
+EAPI double elm_label_slide_duration_get(Evas_Object *obj);
++=======
+ EAPI double elm_label_slide_duration_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
{
elm_object_cursor_set(pc->obj, pc->cursor);
elm_object_cursor_style_set(pc->obj, pc->style);
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(pc->obj, pc->engine_only);
++=======
+ elm_object_cursor_theme_search_enabled_set(pc->obj, pc->engine_only);
++>>>>>>> remotes/origin/upstream
}
static Part_Cursor *
return ret;
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content)
+{
+ _content_set_hook(obj, swallow, content);
++=======
+ EAPI Eina_Bool
+ elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content)
+ {
+ _content_set_hook(obj, swallow, content);
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
return _content_unset_hook(obj, swallow);
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_text_set(Evas_Object *obj, const char *part, const char *text)
+{
+ _elm_layout_label_set(obj, part, text);
++=======
+ EAPI Eina_Bool
+ elm_layout_text_set(Evas_Object *obj, const char *part, const char *text)
+ {
+ _elm_layout_label_set(obj, part, text);
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
return _elm_layout_label_get(obj, part);
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return;
++=======
+ EAPI Eina_Bool
+ elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (!edje_object_part_box_append(wd->lay, part, child))
WRN("child %p could not be appended to box part '%s'", child, part);
si->obj = child;
wd->subs = eina_list_append(wd->subs, si);
_request_sizing_eval(wd);
++<<<<<<< HEAD
+}
+
+EAPI void
+elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return;
++=======
+
+ return EINA_TRUE;
+ }
+
+ EAPI Eina_Bool
+ elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (!edje_object_part_box_prepend(wd->lay, part, child))
WRN("child %p could not be prepended to box part '%s'", child, part);
si->obj = child;
wd->subs = eina_list_prepend(wd->subs, si);
_request_sizing_eval(wd);
++<<<<<<< HEAD
++=======
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
static void
si->p.box.reference = NULL;
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return;
++=======
+ EAPI Eina_Bool
+ elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (!edje_object_part_box_insert_before(wd->lay, part, child, reference))
WRN("child %p could not be inserted before %p inf box part '%s'",
wd->subs = eina_list_append(wd->subs, si);
_request_sizing_eval(wd);
++<<<<<<< HEAD
+}
+
+EAPI void
+elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return;
++=======
+
+ return EINA_TRUE;
+ }
+
+ EAPI Eina_Bool
+ elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (!edje_object_part_box_insert_at(wd->lay, part, child, pos))
WRN("child %p could not be inserted at %u to box part '%s'",
si->p.box.pos = pos;
wd->subs = eina_list_append(wd->subs, si);
_request_sizing_eval(wd);
++<<<<<<< HEAD
++=======
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
return NULL;
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
++=======
+ EAPI Eina_Bool
+ elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
Subinfo *si;
Eina_List *lst;
++<<<<<<< HEAD
+ if (!wd) return;
+ EINA_SAFETY_ON_NULL_RETURN(part);
++=======
+ if (!wd) return EINA_FALSE;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(part, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
lst = eina_list_clone(wd->subs);
EINA_LIST_FREE(lst, si)
}
/* eventually something may not be added with layout, del them as well */
edje_object_part_box_remove_all(wd->lay, part, clear);
++<<<<<<< HEAD
+}
+
+EAPI void
+elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return;
++=======
+
+ return EINA_TRUE;
+ }
+
+ EAPI Eina_Bool
+ elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Subinfo *si;
+ if (!wd) return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
if (!edje_object_part_table_pack
(wd->lay, part, child, col, row, colspan, rowspan))
si->p.table.rowspan = rowspan;
wd->subs = eina_list_append(wd->subs, si);
_request_sizing_eval(wd);
++<<<<<<< HEAD
++=======
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
return NULL;
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
++=======
+ EAPI Eina_Bool
+ elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
Subinfo *si;
Eina_List *lst;
++<<<<<<< HEAD
+ if (!wd) return;
+ EINA_SAFETY_ON_NULL_RETURN(part);
++=======
+ if (!wd) return EINA_FALSE;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(part, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
lst = eina_list_clone(wd->subs);
EINA_LIST_FREE(lst, si)
}
/* eventually something may not be added with layout, del them as well */
edje_object_part_table_clear(wd->lay, part, clear);
++<<<<<<< HEAD
++=======
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
return elm_object_cursor_get(pc->obj);
}
++<<<<<<< HEAD
+EAPI void
+elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ EINA_SAFETY_ON_NULL_RETURN(part_name);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
++=======
+ EAPI Eina_Bool
+ elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(part_name, EINA_FALSE);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
Eina_List *l;
Part_Cursor *pc;
if (pc->obj) elm_object_cursor_unset(pc->obj);
_part_cursor_free(pc);
wd->parts_cursors = eina_list_remove_list(wd->parts_cursors, l);
++<<<<<<< HEAD
+ return;
+ }
+ }
++=======
+ return EINA_TRUE;
+ }
+ }
+
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
EINA_SAFETY_ON_NULL_RETURN_VAL(pc->obj, EINA_FALSE);
pc->engine_only = !!engine_only;
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(pc->obj, pc->engine_only);
++=======
+ elm_object_cursor_theme_search_enabled_set(pc->obj, pc->engine_only);
++>>>>>>> remotes/origin/upstream
return EINA_TRUE;
}
Part_Cursor *pc = _parts_cursors_find(wd, part_name);
EINA_SAFETY_ON_NULL_RETURN_VAL(pc, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(pc->obj, EINA_FALSE);
++<<<<<<< HEAD
+ return elm_object_cursor_engine_only_get(pc->obj);
++=======
+ return elm_object_cursor_theme_search_enabled_get(pc->obj);
++>>>>>>> remotes/origin/upstream
}
* sent to the Layout theme (with elm_object_signal_emit()) and the theme
* handled the signal by changing the box padding, or align, or both. Using
* the Elementary @ref Box widget is not necessarily harder or easier, it
++<<<<<<< HEAD
+ * just depends on the circunstances and requirements.
++=======
+ * just depends on the circumstances and requirements.
++>>>>>>> remotes/origin/upstream
*
* The Layout Box can be used through the @c elm_layout_box_* set of
* functions.
* Set the edje group from the elementary theme that will be used as layout
*
* @param obj The layout object
++<<<<<<< HEAD
+ * @param clas the clas of the group
++=======
+ * @param clas the class of the group
++>>>>>>> remotes/origin/upstream
* @param group the group
* @param style the style to used
*
* @param obj the layout object
* @param part the box part to which the object will be appended.
* @param child the child object to append to box.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the object is appended, it will become child of the layout. Its
* lifetime will be bound to the layout, whenever the layout dies the child
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child);
++=======
+ EAPI Eina_Bool elm_layout_box_append(Evas_Object *obj, const char *part, Evas_Object *child);
++>>>>>>> remotes/origin/upstream
/**
* Prepend child to layout box part.
* @param obj the layout object
* @param part the box part to prepend.
* @param child the child object to prepend to box.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the object is prepended, it will become child of the layout. Its
* lifetime will be bound to the layout, whenever the layout dies the child
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child);
++=======
+ EAPI Eina_Bool elm_layout_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child);
++>>>>>>> remotes/origin/upstream
/**
* Insert child to layout box part before a reference object.
* @param part the box part to insert.
* @param child the child object to insert into box.
* @param reference another reference object to insert before in box.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the object is inserted, it will become child of the layout. Its
* lifetime will be bound to the layout, whenever the layout dies the child
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
++=======
+ EAPI Eina_Bool elm_layout_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference);
++>>>>>>> remotes/origin/upstream
/**
* Insert child to layout box part at a given position.
* @param part the box part to insert.
* @param child the child object to insert into box.
* @param pos the numeric position >=0 to insert the child.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the object is inserted, it will become child of the layout. Its
* lifetime will be bound to the layout, whenever the layout dies the child
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
++=======
+ EAPI Eina_Bool elm_layout_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos);
++>>>>>>> remotes/origin/upstream
/**
* Remove a child of the given part box.
* @param clear If EINA_TRUE, then all objects will be deleted as
* well, otherwise they will just be removed and will be
* dangling on the canvas.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* The objects will be removed from the box part and their lifetime will
* not be handled by the layout anymore. This is equivalent to
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear);
++=======
+ EAPI Eina_Bool elm_layout_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear);
++>>>>>>> remotes/origin/upstream
/**
* Insert child to layout table part.
* @param colspan how many columns should be used to store this object. (>=
* 1)
* @param rowspan how many rows should be used to store this object. (>= 1)
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* Once the object is inserted, it will become child of the table. Its
* lifetime will be bound to the layout, and whenever the layout dies the
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
++=======
+ EAPI Eina_Bool elm_layout_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan);
++>>>>>>> remotes/origin/upstream
/**
* Unpack (remove) a child of the given part table.
* @param clear If EINA_TRUE, then all objects will be deleted as
* well, otherwise they will just be removed and will be
* dangling on the canvas.
++<<<<<<< HEAD
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
++>>>>>>> remotes/origin/upstream
*
* The objects will be removed from the table part and their lifetime will
* not be handled by the layout anymore. This is equivalent to
*
* @ingroup Layout
*/
++<<<<<<< HEAD
+EAPI void elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
++=======
+ EAPI Eina_Bool elm_layout_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear);
++>>>>>>> remotes/origin/upstream
/**
* Get the edje layout
* @param obj The layout object.
* @param part_name a part from loaded edje group, that had a cursor set
* with elm_layout_part_cursor_set().
++<<<<<<< HEAD
+ *
+ * @ingroup Layout
+ */
+EAPI void elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name);
++=======
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * @ingroup Layout
+ */
+ EAPI Eina_Bool elm_layout_part_cursor_unset(Evas_Object *obj, const char *part_name);
++>>>>>>> remotes/origin/upstream
/**
* Sets a specific cursor style for an edje part.
/**
* @def elm_layout_icon_get
++<<<<<<< HEAD
+ * Convienience macro to get the icon object from a layout that follows the
++=======
+ * Convenience macro to get the icon object from a layout that follows the
++>>>>>>> remotes/origin/upstream
* Elementary naming convention for its parts.
*
* @ingroup Layout
/**
* @def elm_layout_end_set
++<<<<<<< HEAD
+ * Convienience macro to set the end object in a layout that follows the
++=======
+ * Convenience macro to set the end object in a layout that follows the
++>>>>>>> remotes/origin/upstream
* Elementary naming convention for its parts.
*
* @ingroup Layout
/**
* @def elm_layout_end_get
++<<<<<<< HEAD
+ * Convienience macro to get the end object in a layout that follows the
++=======
+ * Convenience macro to get the end object in a layout that follows the
++>>>>>>> remotes/origin/upstream
* Elementary naming convention for its parts.
*
* @ingroup Layout
Elm_List_Mode mode;
Elm_List_Mode h_mode;
Evas_Coord minw[2], minh[2];
++<<<<<<< HEAD
+ Eina_Bool scr_minw : 1;
+ Eina_Bool scr_minh : 1;
++=======
+ Elm_Object_Select_Mode select_mode;
++>>>>>>> remotes/origin/upstream
int walking;
int movements;
struct {
Evas_Coord x, y;
} history[SWIPE_MOVES];
++<<<<<<< HEAD
++=======
+ Eina_Bool scr_minw : 1;
+ Eina_Bool scr_minh : 1;
++>>>>>>> remotes/origin/upstream
Eina_Bool swipe : 1;
Eina_Bool fix_pending : 1;
Eina_Bool on_hold : 1;
Eina_Bool multi : 1;
++<<<<<<< HEAD
+ Eina_Bool always_select : 1;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Bool longpressed : 1;
Eina_Bool wasselected : 1;
};
#define ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, ...) \
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, __VA_ARGS__); \
++<<<<<<< HEAD
+if (((Elm_List_Item *) it)->deleted) \
++=======
+ if (((Elm_List_Item *)it)->deleted) \
++>>>>>>> remotes/origin/upstream
{ \
ERR("ERROR: "#it" has been DELETED.\n"); \
return __VA_ARGS__; \
(!strcmp(ev->keyname, "KP_Home")))
{
it = eina_list_data_get(wd->items);
++<<<<<<< HEAD
+ elm_list_item_bring_in((Elm_Object_Item *) it);
++=======
+ elm_list_item_bring_in((Elm_Object_Item *)it);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
(!strcmp(ev->keyname, "KP_End")))
{
it = eina_list_data_get(eina_list_last(wd->items));
++<<<<<<< HEAD
+ elm_list_item_bring_in((Elm_Object_Item *) it);
++=======
+ elm_list_item_bring_in((Elm_Object_Item *)it);
++>>>>>>> remotes/origin/upstream
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
return EINA_TRUE;
}
if (!wd) return;
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
++<<<<<<< HEAD
+ if ((it->highlighted) || (it->base.disabled)) return;
++=======
+ if ((it->highlighted) || (it->base.disabled) ||
+ (wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return;
++>>>>>>> remotes/origin/upstream
evas_object_ref(obj);
_elm_list_walk(wd);
if (!wd) return;
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
++<<<<<<< HEAD
+ if (it->base.disabled) return;
+ if (it->selected)
+ {
+ if (wd->always_select) goto call;
++=======
+ if (it->base.disabled || (wd->select_mode == ELM_OBJECT_SELECT_MODE_NONE)) return;
+ if (it->selected)
+ {
+ if (wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) goto call;
++>>>>>>> remotes/origin/upstream
return;
}
it->selected = EINA_TRUE;
if (it->func) it->func((void *)it->base.data, WIDGET(it), it);
evas_object_smart_callback_call(obj, SIG_SELECTED, it);
++<<<<<<< HEAD
+ it->wd->last_selected_item = (Elm_Object_Item *) it;
++=======
+ it->wd->last_selected_item = (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
_elm_list_unwalk(wd);
evas_object_unref(obj);
static void
_item_disable(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->base.disabled)
edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
else
static void
_item_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
Evas_Object **icon_p = NULL;
Eina_Bool dummy = EINA_FALSE;
static Evas_Object *
_item_content_get(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((!part) || (!strcmp(part, "start")))
{
static Evas_Object *
_item_content_unset(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((!part) || (!strcmp(part, "start")))
{
Evas_Object *obj = item->icon;
++<<<<<<< HEAD
+ _item_content_set((Elm_Object_Item *) it, part, NULL);
++=======
+ _item_content_set((Elm_Object_Item *)it, part, NULL);
++>>>>>>> remotes/origin/upstream
return obj;
}
else if (!strcmp(part, "end"))
{
Evas_Object *obj = item->end;
++<<<<<<< HEAD
+ _item_content_set((Elm_Object_Item *) it, part, NULL);
++=======
+ _item_content_set((Elm_Object_Item *)it, part, NULL);
++>>>>>>> remotes/origin/upstream
return obj;
}
return NULL;
static void
_item_text_set(Elm_Object_Item *it, const char *part, const char *text)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_List_Item *list_it = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *list_it = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if (part && strcmp(part, "default")) return;
if (!eina_stringshare_replace(&list_it->label, text)) return;
if (VIEW(list_it))
static const char *
_item_text_get(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_List_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_List_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, EINA_FALSE);
+
+ Evas_Object *obj = WIDGET(it);
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Evas_Object *obj = WIDGET(it);
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
}
EAPI void
++<<<<<<< HEAD
+elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select)
++=======
+ elm_list_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->always_select = always_select;
+}
+
+EAPI Eina_Bool
++=======
+ if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
+ return;
+ if (wd->select_mode != mode)
+ wd->select_mode = mode;
+ }
+
+ EAPI Elm_Object_Select_Mode
+ elm_list_select_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_OBJECT_SELECT_MODE_MAX;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return ELM_OBJECT_SELECT_MODE_MAX;
+ return wd->select_mode;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_list_always_select_mode_set(Evas_Object *obj,
+ Eina_Bool always_select)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (always_select)
+ elm_list_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_list_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ elm_list_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_list_always_select_mode_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->always_select;
++=======
+ Elm_Object_Select_Mode oldmode = elm_list_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ return EINA_TRUE;
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
wd->items = eina_list_append(wd->items, it);
it->node = eina_list_last(wd->items);
elm_box_pack_end(wd->box, VIEW(it));
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
wd->items = eina_list_prepend(wd->items, it);
it->node = wd->items;
elm_box_pack_start(wd->box, VIEW(it));
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
wd->items = eina_list_prepend_relative_list(wd->items, it, before_it->node);
it->node = before_it->node->prev;
elm_box_pack_before(wd->box, VIEW(it), VIEW(before_it));
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
wd->items = eina_list_append_relative_list(wd->items, it, after_it->node);
it->node = after_it->node->next;
elm_box_pack_after(wd->box, VIEW(it), VIEW(after_it));
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
it->node = before->node->prev;
elm_box_pack_before(wd->box, VIEW(it), VIEW(before));
}
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_list_item_separator_set(Elm_Object_Item *it, Eina_Bool setting)
{
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
++<<<<<<< HEAD
+ ((Elm_List_Item *) it)->is_separator = !!setting;
++=======
+ ((Elm_List_Item *)it)->is_separator = !!setting;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
elm_list_item_separator_get(const Elm_Object_Item *it)
{
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_List_Item *) it)->is_separator;
++=======
+ return ((Elm_List_Item *)it)->is_separator;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
Evas_Object *obj = WIDGET(it);
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!wd) return;
selected = !!selected;
elm_list_item_selected_get(const Elm_Object_Item *it)
{
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_List_Item *) it)->selected;
++=======
+ return ((Elm_List_Item *)it)->selected;
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_list_item_prev(const Elm_Object_Item *it)
{
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->node->prev) return item->node->prev->data;
else return NULL;
}
elm_list_item_next(const Elm_Object_Item *it)
{
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_List_Item *item = (Elm_List_Item *) it;
++=======
+ Elm_List_Item *item = (Elm_List_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->node->next) return item->node->next->data;
else return NULL;
}
*
* @note Default value is #ELM_LIST_SCROLL.
*
++<<<<<<< HEAD
+ * Values <b> don't </b> work as bitmask, only one can be choosen.
++=======
+ * Values <b> don't </b> work as bitmask, only one can be chosen.
++>>>>>>> remotes/origin/upstream
*
* @see elm_list_mode_set()
* @see elm_list_mode_get()
{
ELM_LIST_COMPRESS = 0, /**< Won't set any of its size hints to inform how a possible container should resize it. Then, if it's not created as a "resize object", it might end with zero dimensions. The list will respect the container's geometry and, if any of its items won't fit into its transverse axis, one won't be able to scroll it in that direction. */
ELM_LIST_SCROLL, /**< Default value. Won't set any of its size hints to inform how a possible container should resize it. Then, if it's not created as a "resize object", it might end with zero dimensions. The list will respect the container's geometry and, if any of its items won't fit into its transverse axis, one will be able to scroll it in that direction (large items will get cropped). */
++<<<<<<< HEAD
+ ELM_LIST_LIMIT, /**< Set a minimun size hint on the list object, so that containers may respect it (and resize itself to fit the child properly). More specifically, a minimum size hint will be set for its transverse axis, so that the @b largest item in that direction fits well. Can have effects bounded by setting the list object's maximum size hints. */
++=======
+ ELM_LIST_LIMIT, /**< Set a minimum size hint on the list object, so that containers may respect it (and resize itself to fit the child properly). More specifically, a minimum size hint will be set for its transverse axis, so that the @b largest item in that direction fits well. Can have effects bounded by setting the list object's maximum size hints. */
++>>>>>>> remotes/origin/upstream
ELM_LIST_EXPAND, /**< Besides setting a minimum size on the transverse axis, just like the previous mode, will set a minimum size on the longitudinal axis too, trying to reserve space to all its children to be visible at a time. Can have effects bounded by setting the list object's maximum size hints. */
ELM_LIST_LAST /**< Indicates error if returned by elm_list_mode_get() */
} Elm_List_Mode;
EAPI Eina_Bool elm_list_horizontal_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Enable or disable always select mode on the list object.
+ *
+ * @param obj The list object
+ * @param always_select @c EINA_TRUE to enable always select mode or
+ * @c EINA_FALSE to disable it.
+ *
+ * @note Always select mode is disabled by default.
+ *
+ * Default behavior of list items is to only call its callback function
+ * the first time it's pressed, i.e., when it is selected. If a selected
+ * item is pressed again, and multi-select is disabled, it won't call
+ * this function (if multi-select is enabled it will unselect the item).
+ *
+ * If always select is enabled, it will call the callback function
+ * everytime a item is pressed, so it will call when the item is selected,
+ * and again when a selected item is pressed.
+ *
+ * @see elm_list_always_select_mode_get()
+ * @see elm_list_multi_select_set()
+ *
+ * @ingroup List
+ */
+EAPI void elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+/**
+ * Get a value whether always select mode is enabled or not, meaning that
+ * an item will always call its callback function, even if already selected.
+ *
+ * @param obj The list object
+ * @return @c EINA_TRUE means horizontal mode selection is enabled.
+ * @c EINA_FALSE indicates it's disabled. If @p obj is @c NULL,
+ * @c EINA_FALSE is returned.
+ *
+ * @see elm_list_always_select_mode_set() for details.
+ *
+ * @ingroup List
+ */
+EAPI Eina_Bool elm_list_always_select_mode_get(const Evas_Object *obj);
++=======
+ * Set the list select mode.
+ *
+ * @param obj The list object
+ * @param mode The select mode
+ *
+ * elm_list_select_mode_set() changes item select mode in the list widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+ * callback when first becoming selected. Any further clicks will
+ * do nothing, unless you set always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click will make the selected callbacks be called.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+ * entirely and they will neither appear selected nor call selected
+ * callback functions.
+ *
+ * @see elm_list_select_mode_get()
+ *
+ * @ingroup List
+ */
+ EAPI void
+ elm_list_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+ /**
+ * Get the list select mode.
+ *
+ * @param obj The list object
+ * @return The select mode
+ * (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_list_select_mode_set()
+ *
+ * @ingroup List
+ */
+ EAPI Elm_Object_Select_Mode
+ elm_list_select_mode_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Set bouncing behaviour when the scrolled content reaches an edge.
* axis is reached scrolling.
*
* @param obj The list object.
++<<<<<<< HEAD
+ * @param h_bounce Pointer where to store the bounce state of the horizontal
+ * axis.
+ * @param v_bounce Pointer where to store the bounce state of the vertical
++=======
+ * @param h_bounce Pointer to store the bounce state of the horizontal
+ * axis.
+ * @param v_bounce Pointer to store the bounce state of the vertical
++>>>>>>> remotes/origin/upstream
* axis.
*
* @see elm_scroller_bounce_get()
* @see elm_list_scroller_policy_get() for details.
*
* @param obj The list object.
++<<<<<<< HEAD
+ * @param policy_h Pointer where to store horizontal scrollbar policy.
+ * @param policy_v Pointer where to store vertical scrollbar policy.
++=======
+ * @param policy_h Pointer to store horizontal scrollbar policy.
+ * @param policy_v Pointer to store vertical scrollbar policy.
++>>>>>>> remotes/origin/upstream
*
* @ingroup List
*/
* A new item will be created and appended to the list, i.e., will
* be set as @b last item.
*
++<<<<<<< HEAD
+ * Items created with this method can be deleted with
+ * elm_list_item_del().
++=======
+ * Items created with this method can be deleted with elm_object_item_del().
++>>>>>>> remotes/origin/upstream
*
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_widget_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If always select is enabled it will call this function every time
* user clicks over an item (already selected or not).
* li = elm_list_add(win);
* ic = elm_icon_add(win);
* elm_icon_file_set(ic, "path/to/image", NULL);
++<<<<<<< HEAD
+ * elm_icon_scale_set(ic, EINA_TRUE, EINA_TRUE);
++=======
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
* elm_list_item_append(li, "label", ic, NULL, NULL, NULL);
* elm_list_go(li);
* evas_object_show(li);
* @endcode
*
* @see elm_list_always_select_mode_set()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_widget_item_del_cb_set()
* @see elm_list_clear()
* @see elm_icon_add()
* A new item will be created and prepended to the list, i.e., will
* be set as @b first item.
*
++<<<<<<< HEAD
+ * Items created with this method can be deleted with
+ * elm_list_item_del().
++=======
+ * Items created with this method can be deleted with elm_object_item_del().
++>>>>>>> remotes/origin/upstream
*
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_widget_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If always select is enabled it will call this function every time
* user clicks over an item (already selected or not).
*
* @see elm_list_item_append() for a simple code example.
* @see elm_list_always_select_mode_set()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_widget_item_del_cb_set()
* @see elm_list_clear()
* @see elm_icon_add()
* A new item will be created and added to the list. Its position in
* this list will be just before item @p before.
*
++<<<<<<< HEAD
+ * Items created with this method can be deleted with
+ * elm_list_item_del().
++=======
+ * Items created with this method can be deleted with elm_object_item_del().
++>>>>>>> remotes/origin/upstream
*
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_widget_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If always select is enabled it will call this function every time
* user clicks over an item (already selected or not).
*
* @see elm_list_item_append() for a simple code example.
* @see elm_list_always_select_mode_set()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_widget_item_del_cb_set()
* @see elm_list_clear()
* @see elm_icon_add()
* A new item will be created and added to the list. Its position in
* this list will be just after item @p after.
*
++<<<<<<< HEAD
+ * Items created with this method can be deleted with
+ * elm_list_item_del().
++=======
+ * Items created with this method can be deleted with elm_object_item_del().
++>>>>>>> remotes/origin/upstream
*
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_widget_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If always select is enabled it will call this function every time
* user clicks over an item (already selected or not).
*
* @see elm_list_item_append() for a simple code example.
* @see elm_list_always_select_mode_set()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_widget_item_del_cb_set()
* @see elm_list_clear()
* @see elm_icon_add()
* this list will be found comparing the new item with previously inserted
* items using function @p cmp_func.
*
++<<<<<<< HEAD
+ * Items created with this method can be deleted with
+ * elm_list_item_del().
++=======
+ * Items created with this method can be deleted with elm_object_item_del().
++>>>>>>> remotes/origin/upstream
*
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_widget_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If always select is enabled it will call this function every time
* user clicks over an item (already selected or not).
*
* @see elm_list_item_append() for a simple code example.
* @see elm_list_always_select_mode_set()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_widget_item_del_cb_set()
* @see elm_list_clear()
* @see elm_icon_add()
*
* @param obj The list object
*
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_list_item_append()
*
* @ingroup List
* or @c NULL on failure.
*
* @see elm_list_item_append()
++<<<<<<< HEAD
+ * @see elm_list_item_del()
++=======
+ * @see elm_object_item_del()
++>>>>>>> remotes/origin/upstream
* @see elm_list_clear()
*
* @ingroup List
* This sets the selected state of the given item @p it.
* @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
*
++<<<<<<< HEAD
+ * If a new item is selected the previosly selected will be unselected,
+ * unless multiple selection is enabled with elm_list_multi_select_set().
+ * Previoulsy selected item can be get with function
++=======
+ * If a new item is selected the previously selected will be unselected,
+ * unless multiple selection is enabled with elm_list_multi_select_set().
+ * Previously selected item can be get with function
++>>>>>>> remotes/origin/upstream
* elm_list_selected_item_get().
*
* Selected items will be highlighted.
* @param it The list item to be shown.
*
* It won't animate list until item is visible. If such behavior is wanted,
++<<<<<<< HEAD
+ * use elm_list_bring_in() intead.
++=======
+ * use elm_list_bring_in() instead.
++>>>>>>> remotes/origin/upstream
*
* @ingroup List
*/
EAPI void elm_list_item_bring_in(Elm_Object_Item *it);
/**
++<<<<<<< HEAD
+ * Delete the item from the list.
+ *
+ * @param it The item of list to be deleted.
+ *
+ * If deleting all list items is required, elm_list_clear()
+ * should be used instead of getting items list and deleting each one.
+ *
+ * @see elm_list_clear()
+ * @see elm_list_item_append()
+ * @see elm_widget_item_del_cb_set()
+ *
+ * @ingroup List
+ */
+EAPI void elm_list_item_del(Elm_Object_Item *it);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Gets the base object of the item.
*
* @param it The list item
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
bt = elm_button_add(win);
++<<<<<<< HEAD
+ elm_button_label_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
++=======
+ elm_object_text_set(bt, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~-_=+\\|]}[{;:'\",<.>/?");
++>>>>>>> remotes/origin/upstream
elm_win_resize_object_add(win, bt);
ecore_main_loop_iterate();
evas_object_del(win);
return elm_widget_content_part_unset(obj, part);
}
++<<<<<<< HEAD
+EAPI double
+elm_scale_get(void)
+{
+ return _elm_config->scale;
+}
+
+EAPI void
+elm_scale_set(double scale)
+{
+ if (_elm_config->scale == scale) return;
+ _elm_config->scale = scale;
+ _elm_rescale();
+}
+
+EAPI void
+elm_scale_all_set(double scale)
+{
+ elm_scale_set(scale);
+ _elm_config_all_update();
+}
+
+EAPI Eina_Bool
+elm_password_show_last_get(void)
+{
+ return _elm_config->password_show_last;
+}
+
+EAPI void
+elm_password_show_last_set(Eina_Bool password_show_last)
+{
+ if (_elm_config->password_show_last == password_show_last) return;
+ _elm_config->password_show_last = password_show_last;
+ edje_password_show_last_set(_elm_config->password_show_last);
+}
+
+EAPI double
+elm_password_show_last_timeout_get(void)
+{
+ return _elm_config->password_show_last_timeout;
+}
+
+EAPI void
+elm_password_show_last_timeout_set(double password_show_last_timeout)
+{
+ if (_elm_config->password_show_last_timeout == password_show_last_timeout) return;
+ _elm_config->password_show_last_timeout = password_show_last_timeout;
+ edje_password_show_last_timeout_set(_elm_config->password_show_last_timeout);
+}
+
+EAPI void
+elm_object_style_set(Evas_Object *obj,
+ const char *style)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_style_set(obj, style);
++=======
+ EAPI Eina_Bool
+ elm_object_style_set(Evas_Object *obj,
+ const char *style)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
+ return elm_widget_style_set(obj, style);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
return elm_widget_disabled_get(obj);
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_config_save(void)
+{
+ return _elm_config_save();
+}
+
+EAPI void
+elm_config_reload(void)
+{
+ _elm_config_reload();
+}
+
+EAPI const char *
+elm_profile_current_get(void)
+{
+ return _elm_config_current_profile_get();
+}
+
+EAPI const char *
+elm_profile_dir_get(const char *profile,
+ Eina_Bool is_user)
+{
+ return _elm_config_profile_dir_get(profile, is_user);
+}
+
+EAPI void
+elm_profile_dir_free(const char *p_dir)
+{
+ free((void *)p_dir);
+}
+
+EAPI Eina_List *
+elm_profile_list_get(void)
+{
+ return _elm_config_profiles_list();
+}
+
+EAPI void
+elm_profile_list_free(Eina_List *l)
+{
+ const char *dir;
+
+ EINA_LIST_FREE(l, dir)
+ eina_stringshare_del(dir);
+}
+
+EAPI void
+elm_profile_set(const char *profile)
+{
+ EINA_SAFETY_ON_NULL_RETURN(profile);
+ _elm_config_profile_set(profile);
+}
+
+EAPI void
+elm_profile_all_set(const char *profile)
+{
+ _elm_config_profile_set(profile);
+ _elm_config_all_update();
+}
+
+EAPI const char *
+elm_engine_current_get(void)
+{
+ return _elm_config->engine;
+}
+
+EAPI void
+elm_engine_set(const char *engine)
+{
+ EINA_SAFETY_ON_NULL_RETURN(engine);
+
+ _elm_config_engine_set(engine);
+}
+
+EAPI const Eina_List *
+elm_text_classes_list_get(void)
+{
+ return _elm_config_text_classes_get();
+}
+
+EAPI void
+elm_text_classes_list_free(const Eina_List *list)
+{
+ _elm_config_text_classes_free((Eina_List *)list);
+}
+
+EAPI const Eina_List *
+elm_font_overlay_list_get(void)
+{
+ return _elm_config_font_overlays_list();
+}
+
+EAPI void
+elm_font_overlay_set(const char *text_class,
+ const char *font,
+ Evas_Font_Size size)
+{
+ _elm_config_font_overlay_set(text_class, font, size);
+}
+
+EAPI void
+elm_font_overlay_unset(const char *text_class)
+{
+ _elm_config_font_overlay_remove(text_class);
+}
+
+EAPI void
+elm_font_overlay_apply(void)
+{
+ _elm_config_font_overlay_apply();
+}
+
+EAPI void
+elm_font_overlay_all_apply(void)
+{
+ elm_font_overlay_apply();
+ _elm_config_all_update();
+}
+
+EAPI Elm_Font_Properties *
+elm_font_properties_get(const char *font)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(font, NULL);
+ return _elm_font_properties_get(NULL, font);
+}
+
+EAPI void
+elm_font_properties_free(Elm_Font_Properties *efp)
+{
+ const char *str;
+
+ EINA_SAFETY_ON_NULL_RETURN(efp);
+ EINA_LIST_FREE(efp->styles, str)
+ if (str) eina_stringshare_del(str);
+ if (efp->name) eina_stringshare_del(efp->name);
+ free(efp);
+}
+
+EAPI const char *
+elm_font_fontconfig_name_get(const char *name,
+ const char *style)
+{
+ char buf[256];
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+ if (!style || style[0] == 0) return eina_stringshare_add(name);
+ snprintf(buf, 256, "%s" ELM_FONT_TOKEN_STYLE "%s", name, style);
+ return eina_stringshare_add(buf);
+}
+
+EAPI void
+elm_font_fontconfig_name_free(const char *name)
+{
+ eina_stringshare_del(name);
+}
+
+EAPI Eina_Hash *
+elm_font_available_hash_add(Eina_List *list)
+{
+ Eina_Hash *font_hash;
+ Eina_List *l;
+ void *key;
+
+ font_hash = NULL;
+
+ /* populate with default font families */
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash, "Sans:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Sans:style=Bold Oblique");
+
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash, "Serif:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Serif:style=Bold Oblique");
+
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Regular");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Bold");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Oblique");
+ font_hash = _elm_font_available_hash_add(font_hash,
+ "Monospace:style=Bold Oblique");
+
+ EINA_LIST_FOREACH(list, l, key)
+ font_hash = _elm_font_available_hash_add(font_hash, key);
+
+ return font_hash;
+}
+
+EAPI void
+elm_font_available_hash_del(Eina_Hash *hash)
+{
+ _elm_font_available_hash_del(hash);
+}
+
+EAPI Evas_Coord
+elm_finger_size_get(void)
+{
+ return _elm_config->finger_size;
+}
+
+EAPI void
+elm_finger_size_set(Evas_Coord size)
+{
+ if (_elm_config->finger_size == size) return;
+ _elm_config->finger_size = size;
+ _elm_rescale();
+}
+
+EAPI void
+elm_finger_size_all_set(Evas_Coord size)
+{
+ elm_finger_size_set(size);
+ _elm_config_all_update();
+}
+
+EAPI void
+elm_coords_finger_size_adjust(int times_w,
+ Evas_Coord *w,
+ int times_h,
+ Evas_Coord *h)
+{
+ if ((w) && (*w < (_elm_config->finger_size * times_w)))
+ *w = _elm_config->finger_size * times_w;
+ if ((h) && (*h < (_elm_config->finger_size * times_h)))
+ *h = _elm_config->finger_size * times_h;
+}
+
+EAPI void
+elm_all_flush(void)
++=======
+ EAPI void
+ elm_cache_all_flush(void)
++>>>>>>> remotes/origin/upstream
{
const Eina_List *l;
Evas_Object *obj;
}
}
++<<<<<<< HEAD
+EAPI int
+elm_cache_flush_interval_get(void)
+{
+ return _elm_config->cache_flush_poll_interval;
+}
+
+EAPI void
+elm_cache_flush_interval_set(int size)
+{
+ if (_elm_config->cache_flush_poll_interval == size) return;
+ _elm_config->cache_flush_poll_interval = size;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_cache_flush_interval_all_set(int size)
+{
+ elm_cache_flush_interval_set(size);
+ _elm_config_all_update();
+}
+
+EAPI Eina_Bool
+elm_cache_flush_enabled_get(void)
+{
+ return _elm_config->cache_flush_enable;
+}
+
+EAPI void
+elm_cache_flush_enabled_set(Eina_Bool enabled)
+{
+ enabled = !!enabled;
+ if (_elm_config->cache_flush_enable == enabled) return;
+ _elm_config->cache_flush_enable = enabled;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_cache_flush_enabled_all_set(Eina_Bool enabled)
+{
+ elm_cache_flush_enabled_set(enabled);
+ _elm_config_all_update();
+}
+
+EAPI int
+elm_font_cache_get(void)
+{
+ return _elm_config->font_cache;
+}
+
+EAPI void
+elm_font_cache_set(int size)
+{
+ if (_elm_config->font_cache == size) return;
+ _elm_config->font_cache = size;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_font_cache_all_set(int size)
+{
+ elm_font_cache_set(size);
+ _elm_config_all_update();
+}
+
+EAPI int
+elm_image_cache_get(void)
+{
+ return _elm_config->image_cache;
+}
+
+EAPI void
+elm_image_cache_set(int size)
+{
+ if (_elm_config->image_cache == size) return;
+ _elm_config->image_cache = size;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_image_cache_all_set(int size)
+{
+ elm_image_cache_set(size);
+ _elm_config_all_update();
+}
+
+EAPI int
+elm_edje_file_cache_get(void)
+{
+ return _elm_config->edje_cache;
+}
+
+EAPI void
+elm_edje_file_cache_set(int size)
+{
+ if (_elm_config->edje_cache == size) return;
+ _elm_config->edje_cache = size;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_edje_file_cache_all_set(int size)
+{
+ elm_edje_file_cache_set(size);
+ _elm_config_all_update();
+}
+
+EAPI int
+elm_edje_collection_cache_get(void)
+{
+ return _elm_config->edje_collection_cache;
+}
+
+EAPI void
+elm_edje_collection_cache_set(int size)
+{
+ if (_elm_config->edje_collection_cache == size) return;
+ _elm_config->edje_collection_cache = size;
+
+ _elm_recache();
+}
+
+EAPI void
+elm_edje_collection_cache_all_set(int size)
+{
+ elm_edje_collection_cache_set(size);
+ _elm_config_all_update();
++=======
+ EINA_DEPRECATED EAPI void
+ elm_all_flush(void)
+ {
+ elm_cache_all_flush();
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
Eina_Bool focus)
{
EINA_SAFETY_ON_NULL_RETURN(obj);
++<<<<<<< HEAD
+ if (focus)
+ {
+ if (elm_widget_focus_get(obj)) return;
+ elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
+ }
+ else
+ {
+ if (!elm_widget_can_focus_get(obj)) return;
+ elm_widget_focused_object_clear(obj);
+ }
+}
+
+EAPI void
+elm_object_focus(Evas_Object *obj)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_object_focus_set(obj, EINA_TRUE);
+}
+
+EAPI void
+elm_object_unfocus(Evas_Object *obj)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_object_focus_set(obj, EINA_FALSE);
++=======
+
+ if (focus == elm_widget_focus_get(obj)) return;
+
+ if (focus)
+ elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
+ else
+ elm_widget_focused_object_clear(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI void
{
EINA_SAFETY_ON_NULL_RETURN(obj);
elm_widget_can_focus_set(obj, enable);
++<<<<<<< HEAD
++=======
+ /*FIXME: According to the elm_object_focus_allow_get(), child_can_focus field
+ of the parent should be updated. Otherwise, the checking of it's child focus allow states should not be in elm_object_focus_allow_get() */
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
Evas_Object *relative_child)
{
EINA_SAFETY_ON_NULL_RETURN(obj);
++<<<<<<< HEAD
+ EINA_SAFETY_ON_NULL_RETURN(child);
++=======
++>>>>>>> remotes/origin/upstream
elm_widget_focus_custom_chain_append(obj, child, relative_child);
}
Evas_Object *relative_child)
{
EINA_SAFETY_ON_NULL_RETURN(obj);
++<<<<<<< HEAD
+ EINA_SAFETY_ON_NULL_RETURN(child);
+ elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
+}
+
+EAPI void
+elm_object_focus_cycle(Evas_Object *obj,
+ Elm_Focus_Direction dir)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_focus_cycle(obj, dir);
+}
+
+EAPI void
+elm_object_focus_direction_go(Evas_Object *obj,
+ int x,
+ int y)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_focus_direction_go(obj, x, y);
+}
+
+EAPI void
+elm_object_tree_unfocusable_set(Evas_Object *obj,
+ Eina_Bool tree_unfocusable)
+{
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_tree_unfocusable_set(obj, tree_unfocusable);
+}
+
+EAPI Eina_Bool
+elm_object_tree_unfocusable_get(const Evas_Object *obj)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
+ return elm_widget_tree_unfocusable_get(obj);
+}
+
+EAPI Eina_Bool
+elm_focus_highlight_enabled_get(void)
+{
+ return _elm_config->focus_highlight_enable;
+}
+
+EAPI void
+elm_focus_highlight_enabled_set(Eina_Bool enable)
+{
+ _elm_config->focus_highlight_enable = !!enable;
+}
+
+EAPI Eina_Bool
+elm_focus_highlight_animate_get(void)
+{
+ return _elm_config->focus_highlight_animate;
+}
+
+EAPI void
+elm_focus_highlight_animate_set(Eina_Bool animate)
+{
+ _elm_config->focus_highlight_animate = !!animate;
+}
+
+EAPI Eina_Bool
+elm_scroll_bounce_enabled_get(void)
+{
+ return _elm_config->thumbscroll_bounce_enable;
+}
+
+EAPI void
+elm_scroll_bounce_enabled_set(Eina_Bool enabled)
+{
+ _elm_config->thumbscroll_bounce_enable = enabled;
+}
+
+EAPI void
+elm_scroll_bounce_enabled_all_set(Eina_Bool enabled)
+{
+ elm_scroll_bounce_enabled_set(enabled);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_bounce_friction_get(void)
+{
+ return _elm_config->thumbscroll_bounce_friction;
+}
+
+EAPI void
+elm_scroll_bounce_friction_set(double friction)
+{
+ _elm_config->thumbscroll_bounce_friction = friction;
+}
+
+EAPI void
+elm_scroll_bounce_friction_all_set(double friction)
+{
+ elm_scroll_bounce_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_page_scroll_friction_get(void)
+{
+ return _elm_config->page_scroll_friction;
+}
+
+EAPI void
+elm_scroll_page_scroll_friction_set(double friction)
+{
+ _elm_config->page_scroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_page_scroll_friction_all_set(double friction)
+{
+ elm_scroll_page_scroll_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_bring_in_scroll_friction_get(void)
+{
+ return _elm_config->bring_in_scroll_friction;
+}
+
+EAPI void
+elm_scroll_bring_in_scroll_friction_set(double friction)
+{
+ _elm_config->bring_in_scroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_bring_in_scroll_friction_all_set(double friction)
+{
+ elm_scroll_bring_in_scroll_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_zoom_friction_get(void)
+{
+ return _elm_config->zoom_friction;
+}
+
+EAPI void
+elm_scroll_zoom_friction_set(double friction)
+{
+ _elm_config->zoom_friction = friction;
+}
+
+EAPI void
+elm_scroll_zoom_friction_all_set(double friction)
+{
+ elm_scroll_zoom_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI Eina_Bool
+elm_scroll_thumbscroll_enabled_get(void)
+{
+ return _elm_config->thumbscroll_enable;
+}
+
+EAPI void
+elm_scroll_thumbscroll_enabled_set(Eina_Bool enabled)
+{
+ _elm_config->thumbscroll_enable = enabled;
+}
+
+EAPI void
+elm_scroll_thumbscroll_enabled_all_set(Eina_Bool enabled)
+{
+ elm_scroll_thumbscroll_enabled_set(enabled);
+ _elm_config_all_update();
+}
+
+EAPI unsigned int
+elm_scroll_thumbscroll_threshold_get(void)
+{
+ return _elm_config->thumbscroll_threshold;
+}
+
+EAPI void
+elm_scroll_thumbscroll_threshold_set(unsigned int threshold)
+{
+ _elm_config->thumbscroll_threshold = threshold;
+}
+
+EAPI void
+elm_scroll_thumbscroll_threshold_all_set(unsigned int threshold)
+{
+ elm_scroll_thumbscroll_threshold_set(threshold);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_thumbscroll_momentum_threshold_get(void)
+{
+ return _elm_config->thumbscroll_momentum_threshold;
+}
+
+EAPI void
+elm_scroll_thumbscroll_momentum_threshold_set(double threshold)
+{
+ _elm_config->thumbscroll_momentum_threshold = threshold;
+}
+
+EAPI void
+elm_scroll_thumbscroll_momentum_threshold_all_set(double threshold)
+{
+ elm_scroll_thumbscroll_momentum_threshold_set(threshold);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_thumbscroll_friction_get(void)
+{
+ return _elm_config->thumbscroll_friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_friction_set(double friction)
+{
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_friction_all_set(double friction)
+{
+ elm_scroll_thumbscroll_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_thumbscroll_border_friction_get(void)
+{
+ return _elm_config->thumbscroll_border_friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_border_friction_set(double friction)
+{
+ if (friction < 0.0) friction = 0.0;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_border_friction_all_set(double friction)
+{
+ elm_scroll_thumbscroll_border_friction_set(friction);
+ _elm_config_all_update();
+}
+
+EAPI double
+elm_scroll_thumbscroll_sensitivity_friction_get(void)
+{
+ return _elm_config->thumbscroll_sensitivity_friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_sensitivity_friction_set(double friction)
+{
+ if (friction < 0.1) friction = 0.1;
+ if (friction > 1.0) friction = 1.0;
+ _elm_config->thumbscroll_friction = friction;
+}
+
+EAPI void
+elm_scroll_thumbscroll_sensitivity_friction_all_set(double friction)
+{
+ elm_scroll_thumbscroll_sensitivity_friction_set(friction);
+ _elm_config_all_update();
++=======
+ elm_widget_focus_custom_chain_prepend(obj, child, relative_child);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_object_focus_cycle(Evas_Object *obj,
+ Elm_Focus_Direction dir)
+ {
+ elm_object_focus_next(obj, dir);
+ }
+
+ EAPI void
+ elm_object_focus_next(Evas_Object *obj,
+ Elm_Focus_Direction dir)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_focus_cycle(obj, dir);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_object_tree_unfocusable_set(Evas_Object *obj,
+ Eina_Bool unfocusable)
+ {
+ elm_object_tree_focus_allow_set(obj, unfocusable);
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_object_tree_unfocusable_get(const Evas_Object *obj)
+ {
+ return elm_object_tree_focus_allow_get(obj);
+ }
+
+ EAPI void
+ elm_object_tree_focus_allow_set(Evas_Object *obj,
+ Eina_Bool tree_focusable)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ elm_widget_tree_unfocusable_set(obj, !tree_focusable);
+ }
+
+ EAPI Eina_Bool
+ elm_object_tree_focus_allow_get(const Evas_Object *obj)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
+ return elm_widget_tree_unfocusable_get(obj);
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI void
++<<<<<<< HEAD
+elm_longpress_timeout_set(double longpress_timeout)
+{
+ _elm_config->longpress_timeout = longpress_timeout;
+}
+
+EAPI double
+elm_longpress_timeout_get(void)
+{
+ return _elm_config->longpress_timeout;
++=======
+ elm_coords_finger_size_adjust(int times_w,
+ Evas_Coord *w,
+ int times_h,
+ Evas_Coord *h)
+ {
+ if ((w) && (*w < (_elm_config->finger_size * times_w)))
+ *w = _elm_config->finger_size * times_w;
+ if ((h) && (*h < (_elm_config->finger_size * times_h)))
+ *h = _elm_config->finger_size * times_h;
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
++=======
+ _elm_widget_item_content_part_set((Elm_Widget_Item *)it, part, content);
++>>>>>>> remotes/origin/upstream
}
EAPI void
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
++=======
+ _elm_widget_item_content_part_set((Elm_Widget_Item *)it, part, content);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_object_item_content_part_get(const Elm_Object_Item *it,
const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_content_part_get((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_object_item_part_content_get(const Elm_Object_Item *it,
const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_content_part_get((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_content_part_unset((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_content_part_unset((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI void
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
++=======
+ _elm_widget_item_text_part_set((Elm_Widget_Item *)it, part, label);
++>>>>>>> remotes/origin/upstream
}
EAPI void
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
++=======
+ _elm_widget_item_text_part_set((Elm_Widget_Item *)it, part, label);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_text_part_get((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
++=======
+ return _elm_widget_item_text_part_get((Elm_Widget_Item *)it, part);
++>>>>>>> remotes/origin/upstream
}
EAPI void
EAPI void
elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
{
++<<<<<<< HEAD
+ _elm_widget_item_access_info_set((Elm_Widget_Item *) it, txt);
++=======
+ _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);
++>>>>>>> remotes/origin/upstream
}
EAPI void *
EAPI void
elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
{
++<<<<<<< HEAD
+ _elm_widget_item_signal_emit((Elm_Widget_Item *) it, emission, source);
++=======
+ _elm_widget_item_signal_emit((Elm_Widget_Item *)it, emission, source);
++>>>>>>> remotes/origin/upstream
}
EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
{
++<<<<<<< HEAD
+ _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled);
++=======
+ _elm_widget_item_disabled_set((Elm_Widget_Item *)it, disabled);
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ return _elm_widget_item_disabled_get((Elm_Widget_Item *) it);
++=======
+ return _elm_widget_item_disabled_get((Elm_Widget_Item *)it);
++>>>>>>> remotes/origin/upstream
}
EAPI void elm_object_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb del_cb)
{
++<<<<<<< HEAD
+ _elm_widget_item_del_cb_set((Elm_Widget_Item *) it, del_cb);
++=======
+ _elm_widget_item_del_cb_set((Elm_Widget_Item *)it, del_cb);
++>>>>>>> remotes/origin/upstream
}
EAPI void elm_object_item_del(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ _elm_widget_item_del((Elm_Widget_Item *) it);
+}
+
+EAPI void
+elm_object_item_tooltip_text_set(Elm_Object_Item *item, const char *text)
+{
+ elm_widget_item_tooltip_text_set(item, text);
+}
+
+EAPI void
+elm_object_item_tooltip_content_cb_set(Elm_Object_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb)
+{
+ elm_widget_item_tooltip_content_cb_set(item, func, data, del_cb);
+}
+
+EAPI void
+elm_object_item_tooltip_unset(Elm_Object_Item *item)
+{
+ elm_widget_item_tooltip_unset(item);
+}
+
+EAPI Eina_Bool
+elm_object_item_tooltip_window_mode_set(Elm_Object_Item *item, Eina_Bool disable)
+{
+ return elm_widget_item_tooltip_window_mode_set(item, disable);
+}
+
+EAPI Eina_Bool
+elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *item)
+{
+ return elm_widget_item_tooltip_window_mode_get(item);
+}
+
+EAPI void
+elm_object_item_tooltip_style_set(Elm_Object_Item *item, const char *style)
+{
+ elm_widget_item_tooltip_style_set(item, style);
+}
+
+EAPI const char *
+elm_object_item_tooltip_style_get(const Elm_Object_Item *item)
+{
+ return elm_widget_item_tooltip_style_get(item);
+}
+
+EINA_DEPRECATED EAPI Evas_Object *
+elm_object_item_object_get(const Elm_Object_Item *it)
+{
+ return elm_object_item_widget_get(it);
+}
+
+EAPI void
+elm_object_item_cursor_set(Elm_Object_Item *item, const char *cursor)
+{
+ elm_widget_item_tooltip_style_set(item, cursor);
+}
+
+EAPI const char *
+elm_object_item_cursor_get(const Elm_Object_Item *item)
+{
+ return elm_widget_item_cursor_get(item);
+}
+
+EAPI void
+elm_object_item_cursor_unset(Elm_Object_Item *item)
+{
+ elm_widget_item_cursor_unset(item);
+}
+
+EAPI void
+elm_object_item_cursor_style_set(Elm_Object_Item *item, const char *style)
+{
+ elm_widget_item_cursor_style_set(item, style);
+}
+
+EAPI const char *
+elm_object_item_cursor_style_get(const Elm_Object_Item *item)
+{
+ return elm_widget_item_cursor_style_get(item);
+}
+
+EAPI void
+elm_object_item_cursor_engine_only_set(Elm_Object_Item *item, Eina_Bool engine_only)
+{
+ elm_widget_item_cursor_engine_only_set(item, engine_only);
+}
+
+EAPI Eina_Bool
+elm_object_item_cursor_engine_only_get(const Elm_Object_Item *item)
+{
+ return elm_widget_item_cursor_engine_only_get(item);
++=======
+ _elm_widget_item_del((Elm_Widget_Item *)it);
+ }
+
+ EAPI void
+ elm_object_item_tooltip_text_set(Elm_Object_Item *it, const char *text)
+ {
+ elm_widget_item_tooltip_text_set(it, text);
+ }
+
+ EAPI void
+ elm_object_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb)
+ {
+ elm_widget_item_tooltip_content_cb_set(it, func, data, del_cb);
+ }
+
+ EAPI void
+ elm_object_item_tooltip_unset(Elm_Object_Item *it)
+ {
+ elm_widget_item_tooltip_unset(it);
+ }
+
+ EAPI Eina_Bool
+ elm_object_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable)
+ {
+ return elm_widget_item_tooltip_window_mode_set(it, disable);
+ }
+
+ EAPI Eina_Bool
+ elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *it)
+ {
+ return elm_widget_item_tooltip_window_mode_get(it);
+ }
+
+ EAPI void
+ elm_object_item_tooltip_style_set(Elm_Object_Item *it, const char *style)
+ {
+ elm_widget_item_tooltip_style_set(it, style);
+ }
+
+ EAPI const char *
+ elm_object_item_tooltip_style_get(const Elm_Object_Item *it)
+ {
+ return elm_widget_item_tooltip_style_get(it);
+ }
+
+ EAPI void
+ elm_object_item_cursor_set(Elm_Object_Item *it, const char *cursor)
+ {
+ elm_widget_item_cursor_set(it, cursor);
+ }
+
+ EAPI const char *
+ elm_object_item_cursor_get(const Elm_Object_Item *it)
+ {
+ return elm_widget_item_cursor_get(it);
+ }
+
+ EAPI void
+ elm_object_item_cursor_unset(Elm_Object_Item *it)
+ {
+ elm_widget_item_cursor_unset(it);
+ }
+
+ EAPI void
+ elm_object_item_cursor_style_set(Elm_Object_Item *it, const char *style)
+ {
+ elm_widget_item_cursor_style_set(it, style);
+ }
+
+ EAPI const char *
+ elm_object_item_cursor_style_get(const Elm_Object_Item *it)
+ {
+ return elm_widget_item_cursor_style_get(it);
+ }
+
+ EAPI void
+ elm_object_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only)
+ {
+ elm_widget_item_cursor_engine_only_set(it, engine_only);
+ }
+
+ EAPI Eina_Bool
+ elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it)
+ {
+ return elm_widget_item_cursor_engine_only_get(it);
+ }
+
+ EAPI void
+ elm_object_item_smart_callback_add(Elm_Object_Item *it, const char *event, Elm_Object_Item_Smart_Cb func, const void *data)
+ {
+ elm_widget_item_smart_callback_add((Elm_Widget_Item *)it, event, func, data);
+ }
+
+ EAPI void *
+ elm_object_item_smart_callback_del(Elm_Object_Item *it, const char *event, Elm_Object_Item_Smart_Cb func)
+ {
+ return elm_widget_item_smart_callback_del((Elm_Widget_Item *)it, event,
+ func);
++>>>>>>> remotes/origin/upstream
}
typedef struct _Pan Pan;
typedef struct _Grid Grid;
typedef struct _Grid_Item Grid_Item;
++<<<<<<< HEAD
+typedef struct _Marker_Group Marker_Group;
+typedef struct _Event Event;
++=======
+ typedef struct _Overlay_Default Overlay_Default;
+ typedef struct _Overlay_Group Overlay_Group;
+ typedef struct _Overlay_Class Overlay_Class;
+ typedef struct _Overlay_Bubble Overlay_Bubble;
+ typedef struct _Overlay_Route Overlay_Route;
+ typedef struct _Marker_Group Marker_Group;
+ typedef struct _Marker_Bubble Marker_Bubble;
++>>>>>>> remotes/origin/upstream
typedef struct _Path_Node Path_Node;
typedef struct _Path_Waypoint Path_Waypoint;
typedef struct _Url_Data Url_Data;
typedef struct _Route_Dump Route_Dump;
typedef struct _Name_Dump Name_Dump;
++<<<<<<< HEAD
+typedef struct _Track_Dump Track_Dump;
+
+#define CACHE_ROOT_PATH "/tmp/elm_map"
+#define CACHE_PATH CACHE_ROOT_PATH"/%d/%d/%d"
+#define CACHE_FILE_PATH "%s/%d.png"
+#define DEST_ROUTE_XML_FILE "/tmp/elm_map-route-XXXXXX"
+#define DEST_NAME_XML_FILE "/tmp/elm_map-name-XXXXXX"
+
+#define ROUTE_YOURS_URL "http://www.yournavigation.org/api/dev/route.php"
+#define ROUTE_TYPE_MOTORCAR "motocar"
+#define ROUTE_TYPE_BICYCLE "bicycle"
+#define ROUTE_TYPE_FOOT "foot"
+#define YOURS_DISTANCE "distance"
+#define YOURS_DESCRIPTION "description"
+#define YOURS_COORDINATES "coordinates"
+
+// TODO: fix monav & ors url
+#define ROUTE_MONAV_URL "http://"
+#define ROUTE_ORS_URL "http:///"
+
+#define NAME_NOMINATIM_URL "http://nominatim.openstreetmap.org"
+#define NOMINATIM_RESULT "result"
+#define NOMINATIM_PLACE "place"
+#define NOMINATIM_ATTR_LON "lon"
+#define NOMINATIM_ATTR_LAT "lat"
+
+#define PINCH_ZOOM_MIN 0.25
+#define PINCH_ZOOM_MAX 4.0
+#define MAX_CONCURRENT_DOWNLOAD 10
+
+#define GPX_NAME "name>"
+#define GPX_COORDINATES "trkpt "
+#define GPX_LON "lon"
+#define GPX_LAT "lat"
+#define GPX_ELE "ele>"
+#define GPX_TIME "time>"
+
+// Map sources
+// Currently the size of a tile must be 256*256
+// and the size of the map must be pow(2.0, z)*tile_size
+typedef struct _Map_Sources_Tab
++=======
+ typedef struct _Delayed_Data Delayed_Data;
+ typedef struct _Source_Tile Source_Tile;
+ typedef struct _Source_Route Source_Route;
+ typedef struct _Source_Name Source_Name;
+
+ typedef char *(*Elm_Map_Module_Source_Name_Func)(void);
+ typedef int (*Elm_Map_Module_Tile_Zoom_Min_Func)(void);
+ typedef int (*Elm_Map_Module_Tile_Zoom_Max_Func)(void);
+ typedef char *(*Elm_Map_Module_Tile_Url_Func)(Evas_Object *obj, int x, int y, int zoom);
+ typedef Eina_Bool (*Elm_Map_Module_Tile_Geo_to_Coord_Func)(const Evas_Object *obj, int zoom, double lon, double lat, int size, int *x, int *y);
+ typedef Eina_Bool (*Elm_Map_Module_Tile_Coord_to_Geo_Func)(const Evas_Object *obj, int zoom, int x, int y, int size, double *lon, double *lat);
+ typedef char *(*Elm_Map_Module_Route_Url_Func)(Evas_Object *obj, const char *type_name, int method, double flon, double flat, double tlon, double tlat);
+ typedef char *(*Elm_Map_Module_Name_Url_Func)(Evas_Object *obj, int method, const char *name, double lon, double lat);
+
+ #define ROUND(z) (((z) < 0) ? (int)ceil((z) - 0.005) : (int)floor((z) + 0.005))
+ #define EVAS_MAP_POINT 4
+ #define DEFAULT_TILE_SIZE 256
+ #define MAX_CONCURRENT_DOWNLOAD 10
+ #define MARER_MAX_NUMBER 30
+ #define OVERLAY_CLASS_ZOOM_MAX 255
+ #define OVERLAY_GROUPING_SCALE 2
+
+ #define CACHE_ROOT "/tmp/elm_map"
+ #define CACHE_TILE_ROOT CACHE_ROOT"/%d/%d/%d"
+ #define CACHE_TILE_PATH "%s/%d.png"
+ #define CACHE_ROUTE_ROOT CACHE_ROOT"/route"
+ #define CACHE_NAME_ROOT CACHE_ROOT"/name"
+
+ #define ROUTE_YOURS_URL "http://www.yournavigation.org/api/dev/route.php"
+ #define ROUTE_TYPE_MOTORCAR "motocar"
+ #define ROUTE_TYPE_BICYCLE "bicycle"
+ #define ROUTE_TYPE_FOOT "foot"
+ #define YOURS_DISTANCE "distance"
+ #define YOURS_DESCRIPTION "description"
+ #define YOURS_COORDINATES "coordinates"
+
+ #define NAME_NOMINATIM_URL "http://nominatim.openstreetmap.org"
+ #define NOMINATIM_RESULT "result"
+ #define NOMINATIM_PLACE "place"
+ #define NOMINATIM_ATTR_LON "lon"
+ #define NOMINATIM_ATTR_LAT "lat"
+
+ enum _Route_Xml_Attribute
+ {
+ ROUTE_XML_NONE,
+ ROUTE_XML_DISTANCE,
+ ROUTE_XML_DESCRIPTION,
+ ROUTE_XML_COORDINATES,
+ ROUTE_XML_LAST
+ } Route_Xml_Attibute;
+
+ enum _Name_Xml_Attribute
+ {
+ NAME_XML_NONE,
+ NAME_XML_NAME,
+ NAME_XML_LON,
+ NAME_XML_LAT,
+ NAME_XML_LAST
+ } Name_Xml_Attibute;
+
+ enum _Track_Xml_Attribute
+ {
+ TRACK_XML_NONE,
+ TRACK_XML_COORDINATES,
+ TRACK_XML_LAST
+ } Track_Xml_Attibute;
+
+ struct _Delayed_Data
+ {
+ void (*func)(void *data);
+ Widget_Data *wd;
+ Elm_Map_Zoom_Mode mode;
+ int zoom;
+ double lon, lat;
+ Eina_List *markers;
+ Eina_List *overlays;
+ };
+
+ // Map Tile source
+ // FIXME: Currently tile size must be 256*256
+ // and the map size is pow(2.0, z) * (tile size)
+ struct _Source_Tile
++>>>>>>> remotes/origin/upstream
{
const char *name;
int zoom_min;
int zoom_max;
++<<<<<<< HEAD
+ ElmMapModuleUrlFunc url_cb;
+ Elm_Map_Route_Sources route_source;
+ ElmMapModuleRouteUrlFunc route_url_cb;
+ ElmMapModuleNameUrlFunc name_url_cb;
+ ElmMapModuleGeoIntoCoordFunc geo_into_coord;
+ ElmMapModuleCoordIntoGeoFunc coord_into_geo;
+} Map_Sources_Tab;
+
+//Zemm min is supposed to be 0
+static char *_mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
+static char *_osmarender_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
+static char *_cyclemap_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
+static char *_mapquest_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
+static char *_mapquest_aerial_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
+
+static char *_yours_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat);
+/*
+static char *_monav_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+static char *_ors_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat);
+ */
+static char *_nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double lat);
+
+static Map_Sources_Tab default_map_sources_tab[] =
+{
+ {"Mapnik", 0, 18, _mapnik_url_cb, ELM_MAP_ROUTE_SOURCE_YOURS, _yours_url_cb, _nominatim_url_cb, NULL, NULL},
+ {"Osmarender", 0, 17, _osmarender_url_cb, ELM_MAP_ROUTE_SOURCE_YOURS, _yours_url_cb, _nominatim_url_cb, NULL, NULL},
+ {"CycleMap", 0, 16, _cyclemap_url_cb, ELM_MAP_ROUTE_SOURCE_YOURS, _yours_url_cb, _nominatim_url_cb, NULL, NULL},
+ {"MapQuest", 0, 18, _mapquest_url_cb, ELM_MAP_ROUTE_SOURCE_YOURS, _yours_url_cb, _nominatim_url_cb, NULL, NULL},
+ {"MapQuest Open Aerial", 0, 11, _mapquest_aerial_url_cb, ELM_MAP_ROUTE_SOURCE_YOURS, _yours_url_cb, _nominatim_url_cb, NULL, NULL},
++=======
+ Elm_Map_Module_Tile_Url_Func url_cb;
+ Elm_Map_Module_Tile_Geo_to_Coord_Func geo_to_coord;
+ Elm_Map_Module_Tile_Coord_to_Geo_Func coord_to_geo;
+ };
+
+ // Map Route Source
+ struct _Source_Route
+ {
+ const char *name;
+ Elm_Map_Module_Route_Url_Func url_cb;
+ };
+
+ // Map Name Source
+ struct _Source_Name
+ {
+ const char *name;
+ Elm_Map_Module_Name_Url_Func url_cb;
++>>>>>>> remotes/origin/upstream
};
struct _Url_Data
char *fname;
};
++<<<<<<< HEAD
+struct _Elm_Map_Marker_Class
+{
+ const char *style;
+ int zoom_displayed;
+
+ struct _Elm_Map_Marker_Class_Func
+ {
+ ElmMapMarkerGetFunc get;
+ ElmMapMarkerDelFunc del; //if NULL the object will be destroyed with evas_object_del()
+ ElmMapMarkerIconGetFunc icon_get;
+ } func;
+
+ struct
+ { //this part is private, do not modify these values
+ Eina_Bool set : 1;
+ Evas_Coord edje_w, edje_h;
+ } priv;
+};
+
+struct _Elm_Map_Marker
+{
+ Widget_Data *wd;
+ Elm_Map_Marker_Class *clas;
+ Elm_Map_Group_Class *clas_group;
+ double longitude, latitude;
+
+ Evas_Coord map_size;
+ Evas_Coord *x, *y;
+ void *data;
+ Marker_Group **groups;
+ Evas_Object *content;
++=======
+ struct _Overlay_Default
+ {
+ Evas_Coord w, h;
+
+ // Display priority is obj > icon > clas_obj > clas_icon > layout
+ Evas_Object *obj;
+ Evas_Object *icon;
+
+ // if obj or icon exists, do not inherit from class
+ Evas_Object *clas_obj; // Duplicated from class icon
+ Evas_Object *clas_obj_ref; // Checking fro class icon is changed
+ Evas_Object *clas_icon; // Duplicated from class icon
+ Evas_Object *clas_icon_ref; // Checking for class icon is changed
+
+ char *style;
+ Evas_Object *layout;
+ double lon, lat;
+ Evas_Coord x, y;
+ };
+
+ struct _Overlay_Group
+ {
+ Overlay_Default *ovl;
+ Evas_Object *clas_icon;
+ Elm_Map_Overlay *clas;
+ Eina_List *members;
+ };
+
+ struct _Overlay_Class
+ {
+ Elm_Map_Overlay *clas;
+ Evas_Object *obj;
+ char *style;
+ Evas_Object *icon;
+ Eina_List *members;
+ int zoom_max;
+ };
+
+ struct _Overlay_Bubble
+ {
+ Widget_Data *wd;
+ Evas_Object *pobj;
+ Evas_Object *obj, *sc, *bx;
+ double lon, lat;
+ Evas_Coord x, y, w, h;
+ };
+
+ struct _Overlay_Route
+ {
+ Widget_Data *wd;
+
+ Eina_Bool inbound : 1;
+ struct
+ {
+ int r;
+ int g;
+ int b;
+ int a;
+ } color;
+
+ Eina_List *paths;
+ Eina_List *nodes;
+ int x, y;
+ };
+
+ struct _Elm_Map_Overlay
+ {
+ Widget_Data *wd;
+
+ Eina_Bool paused : 1;
+ Eina_Bool hide : 1;
+ Evas_Coord zoom_min;
+
+ void *data; // user set data
+
+ Elm_Map_Overlay_Type type;
+ void *ovl; // Overlay Data for each type
+
+ // These are not used if overlay type is class
+ Eina_Bool grp_in : 1;
+ Eina_Bool grp_boss : 1;
+ Overlay_Group *grp;
+
+ Elm_Map_Overlay_Get_Cb cb;
+ void *cb_data;
+ };
+
+ struct _Elm_Map_Marker_Class
+ {
+ const char *style;
+ struct _Elm_Map_Marker_Class_Func
+ {
+ Elm_Map_Marker_Get_Func get;
+ Elm_Map_Marker_Del_Func del; //if NULL the object will be destroyed with evas_object_del()
+ Elm_Map_Marker_Icon_Get_Func icon_get;
+ } func;
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Map_Group_Class
{
++<<<<<<< HEAD
+ const char *style;
+ void *data;
+ int zoom_displayed; // display the group if the zoom is >= to zoom_display
+ int zoom_grouped; // group the markers only if the zoom is <= to zoom_groups
+ Eina_Bool hide : 1;
+
+ struct
+ {
+ ElmMapGroupIconGetFunc icon_get;
+ } func;
+
+ struct
+ { //this part is private, do not modify these values
+ Eina_Bool set : 1;
+ Evas_Coord edje_w, edje_h;
+ Evas_Coord edje_max_w, edje_max_h;
+
+ Eina_List *objs_used;
+ Eina_List *objs_notused;
+ } priv;
++=======
+ Widget_Data *wd;
+
+ Eina_List *markers;
+ int zoom_displayed; // display the group if the zoom is >= to zoom_display
+ int zoom_grouped; // group the markers only if the zoom is <= to zoom_groups
+ const char *style;
+ void *data;
+ struct
+ {
+ Elm_Map_Group_Icon_Get_Func icon_get;
+ } func;
+
+ Eina_Bool hide : 1;
+ };
+
+ struct _Marker_Bubble
+ {
+ Widget_Data *wd;
+ Evas_Object *pobj;
+ Evas_Object *obj, *sc, *bx;
+ };
+
+ struct _Elm_Map_Marker
+ {
+ Widget_Data *wd;
+ Elm_Map_Marker_Class *clas;
+ Elm_Map_Group_Class *group_clas;
+ double longitude, latitude;
+ Evas_Coord w, h;
+ Evas_Object *obj;
+
+ Evas_Coord x, y;
+ Eina_Bool grouped : 1;
+ Eina_Bool leader : 1; // if marker is group leader
+ Marker_Group *group;
+
+ Marker_Bubble *bubble;
+ Evas_Object *content;
+ void *data;
++>>>>>>> remotes/origin/upstream
};
struct _Marker_Group
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Eina_Matrixsparse_Cell *cell;
+ Elm_Map_Group_Class *clas;
+
+ Eina_List *markers;
+ long long sum_x, sum_y;
+ Evas_Coord x, y;
+ Evas_Coord w, h;
+
+ Evas_Object *obj, *bubble, *sc, *bx, *rect;
+ Eina_Bool open : 1;
+ Eina_Bool bringin : 1;
+ Eina_Bool update_nbelems : 1;
+ Eina_Bool update_resize : 1;
+ Eina_Bool update_raise : 1;
+ Eina_Bool delete_object : 1;
++=======
+ Elm_Map_Group_Class *clas;
+ Evas_Coord w, h;
+ Evas_Object *obj;
+
+ Evas_Coord x, y;
+ Eina_List *markers;
+
+ Marker_Bubble *bubble;
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Map_Route
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Path_Node *n;
+ Path_Waypoint *w;
+ Ecore_Con_Url *con_url;
+
+ int type;
+ int method;
+ int x, y;
+ double flon, flat, tlon, tlat;
+
+ Eina_List *nodes, *path;
+ Eina_List *waypoint;
+
++=======
+ char *fname;
+ Elm_Map_Route_Type type;
+ Elm_Map_Route_Method method;
+ double flon, flat, tlon, tlat;
+ Elm_Map_Route_Cb cb;
+ void *data;
+ Ecore_File_Download_Job *job;
+
+
+ Eina_List *nodes;
+ Eina_List *waypoint;
++>>>>>>> remotes/origin/upstream
struct
{
int node_count;
double distance; /* unit : km */
} info;
++<<<<<<< HEAD
+ Eina_List *handlers;
+ Url_Data ud;
+
+ struct
+ {
+ int r;
+ int g;
+ int b;
+ int a;
+ } color;
+
+ Eina_Bool inbound : 1;
++=======
+ Path_Node *n;
+ Path_Waypoint *w;
+
++>>>>>>> remotes/origin/upstream
};
struct _Path_Node
{
Widget_Data *wd;
++<<<<<<< HEAD
+ Ecore_Con_Url *con_url;
+ int method;
+ char *address;
+ double lon, lat;
+ Url_Data ud;
+ Ecore_Event_Handler *handler;
++=======
+ int method;
+ char *address;
+ double lon, lat;
+
+ char *fname;
+ Ecore_File_Download_Job *job;
+ Elm_Map_Name_Cb cb;
+ void *data;
+ };
+
+ struct _Route_Dump
+ {
+ int id;
+ char *fname;
+ double distance;
+ char *description;
+ char *coordinates;
+ };
+
+ struct _Name_Dump
+ {
+ int id;
+ char *address;
+ double lon;
+ double lat;
++>>>>>>> remotes/origin/upstream
};
struct _Grid_Item
{
++<<<<<<< HEAD
+ Widget_Data *wd;
+ Grid *g;
+ int zoom;
+ Evas_Object *img;
+ //Evas_Object *txt;
+ const char *file;
+ const char *source;
+ struct
+ {
+ int x, y, w, h;
+ } src, out;
+
+ Eina_Bool file_have : 1;
+ Ecore_File_Download_Job *job;
+ int try_num;
++=======
+ Grid *g;
+
+ Widget_Data *wd;
+ Evas_Object *img;
+ const char *file;
+ const char *url;
+ int x, y; // Tile coordinate
+ Eina_Bool file_have : 1;
+
+ Ecore_File_Download_Job *job;
++>>>>>>> remotes/origin/upstream
};
struct _Grid
{
Widget_Data *wd;
++<<<<<<< HEAD
+ int tsize; // size of tile (tsize x tsize pixels)
+ int zoom; // zoom level tiles want for optimal display (1, 2, 4, 8)
+ int iw, ih; // size of image in pixels
+ int w, h; // size of grid image in pixels (represented by grid)
+ int gw, gh; // size of grid in tiles
+ Eina_Matrixsparse *grid;
+};
+
++=======
+ int zoom; // zoom level tiles want for optimal display (1, 2, 4, 8)
+ int tw, th; // size of grid in tiles
+ Eina_Matrixsparse *grid;
+ };
+
+ struct _Pan
+ {
+ Evas_Object_Smart_Clipped_Data __clipped_data;
+ Widget_Data *wd;
+ };
+
++>>>>>>> remotes/origin/upstream
struct _Widget_Data
{
Evas_Object *obj;
Evas_Object *scr;
Evas_Object *ges;
Evas_Object *pan_smart;
++<<<<<<< HEAD
+ Evas_Object *rect;
+ Evas_Object *sep_maps_markers; //map objects are below this object and marker objects are on top
+ Pan *pan;
+ Evas_Coord pan_x, pan_y, minw, minh;
+
+ int id;
+ int zoom;
+ int zoom_method;
+ Elm_Map_Zoom_Mode mode;
+
+ Ecore_Job *calc_job;
+ Ecore_Timer *scr_timer;
+ Ecore_Timer *long_timer;
+ Ecore_Animator *zoom_animator;
+ double t;
+ struct
+ {
+ int w, h;
+ int ow, oh, nw, nh;
+ struct
+ {
+ double x, y;
+ } spos;
+ } size;
+ struct
+ {
+ Eina_Bool show : 1;
+ Evas_Coord x, y ,w ,h;
+ } show;
+ int tsize;
+ int nosmooth;
+ Eina_List *grids;
+ Eina_Bool resized : 1;
+ Eina_Bool on_hold : 1;
+ Eina_Bool paused : 1;
+ Eina_Bool paused_markers : 1;
+
+ struct
+ {
+ Eina_Bool enabled;
+ double lon, lat;
+ } center_on;
+
+ Ecore_Job *markers_place_job;
+ Eina_Matrixsparse **markers;
+ Eina_List *cells_displayed; // list of Eina_Matrixsparse_Cell
+ Evas_Coord markers_max_num;
+ int marker_max_w, marker_max_h;
+ int marker_zoom;
+ Eina_List *opened_bubbles; //opened bubbles, list of Map_Group *
+
+ Eina_List *groups_clas; // list of Elm_Map_Group_Class*
+ Eina_List *markers_clas; // list of Elm_Map_Markers_Class*
+
+ Elm_Map_Route_Sources route_source;
+ Eina_List *s_event_list;
+ int try_num;
+ int finish_num;
+
+ Eina_Hash *ua;
+ const char *user_agent;
+ Eina_List *route;
+ Eina_List *track;
+ Evas_Event_Mouse_Down ev;
+ Eina_List *names;
+ int multi_count;
+
+ struct
+ {
+ Evas_Coord cx, cy;
+ double level, diff;
+ } pinch;
+
++=======
+ Evas_Object *sep_maps_markers; // Tiles are below this and overlays are on top
+ Evas_Map *map;
+
+ Eina_Array *src_tile_mods;
+ Source_Tile *src_tile;
+ Eina_List *src_tiles;
+ const char **src_tile_names;
+
+ Eina_Array *src_route_mods;
+ Source_Route *src_route;
+ Eina_List *src_routes;
+ const char **src_route_names;
+
+ Eina_Array *src_name_mods;
+ Source_Name *src_name;
+ Eina_List *src_names;
+ const char **src_name_names;
+
+ int zoom_min, zoom_max;
+ int tsize;
+
+ int id;
+ Eina_List *grids;
+
+ int zoom;
+ double zoom_detail;
+ double prev_lon, prev_lat;
+ Evas_Coord ox, oy;
+ struct
+ {
+ int w, h; // Current pixel width, heigth of a grid
+ int tile; // Current pixel size of a grid item
+ } size;
+ Elm_Map_Zoom_Mode mode;
+ struct
+ {
+ double zoom;
+ double diff;
+ int cnt;
+ } ani;
+ Ecore_Timer *zoom_timer;
+ Ecore_Animator *zoom_animator;
+
+ int try_num;
+ int finish_num;
+ int download_num;
+ Eina_List *download_list;
+ Ecore_Idler *download_idler;
+ Eina_Hash *ua;
+ const char *user_agent;
+
+ Evas_Coord pan_x, pan_y;
+ Eina_List *delayed_jobs;
+
+ Ecore_Timer *scr_timer;
+ Ecore_Timer *long_timer;
+ Evas_Event_Mouse_Down ev;
+ Eina_Bool on_hold : 1;
+ Eina_Bool paused : 1;
+
+ double pinch_zoom;
++>>>>>>> remotes/origin/upstream
struct
{
Evas_Coord cx, cy;
double a, d;
} rotate;
++<<<<<<< HEAD
+ int wheel_diff;
Eina_Bool wheel_disabled : 1;
+ Eina_Bool scr_started : 1;
- unsigned int markers_max_num;
- Eina_Bool paused_markers : 1;
- Eina_List *group_classes;
- Eina_List *marker_classes;
- Eina_List *markers;
-
- Eina_List *routes;
- Eina_List *track;
- Eina_List *names;
-
- Eina_List *overlays;
+ Eina_Array *modules;
+ Eina_List *map_sources_tab;
+ const char **source_names;
+ Evas_Map *map;
+ Ecore_Timer *zoom_timer;
+ Map_Sources_Tab *src;
+ const char *gpx_file;
+ int zoom_min, zoom_max;
+ Eina_List *download_list;
+ int download_num;
};
-static char *_mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
-static char *_osmarender_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
-static char *_cyclemap_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
-static char *_mapquest_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
-static char *_mapquest_aerial_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
-static char *_yours_url_cb(Evas_Object *obj __UNUSED__, const char *type_name, int method, double flon, double flat, double tlon, double tlat);
-static char *_nominatim_url_cb(Evas_Object *obj, int method, const char *name, double lon, double lat);
-/*
-static char *_monav_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
-static char *_ors_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat);
-*/
+struct _Pan
+{
+ Evas_Object_Smart_Clipped_Data __clipped_data;
+ Widget_Data *wd;
+};
-const Source_Tile src_tiles[] =
+struct _Event
{
- {"Mapnik", 0, 18, _mapnik_url_cb, NULL, NULL},
- {"Osmarender", 0, 17, _osmarender_url_cb, NULL, NULL},
- {"CycleMap", 0, 16, _cyclemap_url_cb, NULL, NULL},
- {"MapQuest", 0, 18, _mapquest_url_cb, NULL, NULL},
- {"MapQuest Open Aerial", 0, 11, _mapquest_aerial_url_cb, NULL, NULL},
+ int device;
+
+ struct
+ {
+ Evas_Coord x, y;
+ } start;
+
+ struct
+ {
+ Evas_Coord x, y;
+ } prev;
+
+ Evas_Coord x, y, w, h;
+
+ Evas_Object *object;
+
+ int pinch_start_dis;
+ int pinch_dis;
};
-// FIXME: Fix more open sources
-const Source_Route src_routes[] =
+struct _Route_Dump
{
- {"Yours", _yours_url_cb} // http://www.yournavigation.org/
- //{"Monav", _monav_url_cb},
- //{"ORS", _ors_url_cb}, // http://www.openrouteservice.org
+ int id;
+ char *fname;
+ double distance;
+ char *description;
+ char *coordinates;
};
-// FIXME: Add more open sources
-const Source_Name src_names[] =
+enum _Route_Xml_Attribute
{
- {"Nominatim", _nominatim_url_cb}
+ ROUTE_XML_NONE,
+ ROUTE_XML_DISTANCE,
+ ROUTE_XML_DESCRIPTION,
+ ROUTE_XML_COORDINATES,
+ ROUTE_XML_LAST
+} Route_Xml_Attibute;
+
+struct _Name_Dump
+{
+ int id;
+ char *address;
+ double lon;
+ double lat;
};
+enum _Name_Xml_Attribute
+{
+ NAME_XML_NONE,
+ NAME_XML_NAME,
+ NAME_XML_LON,
+ NAME_XML_LAT,
+ NAME_XML_LAST
+} Name_Xml_Attibute;
+
+enum _Zoom_Method
+{
+ ZOOM_METHOD_NONE,
+ ZOOM_METHOD_IN,
+ ZOOM_METHOD_OUT,
+ ZOOM_METHOD_LAST
+} Zoom_Mode;
+
+enum _Track_Xml_Attribute
+{
+ TRACK_XML_NONE,
+ TRACK_XML_COORDINATES,
+ TRACK_XML_LAST
+} Track_Xml_Attibute;
+
+static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_NULL;
static const char *widtype = NULL;
-static Evas_Smart_Class parent_sc = EVAS_SMART_CLASS_INIT_NULL;
-static Evas_Smart_Class sc;
-static Evas_Smart *smart;
static int idnum = 1;
-static const char SIG_CLICKED[] = "clicked";
-static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
-static const char SIG_PRESS[] = "press";
-static const char SIG_LONGPRESSED[] = "longpressed";
-static const char SIG_SCROLL[] = "scroll";
-static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
-static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop";
-static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
-static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
-static const char SIG_ZOOM_START[] = "zoom,start";
-static const char SIG_ZOOM_STOP[] = "zoom,stop";
-static const char SIG_ZOOM_CHANGE[] = "zoom,change";
-static const char SIG_TILE_LOAD[] = "tile,load";
-static const char SIG_TILE_LOADED[] = "tile,loaded";
-static const char SIG_TILE_LOADED_FAIL[] = "tile,loaded,fail";
-static const char SIG_ROUTE_LOAD[] = "route,load";
-static const char SIG_ROUTE_LOADED[] = "route,loaded";
-static const char SIG_ROUTE_LOADED_FAIL[] = "route,loaded,fail";
-static const char SIG_NAME_LOAD[] = "name,load";
-static const char SIG_NAME_LOADED[] = "name,loaded";
-static const char SIG_NAME_LOADED_FAIL[] = "name,loaded,fail";
-static const char SIG_OVERLAY_CLICKED[] = "overlay,clicked";
+static const char SIG_CHANGED[] = "changed";
+static const char SIG_CLICKED[] = "clicked";
+static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
+static const char SIG_LOADED_DETAIL[] = "loaded,detail";
+static const char SIG_LOAD_DETAIL[] = "load,detail";
+static const char SIG_LONGPRESSED[] = "longpressed";
+static const char SIG_PRESS[] = "press";
+static const char SIG_SCROLL[] = "scroll";
+static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
+static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop";
+static const char SIG_ZOOM_CHANGE[] = "zoom,change";
+static const char SIG_ZOOM_START[] = "zoom,start";
+static const char SIG_ZOOM_STOP[] = "zoom,stop";
+static const char SIG_DOWNLOADED[] = "downloaded";
+static const char SIG_ROUTE_LOAD[] = "route,load";
+static const char SIG_ROUTE_LOADED[] = "route,loaded";
+static const char SIG_NAME_LOAD[] = "name,load";
+static const char SIG_NAME_LOADED[] = "name,loaded";
static const Evas_Smart_Cb_Description _signals[] = {
+ {SIG_CHANGED, ""},
{SIG_CLICKED, ""},
{SIG_CLICKED_DOUBLE, ""},
- {SIG_PRESS, ""},
+ {SIG_LOADED_DETAIL, ""},
+ {SIG_LOAD_DETAIL, ""},
{SIG_LONGPRESSED, ""},
+ {SIG_PRESS, ""},
{SIG_SCROLL, ""},
{SIG_SCROLL_DRAG_START, ""},
{SIG_SCROLL_DRAG_STOP, ""},
}
-
static void
-_marker_place(Widget_Data *wd)
+grid_load(Evas_Object *obj, Grid *g)
{
- EINA_SAFETY_ON_NULL_RETURN(wd);
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ int x, y;
+ int size;
+ Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh, tx, ty, gw, gh, xx, yy, ww, hh;
+ Eina_Iterator *it;
+ Eina_Matrixsparse_Cell *cell;
+ Grid_Item *gi;
- Eina_List *l;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(wd->src);
- Elm_Map_Marker *marker;
- Elm_Map_Group_Class *group_clas;
+ evas_object_geometry_get(wd->pan_smart, &ox, &oy, &ow, &oh);
+ evas_output_viewport_get(evas_object_evas_get(wd->obj), &cvx, &cvy, &cvw, &cvh);
- Evas_Coord gw, gh;
- Evas_Coord px, py;
+ gw = wd->size.w;
+ gh = wd->size.h;
- if (wd->paused_markers || (!eina_list_count(wd->markers))) return;
+ if ((gw <= 0) || (gh <= 0)) return;
- _pan_geometry_get(wd, &px, &py);
+ size = g->tsize;
+ if ((gw != g->w) && (g->w > 0))
+ size = ((long long)gw * size) / g->w;
+ if (size < (g->tsize / 2)) return; // else we will load to much tiles
- _edj_marker_size_get(wd, &gw, &gh);
- gw *= 2;
- gh *= 2;
+ it = eina_matrixsparse_iterator_new(g->grid);
- EINA_LIST_FOREACH(wd->markers, l, marker)
+ EINA_ITERATOR_FOREACH(it, cell)
{
- _marker_update(marker);
- marker->grouped = EINA_FALSE;
- marker->leader = EINA_FALSE;
- }
+ gi = eina_matrixsparse_cell_data_get(cell);
- EINA_LIST_FOREACH(wd->group_classes, l, group_clas)
- {
- Eina_List *ll;
- EINA_LIST_FOREACH(group_clas->markers, ll, marker)
+ xx = gi->out.x;
+ yy = gi->out.y;
+ ww = gi->out.w;
+ hh = gi->out.h;
+
+ if ((gw != g->w) && (g->w > 0))
{
- Eina_List *lll;
- Elm_Map_Marker *mm;
- Eina_List *markers = NULL;
+ tx = xx;
+ xx = ((long long )gw * xx) / g->w;
+ ww = (((long long)gw * (tx + ww)) / g->w) - xx;
+ }
+ if ((gh != g->h) && (g->h > 0))
+ {
+ ty = yy;
+ yy = ((long long)gh * yy) / g->h;
+ hh = (((long long)gh * (ty + hh)) / g->h) - yy;
+ }
- if (marker->grouped) continue;
- if (group_clas->zoom_grouped < wd->zoom)
+ if (!ELM_RECTS_INTERSECT(xx - wd->pan_x + ox,
+ yy - wd->pan_y + oy,
+ ww, hh,
+ cvx, cvy, cvw, cvh))
+ {
+ if (gi->file_have)
{
- marker->grouped = EINA_FALSE;
- continue;
+ evas_object_hide(gi->img);
+ //evas_object_hide(gi->txt);
+ evas_object_image_file_set(gi->img, NULL, NULL);
}
-
- EINA_LIST_FOREACH(group_clas->markers, lll, mm)
+ else if (gi->job)
{
- if (marker == mm || mm->grouped) continue;
- if (ELM_RECTS_INTERSECT(mm->x, mm->y, mm->w, mm->h,
- marker->x, marker->y, gw, gh))
- {
- // mm is group follower.
- mm->leader = EINA_FALSE;
- mm->grouped = EINA_TRUE;
- markers = eina_list_append(markers, mm);
- }
+ DBG("Download abort %s", gi->file);
+ ecore_file_download_abort(gi->job);
+ ecore_file_remove(gi->file);
+ gi->job = NULL;
+ wd->try_num--;
}
- if (eina_list_count(markers) >= 1)
- {
- // marker is group leader.
- marker->leader = EINA_TRUE;
- marker->grouped = EINA_TRUE;
- markers = eina_list_append(markers, marker);
-
- if (!marker->group) marker->group = _marker_group_create(wd);
- _marker_group_update(marker->group, group_clas, markers);
- }
}
}
+ eina_iterator_free(it);
- EINA_LIST_FOREACH(wd->markers, l, marker)
- {
+ xx = wd->pan_x / size - 1;
+ if (xx < 0) xx = 0;
- if (marker->grouped ||
- (marker->group_clas &&
- (marker->group_clas->hide ||
- marker->group_clas->zoom_displayed > wd->zoom)))
- evas_object_hide(marker->obj);
- else
- {
- Evas_Coord x, y;
- _coord_rotate(marker->x + px, marker->y + py, wd->rotate.cx,
- wd->rotate.cy, wd->rotate.d, &x, &y);
- _obj_place(marker->obj, x - (marker->w / 2), y - (marker->h / 2),
- marker->w, marker->h);
- }
- }
+ yy = wd->pan_y / size - 1;
+ if (yy < 0) yy = 0;
- EINA_LIST_FOREACH(wd->markers, l, marker)
- {
- Marker_Group *group = marker->group;
- if (!group) continue;
+ ww = ow / size + 2;
+ if (xx + ww >= g->gw) ww = g->gw - xx - 1;
- if (!marker->leader || (group->clas->hide) ||
- (group->clas->zoom_displayed > wd->zoom))
- evas_object_hide(group->obj);
- else
- {
- Evas_Coord x, y;
- _coord_rotate(group->x + px, group->y + py, wd->rotate.cx,
- wd->rotate.cy, wd->rotate.d, &x, &y);
- _obj_place(group->obj, x - (group->w / 2), y - (group->h / 2),
- group->w, group->h);
- }
- }
-}
+ hh = oh / size + 2;
+ if (yy + hh >= g->gh) hh = g->gh - yy - 1;
-static void
-_grid_item_coord_get(Grid_Item *gi, int *x, int *y, int *w, int *h)
-{
- EINA_SAFETY_ON_NULL_RETURN(gi);
+ for (y = yy; y <= yy + hh; y++)
+ {
+ for (x = xx; x <= xx + ww; x++)
+ {
+ gi = eina_matrixsparse_data_idx_get(g->grid, y, x);
- if (x) *x = gi->x * gi->wd->size.tile;
- if (y) *y = gi->y * gi->wd->size.tile;
- if (w) *w = gi->wd->size.tile;
- if (h) *h = gi->wd->size.tile;
-}
+ if (!gi)
+ {
+ char buf[PATH_MAX];
+ char buf2[PATH_MAX];
+ char *source;
+
+ gi = calloc(1, sizeof(Grid_Item));
+ EINA_SAFETY_ON_NULL_RETURN(gi);
+
+ gi->wd = wd;
+ gi->g = g;
+ gi->zoom = g->zoom;
+ gi->file_have = EINA_FALSE;
+ gi->job = NULL;
+
+ gi->src.x = x * g->tsize;
+ gi->src.y = y * g->tsize;
+ gi->src.w = g->tsize;
+ gi->src.h = g->tsize;
+
+ gi->out.x = gi->src.x;
+ gi->out.y = gi->src.y;
+ gi->out.w = gi->src.w;
+ gi->out.h = gi->src.h;
+
+ gi->img = evas_object_image_add(evas_object_evas_get(obj));
+ evas_object_image_scale_hint_set(gi->img, EVAS_IMAGE_SCALE_HINT_DYNAMIC);
+ evas_object_image_filled_set(gi->img, 1);
+
+ evas_object_smart_member_add(gi->img, wd->pan_smart);
+ elm_widget_sub_object_add(obj, gi->img);
+ evas_object_pass_events_set(gi->img, EINA_TRUE);
+ evas_object_stack_below(gi->img, wd->sep_maps_markers);
+
+/* gi->txt = evas_object_text_add(evas_object_evas_get(obj));
+ evas_object_text_font_set(gi->txt, "Vera", 12);
+ evas_object_color_set(gi->txt, 100, 100, 100, 255);
+ evas_object_smart_member_add(gi->txt,
+ wd->pan_smart);
+ elm_widget_sub_object_add(obj, gi->txt);
+ evas_object_pass_events_set(gi->txt, EINA_TRUE);
+*/
+ snprintf(buf, sizeof(buf), CACHE_PATH, wd->id, g->zoom, x);
+ snprintf(buf2, sizeof(buf2), CACHE_FILE_PATH, buf, y);
+ if (!ecore_file_exists(buf)) ecore_file_mkpath(buf);
-static Eina_Bool
-_grid_item_intersect(Grid_Item *gi)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(gi, EINA_FALSE);
+ eina_stringshare_replace(&gi->file, buf2);
+ source = wd->src->url_cb(obj, x, y, g->zoom);
+ if ((!source) || (strlen(source)==0))
+ {
+ eina_stringshare_replace(&gi->source, NULL);
+ WRN("Getting source url failed: %s", gi->file);
+ }
+ else eina_stringshare_replace(&gi->source, source);
+ if (source) free(source);
- Evas_Coord px, py;
- Evas_Coord vw, vh;
- Evas_Coord x, y, w, h;
+ eina_matrixsparse_data_idx_set(g->grid, y, x, gi);
+ }
- _pan_geometry_get(gi->wd, &px, &py);
- _viewport_size_get(gi->wd, &vw, &vh);
- _grid_item_coord_get(gi, &x, &y, &w, &h);
- return ELM_RECTS_INTERSECT(x + px, y + py, w, h, 0, 0, vw, vh);
-}
+ if (gi->file_have)
+ {
+ DBG("File exists: %s", gi->file);
+ _tile_update(gi);
+ }
+ else if (!gi->job)
+ {
+ DBG("Added to download list: %s", gi->file);
+ _add_download_list(obj, gi);
+ }
- }
- }
- }
++=======
++ Eina_Bool wheel_disabled : 1;
--static void
- _smooth_update(Evas_Object *obj)
-_grid_item_update(Grid_Item *gi)
--{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- Eina_List *l;
- Grid *g;
- evas_object_image_file_set(gi->img, gi->file, NULL);
- if (!gi->wd->zoom_timer && !gi->wd->scr_timer)
- evas_object_image_smooth_scale_set(gi->img, EINA_TRUE);
- else evas_object_image_smooth_scale_set(gi->img, EINA_FALSE);
++ unsigned int markers_max_num;
++ Eina_Bool paused_markers : 1;
++ Eina_List *group_classes;
++ Eina_List *marker_classes;
++ Eina_List *markers;
- if (!wd) return;
- EINA_LIST_FOREACH(wd->grids, l, g)
- Evas_Load_Error err = evas_object_image_load_error_get(gi->img);
- if (err != EVAS_LOAD_ERROR_NONE)
-- {
- Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
- Eina_Matrixsparse_Cell *cell;
- ERR("Image loading error (%s): %s", gi->file, evas_load_error_str(err));
- ecore_file_remove(gi->file);
- gi->file_have = EINA_FALSE;
- }
- else
- {
- Evas_Coord px, py;
- Evas_Coord x, y, w, h;
++ Eina_List *routes;
++ Eina_List *track;
++ Eina_List *names;
- EINA_ITERATOR_FOREACH(it, cell)
- {
- Grid_Item *gi = eina_matrixsparse_cell_data_get(cell);
- evas_object_image_smooth_scale_set(gi->img, (!wd->nosmooth));
- }
- eina_iterator_free(it);
- }
- }
- _pan_geometry_get(gi->wd, &px, &py);
- _grid_item_coord_get(gi, &x, &y, &w, &h);
++ Eina_List *overlays;
++};
- static Eina_Bool
- _scr_timeout(void *data)
- _obj_place(gi->img, x + px, y + py, w, h);
- _obj_rotate(gi->wd, gi->img);
- gi->file_have = EINA_TRUE;
- }
-}
++static char *_mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
++static char *_osmarender_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
++static char *_cyclemap_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
++static char *_mapquest_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
++static char *_mapquest_aerial_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom);
++static char *_yours_url_cb(Evas_Object *obj __UNUSED__, const char *type_name, int method, double flon, double flat, double tlon, double tlat);
++static char *_nominatim_url_cb(Evas_Object *obj, int method, const char *name, double lon, double lat);
++/*
++static char *_monav_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
++static char *_ors_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat);
++*/
+
-static void
-_grid_item_load(Grid_Item *gi)
++const Source_Tile src_tiles[] =
+{
- ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
- Widget_Data *wd = elm_widget_data_get(data);
++ {"Mapnik", 0, 18, _mapnik_url_cb, NULL, NULL},
++ {"Osmarender", 0, 17, _osmarender_url_cb, NULL, NULL},
++ {"CycleMap", 0, 16, _cyclemap_url_cb, NULL, NULL},
++ {"MapQuest", 0, 18, _mapquest_url_cb, NULL, NULL},
++ {"MapQuest Open Aerial", 0, 11, _mapquest_aerial_url_cb, NULL, NULL},
++};
+
- if (!wd) return ECORE_CALLBACK_CANCEL;
- wd->nosmooth--;
- if (!wd->nosmooth) _smooth_update(data);
- wd->scr_timer = NULL;
- return ECORE_CALLBACK_CANCEL;
- }
++// FIXME: Fix more open sources
++const Source_Route src_routes[] =
++{
++ {"Yours", _yours_url_cb} // http://www.yournavigation.org/
++ //{"Monav", _monav_url_cb},
++ //{"ORS", _ors_url_cb}, // http://www.openrouteservice.org
++};
++
++// FIXME: Add more open sources
++const Source_Name src_names[] =
++{
++ {"Nominatim", _nominatim_url_cb}
++};
++
++static const char *widtype = NULL;
++static Evas_Smart_Class parent_sc = EVAS_SMART_CLASS_INIT_NULL;
++static Evas_Smart_Class sc;
++static Evas_Smart *smart;
++static int idnum = 1;
++
++static const char SIG_CLICKED[] = "clicked";
++static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
++static const char SIG_PRESS[] = "press";
++static const char SIG_LONGPRESSED[] = "longpressed";
++static const char SIG_SCROLL[] = "scroll";
++static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
++static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop";
++static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
++static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
++static const char SIG_ZOOM_START[] = "zoom,start";
++static const char SIG_ZOOM_STOP[] = "zoom,stop";
++static const char SIG_ZOOM_CHANGE[] = "zoom,change";
++static const char SIG_TILE_LOAD[] = "tile,load";
++static const char SIG_TILE_LOADED[] = "tile,loaded";
++static const char SIG_TILE_LOADED_FAIL[] = "tile,loaded,fail";
++static const char SIG_ROUTE_LOAD[] = "route,load";
++static const char SIG_ROUTE_LOADED[] = "route,loaded";
++static const char SIG_ROUTE_LOADED_FAIL[] = "route,loaded,fail";
++static const char SIG_NAME_LOAD[] = "name,load";
++static const char SIG_NAME_LOADED[] = "name,loaded";
++static const char SIG_NAME_LOADED_FAIL[] = "name,loaded,fail";
++static const char SIG_OVERLAY_CLICKED[] = "overlay,clicked";
++static const Evas_Smart_Cb_Description _signals[] = {
++ {SIG_CLICKED, ""},
++ {SIG_CLICKED_DOUBLE, ""},
++ {SIG_PRESS, ""},
++ {SIG_LONGPRESSED, ""},
++ {SIG_SCROLL, ""},
++ {SIG_SCROLL_DRAG_START, ""},
++ {SIG_SCROLL_DRAG_STOP, ""},
++ {SIG_SCROLL_ANIM_START, ""},
++ {SIG_SCROLL_ANIM_STOP, ""},
++ {SIG_ZOOM_START, ""},
++ {SIG_ZOOM_STOP, ""},
++ {SIG_ZOOM_CHANGE, ""},
++ {SIG_TILE_LOAD, ""},
++ {SIG_TILE_LOADED, ""},
++ {SIG_TILE_LOADED_FAIL, ""},
++ {SIG_ROUTE_LOAD, ""},
++ {SIG_ROUTE_LOADED, ""},
++ {SIG_ROUTE_LOADED_FAIL, ""},
++ {SIG_NAME_LOAD, ""},
++ {SIG_NAME_LOADED, ""},
++ {SIG_NAME_LOADED_FAIL, ""},
++ {SIG_OVERLAY_CLICKED, ""},
++ {NULL, NULL}
++};
+
+static void
- _scr(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++_edj_marker_size_get(Widget_Data *wd, Evas_Coord *w, Evas_Coord *h)
+{
- ELM_CHECK_WIDTYPE(data, widtype);
- Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(w);
++ EINA_SAFETY_ON_NULL_RETURN(h);
+
- if (!wd) return;
- if (!wd->scr_timer)
- {
- wd->nosmooth++;
- if (wd->nosmooth == 1) _smooth_update(data);
- }
- if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
- wd->scr_timer = ecore_timer_add(0.5, _scr_timeout, data);
++ Evas_Object *edj;
++ const char *s;
++
++ edj = edje_object_add(evas_object_evas_get(wd->obj));
++ _elm_theme_object_set(wd->obj, edj, "map/marker", "radio",
++ elm_widget_style_get(wd->obj));
++ s = edje_object_data_get(edj, "size_w");
++ if (s) *w = atoi(s);
++ else *w = 0;
++ s = edje_object_data_get(edj, "size_h");
++ if (s) *h = atoi(s);
++ else *h = 0;
++ evas_object_del(edj);
+}
+
+static void
- zoom_do(Evas_Object *obj)
++_coord_rotate(Evas_Coord x, Evas_Coord y, Evas_Coord cx, Evas_Coord cy, double degree, Evas_Coord *xx, Evas_Coord *yy)
+{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- Evas_Coord xx, yy, ow, oh;
++ EINA_SAFETY_ON_NULL_RETURN(xx);
++ EINA_SAFETY_ON_NULL_RETURN(yy);
+
- if (!wd) return;
- wd->size.w = wd->size.nw;
- wd->size.h = wd->size.nh;
++ double r = (degree * M_PI) / 180.0;
+
- elm_smart_scroller_child_viewport_size_get(wd->scr, &ow, &oh);
++ if (xx) *xx = ((x - cx) * cos(r)) + ((y - cy) * cos(r + M_PI_2)) + cx;
++ if (yy) *yy = ((x - cx) * sin(r)) + ((y - cy) * sin(r + M_PI_2)) + cy;
++}
+
- if (wd->center_on.enabled)
- {
- elm_map_utils_convert_geo_into_coord(obj, wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy);
- xx -= ow / 2;
- yy -= oh / 2;
- }
- else
++static void
++_obj_rotate(Widget_Data *wd, Evas_Object *obj)
++{
++ Evas_Coord w, h, ow, oh;
++ evas_map_util_points_populate_from_object(wd->map, obj);
++
++ evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
++ evas_object_image_size_get(obj, &w, &h);
++ if ((w > ow) || (h > oh))
+ {
- xx = (wd->size.spos.x * wd->size.w) - (ow / 2);
- yy = (wd->size.spos.y * wd->size.h) - (oh / 2);
++ evas_map_point_image_uv_set(wd->map, 0, 0, 0);
++ evas_map_point_image_uv_set(wd->map, 1, w, 0);
++ evas_map_point_image_uv_set(wd->map, 2, w, h);
++ evas_map_point_image_uv_set(wd->map, 3, 0, h);
+ }
++ evas_map_util_rotate(wd->map, wd->rotate.d, wd->rotate.cx, wd->rotate.cy);
+
-
- if (xx < 0) xx = 0;
- else if (xx > (wd->size.w - ow)) xx = wd->size.w - ow;
- if (yy < 0) yy = 0;
- else if (yy > (wd->size.h - oh)) yy = wd->size.h - oh;
-
- wd->show.show = EINA_TRUE;
- wd->show.x = xx;
- wd->show.y = yy;
- wd->show.w = ow;
- wd->show.h = oh;
-
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
++ evas_object_map_set(obj, wd->map);
++ evas_object_map_enable_set(obj, EINA_TRUE);
+}
+
- static Eina_Bool
- _zoom_timeout(void *data)
++static void
++_obj_place(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+{
- ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
- Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(obj);
+
- if (!wd) return ECORE_CALLBACK_CANCEL;
- wd->zoom_timer = NULL;
- wd->pinch.level = 1.0;
- zoom_do(data);
- evas_object_smart_callback_call(data, SIG_ZOOM_STOP, NULL);
- return ECORE_CALLBACK_CANCEL;
++ evas_object_move(obj, x, y);
++ evas_object_resize(obj, w, h);
++ evas_object_show(obj);
+}
+
- static Eina_Bool
- _zoom_anim(void *data)
++static void
++_coord_to_region_convert(Widget_Data *wd, Evas_Coord x, Evas_Coord y, Evas_Coord size, double *lon, double *lat)
+{
- ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
- Evas_Object *obj = data;
- Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- if (!wd) return ECORE_CALLBACK_CANCEL;
- if (wd->zoom_method == ZOOM_METHOD_IN) wd->t += 0.1 ;
- else if (wd->zoom_method == ZOOM_METHOD_OUT) wd->t -= 0.05;
- else
++ int zoom = floor(log(size / wd->size.tile) / log(2));
++ if ((wd->src_tile) && (wd->src_tile->coord_to_geo))
+ {
- wd->zoom_animator = NULL;
- zoom_do(obj);
- evas_object_smart_callback_call(data, SIG_ZOOM_STOP, NULL);
- return ECORE_CALLBACK_CANCEL;
++ if (wd->src_tile->coord_to_geo(wd->obj, zoom, x, y, size, lon, lat))
++ return;
+ }
+
- if (wd->t >= 2.0)
- {
- wd->zoom_animator = NULL;
- wd->pinch.level = 2.0;
- if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
- wd->zoom_timer = ecore_timer_add(0.35, _zoom_timeout, obj);
- return ECORE_CALLBACK_CANCEL;
- }
- else if (wd->t <= 0.5)
++ if (lon) *lon = (x / (double)size * 360.0) - 180;
++ if (lat)
+ {
- wd->zoom_animator = NULL;
- wd->pinch.level = 0.5;
- if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
- wd->zoom_timer = ecore_timer_add(1.35, _zoom_timeout, obj);
- return ECORE_CALLBACK_CANCEL;
++ double n = ELM_PI - (2.0 * ELM_PI * y / size);
++ *lat = 180.0 / ELM_PI * atan(0.5 * (exp(n) - exp(-n)));
+ }
- else if (wd->t != 1.0)
++}
++
++static void
++_region_to_coord_convert(Widget_Data *wd, double lon, double lat, Evas_Coord size, Evas_Coord *x, Evas_Coord *y)
++{
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ int zoom = floor(log(size / 256) / log(2));
++ if ((wd->src_tile) && (wd->src_tile->geo_to_coord))
+ {
- Evas_Coord x, y, w, h;
- float half_w, half_h;
- evas_object_geometry_get(data, &x, &y, &w, &h);
- half_w = (float)w * 0.5;
- half_h = (float)h * 0.5;
- wd->pinch.cx = x + half_w;
- wd->pinch.cy = y + half_h;
- wd->pinch.level = wd->t;
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
++ if (wd->src_tile->geo_to_coord(wd->obj, zoom, lon, lat, size, x, y)) return;
+ }
- return ECORE_CALLBACK_RENEW;
++
++ if (x) *x = floor((lon + 180.0) / 360.0 * size);
++ if (y)
++ *y = floor((1.0 - log(tan(lat * ELM_PI / 180.0) + (1.0 / cos(lat * ELM_PI / 180.0)))
++ / ELM_PI) / 2.0 * size);
+}
+
- static Eina_Bool
- _long_press(void *data)
++static void
++_viewport_size_get(Widget_Data *wd, Evas_Coord *vw, Evas_Coord *vh)
+{
- ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
- Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- if (!wd) return ECORE_CALLBACK_CANCEL;
- wd->long_timer = NULL;
- evas_object_smart_callback_call(data, SIG_LONGPRESSED, &wd->ev);
- return ECORE_CALLBACK_CANCEL;
++ Evas_Coord x, y, w, h;
++ evas_object_geometry_get(wd->pan_smart, &x, &y, &w, &h);
++ if (vw) *vw = (x * 2) + w;
++ if (vh) *vh = (y * 2) + h;
+}
+
+static void
- _mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
++_pan_geometry_get(Widget_Data *wd, Evas_Coord *px, Evas_Coord *py)
+{
- ELM_CHECK_WIDTYPE(data, widtype);
- Widget_Data *wd = elm_widget_data_get(data);
- Evas_Event_Mouse_Down *ev = event_info;
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- if (ev->button != 1) return;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
- else wd->on_hold = EINA_FALSE;
- if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
- evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, ev);
- else
- evas_object_smart_callback_call(data, SIG_PRESS, ev);
- if (wd->long_timer) ecore_timer_del(wd->long_timer);
- wd->ev = *ev;
- wd->long_timer = ecore_timer_add(_elm_config->longpress_timeout, _long_press, data);
++ Evas_Coord x, y, vx, vy, vw, vh;
++ elm_smart_scroller_child_pos_get(wd->scr, &x, &y);
++ evas_object_geometry_get(wd->pan_smart, &vx, &vy, &vw, &vh);
++ x = -x;
++ y = -y;
++ if (vw > wd->size.w) x += (((vw - wd->size.w) / 2) + vx);
++ else x -= vx;
++ if (vh > wd->size.h) y += (((vh - wd->size.h) / 2) + vy);
++ else y -= vy;
++ if (px) *px = x;
++ if (py) *py = y;
++ }
++
++static void
++_region_show(void *data)
++{
++ EINA_SAFETY_ON_NULL_RETURN(data);
++ Delayed_Data *dd = data;
++ int x, y, w, h;
++
++ _region_to_coord_convert(dd->wd, dd->lon, dd->lat, dd->wd->size.w, &x, &y);
++ _viewport_size_get(dd->wd, &w, &h);
++ x = x - (w / 2);
++ y = y - (h / 2);
++ elm_smart_scroller_child_region_show(dd->wd->scr, x, y, w, h);
++ evas_object_smart_changed(dd->wd->pan_smart);
+}
+
+static void
- _mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
++_bubble_update(Marker_Bubble *bubble, Eina_List *contents)
+{
- ELM_CHECK_WIDTYPE(data, widtype);
- Widget_Data *wd = elm_widget_data_get(data);
- EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ EINA_SAFETY_ON_NULL_RETURN(contents);
+
- Evas_Event_Mouse_Up *ev = event_info;
- EINA_SAFETY_ON_NULL_RETURN(ev);
++ Eina_List *l;
++ Evas_Object *c;
+
- if (ev->button != 1) return;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
- else wd->on_hold = EINA_FALSE;
- if (wd->long_timer)
- {
- ecore_timer_del(wd->long_timer);
- wd->long_timer = NULL;
- }
- if (!wd->on_hold) evas_object_smart_callback_call(data, SIG_CLICKED, ev);
- wd->on_hold = EINA_FALSE;
++ elm_box_clear(bubble->bx);
++ EINA_LIST_FOREACH(contents, l, c) elm_box_pack_end(bubble->bx, c);
+}
+
+static void
- _mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
++_bubble_place(Marker_Bubble *bubble)
+{
- ELM_CHECK_WIDTYPE(data, widtype);
- Widget_Data *wd = elm_widget_data_get(data);
- EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
+
- if (!wd->paused)
- {
- int zoom_diff = 0;
- Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
- Evas_Coord x, y, w, h;
++ Evas_Coord x, y, w, h;
++ Evas_Coord xx, yy, ww, hh;
++ const char *s;
+
- evas_object_geometry_get(data, &x, &y, &w, &h);
++ if ((!bubble->obj) || (!bubble->pobj)) return;
++ evas_object_geometry_get(bubble->pobj, &x, &y, &w, NULL);
+
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
++ s = edje_object_data_get(bubble->obj, "size_w");
++ if (s) ww = atoi(s);
++ else ww = 0;
+
- wd->wheel_diff -= ev->z;
- wd->pinch.level = wd->pinch.diff * pow(2.0, (double)wd->wheel_diff/10);
- wd->pinch.cx = x + ((double)w * 0.5);
- wd->pinch.cy = y + ((double)h * 0.5);
++ edje_object_size_min_calc(bubble->obj, NULL, &hh);
++ s = edje_object_data_get(bubble->obj, "size_h");
++ if (s) h = atoi(s);
++ else h = 0;
++ if (hh < h) hh = h;
+
- if (wd->pinch.level > 1.99 || wd->pinch.level < 1.01)
- {
- wd->wheel_diff = 0;
- if (wd->pinch.level > 1.99)
- {
- zoom_diff = 1;
- wd->pinch.diff = wd->pinch.level / 2.0;
- wd->pinch.level = wd->pinch.level / 2.0;
- }
- else if (wd->pinch.level < 1.01)
- {
- zoom_diff = -1;
- wd->pinch.diff = wd->pinch.level * 2.0;
- wd->pinch.level = wd->pinch.level * 2.0;
- }
++ xx = x + (w / 2) - (ww / 2);
++ yy = y - hh;
+
- Elm_Map_Zoom_Mode temp;
- temp = wd->mode;
- wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
- wd->paused = EINA_TRUE;
- elm_map_zoom_set(data, wd->zoom + zoom_diff);
- wd->paused = EINA_FALSE;
- wd->mode = temp;
- }
- else
- {
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
- }
- }
++ _obj_place(bubble->obj, xx, yy, ww, hh);
++ evas_object_raise(bubble->obj);
+}
+
+static void
- _rect_resize_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++_bubble_sc_hints_changed_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
- ELM_CHECK_WIDTYPE(data, widtype);
- Widget_Data *wd = elm_widget_data_get(data);
- int x, y, w, h;
++ Marker_Bubble *bubble = data;
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ _bubble_place(data);
++}
+
- evas_object_geometry_get(wd->rect, &x, &y, &w, &h);
- evas_object_geometry_get(wd->pan_smart, &x, &y, &w, &h);
- evas_object_resize(wd->rect, w, h);
- evas_object_move(wd->rect, x, y);
++static void
++_bubble_mouse_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Marker_Bubble *bubble = data;
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ _bubble_place(bubble);
+}
+
+static void
- _del_hook(Evas_Object *obj)
++_bubble_hide_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- Elm_Map_Group_Class *group_clas;
- Elm_Map_Marker_Class *marker_clas;
- Eina_List *l;
- Evas_Object *p;
- Path_Node *n;
- Path_Waypoint *w;
- Ecore_Event_Handler *h;
- Elm_Map_Route *r;
- Elm_Map_Name *na;
- Evas_Object *route;
++ Marker_Bubble *bubble = data;
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ evas_object_hide(bubble->obj);
++}
+
- if (!wd) return;
- EINA_LIST_FREE(wd->groups_clas, group_clas)
- {
- if (group_clas->style)
- eina_stringshare_del(group_clas->style);
- free(group_clas);
- }
++static void
++_bubble_show_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Marker_Bubble *bubble = data;
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ _bubble_place(bubble);
++}
+
- EINA_LIST_FREE(wd->markers_clas, marker_clas)
- {
- if (marker_clas->style)
- eina_stringshare_del(marker_clas->style);
- free(marker_clas);
- }
++static void
++_bubble_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Marker_Bubble *bubble = data;
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
++ _bubble_place(bubble);
++}
+
- EINA_LIST_FOREACH(wd->route, l, r)
- {
- EINA_LIST_FREE(r->path, p)
- {
- evas_object_del(p);
- }
++static void
++_bubble_free(Marker_Bubble* bubble)
++{
++ EINA_SAFETY_ON_NULL_RETURN(bubble);
+
- EINA_LIST_FREE(r->waypoint, w)
- {
- if (w->point) eina_stringshare_del(w->point);
- free(w);
- }
++ evas_object_del(bubble->bx);
++ evas_object_del(bubble->sc);
++ evas_object_del(bubble->obj);
++ free(bubble);
++}
+
- EINA_LIST_FREE(r->nodes, n)
- {
- if (n->pos.address) eina_stringshare_del(n->pos.address);
- free(n);
- }
++static Marker_Bubble*
++_bubble_create(Evas_Object *pobj, Widget_Data *wd)
++{
++ EINA_SAFETY_ON_NULL_RETURN_VAL(pobj, NULL);
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
- EINA_LIST_FREE(r->handlers, h)
- {
- ecore_event_handler_del(h);
- }
++ Marker_Bubble *bubble = ELM_NEW(Marker_Bubble);
++ EINA_SAFETY_ON_NULL_RETURN_VAL(bubble, NULL);
++
++ bubble->wd = wd;
++ bubble->pobj = pobj;
++ evas_object_event_callback_add(pobj, EVAS_CALLBACK_HIDE, _bubble_hide_cb,
++ bubble);
++ evas_object_event_callback_add(pobj, EVAS_CALLBACK_SHOW, _bubble_show_cb,
++ bubble);
++ evas_object_event_callback_add(pobj, EVAS_CALLBACK_MOVE, _bubble_move_cb,
++ bubble);
++
++ bubble->obj = edje_object_add(evas_object_evas_get(pobj));
++ _elm_theme_object_set(wd->obj, bubble->obj , "map", "marker_bubble",
++ elm_widget_style_get(wd->obj));
++ evas_object_event_callback_add(bubble->obj, EVAS_CALLBACK_MOUSE_UP,
++ _bubble_mouse_up_cb, bubble);
++
++ bubble->sc = elm_scroller_add(bubble->obj);
++ elm_widget_style_set(bubble->sc, "map_bubble");
++ elm_scroller_content_min_limit(bubble->sc, EINA_FALSE, EINA_TRUE);
++ elm_scroller_policy_set(bubble->sc, ELM_SCROLLER_POLICY_AUTO,
++ ELM_SCROLLER_POLICY_OFF);
++ elm_scroller_bounce_set(bubble->sc, _elm_config->thumbscroll_bounce_enable,
++ EINA_FALSE);
++ edje_object_part_swallow(bubble->obj, "elm.swallow.content", bubble->sc);
++ evas_object_event_callback_add(bubble->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++ _bubble_sc_hints_changed_cb, bubble);
++
++ bubble->bx = elm_box_add(bubble->sc);
++ evas_object_size_hint_align_set(bubble->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
++ evas_object_size_hint_weight_set(bubble->bx, EVAS_HINT_EXPAND,
++ EVAS_HINT_EXPAND);
++ elm_box_horizontal_set(bubble->bx, EINA_TRUE);
++ elm_object_content_set(bubble->sc, bubble->bx);
++
++ return bubble;
++}
+
- if (r->con_url) ecore_con_url_free(r->con_url);
- if (r->info.nodes) eina_stringshare_del(r->info.nodes);
- if (r->info.waypoints) eina_stringshare_del(r->info.waypoints);
- }
++static void
++_marker_group_update(Marker_Group* group, Elm_Map_Group_Class *clas, Eina_List *markers)
++{
++ EINA_SAFETY_ON_NULL_RETURN(group);
++ EINA_SAFETY_ON_NULL_RETURN(clas);
++ EINA_SAFETY_ON_NULL_RETURN(markers);
++ Widget_Data *wd = clas->wd;
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- EINA_LIST_FREE(wd->names, na)
- {
- if (na->address) free(na->address);
- if (na->handler) ecore_event_handler_del(na->handler);
- if (na->ud.fname)
- {
- ecore_file_remove(na->ud.fname);
- free(na->ud.fname);
- na->ud.fname = NULL;
- }
- }
++ char buf[PATH_MAX];
++ Eina_List *l;
++ Elm_Map_Marker *marker;
++ int cnt = 0;
++ int sum_x = 0, sum_y = 0;
+
- EINA_LIST_FREE(wd->track, route)
++ EINA_LIST_FOREACH(markers, l, marker)
+ {
- evas_object_del(route);
++ sum_x += marker->x;
++ sum_y += marker->y;
++ cnt++;
+ }
+
- if (wd->map) evas_map_free(wd->map);
- if (wd->source_names) free(wd->source_names);
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
- if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
- if (wd->long_timer) ecore_timer_del(wd->long_timer);
- if (wd->user_agent) eina_stringshare_del(wd->user_agent);
- if (wd->ua) eina_hash_free(wd->ua);
- if (wd->markers) free(wd->markers);
++ group->x = sum_x / cnt;
++ group->y = sum_y / cnt;
++ _edj_marker_size_get(wd, &group->w, &group->h);
++ group->w *=2;
++ group->h *=2;
++ group->clas = clas;
++ group->markers = markers;
+
- free(wd);
- }
++ if (clas->style) elm_layout_theme_set(group->obj, "map/marker", clas->style,
++ elm_widget_style_get(wd->obj));
++ else elm_layout_theme_set(group->obj, "map/marker", "radio",
++ elm_widget_style_get(wd->obj));
+
- static void
- _del_pre_hook(Evas_Object *obj)
- {
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- Marker_Group *group;
- Elm_Map_Marker *marker;
- int i;
- Eina_Bool free_marker = EINA_TRUE;
- Eina_List *l;
+
- if (!wd) return;
- grid_clear_all(obj);
- for (i = 0; i <= wd->zoom_max; i++)
++ if (clas->func.icon_get)
+ {
- if (!wd->markers[i]) continue;
- Eina_Iterator *it = eina_matrixsparse_iterator_new(wd->markers[i]);
- Eina_Matrixsparse_Cell *cell;
++ Evas_Object *icon = NULL;
+
- EINA_ITERATOR_FOREACH(it, cell)
- {
- l = eina_matrixsparse_cell_data_get(cell);
- EINA_LIST_FREE(l, group)
- {
- EINA_LIST_FREE(group->markers, marker)
- {
- evas_object_event_callback_del_full(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
- _bubble_sc_hints_changed_cb, group);
- if (free_marker) free(marker);
- }
- free(group);
- }
- free_marker = EINA_FALSE;
- }
- eina_iterator_free(it);
- eina_matrixsparse_free(wd->markers[i]);
++ icon = elm_object_part_content_get(group->obj, "elm.icon");
++ if (icon) evas_object_del(icon);
++
++ icon = clas->func.icon_get(wd->obj, clas->data);
++ elm_object_part_content_set(group->obj, "elm.icon", icon);
+ }
++ snprintf(buf, sizeof(buf), "%d", cnt);
++ edje_object_part_text_set(elm_layout_edje_get(group->obj), "elm.text", buf);
+
- evas_object_del(wd->sep_maps_markers);
- evas_object_del(wd->pan_smart);
- wd->pan_smart = NULL;
++ if (group->bubble)
++ {
++ Eina_List *contents = NULL;
++
++ EINA_LIST_FOREACH(group->markers, l, marker)
++ {
++ Evas_Object *c = marker->clas->func.get(marker->wd->obj,
++ marker, marker->data);
++ if (c) contents = eina_list_append(contents, c);
++ }
++ _bubble_update(group->bubble, contents);
++ }
+}
+
+static void
- _on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
++_marker_group_bubble_open_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
+{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(data);
++ Marker_Group *group = data;
++ Eina_List *l;
++ Elm_Map_Marker *marker;
++ Eina_List *contents = NULL;
+
- if (!wd) return;
- if (elm_widget_focus_get(obj))
- {
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,focus", "elm");
- evas_object_focus_set(wd->obj, EINA_TRUE);
- }
- else
++ if (!group->bubble) group->bubble = _bubble_create(group->obj, group->wd);
++
++ EINA_LIST_FOREACH(group->markers, l, marker)
+ {
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,unfocus", "elm");
- evas_object_focus_set(wd->obj, EINA_FALSE);
++ if (group->wd->markers_max_num <= eina_list_count(contents)) break;
++ Evas_Object *c = marker->clas->func.get(marker->wd->obj,
++ marker, marker->data);
++ if (c) contents = eina_list_append(contents, c);
+ }
++ _bubble_update(group->bubble, contents);
++ _bubble_place(group->bubble);
+}
+
+static void
- _theme_hook(Evas_Object *obj)
++_marker_group_bringin_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
+{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(data);
+
- if (!wd) return;
- elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", elm_widget_style_get(obj));
- // edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale);
- _sizing_eval(obj);
++ double lon, lat;
++ Marker_Group *group = data;
++ _coord_to_region_convert(group->wd, group->x, group->y, group->wd->size.w,
++ &lon, &lat);
++ elm_map_region_bring_in(group->wd->obj, lon, lat);
+}
+
+static void
- _sizing_eval(Evas_Object *obj)
++_marker_group_free(Marker_Group* group)
+{
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
- Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
++ EINA_SAFETY_ON_NULL_RETURN(group);
+
- if (!wd) return;
- evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
- evas_object_size_hint_min_set(obj, minw, minh);
- evas_object_size_hint_max_set(obj, maxw, maxh);
- }
++ if (group->bubble) _bubble_free(group->bubble);
+
- static void
- _calc_job(void *data)
- {
- Widget_Data *wd = data;
- Evas_Coord minw, minh;
++ eina_list_free(group->markers);
++ evas_object_del(group->obj);
+
- if (!wd) return;
- minw = wd->size.w;
- minh = wd->size.h;
- if (wd->resized)
- {
- wd->resized = EINA_FALSE;
- if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
- {
- double tz = wd->zoom;
- wd->zoom = 0.0;
- elm_map_zoom_set(wd->obj, tz);
- }
- }
- if ((minw != wd->minw) || (minh != wd->minh))
- {
- wd->minw = minw;
- wd->minh = minh;
- evas_object_smart_callback_call(wd->pan_smart, SIG_CHANGED, NULL);
- _sizing_eval(wd->obj);
- }
- wd->calc_job = NULL;
- evas_object_smart_changed(wd->pan_smart);
++ free(group);
+}
+
- static void
- _pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
++static Marker_Group*
++_marker_group_create(Widget_Data *wd)
+{
- Pan *sd = evas_object_smart_data_get(obj);
- if (!sd) return;
- if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
- sd->wd->pan_x = x;
- sd->wd->pan_y = y;
- evas_object_smart_changed(obj);
- }
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
- static void
- _pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
- {
- Pan *sd = evas_object_smart_data_get(obj);
- if (!sd) return;
- if (x) *x = sd->wd->pan_x;
- if (y) *y = sd->wd->pan_y;
++ Marker_Group *group = ELM_NEW(Marker_Group);
++
++ group->wd = wd;
++ group->obj = elm_layout_add(wd->obj);
++ evas_object_smart_member_add(group->obj, wd->pan_smart);
++ evas_object_stack_above(group->obj, wd->sep_maps_markers);
++ elm_layout_theme_set(group->obj, "map/marker", "radio",
++ elm_widget_style_get(wd->obj));
++ edje_object_signal_callback_add(elm_layout_edje_get(group->obj),
++ "open", "elm", _marker_group_bubble_open_cb,
++ group);
++ edje_object_signal_callback_add(elm_layout_edje_get(group->obj),
++ "bringin", "elm", _marker_group_bringin_cb,
++ group);
++ return group;
+}
+
+static void
- _pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
++_marker_bringin_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
+{
- Pan *sd = evas_object_smart_data_get(obj);
- Evas_Coord ow, oh;
- if (!sd) return;
- evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
- ow = sd->wd->minw - ow;
- if (ow < 0) ow = 0;
- oh = sd->wd->minh - oh;
- if (oh < 0) oh = 0;
- if (x) *x = ow;
- if (y) *y = oh;
++ Elm_Map_Marker *marker = data;
++ EINA_SAFETY_ON_NULL_RETURN(marker);
++ elm_map_region_bring_in(marker->wd->obj, marker->longitude, marker->latitude);
+}
+
+static void
- _pan_min_get(Evas_Object *obj __UNUSED__, Evas_Coord *x, Evas_Coord *y)
++_marker_bubble_open_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
+{
- if (x) *x = 0;
- if (y) *y = 0;
++ EINA_SAFETY_ON_NULL_RETURN(data);
++ Elm_Map_Marker *marker = data;
++
++ if (!marker->bubble) marker->bubble = _bubble_create(marker->obj, marker->wd);
++ evas_object_smart_changed(marker->wd->pan_smart);
+}
+
+static void
- _pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
++_marker_update(Elm_Map_Marker *marker)
+{
- Pan *sd = evas_object_smart_data_get(obj);
- if (!sd) return;
- if (w) *w = sd->wd->minw;
- if (h) *h = sd->wd->minh;
- }
++ EINA_SAFETY_ON_NULL_RETURN(marker);
++ Elm_Map_Marker_Class *clas = marker->clas;
++ EINA_SAFETY_ON_NULL_RETURN(clas);
+
- static void
- _pan_add(Evas_Object *obj)
- {
- Pan *sd;
- Evas_Object_Smart_Clipped_Data *cd;
- _pan_sc.add(obj);
- cd = evas_object_smart_data_get(obj);
- if (!cd) return;
- sd = calloc(1, sizeof(Pan));
- if (!sd) return;
- sd->__clipped_data = *cd;
- free(cd);
- evas_object_smart_data_set(obj, sd);
- }
++ if (clas->style) elm_layout_theme_set(marker->obj, "map/marker", clas->style,
++ elm_widget_style_get(marker->wd->obj));
++ else elm_layout_theme_set(marker->obj, "map/marker", "radio",
++ elm_widget_style_get(marker->wd->obj));
+
- static void
- _pan_del(Evas_Object *obj)
- {
- Pan *sd = evas_object_smart_data_get(obj);
- if (!sd) return;
- _pan_sc.del(obj);
- }
++ if (clas->func.icon_get)
++ {
++ Evas_Object *icon = NULL;
+
- static void
- _pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
- {
- Pan *sd = evas_object_smart_data_get(obj);
- Evas_Coord ow, oh;
- if (!sd) return;
- evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
- if ((ow == w) && (oh == h)) return;
- sd->wd->resized = EINA_TRUE;
- if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
- sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
++ icon = elm_object_part_content_get(marker->obj, "elm.icon");
++ if (icon) evas_object_del(icon);
++
++ icon = clas->func.icon_get(marker->wd->obj, marker, marker->data);
++ elm_object_part_content_set(marker->obj, "elm.icon", icon);
++ }
++ _region_to_coord_convert(marker->wd, marker->longitude, marker->latitude,
++ marker->wd->size.w, &(marker->x), &(marker->y));
++
++ if (marker->bubble)
++ {
++ if (marker->content) evas_object_del(marker->content);
++ if (marker->clas->func.get)
++ marker->content = marker->clas->func.get(marker->wd->obj, marker,
++ marker->data);
++ if (marker->content)
++ {
++ Eina_List *contents = NULL;
++ contents = eina_list_append(contents, marker->content);
++ _bubble_update(marker->bubble, contents);
++ }
++ }
+}
+
++
++
+static void
- _pan_calculate(Evas_Object *obj)
++_marker_place(Widget_Data *wd)
+{
- Pan *sd = evas_object_smart_data_get(obj);
- Evas_Coord ox, oy, ow, oh;
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
+ Eina_List *l;
- Grid *g;
+
- EINA_SAFETY_ON_NULL_RETURN(sd);
- EINA_SAFETY_ON_NULL_RETURN(sd->wd);
++ Elm_Map_Marker *marker;
++ Elm_Map_Group_Class *group_clas;
+
- evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
- rect_place(sd->wd->obj, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
- EINA_LIST_FOREACH(sd->wd->grids, l, g)
++ Evas_Coord gw, gh;
++ Evas_Coord px, py;
++
++ if (wd->paused_markers || (!eina_list_count(wd->markers))) return;
++
++ _pan_geometry_get(wd, &px, &py);
++
++ _edj_marker_size_get(wd, &gw, &gh);
++ gw *= 2;
++ gh *= 2;
++
++ EINA_LIST_FOREACH(wd->markers, l, marker)
+ {
- if (sd->wd->zoom == g->zoom) grid_load(sd->wd->obj, g);
- else if (sd->wd->zoom-1 != g->zoom && sd->wd->zoom+1 != g->zoom) grid_unload(sd->wd->obj, g); // remain only adjacent grids
- grid_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
- if (sd->wd->zoom == g->zoom) marker_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
- if (!sd->wd->zoom_animator) route_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
- if (!sd->wd->zoom_animator) track_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ _marker_update(marker);
++ marker->grouped = EINA_FALSE;
++ marker->leader = EINA_FALSE;
+ }
- }
+
- static void
- _pan_move(Evas_Object *obj, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__)
- {
- Pan *sd = evas_object_smart_data_get(obj);
- if (!sd) return;
- if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
- sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
- }
++ EINA_LIST_FOREACH(wd->group_classes, l, group_clas)
++ {
++ Eina_List *ll;
++ EINA_LIST_FOREACH(group_clas->markers, ll, marker)
++ {
++ Eina_List *lll;
++ Elm_Map_Marker *mm;
++ Eina_List *markers = NULL;
+
- static void
- _hold_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
- {
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
++ if (marker->grouped) continue;
++ if (group_clas->zoom_grouped < wd->zoom)
++ {
++ marker->grouped = EINA_FALSE;
++ continue;
++ }
+
- if (!wd) return;
- elm_smart_scroller_hold_set(wd->scr, 1);
- }
++ EINA_LIST_FOREACH(group_clas->markers, lll, mm)
++ {
++ if (marker == mm || mm->grouped) continue;
++ if (ELM_RECTS_INTERSECT(mm->x, mm->y, mm->w, mm->h,
++ marker->x, marker->y, gw, gh))
++ {
++ // mm is group follower.
++ mm->leader = EINA_FALSE;
++ mm->grouped = EINA_TRUE;
++ markers = eina_list_append(markers, mm);
++ }
++ }
++ if (eina_list_count(markers) >= 1)
++ {
++ // marker is group leader.
++ marker->leader = EINA_TRUE;
++ marker->grouped = EINA_TRUE;
++ markers = eina_list_append(markers, marker);
++
++ if (!marker->group) marker->group = _marker_group_create(wd);
++ _marker_group_update(marker->group, group_clas, markers);
++ }
++ }
++ }
+
- static void
- _hold_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
- {
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_LIST_FOREACH(wd->markers, l, marker)
++ {
+
- if (!wd) return;
- elm_smart_scroller_hold_set(wd->scr, 0);
- }
++ if (marker->grouped ||
++ (marker->group_clas &&
++ (marker->group_clas->hide ||
++ marker->group_clas->zoom_displayed > wd->zoom)))
++ evas_object_hide(marker->obj);
++ else
++ {
++ Evas_Coord x, y;
++ _coord_rotate(marker->x + px, marker->y + py, wd->rotate.cx,
++ wd->rotate.cy, wd->rotate.d, &x, &y);
++ _obj_place(marker->obj, x - (marker->w / 2), y - (marker->h / 2),
++ marker->w, marker->h);
++ }
++ }
+
- static void
- _freeze_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
- {
- ELM_CHECK_WIDTYPE(obj, widtype);
- Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_LIST_FOREACH(wd->markers, l, marker)
++ {
++ Marker_Group *group = marker->group;
++ if (!group) continue;
+
- if (!wd) return;
- elm_smart_scroller_freeze_set(wd->scr, 1);
++ if (!marker->leader || (group->clas->hide) ||
++ (group->clas->zoom_displayed > wd->zoom))
++ evas_object_hide(group->obj);
++ else
++ {
++ Evas_Coord x, y;
++ _coord_rotate(group->x + px, group->y + py, wd->rotate.cx,
++ wd->rotate.cy, wd->rotate.d, &x, &y);
++ _obj_place(group->obj, x - (group->w / 2), y - (group->h / 2),
++ group->w, group->h);
++>>>>>>> remotes/origin/upstream
++ }
++ }
+}
+
+static void
- _freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++<<<<<<< HEAD
++_smooth_update(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
++ Eina_List *l;
++ Grid *g;
+
+ if (!wd) return;
- elm_smart_scroller_freeze_set(wd->scr, 0);
- }
-
- static void
- _scr_anim_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
- {
- evas_object_smart_callback_call(data, "scroll,anim,start", NULL);
- }
++ EINA_LIST_FOREACH(wd->grids, l, g)
++ {
++ Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
++ Eina_Matrixsparse_Cell *cell;
+
- static void
- _scr_anim_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
- {
- evas_object_smart_callback_call(data, "scroll,anim,stop", NULL);
++ EINA_ITERATOR_FOREACH(it, cell)
++ {
++ Grid_Item *gi = eina_matrixsparse_cell_data_get(cell);
++ evas_object_image_smooth_scale_set(gi->img, (!wd->nosmooth));
++ }
++ eina_iterator_free(it);
++ }
+}
+
- static void
- _scr_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++static Eina_Bool
++_scr_timeout(void *data)
+{
++ ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
+ Widget_Data *wd = elm_widget_data_get(data);
- EINA_SAFETY_ON_NULL_RETURN(wd);
- wd->center_on.enabled = EINA_FALSE;
+
- // FIXME: els_scoller sometimes give start event again & again... it confuses app. (els_scr bug?)
- if (!wd->scr_started)
- {
- wd->scr_started = EINA_TRUE;
- evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_START, NULL);
- }
++ if (!wd) return ECORE_CALLBACK_CANCEL;
++ wd->nosmooth--;
++ if (!wd->nosmooth) _smooth_update(data);
++ wd->scr_timer = NULL;
++ return ECORE_CALLBACK_CANCEL;
+}
+
+static void
- _scr_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++_scr(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
++ ELM_CHECK_WIDTYPE(data, widtype);
+ Widget_Data *wd = elm_widget_data_get(data);
- EINA_SAFETY_ON_NULL_RETURN(wd);
- wd->center_on.enabled = EINA_FALSE;
+
- // FIXME: els_scoller sometimes give start event again & again... it confuses app. (els_scr bug?)
- if (wd->scr_started)
++ if (!wd) return;
++ if (!wd->scr_timer)
+ {
- wd->scr_started = EINA_FALSE;
- evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_STOP, NULL);
++ wd->nosmooth++;
++ if (wd->nosmooth == 1) _smooth_update(data);
+ }
++ if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
++ wd->scr_timer = ecore_timer_add(0.5, _scr_timeout, data);
+}
+
+static void
- _scr_scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++zoom_do(Evas_Object *obj)
+{
- evas_object_smart_callback_call(data, SIG_SCROLL, NULL);
- }
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ Evas_Coord xx, yy, ow, oh;
+
++ if (!wd) return;
++ wd->size.w = wd->size.nw;
++ wd->size.h = wd->size.nh;
+
- static void
- _group_object_create(Marker_Group *group)
- {
- const char *style = "radio";
- Evas_Object *icon = NULL;
++ elm_smart_scroller_child_viewport_size_get(wd->scr, &ow, &oh);
+
- if (group->obj) return;
- if ((!group->clas->priv.objs_notused) || (eina_list_count(group->markers) == 1))
++ if (wd->center_on.enabled)
+ {
- //set icon and style
- if (eina_list_count(group->markers) == 1)
- {
- Elm_Map_Marker *m = eina_list_data_get(group->markers);
- if (m->clas->style)
- style = m->clas->style;
-
- if (m->clas->func.icon_get)
- icon = m->clas->func.icon_get(group->wd->obj, m, m->data);
-
- group->delete_object = EINA_TRUE;
- }
- else
- {
- if (group->clas->style)
- style = group->clas->style;
-
- if (group->clas->func.icon_get)
- icon = group->clas->func.icon_get(group->wd->obj, group->clas->data);
-
- group->delete_object = EINA_FALSE;
- }
-
- group->obj = elm_layout_add(group->wd->obj);
- elm_layout_theme_set(group->obj, "map/marker", style, elm_widget_style_get(group->wd->obj));
-
- if (icon) elm_object_part_content_set(group->obj, "elm.icon", icon);
-
- evas_object_smart_member_add(group->obj, group->wd->pan_smart);
- elm_widget_sub_object_add(group->wd->obj, group->obj);
- evas_object_stack_above(group->obj, group->wd->sep_maps_markers);
-
- if (!group->delete_object)
- group->clas->priv.objs_used = eina_list_append(group->clas->priv.objs_used, group->obj);
++ elm_map_utils_convert_geo_into_coord(obj, wd->center_on.lon, wd->center_on.lat, wd->size.w, &xx, &yy);
++ xx -= ow / 2;
++ yy -= oh / 2;
+ }
+ else
+ {
- group->delete_object = EINA_FALSE;
-
- group->obj = eina_list_data_get(group->clas->priv.objs_notused);
- group->clas->priv.objs_used = eina_list_append(group->clas->priv.objs_used, group->obj);
- group->clas->priv.objs_notused = eina_list_remove(group->clas->priv.objs_notused, group->obj);
- evas_object_show(group->obj);
++ xx = (wd->size.spos.x * wd->size.w) - (ow / 2);
++ yy = (wd->size.spos.y * wd->size.h) - (oh / 2);
+ }
+
- edje_object_signal_callback_add(elm_layout_edje_get(group->obj), "open", "elm", _group_open_cb, group);
- edje_object_signal_callback_add(elm_layout_edje_get(group->obj), "bringin", "elm", _group_bringin_cb, group);
+
- group->update_nbelems = EINA_TRUE;
- group->update_resize = EINA_TRUE;
- group->update_raise = EINA_TRUE;
++ if (xx < 0) xx = 0;
++ else if (xx > (wd->size.w - ow)) xx = wd->size.w - ow;
++ if (yy < 0) yy = 0;
++ else if (yy > (wd->size.h - oh)) yy = wd->size.h - oh;
+
- if (group->open) _group_bubble_create(group);
- }
-
- static void
- _group_object_free(Marker_Group *group)
- {
- if (!group->obj) return;
- if (!group->delete_object)
- {
- group->clas->priv.objs_notused = eina_list_append(group->clas->priv.objs_notused, group->obj);
- group->clas->priv.objs_used = eina_list_remove(group->clas->priv.objs_used, group->obj);
- evas_object_hide(group->obj);
-
- edje_object_signal_callback_del(elm_layout_edje_get(group->obj), "open", "elm", _group_open_cb);
- edje_object_signal_callback_del(elm_layout_edje_get(group->obj), "bringin", "elm", _group_bringin_cb);
- }
- else
- evas_object_del(group->obj);
++ wd->show.show = EINA_TRUE;
++ wd->show.x = xx;
++ wd->show.y = yy;
++ wd->show.w = ow;
++ wd->show.h = oh;
+
- group->obj = NULL;
- _group_bubble_free(group);
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
+}
+
- static void
- _group_bubble_mouse_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++static Eina_Bool
++_zoom_timeout(void *data)
+{
- Marker_Group *group = data;
++ ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
++ Widget_Data *wd = elm_widget_data_get(data);
+
- if (!evas_object_above_get(group->rect)) return;
- evas_object_raise(group->bubble);
- evas_object_raise(group->sc);
- evas_object_raise(group->rect);
++ if (!wd) return ECORE_CALLBACK_CANCEL;
++ wd->zoom_timer = NULL;
++ wd->pinch.level = 1.0;
++ zoom_do(data);
++ evas_object_smart_callback_call(data, SIG_ZOOM_STOP, NULL);
++ return ECORE_CALLBACK_CANCEL;
+}
+
- static void
- _group_bubble_create(Marker_Group *group)
++static Eina_Bool
++_zoom_anim(void *data)
+{
- if (group->bubble) return;
-
- group->wd->opened_bubbles = eina_list_append(group->wd->opened_bubbles, group);
- group->bubble = edje_object_add(evas_object_evas_get(group->obj));
- _elm_theme_object_set(group->wd->obj, group->bubble, "map", "marker_bubble",
- elm_widget_style_get(group->wd->obj));
- evas_object_smart_member_add(group->bubble,
- group->wd->obj);
- elm_widget_sub_object_add(group->wd->obj, group->bubble);
++ ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
++ Evas_Object *obj = data;
++ Widget_Data *wd = elm_widget_data_get(obj);
+
- _group_bubble_content_free(group);
- if (!_group_bubble_content_update(group))
++ if (!wd) return ECORE_CALLBACK_CANCEL;
++ if (wd->zoom_method == ZOOM_METHOD_IN) wd->t += 0.1 ;
++ else if (wd->zoom_method == ZOOM_METHOD_OUT) wd->t -= 0.05;
++ else
+ {
- //no content, we can delete the bubble
- _group_bubble_free(group);
- return;
++ wd->zoom_animator = NULL;
++ zoom_do(obj);
++ evas_object_smart_callback_call(data, SIG_ZOOM_STOP, NULL);
++ return ECORE_CALLBACK_CANCEL;
+ }
+
- group->rect = evas_object_rectangle_add(evas_object_evas_get(group->obj));
- evas_object_color_set(group->rect, 0, 0, 0, 0);
- evas_object_repeat_events_set(group->rect, EINA_TRUE);
- evas_object_smart_member_add(group->rect, group->wd->obj);
- elm_widget_sub_object_add(group->wd->obj, group->rect);
-
- evas_object_event_callback_add(group->rect, EVAS_CALLBACK_MOUSE_UP, _group_bubble_mouse_up_cb, group);
++ if (wd->t >= 2.0)
++ {
++ wd->zoom_animator = NULL;
++ wd->pinch.level = 2.0;
++ if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
++ wd->zoom_timer = ecore_timer_add(0.35, _zoom_timeout, obj);
++ return ECORE_CALLBACK_CANCEL;
++ }
++ else if (wd->t <= 0.5)
++ {
++ wd->zoom_animator = NULL;
++ wd->pinch.level = 0.5;
++ if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
++ wd->zoom_timer = ecore_timer_add(1.35, _zoom_timeout, obj);
++ return ECORE_CALLBACK_CANCEL;
++ }
++ else if (wd->t != 1.0)
++ {
++ Evas_Coord x, y, w, h;
++ float half_w, half_h;
++ evas_object_geometry_get(data, &x, &y, &w, &h);
++ half_w = (float)w * 0.5;
++ half_h = (float)h * 0.5;
++ wd->pinch.cx = x + half_w;
++ wd->pinch.cy = y + half_h;
++ wd->pinch.level = wd->t;
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
++=======
++_grid_item_coord_get(Grid_Item *gi, int *x, int *y, int *w, int *h)
++{
++ EINA_SAFETY_ON_NULL_RETURN(gi);
+
- _group_bubble_place(group);
++ if (x) *x = gi->x * gi->wd->size.tile;
++ if (y) *y = gi->y * gi->wd->size.tile;
++ if (w) *w = gi->wd->size.tile;
++ if (h) *h = gi->wd->size.tile;
+}
+
- static void _bubble_sc_hints_changed_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++static Eina_Bool
++_grid_item_intersect(Grid_Item *gi)
+{
- _group_bubble_place(data);
++ EINA_SAFETY_ON_NULL_RETURN_VAL(gi, EINA_FALSE);
++
++ Evas_Coord px, py;
++ Evas_Coord vw, vh;
++ Evas_Coord x, y, w, h;
++
++ _pan_geometry_get(gi->wd, &px, &py);
++ _viewport_size_get(gi->wd, &vw, &vh);
++ _grid_item_coord_get(gi, &x, &y, &w, &h);
++ return ELM_RECTS_INTERSECT(x + px, y + py, w, h, 0, 0, vw, vh);
+}
+
- static int
- _group_bubble_content_update(Marker_Group *group)
++static void
++_grid_item_update(Grid_Item *gi)
+{
- Eina_List *l;
- Elm_Map_Marker *marker;
- int i = 0;
-
- if (!group->bubble) return 1;
++ evas_object_image_file_set(gi->img, gi->file, NULL);
++ if (!gi->wd->zoom_timer && !gi->wd->scr_timer)
++ evas_object_image_smooth_scale_set(gi->img, EINA_TRUE);
++ else evas_object_image_smooth_scale_set(gi->img, EINA_FALSE);
+
- if (!group->sc)
++ Evas_Load_Error err = evas_object_image_load_error_get(gi->img);
++ if (err != EVAS_LOAD_ERROR_NONE)
+ {
- group->sc = elm_scroller_add(group->bubble);
- elm_widget_style_set(group->sc, "map_bubble");
- elm_scroller_content_min_limit(group->sc, EINA_FALSE, EINA_TRUE);
- elm_scroller_policy_set(group->sc, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
- elm_scroller_bounce_set(group->sc, _elm_config->thumbscroll_bounce_enable, EINA_FALSE);
- edje_object_part_swallow(group->bubble, "elm.swallow.content", group->sc);
- evas_object_show(group->sc);
- evas_object_smart_member_add(group->sc,
- group->wd->obj);
- elm_widget_sub_object_add(group->wd->obj, group->sc);
-
- group->bx = elm_box_add(group->bubble);
- evas_object_size_hint_align_set(group->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(group->bx, 0.5, 0.5);
- elm_box_horizontal_set(group->bx, EINA_TRUE);
- evas_object_show(group->bx);
-
- elm_object_content_set(group->sc, group->bx);
-
- evas_object_event_callback_add(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
- _bubble_sc_hints_changed_cb, group);
++ ERR("Image loading error (%s): %s", gi->file, evas_load_error_str(err));
++ ecore_file_remove(gi->file);
++ gi->file_have = EINA_FALSE;
+ }
-
- EINA_LIST_FOREACH(group->markers, l, marker)
++ else
+ {
- if (i >= group->wd->markers_max_num) break;
- if ((!marker->content) && (marker->clas->func.get))
- marker->content = marker->clas->func.get(group->wd->obj, marker, marker->data);
- else if (marker->content)
- elm_box_unpack(group->bx, marker->content);
- if (marker->content)
- {
- elm_box_pack_end(group->bx, marker->content);
- i++;
- }
++ Evas_Coord px, py;
++ Evas_Coord x, y, w, h;
++
++ _pan_geometry_get(gi->wd, &px, &py);
++ _grid_item_coord_get(gi, &x, &y, &w, &h);
++
++ _obj_place(gi->img, x + px, y + py, w, h);
++ _obj_rotate(gi->wd, gi->img);
++ gi->file_have = EINA_TRUE;
+ }
- return i;
+}
+
+static void
- _group_bubble_content_free(Marker_Group *group)
++_grid_item_load(Grid_Item *gi)
+{
- Eina_List *l;
- Elm_Map_Marker *marker;
-
- if (!group->sc) return;
- EINA_LIST_FOREACH(group->markers, l, marker)
++ EINA_SAFETY_ON_NULL_RETURN(gi);
++ if (gi->file_have) _grid_item_update(gi);
++ else if (!gi->job)
+ {
- if ((marker->content) && (marker->clas->func.del))
- marker->clas->func.del(group->wd->obj, marker, marker->data, marker->content);
- else if (marker->content)
- evas_object_del(marker->content);
- marker->content = NULL;
++ gi->wd->download_list = eina_list_remove(gi->wd->download_list, gi);
++ gi->wd->download_list = eina_list_append(gi->wd->download_list, gi);
+ }
- evas_object_del(group->sc);
- group->sc = NULL;
+}
+
+static void
- _group_bubble_free(Marker_Group *group)
++_grid_item_unload(Grid_Item *gi)
+{
- if (!group->bubble) return;
- group->wd->opened_bubbles = eina_list_remove(group->wd->opened_bubbles, group);
- evas_object_event_callback_del_full(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
- _bubble_sc_hints_changed_cb, group);
- evas_object_del(group->bubble);
- evas_object_del(group->rect);
- group->bubble = NULL;
- _group_bubble_content_free(group);
++ EINA_SAFETY_ON_NULL_RETURN(gi);
++ if (gi->file_have)
++ {
++ evas_object_hide(gi->img);
++ evas_object_image_file_set(gi->img, NULL, NULL);
++ }
++ else if (gi->job)
++ {
++ ecore_file_download_abort(gi->job);
++ ecore_file_remove(gi->file);
++ gi->job = NULL;
++ gi->wd->try_num--;
++ }
++ else gi->wd->download_list = eina_list_remove(gi->wd->download_list, gi);
++
+}
+
- static void
- _group_bubble_place(Marker_Group *group)
++static Grid_Item *
++_grid_item_create(Grid *g, Evas_Coord x, Evas_Coord y)
+{
- Evas_Coord x, y, w;
- Evas_Coord xx, yy, ww, hh;
- const char *s;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
++ char buf[PATH_MAX];
++ char buf2[PATH_MAX];
++ char *url;
++ Grid_Item *gi;
+
- if ((!group->bubble) || (!group->obj)) return;
++ gi = ELM_NEW(Grid_Item);
++ gi->wd = g->wd;
++ gi->g = g;
++ gi->x = x;
++ gi->y = y;
+
- evas_object_geometry_get(group->obj, &x, &y, &w, NULL);
- edje_object_size_min_calc(group->bubble, NULL, &hh);
++ gi->file_have = EINA_FALSE;
++ gi->job = NULL;
+
- s = edje_object_data_get(group->bubble, "size_w");
- if (s) ww = atoi(s);
- else ww = 0;
- xx = x + w / 2 - ww / 2;
- yy = y-hh;
++ gi->img = evas_object_image_add(evas_object_evas_get(g->wd->obj));
++ evas_object_image_smooth_scale_set(gi->img, EINA_FALSE);
++ evas_object_image_scale_hint_set(gi->img, EVAS_IMAGE_SCALE_HINT_DYNAMIC);
++ evas_object_image_filled_set(gi->img, 1);
++ evas_object_smart_member_add(gi->img, g->wd->pan_smart);
++ evas_object_pass_events_set(gi->img, EINA_TRUE);
++ evas_object_stack_below(gi->img, g->wd->sep_maps_markers);
+
- evas_object_move(group->bubble, xx, yy);
- evas_object_resize(group->bubble, ww, hh);
- obj_rotate_zoom(group->wd->obj, group->bubble);
- evas_object_show(group->bubble);
++ snprintf(buf, sizeof(buf), CACHE_TILE_ROOT, g->wd->id, g->zoom, x);
++ snprintf(buf2, sizeof(buf2), CACHE_TILE_PATH, buf, y);
++ if (!ecore_file_exists(buf)) ecore_file_mkpath(buf);
+
- evas_object_move(group->rect, xx, yy);
- evas_object_resize(group->rect, ww, hh);
- obj_rotate_zoom(group->wd->obj, group->rect);
- evas_object_show(group->rect);
++ eina_stringshare_replace(&gi->file, buf2);
++ url = g->wd->src_tile->url_cb(g->wd->obj, x, y, g->zoom);
++ if ((!url) || (!strlen(url)))
++ {
++ eina_stringshare_replace(&gi->url, NULL);
++ ERR("Getting source url failed: %s", gi->file);
++ }
++ else eina_stringshare_replace(&gi->url, url);
++ if (url) free(url);
++ eina_matrixsparse_data_idx_set(g->grid, y, x, gi);
++ return gi;
+}
+
+static void
- _group_bringin_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
++_grid_item_free(Grid_Item *gi)
{
- Marker_Group *group = data;
- Elm_Map_Marker *marker = eina_list_data_get(group->markers);
- if (!marker) return;
- group->bringin = EINA_TRUE;
- elm_map_geo_region_bring_in(group->wd->obj, marker->longitude, marker->latitude);
+ EINA_SAFETY_ON_NULL_RETURN(gi);
- if (gi->file_have) _grid_item_update(gi);
- else if (!gi->job)
++ _grid_item_unload(gi);
++ if (gi->g && gi->g->grid) eina_matrixsparse_data_idx_set(gi->g->grid,
++ gi->y, gi->x, NULL);
++ if (gi->url) eina_stringshare_del(gi->url);
++ if (gi->file) eina_stringshare_del(gi->file);
++ if (gi->img) evas_object_del(gi->img);
++ if (gi->file_have) ecore_file_remove(gi->file);
++ free(gi);
+}
+
+static void
- _group_open_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
++_downloaded_cb(void *data, const char *file __UNUSED__, int status)
+{
- Marker_Group *group = data;
++ Grid_Item *gi = data;
+
- if (group->bringin)
++ if (status == 200)
+ {
- group->bringin = EINA_FALSE;
- return;
++ DBG("Download success from %s to %s", gi->url, gi->file);
++ _grid_item_update(gi);
++ gi->wd->finish_num++;
++ evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOADED, NULL);
+ }
-
- if (group->bubble)
++ else
+ {
- group->open = EINA_FALSE;
- _group_bubble_free(group);
- return;
++ WRN("Download failed from %s to %s (%d) ", gi->url, gi->file, status);
++ ecore_file_remove(gi->file);
++ gi->file_have = EINA_FALSE;
++ evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOADED_FAIL, NULL);
+ }
- group->open = EINA_TRUE;
- _group_bubble_create(group);
++
++ gi->job = NULL;
++ gi->wd->download_num--;
++ if (!gi->wd->download_num)
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(gi->wd->scr),
++ "elm,state,busy,stop", "elm");
+}
+
+static Eina_Bool
- _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
++_download_job(void *data)
+{
- ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
- Widget_Data *wd = elm_widget_data_get(obj);
- int zoom;
- Evas_Coord x = 0;
- Evas_Coord y = 0;
- Evas_Coord step_x = 0;
- Evas_Coord step_y = 0;
- Evas_Coord v_w = 0;
- Evas_Coord v_h = 0;
- Evas_Coord page_x = 0;
- Evas_Coord page_y = 0;
-
- if (!wd) return EINA_FALSE;
- if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
- Evas_Event_Key_Down *ev = event_info;
- if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
++ Widget_Data *wd = data;
+
- elm_smart_scroller_child_pos_get(wd->scr, &x, &y);
- elm_smart_scroller_step_size_get(wd->scr, &step_x, &step_y);
- elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
- elm_smart_scroller_child_viewport_size_get(wd->scr, &v_w, &v_h);
++ Eina_List *l, *ll;
++ Grid_Item *gi;
+
- if ((!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left")))
- {
- x -= step_x;
- }
- else if ((!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, "KP_Right")))
- {
- x += step_x;
- }
- else if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")))
- {
- y -= step_y;
- }
- else if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")))
- {
- y += step_y;
- }
- else if ((!strcmp(ev->keyname, "Prior")) || (!strcmp(ev->keyname, "KP_Prior")))
++ if (!eina_list_count(wd->download_list))
+ {
- if (page_y < 0)
- y -= -(page_y * v_h) / 100;
- else
- y -= page_y;
++ wd->download_idler = NULL;
++ return ECORE_CALLBACK_CANCEL;
+ }
- else if ((!strcmp(ev->keyname, "Next")) || (!strcmp(ev->keyname, "KP_Next")))
++
++ EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
+ {
- if (page_y < 0)
- y += -(page_y * v_h) / 100;
++ if (gi->g->zoom != wd->zoom || !_grid_item_intersect(gi))
++ {
++ wd->download_list = eina_list_remove(wd->download_list, gi);
++ continue;
++ }
++ if (wd->download_num >= MAX_CONCURRENT_DOWNLOAD)
++ return ECORE_CALLBACK_RENEW;
++
++ Eina_Bool ret = ecore_file_download_full(gi->url, gi->file,
++ _downloaded_cb, NULL,
++ gi, &(gi->job), wd->ua);
++ if ((!ret) || (!gi->job))
++ ERR("Can't start to download from %s to %s", gi->url, gi->file);
+ else
- y += page_y;
- }
- else if (!strcmp(ev->keyname, "KP_Add"))
- {
- zoom = elm_map_zoom_get(obj) + 1;
- elm_map_zoom_mode_set(obj, ELM_MAP_ZOOM_MODE_MANUAL);
- elm_map_zoom_set(obj, zoom);
- return EINA_TRUE;
- }
- else if (!strcmp(ev->keyname, "KP_Subtract"))
- {
- zoom = elm_map_zoom_get(obj) - 1;
- elm_map_zoom_mode_set(obj, ELM_MAP_ZOOM_MODE_MANUAL);
- elm_map_zoom_set(obj, zoom);
- return EINA_TRUE;
- }
- else return EINA_FALSE;
-
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- elm_smart_scroller_child_pos_set(wd->scr, x, y);
++ {
++ wd->download_list = eina_list_remove(wd->download_list, gi);
++ wd->try_num++;
++ wd->download_num++;
++ evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOAD,
++ NULL);
++ if (wd->download_num == 1)
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
++ "elm,state,busy,start", "elm");
+
- return EINA_TRUE;
++ }
++>>>>>>> remotes/origin/upstream
++ }
++ return ECORE_CALLBACK_RENEW;
+}
+
++<<<<<<< HEAD
+static Eina_Bool
- cb_dump_name_attrs(void *data, const char *key, const char *value)
++_long_press(void *data)
+{
- Name_Dump *dump = (Name_Dump*)data;
- if (!dump) return EINA_FALSE;
-
- if (!strncmp(key, NOMINATIM_ATTR_LON, sizeof(NOMINATIM_ATTR_LON))) dump->lon = atof(value);
- else if (!strncmp(key, NOMINATIM_ATTR_LAT, sizeof(NOMINATIM_ATTR_LAT))) dump->lat = atof(value);
++ ELM_CHECK_WIDTYPE(data, widtype) ECORE_CALLBACK_CANCEL;
++ Widget_Data *wd = elm_widget_data_get(data);
+
- return EINA_TRUE;
++ if (!wd) return ECORE_CALLBACK_CANCEL;
++ wd->long_timer = NULL;
++ evas_object_smart_callback_call(data, SIG_LONGPRESSED, &wd->ev);
++ return ECORE_CALLBACK_CANCEL;
+}
+
-
- static Eina_Bool
- cb_route_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
++static void
++_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
- Route_Dump *dump = data;
- if (!dump) return EINA_FALSE;
-
- switch (type)
- {
- case EINA_SIMPLE_XML_OPEN:
- case EINA_SIMPLE_XML_OPEN_EMPTY:
- {
- const char *attrs;
-
- attrs = eina_simple_xml_tag_attributes_find(value, length);
- if (!attrs)
- {
- if (!strncmp(value, YOURS_DISTANCE, length)) dump->id = ROUTE_XML_DISTANCE;
- else if (!strncmp(value, YOURS_DESCRIPTION, length)) dump->id = ROUTE_XML_DESCRIPTION;
- else if (!strncmp(value, YOURS_COORDINATES, length)) dump->id = ROUTE_XML_COORDINATES;
- else dump->id = ROUTE_XML_NONE;
- }
- }
- break;
- case EINA_SIMPLE_XML_DATA:
- {
- char *buf = malloc(length);
- if (!buf) return EINA_FALSE;
- snprintf(buf, length, "%s", value);
- if (dump->id == ROUTE_XML_DISTANCE) dump->distance = atof(buf);
- else if (!(dump->description) && (dump->id == ROUTE_XML_DESCRIPTION)) dump->description = strdup(buf);
- else if (dump->id == ROUTE_XML_COORDINATES) dump->coordinates = strdup(buf);
- free(buf);
- }
- break;
- default:
- break;
- }
++ ELM_CHECK_WIDTYPE(data, widtype);
++ Widget_Data *wd = elm_widget_data_get(data);
++ Evas_Event_Mouse_Down *ev = event_info;
+
- return EINA_TRUE;
++ if (ev->button != 1) return;
++ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
++ else wd->on_hold = EINA_FALSE;
++ if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
++ evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, ev);
++ else
++ evas_object_smart_callback_call(data, SIG_PRESS, ev);
++ if (wd->long_timer) ecore_timer_del(wd->long_timer);
++ wd->ev = *ev;
++ wd->long_timer = ecore_timer_add(_elm_config->longpress_timeout, _long_press, data);
+}
+
- static Eina_Bool
- cb_name_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
++static void
++_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
- Name_Dump *dump = data;
- if (!dump) return EINA_FALSE;
++ ELM_CHECK_WIDTYPE(data, widtype);
++ Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- switch (type)
- {
- case EINA_SIMPLE_XML_OPEN:
- case EINA_SIMPLE_XML_OPEN_EMPTY:
- {
- const char *attrs;
- attrs = eina_simple_xml_tag_attributes_find(value, length);
- if (attrs)
- {
- if (!strncmp(value, NOMINATIM_RESULT, sizeof(NOMINATIM_RESULT) - 1)) dump->id = NAME_XML_NAME;
- else dump->id = NAME_XML_NONE;
++ Evas_Event_Mouse_Up *ev = event_info;
++ EINA_SAFETY_ON_NULL_RETURN(ev);
+
- eina_simple_xml_attributes_parse
- (attrs, length - (attrs - value), cb_dump_name_attrs, dump);
- }
- }
- break;
- case EINA_SIMPLE_XML_DATA:
- {
- char *buf = malloc(length + 1);
- if (!buf) return EINA_FALSE;
- snprintf(buf, length + 1, "%s", value);
- if (dump->id == NAME_XML_NAME) dump->address = strdup(buf);
- free(buf);
- }
- break;
- default:
- break;
++ if (ev->button != 1) return;
++ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
++ else wd->on_hold = EINA_FALSE;
++ if (wd->long_timer)
++ {
++ ecore_timer_del(wd->long_timer);
++ wd->long_timer = NULL;
+ }
-
- return EINA_TRUE;
++ if (!wd->on_hold) evas_object_smart_callback_call(data, SIG_CLICKED, ev);
++ wd->on_hold = EINA_FALSE;
+}
+
+static void
- _parse_kml(void *data)
++_mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
- Elm_Map_Route *r = (Elm_Map_Route*)data;
- if (!r || !r->ud.fname) return;
++ ELM_CHECK_WIDTYPE(data, widtype);
++ Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- FILE *f;
- char **str;
- unsigned int ele, idx;
- double lon, lat;
- Evas_Object *path;
++ if (!wd->paused)
++ {
++ int zoom_diff = 0;
++ Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
++ Evas_Coord x, y, w, h;
+
- Route_Dump dump = {0, r->ud.fname, 0.0, NULL, NULL};
++ evas_object_geometry_get(data, &x, &y, &w, &h);
+
- f = fopen(r->ud.fname, "rb");
- if (f)
- {
- long sz;
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
+
- fseek(f, 0, SEEK_END);
- sz = ftell(f);
- if (sz > 0)
- {
- char *buf;
++ wd->wheel_diff -= ev->z;
++ wd->pinch.level = wd->pinch.diff * pow(2.0, (double)wd->wheel_diff/10);
++ wd->pinch.cx = x + ((double)w * 0.5);
++ wd->pinch.cy = y + ((double)h * 0.5);
+
- fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
- if (buf)
++ if (wd->pinch.level > 1.99 || wd->pinch.level < 1.01)
++ {
++ wd->wheel_diff = 0;
++ if (wd->pinch.level > 1.99)
+ {
- if (fread(buf, 1, sz, f))
- {
- eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump, &dump);
- free(buf);
- }
++ zoom_diff = 1;
++ wd->pinch.diff = wd->pinch.level / 2.0;
++ wd->pinch.level = wd->pinch.level / 2.0;
+ }
- }
- fclose(f);
-
- if (dump.distance) r->info.distance = dump.distance;
- if (dump.description)
- {
- eina_stringshare_replace(&r->info.waypoints, dump.description);
- str = eina_str_split_full(dump.description, "\n", 0, &ele);
- r->info.waypoint_count = ele;
- for (idx = 0 ; idx < ele ; idx++)
++ else if (wd->pinch.level < 1.01)
+ {
- Path_Waypoint *wp = ELM_NEW(Path_Waypoint);
- if (wp)
- {
- wp->wd = r->wd;
- wp->point = eina_stringshare_add(str[idx]);
- DBG("%s", str[idx]);
- r->waypoint = eina_list_append(r->waypoint, wp);
- }
- }
- if (str && str[0])
- {
- free(str[0]);
- free(str);
++ zoom_diff = -1;
++ wd->pinch.diff = wd->pinch.level * 2.0;
++ wd->pinch.level = wd->pinch.level * 2.0;
+ }
- }
- else WRN("description is not found !");
-
- if (dump.coordinates)
- {
- eina_stringshare_replace(&r->info.nodes, dump.coordinates);
- str = eina_str_split_full(dump.coordinates, "\n", 0, &ele);
- r->info.node_count = ele;
- for (idx = 0 ; idx < ele ; idx++)
- {
- sscanf(str[idx], "%lf,%lf", &lon, &lat);
- Path_Node *n = ELM_NEW(Path_Node);
- if (n)
- {
- n->wd = r->wd;
- n->pos.lon = lon;
- n->pos.lat = lat;
- n->idx = idx;
- DBG("%lf:%lf", lon, lat);
- n->pos.address = NULL;
- r->nodes = eina_list_append(r->nodes, n);
+
- path = evas_object_polygon_add(evas_object_evas_get(r->wd->obj));
- evas_object_smart_member_add(path, r->wd->pan_smart);
- r->path = eina_list_append(r->path, path);
- }
- }
- if (str && str[0])
- {
- free(str[0]);
- free(str);
- }
++ Elm_Map_Zoom_Mode temp;
++ temp = wd->mode;
++ wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
++ wd->paused = EINA_TRUE;
++ elm_map_zoom_set(data, wd->zoom + zoom_diff);
++ wd->paused = EINA_FALSE;
++ wd->mode = temp;
+ }
- }
- }
-
++ else
++ {
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
++=======
+static void
- _parse_name(void *data)
++_grid_viewport_get(Grid *g, int *x, int *y, int *w, int *h)
+{
- Elm_Map_Name *n = (Elm_Map_Name*)data;
- if (!n || !n->ud.fname) return;
++ EINA_SAFETY_ON_NULL_RETURN(g);
++ int xx, yy, ww, hh;
++ Evas_Coord px, py, vw, vh;
+
- FILE *f;
++ _pan_geometry_get(g->wd, &px, &py);
++ _viewport_size_get(g->wd, &vw, &vh);
++ if (px > 0) px = 0;
++ if (py > 0) py = 0;
+
- Name_Dump dump = {0, NULL, 0.0, 0.0};
++ xx = (-px / g->wd->size.tile) - 1;
++ if (xx < 0) xx = 0;
+
- f = fopen(n->ud.fname, "rb");
- if (f)
- {
- long sz;
++ yy = (-py / g->wd->size.tile) - 1;
++ if (yy < 0) yy = 0;
+
- fseek(f, 0, SEEK_END);
- sz = ftell(f);
- if (sz > 0)
- {
- char *buf;
++ ww = (vw / g->wd->size.tile) + 3;
++ if (xx + ww >= g->tw) ww = g->tw - xx;
+
- fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
- if (buf)
- {
- if (fread(buf, 1, sz, f))
- {
- eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump);
- free(buf);
- }
- }
- }
- fclose(f);
++ hh = (vh / g->wd->size.tile) + 3;
++ if (yy + hh >= g->th) hh = g->th - yy;
+
- if (dump.address)
- {
- INF("[%lf : %lf] ADDRESS : %s", n->lon, n->lat, dump.address);
- n->address = strdup(dump.address);
- }
- n->lon = dump.lon;
- n->lat = dump.lat;
- }
++ if (x) *x = xx;
++ if (y) *y = yy;
++ if (w) *w = ww;
++ if (h) *h = hh;
+}
+
- Grid *_get_current_grid(Widget_Data *wd)
++static void
++_grid_unload(Grid *g)
+{
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
- Eina_List *l;
- Grid *g = NULL, *ret = NULL;
- EINA_LIST_FOREACH(wd->grids, l, g)
++ EINA_SAFETY_ON_NULL_RETURN(g);
++ Eina_Iterator *it;
++ Eina_Matrixsparse_Cell *cell;
++ Grid_Item *gi;
++
++ it = eina_matrixsparse_iterator_new(g->grid);
++ EINA_ITERATOR_FOREACH(it, cell)
+ {
- if (wd->zoom == g->zoom)
- {
- ret = g;
- break;
- }
++ gi = eina_matrixsparse_cell_data_get(cell);
++ _grid_item_unload(gi);
+ }
- return ret;
++ eina_iterator_free(it);
+}
+
- static Eina_Bool
- _route_complete_cb(void *data, int ev_type __UNUSED__, void *event)
++static void
++_grid_load(Grid *g)
+{
- Ecore_Con_Event_Url_Complete *ev = event;
- Elm_Map_Route *r = (Elm_Map_Route*)data;
- Widget_Data *wd = r->wd;
-
- if ((!r) || (!ev)) return EINA_TRUE;
- Elm_Map_Route *rr = ecore_con_url_data_get(r->con_url);
- ecore_con_url_data_set(r->con_url, NULL);
- if (r!=rr) return EINA_TRUE;
++ EINA_SAFETY_ON_NULL_RETURN(g);
++ int x, y, xx, yy, ww, hh;
++ Eina_Iterator *it;
++ Eina_Matrixsparse_Cell *cell;
++ Grid_Item *gi;
+
- if (r->ud.fd) fclose(r->ud.fd);
- _parse_kml(r);
++ it = eina_matrixsparse_iterator_new(g->grid);
++ EINA_ITERATOR_FOREACH(it, cell)
++ {
++ gi = eina_matrixsparse_cell_data_get(cell);
++ if (!_grid_item_intersect(gi)) _grid_item_unload(gi);
++ }
++ eina_iterator_free(it);
+
- if (wd->grids)
++ _grid_viewport_get(g, &xx, &yy, &ww, &hh);
++ for (y = yy; y < yy + hh; y++)
+ {
- Grid *g;
- Evas_Coord ox, oy, ow, oh;
- evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
- g = _get_current_grid(wd);
- route_place(wd->obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
++ for (x = xx; x < xx + ww; x++)
++ {
++ gi = eina_matrixsparse_data_idx_get(g->grid, y, x);
++ if (!gi) gi = _grid_item_create(g, x, y);
++ _grid_item_load(gi);
++>>>>>>> remotes/origin/upstream
++ }
+ }
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
- "elm,state,busy,stop", "elm");
- evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOADED, NULL);
- return EINA_TRUE;
+}
+
- static Eina_Bool
- _name_complete_cb(void *data, int ev_type __UNUSED__, void *event)
++static void
++<<<<<<< HEAD
++_rect_resize_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
- Ecore_Con_Event_Url_Complete *ev = event;
- Elm_Map_Name *n = (Elm_Map_Name*)data;
- Widget_Data *wd = n->wd;
-
- if ((!n) || (!ev)) return EINA_TRUE;
- Elm_Map_Name *nn = ecore_con_url_data_get(n->con_url);
- ecore_con_url_data_set(n->con_url, NULL);
- if (n!=nn) return EINA_TRUE;
-
- if (n->ud.fd) fclose(n->ud.fd);
- _parse_name(n);
++ ELM_CHECK_WIDTYPE(data, widtype);
++ Widget_Data *wd = elm_widget_data_get(data);
++ int x, y, w, h;
+
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
- "elm,state,busy,stop", "elm");
- evas_object_smart_callback_call(wd->obj, SIG_NAME_LOADED, NULL);
- return EINA_TRUE;
++ evas_object_geometry_get(wd->rect, &x, &y, &w, &h);
++ evas_object_geometry_get(wd->pan_smart, &x, &y, &w, &h);
++ evas_object_resize(wd->rect, w, h);
++ evas_object_move(wd->rect, x, y);
+}
+
- static Elm_Map_Name *
- _utils_convert_name(const Evas_Object *obj, int method, char *address, double lon, double lat)
++static void
++_del_hook(Evas_Object *obj)
+{
- ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
- char buf[PATH_MAX];
- char *source;
- int fd;
-
- if ((!wd) || (!wd->src)) return NULL;
- Elm_Map_Name *name = ELM_NEW(Elm_Map_Name);
- if (!name) return NULL;
++ Elm_Map_Group_Class *group_clas;
++ Elm_Map_Marker_Class *marker_clas;
++ Eina_List *l;
++ Evas_Object *p;
++ Path_Node *n;
++ Path_Waypoint *w;
++ Ecore_Event_Handler *h;
++ Elm_Map_Route *r;
++ Elm_Map_Name *na;
++ Evas_Object *route;
+
- snprintf(buf, sizeof(buf), DEST_NAME_XML_FILE);
- fd = mkstemp(buf);
- if (fd < 0)
++ if (!wd) return;
++ EINA_LIST_FREE(wd->groups_clas, group_clas)
+ {
- free(name);
- return NULL;
++ if (group_clas->style)
++ eina_stringshare_del(group_clas->style);
++ free(group_clas);
+ }
+
- name->con_url = ecore_con_url_new(NULL);
- name->ud.fname = strdup(buf);
- INF("xml file : %s", name->ud.fname);
-
- name->ud.fd = fdopen(fd, "w+");
- if ((!name->con_url) || (!name->ud.fd))
++ EINA_LIST_FREE(wd->markers_clas, marker_clas)
+ {
- ecore_con_url_free(name->con_url);
- free(name);
- return NULL;
++ if (marker_clas->style)
++ eina_stringshare_del(marker_clas->style);
++ free(marker_clas);
+ }
+
- name->wd = wd;
- name->handler = ecore_event_handler_add (ECORE_CON_EVENT_URL_COMPLETE, _name_complete_cb, name);
- name->method = method;
- if (method == ELM_MAP_NAME_METHOD_SEARCH) name->address = strdup(address);
- else if (method == ELM_MAP_NAME_METHOD_REVERSE) name->address = NULL;
- name->lon = lon;
- name->lat = lat;
++ EINA_LIST_FOREACH(wd->route, l, r)
++ {
++ EINA_LIST_FREE(r->path, p)
++ {
++ evas_object_del(p);
++ }
+
- source = wd->src->name_url_cb(wd->obj, method, address, lon, lat);
- INF("name url = %s", source);
++ EINA_LIST_FREE(r->waypoint, w)
++ {
++ if (w->point) eina_stringshare_del(w->point);
++ free(w);
++ }
+
- wd->names = eina_list_append(wd->names, name);
- ecore_con_url_url_set(name->con_url, source);
- ecore_con_url_fd_set(name->con_url, fileno(name->ud.fd));
- ecore_con_url_data_set(name->con_url, name);
++ EINA_LIST_FREE(r->nodes, n)
++ {
++ if (n->pos.address) eina_stringshare_del(n->pos.address);
++ free(n);
++ }
+
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
- "elm,state,busy,start", "elm");
- evas_object_smart_callback_call(wd->obj, SIG_NAME_LOAD, NULL);
- ecore_con_url_get(name->con_url);
- if (source) free(source);
-
- return name;
++ EINA_LIST_FREE(r->handlers, h)
++ {
++ ecore_event_handler_del(h);
++ }
+
- }
++ if (r->con_url) ecore_con_url_free(r->con_url);
++ if (r->info.nodes) eina_stringshare_del(r->info.nodes);
++ if (r->info.waypoints) eina_stringshare_del(r->info.waypoints);
++ }
+
- static Evas_Event_Flags
- zoom_start_cb(void *data, void *event_info __UNUSED__)
- {
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++ EINA_LIST_FREE(wd->names, na)
++ {
++ if (na->address) free(na->address);
++ if (na->handler) ecore_event_handler_del(na->handler);
++ if (na->ud.fname)
++ {
++ ecore_file_remove(na->ud.fname);
++ free(na->ud.fname);
++ na->ud.fname = NULL;
++ }
++ }
+
- // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
- elm_smart_scroller_hold_set(wd->scr, 1);
- elm_smart_scroller_freeze_set(wd->scr, 1);
- _scr_drag_start(wd->obj, NULL, NULL);
++ EINA_LIST_FREE(wd->track, route)
++ {
++ evas_object_del(route);
++ }
+
- wd->pinch.diff += 0.001;
++ if (wd->map) evas_map_free(wd->map);
++ if (wd->source_names) free(wd->source_names);
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
++ if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
++ if (wd->long_timer) ecore_timer_del(wd->long_timer);
++ if (wd->user_agent) eina_stringshare_del(wd->user_agent);
++ if (wd->ua) eina_hash_free(wd->ua);
++ if (wd->markers) free(wd->markers);
+
- return EVAS_EVENT_FLAG_NONE;
++ free(wd);
+}
+
- static Evas_Event_Flags
- zoom_end_cb(void *data, void *event_info __UNUSED__)
++static void
++_del_pre_hook(Evas_Object *obj)
+{
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
-
- // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
- elm_smart_scroller_hold_set(wd->scr, 0);
- elm_smart_scroller_freeze_set(wd->scr, 0);
- _scr_drag_stop(wd->obj, NULL, NULL);
-
- wd->pinch.diff = wd->pinch.level;
-
- return EVAS_EVENT_FLAG_NONE;
- }
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ Marker_Group *group;
++ Elm_Map_Marker *marker;
++ int i;
++ Eina_Bool free_marker = EINA_TRUE;
++ Eina_List *l;
+
- static Evas_Event_Flags
- zoom_cb(void *data, void *event_info)
++ if (!wd) return;
++ grid_clear_all(obj);
++ for (i = 0; i <= wd->zoom_max; i++)
++ {
++ if (!wd->markers[i]) continue;
++ Eina_Iterator *it = eina_matrixsparse_iterator_new(wd->markers[i]);
++=======
++_grid_place(Widget_Data *wd)
+{
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ Eina_List *l;
++ Grid *g;
+
- if (!wd->paused)
++ EINA_LIST_FOREACH(wd->grids, l, g)
+ {
- int zoom_diff = 0;
- int x, y, w, h;
- Elm_Gesture_Zoom_Info *ei = event_info;
- evas_object_geometry_get(wd->obj, &x, &y, &w, &h);
-
- wd->pinch.level = wd->pinch.diff * ei->zoom;
- wd->pinch.cx = x + ((double)w * 0.5);
- wd->pinch.cy = y + ((double)h * 0.5);
-
- if (wd->pinch.level > 1.999 || wd->pinch.level < 1.001)
- {
- if (wd->pinch.level > 1.999)
- {
- zoom_diff = 1;
- wd->pinch.diff = wd->pinch.level / 2.0;
- wd->pinch.level = wd->pinch.level / 2.0;
- }
- else if (wd->pinch.level < 1.001)
- {
- zoom_diff = -1;
- wd->pinch.diff = wd->pinch.level * 2.0;
- wd->pinch.level = wd->pinch.level * 2.0;
- }
- Elm_Map_Zoom_Mode temp;
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, NULL, wd); // ei->zoom is refreshed
- temp = wd->mode;
- wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
- wd->paused = EINA_TRUE;
- elm_map_zoom_set(wd->obj, wd->zoom + zoom_diff);
- wd->paused = EINA_FALSE;
- wd->mode = temp;
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, zoom_cb, wd); // ei->zoom is refreshed
- }
- else
- {
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
- }
- evas_object_smart_callback_call(wd->obj, SIG_ZOOM_CHANGE, NULL);
++ if (wd->zoom == g->zoom) _grid_load(g);
++ else _grid_unload(g);
+ }
-
- // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
- _scr_scroll(wd->obj, NULL, NULL);
-
- return EVAS_EVENT_FLAG_NONE;
++ if (!wd->download_idler) wd->download_idler = ecore_idler_add(_download_job, wd);
+}
+
- static Evas_Event_Flags
- rotate_cb(void *data, void *event_info)
++static void
++_grid_all_create(Widget_Data *wd)
+{
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(wd->src_tile);
+
- if (!wd->paused)
++ int zoom;
++ for (zoom = wd->src_tile->zoom_min; zoom <= wd->src_tile->zoom_max; zoom++)
+ {
- int x, y, w, h;
- Elm_Gesture_Rotate_Info *ei = event_info;
- evas_object_geometry_get(wd->obj, &x, &y, &w, &h);
-
- wd->rotate.d = wd->rotate.a + ei->angle - ei->base_angle;
- wd->rotate.cx = x + ((double)w * 0.5);
- wd->rotate.cy = y + ((double)h * 0.5);
-
- if (wd->calc_job) ecore_job_del(wd->calc_job);
- wd->calc_job = ecore_job_add(_calc_job, wd);
++ Grid *g;
++ int tnum;
++ g = ELM_NEW(Grid);
++ g->wd = wd;
++ g->zoom = zoom;
++ tnum = pow(2.0, g->zoom);
++ g->tw = tnum;
++ g->th = tnum;
++ g->grid = eina_matrixsparse_new(g->th, g->tw, NULL, NULL);
++ wd->grids = eina_list_append(wd->grids, g);
+ }
- return EVAS_EVENT_FLAG_NONE;
+}
+
- static Evas_Event_Flags
- rotate_end_cb(void *data, void *event_info __UNUSED__)
++static void
++_grid_all_clear(Widget_Data *wd)
+{
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- wd->rotate.a = wd->rotate.d;
++ Grid *g;
++ EINA_LIST_FREE(wd->grids, g)
++ {
++ Eina_Matrixsparse_Cell *cell;
++ Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
++ EINA_ITERATOR_FOREACH(it, cell)
++ {
++ Grid_Item *gi;
++ gi = eina_matrixsparse_cell_data_get(cell);
++ if (gi) _grid_item_free(gi);
++ }
++ eina_iterator_free(it);
+
- return EVAS_EVENT_FLAG_NONE;
++ eina_matrixsparse_free(g->grid);
++ free(g);
++ }
+}
+
+static void
- _region_get(Widget_Data *wd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *w, Evas_Coord *h)
++_track_place(Widget_Data *wd)
+{
++#ifdef ELM_EMAP
+ EINA_SAFETY_ON_NULL_RETURN(wd);
- Evas_Coord sx, sy, tx, ty, tcx, tcy, sw, sh, tw, th, rw, rh;
+
- elm_smart_scroller_child_pos_get(wd->scr, &sx, &sy);
- elm_smart_scroller_child_viewport_size_get(wd->scr, &sw, &sh);
- rw = wd->size.w * wd->pinch.level;
- rh = wd->size.h * wd->pinch.level;
++ Eina_List *l;
++ Evas_Object *route;
++ int xmin, xmax, ymin, ymax;
++ Evas_Coord px, py, ow, oh;
++ px = wd->pan_x;
++ py = wd->pan_y;
++ _viewport_size_get(wd, &ow, &oh);
+
- if (wd->size.w < sw)
- {
- tw = rw;
- tcx = sx + tw/2;
- tx = sx + (sw - tw)/2;
- }
- else
- {
- tw = sw;
- tcx = (sx + tw/2) * wd->pinch.level;
- tx = tcx - tw/2;
++ Evas_Coord size = wd->size.w;
+
- }
- if (wd->size.h < sh)
++ EINA_LIST_FOREACH(wd->track, l, route)
+ {
- th = rh;
- ty = sy + (sh - th)/2;
- tcy = sy + th/2;
++ double lon_min, lon_max;
++ double lat_min, lat_max;
++ elm_route_longitude_min_max_get(route, &lon_min, &lon_max);
++ elm_route_latitude_min_max_get(route, &lat_min, &lat_max);
++ _region_to_coord_convert(wd, lon_min, lat_max, size, &xmin, &ymin);
++ _region_to_coord_convert(wd, lon_max, lat_min, size, &xmax, &ymax);
++
++ if( !(xmin < px && xmax < px) && !(xmin > px+ow && xmax > px+ow))
++ {
++ if( !(ymin < py && ymax < py) && !(ymin > py+oh && ymax > py+oh))
++ {
++ //display the route
++ evas_object_move(route, xmin - px, ymin - py);
++ evas_object_resize(route, xmax - xmin, ymax - ymin);
++
++ evas_object_raise(route);
++ _obj_rotate(wd, route);
++ evas_object_show(route);
++
++ continue;
++ }
++ }
++ //the route is not display
++ evas_object_hide(route);
+ }
- else
++#else
++ (void) wd;
++#endif
++}
++
++static void
++_delayed_do(Widget_Data *wd)
++{
++ Delayed_Data *dd;
++ dd = eina_list_nth(wd->delayed_jobs, 0);
++ if (dd && !dd->wd->zoom_animator)
+ {
- th = sw;
- tcy = (sy + th/2) * wd->pinch.level;
- ty = tcy - th/2;
++ dd->func(dd);
++ wd->delayed_jobs = eina_list_remove(wd->delayed_jobs, dd);
++ free(dd);
+ }
-
- if (x) *x = tx;
- if (y) *y = ty;
- if (cx) *cx= tcx;
- if (cy) *cy = tcy;
- if (w) *w = tw;
- if (h) *h = th;
+}
+
+static void
- _coord_rotate(const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy)
++_smooth_update(Widget_Data *wd)
+{
- EINA_SAFETY_ON_NULL_RETURN(xx);
- EINA_SAFETY_ON_NULL_RETURN(yy);
-
- double r = (degree * M_PI) / 180.0;
- double tx, ty, ttx, tty;
-
- tx = x - cx;
- ty = y - cy;
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ Eina_List *l;
++ Grid *g;
+
- ttx = tx * cos(r);
- tty = tx * sin(r);
- tx = ttx + (ty * cos(r + M_PI_2));
- ty = tty + (ty * sin(r + M_PI_2));
++ EINA_LIST_FOREACH(wd->grids, l, g)
++ {
++ Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
++>>>>>>> remotes/origin/upstream
++ Eina_Matrixsparse_Cell *cell;
+
- *xx = tx + cx;
- *yy = ty + cy;
- }
++ EINA_ITERATOR_FOREACH(it, cell)
++ {
++<<<<<<< HEAD
++ l = eina_matrixsparse_cell_data_get(cell);
++ EINA_LIST_FREE(l, group)
++ {
++ EINA_LIST_FREE(group->markers, marker)
++ {
++ evas_object_event_callback_del_full(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++ _bubble_sc_hints_changed_cb, group);
++ if (free_marker) free(marker);
++ }
++ free(group);
++ }
++ free_marker = EINA_FALSE;
++ }
++ eina_iterator_free(it);
++ eina_matrixsparse_free(wd->markers[i]);
++ }
+
- #endif
++ evas_object_del(wd->sep_maps_markers);
++ evas_object_del(wd->pan_smart);
++ wd->pan_smart = NULL;
++}
+
- EAPI Evas_Object *
- elm_map_add(Evas_Object *parent)
++static void
++_on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
+{
- #ifdef HAVE_ELEMENTARY_ECORE_CON
- Evas *e;
- Widget_Data *wd;
- Evas_Coord minw, minh;
- Evas_Object *obj;
- static Evas_Smart *smart = NULL;
- Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
-
- ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
-
- ELM_SET_WIDTYPE(widtype, "map");
- elm_widget_type_set(obj, "map");
- elm_widget_sub_object_add(parent, obj);
- elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
- elm_widget_data_set(obj, wd);
- elm_widget_del_hook_set(obj, _del_hook);
- elm_widget_del_pre_hook_set(obj, _del_pre_hook);
- elm_widget_theme_hook_set(obj, _theme_hook);
- elm_widget_can_focus_set(obj, EINA_TRUE);
- elm_widget_event_hook_set(obj, _event_hook);
-
- wd->scr = elm_smart_scroller_add(e);
- elm_smart_scroller_widget_set(wd->scr, obj);
- elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", "default");
- evas_object_smart_callback_add(wd->scr, "scroll", _scr, obj);
- evas_object_smart_callback_add(wd->scr, "drag", _scr, obj);
- elm_widget_resize_object_set(obj, wd->scr);
- elm_smart_scroller_wheel_disabled_set(wd->scr, EINA_TRUE);
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
+
- evas_object_smart_callback_add(wd->scr, "animate,start", _scr_anim_start, obj);
- evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, obj);
- evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj);
- evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj);
- evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj);
++ if (!wd) return;
++ if (elm_widget_focus_get(obj))
++ {
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,focus", "elm");
++ evas_object_focus_set(wd->obj, EINA_TRUE);
++ }
++ else
++ {
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,unfocus", "elm");
++ evas_object_focus_set(wd->obj, EINA_FALSE);
++=======
++ Grid_Item *gi = eina_matrixsparse_cell_data_get(cell);
++ if (_grid_item_intersect(gi))
++ evas_object_image_smooth_scale_set(gi->img, EINA_TRUE);
++ }
++ eina_iterator_free(it);
++ }
++}
+
- elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce);
++static Eina_Bool
++_zoom_timeout(void *data)
++{
++ EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
++ Widget_Data *wd = data;
++ _smooth_update(wd);
++ wd->zoom_timer = NULL;
++ evas_object_smart_callback_call(wd->obj, SIG_ZOOM_STOP, NULL);
++ return ECORE_CALLBACK_CANCEL;
++}
+
- wd->zoom_min = 0xFF;
- wd->zoom_max = 0X00;
- source_init(obj);
++static void
++zoom_do(Widget_Data *wd, double zoom)
++{
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ if (zoom > wd->zoom_max) zoom = wd->zoom_max;
++ else if (zoom < wd->zoom_min) zoom = wd->zoom_min;
+
- wd->obj = obj;
- wd->map = evas_map_new(4);
- if (!wd->map) return NULL;
++ Evas_Coord px, py, vw, vh;
++ Evas_Coord ow, oh;
+
- wd->markers_max_num = 30;
- wd->pinch.level = 1.0;
- wd->pinch.diff = 1.0;
- wd->markers = calloc(wd->zoom_max + 1, sizeof(void*));
++ wd->zoom = ROUND(zoom);
++ wd->zoom_detail = zoom;
++ ow = wd->size.w;
++ oh = wd->size.h;
++ wd->size.tile = pow(2.0, (zoom - wd->zoom)) * wd->tsize;
++ wd->size.w = pow(2.0, wd->zoom) * wd->size.tile;
++ wd->size.h = wd->size.w;;
++
++ // Fix to zooming with (viewport center px, py) as the center to prevent
++ // from zooming with (0,0) as the cetner. (scroller default behavior)
++ _pan_geometry_get(wd, &px, &py);
++ _viewport_size_get(wd, &vw, &vh);
++ if ((vw > 0) && (vh > 0) && (ow > 0) && (oh > 0))
++ {
++ Evas_Coord xx, yy;
++ double sx, sy;
++ if (vw > ow) sx = 0.5;
++ else sx = (double)(-px + (vw / 2)) / ow;
++ if (vh > oh) sy = 0.5;
++ else sy = (double)(-py + (vh / 2)) / oh;
++
++ if (sx > 1.0) sx = 1.0;
++ if (sy > 1.0) sy = 1.0;
++
++ xx = (sx * wd->size.w) - (vw / 2);
++ yy = (sy * wd->size.h) - (vh / 2);
++ if (xx < 0) xx = 0;
++ else if (xx > (wd->size.w - vw)) xx = wd->size.w - vw;
++ if (yy < 0) yy = 0;
++ else if (yy > (wd->size.h - vh)) yy = wd->size.h - vh;
++ elm_smart_scroller_child_region_show(wd->scr, xx, yy, vw, vh);
++ }
++ if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
++ else evas_object_smart_callback_call(wd->obj, SIG_ZOOM_START, NULL);
++ wd->zoom_timer = ecore_timer_add(0.25, _zoom_timeout, wd);
++ evas_object_smart_callback_call(wd->obj, SIG_ZOOM_CHANGE, NULL);
++
++ evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
++ evas_object_smart_changed(wd->pan_smart);
++}
+
- evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
- evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj);
- evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, obj);
- evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, obj);
++static Eina_Bool
++_zoom_anim(void *data)
++{
++ Widget_Data *wd = data;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, ECORE_CALLBACK_CANCEL);
+
- if (!smart)
++ if (wd->ani.cnt <= 0)
+ {
- static Evas_Smart_Class sc;
-
- evas_object_smart_clipped_smart_set(&_pan_sc);
- sc = _pan_sc;
- sc.name = "elm_map_pan";
- sc.version = EVAS_SMART_CLASS_VERSION;
- sc.add = _pan_add;
- sc.del = _pan_del;
- sc.resize = _pan_resize;
- sc.move = _pan_move;
- sc.calculate = _pan_calculate;
- smart = evas_smart_class_new(&sc);
++ wd->zoom_animator = NULL;
++ evas_object_smart_changed(wd->pan_smart);
++ return ECORE_CALLBACK_CANCEL;
+ }
- if (smart)
++ else
+ {
- wd->pan_smart = evas_object_smart_add(e, smart);
- wd->pan = evas_object_smart_data_get(wd->pan_smart);
- wd->pan->wd = wd;
++ wd->ani.zoom += wd->ani.diff;
++ wd->ani.cnt--;
++ zoom_do(wd, wd->ani.zoom);
++ return ECORE_CALLBACK_RENEW;
++>>>>>>> remotes/origin/upstream
+ }
++}
+
- elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart,
- _pan_set, _pan_get, _pan_max_get,
- _pan_min_get, _pan_child_size_get);
-
- wd->rect = evas_object_rectangle_add(e);
- evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_RESIZE,
- _rect_resize_cb, obj);
- evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_DOWN,
- _mouse_down, obj);
- evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_UP,
- _mouse_up, obj);
- evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL,
- _mouse_wheel_cb, obj);
-
- evas_object_smart_member_add(wd->rect, wd->pan_smart);
- elm_widget_sub_object_add(obj, wd->rect);
- evas_object_show(wd->rect);
- evas_object_color_set(wd->rect, 0, 0, 0, 0);
++static void
++<<<<<<< HEAD
++_theme_hook(Evas_Object *obj)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
+
- wd->ges = elm_gesture_layer_add(obj);
- if (!wd->ges) ERR("elm_gesture_layer_add() failed");
- elm_gesture_layer_attach(wd->ges, wd->rect);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START,
- zoom_start_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE,
- zoom_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END,
- zoom_end_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT,
- zoom_end_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_MOVE,
- rotate_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_END,
- rotate_end_cb, wd);
- elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_ABORT,
- rotate_end_cb, wd);
++ if (!wd) return;
++ elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", elm_widget_style_get(obj));
++ // edje_object_scale_set(wd->scr, elm_widget_scale_get(obj) * _elm_config->scale);
++ _sizing_eval(obj);
++}
+
- wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
- wd->id = ((int)getpid() << 16) | idnum;
- idnum++;
++static void
++_sizing_eval(Evas_Object *obj)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
+
- wd->tsize = 256;
- edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr),
- &minw, &minh);
++ if (!wd) return;
++ evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
+ evas_object_size_hint_min_set(obj, minw, minh);
++ evas_object_size_hint_max_set(obj, maxw, maxh);
++}
+
- wd->sep_maps_markers = evas_object_rectangle_add(evas_object_evas_get(obj));
- evas_object_smart_member_add(wd->sep_maps_markers, wd->pan_smart);
++static void
++_calc_job(void *data)
++{
++ Widget_Data *wd = data;
++ Evas_Coord minw, minh;
+
- grid_create_all(obj);
++ if (!wd) return;
++ minw = wd->size.w;
++ minh = wd->size.h;
++ if (wd->resized)
++ {
++ wd->resized = EINA_FALSE;
++ if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
++ {
++ double tz = wd->zoom;
++ wd->zoom = 0.0;
++ elm_map_zoom_set(wd->obj, tz);
++ }
++ }
++ if ((minw != wd->minw) || (minh != wd->minh))
++ {
++ wd->minw = minw;
++ wd->minh = minh;
++ evas_object_smart_callback_call(wd->pan_smart, SIG_CHANGED, NULL);
++ _sizing_eval(wd->obj);
++ }
++ wd->calc_job = NULL;
++ evas_object_smart_changed(wd->pan_smart);
++}
+
- wd->paused = EINA_TRUE;
- elm_map_zoom_set(obj, 0);
- wd->paused = EINA_FALSE;
- _sizing_eval(obj);
++static void
++_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ if (!sd) return;
++ if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
++ sd->wd->pan_x = x;
++ sd->wd->pan_y = y;
++ evas_object_smart_changed(obj);
++}
+
- // TODO: convert Elementary to subclassing of Evas_Smart_Class
- // TODO: and save some bytes, making descriptions per-class and not instance!
- evas_object_smart_callbacks_descriptions_set(obj, _signals);
++static void
++_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ if (!sd) return;
++ if (x) *x = sd->wd->pan_x;
++ if (y) *y = sd->wd->pan_y;
++}
+
- if (!ecore_file_download_protocol_available("http://"))
- {
- ERR("Ecore must be built with curl support for the map widget!");
- }
++static void
++_pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ Evas_Coord ow, oh;
++ if (!sd) return;
++ evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
++ ow = sd->wd->minw - ow;
++ if (ow < 0) ow = 0;
++ oh = sd->wd->minh - oh;
++ if (oh < 0) oh = 0;
++ if (x) *x = ow;
++ if (y) *y = oh;
++}
++
++static void
++_pan_min_get(Evas_Object *obj __UNUSED__, Evas_Coord *x, Evas_Coord *y)
++{
++ if (x) *x = 0;
++ if (y) *y = 0;
++}
++
++static void
++_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ if (!sd) return;
++ if (w) *w = sd->wd->minw;
++ if (h) *h = sd->wd->minh;
++}
++
++static void
++_pan_add(Evas_Object *obj)
++{
++ Pan *sd;
++ Evas_Object_Smart_Clipped_Data *cd;
++ _pan_sc.add(obj);
++ cd = evas_object_smart_data_get(obj);
++ if (!cd) return;
++ sd = calloc(1, sizeof(Pan));
++ if (!sd) return;
++ sd->__clipped_data = *cd;
++ free(cd);
++ evas_object_smart_data_set(obj, sd);
++}
++
++static void
++_pan_del(Evas_Object *obj)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ if (!sd) return;
++ _pan_sc.del(obj);
++}
++
++static void
++_pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ Evas_Coord ow, oh;
++ if (!sd) return;
++ evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
++ if ((ow == w) && (oh == h)) return;
++ sd->wd->resized = EINA_TRUE;
++ if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
++ sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
++}
++
++static void
++_pan_calculate(Evas_Object *obj)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ Evas_Coord ox, oy, ow, oh;
++ Eina_List *l;
++ Grid *g;
++
++ EINA_SAFETY_ON_NULL_RETURN(sd);
++ EINA_SAFETY_ON_NULL_RETURN(sd->wd);
++
++ evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
++ rect_place(sd->wd->obj, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ EINA_LIST_FOREACH(sd->wd->grids, l, g)
++ {
++ if (sd->wd->zoom == g->zoom) grid_load(sd->wd->obj, g);
++ else if (sd->wd->zoom-1 != g->zoom && sd->wd->zoom+1 != g->zoom) grid_unload(sd->wd->obj, g); // remain only adjacent grids
++ grid_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ if (sd->wd->zoom == g->zoom) marker_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ if (!sd->wd->zoom_animator) route_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ if (!sd->wd->zoom_animator) track_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++ }
++}
++
++static void
++_pan_move(Evas_Object *obj, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__)
++{
++ Pan *sd = evas_object_smart_data_get(obj);
++ if (!sd) return;
++ if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
++ sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
++}
++
++static void
++_hold_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return;
++ elm_smart_scroller_hold_set(wd->scr, 1);
++}
++
++static void
++_hold_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return;
++ elm_smart_scroller_hold_set(wd->scr, 0);
++}
++
++static void
++_freeze_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return;
++ elm_smart_scroller_freeze_set(wd->scr, 1);
++}
++
++static void
++_freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
++{
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return;
++ elm_smart_scroller_freeze_set(wd->scr, 0);
++}
++
++static void
++_scr_anim_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ evas_object_smart_callback_call(data, "scroll,anim,start", NULL);
++}
++
++static void
++_scr_anim_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ evas_object_smart_callback_call(data, "scroll,anim,stop", NULL);
++}
++
++static void
++_scr_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ wd->center_on.enabled = EINA_FALSE;
++
++ // FIXME: els_scoller sometimes give start event again & again... it confuses app. (els_scr bug?)
++ if (!wd->scr_started)
++ {
++ wd->scr_started = EINA_TRUE;
++ evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_START, NULL);
++ }
++}
++
++static void
++_scr_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Widget_Data *wd = elm_widget_data_get(data);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ wd->center_on.enabled = EINA_FALSE;
++
++ // FIXME: els_scoller sometimes give start event again & again... it confuses app. (els_scr bug?)
++ if (wd->scr_started)
++ {
++ wd->scr_started = EINA_FALSE;
++ evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_STOP, NULL);
++ }
++}
++
++static void
++_scr_scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ evas_object_smart_callback_call(data, SIG_SCROLL, NULL);
++}
++
++
++static void
++_group_object_create(Marker_Group *group)
++{
++ const char *style = "radio";
++ Evas_Object *icon = NULL;
++
++ if (group->obj) return;
++ if ((!group->clas->priv.objs_notused) || (eina_list_count(group->markers) == 1))
++ {
++ //set icon and style
++ if (eina_list_count(group->markers) == 1)
++ {
++ Elm_Map_Marker *m = eina_list_data_get(group->markers);
++ if (m->clas->style)
++ style = m->clas->style;
++
++ if (m->clas->func.icon_get)
++ icon = m->clas->func.icon_get(group->wd->obj, m, m->data);
++
++ group->delete_object = EINA_TRUE;
++ }
++ else
++ {
++ if (group->clas->style)
++ style = group->clas->style;
++
++ if (group->clas->func.icon_get)
++ icon = group->clas->func.icon_get(group->wd->obj, group->clas->data);
++
++ group->delete_object = EINA_FALSE;
++ }
++
++ group->obj = elm_layout_add(group->wd->obj);
++ elm_layout_theme_set(group->obj, "map/marker", style, elm_widget_style_get(group->wd->obj));
++
++ if (icon) elm_object_part_content_set(group->obj, "elm.icon", icon);
++
++ evas_object_smart_member_add(group->obj, group->wd->pan_smart);
++ elm_widget_sub_object_add(group->wd->obj, group->obj);
++ evas_object_stack_above(group->obj, group->wd->sep_maps_markers);
++
++ if (!group->delete_object)
++ group->clas->priv.objs_used = eina_list_append(group->clas->priv.objs_used, group->obj);
++ }
++ else
++ {
++ group->delete_object = EINA_FALSE;
++
++ group->obj = eina_list_data_get(group->clas->priv.objs_notused);
++ group->clas->priv.objs_used = eina_list_append(group->clas->priv.objs_used, group->obj);
++ group->clas->priv.objs_notused = eina_list_remove(group->clas->priv.objs_notused, group->obj);
++ evas_object_show(group->obj);
++ }
++
++ edje_object_signal_callback_add(elm_layout_edje_get(group->obj), "open", "elm", _group_open_cb, group);
++ edje_object_signal_callback_add(elm_layout_edje_get(group->obj), "bringin", "elm", _group_bringin_cb, group);
++
++ group->update_nbelems = EINA_TRUE;
++ group->update_resize = EINA_TRUE;
++ group->update_raise = EINA_TRUE;
++
++ if (group->open) _group_bubble_create(group);
++}
++
++static void
++_group_object_free(Marker_Group *group)
++{
++ if (!group->obj) return;
++ if (!group->delete_object)
++ {
++ group->clas->priv.objs_notused = eina_list_append(group->clas->priv.objs_notused, group->obj);
++ group->clas->priv.objs_used = eina_list_remove(group->clas->priv.objs_used, group->obj);
++ evas_object_hide(group->obj);
++
++ edje_object_signal_callback_del(elm_layout_edje_get(group->obj), "open", "elm", _group_open_cb);
++ edje_object_signal_callback_del(elm_layout_edje_get(group->obj), "bringin", "elm", _group_bringin_cb);
++ }
++ else
++ evas_object_del(group->obj);
++
++ group->obj = NULL;
++ _group_bubble_free(group);
++}
++
++static void
++_group_bubble_mouse_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ Marker_Group *group = data;
++
++ if (!evas_object_above_get(group->rect)) return;
++ evas_object_raise(group->bubble);
++ evas_object_raise(group->sc);
++ evas_object_raise(group->rect);
++}
++
++static void
++_group_bubble_create(Marker_Group *group)
++{
++ if (group->bubble) return;
++
++ group->wd->opened_bubbles = eina_list_append(group->wd->opened_bubbles, group);
++ group->bubble = edje_object_add(evas_object_evas_get(group->obj));
++ _elm_theme_object_set(group->wd->obj, group->bubble, "map", "marker_bubble",
++ elm_widget_style_get(group->wd->obj));
++ evas_object_smart_member_add(group->bubble,
++ group->wd->obj);
++ elm_widget_sub_object_add(group->wd->obj, group->bubble);
++
++ _group_bubble_content_free(group);
++ if (!_group_bubble_content_update(group))
+ {
- gi->wd->download_list = eina_list_remove(gi->wd->download_list, gi);
- gi->wd->download_list = eina_list_append(gi->wd->download_list, gi);
++ //no content, we can delete the bubble
++ _group_bubble_free(group);
++ return;
++ }
++
++ group->rect = evas_object_rectangle_add(evas_object_evas_get(group->obj));
++ evas_object_color_set(group->rect, 0, 0, 0, 0);
++ evas_object_repeat_events_set(group->rect, EINA_TRUE);
++ evas_object_smart_member_add(group->rect, group->wd->obj);
++ elm_widget_sub_object_add(group->wd->obj, group->rect);
++
++ evas_object_event_callback_add(group->rect, EVAS_CALLBACK_MOUSE_UP, _group_bubble_mouse_up_cb, group);
++
++ _group_bubble_place(group);
++}
++
++static void _bubble_sc_hints_changed_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
++{
++ _group_bubble_place(data);
++}
++
++static int
++_group_bubble_content_update(Marker_Group *group)
++{
++ Eina_List *l;
++ Elm_Map_Marker *marker;
++ int i = 0;
++
++ if (!group->bubble) return 1;
++
++ if (!group->sc)
++ {
++ group->sc = elm_scroller_add(group->bubble);
++ elm_widget_style_set(group->sc, "map_bubble");
++ elm_scroller_content_min_limit(group->sc, EINA_FALSE, EINA_TRUE);
++ elm_scroller_policy_set(group->sc, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
++ elm_scroller_bounce_set(group->sc, _elm_config->thumbscroll_bounce_enable, EINA_FALSE);
++ edje_object_part_swallow(group->bubble, "elm.swallow.content", group->sc);
++ evas_object_show(group->sc);
++ evas_object_smart_member_add(group->sc,
++ group->wd->obj);
++ elm_widget_sub_object_add(group->wd->obj, group->sc);
++
++ group->bx = elm_box_add(group->bubble);
++ evas_object_size_hint_align_set(group->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
++ evas_object_size_hint_weight_set(group->bx, 0.5, 0.5);
++ elm_box_horizontal_set(group->bx, EINA_TRUE);
++ evas_object_show(group->bx);
++
++ elm_object_content_set(group->sc, group->bx);
++
++ evas_object_event_callback_add(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++ _bubble_sc_hints_changed_cb, group);
++ }
++
++ EINA_LIST_FOREACH(group->markers, l, marker)
++ {
++ if (i >= group->wd->markers_max_num) break;
++ if ((!marker->content) && (marker->clas->func.get))
++ marker->content = marker->clas->func.get(group->wd->obj, marker, marker->data);
++ else if (marker->content)
++ elm_box_unpack(group->bx, marker->content);
++ if (marker->content)
++ {
++ elm_box_pack_end(group->bx, marker->content);
++ i++;
++ }
+ }
++ return i;
+ }
+
+ static void
-_grid_item_unload(Grid_Item *gi)
++_group_bubble_content_free(Marker_Group *group)
+ {
- EINA_SAFETY_ON_NULL_RETURN(gi);
- if (gi->file_have)
++ Eina_List *l;
++ Elm_Map_Marker *marker;
++
++ if (!group->sc) return;
++ EINA_LIST_FOREACH(group->markers, l, marker)
+ {
- evas_object_hide(gi->img);
- evas_object_image_file_set(gi->img, NULL, NULL);
++ if ((marker->content) && (marker->clas->func.del))
++ marker->clas->func.del(group->wd->obj, marker, marker->data, marker->content);
++ else if (marker->content)
++ evas_object_del(marker->content);
++ marker->content = NULL;
+ }
- else if (gi->job)
++ evas_object_del(group->sc);
++ group->sc = NULL;
++}
++
++static void
++_group_bubble_free(Marker_Group *group)
++{
++ if (!group->bubble) return;
++ group->wd->opened_bubbles = eina_list_remove(group->wd->opened_bubbles, group);
++ evas_object_event_callback_del_full(group->sc, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
++ _bubble_sc_hints_changed_cb, group);
++ evas_object_del(group->bubble);
++ evas_object_del(group->rect);
++ group->bubble = NULL;
++ _group_bubble_content_free(group);
++}
++
++static void
++_group_bubble_place(Marker_Group *group)
++{
++ Evas_Coord x, y, w;
++ Evas_Coord xx, yy, ww, hh;
++ const char *s;
++
++ if ((!group->bubble) || (!group->obj)) return;
++
++ evas_object_geometry_get(group->obj, &x, &y, &w, NULL);
++ edje_object_size_min_calc(group->bubble, NULL, &hh);
++
++ s = edje_object_data_get(group->bubble, "size_w");
++ if (s) ww = atoi(s);
++ else ww = 0;
++ xx = x + w / 2 - ww / 2;
++ yy = y-hh;
++
++ evas_object_move(group->bubble, xx, yy);
++ evas_object_resize(group->bubble, ww, hh);
++ obj_rotate_zoom(group->wd->obj, group->bubble);
++ evas_object_show(group->bubble);
++
++ evas_object_move(group->rect, xx, yy);
++ evas_object_resize(group->rect, ww, hh);
++ obj_rotate_zoom(group->wd->obj, group->rect);
++ evas_object_show(group->rect);
++}
++
++static void
++_group_bringin_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
++{
++ Marker_Group *group = data;
++ Elm_Map_Marker *marker = eina_list_data_get(group->markers);
++ if (!marker) return;
++ group->bringin = EINA_TRUE;
++ elm_map_geo_region_bring_in(group->wd->obj, marker->longitude, marker->latitude);
++}
++
++static void
++_group_open_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *soure __UNUSED__)
++{
++ Marker_Group *group = data;
++
++ if (group->bringin)
+ {
- ecore_file_download_abort(gi->job);
- ecore_file_remove(gi->file);
- gi->job = NULL;
- gi->wd->try_num--;
++ group->bringin = EINA_FALSE;
++ return;
+ }
- else gi->wd->download_list = eina_list_remove(gi->wd->download_list, gi);
+
++ if (group->bubble)
++ {
++ group->open = EINA_FALSE;
++ _group_bubble_free(group);
++ return;
++ }
++ group->open = EINA_TRUE;
++ _group_bubble_create(group);
+ }
+
-static Grid_Item *
-_grid_item_create(Grid *g, Evas_Coord x, Evas_Coord y)
++static Eina_Bool
++_event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
+ {
- EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
- char buf[PATH_MAX];
- char buf2[PATH_MAX];
- char *url;
- Grid_Item *gi;
++ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++ Widget_Data *wd = elm_widget_data_get(obj);
++ int zoom;
++ Evas_Coord x = 0;
++ Evas_Coord y = 0;
++ Evas_Coord step_x = 0;
++ Evas_Coord step_y = 0;
++ Evas_Coord v_w = 0;
++ Evas_Coord v_h = 0;
++ Evas_Coord page_x = 0;
++ Evas_Coord page_y = 0;
++
++ if (!wd) return EINA_FALSE;
++ if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
++ Evas_Event_Key_Down *ev = event_info;
++ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
+
- gi = ELM_NEW(Grid_Item);
- gi->wd = g->wd;
- gi->g = g;
- gi->x = x;
- gi->y = y;
++ elm_smart_scroller_child_pos_get(wd->scr, &x, &y);
++ elm_smart_scroller_step_size_get(wd->scr, &step_x, &step_y);
++ elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
++ elm_smart_scroller_child_viewport_size_get(wd->scr, &v_w, &v_h);
+
- gi->file_have = EINA_FALSE;
- gi->job = NULL;
++ if ((!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left")))
++ {
++ x -= step_x;
++ }
++ else if ((!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, "KP_Right")))
++ {
++ x += step_x;
++ }
++ else if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")))
++ {
++ y -= step_y;
++ }
++ else if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")))
++ {
++ y += step_y;
++ }
++ else if ((!strcmp(ev->keyname, "Prior")) || (!strcmp(ev->keyname, "KP_Prior")))
++ {
++ if (page_y < 0)
++ y -= -(page_y * v_h) / 100;
++ else
++ y -= page_y;
++ }
++ else if ((!strcmp(ev->keyname, "Next")) || (!strcmp(ev->keyname, "KP_Next")))
++ {
++ if (page_y < 0)
++ y += -(page_y * v_h) / 100;
++ else
++ y += page_y;
++ }
++ else if (!strcmp(ev->keyname, "KP_Add"))
++ {
++ zoom = elm_map_zoom_get(obj) + 1;
++ elm_map_zoom_mode_set(obj, ELM_MAP_ZOOM_MODE_MANUAL);
++ elm_map_zoom_set(obj, zoom);
++ return EINA_TRUE;
++ }
++ else if (!strcmp(ev->keyname, "KP_Subtract"))
++ {
++ zoom = elm_map_zoom_get(obj) - 1;
++ elm_map_zoom_mode_set(obj, ELM_MAP_ZOOM_MODE_MANUAL);
++ elm_map_zoom_set(obj, zoom);
++ return EINA_TRUE;
++ }
++ else return EINA_FALSE;
+
- gi->img = evas_object_image_add(evas_object_evas_get(g->wd->obj));
- evas_object_image_smooth_scale_set(gi->img, EINA_FALSE);
- evas_object_image_scale_hint_set(gi->img, EVAS_IMAGE_SCALE_HINT_DYNAMIC);
- evas_object_image_filled_set(gi->img, 1);
- evas_object_smart_member_add(gi->img, g->wd->pan_smart);
- evas_object_pass_events_set(gi->img, EINA_TRUE);
- evas_object_stack_below(gi->img, g->wd->sep_maps_markers);
++ ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
++ elm_smart_scroller_child_pos_set(wd->scr, x, y);
+
- snprintf(buf, sizeof(buf), CACHE_TILE_ROOT, g->wd->id, g->zoom, x);
- snprintf(buf2, sizeof(buf2), CACHE_TILE_PATH, buf, y);
- if (!ecore_file_exists(buf)) ecore_file_mkpath(buf);
++ return EINA_TRUE;
++}
+
- eina_stringshare_replace(&gi->file, buf2);
- url = g->wd->src_tile->url_cb(g->wd->obj, x, y, g->zoom);
- if ((!url) || (!strlen(url)))
++static Eina_Bool
++cb_dump_name_attrs(void *data, const char *key, const char *value)
++{
++ Name_Dump *dump = (Name_Dump*)data;
++ if (!dump) return EINA_FALSE;
++
++ if (!strncmp(key, NOMINATIM_ATTR_LON, sizeof(NOMINATIM_ATTR_LON))) dump->lon = atof(value);
++ else if (!strncmp(key, NOMINATIM_ATTR_LAT, sizeof(NOMINATIM_ATTR_LAT))) dump->lat = atof(value);
++
++ return EINA_TRUE;
++}
++
++
++static Eina_Bool
++cb_route_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
++{
++ Route_Dump *dump = data;
++ if (!dump) return EINA_FALSE;
++
++ switch (type)
+ {
- eina_stringshare_replace(&gi->url, NULL);
- ERR("Getting source url failed: %s", gi->file);
++ case EINA_SIMPLE_XML_OPEN:
++ case EINA_SIMPLE_XML_OPEN_EMPTY:
++ {
++ const char *attrs;
++
++ attrs = eina_simple_xml_tag_attributes_find(value, length);
++ if (!attrs)
++ {
++ if (!strncmp(value, YOURS_DISTANCE, length)) dump->id = ROUTE_XML_DISTANCE;
++ else if (!strncmp(value, YOURS_DESCRIPTION, length)) dump->id = ROUTE_XML_DESCRIPTION;
++ else if (!strncmp(value, YOURS_COORDINATES, length)) dump->id = ROUTE_XML_COORDINATES;
++ else dump->id = ROUTE_XML_NONE;
++ }
++ }
++ break;
++ case EINA_SIMPLE_XML_DATA:
++ {
++ char *buf = malloc(length);
++ if (!buf) return EINA_FALSE;
++ snprintf(buf, length, "%s", value);
++ if (dump->id == ROUTE_XML_DISTANCE) dump->distance = atof(buf);
++ else if (!(dump->description) && (dump->id == ROUTE_XML_DESCRIPTION)) dump->description = strdup(buf);
++ else if (dump->id == ROUTE_XML_COORDINATES) dump->coordinates = strdup(buf);
++ free(buf);
++ }
++ break;
++ default:
++ break;
++ }
++
++ return EINA_TRUE;
++}
++
++static Eina_Bool
++cb_name_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
++{
++ Name_Dump *dump = data;
++ if (!dump) return EINA_FALSE;
++
++ switch (type)
++ {
++ case EINA_SIMPLE_XML_OPEN:
++ case EINA_SIMPLE_XML_OPEN_EMPTY:
++ {
++ const char *attrs;
++ attrs = eina_simple_xml_tag_attributes_find(value, length);
++ if (attrs)
++ {
++ if (!strncmp(value, NOMINATIM_RESULT, sizeof(NOMINATIM_RESULT) - 1)) dump->id = NAME_XML_NAME;
++ else dump->id = NAME_XML_NONE;
++
++ eina_simple_xml_attributes_parse
++ (attrs, length - (attrs - value), cb_dump_name_attrs, dump);
++ }
++ }
++ break;
++ case EINA_SIMPLE_XML_DATA:
++ {
++ char *buf = malloc(length + 1);
++ if (!buf) return EINA_FALSE;
++ snprintf(buf, length + 1, "%s", value);
++ if (dump->id == NAME_XML_NAME) dump->address = strdup(buf);
++ free(buf);
++ }
++ break;
++ default:
++ break;
+ }
- else eina_stringshare_replace(&gi->url, url);
- if (url) free(url);
- eina_matrixsparse_data_idx_set(g->grid, y, x, gi);
- return gi;
-}
+
-static void
-_grid_item_free(Grid_Item *gi)
-{
- EINA_SAFETY_ON_NULL_RETURN(gi);
- _grid_item_unload(gi);
- if (gi->g && gi->g->grid) eina_matrixsparse_data_idx_set(gi->g->grid,
- gi->y, gi->x, NULL);
- if (gi->url) eina_stringshare_del(gi->url);
- if (gi->file) eina_stringshare_del(gi->file);
- if (gi->img) evas_object_del(gi->img);
- if (gi->file_have) ecore_file_remove(gi->file);
- free(gi);
++ return EINA_TRUE;
+ }
+
+ static void
-_downloaded_cb(void *data, const char *file __UNUSED__, int status)
++_parse_kml(void *data)
+ {
- Grid_Item *gi = data;
++ Elm_Map_Route *r = (Elm_Map_Route*)data;
++ if (!r || !r->ud.fname) return;
+
- if (status == 200)
- {
- DBG("Download success from %s to %s", gi->url, gi->file);
- _grid_item_update(gi);
- gi->wd->finish_num++;
- evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOADED, NULL);
- }
- else
- {
- WRN("Download failed from %s to %s (%d) ", gi->url, gi->file, status);
- ecore_file_remove(gi->file);
- gi->file_have = EINA_FALSE;
- evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOADED_FAIL, NULL);
- }
++ FILE *f;
++ char **str;
++ unsigned int ele, idx;
++ double lon, lat;
++ Evas_Object *path;
+
- gi->job = NULL;
- gi->wd->download_num--;
- if (!gi->wd->download_num)
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(gi->wd->scr),
- "elm,state,busy,stop", "elm");
-}
++ Route_Dump dump = {0, r->ud.fname, 0.0, NULL, NULL};
+
-static Eina_Bool
-_download_job(void *data)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
- Widget_Data *wd = data;
++ f = fopen(r->ud.fname, "rb");
++ if (f)
++ {
++ long sz;
+
- Eina_List *l, *ll;
- Grid_Item *gi;
++ fseek(f, 0, SEEK_END);
++ sz = ftell(f);
++ if (sz > 0)
++ {
++ char *buf;
+
- if (!eina_list_count(wd->download_list))
- {
- wd->download_idler = NULL;
- return ECORE_CALLBACK_CANCEL;
- }
++ fseek(f, 0, SEEK_SET);
++ buf = malloc(sz);
++ if (buf)
++ {
++ if (fread(buf, 1, sz, f))
++ {
++ eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump, &dump);
++ free(buf);
++ }
++ }
++ }
++ fclose(f);
+
- EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
- {
- if (gi->g->zoom != wd->zoom || !_grid_item_intersect(gi))
++ if (dump.distance) r->info.distance = dump.distance;
++ if (dump.description)
+ {
- wd->download_list = eina_list_remove(wd->download_list, gi);
- continue;
++ eina_stringshare_replace(&r->info.waypoints, dump.description);
++ str = eina_str_split_full(dump.description, "\n", 0, &ele);
++ r->info.waypoint_count = ele;
++ for (idx = 0 ; idx < ele ; idx++)
++ {
++ Path_Waypoint *wp = ELM_NEW(Path_Waypoint);
++ if (wp)
++ {
++ wp->wd = r->wd;
++ wp->point = eina_stringshare_add(str[idx]);
++ DBG("%s", str[idx]);
++ r->waypoint = eina_list_append(r->waypoint, wp);
++ }
++ }
++ if (str && str[0])
++ {
++ free(str[0]);
++ free(str);
++ }
+ }
- if (wd->download_num >= MAX_CONCURRENT_DOWNLOAD)
- return ECORE_CALLBACK_RENEW;
++ else WRN("description is not found !");
+
- Eina_Bool ret = ecore_file_download_full(gi->url, gi->file,
- _downloaded_cb, NULL,
- gi, &(gi->job), wd->ua);
- if ((!ret) || (!gi->job))
- ERR("Can't start to download from %s to %s", gi->url, gi->file);
- else
++ if (dump.coordinates)
+ {
- wd->download_list = eina_list_remove(wd->download_list, gi);
- wd->try_num++;
- wd->download_num++;
- evas_object_smart_callback_call(gi->wd->obj, SIG_TILE_LOAD,
- NULL);
- if (wd->download_num == 1)
- edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
- "elm,state,busy,start", "elm");
++ eina_stringshare_replace(&r->info.nodes, dump.coordinates);
++ str = eina_str_split_full(dump.coordinates, "\n", 0, &ele);
++ r->info.node_count = ele;
++ for (idx = 0 ; idx < ele ; idx++)
++ {
++ sscanf(str[idx], "%lf,%lf", &lon, &lat);
++ Path_Node *n = ELM_NEW(Path_Node);
++ if (n)
++ {
++ n->wd = r->wd;
++ n->pos.lon = lon;
++ n->pos.lat = lat;
++ n->idx = idx;
++ DBG("%lf:%lf", lon, lat);
++ n->pos.address = NULL;
++ r->nodes = eina_list_append(r->nodes, n);
+
++ path = evas_object_polygon_add(evas_object_evas_get(r->wd->obj));
++ evas_object_smart_member_add(path, r->wd->pan_smart);
++ r->path = eina_list_append(r->path, path);
++ }
++ }
++ if (str && str[0])
++ {
++ free(str[0]);
++ free(str);
++ }
+ }
+ }
- return ECORE_CALLBACK_RENEW;
+ }
+
+ static void
-_grid_viewport_get(Grid *g, int *x, int *y, int *w, int *h)
++_parse_name(void *data)
+ {
- EINA_SAFETY_ON_NULL_RETURN(g);
- int xx, yy, ww, hh;
- Evas_Coord px, py, vw, vh;
++ Elm_Map_Name *n = (Elm_Map_Name*)data;
++ if (!n || !n->ud.fname) return;
+
- _pan_geometry_get(g->wd, &px, &py);
- _viewport_size_get(g->wd, &vw, &vh);
- if (px > 0) px = 0;
- if (py > 0) py = 0;
++ FILE *f;
+
- xx = (-px / g->wd->size.tile) - 1;
- if (xx < 0) xx = 0;
++ Name_Dump dump = {0, NULL, 0.0, 0.0};
+
- yy = (-py / g->wd->size.tile) - 1;
- if (yy < 0) yy = 0;
++ f = fopen(n->ud.fname, "rb");
++ if (f)
++ {
++ long sz;
+
- ww = (vw / g->wd->size.tile) + 3;
- if (xx + ww >= g->tw) ww = g->tw - xx;
++ fseek(f, 0, SEEK_END);
++ sz = ftell(f);
++ if (sz > 0)
++ {
++ char *buf;
+
- hh = (vh / g->wd->size.tile) + 3;
- if (yy + hh >= g->th) hh = g->th - yy;
++ fseek(f, 0, SEEK_SET);
++ buf = malloc(sz);
++ if (buf)
++ {
++ if (fread(buf, 1, sz, f))
++ {
++ eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump);
++ free(buf);
++ }
++ }
++ }
++ fclose(f);
+
- if (x) *x = xx;
- if (y) *y = yy;
- if (w) *w = ww;
- if (h) *h = hh;
++ if (dump.address)
++ {
++ INF("[%lf : %lf] ADDRESS : %s", n->lon, n->lat, dump.address);
++ n->address = strdup(dump.address);
++ }
++ n->lon = dump.lon;
++ n->lat = dump.lat;
++ }
+ }
+
-static void
-_grid_unload(Grid *g)
++Grid *_get_current_grid(Widget_Data *wd)
+ {
- EINA_SAFETY_ON_NULL_RETURN(g);
- Eina_Iterator *it;
- Eina_Matrixsparse_Cell *cell;
- Grid_Item *gi;
-
- it = eina_matrixsparse_iterator_new(g->grid);
- EINA_ITERATOR_FOREACH(it, cell)
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
++ Eina_List *l;
++ Grid *g = NULL, *ret = NULL;
++ EINA_LIST_FOREACH(wd->grids, l, g)
+ {
- gi = eina_matrixsparse_cell_data_get(cell);
- _grid_item_unload(gi);
++ if (wd->zoom == g->zoom)
++ {
++ ret = g;
++ break;
++ }
+ }
- eina_iterator_free(it);
++ return ret;
+ }
+
-static void
-_grid_load(Grid *g)
++static Eina_Bool
++_route_complete_cb(void *data, int ev_type __UNUSED__, void *event)
+ {
- EINA_SAFETY_ON_NULL_RETURN(g);
- int x, y, xx, yy, ww, hh;
- Eina_Iterator *it;
- Eina_Matrixsparse_Cell *cell;
- Grid_Item *gi;
++ Ecore_Con_Event_Url_Complete *ev = event;
++ Elm_Map_Route *r = (Elm_Map_Route*)data;
++ Widget_Data *wd = r->wd;
+
- it = eina_matrixsparse_iterator_new(g->grid);
- EINA_ITERATOR_FOREACH(it, cell)
- {
- gi = eina_matrixsparse_cell_data_get(cell);
- if (!_grid_item_intersect(gi)) _grid_item_unload(gi);
- }
- eina_iterator_free(it);
++ if ((!r) || (!ev)) return EINA_TRUE;
++ Elm_Map_Route *rr = ecore_con_url_data_get(r->con_url);
++ ecore_con_url_data_set(r->con_url, NULL);
++ if (r!=rr) return EINA_TRUE;
+
- _grid_viewport_get(g, &xx, &yy, &ww, &hh);
- for (y = yy; y < yy + hh; y++)
++ if (r->ud.fd) fclose(r->ud.fd);
++ _parse_kml(r);
++
++ if (wd->grids)
+ {
- for (x = xx; x < xx + ww; x++)
- {
- gi = eina_matrixsparse_data_idx_get(g->grid, y, x);
- if (!gi) gi = _grid_item_create(g, x, y);
- _grid_item_load(gi);
- }
++ Grid *g;
++ Evas_Coord ox, oy, ow, oh;
++ evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
++ g = _get_current_grid(wd);
++ route_place(wd->obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
+ }
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
++ "elm,state,busy,stop", "elm");
++ evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOADED, NULL);
++ return EINA_TRUE;
+ }
+
-static void
-_grid_place(Widget_Data *wd)
++static Eina_Bool
++_name_complete_cb(void *data, int ev_type __UNUSED__, void *event)
++{
++ Ecore_Con_Event_Url_Complete *ev = event;
++ Elm_Map_Name *n = (Elm_Map_Name*)data;
++ Widget_Data *wd = n->wd;
++
++ if ((!n) || (!ev)) return EINA_TRUE;
++ Elm_Map_Name *nn = ecore_con_url_data_get(n->con_url);
++ ecore_con_url_data_set(n->con_url, NULL);
++ if (n!=nn) return EINA_TRUE;
++
++ if (n->ud.fd) fclose(n->ud.fd);
++ _parse_name(n);
++
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
++ "elm,state,busy,stop", "elm");
++ evas_object_smart_callback_call(wd->obj, SIG_NAME_LOADED, NULL);
++ return EINA_TRUE;
++}
++
++static Elm_Map_Name *
++_utils_convert_name(const Evas_Object *obj, int method, char *address, double lon, double lat)
+ {
- EINA_SAFETY_ON_NULL_RETURN(wd);
- Eina_List *l;
- Grid *g;
++ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
++ Widget_Data *wd = elm_widget_data_get(obj);
++ char buf[PATH_MAX];
++ char *source;
++ int fd;
+
- EINA_LIST_FOREACH(wd->grids, l, g)
++ if ((!wd) || (!wd->src)) return NULL;
++ Elm_Map_Name *name = ELM_NEW(Elm_Map_Name);
++ if (!name) return NULL;
++
++ snprintf(buf, sizeof(buf), DEST_NAME_XML_FILE);
++ fd = mkstemp(buf);
++ if (fd < 0)
+ {
- if (wd->zoom == g->zoom) _grid_load(g);
- else _grid_unload(g);
++ free(name);
++ return NULL;
+ }
- if (!wd->download_idler) wd->download_idler = ecore_idler_add(_download_job, wd);
-}
+
-static void
-_grid_all_create(Widget_Data *wd)
-{
- EINA_SAFETY_ON_NULL_RETURN(wd);
- EINA_SAFETY_ON_NULL_RETURN(wd->src_tile);
++ name->con_url = ecore_con_url_new(NULL);
++ name->ud.fname = strdup(buf);
++ INF("xml file : %s", name->ud.fname);
+
- int zoom;
- for (zoom = wd->src_tile->zoom_min; zoom <= wd->src_tile->zoom_max; zoom++)
++ name->ud.fd = fdopen(fd, "w+");
++ if ((!name->con_url) || (!name->ud.fd))
+ {
- Grid *g;
- int tnum;
- g = ELM_NEW(Grid);
- g->wd = wd;
- g->zoom = zoom;
- tnum = pow(2.0, g->zoom);
- g->tw = tnum;
- g->th = tnum;
- g->grid = eina_matrixsparse_new(g->th, g->tw, NULL, NULL);
- wd->grids = eina_list_append(wd->grids, g);
++ ecore_con_url_free(name->con_url);
++ free(name);
++ return NULL;
+ }
-}
+
-static void
-_grid_all_clear(Widget_Data *wd)
-{
- EINA_SAFETY_ON_NULL_RETURN(wd);
++ name->wd = wd;
++ name->handler = ecore_event_handler_add (ECORE_CON_EVENT_URL_COMPLETE, _name_complete_cb, name);
++ name->method = method;
++ if (method == ELM_MAP_NAME_METHOD_SEARCH) name->address = strdup(address);
++ else if (method == ELM_MAP_NAME_METHOD_REVERSE) name->address = NULL;
++ name->lon = lon;
++ name->lat = lat;
+
- Grid *g;
- EINA_LIST_FREE(wd->grids, g)
- {
- Eina_Matrixsparse_Cell *cell;
- Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
- EINA_ITERATOR_FOREACH(it, cell)
- {
- Grid_Item *gi;
- gi = eina_matrixsparse_cell_data_get(cell);
- if (gi) _grid_item_free(gi);
- }
- eina_iterator_free(it);
++ source = wd->src->name_url_cb(wd->obj, method, address, lon, lat);
++ INF("name url = %s", source);
++
++ wd->names = eina_list_append(wd->names, name);
++ ecore_con_url_url_set(name->con_url, source);
++ ecore_con_url_fd_set(name->con_url, fileno(name->ud.fd));
++ ecore_con_url_data_set(name->con_url, name);
++
++ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
++ "elm,state,busy,start", "elm");
++ evas_object_smart_callback_call(wd->obj, SIG_NAME_LOAD, NULL);
++ ecore_con_url_get(name->con_url);
++ if (source) free(source);
++
++ return name;
+
- eina_matrixsparse_free(g->grid);
- free(g);
- }
+ }
+
-static void
-_track_place(Widget_Data *wd)
++static Evas_Event_Flags
++zoom_start_cb(void *data, void *event_info __UNUSED__)
+ {
-#ifdef ELM_EMAP
- EINA_SAFETY_ON_NULL_RETURN(wd);
++ Widget_Data *wd = data;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
- Eina_List *l;
- Evas_Object *route;
- int xmin, xmax, ymin, ymax;
- Evas_Coord px, py, ow, oh;
- px = wd->pan_x;
- py = wd->pan_y;
- _viewport_size_get(wd, &ow, &oh);
++ // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
++ elm_smart_scroller_hold_set(wd->scr, 1);
++ elm_smart_scroller_freeze_set(wd->scr, 1);
++ _scr_drag_start(wd->obj, NULL, NULL);
+
- Evas_Coord size = wd->size.w;
++ wd->pinch.diff += 0.001;
+
- EINA_LIST_FOREACH(wd->track, l, route)
- {
- double lon_min, lon_max;
- double lat_min, lat_max;
- elm_route_longitude_min_max_get(route, &lon_min, &lon_max);
- elm_route_latitude_min_max_get(route, &lat_min, &lat_max);
- _region_to_coord_convert(wd, lon_min, lat_max, size, &xmin, &ymin);
- _region_to_coord_convert(wd, lon_max, lat_min, size, &xmax, &ymax);
++ return EVAS_EVENT_FLAG_NONE;
++}
+
- if( !(xmin < px && xmax < px) && !(xmin > px+ow && xmax > px+ow))
- {
- if( !(ymin < py && ymax < py) && !(ymin > py+oh && ymax > py+oh))
- {
- //display the route
- evas_object_move(route, xmin - px, ymin - py);
- evas_object_resize(route, xmax - xmin, ymax - ymin);
++static Evas_Event_Flags
++zoom_end_cb(void *data, void *event_info __UNUSED__)
++{
++ Widget_Data *wd = data;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
- evas_object_raise(route);
- _obj_rotate(wd, route);
- evas_object_show(route);
++ // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
++ elm_smart_scroller_hold_set(wd->scr, 0);
++ elm_smart_scroller_freeze_set(wd->scr, 0);
++ _scr_drag_stop(wd->obj, NULL, NULL);
+
- continue;
- }
- }
- //the route is not display
- evas_object_hide(route);
- }
-#else
- (void) wd;
-#endif
++ wd->pinch.diff = wd->pinch.level;
++
++ return EVAS_EVENT_FLAG_NONE;
+ }
+
-static void
-_delayed_do(Widget_Data *wd)
++static Evas_Event_Flags
++zoom_cb(void *data, void *event_info)
+ {
- Delayed_Data *dd;
- dd = eina_list_nth(wd->delayed_jobs, 0);
- if (dd && !dd->wd->zoom_animator)
++ Widget_Data *wd = data;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++
++ if (!wd->paused)
+ {
- dd->func(dd);
- wd->delayed_jobs = eina_list_remove(wd->delayed_jobs, dd);
- free(dd);
++ int zoom_diff = 0;
++ int x, y, w, h;
++ Elm_Gesture_Zoom_Info *ei = event_info;
++ evas_object_geometry_get(wd->obj, &x, &y, &w, &h);
++
++ wd->pinch.level = wd->pinch.diff * ei->zoom;
++ wd->pinch.cx = x + ((double)w * 0.5);
++ wd->pinch.cy = y + ((double)h * 0.5);
++
++ if (wd->pinch.level > 1.999 || wd->pinch.level < 1.001)
++ {
++ if (wd->pinch.level > 1.999)
++ {
++ zoom_diff = 1;
++ wd->pinch.diff = wd->pinch.level / 2.0;
++ wd->pinch.level = wd->pinch.level / 2.0;
++ }
++ else if (wd->pinch.level < 1.001)
++ {
++ zoom_diff = -1;
++ wd->pinch.diff = wd->pinch.level * 2.0;
++ wd->pinch.level = wd->pinch.level * 2.0;
++ }
++ Elm_Map_Zoom_Mode temp;
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, NULL, wd); // ei->zoom is refreshed
++ temp = wd->mode;
++ wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
++ wd->paused = EINA_TRUE;
++ elm_map_zoom_set(wd->obj, wd->zoom + zoom_diff);
++ wd->paused = EINA_FALSE;
++ wd->mode = temp;
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, zoom_cb, wd); // ei->zoom is refreshed
++ }
++ else
++ {
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
++ }
++ evas_object_smart_callback_call(wd->obj, SIG_ZOOM_CHANGE, NULL);
+ }
++
++ // FIXME: scroller can be jumping strangely when resizing & scrolling at the sametime (els_scr bug?)
++ _scr_scroll(wd->obj, NULL, NULL);
++
++ return EVAS_EVENT_FLAG_NONE;
+ }
+
-static void
-_smooth_update(Widget_Data *wd)
++static Evas_Event_Flags
++rotate_cb(void *data, void *event_info)
+ {
- EINA_SAFETY_ON_NULL_RETURN(wd);
- Eina_List *l;
- Grid *g;
++ Widget_Data *wd = data;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
- EINA_LIST_FOREACH(wd->grids, l, g)
++ if (!wd->paused)
+ {
- Eina_Iterator *it = eina_matrixsparse_iterator_new(g->grid);
- Eina_Matrixsparse_Cell *cell;
++ int x, y, w, h;
++ Elm_Gesture_Rotate_Info *ei = event_info;
++ evas_object_geometry_get(wd->obj, &x, &y, &w, &h);
+
- EINA_ITERATOR_FOREACH(it, cell)
- {
- Grid_Item *gi = eina_matrixsparse_cell_data_get(cell);
- if (_grid_item_intersect(gi))
- evas_object_image_smooth_scale_set(gi->img, EINA_TRUE);
- }
- eina_iterator_free(it);
++ wd->rotate.d = wd->rotate.a + ei->angle - ei->base_angle;
++ wd->rotate.cx = x + ((double)w * 0.5);
++ wd->rotate.cy = y + ((double)h * 0.5);
++
++ if (wd->calc_job) ecore_job_del(wd->calc_job);
++ wd->calc_job = ecore_job_add(_calc_job, wd);
+ }
++ return EVAS_EVENT_FLAG_NONE;
+ }
+
-static Eina_Bool
-_zoom_timeout(void *data)
++static Evas_Event_Flags
++rotate_end_cb(void *data, void *event_info __UNUSED__)
+ {
- EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
+ Widget_Data *wd = data;
- _smooth_update(wd);
- wd->zoom_timer = NULL;
- evas_object_smart_callback_call(wd->obj, SIG_ZOOM_STOP, NULL);
- return ECORE_CALLBACK_CANCEL;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
++
++ wd->rotate.a = wd->rotate.d;
++
++ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static void
-zoom_do(Widget_Data *wd, double zoom)
++_region_get(Widget_Data *wd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *w, Evas_Coord *h)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
- if (zoom > wd->zoom_max) zoom = wd->zoom_max;
- else if (zoom < wd->zoom_min) zoom = wd->zoom_min;
-
- Evas_Coord px, py, vw, vh;
- Evas_Coord ow, oh;
++ Evas_Coord sx, sy, tx, ty, tcx, tcy, sw, sh, tw, th, rw, rh;
+
- wd->zoom = ROUND(zoom);
- wd->zoom_detail = zoom;
- ow = wd->size.w;
- oh = wd->size.h;
- wd->size.tile = pow(2.0, (zoom - wd->zoom)) * wd->tsize;
- wd->size.w = pow(2.0, wd->zoom) * wd->size.tile;
- wd->size.h = wd->size.w;;
++ elm_smart_scroller_child_pos_get(wd->scr, &sx, &sy);
++ elm_smart_scroller_child_viewport_size_get(wd->scr, &sw, &sh);
++ rw = wd->size.w * wd->pinch.level;
++ rh = wd->size.h * wd->pinch.level;
+
- // Fix to zooming with (viewport center px, py) as the center to prevent
- // from zooming with (0,0) as the cetner. (scroller default behavior)
- _pan_geometry_get(wd, &px, &py);
- _viewport_size_get(wd, &vw, &vh);
- if ((vw > 0) && (vh > 0) && (ow > 0) && (oh > 0))
++ if (wd->size.w < sw)
+ {
- Evas_Coord xx, yy;
- double sx, sy;
- if (vw > ow) sx = 0.5;
- else sx = (double)(-px + (vw / 2)) / ow;
- if (vh > oh) sy = 0.5;
- else sy = (double)(-py + (vh / 2)) / oh;
-
- if (sx > 1.0) sx = 1.0;
- if (sy > 1.0) sy = 1.0;
-
- xx = (sx * wd->size.w) - (vw / 2);
- yy = (sy * wd->size.h) - (vh / 2);
- if (xx < 0) xx = 0;
- else if (xx > (wd->size.w - vw)) xx = wd->size.w - vw;
- if (yy < 0) yy = 0;
- else if (yy > (wd->size.h - vh)) yy = wd->size.h - vh;
- elm_smart_scroller_child_region_show(wd->scr, xx, yy, vw, vh);
++ tw = rw;
++ tcx = sx + tw/2;
++ tx = sx + (sw - tw)/2;
+ }
- if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
- else evas_object_smart_callback_call(wd->obj, SIG_ZOOM_START, NULL);
- wd->zoom_timer = ecore_timer_add(0.25, _zoom_timeout, wd);
- evas_object_smart_callback_call(wd->obj, SIG_ZOOM_CHANGE, NULL);
-
- evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
- evas_object_smart_changed(wd->pan_smart);
-}
-
-static Eina_Bool
-_zoom_anim(void *data)
-{
- Widget_Data *wd = data;
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, ECORE_CALLBACK_CANCEL);
++ else
++ {
++ tw = sw;
++ tcx = (sx + tw/2) * wd->pinch.level;
++ tx = tcx - tw/2;
+
- if (wd->ani.cnt <= 0)
++ }
++ if (wd->size.h < sh)
+ {
- wd->zoom_animator = NULL;
- evas_object_smart_changed(wd->pan_smart);
- return ECORE_CALLBACK_CANCEL;
++ th = rh;
++ ty = sy + (sh - th)/2;
++ tcy = sy + th/2;
+ }
+ else
+ {
- wd->ani.zoom += wd->ani.diff;
- wd->ani.cnt--;
- zoom_do(wd, wd->ani.zoom);
- return ECORE_CALLBACK_RENEW;
++ th = sw;
++ tcy = (sy + th/2) * wd->pinch.level;
++ ty = tcy - th/2;
+ }
++
++ if (x) *x = tx;
++ if (y) *y = ty;
++ if (cx) *cx= tcx;
++ if (cy) *cy = tcy;
++ if (w) *w = tw;
++ if (h) *h = th;
++}
++
++static void
++_coord_rotate(const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy)
++{
++ EINA_SAFETY_ON_NULL_RETURN(xx);
++ EINA_SAFETY_ON_NULL_RETURN(yy);
++
++ double r = (degree * M_PI) / 180.0;
++ double tx, ty, ttx, tty;
++
++ tx = x - cx;
++ ty = y - cy;
++
++ ttx = tx * cos(r);
++ tty = tx * sin(r);
++ tx = ttx + (ty * cos(r + M_PI_2));
++ ty = tty + (ty * sin(r + M_PI_2));
++
++ *xx = tx + cx;
++ *yy = ty + cy;
+ }
+
-static void
++=======
+ zoom_with_animation(Widget_Data *wd, double zoom, int cnt)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ if (cnt == 0) return;
+
+ wd->ani.cnt = cnt;
+ wd->ani.zoom = wd->zoom;
+ wd->ani.diff = (double)(zoom - wd->zoom) / cnt;
+ if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
+ wd->zoom_animator = ecore_animator_add(_zoom_anim, wd);
+ }
+
+ static void
+ _sizing_eval(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ Evas_Coord maxw = -1, maxh = -1;
+
+ evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
+ evas_object_size_hint_max_set(wd->obj, maxw, maxh);
+ }
+
+ static void
+ _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ _sizing_eval(data);
+ }
+
+ static Eina_Bool
+ _scr_timeout(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
+ Widget_Data *wd = data;
+ _smooth_update(wd);
+ wd->scr_timer = NULL;
+ evas_object_smart_callback_call(wd->obj, SIG_SCROLL_DRAG_STOP, NULL);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ static void
+ _scr(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+
+ if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
+ else evas_object_smart_callback_call(wd->obj, SIG_SCROLL_DRAG_START, NULL);
+ wd->scr_timer = ecore_timer_add(0.25, _scr_timeout, wd);
+ evas_object_smart_callback_call(wd->obj, SIG_SCROLL, NULL);
+ }
+
+ static void
+ _scr_anim_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ evas_object_smart_callback_call(wd->obj, SIG_SCROLL_ANIM_START, NULL);
+ }
+
+ static void
+ _scr_anim_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ evas_object_smart_callback_call(wd->obj, SIG_SCROLL_ANIM_STOP, NULL);
+ }
+
+ static Eina_Bool
+ _long_press(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, ECORE_CALLBACK_CANCEL);
+ Widget_Data *wd = data;
+
+ wd->long_timer = NULL;
+ evas_object_smart_callback_call(wd->obj, SIG_LONGPRESSED, &wd->ev);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ static void
+ _mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ Evas_Event_Mouse_Down *ev = event_info;
+
+ if (ev->button != 1) return;
+
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
+ else wd->on_hold = EINA_FALSE;
+
+ if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
+ evas_object_smart_callback_call(wd->obj, SIG_CLICKED_DOUBLE, ev);
+ else evas_object_smart_callback_call(wd->obj, SIG_PRESS, ev);
+
+ if (wd->long_timer) ecore_timer_del(wd->long_timer);
+ wd->ev = *ev;
+ wd->long_timer = ecore_timer_add(_elm_config->longpress_timeout, _long_press, wd);
+ }
+
+ static void
+ _mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+
+ Evas_Event_Mouse_Up *ev = event_info;
+ EINA_SAFETY_ON_NULL_RETURN(ev);
+
+ if (ev->button != 1) return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) wd->on_hold = EINA_TRUE;
+ else wd->on_hold = EINA_FALSE;
+ if (wd->long_timer)
+ {
+ ecore_timer_del(wd->long_timer);
+ wd->long_timer = NULL;
+ }
+ if (!wd->on_hold) evas_object_smart_callback_call(wd->obj, SIG_CLICKED, ev);
+ wd->on_hold = EINA_FALSE;
+ }
+
+ static void
+ _mouse_wheel_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+
+ if (!wd->paused)
+ {
+ Evas_Event_Mouse_Wheel *ev = (Evas_Event_Mouse_Wheel*) event_info;
+ zoom_do(wd, wd->zoom_detail - ((double)ev->z / 10));
+ }
+ }
+
+ static void
+ _region_max_min_get(Eina_List *overlays, double *max_longitude, double *min_longitude, double *max_latitude, double *min_latitude)
+ {
+ double max_lon = -180, min_lon = 180;
+ double max_lat = -90, min_lat = 90;
+ Elm_Map_Overlay *overlay;
+ EINA_LIST_FREE(overlays, overlay)
+ {
+ double lon, lat;
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ Overlay_Default *ovl = overlay->ovl;
+ lon = ovl->lon;
+ lat = ovl->lat;
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ {
+ // FIXME: class center coord is alright??
+ Overlay_Class *ovl = overlay->ovl;
+ double max_lo, min_lo, max_la, min_la;
+ _region_max_min_get(ovl->members, &max_lo, &min_lo, &max_la,
+ &min_la);
+ lon = (max_lo + min_lo) / 2;
+ lat = (max_la + min_la) / 2;
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ Overlay_Bubble *ovl = overlay->ovl;
+ lon = ovl->lon;
+ lat = ovl->lat;
+ }
+ else
+ {
+ WRN("Not supported overlay type: %d", overlay->type);
+ continue;
+ }
+ if (lon> max_lon) max_lon = lon;
+ if (lon< min_lon) min_lon = lon;
+ if (lat > max_lat) max_lat = lat;
+ if (lat < min_lat) min_lat = lat;
+ }
+ if (max_longitude) *max_longitude = max_lon;
+ if (min_longitude) *min_longitude = min_lon;
+ if (max_latitude) *max_latitude = max_lat;
+ if (min_latitude) *min_latitude = min_lat;
+ }
+
+ static Evas_Object *
+ _icon_dup(Evas_Object *icon, Evas_Object *parent)
+ {
+ if (!icon || !parent) return NULL;
+ // Evas_Object do not support object duplication??
+ const char *file = NULL, *group = NULL;
+ Eina_Bool size_up, size_down;
+ Evas_Object *dupp;
+
+ dupp = elm_icon_add(parent);
+ elm_icon_file_get(icon, &file, &group);
+ elm_icon_file_set(dupp, file, group);
+ elm_icon_animated_set(dupp, elm_icon_animated_get(icon));
+ elm_icon_animated_play_set(dupp, elm_icon_animated_play_get(icon));
+ elm_icon_standard_set(dupp, elm_icon_standard_get(icon));
+ elm_icon_order_lookup_set(dupp, elm_icon_order_lookup_get(icon));
+ elm_icon_no_scale_set(dupp, elm_icon_no_scale_get(icon));
+ elm_icon_resizable_get(icon, &size_up, &size_down);
+ elm_icon_resizable_set(dupp, size_up, size_down);
+ elm_icon_fill_outside_set(dupp, elm_icon_fill_outside_get(icon));
+ elm_icon_prescale_set(dupp, elm_icon_prescale_get(icon));
+ elm_icon_aspect_fixed_set(dupp, elm_icon_aspect_fixed_get(icon));
+ return dupp;
+ }
+
+ static Evas_Object *
+ _overlay_layout_new(Widget_Data *wd, const char *group)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(group, NULL);
+ Evas_Object *obj = elm_layout_add(wd->obj);
+ evas_object_smart_member_add(obj, wd->pan_smart);
+ evas_object_stack_above(obj, wd->sep_maps_markers);
+ elm_layout_theme_set(obj, "map/marker", group, elm_widget_style_get(wd->obj));
+ return obj;
+ }
+
+ static void
+ _overlay_layout_update(Widget_Data *wd, Evas_Object *layout, Evas_Object *icon, const char *text, const char *group)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(layout);
+
+ Evas_Object *prev_icon = elm_object_part_content_get(layout, "elm.icon");
+ if (icon && (prev_icon != icon))
+ {
+ elm_layout_theme_set(layout, "map/marker", "empty",
+ elm_widget_style_get(wd->obj));
+ elm_object_part_content_set(layout, "elm.icon", icon);
+ }
+ else if (text)
+ {
+ if (group) elm_layout_theme_set(layout, "map/marker", group,
+ elm_widget_style_get(wd->obj));
+ edje_object_part_text_set(elm_layout_edje_get(layout), "elm.text", text);
+ }
+ }
+
+ static void
+ _overlay_clicked_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Elm_Map_Overlay *overlay = data;
+
+ evas_object_smart_callback_call(overlay->wd->obj, SIG_OVERLAY_CLICKED,
+ overlay);
+ if (overlay->cb) overlay->cb(overlay->cb_data, overlay->wd->obj,
+ overlay);
+ }
+
+ static void
+ _overlay_default_cb_add(Overlay_Default *ovl, Evas_Object_Event_Cb cb, void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ EINA_SAFETY_ON_NULL_RETURN(data);
+
+ // FIXME: Add icon or object event callback
+ evas_object_event_callback_add(ovl->layout, EVAS_CALLBACK_MOUSE_DOWN, cb,
+ data);
+ }
+
+ static void
+ _overlay_default_cb_del(Overlay_Default *ovl, Evas_Object_Event_Cb cb)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ // FIXME: Add icon or object event callback
+ evas_object_event_callback_del(ovl->layout, EVAS_CALLBACK_MOUSE_DOWN, cb);
+ }
+
+ static void
+ _overlay_default_hide(Overlay_Default *ovl)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ if (ovl->obj) evas_object_hide(ovl->obj);
+ if (ovl->layout) evas_object_hide(ovl->layout);
+ }
+
+ static void
+ _overlay_default_show(Widget_Data *wd, Overlay_Default *ovl)
+ {
+ Evas_Object *disp;
+ Evas_Coord px, py;
+ Evas_Coord x, y, w, h;
+
+ if (ovl->obj)
+ {
+ disp = ovl->obj;
+ evas_object_geometry_get(disp, NULL, NULL, &w, &h);
+ if (w <= 0 || h <= 0) evas_object_size_hint_min_get(disp, &w, &h);
+ }
+ else
+ {
+ disp = ovl->layout;
+ w = ovl->w;
+ h = ovl->h;
+ }
+
+ _pan_geometry_get(wd, &px, &py);
+ _coord_rotate(ovl->x + px, ovl->y + py, wd->rotate.cx, wd->rotate.cy,
+ wd->rotate.d, &x, &y);
+ _obj_place(disp, x - (w / 2), y - (h / 2), w, h);
+ }
+
+ static void
+ _overlay_default_update(Widget_Data *wd, Overlay_Default *ovl, Evas_Object *obj, Evas_Object *icon, Overlay_Class *ovl_clas, const char *text, const char *group)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+
+ _region_to_coord_convert(wd, ovl->lon, ovl->lat, wd->size.w, &ovl->x, &ovl->y);
+
+ if (obj)
+ {
+ if (ovl->obj == obj) return;
+ if (ovl->obj) evas_object_del(ovl->obj);
+ ovl->obj = obj;
+ }
+ else if (!(ovl->obj) && icon)
+ {
+ if (ovl->icon == icon) return;
+ if (ovl->icon) evas_object_del(ovl->icon);
+ ovl->icon = icon;
+ _overlay_layout_update(wd, ovl->layout, ovl->icon, NULL, NULL);
+
+ }
+ else if (!(ovl->obj) && !(ovl->icon) && (ovl_clas) &&
+ ((ovl_clas->obj) || (ovl_clas->icon)))
+ {
+ // Inherit icon from group overlay's ojbect or icon
+
+ // FIXME: It is hard to duplicate evas object :-)
+ /*
+ if (ovl_clas->obj && (ovl_clas->obj != ovl->clas_obj_ref))
+ {
+ if (ovl->clas_obj) evas_object_del(ovl->clas_obj);
+ ovl->clas_obj_ref = ovl_clas->obj;
+ ovl->clas_obj = _obj_dup(ovl->clas_obj_ref, ovl->layout);
+ _overlay_layout_update(wd, ovl->layout, ovl->clas_obj, NULL, NULL);
+ }
+ */
+ if (ovl_clas->icon && (ovl_clas->icon != ovl->clas_icon_ref))
+ {
+ if (ovl->clas_icon) evas_object_del(ovl->clas_icon);
+ ovl->clas_icon_ref = ovl_clas->icon;
+ ovl->clas_icon = _icon_dup(ovl->clas_icon_ref, ovl->layout);
+ _overlay_layout_update(wd, ovl->layout, ovl->clas_icon, NULL, NULL);
+ }
+ }
+ else if (!(ovl->obj) && !(ovl->icon) && !(ovl->clas_icon) && text)
+ {
+ _overlay_layout_update(wd, ovl->layout, NULL, text, group);
+ }
+ }
+
+ static void
+ _overlay_default_free(Overlay_Default *ovl)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ if (ovl->obj) evas_object_del(ovl->obj);
+ if (ovl->icon) evas_object_del(ovl->icon);
+ if (ovl->clas_icon) evas_object_del(ovl->clas_icon);
+ evas_object_event_callback_del(ovl->layout, EVAS_CALLBACK_MOUSE_DOWN,
+ _overlay_clicked_cb);
+ if (ovl->layout) evas_object_del(ovl->layout);
+ free(ovl);
+ }
+
+ static Overlay_Default *
+ _overlay_default_new(Widget_Data *wd, double lon, double lat, const char *group)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(group, NULL);
+
+ Overlay_Default *ovl = ELM_NEW(Overlay_Default);
+ _edj_marker_size_get(wd, &(ovl->w), &(ovl->h));
+ ovl->layout = _overlay_layout_new(wd, group);
+ ovl->lon = lon;
+ ovl->lat = lat;
+ return ovl;
+ }
+
+ static void
+ _overlay_group_clicked_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *ev __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Overlay_Group *ovl = data;
+
+ evas_object_smart_callback_call(ovl->clas->wd->obj, SIG_OVERLAY_CLICKED,
+ ovl->clas);
+ if (ovl->clas->cb) ovl->clas->cb(ovl->clas->cb_data, ovl->clas->wd->obj,
+ ovl->clas);
+ }
+
+ static void
+ _overlay_group_cb_add(Overlay_Group *ovl)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ _overlay_default_cb_add(ovl->ovl, _overlay_group_clicked_cb, ovl);
+ }
+
+ static void
+ _overlay_group_cb_del(Overlay_Group *ovl)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ _overlay_default_cb_del(ovl->ovl, _overlay_group_clicked_cb);
+ }
+
+ static void
+ _overlay_group_update(Widget_Data *wd, Overlay_Group *grp, Eina_List *members)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(grp);
+
+ Eina_List *l;
+ Elm_Map_Overlay *overlay;
+ Evas_Coord sum_x = 0, sum_y = 0, cnt = 0;
+
+ if (grp->members) eina_list_free(grp->members);
+ grp->members = members;
+
+ if (!grp->members || eina_list_count(grp->members) <= 0)
+ {
+ _overlay_default_hide(grp->ovl);
+ return;
+ }
+ EINA_LIST_FOREACH(grp->members, l, overlay)
+ {
+ Overlay_Default *df = overlay->ovl;
+ sum_x += df->x;
+ sum_y += df->y;
+ cnt++;
+ }
+
+ Overlay_Class *ovl_clas = grp->clas->ovl;
+
+ char text[128];
+ snprintf(text, sizeof(text), "%d", cnt);
+ _overlay_default_update(wd, grp->ovl, NULL, NULL, ovl_clas, text, "radio2");
+
+ grp->ovl->x = sum_x / cnt;
+ grp->ovl->y = sum_y / cnt;
+ }
+
+ static void
+ _overlay_group_free(Overlay_Group *grp, Elm_Map_Overlay *club_owner)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(grp);
+
+ _overlay_default_cb_del(grp->ovl, _overlay_group_clicked_cb);
+ _overlay_default_free(grp->ovl);
+ if (grp->clas) elm_map_overlay_class_remove(grp->clas, club_owner);
+ if (grp->members) eina_list_free(grp->members);
+ free(grp);
+ }
+
+ static Overlay_Group *
+ _overlay_group_new(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Overlay_Group *grp = ELM_NEW(Overlay_Group);
+ grp->ovl = ELM_NEW(Overlay_Default);
+ grp->ovl = _overlay_default_new(wd, -1, -1, "radio2");
+ grp->ovl->w *= 2;
+ grp->ovl->h *= 2;
+ return grp;
+ }
+
+ static void
+ _overlay_class_update(Widget_Data *wd, Overlay_Class *clas, Evas_Object *obj, Evas_Object *icon)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+
+ if (obj && (clas->obj != obj))
+ {
+ if (clas->obj) evas_object_del(clas->obj);
+ clas->obj = icon;
+ }
+ else if (icon && (clas->icon != icon))
+ {
+ if (clas->icon) evas_object_del(clas->icon);
+ clas->icon = icon;
+ }
+ }
+
+ static void
+ _overlay_class_free(Overlay_Class *clas)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ if (clas->icon) evas_object_del(clas->icon);
+ if (clas->members) eina_list_free(clas->members);
+ free(clas);
+ }
+
+ static Overlay_Class *
+ _overlay_class_new(Widget_Data *wd, Elm_Map_Overlay *clas)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ Overlay_Class *ovl = ELM_NEW(Overlay_Class);
+ ovl->clas = clas;
+ ovl->icon = NULL;
+ ovl->zoom_max = OVERLAY_CLASS_ZOOM_MAX;
+ return ovl;
+ }
+
+ static void
+ _overlay_bubble_cb_add(Overlay_Bubble *ovl, Elm_Map_Overlay *overlay)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ evas_object_event_callback_add(ovl->obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _overlay_clicked_cb, overlay);
+ }
+
+ static void
+ _overlay_bubble_cb_del(Overlay_Bubble *ovl)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(ovl);
+ evas_object_event_callback_del(ovl->obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _overlay_clicked_cb);
+ }
+
+ static void
+ _overlay_bubble_hide(Overlay_Bubble *bubble)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ if (bubble->obj) evas_object_hide(bubble->obj);
+ }
+
+ static void
+ _overlay_bubble_update(Overlay_Bubble *bubble)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ if ((!bubble->pobj) && (bubble->lon >= 0) && (bubble->lat >= 0))
+ {
+ _region_to_coord_convert(bubble->wd, bubble->lon, bubble->lat,
+ bubble->wd->size.w, &bubble->x, &bubble->y);
+ }
+ }
+
+ static void
+ _overlay_bubble_show(Overlay_Bubble *bubble)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ Evas_Coord x, y;
+
+ if ((bubble->x < 0) || (bubble->y < 0)) return;
+ Evas_Coord px, py;
+ _pan_geometry_get(bubble->wd, &px, &py);
+ _coord_rotate(bubble->x + px, bubble->y + py, bubble->wd->rotate.cx,
+ bubble->wd->rotate.cy, bubble->wd->rotate.d, &x, &y);
+ x = x - (bubble->w / 2);
+ y = y - (bubble->h / 2);
+ _obj_place(bubble->obj, x, y, bubble->w, bubble->h);
+ //evas_object_raise(bubble->obj);
+ }
+
+ static void
+ _overlay_bubble_chase(Overlay_Bubble *bubble)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ EINA_SAFETY_ON_NULL_RETURN(bubble->pobj);
+
+ Evas_Coord x, y, w;
+ evas_object_geometry_get(bubble->pobj, &x, &y, &w, NULL);
+ x = x + (w / 2) - (bubble->w / 2);
+ y = y - bubble->h;
+ _obj_place(bubble->obj, x, y, bubble->w, bubble->h);
+ evas_object_raise(bubble->obj);
+ }
+
+ static void
+ _overlay_bubble_hide_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ _overlay_bubble_hide(data);
+ }
+
+ static void
+ _overlay_bubble_chase_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ _overlay_bubble_chase(data);
+ }
+
+ static void
+ _overlay_bubble_free(Overlay_Bubble* bubble)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+
+ evas_object_del(bubble->bx);
+ evas_object_del(bubble->sc);
+ evas_object_del(bubble->obj);
+ if (bubble->pobj)
+ {
+ evas_object_event_callback_del_full(bubble->pobj, EVAS_CALLBACK_HIDE,
+ _overlay_bubble_hide_cb, bubble);
+ evas_object_event_callback_del_full(bubble->pobj, EVAS_CALLBACK_SHOW,
+ _overlay_bubble_chase_cb, bubble);
+ evas_object_event_callback_del_full(bubble->pobj, EVAS_CALLBACK_MOVE,
+ _overlay_bubble_chase_cb, bubble);
+ }
+ free(bubble);
+ }
+
+ static Overlay_Bubble*
+ _overlay_bubble_new(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Evas_Coord h;
+ const char *s;
+ Overlay_Bubble *bubble = ELM_NEW(Overlay_Bubble);
+ bubble->wd = wd;
+
+ bubble->obj = edje_object_add(evas_object_evas_get(wd->obj));
+ _elm_theme_object_set(wd->obj, bubble->obj , "map", "marker_bubble",
+ elm_widget_style_get(wd->obj));
+ evas_object_event_callback_add(bubble->obj, EVAS_CALLBACK_MOUSE_UP,
+ _overlay_bubble_chase_cb, bubble);
+
+ bubble->sc = elm_scroller_add(bubble->obj);
+ elm_widget_style_set(bubble->sc, "map_bubble");
+ elm_scroller_content_min_limit(bubble->sc, EINA_FALSE, EINA_TRUE);
+ elm_scroller_policy_set(bubble->sc, ELM_SCROLLER_POLICY_AUTO,
+ ELM_SCROLLER_POLICY_OFF);
+ elm_scroller_bounce_set(bubble->sc, _elm_config->thumbscroll_bounce_enable,
+ EINA_FALSE);
+ edje_object_part_swallow(bubble->obj, "elm.swallow.content", bubble->sc);
+
+ bubble->bx = elm_box_add(bubble->sc);
+ evas_object_size_hint_align_set(bubble->bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(bubble->bx, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_box_horizontal_set(bubble->bx, EINA_TRUE);
+ elm_object_content_set(bubble->sc, bubble->bx);
+
+ s = edje_object_data_get(bubble->obj, "size_w");
+ if (s) bubble->w = atoi(s);
+ else bubble->w = 0;
+
+ edje_object_size_min_calc(bubble->obj, NULL, &(bubble->h));
+ s = edje_object_data_get(bubble->obj, "size_h");
+ if (s) h = atoi(s);
+ else h = 0;
+ if (bubble->h < h) bubble->h = h;
+
+ bubble->lon = -1;
+ bubble->lat = -1;
+ bubble->x = -1;
+ bubble->y = -1;
+ return bubble;
+ }
+
+ static void
+ _overlay_route_hide(Overlay_Route *r)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(r);
+ Eina_List *l;
+ Evas_Object *p;
+ EINA_LIST_FOREACH(r->paths, l, p) evas_object_hide(p);
+ }
+
+ static void
+ _overlay_route_show(Overlay_Route *r)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(r);
+ EINA_SAFETY_ON_NULL_RETURN(r->wd);
+
+ Widget_Data *wd;
+ Eina_List *l;
+ Evas_Object *p;
+ Path_Node *n;
+ int cnt;
+ int x, y;
+ double a;
+ Evas_Coord ow, oh, px, py, size;
+
+ wd = r->wd;
+ _viewport_size_get(wd, &ow, &oh);
+ px = wd->pan_x;
+ py = wd->pan_y;
+ size = wd->size.w;
+
+ EINA_LIST_FOREACH(r->paths, l, p) evas_object_polygon_points_clear(p);
+
+ cnt = eina_list_count(r->nodes);
+ EINA_LIST_FOREACH(r->nodes, l, n)
+ {
+ if ((!wd->zoom) || ((n->idx) &&
+ ((n->idx % (int)ceil((double)cnt/(double)size*100.0))))) continue;
+ if (r->inbound)
+ {
+ _region_to_coord_convert(wd, n->pos.lon, n->pos.lat, size,
+ &x, &y);
+ if ((x >= px - ow) && (x <= (px + ow*2)) &&
+ (y >= py - oh) && (y <= (py + oh*2)))
+ {
+ x = x - px;
+ y = y - py;
+
+ p = eina_list_nth(r->paths, n->idx);
+ a = (double)(y - r->y) / (double)(x - r->x);
+ if ((abs(a) >= 1) || (r->x == x))
+ {
+ evas_object_polygon_point_add(p, r->x - 3, r->y);
+ evas_object_polygon_point_add(p, r->x + 3, r->y);
+ evas_object_polygon_point_add(p, x + 3, y);
+ evas_object_polygon_point_add(p, x - 3, y);
+ }
+ else
+ {
+ evas_object_polygon_point_add(p, r->x, r->y - 3);
+ evas_object_polygon_point_add(p, r->x, r->y + 3);
+ evas_object_polygon_point_add(p, x, y + 3);
+ evas_object_polygon_point_add(p, x, y - 3);
+ }
+
+ evas_object_color_set(p, r->color.r, r->color.g, r->color.b,
+ r->color.a);
+ evas_object_raise(p);
+ _obj_rotate(wd, p);
+ evas_object_show(p);
+ r->x = x;
+ r->y = y;
+ }
+
+ else r->inbound = EINA_FALSE;
+ }
+ else
+ {
+ _region_to_coord_convert(wd, n->pos.lon, n->pos.lat, size,
+ &x, &y);
+ if ((x >= px - ow) && (x <= (px + ow*2)) &&
+ (y >= py - oh) && (y <= (py + oh*2)))
+ {
+ r->x = x - px;
+ r->y = y - py;
+ r->inbound = EINA_TRUE;
+ }
+ else r->inbound = EINA_FALSE;
+ }
+ }
+ r->inbound = EINA_FALSE;
+ }
+
+ static void
+ _overlay_route_free(Overlay_Route* route)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(route);
+ Evas_Object *p;
+ Path_Node *n;
+
+ EINA_LIST_FREE(route->paths, p) evas_object_del(p);
+ EINA_LIST_FREE(route->nodes, n)
+ {
+ if (n->pos.address) eina_stringshare_del(n->pos.address);
+ free(n);
+ }
+ free(route);
+ }
+
+ static Overlay_Route *
+ _overlay_route_new(Widget_Data *wd, const Elm_Map_Route *route)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
+
+ Eina_List *l;
+ Path_Node *n;
+
+ Overlay_Route *ovl = ELM_NEW(Overlay_Route);
+ ovl->wd = wd;
+ ovl->inbound = EINA_FALSE;
+ ovl->color.r = 255;
+ ovl->color.g = 0;
+ ovl->color.b = 0;
+ ovl->color.a = 255;
+
+ EINA_LIST_FOREACH(route->nodes, l, n)
+ {
+ Evas_Object *path;
+ Path_Node *node;
+
+ node = ELM_NEW(Path_Node);
+ node->idx = n->idx;
+ node->pos.lon = n->pos.lon;
+ node->pos.lat = n->pos.lat;
+ if (n->pos.address) node->pos.address = strdup(n->pos.address);
+ ovl->nodes = eina_list_append(ovl->nodes, node);
+
+ path = evas_object_polygon_add(evas_object_evas_get(wd->obj));
+ evas_object_smart_member_add(path, wd->pan_smart);
+ ovl->paths = eina_list_append(ovl->paths, path);
+ }
+ return ovl;
+ }
+
+ static void
+ _overlay_grouping(Eina_List *members, Elm_Map_Overlay *overlay)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(members);
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ // Currently support only basic overlay type
+ EINA_SAFETY_ON_FALSE_RETURN(overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT);
+
+ Eina_List *l;
+ Elm_Map_Overlay *overlay_memb;
+ Eina_List *club_members = NULL;
+
+ // Grouping only supports overlay default
+ Overlay_Default *ovl = (Overlay_Default *)overlay->ovl;
+ EINA_LIST_FOREACH(members, l, overlay_memb)
+ {
+ Overlay_Default *ovl_memb = overlay_memb->ovl;
+ if ((overlay_memb->hide) ||
+ (overlay_memb->zoom_min > overlay_memb->wd->zoom)) continue;
+ if (overlay == overlay_memb || overlay_memb->grp_in) continue;
+ if (ELM_RECTS_INTERSECT(ovl_memb->x, ovl_memb->y, ovl_memb->w,
+ ovl_memb->h, ovl->x, ovl->y,
+ ovl->w * OVERLAY_GROUPING_SCALE,
+ ovl->h * OVERLAY_GROUPING_SCALE))
+ {
+ // Join group.
+ overlay_memb->grp_boss = EINA_FALSE;
+ overlay_memb->grp_in = EINA_TRUE;
+ club_members = eina_list_append(club_members, overlay_memb);
+ _overlay_group_update(overlay_memb->wd, overlay_memb->grp, NULL);
+ _overlay_group_cb_del(overlay_memb->grp);
+ }
+ }
+
+ if (eina_list_count(club_members) >= 1)
+ {
+ // Mark as boss
+ overlay->grp_boss = EINA_TRUE;
+ overlay->grp_in = EINA_TRUE;
+ club_members = eina_list_append(club_members, overlay);
+ _overlay_group_update(overlay->wd, overlay->grp, club_members);
+ _overlay_group_cb_del(overlay->grp);
+ _overlay_group_cb_add(overlay->grp);
+ }
+ }
+
+ static void
+ _overlay_display(Widget_Data *wd, Elm_Map_Overlay *overlay)
+ {
+ Eina_Bool hide = EINA_FALSE;
+
+ if ((overlay->grp_in) || (overlay->hide) || (overlay->zoom_min > wd->zoom))
+ hide = EINA_TRUE;
+ if ((overlay->grp->clas) && ((overlay->grp->clas->hide) ||
+ (overlay->grp->clas->zoom_min > wd->zoom)))
+ hide = EINA_TRUE;
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ if (hide) _overlay_default_hide(overlay->ovl);
+ else _overlay_default_show(wd, overlay->ovl);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ if (hide) _overlay_bubble_hide(overlay->ovl);
+ else _overlay_bubble_show(overlay->ovl);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_ROUTE)
+ {
+ if (hide) _overlay_route_hide(overlay->ovl);
+ else _overlay_route_show(overlay->ovl);
+ }
+ }
+
+ static void
+ _overlay_place(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ Eina_List *l, *ll;
+ Elm_Map_Overlay *overlay, *grp;
+
+ if (eina_list_count(wd->overlays) == 0) return;
+
+ // Reset overlays coord & grp except class type
+ EINA_LIST_FOREACH(wd->overlays, l, overlay)
+ {
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS) continue;
+ if (overlay->paused) continue;
+ if ((overlay->grp) && (overlay->grp->clas) &&
+ (overlay->grp->clas->paused)) continue;
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ Overlay_Class *ovl_grp = NULL;
+ if (overlay->grp->clas) ovl_grp = overlay->grp->clas->ovl;
+ _overlay_default_update(wd, overlay->ovl, NULL, NULL, ovl_grp,
+ NULL, NULL);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ _overlay_bubble_update(overlay->ovl);
+ // Reset grp flags
+ overlay->grp_in = EINA_FALSE;
+ overlay->grp_boss = EINA_FALSE;
+ _overlay_group_update(wd, overlay->grp, NULL);
+ }
+
+ // Classify into group idol or follwer
+ EINA_LIST_FOREACH(wd->overlays, l, grp)
+ {
+ Elm_Map_Overlay *idol;
+ Overlay_Class *ovl;
+
+ if (grp->type != ELM_MAP_OVERLAY_TYPE_CLASS) continue;
+ if ((grp->hide) || (grp->zoom_min > wd->zoom)) continue;
+
+ ovl = grp->ovl;
+ if (ovl->zoom_max < wd->zoom) continue;
+ EINA_LIST_FOREACH(ovl->members, ll, idol)
+ {
+ if (!idol->grp_in) _overlay_grouping(ovl->members, idol);
+ }
+ }
+
+ // Place overlays
+ EINA_LIST_FOREACH(wd->overlays, l, overlay)
+ if (overlay->type != ELM_MAP_OVERLAY_TYPE_CLASS)
+ _overlay_display(wd, overlay);
+
+ // Place group overlays
+ EINA_LIST_FOREACH(wd->overlays, l, overlay)
+ {
+ if (overlay->grp_boss) _overlay_default_show(wd, overlay->grp->ovl);
+ }
+ }
+
+ static Evas_Object *
+ _overlay_obj_get(Elm_Map_Overlay *overlay)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, NULL);
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ Overlay_Default *ovl = overlay->ovl;
+ return ovl->layout;
+ }
+ else
+ {
+ ERR("Not supported overlay type: %d", overlay->type);
+ return NULL;
+ }
+ }
+
+ static void
+ _overlays_show(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Delayed_Data *dd = data;
+
+ int zoom;
+ double max_lon, min_lon, max_lat, min_lat;
+ Evas_Coord vw, vh;
+
+ _region_max_min_get(dd->overlays, &max_lon, &min_lon, &max_lat, &min_lat);
+ dd->lon = (max_lon + min_lon) / 2;
+ dd->lat = (max_lat + min_lat) / 2;
+
+ zoom = dd->wd->src_tile->zoom_min;
+ _viewport_size_get(dd->wd, &vw, &vh);
+ while (zoom <= dd->wd->src_tile->zoom_max)
+ {
+ Evas_Coord size, max_x, max_y, min_x, min_y;
+ size = pow(2.0, zoom) * dd->wd->tsize;
+ _region_to_coord_convert(dd->wd, min_lon, max_lat, size, &min_x, &max_y);
+ _region_to_coord_convert(dd->wd, max_lon, min_lat, size, &max_x, &min_y);
+ if ((max_x - min_x) > vw || (max_y - min_y) > vh) break;
+ zoom++;
+ }
+ zoom--;
+
+ zoom_do(dd->wd, zoom);
+ _region_show(dd);
+ evas_object_smart_changed(dd->wd->pan_smart);
+ }
+
+ static void
+ _pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+ if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
+
+ sd->wd->pan_x = x;
+ sd->wd->pan_y = y;
+ evas_object_smart_changed(obj);
+ }
+
+ static void
+ _pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+ if (x) *x = sd->wd->pan_x;
+ if (y) *y = sd->wd->pan_y;
+ }
+
+ static void
+ _pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+ Evas_Coord ow, oh;
+ evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
+ ow = sd->wd->size.w - ow;
+ oh = sd->wd->size.h - oh;
+ if (ow < 0) ow = 0;
+ if (oh < 0) oh = 0;
+ if (x) *x = ow;
+ if (y) *y = oh;
+ }
+
+ static void
+ _pan_min_get(Evas_Object *obj __UNUSED__, Evas_Coord *x, Evas_Coord *y)
+ {
+ if (x) *x = 0;
+ if (y) *y = 0;
+ }
+
+ static void
+ _pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+ if (w) *w = sd->wd->size.w;
+ if (h) *h = sd->wd->size.h;
+ }
+
+ static void
+ _pan_add(Evas_Object *obj)
+ {
+ Pan *sd;
+ Evas_Object_Smart_Clipped_Data *cd;
+ parent_sc.add(obj);
+ cd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(cd);
+ sd = ELM_NEW(Pan);
+ sd->__clipped_data = *cd;
+ free(cd);
+ evas_object_smart_data_set(obj, sd);
+ }
+
+ static void
+ _pan_resize(Evas_Object *obj, Evas_Coord w __UNUSED__, Evas_Coord h __UNUSED__)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+
+ _sizing_eval(sd->wd);
+ elm_map_zoom_mode_set(sd->wd->obj, sd->wd->mode);
+ evas_object_smart_changed(obj);
+ }
+
+ static void
+ _pan_calculate(Evas_Object *obj)
+ {
+ Pan *sd = evas_object_smart_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(sd);
+
+ Evas_Coord w, h;
+ evas_object_geometry_get(sd->wd->pan_smart, NULL, NULL, &w, &h);
+ if (w <= 0 || h <= 0) return;
+
+ _grid_place(sd->wd);
+ _marker_place(sd->wd);
+ _overlay_place(sd->wd);
+ _track_place(sd->wd);
+ _delayed_do(sd->wd);
+ }
+
+ static void
+ _pan_move(Evas_Object *obj, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ evas_object_smart_changed(obj);
+ }
+
+ static void
+ _hold_on(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ elm_smart_scroller_hold_set(wd->scr, 1);
+ }
+
+ static void
+ _hold_off(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ elm_smart_scroller_hold_set(wd->scr, 0);
+ }
+
+ static void
+ _freeze_on(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ elm_smart_scroller_freeze_set(wd->scr, 1);
+ }
+
+ static void
+ _freeze_off(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Widget_Data *wd = data;
+ elm_smart_scroller_freeze_set(wd->scr, 0);
+ }
+
+ static void
+ _elm_map_marker_remove(Elm_Map_Marker *marker)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ Widget_Data *wd = marker->wd;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if ((marker->content) && (marker->clas->func.del))
+ marker->clas->func.del(wd->obj, marker, marker->data, marker->content);
+
+ if (marker->bubble) _bubble_free(marker->bubble);
+ if (marker->group) _marker_group_free(marker->group);
+
+ if (marker->group_clas)
+ marker->group_clas->markers = eina_list_remove(marker->group_clas->markers, marker);
+ wd->markers = eina_list_remove(wd->markers, marker);
+
+ evas_object_del(marker->obj);
+ free(marker);
+
+ evas_object_smart_changed(wd->pan_smart);
+ #else
+ (void) marker;
+ #endif
+ }
+
+ static Eina_Bool
+ cb_dump_name_attrs(void *data, const char *key, const char *value)
+ {
+ Name_Dump *dump = (Name_Dump*)data;
+ if (!dump) return EINA_FALSE;
+
+ if (!strncmp(key, NOMINATIM_ATTR_LON, sizeof(NOMINATIM_ATTR_LON))) dump->lon = atof(value);
+ else if (!strncmp(key, NOMINATIM_ATTR_LAT, sizeof(NOMINATIM_ATTR_LAT))) dump->lat = atof(value);
+
+ return EINA_TRUE;
+ }
+
+ static Eina_Bool
+ cb_route_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
+ {
+ Route_Dump *dump = data;
+ if (!dump) return EINA_FALSE;
+
+ switch (type)
+ {
+ case EINA_SIMPLE_XML_OPEN:
+ case EINA_SIMPLE_XML_OPEN_EMPTY:
+ {
+ const char *attrs;
+
+ attrs = eina_simple_xml_tag_attributes_find(value, length);
+ if (!attrs)
+ {
+ if (!strncmp(value, YOURS_DISTANCE, length)) dump->id = ROUTE_XML_DISTANCE;
+ else if (!strncmp(value, YOURS_DESCRIPTION, length)) dump->id = ROUTE_XML_DESCRIPTION;
+ else if (!strncmp(value, YOURS_COORDINATES, length)) dump->id = ROUTE_XML_COORDINATES;
+ else dump->id = ROUTE_XML_NONE;
+ }
+ }
+ break;
+ case EINA_SIMPLE_XML_DATA:
+ {
+ char *buf = malloc(length);
+ if (!buf) return EINA_FALSE;
+ snprintf(buf, length, "%s", value);
+ if (dump->id == ROUTE_XML_DISTANCE) dump->distance = atof(buf);
+ else if (!(dump->description) && (dump->id == ROUTE_XML_DESCRIPTION)) dump->description = strdup(buf);
+ else if (dump->id == ROUTE_XML_COORDINATES) dump->coordinates = strdup(buf);
+ free(buf);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return EINA_TRUE;
+ }
+
+ static Eina_Bool
+ cb_name_dump(void *data, Eina_Simple_XML_Type type, const char *value, unsigned offset __UNUSED__, unsigned length)
+ {
+ Name_Dump *dump = data;
+ if (!dump) return EINA_FALSE;
+
+ switch (type)
+ {
+ case EINA_SIMPLE_XML_OPEN:
+ case EINA_SIMPLE_XML_OPEN_EMPTY:
+ {
+ const char *attrs;
+ attrs = eina_simple_xml_tag_attributes_find(value, length);
+ if (attrs)
+ {
+ if (!strncmp(value, NOMINATIM_RESULT, sizeof(NOMINATIM_RESULT) - 1)) dump->id = NAME_XML_NAME;
+ else dump->id = NAME_XML_NONE;
+
+ eina_simple_xml_attributes_parse
+ (attrs, length - (attrs - value), cb_dump_name_attrs, dump);
+ }
+ }
+ break;
+ case EINA_SIMPLE_XML_DATA:
+ {
+ char *buf = malloc(length + 1);
+ if (!buf) return EINA_FALSE;
+ snprintf(buf, length + 1, "%s", value);
+ if (dump->id == NAME_XML_NAME) dump->address = strdup(buf);
+ free(buf);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return EINA_TRUE;
+ }
+
+ static void
+ _kml_parse(Elm_Map_Route *r)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(r);
+ EINA_SAFETY_ON_NULL_RETURN(r->fname);
+
+ FILE *f;
+ char **str;
+ unsigned int ele, idx;
+ double lon, lat;
+
+ Route_Dump dump = {0, r->fname, 0.0, NULL, NULL};
+
+ f = fopen(r->fname, "rb");
+ if (f)
+ {
+ long sz;
+
+ fseek(f, 0, SEEK_END);
+ sz = ftell(f);
+ if (sz > 0)
+ {
+ char *buf;
+
+ fseek(f, 0, SEEK_SET);
+ buf = malloc(sz);
+ if (buf)
+ {
+ if (fread(buf, 1, sz, f))
+ {
+ eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump,
+ &dump);
+ free(buf);
+ }
+ }
+ }
+ fclose(f);
+
+ if (dump.distance) r->info.distance = dump.distance;
+ if (dump.description)
+ {
+ eina_stringshare_replace(&r->info.waypoints, dump.description);
+ str = eina_str_split_full(dump.description, "\n", 0, &ele);
+ r->info.waypoint_count = ele;
+ for (idx = 0; idx < ele; idx++)
+ {
+ Path_Waypoint *wp = ELM_NEW(Path_Waypoint);
+ if (wp)
+ {
+ wp->wd = r->wd;
+ wp->point = eina_stringshare_add(str[idx]);
+ DBG("%s", str[idx]);
+ r->waypoint = eina_list_append(r->waypoint, wp);
+ }
+ }
+ if (str && str[0])
+ {
+ free(str[0]);
+ free(str);
+ }
+ }
+ else WRN("description is not found !");
+
+ if (dump.coordinates)
+ {
+ eina_stringshare_replace(&r->info.nodes, dump.coordinates);
+ str = eina_str_split_full(dump.coordinates, "\n", 0, &ele);
+ r->info.node_count = ele;
+ for (idx = 0; idx < ele; idx++)
+ {
+ sscanf(str[idx], "%lf,%lf", &lon, &lat);
+ Path_Node *n = ELM_NEW(Path_Node);
+ if (n)
+ {
+ n->wd = r->wd;
+ n->pos.lon = lon;
+ n->pos.lat = lat;
+ n->idx = idx;
+ DBG("%lf:%lf", lon, lat);
+ n->pos.address = NULL;
+ r->nodes = eina_list_append(r->nodes, n);
+ }
+ }
+ if (str && str[0])
+ {
+ free(str[0]);
+ free(str);
+ }
+ }
+ }
+ }
+
+ static void
+ _name_parse(Elm_Map_Name *n)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(n);
+ EINA_SAFETY_ON_NULL_RETURN(n->fname);
+
+ FILE *f;
+
+ Name_Dump dump = {0, NULL, 0.0, 0.0};
+
+ f = fopen(n->fname, "rb");
+ if (f)
+ {
+ long sz;
+
+ fseek(f, 0, SEEK_END);
+ sz = ftell(f);
+ if (sz > 0)
+ {
+ char *buf;
+
+ fseek(f, 0, SEEK_SET);
+ buf = malloc(sz);
+ if (buf)
+ {
+ if (fread(buf, 1, sz, f))
+ {
+ eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump);
+ free(buf);
+ }
+ }
+ }
+ fclose(f);
+
+ if (dump.address)
+ {
+ INF("[%lf : %lf] ADDRESS : %s", n->lon, n->lat, dump.address);
+ n->address = strdup(dump.address);
+ }
+ n->lon = dump.lon;
+ n->lat = dump.lat;
+ }
+ }
+
+ Grid *_get_current_grid(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ Eina_List *l;
+ Grid *g = NULL, *ret = NULL;
+ EINA_LIST_FOREACH(wd->grids, l, g)
+ {
+ if (wd->zoom == g->zoom)
+ {
+ ret = g;
+ break;
+ }
+ }
+ return ret;
+ }
+
+ static void
+ _route_cb(void *data, const char *file, int status)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ EINA_SAFETY_ON_NULL_RETURN(file);
+
+ Elm_Map_Route *route = data;
+ Widget_Data *wd = route->wd;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ route->job = NULL;
+ if (status == 200)
+ {
+ _kml_parse(route);
+ INF("Route request success from (%lf, %lf) to (%lf, %lf)",
+ route->flon, route->flat, route->tlon, route->tlat);
+ if (route->cb) route->cb(route->data, wd->obj, route);
+ evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOADED, NULL);
+ }
+ else
+ {
+ ERR("Route request failed: %d", status);
+ if (route->cb) route->cb(route->data, wd->obj, NULL);
+ evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOADED_FAIL, NULL);
+ }
+
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,stop", "elm");
+ }
+
+ static void
+ _name_cb(void *data, const char *file, int status)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ EINA_SAFETY_ON_NULL_RETURN(file);
+
+ Elm_Map_Name *name = data;
+ Widget_Data *wd = name->wd;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ name->job = NULL;
+ if (status == 200)
+ {
+ _name_parse(name);
+ INF("Name request success address:%s, lon:%lf, lat:%lf",
+ name->address, name->lon, name->lat);
+ if (name->cb) name->cb(name->data, wd->obj, name);
+ evas_object_smart_callback_call(wd->obj, SIG_NAME_LOADED, NULL);
+ }
+ else
+ {
+ ERR("Name request failed: %d", status);
+ if (name->cb) name->cb(name->data, wd->obj, NULL);
+ evas_object_smart_callback_call(wd->obj, SIG_NAME_LOADED_FAIL, NULL);
+ }
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,stop", "elm");
+ }
+
+
+
+ static Elm_Map_Name *
+ _name_request(const Evas_Object *obj, int method, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->src_name, NULL);
+
+
+ char *url;
+ char fname[PATH_MAX];
+
+ if (!ecore_file_exists(CACHE_NAME_ROOT)) ecore_file_mkpath(CACHE_NAME_ROOT);
+
+ url = wd->src_name->url_cb(wd->obj, method, address, lon, lat);
+ if (!url)
+ {
+ ERR("Name URL is NULL");
+ return NULL;
+ }
+
+ Elm_Map_Name *name = ELM_NEW(Elm_Map_Name);
+ name->wd = wd;
+ snprintf(fname, sizeof(fname), CACHE_NAME_ROOT"/%d", rand());
+ name->fname = strdup(fname);
+ name->method = method;
+ if (method == ELM_MAP_NAME_METHOD_SEARCH) name->address = strdup(address);
+ else if (method == ELM_MAP_NAME_METHOD_REVERSE)
+ {
+ name->lon = lon;
+ name->lat = lat;
+ }
+ name->cb = name_cb;
+ name->data = data;
+
+ if (!ecore_file_download_full(url, name->fname, _name_cb, NULL, name,
+ &(name->job), wd->ua) || !(name->job))
+ {
+ ERR("Can't request Name from %s to %s", url, name->fname);
+ if (name->address) free(name->address);
+ free(name->fname);
+ free(name);
+ return NULL;
+ }
+ INF("Name requested from %s to %s", url, name->fname);
+ free(url);
+
+ wd->names = eina_list_append(wd->names, name);
+ evas_object_smart_callback_call(wd->obj, SIG_NAME_LOAD, name);
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,start", "elm");
+ return name;
+ }
+
+ static Evas_Event_Flags
+ _pinch_zoom_start_cb(void *data, void *event_info __UNUSED__)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, EVAS_EVENT_FLAG_NONE);
+ Widget_Data *wd = data;
+
+ wd->pinch_zoom = wd->zoom_detail;
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Evas_Event_Flags
+ _pinch_zoom_cb(void *data, void *event_info)
+ {
+ Widget_Data *wd = data;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
+ if (!wd->paused)
+ {
+ Elm_Gesture_Zoom_Info *ei = event_info;
+ zoom_do(wd, wd->pinch_zoom + ei->zoom - 1);
+ }
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Evas_Event_Flags
+ _pinch_rotate_cb(void *data, void *event_info)
+ {
+ Widget_Data *wd = data;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
+ if (!wd->paused)
+ {
+ int x, y, w, h;
+ Elm_Gesture_Rotate_Info *ei = event_info;
+ evas_object_geometry_get(wd->obj, &x, &y, &w, &h);
+
+ wd->rotate.d = wd->rotate.a + ei->angle - ei->base_angle;
+ wd->rotate.cx = x + ((double)w * 0.5);
+ wd->rotate.cy = y + ((double)h * 0.5);
+
+ evas_object_smart_changed(wd->pan_smart);
+ }
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Evas_Event_Flags
+ _pinch_rotate_end_cb(void *data, void *event_info __UNUSED__)
+ {
+ Widget_Data *wd = data;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EVAS_EVENT_FLAG_NONE);
+
+ wd->rotate.a = wd->rotate.d;
+
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Eina_Bool
+ _source_tile_mod_cb(Eina_Module *m, void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
+
+ Widget_Data *wd = data;
+ Source_Tile *s;
+ Elm_Map_Module_Source_Name_Func name_cb;
+ Elm_Map_Module_Tile_Zoom_Min_Func zoom_min;
+ Elm_Map_Module_Tile_Zoom_Max_Func zoom_max;
+ Elm_Map_Module_Tile_Url_Func url_cb;
+ Elm_Map_Module_Tile_Geo_to_Coord_Func geo_to_coord;
+ Elm_Map_Module_Tile_Coord_to_Geo_Func coord_to_geo;
+ const char *file;
+
+ file = eina_module_file_get(m);
+ if (!eina_module_load(m))
+ {
+ ERR("Could not load module \"%s\": %s", file,
+ eina_error_msg_get(eina_error_get()));
+ return EINA_FALSE;
+ }
+
+ name_cb = eina_module_symbol_get(m, "map_module_source_name_get");
+ zoom_min = eina_module_symbol_get(m, "map_module_tile_zoom_min_get");
+ zoom_max = eina_module_symbol_get(m, "map_module_tile_zoom_max_get");
+ url_cb = eina_module_symbol_get(m, "map_module_tile_url_get");
+ geo_to_coord = eina_module_symbol_get(m, "map_module_tile_geo_to_coord");
+ coord_to_geo = eina_module_symbol_get(m, "map_module_tile_coord_to_geo");
+
+ if ((!name_cb) || (!zoom_min) || (!zoom_max) || (!url_cb) ||
+ (!geo_to_coord) || (!coord_to_geo))
+ {
+ WRN("Could not find map module functions from module \"%s\": %s",
+ file, eina_error_msg_get(eina_error_get()));
+ eina_module_unload(m);
+ return EINA_FALSE;
+ }
+ s = ELM_NEW(Source_Tile);
+ s->name = name_cb();
+ s->zoom_min = zoom_min();
+ s->zoom_max = zoom_max();
+ s->url_cb = url_cb;
+ s->geo_to_coord = geo_to_coord;
+ s->coord_to_geo = coord_to_geo;
+ wd->src_tiles = eina_list_append(wd->src_tiles, s);
+
+ return EINA_TRUE;
+ }
+
+ static void
+ _source_tile_load(Widget_Data *wd)
+ {
+ unsigned int idx;
+ Eina_List *l;
+ Source_Tile *s;
+
+ // Load from hard coded data
+ for (idx = 0; idx < (sizeof(src_tiles) / sizeof(Source_Tile)); idx++)
+ {
+ s= ELM_NEW(Source_Tile);
+ s->name = src_tiles[idx].name;
+ s->zoom_min = src_tiles[idx].zoom_min;
+ s->zoom_max = src_tiles[idx].zoom_max;
+ s->url_cb = src_tiles[idx].url_cb;
+ s->geo_to_coord = src_tiles[idx].geo_to_coord;
+ s->coord_to_geo = src_tiles[idx].coord_to_geo;
+ wd->src_tiles = eina_list_append(wd->src_tiles, s);
+ }
+
+ // Load from modules
+ wd->src_tile_mods = eina_module_list_get(wd->src_tile_mods, MODULES_PATH, 1,
+ &_source_tile_mod_cb, wd);
+
+ // Set default source
+ wd->src_tile = eina_list_nth(wd->src_tiles, 0);
+
+ // Make name strings
+ idx = 0;
+ wd->src_tile_names = calloc((eina_list_count(wd->src_tiles) + 1),
+ sizeof(char *));
+ EINA_LIST_FOREACH(wd->src_tiles, l, s)
+ {
+ eina_stringshare_replace(&wd->src_tile_names[idx], s->name);
+ INF("source : %s", wd->src_tile_names[idx]);
+ idx++;
+ }
+ }
+
+ static void
+ _source_tile_unload(Widget_Data *wd)
+ {
+ int idx = 0;
+ Source_Tile *s;
+
+ for (idx = 0; wd->src_tile_names[idx]; idx++)
+ eina_stringshare_del(wd->src_tile_names[idx]);
+ EINA_LIST_FREE(wd->src_tiles, s) free(s);
+ eina_module_list_free(wd->src_tile_mods);
+ }
+
+ static void
+ _source_tile_set(Widget_Data *wd, const char *source_name)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(source_name);
+ Source_Tile *s;
+ Eina_List *l;
+
+ if (wd->src_tile && !strcmp(wd->src_tile->name, source_name)) return;
+
+ EINA_LIST_FOREACH(wd->src_tiles, l, s)
+ {
+ if (!strcmp(s->name, source_name))
+ {
+ wd->src_tile = s;
+ break;
+ }
+ }
+ if (!wd->src_tile)
+ {
+ ERR("source name (%s) is not found", source_name);
+ return;
+ }
+
+ if (wd->src_tile->zoom_max < wd->zoom)
+ wd->zoom = wd->src_tile->zoom_max;
+ else if (wd->src_tile->zoom_min > wd->zoom)
+ wd->zoom = wd->src_tile->zoom_min;
+
+ if (wd->src_tile->zoom_max < wd->zoom_max)
+ wd->zoom_max = wd->src_tile->zoom_max;
+ if (wd->src_tile->zoom_min > wd->zoom_min)
+ wd->zoom_min = wd->src_tile->zoom_min;
+
+ _grid_all_clear(wd);
+ _grid_all_create(wd);
+ zoom_do(wd, wd->zoom);
+ }
+
+ static Eina_Bool
+ _source_route_mod_cb(Eina_Module *m, void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
+
+ Widget_Data *wd = data;
+ Source_Route *s;
+ Elm_Map_Module_Source_Name_Func name_cb;
+ Elm_Map_Module_Route_Url_Func url_cb;
+ const char *file;
+
+ file = eina_module_file_get(m);
+ if (!eina_module_load(m))
+ {
+ ERR("Could not load module \"%s\": %s", file,
+ eina_error_msg_get(eina_error_get()));
+ return EINA_FALSE;
+ }
+
+ name_cb = eina_module_symbol_get(m, "map_module_source_name_get");
+ url_cb = eina_module_symbol_get(m, "map_module_route_url_get");
+
+ if ((!name_cb) || (!url_cb))
+ {
+ WRN("Could not find map module functions from module \"%s\": %s",
+ file, eina_error_msg_get(eina_error_get()));
+ eina_module_unload(m);
+ return EINA_FALSE;
+ }
+ s = ELM_NEW(Source_Tile);
+ s->name = name_cb();
+ s->url_cb = url_cb;
+ wd->src_routes = eina_list_append(wd->src_routes, s);
+
+ eina_module_unload(m);
+ return EINA_TRUE;
+ }
+
+ static void
+ _source_route_load(Widget_Data *wd)
+ {
+ unsigned int idx;
+ Eina_List *l;
+ Source_Route *s;
+
+ // Load from hard coded data
+ for (idx = 0; idx < (sizeof(src_routes) / sizeof(Source_Route)); idx++)
+ {
+ s= ELM_NEW(Source_Route);
+ s->name = src_routes[idx].name;
+ s->url_cb = src_routes[idx].url_cb;
+ wd->src_routes = eina_list_append(wd->src_routes, s);
+ }
+
+ // Load from modules
+ wd->src_route_mods = eina_module_list_get(wd->src_route_mods, MODULES_PATH,
+ 1, &_source_route_mod_cb, wd);
+
+ // Set default source
+ wd->src_route = eina_list_nth(wd->src_routes, 0);
+
+ // Make name strings
+ idx = 0;
+ wd->src_route_names = calloc((eina_list_count(wd->src_routes) + 1),
+ sizeof(char *));
+ EINA_LIST_FOREACH(wd->src_routes, l, s)
+ {
+ eina_stringshare_replace(&wd->src_route_names[idx], s->name);
+ INF("source : %s", wd->src_route_names[idx]);
+ idx++;
+ }
+ }
+
+ static void
+ _source_route_unload(Widget_Data *wd)
+ {
+ int idx = 0;
+ Source_Route *s;
+
+ for (idx = 0; wd->src_route_names[idx]; idx++)
+ eina_stringshare_del(wd->src_route_names[idx]);
+ EINA_LIST_FREE(wd->src_routes, s) free(s);
+ eina_module_list_free(wd->src_route_mods);
+ }
+
+ static void
+ _source_route_set(Widget_Data *wd, const char *source_name)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(source_name);
+ Source_Route *s;
+ Eina_List *l;
+
+ if (wd->src_route && !strcmp(wd->src_route->name, source_name)) return;
+
+ EINA_LIST_FOREACH(wd->src_routes, l, s)
+ {
+ if (!strcmp(s->name, source_name))
+ {
+ wd->src_route = s;
+ break;
+ }
+ }
+ if (!wd->src_route)
+ {
+ ERR("source name (%s) is not found", source_name);
+ return;
+ }
+ }
+
+ static Eina_Bool
+ _source_name_mod_cb(Eina_Module *m, void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
+
+ Widget_Data *wd = data;
+ Source_Name *s;
+ Elm_Map_Module_Source_Name_Func name_cb;
+ Elm_Map_Module_Name_Url_Func url_cb;
+ const char *file;
+
+ file = eina_module_file_get(m);
+ if (!eina_module_load(m))
+ {
+ ERR("Could not load module \"%s\": %s", file,
+ eina_error_msg_get(eina_error_get()));
+ return EINA_FALSE;
+ }
+
+ name_cb = eina_module_symbol_get(m, "map_module_source_name_get");
+ url_cb = eina_module_symbol_get(m, "map_module_name_url_get");
+
+ if ((!name_cb) || (!url_cb))
+ {
+ WRN("Could not find map module functions from module \"%s\": %s",
+ file, eina_error_msg_get(eina_error_get()));
+ eina_module_unload(m);
+ return EINA_FALSE;
+ }
+ s = ELM_NEW(Source_Tile);
+ s->name = name_cb();
+ s->url_cb = url_cb;
+ wd->src_names = eina_list_append(wd->src_names, s);
+
+ eina_module_unload(m);
+ return EINA_TRUE;
+ }
+
+ static void
+ _source_name_load(Widget_Data *wd)
+ {
+ unsigned int idx;
+ Eina_List *l;
+ Source_Name *s;
+
+ // Load from hard coded data
+ for (idx = 0; idx < (sizeof(src_names) / sizeof(Source_Name)); idx++)
+ {
+ s= ELM_NEW(Source_Name);
+ s->name = src_names[idx].name;
+ s->url_cb = src_names[idx].url_cb;
+ wd->src_names = eina_list_append(wd->src_names, s);
+ }
+
+ // Load from modules
+ wd->src_name_mods = eina_module_list_get(wd->src_name_mods, MODULES_PATH, 1,
+ &_source_name_mod_cb, wd);
+
+ // Set default source
+ wd->src_name = eina_list_nth(wd->src_names, 0);
+
+ // Make name strings
+ idx = 0;
+ wd->src_name_names = calloc((eina_list_count(wd->src_names) + 1),
+ sizeof(char *));
+ EINA_LIST_FOREACH(wd->src_names, l, s)
+ {
+ eina_stringshare_replace(&wd->src_name_names[idx], s->name);
+ INF("source : %s", wd->src_name_names[idx]);
+ idx++;
+ }
+ }
+
+ static void
+ _source_name_unload(Widget_Data *wd)
+ {
+ int idx = 0;
+ Source_Name *s;
+
+ for (idx = 0; wd->src_name_names[idx]; idx++)
+ eina_stringshare_del(wd->src_name_names[idx]);
+ EINA_LIST_FREE(wd->src_names, s) free(s);
+ eina_module_list_free(wd->src_name_mods);
+ }
+
+ static void
+ _source_name_set(Widget_Data *wd, const char *source_name)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(source_name);
+
+ Source_Name *s;
+ Eina_List *l;
+
+ if (wd->src_name && !strcmp(wd->src_name->name, source_name)) return;
+
+ EINA_LIST_FOREACH(wd->src_names, l, s)
+ {
+ if (!strcmp(s->name, source_name))
+ {
+ wd->src_name = s;
+ break;
+ }
+ }
+ if (!wd->src_name)
+ {
+ ERR("source name (%s) is not found", source_name);
+ return;
+ }
+ }
+
+ static void
+ _source_all_load(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ _source_tile_load(wd);
+ _source_route_load(wd);
+ _source_name_load(wd);
+ }
+
+ static void
+ _source_all_unload(Widget_Data *wd)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ _source_tile_unload(wd);
+ _source_route_unload(wd);
+ _source_name_unload(wd);
+ }
+
+ static void
+ _zoom_mode_set(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Delayed_Data *dd = data;
+
+ dd->wd->mode = dd->mode;
+ if (dd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
+ {
+ Evas_Coord w, h;
+ Evas_Coord vw, vh;
+
+ double zoom;
+ double diff;
+
+ w = dd->wd->size.w;
+ h = dd->wd->size.h;
+ zoom = dd->wd->zoom_detail;
+ _viewport_size_get(dd->wd, &vw, &vh);
+
+ if (dd->mode == ELM_MAP_ZOOM_MODE_AUTO_FIT)
+ {
+ if ((w < vw) && (h < vh))
+ {
+ diff = 0.01;
+ while ((w < vw) && (h < vh))
+ {
+ zoom += diff;
+ w = pow(2.0, zoom) * dd->wd->tsize;
+ h = pow(2.0, zoom) * dd->wd->tsize;
+ }
+ }
+ else
+ {
+ diff = -0.01;
+ while ((w > vw) || (h > vh))
+ {
+ zoom += diff;
+ w = pow(2.0, zoom) * dd->wd->tsize;
+ h = pow(2.0, zoom) * dd->wd->tsize;
+ }
+ }
+
+ }
+ else if (dd->mode == ELM_MAP_ZOOM_MODE_AUTO_FILL)
+ {
+ if ((w < vw) || (h < vh))
+ {
+ diff = 0.01;
+ while ((w < vw) || (h < vh))
+ {
+ zoom += diff;
+ w = pow(2.0, zoom) * dd->wd->tsize;
+ h = pow(2.0, zoom) * dd->wd->tsize;
+ }
+ }
+ else
+ {
+ diff = -0.01;
+ while ((w > vw) && (h > vh))
+ {
+ zoom += diff;
+ w = pow(2.0, zoom) * dd->wd->tsize;
+ h = pow(2.0, zoom) * dd->wd->tsize;
+ }
+ }
+ }
+ zoom_with_animation(dd->wd, zoom, 10);
+ }
+ }
+
+ static void
+ _zoom_set(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Delayed_Data *dd = data;
+
+ if (dd->wd->paused) zoom_do(dd->wd, dd->zoom);
+ else zoom_with_animation(dd->wd, dd->zoom, 10);
+ evas_object_smart_changed(dd->wd->pan_smart);
+ }
+
+ static void
+ _region_bring_in(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Delayed_Data *dd = data;
+ int x, y, w, h;
+
+ _region_to_coord_convert(dd->wd, dd->lon, dd->lat, dd->wd->size.w, &x, &y);
+ _viewport_size_get(dd->wd, &w, &h);
+ x = x - (w / 2);
+ y = y - (h / 2);
+ elm_smart_scroller_region_bring_in(dd->wd->scr, x, y, w, h);
+ evas_object_smart_changed(dd->wd->pan_smart);
+ }
+
+ static void
+ _marker_list_show(void *data)
+ {
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ Delayed_Data *dd = data;
+ int zoom;
+ double max_lon = -180, min_lon = 180;
+ double max_lat = -90, min_lat = 90;
+ Evas_Coord vw, vh;
+ Elm_Map_Marker *marker;
+
+ EINA_LIST_FREE(dd->markers, marker)
+ {
+ if (marker->longitude > max_lon) max_lon = marker->longitude;
+ if (marker->longitude < min_lon) min_lon = marker->longitude;
+ if (marker->latitude > max_lat) max_lat = marker->latitude;
+ if (marker->latitude < min_lat) min_lat = marker->latitude;
+ }
+ dd->lon = (max_lon + min_lon) / 2;
+ dd->lat = (max_lat + min_lat) / 2;
+
+ zoom = dd->wd->src_tile->zoom_min;
+ _viewport_size_get(dd->wd, &vw, &vh);
+ while (zoom <= dd->wd->src_tile->zoom_max)
+ {
+ Evas_Coord size, max_x, max_y, min_x, min_y;
+ size = pow(2.0, zoom) * dd->wd->tsize;
+ _region_to_coord_convert(dd->wd, min_lon, max_lat, size, &min_x, &max_y);
+ _region_to_coord_convert(dd->wd, max_lon, min_lat, size, &max_x, &min_y);
+ if ((max_x - min_x) > vw || (max_y - min_y) > vh) break;
+ zoom++;
+ }
+ zoom--;
+
+ zoom_do(dd->wd, zoom);
+ _region_show(dd);
+ evas_object_smart_changed(dd->wd->pan_smart);
+ }
+
+ static char *
+ _mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+ {
+ char buf[PATH_MAX];
+ // ((x+y+zoom)%3)+'a' is requesting map images from distributed tile servers (eg., a, b, c)
+ snprintf(buf, sizeof(buf), "http://%c.tile.openstreetmap.org/%d/%d/%d.png",
+ ((x + y + zoom) % 3) + 'a', zoom, x, y);
+ return strdup(buf);
+ }
+
+ static char *
+ _osmarender_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "http://%c.tah.openstreetmap.org/Tiles/tile/%d/%d/%d.png",
+ ((x + y + zoom) % 3) + 'a', zoom, x, y);
+ return strdup(buf);
+ }
+
+ static char *
+ _cyclemap_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "http://%c.tile.opencyclemap.org/cycle/%d/%d/%d.png",
+ (( x + y + zoom) % 3) + 'a', zoom, x, y);
+ return strdup(buf);
+ }
+
+ static char *
+ _mapquest_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "http://otile%d.mqcdn.com/tiles/1.0.0/osm/%d/%d/%d.png",
+ ((x + y + zoom) % 4) + 1, zoom, x, y);
+ return strdup(buf);
+ }
+
+ static char *
+ _mapquest_aerial_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "http://oatile%d.mqcdn.com/naip/%d/%d/%d.png",
+ ((x + y + zoom) % 4) + 1, zoom, x, y);
+ return strdup(buf);
+ }
+
+ static char *_yours_url_cb(Evas_Object *obj __UNUSED__, const char *type_name, int method, double flon, double flat, double tlon, double tlat)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%lf&flon=%lf&tlat=%lf&tlon=%lf&v=%s&fast=%d&instructions=1",
+ ROUTE_YOURS_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+ }
+
+ // TODO: fix monav api
+ /*
+ static char *_monav_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%f&flon=%f&tlat=%f&tlon=%f&v=%s&fast=%d&instructions=1",
+ ROUTE_MONAV_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+ }
+ */
+
+ // TODO: fix ors api
+ /*
+ static char *_ors_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+ {
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%f&flon=%f&tlat=%f&tlon=%f&v=%s&fast=%d&instructions=1",
+ ROUTE_ORS_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+ }
+ */
+
+ static char *
+ _nominatim_url_cb(Evas_Object *obj, int method, const char *name, double lon, double lat)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) strdup("");
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, strdup(""));
+
+ char **str;
+ unsigned int ele, idx;
+ char search_url[PATH_MAX];
+ char buf[PATH_MAX];
+
+ if (method == ELM_MAP_NAME_METHOD_SEARCH)
+ {
+ search_url[0] = '\0';
+ str = eina_str_split_full(name, " ", 0, &ele);
+ for (idx = 0; idx < ele; idx++)
+ {
+ eina_strlcat(search_url, str[idx], sizeof(search_url));
+ if (!(idx == (ele-1)))
+ eina_strlcat(search_url, "+", sizeof(search_url));
+ }
+ snprintf(buf, sizeof(buf),
+ "%s/search?q=%s&format=xml&polygon=0&addressdetails=0",
+ NAME_NOMINATIM_URL, search_url);
+
+ if (str && str[0])
+ {
+ free(str[0]);
+ free(str);
+ }
+ }
+ else if (method == ELM_MAP_NAME_METHOD_REVERSE)
+ snprintf(buf, sizeof(buf),
+ "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0",
+ NAME_NOMINATIM_URL, lat, lon, (int)wd->zoom);
+ else strcpy(buf, "");
+
+ return strdup(buf);
+ }
+
+ static void
+ _on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if (elm_widget_focus_get(obj))
+ {
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,focus", "elm");
+ evas_object_focus_set(wd->obj, EINA_TRUE);
+ }
+ else
+ {
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr), "elm,action,unfocus", "elm");
+ evas_object_focus_set(wd->obj, EINA_FALSE);
+ }
+ }
+
+ static void
+ _del_hook(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if (wd->map) evas_map_free(wd->map);
+ free(wd);
+ }
+
+ static void
+ _del_pre_hook(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ Eina_List *l, *ll;
+ Elm_Map_Route *r;
+ Elm_Map_Name *na;
+ Evas_Object *track;
+ Elm_Map_Marker *marker;
+ Elm_Map_Group_Class *group_clas;
+ Elm_Map_Marker_Class *clas;
+ Elm_Map_Overlay *overlay;
+ Delayed_Data *dd;
+
+ EINA_LIST_FOREACH_SAFE(wd->routes, l, ll, r) elm_map_route_del(r);
+ eina_list_free(wd->routes);
+
+ EINA_LIST_FOREACH_SAFE(wd->names, l, ll, na) elm_map_name_del(na);
+ eina_list_free(wd->names);
+
+ EINA_LIST_FOREACH_SAFE(wd->overlays, l, ll, overlay)
+ elm_map_overlay_del(overlay);
+ eina_list_free(wd->overlays);
+
+ EINA_LIST_FREE(wd->track, track) evas_object_del(track);
+
+ EINA_LIST_FOREACH_SAFE(wd->markers, l, ll, marker)
+ _elm_map_marker_remove(marker);
+ eina_list_free(wd->markers);
+
+ EINA_LIST_FREE(wd->group_classes, group_clas)
+ {
+ eina_list_free(group_clas->markers);
+ if (group_clas->style) eina_stringshare_del(group_clas->style);
+ free(group_clas);
+ }
+ EINA_LIST_FREE(wd->marker_classes, clas)
+ {
+ if (clas->style) eina_stringshare_del(clas->style);
+ free(clas);
+ }
+
+ if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
+ if (wd->long_timer) ecore_timer_del(wd->long_timer);
+
+ if (wd->delayed_jobs) EINA_LIST_FREE(wd->delayed_jobs, dd) free(dd);
+
+ if (wd->user_agent) eina_stringshare_del(wd->user_agent);
+ if (wd->ua) eina_hash_free(wd->ua);
+
+ if (wd->zoom_timer) ecore_timer_del(wd->zoom_timer);
+ if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
+
+ _grid_all_clear(wd);
+ // Removal of download list should be after grid clear.
+ if (wd->download_idler) ecore_idler_del(wd->download_idler);
+ eina_list_free(wd->download_list);
+
+ _source_all_unload(wd);
+
+ if (!ecore_file_recursive_rm(CACHE_ROOT))
+ ERR("Deletion of %s failed", CACHE_ROOT);
+ }
+
+ static void
+ _theme_hook(Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", elm_widget_style_get(obj));
+ _sizing_eval(wd);
+ }
+
+ static Eina_Bool
+ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type type, void *event_info)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
+
+ Evas_Coord x, y;
+ Evas_Coord vh;
+ Evas_Coord step_x, step_y, page_x, page_y;
+
+ if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
+ Evas_Event_Key_Down *ev = event_info;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
+
+ elm_smart_scroller_child_pos_get(wd->scr, &x, &y);
+ elm_smart_scroller_step_size_get(wd->scr, &step_x, &step_y);
+ elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
+ _viewport_size_get(wd, NULL, &vh);
+
+ if ((!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left")))
+ {
+ x -= step_x;
+ }
+ else if ((!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, "KP_Right")))
+ {
+ x += step_x;
+ }
+ else if ((!strcmp(ev->keyname, "Up")) || (!strcmp(ev->keyname, "KP_Up")))
+ {
+ y -= step_y;
+ }
+ else if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")))
+ {
+ y += step_y;
+ }
+ else if ((!strcmp(ev->keyname, "Prior")) || (!strcmp(ev->keyname, "KP_Prior")))
+ {
+ if (page_y < 0)
+ y -= -(page_y * vh) / 100;
+ else
+ y -= page_y;
+ }
+ else if ((!strcmp(ev->keyname, "Next")) || (!strcmp(ev->keyname, "KP_Next")))
+ {
+ if (page_y < 0)
+ y += -(page_y * vh) / 100;
+ else
+ y += page_y;
+ }
+ else if (!strcmp(ev->keyname, "KP_Add"))
+ {
+ zoom_with_animation(wd, wd->zoom + 1, 10);
+ return EINA_TRUE;
+ }
+ else if (!strcmp(ev->keyname, "KP_Subtract"))
+ {
+ zoom_with_animation(wd, wd->zoom - 1, 10);
+ return EINA_TRUE;
+ }
+ else return EINA_FALSE;
+
+ ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
+ elm_smart_scroller_child_pos_set(wd->scr, x, y);
+
+ return EINA_TRUE;
+ }
++>>>>>>> remotes/origin/upstream
+ #endif
+
+ EAPI Evas_Object *
+ elm_map_add(Evas_Object *parent)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
++<<<<<<< HEAD
++ Evas *e;
++ Widget_Data *wd;
++ Evas_Coord minw, minh;
++ Evas_Object *obj;
++ static Evas_Smart *smart = NULL;
++ Eina_Bool bounce = _elm_config->thumbscroll_bounce_enable;
++
++ ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
++
++ ELM_SET_WIDTYPE(widtype, "map");
++ elm_widget_type_set(obj, "map");
++ elm_widget_sub_object_add(parent, obj);
++ elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
++ elm_widget_data_set(obj, wd);
++ elm_widget_del_hook_set(obj, _del_hook);
++ elm_widget_del_pre_hook_set(obj, _del_pre_hook);
++ elm_widget_theme_hook_set(obj, _theme_hook);
++ elm_widget_can_focus_set(obj, EINA_TRUE);
++ elm_widget_event_hook_set(obj, _event_hook);
++
++ wd->scr = elm_smart_scroller_add(e);
++ elm_smart_scroller_widget_set(wd->scr, obj);
++ elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", "default");
++ evas_object_smart_callback_add(wd->scr, "scroll", _scr, obj);
++ evas_object_smart_callback_add(wd->scr, "drag", _scr, obj);
++ elm_widget_resize_object_set(obj, wd->scr);
++ elm_smart_scroller_wheel_disabled_set(wd->scr, EINA_TRUE);
++
++ evas_object_smart_callback_add(wd->scr, "animate,start", _scr_anim_start, obj);
++ evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, obj);
++ evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj);
++ evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj);
++ evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj);
++
++ elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce);
++
++ wd->zoom_min = 0xFF;
++ wd->zoom_max = 0X00;
++ source_init(obj);
++
++ wd->obj = obj;
++ wd->map = evas_map_new(4);
++ if (!wd->map) return NULL;
++
++ wd->markers_max_num = 30;
++ wd->pinch.level = 1.0;
++ wd->pinch.diff = 1.0;
++ wd->markers = calloc(wd->zoom_max + 1, sizeof(void*));
++
++ evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
++ evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj);
++ evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, obj);
++ evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, obj);
++
++ if (!smart)
++ {
++ static Evas_Smart_Class sc;
++
++ evas_object_smart_clipped_smart_set(&_pan_sc);
++ sc = _pan_sc;
++ sc.name = "elm_map_pan";
++ sc.version = EVAS_SMART_CLASS_VERSION;
++ sc.add = _pan_add;
++ sc.del = _pan_del;
++ sc.resize = _pan_resize;
++ sc.move = _pan_move;
++ sc.calculate = _pan_calculate;
++ smart = evas_smart_class_new(&sc);
++ }
++ if (smart)
++ {
++ wd->pan_smart = evas_object_smart_add(e, smart);
++ wd->pan = evas_object_smart_data_get(wd->pan_smart);
++ wd->pan->wd = wd;
++ }
++
++ elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart,
++ _pan_set, _pan_get, _pan_max_get,
++ _pan_min_get, _pan_child_size_get);
++
++ wd->rect = evas_object_rectangle_add(e);
++ evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_RESIZE,
++ _rect_resize_cb, obj);
++ evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_DOWN,
++ _mouse_down, obj);
++ evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_UP,
++ _mouse_up, obj);
++ evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL,
++ _mouse_wheel_cb, obj);
++
++ evas_object_smart_member_add(wd->rect, wd->pan_smart);
++ elm_widget_sub_object_add(obj, wd->rect);
++ evas_object_show(wd->rect);
++ evas_object_color_set(wd->rect, 0, 0, 0, 0);
++
++ wd->ges = elm_gesture_layer_add(obj);
++ if (!wd->ges) ERR("elm_gesture_layer_add() failed");
++ elm_gesture_layer_attach(wd->ges, wd->rect);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START,
++ zoom_start_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE,
++ zoom_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END,
++ zoom_end_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT,
++ zoom_end_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_MOVE,
++ rotate_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_END,
++ rotate_end_cb, wd);
++ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_ABORT,
++ rotate_end_cb, wd);
++
++ wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
++ wd->id = ((int)getpid() << 16) | idnum;
++ idnum++;
++
++ wd->tsize = 256;
++ edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr),
++ &minw, &minh);
++ evas_object_size_hint_min_set(obj, minw, minh);
++
++ wd->sep_maps_markers = evas_object_rectangle_add(evas_object_evas_get(obj));
++ evas_object_smart_member_add(wd->sep_maps_markers, wd->pan_smart);
++
++ grid_create_all(obj);
++
++ wd->paused = EINA_TRUE;
++ elm_map_zoom_set(obj, 0);
++ wd->paused = EINA_FALSE;
++ _sizing_eval(obj);
++
++ // TODO: convert Elementary to subclassing of Evas_Smart_Class
++ // TODO: and save some bytes, making descriptions per-class and not instance!
++ evas_object_smart_callbacks_descriptions_set(obj, _signals);
++
++ if (!ecore_file_download_protocol_available("http://"))
++ {
++ ERR("Ecore must be built with curl support for the map widget!");
++ }
++
++ return obj;
++#else
++ (void) parent;
++ return NULL;
++=======
+ Evas *e;
+ Widget_Data *wd;
+ Evas_Object *obj;
+ Evas_Coord minw, minh;
+
+ ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
+ ELM_SET_WIDTYPE(widtype, "map");
+ elm_widget_type_set(obj, "map");
+ elm_widget_sub_object_add(parent, obj);
+ elm_widget_data_set(obj, wd);
+ elm_widget_can_focus_set(obj, EINA_TRUE);
+ elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
+ elm_widget_del_hook_set(obj, _del_hook);
+ elm_widget_del_pre_hook_set(obj, _del_pre_hook);
+ elm_widget_theme_hook_set(obj, _theme_hook);
+ elm_widget_event_hook_set(obj, _event_hook);
+ evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, wd);
+ evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, wd);
+ evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, wd);
+ evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, wd);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _mouse_down, wd);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_UP,
+ _mouse_up, wd);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_WHEEL,
+ _mouse_wheel_cb,wd);
+ wd->obj = obj;
+
+ wd->scr = elm_smart_scroller_add(e);
+ elm_widget_sub_object_add(obj, wd->scr);
+ elm_smart_scroller_widget_set(wd->scr, obj);
+ elm_smart_scroller_object_theme_set(obj, wd->scr, "map", "base", "default");
+ elm_widget_resize_object_set(obj, wd->scr);
+ elm_smart_scroller_wheel_disabled_set(wd->scr, EINA_TRUE);
+ elm_smart_scroller_bounce_allow_set(wd->scr,
+ _elm_config->thumbscroll_bounce_enable,
+ _elm_config->thumbscroll_bounce_enable);
+ evas_object_event_callback_add(wd->scr, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, wd);
+ evas_object_smart_callback_add(wd->scr, "scroll", _scr, wd);
+ evas_object_smart_callback_add(wd->scr, "drag", _scr, wd);
+ evas_object_smart_callback_add(wd->scr, "animate,start", _scr_anim_start, wd);
+ evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, wd);
+
+ if (!smart)
+ {
+ evas_object_smart_clipped_smart_set(&parent_sc);
+ sc = parent_sc;
+ sc.name = "elm_map_pan";
+ sc.version = EVAS_SMART_CLASS_VERSION;
+ sc.add = _pan_add;
+ sc.resize = _pan_resize;
+ sc.move = _pan_move;
+ sc.calculate = _pan_calculate;
+ smart = evas_smart_class_new(&sc);
+ }
+ if (smart)
+ {
+ Pan *pan;
+ wd->pan_smart = evas_object_smart_add(e, smart);
+ pan = evas_object_smart_data_get(wd->pan_smart);
+ pan->wd = wd;
+ }
+ elm_widget_sub_object_add(obj, wd->pan_smart);
+
+ elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart,
+ _pan_set, _pan_get, _pan_max_get,
+ _pan_min_get, _pan_child_size_get);
+ edje_object_size_min_calc(elm_smart_scroller_edje_object_get(wd->scr),
+ &minw, &minh);
+ evas_object_size_hint_min_set(obj, minw, minh);
+
+ wd->ges = elm_gesture_layer_add(obj);
+ if (!wd->ges) ERR("elm_gesture_layer_add() failed");
+ elm_gesture_layer_attach(wd->ges, obj);
+ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START,
+ _pinch_zoom_start_cb, wd);
+ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE,
+ _pinch_zoom_cb, wd);
+ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_MOVE,
+ _pinch_rotate_cb, wd);
+ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_END,
+ _pinch_rotate_end_cb, wd);
+ elm_gesture_layer_cb_set(wd->ges, ELM_GESTURE_ROTATE, ELM_GESTURE_STATE_ABORT,
+ _pinch_rotate_end_cb, wd);
+
+ wd->sep_maps_markers = evas_object_rectangle_add(evas_object_evas_get(obj));
+ elm_widget_sub_object_add(obj, wd->sep_maps_markers);
+ evas_object_smart_member_add(wd->sep_maps_markers, wd->pan_smart);
+
+ wd->map = evas_map_new(EVAS_MAP_POINT);
+
+ _source_all_load(wd);
+ wd->zoom_min = wd->src_tile->zoom_min;
+ wd->zoom_max = wd->src_tile->zoom_max;
+ // FIXME: Tile Provider is better to provide tile size!
+ wd->tsize = DEFAULT_TILE_SIZE;
+
+ srand(time(NULL));
+
+ wd->id = ((int)getpid() << 16) | idnum;
+ idnum++;
+ _grid_all_create(wd);
+
+ zoom_do(wd, 0);
+
+ wd->mode = ELM_MAP_ZOOM_MODE_MANUAL;
+ wd->markers_max_num = MARER_MAX_NUMBER;
+
+ // TODO: convert Elementary to subclassing of Evas_Smart_Class
+ // TODO: and save some bytes, making descriptions per-class and not instance!
+ evas_object_smart_callbacks_descriptions_set(obj, _signals);
+
+ if (!ecore_file_download_protocol_available("http://"))
+ ERR("Ecore must be built with curl support for the map widget!");
+
+ return obj;
+ #else
+ (void) parent;
+ return NULL;
+ #endif
+ }
+
+ EAPI void
+ elm_map_zoom_set(Evas_Object *obj, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(wd->src_tile);
+
+ if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL) return;
+ if (zoom < 0) zoom = 0;
+ if (wd->zoom == zoom) return;
+ if (zoom > wd->src_tile->zoom_max) zoom = wd->src_tile->zoom_max;
+ if (zoom < wd->src_tile->zoom_min) zoom = wd->src_tile->zoom_min;
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->func = _zoom_set;
+ data->wd = wd;
+ data->zoom = zoom;
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) obj;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI int
+ elm_map_zoom_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, 0);
+ return wd->zoom;
+ #else
+ (void) obj;
+ return 0;
+ #endif
+ }
+
+ EAPI void
+ elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if ((mode == ELM_MAP_ZOOM_MODE_MANUAL) && (wd->mode == !!mode)) return;
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->mode = mode;
+ data->func = _zoom_mode_set;
+ data->wd = wd;
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) obj;
+ (void) mode;
+ #endif
+ }
+
+ EAPI Elm_Map_Zoom_Mode
+ elm_map_zoom_mode_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ZOOM_MODE_MANUAL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, ELM_MAP_ZOOM_MODE_MANUAL);
+
+ return wd->mode;
+ #else
+ (void) obj;
+ return ELM_MAP_ZOOM_MODE_MANUAL;
+ #endif
+ }
+
+ EAPI void
+ elm_map_zoom_max_set(Evas_Object *obj, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(wd->src_tile);
+
+ if ((zoom > wd->src_tile->zoom_max) || (zoom < wd->src_tile->zoom_min))
+ return;
+ wd->zoom_max = zoom;
+ #else
+ (void) obj;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI int
+ elm_map_zoom_max_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) 18;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, -1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->src_tile, -1);
+
+ return wd->zoom_max;
+ #else
+ (void) obj;
+ return 18;
+ #endif
+ }
+
+ EAPI void
+ elm_map_zoom_min_set(Evas_Object *obj, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(wd->src_tile);
+
+ if ((zoom > wd->src_tile->zoom_max) || (zoom < wd->src_tile->zoom_min))
+ return;
+ wd->zoom_min = zoom;
+ #else
+ (void) obj;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI int
+ elm_map_zoom_min_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, -1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->src_tile, -1);
+
+ return wd->zoom_min;
+ #else
+ (void) obj;
+ return 0;
+ #endif
+ }
+
+
+ EAPI void
+ elm_map_region_bring_in(Evas_Object *obj, double lon, double lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->func = _region_bring_in;
+ data->wd = wd;
+ data->lon = lon;
+ data->lat = lat;
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ #endif
+ }
+
+ EAPI void
+ elm_map_region_show(Evas_Object *obj, double lon, double lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->func = _region_show;
+ data->wd = wd;
+ data->lon = lon;
+ data->lat = lat;
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ #endif
+ }
+
+ EAPI void
+ elm_map_region_get(const Evas_Object *obj, double *lon, double *lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ double tlon, tlat;
+ Evas_Coord px, py, vw, vh;
+
+ _pan_geometry_get(wd, &px, &py);
+ _viewport_size_get(wd, &vw, &vh);
+ _coord_to_region_convert(wd, vw/2 - px, vh/2 -py, wd->size.w, &tlon, &tlat);
+ if (lon) *lon = tlon;
+ if (lat) *lat = tlat;
+ #else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ #endif
+ }
+
+ EAPI void
+ elm_map_paused_set(Evas_Object *obj, Eina_Bool paused)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if (wd->paused == !!paused) return;
+ wd->paused = !!paused;
+ if (wd->paused)
+ {
+ if (wd->zoom_animator)
+ {
+ if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
+ wd->zoom_animator = NULL;
+ zoom_do(wd, wd->zoom);
+ }
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,stop", "elm");
+ }
+ else
+ {
+ if (wd->download_num >= 1)
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,start", "elm");
+ }
+ #else
+ (void) obj;
+ (void) paused;
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_map_paused_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
+
+ return wd->paused;
+ #else
+ (void) obj;
+ return EINA_FALSE;
+ #endif
+ }
+
+ EAPI void
+ elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ wd->rotate.d = degree;
+ wd->rotate.cx = cx;
+ wd->rotate.cy = cy;
+
+ evas_object_smart_changed(wd->pan_smart);
+ #else
+ (void) obj;
+ (void) degree;
+ (void) cx;
+ (void) cy;
+ #endif
+ }
+
+ EAPI void
+ elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
- if (degree) *degree = wd->rotate.d;
- if (cx) *cx = wd->rotate.cx;
- if (cy) *cy = wd->rotate.cy;
++ if (degree) *degree = wd->rotate.d;
++ if (cx) *cx = wd->rotate.cx;
++ if (cy) *cy = wd->rotate.cy;
++#else
++ (void) obj;
++ (void) degree;
++ (void) cx;
++ (void) cy;
++#endif
++}
++
++EAPI void
++elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ if ((!wd->wheel_disabled) && (disabled))
++ evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
++ else if ((wd->wheel_disabled) && (!disabled))
++ evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
++ wd->wheel_disabled = !!disabled;
++#else
++ (void) obj;
++ (void) disabled;
++#endif
++}
++
++EAPI Eina_Bool
++elm_map_wheel_disabled_get(const Evas_Object *obj)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
++
++ return wd->wheel_disabled;
++#else
++ (void) obj;
++ return EINA_FALSE;
++#endif
++}
++
++EAPI void
++elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ if (try_num) *try_num = wd->try_num;
++ if (finish_num) *finish_num = wd->finish_num;
++#else
++ (void) obj;
++ (void) try_num;
++ (void) finish_num;
++#endif
++}
++
++EAPI void
++elm_map_canvas_to_region_convert(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, double *lon, double *lat)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(lon);
++ EINA_SAFETY_ON_NULL_RETURN(lat);
++
++ Evas_Coord px, py, vw, vh;
++ _pan_geometry_get(wd, &px, &py);
++ _viewport_size_get(wd, &vw, &vh);
++ _coord_rotate(x - px, y - py, (vw / 2) - px, (vh / 2) - py, -wd->rotate.d,
++ &x, &y);
++ _coord_to_region_convert(wd, x, y, wd->size.w, lon, lat);
++#else
++ (void) obj;
++ (void) x;
++ (void) y;
++ (void) lon;
++ (void) lat;
++#endif
++}
+
- return obj;
++EAPI void
++elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(x);
++ EINA_SAFETY_ON_NULL_RETURN(y);
++
++ Evas_Coord px, py, vw, vh;
++ _pan_geometry_get(wd, &px, &py);
++ _viewport_size_get(wd, &vw, &vh);
++ _region_to_coord_convert(wd, lon, lat, wd->size.w, x, y);
++ _coord_rotate(*x, *y, (vw / 2) - px, (vh / 2) - py, wd->rotate.d,
++ x, y);
++ *x += px;
++ *y += py;
+#else
- (void) parent;
- return NULL;
++ (void) obj;
++ (void) lon;
++ (void) lat;
++ (void) x;
++ (void) y;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_zoom_set(Evas_Object *obj, int zoom)
++=======
++elm_map_user_agent_set(Evas_Object *obj, const char *user_agent)
++>>>>>>> remotes/origin/upstream
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ Eina_List *l;
+ Evas_Coord rx, ry, rw, rh;
+ Evas_Object *p;
+ Elm_Map_Route *r;
+ Evas_Object *route;
+ int z = 0;
+
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(wd->src);
+ if (wd->zoom_animator) return;
+
+ if (zoom < 0) zoom = 0;
+ if (zoom > wd->src->zoom_max) zoom = wd->src->zoom_max;
+ if (zoom < wd->src->zoom_min) zoom = wd->src->zoom_min;
+
+ if ((wd->zoom - zoom) > 0) wd->zoom_method = ZOOM_METHOD_OUT;
+ else if ((wd->zoom - zoom) < 0) wd->zoom_method = ZOOM_METHOD_IN;
+ else wd->zoom_method = ZOOM_METHOD_NONE;
+
+ wd->zoom = zoom;
+ wd->size.ow = wd->size.w;
+ wd->size.oh = wd->size.h;
+ elm_smart_scroller_child_pos_get(wd->scr, &rx, &ry);
+ elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh);
+
+ EINA_LIST_FOREACH(wd->route, l, r)
+ {
+ if (r)
+ {
+ EINA_LIST_FOREACH(r->path, l, p)
+ {
+ evas_object_polygon_points_clear(p);
+ }
+ }
+ }
+
+ EINA_LIST_FOREACH(wd->track, l, route)
+ {
+ evas_object_hide(route);
+ }
+
+ if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
+ {
+ int p2w, p2h;
+ int cumulw, cumulh;
+
+ cumulw = wd->tsize;
+ p2w = 0;
+ while (cumulw <= rw)
+ {
+ p2w++;
+ cumulw *= 2;
+ }
+ p2w--;
+
+ cumulh = wd->tsize;
+ p2h = 0;
+ while (cumulh <= rh)
+ {
+ p2h++;
+ cumulh *= 2;
+ }
+ p2h--;
+
+ if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FIT)
+ {
+ if (p2w < p2h) z = p2w;
+ else z = p2h;
+ }
+ else if (wd->mode == ELM_MAP_ZOOM_MODE_AUTO_FILL)
+ {
+ if (p2w > p2h) z = p2w;
+ else z = p2h;
+ }
+ wd->zoom = z;
+ }
+
+ wd->size.nw = pow(2.0, wd->zoom) * wd->tsize;
+ wd->size.nh = pow(2.0, wd->zoom) * wd->tsize;
+ wd->t = 1.0;
+
+ if ((wd->size.w > 0) && (wd->size.h > 0))
+ {
+ wd->size.spos.x = (double)(rx + (rw / 2)) / (double)wd->size.ow;
+ wd->size.spos.y = (double)(ry + (rh / 2)) / (double)wd->size.oh;
+ }
+ else
+ {
+ wd->size.spos.x = 0.5;
+ wd->size.spos.y = 0.5;
+ }
+
+ if (rw > wd->size.ow) wd->size.spos.x = 0.5;
+ if (rh > wd->size.oh) wd->size.spos.y = 0.5;
+ if (wd->size.spos.x > 1.0) wd->size.spos.x = 1.0;
+ if (wd->size.spos.y > 1.0) wd->size.spos.y = 1.0;
+
+ if (wd->paused)
+ {
+ zoom_do(obj);
+ }
+ else
+ {
+ if (!wd->zoom_animator)
+ {
+ wd->zoom_animator = ecore_animator_add(_zoom_anim, obj);
+ wd->nosmooth++;
+ if (wd->nosmooth == 1) _smooth_update(obj);
+ evas_object_smart_callback_call(obj, SIG_ZOOM_START, NULL);
+ }
+ }
+
+ if (wd->zoom_method != ZOOM_METHOD_NONE) evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, NULL);
#else
(void) obj;
- (void) degree;
- (void) cx;
- (void) cy;
+ (void) zoom;
#endif
}
-EAPI void
-elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+EAPI int
+elm_map_zoom_get(const Evas_Object *obj)
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
- ELM_CHECK_WIDTYPE(obj, widtype);
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
Widget_Data *wd = elm_widget_data_get(obj);
- if ((!wd->wheel_disabled) && (disabled))
- evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
- else if ((wd->wheel_disabled) && (!disabled))
- evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
- wd->wheel_disabled = !!disabled;
+
+ if (!wd) return 0;
+ return wd->zoom;
+#else
+ (void) obj;
+ return 0;
++=======
+ EINA_SAFETY_ON_NULL_RETURN(wd);
++ EINA_SAFETY_ON_NULL_RETURN(user_agent);
+
- (void) disabled;
++ eina_stringshare_replace(&wd->user_agent, user_agent);
++
++ if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL);
++ eina_hash_set(wd->ua, "User-Agent", wd->user_agent);
+ #else
+ (void) obj;
-EAPI Eina_Bool
-elm_map_wheel_disabled_get(const Evas_Object *obj)
++ (void) user_agent;
+ #endif
+ }
+
- ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++EAPI const char *
++elm_map_user_agent_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
++ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
- return wd->wheel_disabled;
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
- return EINA_FALSE;
++ return wd->user_agent;
+ #else
+ (void) obj;
++ return NULL;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
-elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num)
++<<<<<<< HEAD
+elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode)
++=======
++elm_map_source_set(Evas_Object *obj, Elm_Map_Source_Type type, const char *source_name)
++>>>>>>> remotes/origin/upstream
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
- EINA_SAFETY_ON_NULL_RETURN(wd);
++<<<<<<< HEAD
- if (try_num) *try_num = wd->try_num;
- if (finish_num) *finish_num = wd->finish_num;
+ if (!wd) return;
+ if (wd->mode == mode) return;
+ wd->mode = mode;
+
+ if (wd->mode != ELM_MAP_ZOOM_MODE_MANUAL)
+ {
+ int tz = wd->zoom;
+ wd->zoom = 0;
+ elm_map_zoom_set(wd->obj, tz);
+ }
#else
(void) obj;
- (void) try_num;
- (void) finish_num;
+ (void) mode;
#endif
}
#ifdef HAVE_ELEMENTARY_ECORE_CON
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
+ Evas_Coord cx, cy;
+ int rw;
+ double tlon, tlat;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ _region_get(wd, NULL, NULL, &cx, &cy, NULL, NULL);
+ rw = wd->size.w * wd->pinch.level;
+ elm_map_utils_convert_coord_into_geo(obj, cx, cy, rw, &tlon, &tlat);
+ if (lon) *lon = tlon;
+ if (lat) *lat = tlat;
+#else
+ (void) obj;
+ (void) lon;
+ (void) lat;
++=======
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(source_name);
+
+ if (type == ELM_MAP_SOURCE_TYPE_TILE) _source_tile_set(wd, source_name);
+ else if (type == ELM_MAP_SOURCE_TYPE_ROUTE)
+ _source_route_set(wd, source_name);
+ else if (type == ELM_MAP_SOURCE_TYPE_NAME) _source_name_set(wd, source_name);
+ else ERR("Not supported map source type: %d", type);
+
+ #else
+ (void) obj;
+ (void) source_name;
+ #endif
+ }
+
+ EAPI const char *
+ elm_map_source_get(const Evas_Object *obj, Elm_Map_Source_Type type)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->src_tile, NULL);
+
+ if (type == ELM_MAP_SOURCE_TYPE_TILE) return wd->src_tile->name;
+ else if (type == ELM_MAP_SOURCE_TYPE_ROUTE) return wd->src_route->name;
+ else if (type == ELM_MAP_SOURCE_TYPE_NAME) return wd->src_name->name;
+ else ERR("Not supported map source type: %d", type);
+ return NULL;
+ #else
+ (void) obj;
+ return NULL;
+ #endif
+ }
+
+ EAPI const char **
+ elm_map_sources_get(const Evas_Object *obj, Elm_Map_Source_Type type)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ if (type == ELM_MAP_SOURCE_TYPE_TILE) return wd->src_tile_names;
+ else if (type == ELM_MAP_SOURCE_TYPE_ROUTE) return wd->src_route_names;
+ else if (type == ELM_MAP_SOURCE_TYPE_NAME) return wd->src_tile_names;
+ else ERR("Not supported map source type: %d", type);
+ return NULL;
+ #else
+ (void) obj;
+ return NULL;
+ #endif
+ }
+
+ EAPI Elm_Map_Route *
+ elm_map_route_add(Evas_Object *obj, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat, Elm_Map_Route_Cb route_cb, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd->src_route, NULL);
+
+ char *type_name;
+ char *url;
+ char fname[PATH_MAX];
+
+ if (!ecore_file_exists(CACHE_ROUTE_ROOT))
+ ecore_file_mkpath(CACHE_ROUTE_ROOT);
+
+ if (type == ELM_MAP_ROUTE_TYPE_MOTOCAR)
+ type_name = strdup(ROUTE_TYPE_MOTORCAR);
+ else if (type == ELM_MAP_ROUTE_TYPE_BICYCLE)
+ type_name = strdup(ROUTE_TYPE_BICYCLE);
+ else if (type == ELM_MAP_ROUTE_TYPE_FOOT)
+ type_name = strdup(ROUTE_TYPE_FOOT);
+ else type_name = NULL;
+
+ url = wd->src_route->url_cb(obj, type_name, method, flon, flat, tlon, tlat);
+ if (!url)
+ {
+ ERR("Route URL is NULL");
+ if (type_name) free(type_name);
+ return NULL;
+ }
+ if (type_name) free(type_name);
+
+ Elm_Map_Route *route = ELM_NEW(Elm_Map_Route);
+ route->wd = wd;
+ snprintf(fname, sizeof(fname), CACHE_ROUTE_ROOT"/%d", rand());
+ route->fname = strdup(fname);
+ route->type = type;
+ route->method = method;
+ route->flon = flon;
+ route->flat = flat;
+ route->tlon = tlon;
+ route->tlat = tlat;
+ route->cb = route_cb;
+ route->data = data;
+
+ if (!ecore_file_download_full(url, route->fname, _route_cb, NULL, route,
+ &(route->job), wd->ua) || !(route->job))
+ {
+ ERR("Can't request Route from %s to %s", url, route->fname);
+ free(route->fname);
+ free(route);
+ return NULL;
+ }
+ INF("Route requested from %s to %s", url, route->fname);
+ free(url);
+
+ wd->routes = eina_list_append(wd->routes, route);
+ evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOAD, route);
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,start", "elm");
+ return route;
+ #else
+ (void) obj;
+ (void) type;
+ (void) method;
+ (void) flon;
+ (void) flat;
+ (void) tlon;
+ (void) tlat;
+ (void) route_cb;
+ (void) data;
+ return NULL;
+ #endif
+ }
+
+
+ EAPI void
+ elm_map_route_del(Elm_Map_Route *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(route);
+ EINA_SAFETY_ON_NULL_RETURN(route->wd);
+ ELM_CHECK_WIDTYPE(route->wd->obj, widtype);
+
+ Path_Waypoint *w;
+ Path_Node *n;
+
+ if (route->job) ecore_file_download_abort(route->job);
+
+ EINA_LIST_FREE(route->waypoint, w)
+ {
+ if (w->point) eina_stringshare_del(w->point);
+ free(w);
+ }
+
+ EINA_LIST_FREE(route->nodes, n)
+ {
+ if (n->pos.address) eina_stringshare_del(n->pos.address);
+ free(n);
+ }
+
+ if (route->fname)
+ {
+ ecore_file_remove(route->fname);
+ free(route->fname);
+ }
+
+ route->wd->routes = eina_list_remove(route->wd->routes, route);
+ free(route);
+ #else
+ (void) route;
+ #endif
+ }
+
+ EAPI double
+ elm_map_route_distance_get(const Elm_Map_Route *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, 0.0);
+ return route->info.distance;
+ #else
+ (void) route;
+ return 0.0;
+ #endif
+ }
+
+ EAPI const char*
+ elm_map_route_node_get(const Elm_Map_Route *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
+ return route->info.nodes;
+ #else
+ (void) route;
+ return NULL;
+ #endif
+ }
+
+ EAPI const char*
+ elm_map_route_waypoint_get(const Elm_Map_Route *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
+ return route->info.waypoints;
+ #else
+ (void) route;
+ return NULL;
+ #endif
+ }
+
+ EAPI Elm_Map_Name *
+ elm_map_name_add(const Evas_Object *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+
+ if (address)
+ return _name_request(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0, 0,
+ name_cb, data);
+ else
+ return _name_request(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat,
+ name_cb, data);
+ #else
+ (void) obj;
+ (void) address;
+ (void) lon;
+ (void) lat;
+ (void) name_cb;
+ (void) data;
+ return NULL;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_paused_set(Evas_Object *obj, Eina_Bool paused)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if (wd->paused == !!paused) return;
+ wd->paused = !!paused;
+ if (wd->paused)
+ {
+ if (wd->zoom_animator)
+ {
+ if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
+ wd->zoom_animator = NULL;
+ zoom_do(obj);
+ evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
+ }
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,stop", "elm");
+ }
+ else
+ {
+ if (wd->download_num >= 1)
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,start", "elm");
+ }
+#else
+ (void) obj;
+ (void) paused;
#endif
}
EAPI void
- EAPI Eina_Bool
- elm_map_paused_get(const Evas_Object *obj)
+elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if (wd->paused_markers == !!paused) return;
+ wd->paused_markers = paused;
+#else
+ (void) obj;
+ (void) paused;
+#endif
+}
+
++EAPI Eina_Bool
++elm_map_paused_get(const Evas_Object *obj)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return EINA_FALSE;
++ return wd->paused;
++#else
++ (void) obj;
++ return EINA_FALSE;
++#endif
++}
++
++EAPI Eina_Bool
++elm_map_paused_markers_get(const Evas_Object *obj)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++ Widget_Data *wd = elm_widget_data_get(obj);
++
++ if (!wd) return EINA_FALSE;
++ return wd->paused_markers;
++#else
++ (void) obj;
++ return EINA_FALSE;
++=======
+ elm_map_name_del(Elm_Map_Name *name)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(name);
+ EINA_SAFETY_ON_NULL_RETURN(name->wd);
+ ELM_CHECK_WIDTYPE(name->wd->obj, widtype);
+
+ if (name->job) ecore_file_download_abort(name->job);
+ if (name->address) free(name->address);
+ if (name->fname)
+ {
+ ecore_file_remove(name->fname);
+ free(name->fname);
+ }
+
+ name->wd->names = eina_list_remove(name->wd->names, name);
+ free(name);
+ #else
+ (void) name;
+ #endif
+ }
+
+ EAPI const char *
+ elm_map_name_address_get(const Elm_Map_Name *name)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(name->wd, NULL);
+ ELM_CHECK_WIDTYPE(name->wd->obj, widtype) NULL;
+
+ return name->address;
+ #else
+ (void) name;
+ return NULL;
+ #endif
+ }
+
+ EAPI void
+ elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat)
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
- ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
- Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(name);
+ EINA_SAFETY_ON_NULL_RETURN(name->wd);
+ ELM_CHECK_WIDTYPE(name->wd->obj, widtype);
- if (!wd) return EINA_FALSE;
- return wd->paused;
+ if (lon) *lon = name->lon;
+ if (lat) *lat = name->lat;
#else
- (void) obj;
- return EINA_FALSE;
+ (void) name;
+ (void) lon;
+ (void) lat;
#endif
}
- EAPI Eina_Bool
- elm_map_paused_markers_get(const Evas_Object *obj)
-EAPI Elm_Map_Overlay *
-elm_map_overlay_add(Evas_Object *obj, double lon, double lat)
++EAPI Elm_Map_Overlay *
++elm_map_overlay_add(Evas_Object *obj, double lon, double lat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
- ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
++ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
- if (!wd) return EINA_FALSE;
- return wd->paused_markers;
++ Elm_Map_Overlay *overlay = ELM_NEW(Elm_Map_Overlay);
++ overlay->wd = wd;
++ overlay->type = ELM_MAP_OVERLAY_TYPE_DEFAULT;
++ overlay->ovl = _overlay_default_new(wd, lon, lat, "radio");
++ _overlay_default_cb_add(overlay->ovl, _overlay_clicked_cb, overlay);
++ overlay->grp = _overlay_group_new(wd);
++ wd->overlays = eina_list_append(wd->overlays, overlay);
++
++ evas_object_smart_changed(wd->pan_smart);
++ return overlay;
+#else
+ (void) obj;
- return EINA_FALSE;
++ (void) lon;
++ (void) lat;
++ return NULL;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if (try_num)
+ {
+ *try_num = wd->try_num;
+ }
+
+ if (finish_num)
+ {
+ *finish_num = wd->finish_num;
+ }
+#else
+ (void) obj;
+ (void) try_num;
+ (void) finish_num;
+#endif
+}
+
+EAPI void
+elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat)
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
- ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
- EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
- Elm_Map_Overlay *overlay = ELM_NEW(Elm_Map_Overlay);
- overlay->wd = wd;
- overlay->type = ELM_MAP_OVERLAY_TYPE_DEFAULT;
- overlay->ovl = _overlay_default_new(wd, lon, lat, "radio");
- _overlay_default_cb_add(overlay->ovl, _overlay_clicked_cb, overlay);
- overlay->grp = _overlay_group_new(wd);
- wd->overlays = eina_list_append(wd->overlays, overlay);
+ if (!wd) return;
+ int zoom = floor(log(size / 256) / log(2));
+ if ((wd->src) && (wd->src->coord_into_geo))
+ {
+ if (wd->src->coord_into_geo(obj, zoom, x, y, size, lon, lat)) return;
+ }
- evas_object_smart_changed(wd->pan_smart);
- return overlay;
+ if (lon)
+ {
+ *lon = x / (double)size * 360.0 - 180;
+ }
+ if (lat)
+ {
+ double n = ELM_PI - 2.0 * ELM_PI * y / size;
+ *lat = 180.0 / ELM_PI * atan(0.5 * (exp(n) - exp(-n)));
+ }
#else
(void) obj;
+ (void) x;
+ (void) y;
+ (void) size;
(void) lon;
(void) lat;
- return NULL;
-#endif
-}
-
-EAPI void
++=======
+ elm_map_overlay_del(Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ _overlay_default_cb_del(overlay->ovl, _overlay_clicked_cb);
+ _overlay_default_free(overlay->ovl);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ _overlay_bubble_cb_del(overlay->ovl);
+ _overlay_bubble_free(overlay->ovl);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ _overlay_class_free(overlay->ovl);
+
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_ROUTE)
+ _overlay_route_free(overlay->ovl);
+
+ if (overlay->grp)
+ {
+ _overlay_group_cb_del(overlay->grp);
+ _overlay_group_free(overlay->grp, overlay);
+ }
+
+ overlay->wd->overlays = eina_list_remove(overlay->wd->overlays, overlay);
+ evas_object_smart_changed(overlay->wd->pan_smart);
+
+ free(overlay);
+ #else
+ (void) overlay;
+ #endif
+ }
+
+ EAPI Elm_Map_Overlay_Type
+ elm_map_overlay_type_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, ELM_MAP_OVERLAY_TYPE_NONE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, ELM_MAP_OVERLAY_TYPE_NONE);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) ELM_MAP_OVERLAY_TYPE_NONE;
+
+ return overlay->type;
+ #else
+ (void) overlay;
+ return OVERLAY_TYPE_NONE;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ int zoom = floor(log(size / 256) / log(2));
+ if ((wd->src) && (wd->src->geo_into_coord))
+ {
+ if (wd->src->geo_into_coord(obj, zoom, lon, lat, size, x, y)) return;
+ }
+
+ if (x)
+ *x = floor((lon + 180.0) / 360.0 * size);
+ if (y)
+ *y = floor((1.0 - log( tan(lat * ELM_PI / 180.0) + 1.0 / cos(lat * ELM_PI / 180.0)) / ELM_PI) / 2.0 * size);
+#else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ (void) size;
+ (void) x;
+ (void) y;
+#endif
+}
+
+EAPI Elm_Map_Name *
+elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat);
+#else
+ (void) obj;
+ (void) lon;
+ (void) lat;
++=======
+ elm_map_overlay_data_set(Elm_Map_Overlay *overlay, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ overlay->data = data;
+ #else
+ (void) overlay;
+ (void) data;
+ #endif
+ }
+
+ EAPI void *
+ elm_map_overlay_data_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, NULL);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) NULL;
+
+ return overlay->data;
+ #else
+ (void) overlay;
++>>>>>>> remotes/origin/upstream
+ return NULL;
+#endif
+}
+
++<<<<<<< HEAD
+EAPI Elm_Map_Name *
+elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ if (!address) return NULL;
+ return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0.0, 0.0);
+#else
+ (void) obj;
+ (void) address;
return NULL;
#endif
}
+EINA_DEPRECATED EAPI void
+elm_map_utils_rotate_coord(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ _coord_rotate(x, y, cx, cy, degree, xx, yy);
+#else
+ (void) x;
+ (void) y;
+ (void) cx;
+ (void) cy;
+ (void) degree;
+ (void) xx;
+ (void) yy;
++=======
+ EAPI void
+ elm_map_overlay_hide_set(Elm_Map_Overlay *overlay, Eina_Bool hide)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->hide == !!hide) return;
+ overlay->hide = hide;
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) hide;
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_map_overlay_hide_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, EINA_FALSE);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) EINA_FALSE;
+
+ return overlay->hide;
+ #else
+ (void) overlay;
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_canvas_to_geo_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(lon);
+ EINA_SAFETY_ON_NULL_RETURN(lat);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ Evas_Coord xx, yy, w, h, mw, tx, ty, cx, cy;
+ double d;
+
+ _region_get(wd, &xx, &yy, &cx, &cy, &w, &h);
+ mw = wd->size.w * wd->pinch.level;
+ if (w < mw)
+ {
+ xx += x;
+ yy += y;
+ }
+ else
+ {
+ xx = x - xx;
+ yy = y - yy;
+ }
+
+ elm_map_rotate_get(obj, &d, NULL, NULL);
+ _coord_rotate(xx, yy, cx, cy, -d, &tx, &ty);
+ elm_map_utils_convert_coord_into_geo(obj, tx, ty, mw, lon, lat);
+#else
+ (void) obj;
+ (void) x;
+ (void) y;
+ (void) lon;
+ (void) lat;
+#endif
+}
+
+EAPI Elm_Map_Marker *
+elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ int i, j;
+ Eina_List *l;
+ Marker_Group *group;
+ int mpi, mpj;
+ int tabi[9];
+ int tabj[9];
+ const char *s;
+ const char *style;
+ Evas_Object *o;
+
+ if (!wd) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(clas_group, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(clas, NULL);
+
+ Elm_Map_Marker *marker = ELM_NEW(Elm_Map_Marker);
+
+ marker->wd = wd;
+ marker->clas = clas;
+ marker->clas_group = clas_group;
+ marker->longitude = lon;
+ marker->latitude = lat;
+ marker->data = data;
+ marker->x = calloc(wd->zoom_max + 1, sizeof(Evas_Coord));
+ marker->y = calloc(wd->zoom_max + 1, sizeof(Evas_Coord));
+ marker->groups = calloc(wd->zoom_max + 1, sizeof(Marker_Group*));
+
+ tabi[1] = tabi[4] = tabi[6] = -1;
+ tabi[2] = tabi[0] = tabi[7] = 0;
+ tabi[3] = tabi[5] = tabi[8] = 1;
+
+ tabj[1] = tabj[2] = tabj[3] = -1;
+ tabj[4] = tabj[0] = tabj[5] = 0;
+ tabj[6] = tabj[7] = tabj[8] = 1;
+
+ if (!clas_group->priv.set)
+ {
+ style = "radio";
+ if (marker->clas_group && marker->clas_group->style)
+ style = marker->clas_group->style;
+
+ o = edje_object_add(evas_object_evas_get(obj));
+ _elm_theme_object_set(obj, o, "map/marker", style, elm_widget_style_get(obj));
+ s = edje_object_data_get(o, "size_w");
+ if (s) clas_group->priv.edje_w = atoi(s);
+ else clas_group->priv.edje_w = 0;
+ s = edje_object_data_get(o, "size_h");
+ if (s) clas_group->priv.edje_h = atoi(s);
+ else clas_group->priv.edje_h = 0;
+ s = edje_object_data_get(o, "size_max_w");
+ if (s) clas_group->priv.edje_max_w = atoi(s);
+ else clas_group->priv.edje_max_w = 0;
+ s = edje_object_data_get(o, "size_max_h");
+ if (s) clas_group->priv.edje_max_h = atoi(s);
+ else clas_group->priv.edje_max_h = 0;
+ evas_object_del(o);
+
+ clas_group->priv.set = EINA_TRUE;
+ }
+
+ if (!clas->priv.set)
+ {
+ style = "radio";
+ if (marker->clas && marker->clas->style)
+ style = marker->clas->style;
+
+ o = edje_object_add(evas_object_evas_get(obj));
+ _elm_theme_object_set(obj, o, "map/marker", style, elm_widget_style_get(obj));
+ s = edje_object_data_get(o, "size_w");
+ if (s) clas->priv.edje_w = atoi(s);
+ else clas->priv.edje_w = 0;
+ s = edje_object_data_get(o, "size_h");
+ if (s) clas->priv.edje_h = atoi(s);
+ else clas->priv.edje_h = 0;
+ evas_object_del(o);
+
+ clas->priv.set = EINA_TRUE;
+ }
+
+ for (i = clas_group->zoom_displayed; i <= wd->zoom_max; i++)
+ {
+ elm_map_utils_convert_geo_into_coord(obj, lon, lat, pow(2.0, i)*wd->tsize,
+ &(marker->x[i]), &(marker->y[i]));
+
+ //search in the matrixsparse the region where the marker will be
+ mpi = marker->x[i] / wd->tsize;
+ mpj = marker->y[i] / wd->tsize;
+
+ if (!wd->markers[i])
+ {
+ int size = pow(2.0, i);
+ wd->markers[i] = eina_matrixsparse_new(size, size, NULL, NULL);
+ }
+
+ group = NULL;
+ if (i <= clas_group->zoom_grouped)
+ {
+ for (j = 0, group = NULL; j < 9 && !group; j++)
+ {
+ EINA_LIST_FOREACH(eina_matrixsparse_data_idx_get(wd->markers[i], mpj + tabj[j], mpi + tabi[j]),
+ l, group)
+ {
+ if (group->clas == marker->clas_group
+ && ELM_RECTS_INTERSECT(marker->x[i]-clas->priv.edje_w/4,
+ marker->y[i]-clas->priv.edje_h/4, clas->priv.edje_w, clas->priv.edje_h,
+ group->x-group->w/4, group->y-group->h/4, group->w, group->h))
+ {
+ group->markers = eina_list_append(group->markers, marker);
+ group->update_nbelems = EINA_TRUE;
+ group->update_resize = EINA_TRUE;
+
+ group->sum_x += marker->x[i];
+ group->sum_y += marker->y[i];
+ group->x = group->sum_x / eina_list_count(group->markers);
+ group->y = group->sum_y / eina_list_count(group->markers);
+
+ group->w = group->clas->priv.edje_w + group->clas->priv.edje_w/8.
+ * eina_list_count(group->markers);
+ group->h = group->clas->priv.edje_h + group->clas->priv.edje_h/8.
+ * eina_list_count(group->markers);
+ if (group->w > group->clas->priv.edje_max_w) group->w = group->clas->priv.edje_max_w;
+ if (group->h > group->clas->priv.edje_max_h) group->h = group->clas->priv.edje_max_h;
+
+ if (group->obj && eina_list_count(group->markers) == 2)
+ {
+ _group_object_free(group);
+ _group_object_create(group);
+ }
+ if (group->bubble)
+ _group_bubble_content_update(group);
+
+ break;
+ }
+ }
+ }
+ }
+ if (!group)
+ {
+ group = calloc(1, sizeof(Marker_Group));
+ group->wd = wd;
+ group->sum_x = marker->x[i];
+ group->sum_y = marker->y[i];
+ group->x = marker->x[i];
+ group->y = marker->y[i];
+ group->w = clas_group->priv.edje_w;
+ group->h = clas_group->priv.edje_h;
+ group->clas = clas_group;
+
+ group->markers = eina_list_append(group->markers, marker);
+ group->update_nbelems = EINA_TRUE;
+ group->update_resize = EINA_TRUE;
+
+ eina_matrixsparse_cell_idx_get(wd->markers[i], mpj, mpi, &(group->cell));
+
+ if (!group->cell)
+ {
+ l = eina_list_append(NULL, group);
+ eina_matrixsparse_data_idx_set(wd->markers[i], mpj, mpi, l);
+ eina_matrixsparse_cell_idx_get(wd->markers[i], mpj, mpi, &(group->cell));
+ }
+ else
+ {
+ l = eina_matrixsparse_cell_data_get(group->cell);
+ l = eina_list_append(l, group);
+ eina_matrixsparse_cell_data_set(group->cell, l);
+ }
+ }
+ marker->groups[i] = group;
+ }
+
+ if (wd->grids)
+ {
+ Grid *g;
+ Evas_Coord ox, oy, ow, oh;
+ evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+ g = _get_current_grid(wd);
+ marker_place(obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
+ }
+
+ return marker;
+#else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ (void) clas;
+ (void) clas_group;
+ (void) data;
+ return NULL;
++=======
+ elm_map_overlay_displayed_zoom_min_set(Elm_Map_Overlay *overlay, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ overlay->zoom_min = zoom;
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI int
+ elm_map_overlay_displayed_zoom_min_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, 0);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, 0);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) 0;
+
+ return overlay->zoom_min;
+ #else
+ (void) overlay;
+ return 0;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlay_paused_set(Elm_Map_Overlay *overlay, Eina_Bool paused)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->paused == !!paused) return;
+ overlay->paused = paused;
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) paused;
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_map_overlay_paused_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, EINA_FALSE);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) EINA_FALSE;
+
+ return overlay->paused;
+ #else
+ (void) overlay;
+ return EINA_FALSE;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlay_show(Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ Overlay_Default *ovl = overlay->ovl;
+ elm_map_region_show(overlay->wd->obj, ovl->lon, ovl->lat);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ Overlay_Bubble *ovl = overlay->ovl;
+ elm_map_region_show(overlay->wd->obj, ovl->lon, ovl->lat);
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ {
+ Overlay_Class *ovl = overlay->ovl;
+ double lon, lat, max_lo, min_lo, max_la, min_la;
+ _region_max_min_get(ovl->members, &max_lo, &min_lo, &max_la, &min_la);
+ lon = (max_lo + min_lo) / 2;
+ lat = (max_la + min_la) / 2;
+ elm_map_region_show(overlay->wd->obj, lon, lat);
+ }
+ else ERR("Not supported overlay type: %d", overlay->type);
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlays_show(Eina_List *overlays)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlays);
+ EINA_SAFETY_ON_FALSE_RETURN(eina_list_count(overlays));
+
+ Elm_Map_Overlay *overlay;
+ overlay = eina_list_data_get(overlays);
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->func = _overlays_show;
+ data->wd = overlay->wd;
+ data->overlays = eina_list_clone(overlays);
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) overlays;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlay_region_set(Elm_Map_Overlay *overlay, double lon, double lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ Overlay_Default *ovl = overlay->ovl;
+ ovl->lon = lon;
+ ovl->lat = lat;
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ Overlay_Bubble *ovl = overlay->ovl;
+ ovl->lon = lon;
+ ovl->lat = lat;
+ }
+ else ERR("Not supported overlay type: %d", overlay->type);
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) lon;
+ (void) lat;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_marker_remove(Elm_Map_Marker *marker)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ int i;
+ Eina_List *groups;
+ Widget_Data *wd;
+
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ wd = marker->wd;
+ if (!wd) return;
+ for (i = marker->clas_group->zoom_displayed; i <= wd->zoom_max; i++)
+ {
+ marker->groups[i]->markers = eina_list_remove(marker->groups[i]->markers, marker);
+ if (!eina_list_count(marker->groups[i]->markers))
+ {
+ groups = eina_matrixsparse_cell_data_get(marker->groups[i]->cell);
+ groups = eina_list_remove(groups, marker->groups[i]);
+ eina_matrixsparse_cell_data_set(marker->groups[i]->cell, groups);
+
+ _group_object_free(marker->groups[i]);
+ _group_bubble_free(marker->groups[i]);
+ free(marker->groups[i]);
+ }
+ else
+ {
+ marker->groups[i]->sum_x -= marker->x[i];
+ marker->groups[i]->sum_y -= marker->y[i];
+
+ marker->groups[i]->x = marker->groups[i]->sum_x / eina_list_count(marker->groups[i]->markers);
+ marker->groups[i]->y = marker->groups[i]->sum_y / eina_list_count(marker->groups[i]->markers);
+
+ marker->groups[i]->w = marker->groups[i]->clas->priv.edje_w
+ + marker->groups[i]->clas->priv.edje_w/8. * eina_list_count(marker->groups[i]->markers);
+ marker->groups[i]->h = marker->groups[i]->clas->priv.edje_h
+ + marker->groups[i]->clas->priv.edje_h/8. * eina_list_count(marker->groups[i]->markers);
+ if (marker->groups[i]->w > marker->groups[i]->clas->priv.edje_max_w)
+ marker->groups[i]->w = marker->groups[i]->clas->priv.edje_max_w;
+ if (marker->groups[i]->h > marker->groups[i]->clas->priv.edje_max_h)
+ marker->groups[i]->h = marker->groups[i]->clas->priv.edje_max_h;
+
+ if ((marker->groups[i]->obj) && (eina_list_count(marker->groups[i]->markers) == 1))
+ {
+ _group_object_free(marker->groups[i]);
+ _group_object_create(marker->groups[i]);
+ }
+ }
+ }
+
+ if ((marker->content) && (marker->clas->func.del))
+ marker->clas->func.del(marker->wd->obj, marker, marker->data, marker->content);
+ else if (marker->content)
+ evas_object_del(marker->content);
+
+ if (marker->x) free(marker->x);
+ if (marker->y) free(marker->y);
+ if (marker->groups) free(marker->groups);
+
+ free(marker);
+
+ if (wd->grids)
+ {
+ Grid *g;
+ Evas_Coord ox, oy, ow, oh;
+ evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
+ g = _get_current_grid(wd);
+ marker_place(wd->obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
+ }
+#else
+ (void) marker;
++=======
+ elm_map_overlay_region_get(const Elm_Map_Overlay *overlay, double *lon, double *lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ const Overlay_Default *ovl = overlay->ovl;
+ if (lon) *lon = ovl->lon;
+ if (lat) *lat = ovl->lat;
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_BUBBLE)
+ {
+ const Overlay_Bubble *ovl = overlay->ovl;
+ if (lon) *lon = ovl->lon;
+ if (lat) *lat = ovl->lat;
+ }
+ else ERR("Not supported overlay type: %d", overlay->type);
+ #else
+ (void) overlay;
+ (void) lon;
+ (void) lat;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ if (lon) *lon = marker->longitude;
+ if (lat) *lat = marker->latitude;
+#else
+ (void) marker;
+ (void) lon;
+ (void) lat;
#endif
}
EAPI void
+elm_map_marker_bring_in(Elm_Map_Marker *marker)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ elm_map_geo_region_bring_in(marker->wd->obj, marker->longitude, marker->latitude);
+#else
+ (void) marker;
++=======
+ elm_map_overlay_icon_set(Elm_Map_Overlay *overlay, Evas_Object *icon)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(icon);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ _overlay_default_update(overlay->wd, overlay->ovl, NULL, icon,
+ NULL, NULL, NULL);
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ _overlay_class_update(overlay->wd, overlay->ovl, NULL, icon);
+ else ERR("Not supported overlay type: %d", overlay->type);
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) icon;
+ #endif
+ }
+
+ EAPI const Evas_Object *
+ elm_map_overlay_icon_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, NULL);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) NULL;
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ const Overlay_Default *ovl = overlay->ovl;
+ return elm_object_part_content_get(ovl->layout, "elm.icon");
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ {
+ const Overlay_Class *ovl = overlay->ovl;
+ return ovl->icon;
+ }
+ else
+ {
+ ERR("Not supported overlay type: %d", overlay->type);
+ return NULL;
+ }
+ #else
+ (void) overlay;
+ return NULL;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
-#else
- (void) overlay;
- return NULL;
-#endif
-}
++<<<<<<< HEAD
+elm_map_marker_show(Elm_Map_Marker *marker)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ elm_map_geo_region_show(marker->wd->obj, marker->longitude, marker->latitude);
+#else
+ (void) marker;
++=======
+ elm_map_overlay_content_set(Elm_Map_Overlay *overlay, Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(obj);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ _overlay_default_update(overlay->wd, overlay->ovl, obj, NULL, NULL,
+ NULL, NULL);
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ _overlay_class_update(overlay->wd, overlay->ovl, obj, NULL);
+ else ERR("Not supported overlay type: %d", overlay->type);
+
+ evas_object_smart_changed(overlay->wd->pan_smart);
+ #else
+ (void) overlay;
+ (void) obj;
+ #endif
+ }
+
+ EAPI const Evas_Object *
+ elm_map_overlay_content_get(const Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(overlay->wd, NULL);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype) NULL;
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ const Overlay_Default *ovl = overlay->ovl;
+ return elm_object_part_content_get(ovl->layout, "elm.icon");
+ }
+ else if (overlay->type == ELM_MAP_OVERLAY_TYPE_CLASS)
+ {
+ const Overlay_Class *ovl = overlay->ovl;
+ return ovl->icon;
+ }
+ else
+ {
+ ERR("Not supported overlay type: %d", overlay->type);
+ return NULL;
+ }
++#else
++ (void) overlay;
++ return NULL;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_markers_list_show(Eina_List *markers)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ int zoom;
+ double lon, lat;
+ Eina_List *l;
+ Elm_Map_Marker *marker, *m_max_lon = NULL, *m_max_lat = NULL, *m_min_lon = NULL, *m_min_lat = NULL;
+ Evas_Coord rw, rh, xc, yc;
+ Widget_Data *wd;
+
+ EINA_SAFETY_ON_NULL_RETURN(markers);
+ EINA_LIST_FOREACH(markers, l, marker)
+ {
+ wd = marker->wd;
+
+ if ((!m_min_lon) || (marker->longitude < m_min_lon->longitude))
+ m_min_lon = marker;
+
+ if ((!m_max_lon) || (marker->longitude > m_max_lon->longitude))
+ m_max_lon = marker;
+
+ if ((!m_min_lat) || (marker->latitude > m_min_lat->latitude))
+ m_min_lat = marker;
+
+ if ((!m_max_lat) || (marker->latitude < m_max_lat->latitude))
+ m_max_lat = marker;
+ }
+
+ lon = (m_max_lon->longitude - m_min_lon->longitude) / 2. + m_min_lon->longitude;
+ lat = (m_max_lat->latitude - m_min_lat->latitude) / 2. + m_min_lat->latitude;
+
+ elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh);
+ for (zoom = wd->src->zoom_max; zoom > wd->src->zoom_min; zoom--)
+ {
+ Evas_Coord size = pow(2.0, zoom)*wd->tsize;
+ elm_map_utils_convert_geo_into_coord(wd->obj, lon, lat, size, &xc, &yc);
+
+ if ((m_min_lon->x[zoom] - wd->marker_max_w >= xc-rw/2)
+ && (m_min_lat->y[zoom] - wd->marker_max_h >= yc-rh/2)
+ && (m_max_lon->x[zoom] + wd->marker_max_w <= xc+rw/2)
+ && (m_max_lat->y[zoom] + wd->marker_max_h <= yc+rh/2))
+ break;
+ }
-EAPI void
+ elm_map_geo_region_show(wd->obj, lon, lat);
+ elm_map_zoom_set(wd->obj, zoom);
+#else
+ (void) markers;
++=======
+ elm_map_overlay_color_set(Elm_Map_Overlay *overlay, int r, int g , int b, int a)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_ROUTE)
+ {
+ Overlay_Route *route = overlay->ovl;
+ route->color.r = r;
+ route->color.g = g;
+ route->color.b = b;
+ route->color.a = a;
+ }
+ else ERR("Not supported overlay type: %d", overlay->type);
+ #else
+ (void) overlay;
+ (void) r;
+ (void) g;
+ (void) b;
+ (void) a;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlay_color_get(const Elm_Map_Overlay *overlay, int *r, int *g , int *b, int *a)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ int rr, gg, bb, aa;
+
+ if (overlay->type == ELM_MAP_OVERLAY_TYPE_ROUTE)
+ {
+ Overlay_Route *route = overlay->ovl;
+ rr = route->color.r;
+ gg = route->color.g;
+ bb = route->color.b;
+ aa = route->color.a;
+ }
+ else
+ {
+ ERR("Not supported overlay type: %d", overlay->type);
+ return;
+ }
+ if (r) *r = rr;
+ if (g) *g = gg;
+ if (b) *b = bb;
+ if (a) *a = aa;
+ #else
+ (void) overlay;
+ (void) r;
+ (void) g;
+ (void) b;
+ (void) a;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_max_marker_per_group_set(Evas_Object *obj, int max)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ wd->markers_max_num = max;
+#else
+ (void) obj;
+ (void) max;
+#endif
+}
+
+EAPI Evas_Object *
+elm_map_marker_object_get(const Elm_Map_Marker *marker)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(marker, NULL);
+ return marker->content;
+#else
+ (void) marker;
++=======
+ elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(overlay->wd);
+ ELM_CHECK_WIDTYPE(overlay->wd->obj, widtype);
+
+ overlay->cb = get_cb;
+ overlay->cb_data = data;
+ #else
+ (void) overlay;
+ (void) get_cb;
+ (void) data;
+ #endif
+ }
+
+ EAPI Elm_Map_Overlay *
+ elm_map_overlay_class_add(Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Elm_Map_Overlay *overlay = ELM_NEW(Elm_Map_Overlay);
+ overlay->wd = wd;
+ overlay->type = ELM_MAP_OVERLAY_TYPE_CLASS;
+ overlay->ovl = _overlay_class_new(wd, overlay);
+ overlay->grp = NULL;
+ wd->overlays = eina_list_append(wd->overlays, overlay);
+
+ evas_object_smart_changed(wd->pan_smart);
+ return overlay;
+ #else
+ (void) obj;
++>>>>>>> remotes/origin/upstream
return NULL;
#endif
}
EAPI void
- (void) marker;
++<<<<<<< HEAD
+elm_map_marker_update(Elm_Map_Marker *marker)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ if (marker->content)
+ {
+ if (marker->clas->func.del)
+ marker->clas->func.del(marker->wd->obj, marker, marker->data, marker->content);
+ else
+ evas_object_del(marker->content);
+ marker->content = NULL;
+ _group_bubble_content_update(marker->groups[marker->wd->zoom]);
+ }
+#else
++ (void) marker;
++=======
+ elm_map_overlay_class_append(Elm_Map_Overlay *group, Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(group);
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(group->wd);
+ ELM_CHECK_WIDTYPE(group->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(group->type == ELM_MAP_OVERLAY_TYPE_CLASS);
+
+ if (overlay->type != ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ ERR("Currently group supports only default overlays");
+ return;
+ }
+
+ Overlay_Class *ovl = group->ovl;
+ if (eina_list_data_find(ovl->members, overlay))
+ {
+ ERR("Already added overlay into group");
+ return;
+ }
+ ovl->members = eina_list_append(ovl->members, overlay);
+ overlay->grp->clas = group;
+
+ evas_object_smart_changed(group->wd->pan_smart);
+ #else
+ (void) group;
+ (void) overlay;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_bubbles_close(Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Marker_Group *group;
+ Eina_List *l, *l_next;
+
+ if (!wd) return;
+ EINA_LIST_FOREACH_SAFE(wd->opened_bubbles, l, l_next, group)
+ _group_bubble_free(group);
+#else
+ (void) obj;
+#endif
+}
+
+EAPI Elm_Map_Group_Class *
+elm_map_group_class_new(Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return NULL;
+ Elm_Map_Group_Class *clas = calloc(1, sizeof(Elm_Map_Group_Class));
+ clas->zoom_grouped = wd->zoom_max;
+ wd->groups_clas = eina_list_append(wd->groups_clas, clas);
+ return clas;
+#else
+ (void) obj;
+ return NULL;
+#endif
+}
+
+EAPI void
+elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ eina_stringshare_replace(&clas->style, style);
+#else
+ (void) clas;
+ (void) style;
#endif
}
EAPI void
+elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, ElmMapGroupIconGetFunc icon_get)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.icon_get = icon_get;
+#else
+ (void) clas;
+ (void) icon_get;
++=======
+ elm_map_overlay_class_remove(Elm_Map_Overlay *group, Elm_Map_Overlay *overlay)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(group);
+ EINA_SAFETY_ON_NULL_RETURN(overlay);
+ EINA_SAFETY_ON_NULL_RETURN(group->wd);
+ ELM_CHECK_WIDTYPE(group->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(group->type == ELM_MAP_OVERLAY_TYPE_CLASS);
+
+ if (overlay->type != ELM_MAP_OVERLAY_TYPE_DEFAULT)
+ {
+ ERR("Currently group supports only default overlays");
+ return;
+ }
+ Overlay_Class *ovl = group->ovl;
+ ovl->members = eina_list_remove(ovl->members, overlay);
+ overlay->grp->clas = NULL;
+ _overlay_group_update(group->wd, overlay->grp, NULL);
+
+ evas_object_smart_changed(group->wd->pan_smart);
+ #else
+ (void) group;
+ (void) overlay;
+ #endif
+ }
+
+ EAPI void
+ elm_map_overlay_class_zoom_max_set(Elm_Map_Overlay *group, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(group);
+ EINA_SAFETY_ON_NULL_RETURN(group->wd);
+ ELM_CHECK_WIDTYPE(group->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(group->type == ELM_MAP_OVERLAY_TYPE_CLASS);
+
+ Overlay_Class *ovl = group->ovl;
+ if (ovl->zoom_max == !!zoom) return;
+ ovl->zoom_max = zoom;
+
+ evas_object_smart_changed(group->wd->pan_smart);
+ #else
+ (void) group;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI int
+ elm_map_overlay_class_zoom_max_get(const Elm_Map_Overlay *group)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(group, OVERLAY_CLASS_ZOOM_MAX);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(group->wd, OVERLAY_CLASS_ZOOM_MAX);
+ ELM_CHECK_WIDTYPE(group->wd->obj, widtype) OVERLAY_CLASS_ZOOM_MAX;
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(group->type == ELM_MAP_OVERLAY_TYPE_CLASS, OVERLAY_CLASS_ZOOM_MAX);
+
+ const Overlay_Class *ovl = group->ovl;
+ return ovl->zoom_max;
+ #else
+ (void) group;
+ return OVERLAY_CLASS_ZOOM_MAX;
+ #endif
+ }
+
+ EAPI Elm_Map_Overlay *
+ elm_map_overlay_bubble_add(Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Elm_Map_Overlay *overlay = ELM_NEW(Elm_Map_Overlay);
+ overlay->wd = wd;
+ overlay->type = ELM_MAP_OVERLAY_TYPE_BUBBLE;
+ overlay->ovl = _overlay_bubble_new(wd);
+ _overlay_bubble_cb_add(overlay->ovl, overlay);
+ overlay->grp = _overlay_group_new(wd);
+ wd->overlays = eina_list_append(wd->overlays, overlay);
+
+ evas_object_smart_changed(wd->pan_smart);
+ return overlay;
+ #else
+ (void) obj;
+ return NULL;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->data = data;
+#else
+ (void) clas;
+ (void) data;
++=======
+ elm_map_overlay_bubble_follow(Elm_Map_Overlay *bubble, Elm_Map_Overlay *parent)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ EINA_SAFETY_ON_NULL_RETURN(parent);
+ ELM_CHECK_WIDTYPE(bubble->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(bubble->type == ELM_MAP_OVERLAY_TYPE_BUBBLE);
+
+ Overlay_Bubble *ovl = bubble->ovl;
+ Evas_Object *pobj = _overlay_obj_get(parent);
+ if (!pobj) return;
+
+ if (ovl->pobj)
+ {
+ evas_object_event_callback_del_full(ovl->pobj, EVAS_CALLBACK_HIDE,
+ _overlay_bubble_hide_cb, ovl);
+ evas_object_event_callback_del_full(ovl->pobj, EVAS_CALLBACK_SHOW,
+ _overlay_bubble_chase_cb, ovl);
+ evas_object_event_callback_del_full(ovl->pobj, EVAS_CALLBACK_MOVE,
+ _overlay_bubble_chase_cb, ovl);
+ }
+
+ ovl->pobj = pobj;
+ evas_object_event_callback_add(ovl->pobj, EVAS_CALLBACK_HIDE,
+ _overlay_bubble_hide_cb, ovl);
+ evas_object_event_callback_add(ovl->pobj, EVAS_CALLBACK_SHOW,
+ _overlay_bubble_chase_cb, ovl);
+ evas_object_event_callback_add(ovl->pobj, EVAS_CALLBACK_MOVE,
+ _overlay_bubble_chase_cb, ovl);
+
+ _overlay_bubble_chase(ovl);
+ evas_object_smart_changed(bubble->wd->pan_smart);
+ #else
+ (void) bubble;
+ (void) parent;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->zoom_displayed = zoom;
+#else
+ (void) clas;
+ (void) zoom;
++=======
+ elm_map_overlay_bubble_content_append(Elm_Map_Overlay *bubble, Evas_Object *content)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ EINA_SAFETY_ON_NULL_RETURN(content);
+ ELM_CHECK_WIDTYPE(bubble->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(bubble->type == ELM_MAP_OVERLAY_TYPE_BUBBLE);
+
+ Overlay_Bubble *bb = bubble->ovl;
+ elm_box_pack_end(bb->bx, content);
+
+ evas_object_smart_changed(bubble->wd->pan_smart);
+ #else
+ (void) bubble;
+ (void) content;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->zoom_grouped = zoom;
+#else
+ (void) clas;
+ (void) zoom;
#endif
}
EAPI void
+elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ if (clas->hide == hide) return;
+ clas->hide = hide;
+ if (wd->grids)
+ {
+ Grid *g;
+ Evas_Coord ox, oy, ow, oh;
+ evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
+ g = _get_current_grid(wd);
+ marker_place(obj, g, wd->pan_x, wd->pan_y, ox, oy, ow, oh);
+ }
+#else
+ (void) obj;
+ (void) clas;
+ (void) hide;
+#endif
+}
+
+EAPI Elm_Map_Marker_Class *
+elm_map_marker_class_new(Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return NULL;
+ Elm_Map_Marker_Class *clas = calloc(1, sizeof(Elm_Map_Marker_Class));
+ wd->markers_clas = eina_list_append(wd->markers_clas, clas);
+ return clas;
+#else
+ (void) obj;
++=======
+ elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(bubble);
+ ELM_CHECK_WIDTYPE(bubble->wd->obj, widtype);
+ EINA_SAFETY_ON_FALSE_RETURN(bubble->type == ELM_MAP_OVERLAY_TYPE_BUBBLE);
+
+ Overlay_Bubble *bb = bubble->ovl;
+ elm_box_clear(bb->bx);
+
+ evas_object_smart_changed(bubble->wd->pan_smart);
+ #else
+ (void) bubble;
+ #endif
+ }
+
+ EAPI Elm_Map_Overlay *
+ elm_map_overlay_route_add(Evas_Object *obj, const Elm_Map_Route *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route->wd, NULL);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(obj == route->wd->obj, NULL);
+
+ Elm_Map_Overlay *overlay = ELM_NEW(Elm_Map_Overlay);
+ overlay->wd = wd;
+ overlay->type = ELM_MAP_OVERLAY_TYPE_ROUTE;
+ overlay->ovl = _overlay_route_new(wd, route);
+ overlay->grp = _overlay_group_new(wd);
+ wd->overlays = eina_list_append(wd->overlays, overlay);
+
+ evas_object_smart_changed(wd->pan_smart);
+ return overlay;
+ #else
+ (void) obj;
+ (void) route;
+ return NULL;
+ #endif
+ }
+
+ #ifdef ELM_EMAP
+ EAPI Evas_Object *
+ elm_map_track_add(Evas_Object *obj, void *emap)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EMap_Route *emapr = emap;
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
+
+ Evas_Object *route = elm_route_add(obj);
+ elm_route_emap_set(route, emapr);
+ wd->track = eina_list_append(wd->track, route);
+
+ return route;
+ #else
+ (void) obj;
+ (void) emap;
++>>>>>>> remotes/origin/upstream
return NULL;
#endif
}
EAPI void
-EAPI int
-elm_map_source_zoom_min_get(const Evas_Object *obj)
-{
- return elm_map_zoom_min_get(obj);
++<<<<<<< HEAD
+elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ eina_stringshare_replace(&clas->style, style);
+#else
+ (void) clas;
+ (void) style;
+#endif
+}
+
+EAPI void
+elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerIconGetFunc icon_get)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.icon_get = icon_get;
+#else
+ (void) clas;
+ (void) icon_get;
+#endif
+}
+
+EAPI void
+elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerGetFunc get)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.get = get;
+#else
+ (void) clas;
+ (void) get;
+#endif
+}
+
+EAPI void
+elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerDelFunc del)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.del = del;
+#else
+ (void) clas;
+ (void) del;
+#endif
+}
+
+EAPI const char **
+elm_map_source_names_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return NULL;
+ return wd->source_names;
+#else
+ (void) obj;
+ return NULL;
++=======
+ elm_map_track_remove(Evas_Object *obj, Evas_Object *route)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) ;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ wd->track = eina_list_remove(wd->track, route);
+ evas_object_del(route);
+ #else
+ (void) obj;
+ (void) route;
+ #endif
+ }
+ #else
+ EAPI Evas_Object *
+ elm_map_track_add(Evas_Object *obj __UNUSED__, void *emap __UNUSED__)
+ {
+ return NULL;
+ }
+
+ EAPI void
+ elm_map_track_remove(Evas_Object *obj __UNUSED__, Evas_Object *route __UNUSED__)
+ {
+ }
+ #endif
+
+ /************************* Belows are deprecated APIs *************************/
+ EAPI void
+ elm_map_source_zoom_max_set(Evas_Object *obj, int zoom)
+ {
+ elm_map_zoom_max_set(obj, zoom);
+ }
+
+ EAPI int
+ elm_map_source_zoom_max_get(const Evas_Object *obj)
+ {
+ return elm_map_zoom_max_get(obj);
+ }
+
+ EAPI void
+ elm_map_source_zoom_min_set(Evas_Object *obj, int zoom)
+ {
+ elm_map_zoom_min_set(obj, zoom);
+ }
+
++EAPI int
++elm_map_source_zoom_min_get(const Evas_Object *obj)
++{
++ return elm_map_zoom_min_get(obj);
++}
++
++EAPI void
++elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ _coord_to_region_convert(wd, x, y, size, lon, lat);
++#else
++ (void) obj;
++ (void) x;
++ (void) y;
++ (void) size;
++ (void) lon;
++ (void) lat;
++#endif
++}
++
++EAPI void
++elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ _region_to_coord_convert(wd, lon, lat, size, x, y);
++#else
++ (void) obj;
++ (void) lon;
++ (void) lat;
++ (void) size;
++ (void) x;
++ (void) y;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_source_name_set(Evas_Object *obj, const char *source_name)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Map_Sources_Tab *s;
+ Eina_List *l;
+ int zoom;
+
+ if (!wd) return;
+ if (wd->src)
+ {
+ if (!strcmp(wd->src->name, source_name)) return;
+ if (!wd->src->url_cb) return;
+ }
+
+ grid_clear_all(obj);
+ EINA_LIST_FOREACH(wd->map_sources_tab, l, s)
+ {
+ if (!strcmp(s->name, source_name))
+ {
+ wd->src = s;
+ break;
+ }
+ }
+ zoom = wd->zoom;
+ wd->zoom = -1;
+
+ if (wd->src)
+ {
+ if (wd->src->zoom_max < zoom)
+ zoom = wd->src->zoom_max;
+ if (wd->src->zoom_min > zoom)
+ zoom = wd->src->zoom_min;
+ }
+ grid_create_all(obj);
+ elm_map_zoom_set(obj, zoom);
+#else
+ (void) obj;
+ (void) source_name;
+#endif
}
-EAPI void
-elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat)
+EAPI const char *
+elm_map_source_name_get(const Evas_Object *obj)
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
- ELM_CHECK_WIDTYPE(obj, widtype);
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
- EINA_SAFETY_ON_NULL_RETURN(wd);
- _coord_to_region_convert(wd, x, y, size, lon, lat);
+ if ((!wd) || (!wd->src)) return NULL;
+ return wd->src->name;
#else
(void) obj;
- (void) x;
- (void) y;
- (void) size;
- (void) lon;
- (void) lat;
+ return NULL;
#endif
}
#endif
}
-EAPI void
+EAPI Elm_Map_Route_Sources
+elm_map_route_source_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ROUTE_SOURCE_YOURS;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return ELM_MAP_ROUTE_SOURCE_YOURS;
+ return wd->route_source;
+#else
+ (void) obj;
+ return ELM_MAP_ROUTE_SOURCE_YOURS;
++=======
+ elm_map_utils_rotate_coord(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord cx, const Evas_Coord cy, double degree, Evas_Coord *xx, Evas_Coord *yy)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ _coord_rotate(x, y, cx, cy, degree, xx, yy);
+ #else
+ (void) x;
+ (void) y;
+ (void) cx;
+ (void) cy;
+ (void) degree;
+ (void) xx;
+ (void) yy;
+ #endif
+ }
+
+ EAPI void
+ elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num)
+ {
+ elm_map_tile_load_status_get(obj, try_num, finish_num);
+ }
+
+ EAPI void
+ elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat)
+ {
+ elm_map_region_bring_in(obj, lon, lat);
+ }
+
+ EAPI void
+ elm_map_geo_region_show(Evas_Object *obj, double lon, double lat)
+ {
+ elm_map_region_show(obj, lon, lat);
+ }
+
+ EAPI void
+ elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat)
+ {
+ elm_map_region_get(obj, lon, lat);
+ }
+
+ EAPI Elm_Map_Name *
+ elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat)
+ {
+ return elm_map_name_add(obj, NULL, lon, lat, NULL, NULL);
+ }
+
+ EAPI Elm_Map_Name *
+ elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address)
+ {
+ return elm_map_name_add(obj, address, 0, 0, NULL, NULL);
+ }
+
+ EAPI void
+ elm_map_canvas_to_geo_convert(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, double *lon, double *lat)
+ {
+ elm_map_canvas_to_region_convert(obj, x, y, lon, lat);
+ }
+
+ EAPI Elm_Map_Marker *
+ elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *group_clas, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(clas, NULL);
+
+ Elm_Map_Marker *marker = ELM_NEW(Elm_Map_Marker);
+ marker->wd = wd;
+ marker->clas = clas;
+ marker->group_clas = group_clas;
+ marker->longitude = lon;
+ marker->latitude = lat;
+ marker->data = data;
+ marker->x = 0;
+ marker->y = 0;
+ _edj_marker_size_get(wd, &marker->w, &marker->h);
+
+ marker->obj = elm_layout_add(wd->obj);
+ evas_object_smart_member_add(marker->obj, wd->pan_smart);
+ evas_object_stack_above(marker->obj, wd->sep_maps_markers);
+
+ edje_object_signal_callback_add(elm_layout_edje_get(marker->obj),
+ "open", "elm", _marker_bubble_open_cb,
+ marker);
+ edje_object_signal_callback_add(elm_layout_edje_get(marker->obj),
+ "bringin", "elm", _marker_bringin_cb,
+ marker);
+
+ wd->markers = eina_list_append(wd->markers, marker);
+ if (marker->group_clas) group_clas->markers = eina_list_append(group_clas->markers,
+ marker);
+ evas_object_smart_changed(wd->pan_smart);
+ return marker;
+ #else
+ (void) obj;
+ (void) lon;
+ (void) lat;
+ (void) clas;
+ (void) group_clas;
+ (void) data;
+ return NULL;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_source_zoom_max_set(Evas_Object *obj, int zoom)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if ((!wd) || (!wd->src)) return;
+ if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return;
+ wd->src->zoom_max = zoom;
+#else
+ (void) obj;
+ (void) zoom;
+#endif
+}
+
+EAPI int
+elm_map_source_zoom_max_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) 18;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if ((!wd) || (!wd->src)) return 18;
+ return wd->src->zoom_max;
+#else
+ (void) obj;
+ return 18;
++=======
+ elm_map_marker_remove(Elm_Map_Marker *marker)
+ {
+ _elm_map_marker_remove(marker);
+ }
+
+ EAPI void
+ elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ if (lon) *lon = marker->longitude;
+ if (lat) *lat = marker->latitude;
+ #else
+ (void) marker;
+ (void) lon;
+ (void) lat;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_source_zoom_min_set(Evas_Object *obj, int zoom)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if ((!wd) || (!wd->src)) return;
+ if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return;
+ wd->src->zoom_min = zoom;
+#else
+ (void) obj;
+ (void) zoom;
+#endif
+}
+
+EAPI int
+elm_map_source_zoom_min_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if ((!wd) || (!wd->src)) return 0;
+ return wd->src->zoom_min;
+#else
+ (void) obj;
+ return 0;
++=======
+ elm_map_marker_bring_in(Elm_Map_Marker *marker)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ elm_map_region_bring_in(marker->wd->obj, marker->longitude, marker->latitude);
+ #else
+ (void) marker;
+ #endif
+ }
+
+ EAPI void
+ elm_map_marker_show(Elm_Map_Marker *marker)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ elm_map_region_show(marker->wd->obj, marker->longitude, marker->latitude);
+ #else
+ (void) marker;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
- (void) obj;
- return EINA_FALSE;
++<<<<<<< HEAD
+elm_map_user_agent_set(Evas_Object *obj, const char *user_agent)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if (!wd->user_agent) wd->user_agent = eina_stringshare_add(user_agent);
+ else eina_stringshare_replace(&wd->user_agent, user_agent);
+
+ if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL);
+ eina_hash_set(wd->ua, "User-Agent", wd->user_agent);
+#else
+ (void) obj;
+ (void) user_agent;
+#endif
+}
+
+EAPI const char *
+elm_map_user_agent_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return NULL;
+ return wd->user_agent;
+#else
+ (void) obj;
+ return NULL;
+#endif
+}
+
+EAPI Elm_Map_Route *
+elm_map_route_add(Evas_Object *obj,
+ Elm_Map_Route_Type type,
+ Elm_Map_Route_Method method,
+ double flon,
+ double flat,
+ double tlon,
+ double tlat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ char buf[PATH_MAX];
+ char *source;
+ char *type_name = NULL;
+ int fd;
+
+ if ((!wd) || (!wd->src)) return NULL;
+
+ Elm_Map_Route *route = ELM_NEW(Elm_Map_Route);
+ if (!route) return NULL;
+
+ snprintf(buf, sizeof(buf), DEST_ROUTE_XML_FILE);
+ fd = mkstemp(buf);
+ if (fd < 0)
+ {
+ free(route);
+ return NULL;
+ }
+
+ route->con_url = ecore_con_url_new(NULL);
+ route->ud.fname = strdup(buf);
+ INF("xml file : %s", route->ud.fname);
+
+ route->ud.fd = fdopen(fd, "w+");
+ if ((!route->con_url) || (!route->ud.fd))
+ {
+ ecore_con_url_free(route->con_url);
+ free(route);
+ return NULL;
+ }
+
+ route->wd = wd;
+ route->color.r = 255;
+ route->color.g = 0;
+ route->color.b = 0;
+ route->color.a = 255;
+ route->handlers = eina_list_append
+ (route->handlers, (void *)ecore_event_handler_add
+ (ECORE_CON_EVENT_URL_COMPLETE, _route_complete_cb, route));
+
+ route->inbound = EINA_FALSE;
+ route->type = type;
+ route->method = method;
+ route->flon = flon;
+ route->flat = flat;
+ route->tlon = tlon;
+ route->tlat = tlat;
+
+ switch (type)
+ {
+ case ELM_MAP_ROUTE_TYPE_MOTOCAR:
+ type_name = strdup(ROUTE_TYPE_MOTORCAR);
+ break;
+ case ELM_MAP_ROUTE_TYPE_BICYCLE:
+ type_name = strdup(ROUTE_TYPE_BICYCLE);
+ break;
+ case ELM_MAP_ROUTE_TYPE_FOOT:
+ type_name = strdup(ROUTE_TYPE_FOOT);
+ break;
+ default:
+ break;
+ }
+
+ source = wd->src->route_url_cb(obj, type_name, method, flon, flat, tlon, tlat);
+ INF("route url = %s", source);
+
+ wd->route = eina_list_append(wd->route, route);
+
+ ecore_con_url_url_set(route->con_url, source);
+ ecore_con_url_fd_set(route->con_url, fileno(route->ud.fd));
+ ecore_con_url_data_set(route->con_url, route);
+ ecore_con_url_get(route->con_url);
+ if (type_name) free(type_name);
+ if (source) free(source);
+
+ edje_object_signal_emit(elm_smart_scroller_edje_object_get(wd->scr),
+ "elm,state,busy,start", "elm");
+ evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOAD, NULL);
+ return route;
+#else
+ (void) obj;
+ (void) type;
+ (void) method;
+ (void) flon;
+ (void) flat;
+ (void) tlon;
+ (void) tlat;
+ return NULL;
++=======
+ elm_map_markers_list_show(Eina_List *markers)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(markers);
+ EINA_SAFETY_ON_FALSE_RETURN(eina_list_count(markers));
+
+ Elm_Map_Marker *marker;
+ marker = eina_list_data_get(markers);
+
+ Delayed_Data *data = ELM_NEW(Delayed_Data);
+ data->func = _marker_list_show;
+ data->wd = marker->wd;
+ data->markers = eina_list_clone(markers);
+ data->wd->delayed_jobs = eina_list_append(data->wd->delayed_jobs, data);
+ evas_object_smart_changed(data->wd->pan_smart);
+ #else
+ (void) markers;
+ #endif
+ }
+
+ EAPI void
+ elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ if (wd->paused_markers == !!paused) return;
+ wd->paused_markers = paused;
+ #else
+ (void) obj;
+ (void) paused;
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_map_paused_markers_get(const Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, EINA_FALSE);
+
+ return wd->paused_markers;
+ #else
++ (void) obj;
++ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_route_remove(Elm_Map_Route *route)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(route);
+
+ Path_Waypoint *w;
+ Path_Node *n;
+ Evas_Object *p;
+ Ecore_Event_Handler *h;
+
+ EINA_LIST_FREE(route->path, p)
+ {
+ evas_object_del(p);
+ }
+
+ EINA_LIST_FREE(route->waypoint, w)
+ {
+ if (w->point) eina_stringshare_del(w->point);
+ free(w);
+ }
+
+ EINA_LIST_FREE(route->nodes, n)
+ {
+ if (n->pos.address) eina_stringshare_del(n->pos.address);
+ free(n);
+ }
+
+ EINA_LIST_FREE(route->handlers, h)
+ {
+ ecore_event_handler_del(h);
+ }
+
+ if (route->ud.fname)
+ {
+ ecore_file_remove(route->ud.fname);
+ free(route->ud.fname);
+ route->ud.fname = NULL;
+ }
+#else
+ (void) route;
+#endif
+}
+
+EAPI void
+elm_map_route_color_set(Elm_Map_Route *route, int r, int g , int b, int a)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(route);
+ route->color.r = r;
+ route->color.g = g;
+ route->color.b = b;
+ route->color.a = a;
+#else
+ (void) route;
+ (void) r;
+ (void) g;
+ (void) b;
+ (void) a;
++=======
++elm_map_max_marker_per_group_set(Evas_Object *obj, int max)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ ELM_CHECK_WIDTYPE(obj, widtype);
++ Widget_Data *wd = elm_widget_data_get(obj);
++ EINA_SAFETY_ON_NULL_RETURN(wd);
++
++ wd->markers_max_num = max;
++#else
++ (void) obj;
++ (void) max;
++#endif
++}
++
++EAPI Evas_Object *
++elm_map_marker_object_get(const Elm_Map_Marker *marker)
++{
++#ifdef HAVE_ELEMENTARY_ECORE_CON
++ EINA_SAFETY_ON_NULL_RETURN_VAL(marker, NULL);
++ return marker->content;
++#else
++ (void) marker;
++ return NULL;
++>>>>>>> remotes/origin/upstream
+#endif
+}
+
+EAPI void
++<<<<<<< HEAD
+elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g , int *b, int *a)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(route);
+ if (r) *r = route->color.r;
+ if (g) *g = route->color.g;
+ if (b) *b = route->color.b;
+ if (a) *a = route->color.a;
+#else
+ (void) route;
+ (void) r;
+ (void) g;
+ (void) b;
+ (void) a;
+#endif
+}
+
+EAPI double
+elm_map_route_distance_get(const Elm_Map_Route *route)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(route, 0.0);
+ return route->info.distance;
+#else
+ (void) route;
+ return 0.0;
#endif
}
#endif
}
-EAPI void
+EAPI const char *
+elm_map_name_address_get(const Elm_Map_Name *name)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
+ return name->address;
+#else
+ (void) name;
++=======
+ elm_map_marker_update(Elm_Map_Marker *marker)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(marker);
+ Widget_Data *wd = marker->wd;
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ _marker_update(marker);
+ #else
+ (void) marker;
+ #endif
+ }
+
+ EAPI void
+ elm_map_bubbles_close(Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+
+ Eina_List *l;
+ Elm_Map_Marker *marker;
+ EINA_LIST_FOREACH(wd->markers, l, marker)
+ {
+ if (marker->bubble) _bubble_free(marker->bubble);
+ marker->bubble = NULL;
+
+ if (marker->group)
+ {
+ if (marker->group->bubble) _bubble_free(marker->group->bubble);
+ marker->group->bubble = NULL;
+ }
+ }
+ #else
+ (void) obj;
+ #endif
+ }
+
+ EAPI Elm_Map_Group_Class *
+ elm_map_group_class_new(Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Elm_Map_Group_Class *clas = ELM_NEW(Elm_Map_Group_Class);
+ clas->wd = wd;
+ clas->zoom_displayed = 0;
+ clas->zoom_grouped = 255;
+ eina_stringshare_replace(&clas->style, "radio");
+
+ wd->group_classes = eina_list_append(wd->group_classes, clas);
+
+ return clas;
+ #else
+ (void) obj;
++>>>>>>> remotes/origin/upstream
return NULL;
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(name);
+ if (lon) *lon = name->lon;
+ if (lat) *lat = name->lat;
+#else
+ (void) name;
+ (void) lon;
+ (void) lat;
++=======
+ elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ eina_stringshare_replace(&clas->style, style);
+ #else
+ (void) clas;
+ (void) style;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_name_remove(Elm_Map_Name *name)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(name);
+ if (name->address)
+ {
+ free(name->address);
+ name->address = NULL;
+ }
+ if (name->handler)
+ {
+ ecore_event_handler_del(name->handler);
+ name->handler = NULL;
+ }
+ if (name->ud.fname)
+ {
+ ecore_file_remove(name->ud.fname);
+ free(name->ud.fname);
+ name->ud.fname = NULL;
+ }
+#else
+ (void) name;
++=======
+ elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, Elm_Map_Group_Icon_Get_Func icon_get)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.icon_get = icon_get;
+ #else
+ (void) clas;
+ (void) icon_get;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ wd->rotate.d = degree;
+ wd->rotate.cx = cx;
+ wd->rotate.cy = cy;
+ wd->calc_job = ecore_job_add(_calc_job, wd);
+#else
+ (void) obj;
+ (void) degree;
+ (void) cx;
+ (void) cy;
++=======
+ elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->data = data;
+ #else
+ (void) clas;
+ (void) data;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if (degree) *degree = wd->rotate.d;
+ if (cx) *cx = wd->rotate.cx;
+ if (cy) *cy = wd->rotate.cy;
+#else
+ (void) obj;
+ (void) degree;
+ (void) cx;
+ (void) cy;
++=======
+ elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->zoom_displayed = zoom;
+ #else
+ (void) clas;
+ (void) zoom;
++>>>>>>> remotes/origin/upstream
#endif
}
EAPI void
++<<<<<<< HEAD
+elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return;
+ if ((!wd->wheel_disabled) && (disabled))
+ evas_object_event_callback_del_full(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
+ else if ((wd->wheel_disabled) && (!disabled))
+ evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
+ wd->wheel_disabled = !!disabled;
+#else
+ (void) obj;
+ (void) disabled;
+#endif
+}
+
+EAPI Eina_Bool
+elm_map_wheel_disabled_get(const Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return EINA_FALSE;
+ return wd->wheel_disabled;
+#else
+ (void) obj;
+ return EINA_FALSE;
+#endif
+}
+
+#ifdef ELM_EMAP
+EAPI Evas_Object *
+elm_map_track_add(Evas_Object *obj, EMap_Route *emap)
++=======
+ elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->zoom_grouped = zoom;
+ #else
+ (void) clas;
+ (void) zoom;
+ #endif
+ }
+
+ EAPI void
+ elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ EINA_SAFETY_ON_NULL_RETURN(wd);
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+
+ clas->hide = hide;
+ evas_object_smart_changed(wd->pan_smart);
+ #else
+ (void) obj;
+ (void) clas;
+ (void) hide;
+ #endif
+ }
+
+ EAPI Elm_Map_Marker_Class *
+ elm_map_marker_class_new(Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
#ifdef HAVE_ELEMENTARY_ECORE_CON
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+
+ if (!wd) return EINA_FALSE;
+
+ Evas_Object *route = elm_route_add(obj);
+ elm_route_emap_set(route, emap);
+ wd->track = eina_list_append(wd->track, route);
+
+ return route;
+#else
+ (void) obj;
+ (void) emap;
+ return NULL;
+#endif
+}
+#endif
+
+EAPI void
+elm_map_track_remove(Evas_Object *obj, Evas_Object *route)
+{
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+ ELM_CHECK_WIDTYPE(obj, widtype) ;
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return ;
+
+ wd->track = eina_list_remove(wd->track, route);
+ evas_object_del(route);
+#else
+ (void) obj;
+ (void) route;
+#endif
+}
+
+#ifdef HAVE_ELEMENTARY_ECORE_CON
+
+static char *
+_mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+{
+ char buf[PATH_MAX];
+ // ((x+y+zoom)%3)+'a' is requesting map images from distributed tile servers (eg., a, b, c)
+ snprintf(buf, sizeof(buf), "http://%c.tile.openstreetmap.org/%d/%d/%d.png", ((x+y+zoom)%3)+'a', zoom, x, y);
+ return strdup(buf);
+}
+
+static char *
+_osmarender_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "http://%c.tah.openstreetmap.org/Tiles/tile/%d/%d/%d.png", ((x+y+zoom)%3)+'a', zoom, x, y);
+ return strdup(buf);
+}
+
+static char *
+_cyclemap_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "http://%c.tile.opencyclemap.org/cycle/%d/%d/%d.png", ((x+y+zoom)%3)+'a', zoom, x, y);
+ return strdup(buf);
+}
+
+static char *
+_mapquest_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "http://otile%d.mqcdn.com/tiles/1.0.0/osm/%d/%d/%d.png", ((x+y+zoom)%4)+1, zoom, x, y);
+ return strdup(buf);
+}
+
+static char *
+_mapquest_aerial_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "http://oatile%d.mqcdn.com/naip/%d/%d/%d.png", ((x+y+zoom)%4)+1, zoom, x, y);
+ return strdup(buf);
+}
+
+static char *_yours_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%lf&flon=%lf&tlat=%lf&tlon=%lf&v=%s&fast=%d&instructions=1",
+ ROUTE_YOURS_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+}
+
+// TODO: fix monav api
+/*
+static char *_monav_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%f&flon=%f&tlat=%f&tlon=%f&v=%s&fast=%d&instructions=1",
+ ROUTE_MONAV_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+}
+*/
+
+// TODO: fix ors api
+/*
+static char *_ors_url_cb(Evas_Object *obj __UNUSED__, char *type_name, int method, double flon, double flat, double tlon, double tlat)
+{
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf),
+ "%s?flat=%f&flon=%f&tlat=%f&tlon=%f&v=%s&fast=%d&instructions=1",
+ ROUTE_ORS_URL, flat, flon, tlat, tlon, type_name, method);
+
+ return strdup(buf);
+}
+*/
+
+static char *
+_nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double lat)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) strdup("");
+ Widget_Data *wd = elm_widget_data_get(obj);
+ char **str;
+ unsigned int ele, idx;
+ char search_url[PATH_MAX];
+ char buf[PATH_MAX];
+
+ if (!wd) return strdup("");
+ if (method == ELM_MAP_NAME_METHOD_SEARCH)
+ {
+ search_url[0] = '\0';
+ str = eina_str_split_full(name, " ", 0, &ele);
+ for (idx = 0 ; idx < ele ; idx++)
+ {
+ eina_strlcat(search_url, str[idx], sizeof(search_url));
+ if (!(idx == (ele-1))) eina_strlcat(search_url, "+", sizeof(search_url));
+ }
+ snprintf(buf, sizeof(buf), "%s/search?q=%s&format=xml&polygon=0&addressdetails=0", NAME_NOMINATIM_URL, search_url);
+
+ if (str && str[0])
+ {
+ free(str[0]);
+ free(str);
+ }
+ }
+ else if (method == ELM_MAP_NAME_METHOD_REVERSE) snprintf(buf, sizeof(buf), "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0", NAME_NOMINATIM_URL, lat, lon, wd->zoom);
+ else strcpy(buf, "");
+
+ return strdup(buf);
+}
+
+#endif
++=======
+ EINA_SAFETY_ON_NULL_RETURN_VAL(wd, NULL);
+
+ Elm_Map_Marker_Class *clas = ELM_NEW(Elm_Map_Marker_Class);
+ eina_stringshare_replace(&clas->style, "radio");
+
+ wd->marker_classes = eina_list_append(wd->marker_classes, clas);
+ return clas;
+ #else
+ (void) obj;
+ return NULL;
+ #endif
+ }
+
+ EAPI void
+ elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ eina_stringshare_replace(&clas->style, style);
+ #else
+ (void) clas;
+ (void) style;
+ #endif
+ }
+
+ EAPI void
+ elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Icon_Get_Func icon_get)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.icon_get = icon_get;
+ #else
+ (void) clas;
+ (void) icon_get;
+ #endif
+ }
+
+ EAPI void
+ elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Get_Func get)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.get = get;
+ #else
+ (void) clas;
+ (void) get;
+ #endif
+ }
+
+ EAPI void
+ elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, Elm_Map_Marker_Del_Func del)
+ {
+ #ifdef HAVE_ELEMENTARY_ECORE_CON
+ EINA_SAFETY_ON_NULL_RETURN(clas);
+ clas->func.del = del;
+ #else
+ (void) clas;
+ (void) del;
+ #endif
+ }
+
+ EAPI void
+ elm_map_route_color_set(Elm_Map_Route *route __UNUSED__, int r __UNUSED__, int g __UNUSED__, int b __UNUSED__, int a __UNUSED__)
+ {
+ return;
+ }
+
+ EAPI void
+ elm_map_route_color_get(const Elm_Map_Route *route __UNUSED__, int *r __UNUSED__, int *g __UNUSED__, int *b __UNUSED__, int *a __UNUSED__)
+ {
+ return;
+ }
+
+ EAPI void
+ elm_map_route_remove(Elm_Map_Route *route)
+ {
+ elm_map_route_del(route);
+ }
+
+ EAPI void
+ elm_map_name_remove(Elm_Map_Name *name)
+ {
+ elm_map_name_del(name);
+ }
+
++>>>>>>> remotes/origin/upstream
*
* - "clicked" - This is called when a user has clicked the map without
* dragging around.
++<<<<<<< HEAD
+ * - "press" - This is called when a user has pressed down on the map.
+ * - "longpressed" - This is called when a user has pressed down on the map
+ * for a long time without dragging around.
+ * - "clicked,double" - This is called when a user has double-clicked
+ * the map.
+ * - "load,detail" - Map detailed data load begins.
+ * - "loaded,detail" - This is called when all currently visible parts of
+ * the map are loaded.
+ * - "zoom,start" - Zoom animation started.
+ * - "zoom,stop" - Zoom animation stopped.
+ * - "zoom,change" - Zoom changed when using an auto zoom mode.
+ * - "scroll" - the content has been scrolled (moved).
+ * - "scroll,anim,start" - scrolling animation has started.
+ * - "scroll,anim,stop" - scrolling animation has stopped.
+ * - "scroll,drag,start" - dragging the contents around has started.
+ * - "scroll,drag,stop" - dragging the contents around has stopped.
+ * - "downloaded" - This is called when all currently required map images
+ * are downloaded.
+ * - "route,load" - This is called when route request begins.
+ * - "route,loaded" - This is called when route request ends.
+ * - "name,load" - This is called when name request begins.
+ * - "name,loaded- This is called when name request ends.
++=======
+ * - "clicked,double" - This is called when a user has double-clicked
+ * the map.
+ * - "press" - This is called when a user has pressed down on the map.
+ * - "longpressed" - This is called when a user has pressed down on the map
+ * for a long time without dragging around.
+ * - "scroll" - the content has been scrolled (moved).
+ * - "scroll,drag,start" - dragging the contents around has started.
+ * - "scroll,drag,stop" - dragging the contents around has stopped.
+ * - "scroll,anim,start" - scrolling animation has started.
+ * - "scroll,anim,stop" - scrolling animation has stopped.
+ * - "zoom,start" - Zoom animation started.
+ * - "zoom,stop" - Zoom animation stopped.
+ * - "zoom,change" - Zoom changed when using an auto zoom mode.
+ * - "tile,load" - A map tile image load begins.
+ * - "tile,loaded" - A map tile image load ends.
+ * - "tile,loaded,fail" - A map tile image load fails.
+ * - "route,load" - Route request begins.
+ * - "route,loaded" - Route request ends.
+ * - "route,loaded,fail" - Route request fails.
+ * - "name,load" - Name request begins.
+ * - "name,loaded" - Name request ends.
+ * - "name,loaded,fail" - Name request fails.
+ * - "overlay,clicked" - A overlay is clicked.
++>>>>>>> remotes/origin/upstream
*
* Available style for map widget:
* - @c "default"
*
* Default value is #ELM_MAP_ZOOM_MODE_MANUAL.
*
++<<<<<<< HEAD
+ * Values <b> don't </b> work as bitmask, only one can be choosen.
++=======
+ * Values <b> don't </b> work as bitmask, only one can be chosen.
++>>>>>>> remotes/origin/upstream
*
* @note Valid sizes are 2^zoom, consequently the map may be smaller
* than the scroller view.
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_MAP_ZOOM_MODE_MANUAL, /**< Zoom controlled manually by elm_map_zoom_set(). It's set by default. */
+ ELM_MAP_ZOOM_MODE_AUTO_FIT, /**< Zoom until map fits inside the scroll frame with no pixels outside this area. */
+ ELM_MAP_ZOOM_MODE_AUTO_FILL, /**< Zoom until map fills scroll, ensuring no pixels are left unfilled. */
++=======
+ ELM_MAP_ZOOM_MODE_MANUAL, /**< Zoom controlled manually by elm_map_zoom_set(). It's set by default. */
+ ELM_MAP_ZOOM_MODE_AUTO_FIT, /**< Zoom until map fits inside the scroll frame with no pixels outside this area. */
+ ELM_MAP_ZOOM_MODE_AUTO_FILL, /**< Zoom until map fills scroll, ensuring no pixels are left unfilled. */
++>>>>>>> remotes/origin/upstream
ELM_MAP_ZOOM_MODE_LAST
} Elm_Map_Zoom_Mode;
/**
++<<<<<<< HEAD
+ * Set route service to be used. By default used source is
+ * #ELM_MAP_ROUTE_SOURCE_YOURS.
+ *
+ * @see elm_map_route_source_set()
+ * @see elm_map_route_source_get()
++=======
+ * Set type of a external source (provider).
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ * @see elm_map_source_set()
++>>>>>>> remotes/origin/upstream
*
* @ingroup Map
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_MAP_ROUTE_SOURCE_YOURS, /**< Routing service http://www.yournavigation.org/ . Set by default.*/
+ ELM_MAP_ROUTE_SOURCE_MONAV, /**< MoNav offers exact routing without heuristic assumptions. Its routing core is based on Contraction Hierarchies. It's not working with Map yet. */
+ ELM_MAP_ROUTE_SOURCE_ORS, /**< Open Route Service: http://www.openrouteservice.org/ . It's not working with Map yet. */
+ ELM_MAP_ROUTE_SOURCE_LAST
+} Elm_Map_Route_Sources;
+
+typedef enum
+{
+ ELM_MAP_NAME_SOURCE_NOMINATIM,
+ ELM_MAP_NAME_SOURCE_LAST
+} Elm_Map_Name_Sources;
++=======
+ ELM_MAP_SOURCE_TYPE_TILE, /**< Map tile provider. */
+ ELM_MAP_SOURCE_TYPE_ROUTE, /**< Route service provider. */
+ ELM_MAP_SOURCE_TYPE_NAME, /**< Name service provider. */
+ ELM_MAP_SOURCE_TYPE_LAST
+ } Elm_Map_Source_Type;
++>>>>>>> remotes/origin/upstream
/**
* Set type of transport used on route.
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_MAP_ROUTE_TYPE_MOTOCAR, /**< Route should consider an automobile will be used. */
+ ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used by the user. */
+ ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */
++=======
+ ELM_MAP_ROUTE_TYPE_MOTOCAR, /**< Route should consider an automobile will be used. */
+ ELM_MAP_ROUTE_TYPE_BICYCLE, /**< Route should consider a bicycle will be used by the user. */
+ ELM_MAP_ROUTE_TYPE_FOOT, /**< Route should consider user will be walking. */
++>>>>>>> remotes/origin/upstream
ELM_MAP_ROUTE_TYPE_LAST
} Elm_Map_Route_Type;
/**
++<<<<<<< HEAD
+ * Set the routing method, what should be priorized, time or distance.
++=======
+ * Set the routing method, what should be prioritized, time or distance.
++>>>>>>> remotes/origin/upstream
*
* @see elm_map_route_add()
*
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_MAP_ROUTE_METHOD_FASTEST, /**< Route should priorize time. */
+ ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should priorize distance. */
+ ELM_MAP_ROUTE_METHOD_LAST
+} Elm_Map_Route_Method;
+
++=======
+ ELM_MAP_ROUTE_METHOD_FASTEST, /**< Route should prioritize time. */
+ ELM_MAP_ROUTE_METHOD_SHORTEST, /**< Route should prioritized distance. */
+ ELM_MAP_ROUTE_METHOD_LAST
+ } Elm_Map_Route_Method;
+
+ /**
+ * Set the name search method.
+ *
+ * This is for name module interface.
+ *
+ * @ingroup Map
+ */
++>>>>>>> remotes/origin/upstream
typedef enum
{
ELM_MAP_NAME_METHOD_SEARCH,
ELM_MAP_NAME_METHOD_LAST
} Elm_Map_Name_Method;
++<<<<<<< HEAD
+typedef struct _Elm_Map_Marker Elm_Map_Marker; /**< A marker to be shown in a specific point of the map. Can be created with elm_map_marker_add() and deleted with elm_map_marker_remove(). */
+typedef struct _Elm_Map_Marker_Class Elm_Map_Marker_Class; /**< Each marker must be associated to a class. It's required to add a mark. The class defines the style of the marker when a marker is displayed alone (not grouped). A new class can be created with elm_map_marker_class_new(). */
+typedef struct _Elm_Map_Group_Class Elm_Map_Group_Class; /**< Each marker must be associated to a group class. It's required to add a mark. The group class defines the style of the marker when a marker is grouped to other markers. Markers with the same group are grouped if they are close. A new group class can be created with elm_map_marker_group_class_new(). */
+typedef struct _Elm_Map_Route Elm_Map_Route; /**< A route to be shown in the map. Can be created with elm_map_route_add() and deleted with elm_map_route_remove(). */
+typedef struct _Elm_Map_Name Elm_Map_Name; /**< A handle for specific coordinates. */
+typedef struct _Elm_Map_Track Elm_Map_Track;
+
+typedef Evas_Object *(*ElmMapMarkerGetFunc)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Bubble content fetching class function for marker classes. When the user click on a marker, a bubble is displayed with a content. */
+typedef void (*ElmMapMarkerDelFunc)(Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o); /**< Function to delete bubble content for marker classes. */
+typedef Evas_Object *(*ElmMapMarkerIconGetFunc)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Icon fetching class function for marker classes. */
+typedef Evas_Object *(*ElmMapGroupIconGetFunc)(Evas_Object *obj, void *data); /**< Icon fetching class function for markers group classes. */
+
+typedef char *(*ElmMapModuleSourceFunc)(void);
+typedef int (*ElmMapModuleZoomMinFunc)(void);
+typedef int (*ElmMapModuleZoomMaxFunc)(void);
+typedef char *(*ElmMapModuleUrlFunc)(Evas_Object *obj, int x, int y, int zoom);
+typedef int (*ElmMapModuleRouteSourceFunc)(void);
+typedef char *(*ElmMapModuleRouteUrlFunc)(Evas_Object *obj, char *type_name, int method, double flon, double flat, double tlon, double tlat);
+typedef char *(*ElmMapModuleNameUrlFunc)(Evas_Object *obj, int method, char *name, double lon, double lat);
+typedef Eina_Bool (*ElmMapModuleGeoIntoCoordFunc)(const Evas_Object *obj, int zoom, double lon, double lat, int size, int *x, int *y);
+typedef Eina_Bool (*ElmMapModuleCoordIntoGeoFunc)(const Evas_Object *obj, int zoom, int x, int y, int size, double *lon, double *lat);
++=======
+ /**
+ * Set overlay type to be used. This type is resolved
+ * when the overlay is created.
+ * You can get this value by elm_map_overlay_type_get().
+ *
+ * @see elm_map_overlay_type_get()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+ typedef enum _Elm_Map_Overlay_Type
+ {
+ ELM_MAP_OVERLAY_TYPE_NONE = 0,
+ ELM_MAP_OVERLAY_TYPE_DEFAULT,
+ ELM_MAP_OVERLAY_TYPE_CLASS,
+ ELM_MAP_OVERLAY_TYPE_BUBBLE,
+ ELM_MAP_OVERLAY_TYPE_ROUTE
+ } Elm_Map_Overlay_Type;
+
+ typedef struct _Elm_Map_Marker Elm_Map_Marker; /**< A marker to be shown in a specific point of the map. Can be created with elm_map_marker_add() and deleted with elm_map_marker_remove(). */
+ typedef struct _Elm_Map_Marker_Class Elm_Map_Marker_Class; /**< Each marker must be associated to a class. It's required to add a mark. The class defines the style of the marker when a marker is displayed alone (not grouped). A new class can be created with elm_map_marker_class_new(). */
+ typedef struct _Elm_Map_Group_Class Elm_Map_Group_Class; /**< Each marker must be associated to a group class. It's required to add a mark. The group class defines the style of the marker when a marker is grouped to other markers. Markers with the same group are grouped if they are close. A new group class can be created with elm_map_marker_group_class_new(). */
+ typedef struct _Elm_Map_Route Elm_Map_Route; /**< A route to be shown in the map. Can be created with elm_map_route_add() and deleted with elm_map_route_remove(). */
+ typedef struct _Elm_Map_Name Elm_Map_Name; /**< A handle for specific coordinates. */
+ typedef struct _Elm_Map_Overlay Elm_Map_Overlay; /**< A overlay to be shown in a specific point of the map. This can be created by elm_map_overlay_add() and similar functions and deleted by elm_map_overlay_del(). */
+
+ typedef Evas_Object *(*Elm_Map_Marker_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Bubble content fetching class function for marker classes. When the user click on a marker, a bubble is displayed with a content. */
+ typedef void (*Elm_Map_Marker_Del_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data, Evas_Object *o); /**< Function to delete bubble content for marker classes. */
+ typedef Evas_Object *(*Elm_Map_Marker_Icon_Get_Func)(Evas_Object *obj, Elm_Map_Marker *marker, void *data); /**< Icon fetching class function for marker classes. */
+ typedef Evas_Object *(*Elm_Map_Group_Icon_Get_Func)(Evas_Object *obj, void *data); /**< Icon fetching class function for markers group classes. */
+
+ typedef void (*Elm_Map_Overlay_Get_Cb)(void *data, Evas_Object *map, const Elm_Map_Overlay *overlay); /**< Get callback function for the overlay. */
+ typedef void (*Elm_Map_Name_Cb)(void *data, Evas_Object *map, const Elm_Map_Name *name); /**< Async-callback function for the name request. */
+ typedef void (*Elm_Map_Route_Cb)(void *data, Evas_Object *map, const Elm_Map_Route *route); /**< Async-callback function for the route request. */
++>>>>>>> remotes/origin/upstream
/**
* Add a new map widget to the given parent Elementary (container) object.
*
* This sets the zoom level.
*
++<<<<<<< HEAD
+ * It will respect limits defined by elm_map_source_zoom_min_set() and
+ * elm_map_source_zoom_max_set().
++=======
+ * It will respect limits defined by elm_map_zoom_min_set() and
+ * elm_map_zoom_max_set().
++>>>>>>> remotes/origin/upstream
+ *
+ * By default these values are 0 (world map) and 18 (maximum zoom).
+ *
+ * This function should be used when zoom mode is set to
+ * #ELM_MAP_ZOOM_MODE_MANUAL. This is the default mode, and can be set
+ * with elm_map_zoom_mode_set().
+ *
++<<<<<<< HEAD
+ * @see elm_map_zoom_mode_set().
+ * @see elm_map_zoom_get().
++=======
++ * @see elm_map_zoom_mode_set()
++ * @see elm_map_zoom_get()
++>>>>>>> remotes/origin/upstream
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_set(Evas_Object *obj, int zoom);
+
+/**
+ * Get the zoom level of the map.
+ *
+ * @param obj The map object.
+ * @return The current zoom level.
+ *
+ * This returns the current zoom level of the map object.
+ *
+ * Note that if you set the fill mode to other than #ELM_MAP_ZOOM_MODE_MANUAL
+ * (which is the default), the zoom level may be changed at any time by the
+ * map object itself to account for map size and map viewport size.
+ *
+ * @see elm_map_zoom_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI int elm_map_zoom_get(const Evas_Object *obj);
+
+/**
+ * Set the zoom mode used by the map object.
+ *
+ * @param obj The map object.
+ * @param mode The zoom mode of the map, being it one of
+ * #ELM_MAP_ZOOM_MODE_MANUAL (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT,
+ * or #ELM_MAP_ZOOM_MODE_AUTO_FILL.
+ *
+ * This sets the zoom mode to manual or one of the automatic levels.
+ * Manual (#ELM_MAP_ZOOM_MODE_MANUAL) means that zoom is set manually by
+ * elm_map_zoom_set() and will stay at that level until changed by code
+ * or until zoom mode is changed. This is the default mode.
+ *
+ * The Automatic modes will allow the map object to automatically
+ * adjust zoom mode based on properties. #ELM_MAP_ZOOM_MODE_AUTO_FIT will
+ * adjust zoom so the map fits inside the scroll frame with no pixels
+ * outside this area. #ELM_MAP_ZOOM_MODE_AUTO_FILL will be similar but
+ * ensure no pixels within the frame are left unfilled. Do not forget that
+ * the valid sizes are 2^zoom, consequently the map may be smaller than
+ * the scroller view.
+ *
+ * @see elm_map_zoom_set()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode);
+
+/**
+ * Get the zoom mode used by the map object.
+ *
+ * @param obj The map object.
+ * @return The zoom mode of the map, being it one of
+ * #ELM_MAP_ZOOM_MODE_MANUAL (default), #ELM_MAP_ZOOM_MODE_AUTO_FIT,
+ * or #ELM_MAP_ZOOM_MODE_AUTO_FILL.
+ *
+ * This function returns the current zoom mode used by the map object.
+ *
+ * @see elm_map_zoom_mode_set() for more details.
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Zoom_Mode elm_map_zoom_mode_get(const Evas_Object *obj);
+
+/**
++<<<<<<< HEAD
+ * Get the current geographic coordinates of the map.
+ *
+ * @param obj The map object.
+ * @param lon Pointer where to store longitude.
+ * @param lat Pointer where to store latitude.
+ *
+ * This gets the current center coordinates of the map object. It can be
+ * set by elm_map_geo_region_bring_in() and elm_map_geo_region_show().
+ *
+ * @see elm_map_geo_region_bring_in()
+ * @see elm_map_geo_region_show()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat);
++=======
++ * Set the minimum zoom of the source.
++ *
++ * @param obj The map object.
++ * @param zoom New minimum zoom value to be used.
++ *
++ * By default, it's 0.
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_zoom_min_set(Evas_Object *obj, int zoom);
++
++/**
++ * Get the minimum zoom of the source.
++ *
++ * @param obj The map object.
++ * @return Returns the minimum zoom of the source.
++ *
++ * @see elm_map_zoom_min_set() for details.
++ *
++ * @ingroup Map
++ */
++EAPI int elm_map_zoom_min_get(const Evas_Object *obj);
++
++/**
++ * Set the maximum zoom of the source.
++ *
++ * @param obj The map object.
++ * @param zoom New maximum zoom value to be used.
++ *
++ * By default, it's 18.
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_zoom_max_set(Evas_Object *obj, int zoom);
++
++/**
++ * Get the maximum zoom of the source.
++ *
++ * @param obj The map object.
++ * @return Returns the maximum zoom of the source.
++ *
++ * @see elm_map_zoom_min_set() for details.
++ *
++ * @ingroup Map
++ */
++EAPI int elm_map_zoom_max_get(const Evas_Object *obj);
++
++/**
++ * Get the current geographic coordinates of the map.
++ *
++ * @param obj The map object.
++ * @param lon Pointer to store longitude.
++ * @param lat Pointer to store latitude.
++ *
++ * This gets the current center coordinates of the map object. It can be
++ * set by elm_map_region_bring_in() and elm_map_region_show().
++ *
++ * @see elm_map_region_bring_in()
++ * @see elm_map_region_show()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_region_get(const Evas_Object *obj, double *lon, double *lat);
++>>>>>>> remotes/origin/upstream
+
+/**
+ * Animatedly bring in given coordinates to the center of the map.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to jump to the given @p lat and @p lon coordinates
+ * and show it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This will use animation to do so and take a period
+ * of time to complete.
+ *
++<<<<<<< HEAD
+ * @see elm_map_geo_region_show() for a function to avoid animation.
+ * @see elm_map_geo_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat);
++=======
++ * @see elm_map_region_show() for a function to avoid animation.
++ * @see elm_map_region_get()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_region_bring_in(Evas_Object *obj, double lon, double lat);
++>>>>>>> remotes/origin/upstream
+
+/**
+ * Show the given coordinates at the center of the map, @b immediately.
+ *
+ * @param obj The map object.
+ * @param lon Longitude to center at.
+ * @param lat Latitude to center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
++<<<<<<< HEAD
+ * region contining the given @p lat and @p lon, that will be moved to the
+ * center of the map.
+ *
+ * @see elm_map_geo_region_bring_in() for a function to move with animation.
+ * @see elm_map_geo_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_geo_region_show(Evas_Object *obj, double lon, double lat);
+
+/**
+ * Pause or unpause the map.
+ *
+ * @param obj The map object.
+ * @param paused Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE
+ * to unpause it.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for map.
+ *
+ * The default is off.
+ *
+ * This will stop zooming using animation, changing zoom levels will
+ * change instantly. This will stop any existing animations that are running.
+ *
+ * @see elm_map_paused_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * Get a value whether map is paused or not.
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map is pause. @c EINA_FALSE indicates
+ * it is not. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * This gets the current paused state for the map object.
+ *
+ * @see elm_map_paused_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj);
+
+/**
+ * Set to show markers during zoom level changes or not.
+ *
+ * @param obj The map object.
+ * @param paused Use @c EINA_TRUE to @b not show markers or @c EINA_FALSE
+ * to show them.
++=======
++ * region containing the given @p lat and @p lon, that will be moved to the
++ * center of the map.
++ *
++ * @see elm_map_region_bring_in() for a function to move with animation.
++ * @see elm_map_region_get()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_region_show(Evas_Object *obj, double lon, double lat);
++
++/**
++ * Convert canvas coordinates into geographic coordinates
++ * (longitude, latitude).
++ *
++ * @param obj The map object.
++ * @param x horizontal coordinate of the point to convert.
++ * @param y vertical coordinate of the point to convert.
++ * @param lon A pointer to the longitude.
++ * @param lat A pointer to the latitude.
++ *
++ * This gets longitude and latitude from canvas x, y coordinates. The canvas
++ * coordinates mean x, y coordinate from current viewport.
++ *
++ * see elm_map_region_to_canvas_convert()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_canvas_to_region_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat);
++
++/**
++ * Convert geographic coordinates (longitude, latitude)
++ * into canvas coordinates.
++ *
++ * @param obj The map object.
++ * @param lon The longitude to convert.
++ * @param lat The latitude to convert.
++ * @param x A pointer to horizontal coordinate.
++ * @param y A pointer to vertical coordinate.
++ *
++ * This gets canvas x, y coordinates from longitude and latitude. The canvas
++ * coordinates mean x, y coordinate from current viewport.
++ *
++ * see elm_map_canvas_to_region_convert()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y);
++
++/**
++ * Pause or unpause the map.
++ *
++ * @param obj The map object.
++ * @param paused Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE
++ * to unpause it.
++>>>>>>> remotes/origin/upstream
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for map.
+ *
+ * The default is off.
+ *
+ * This will stop zooming using animation, changing zoom levels will
+ * change instantly. This will stop any existing animations that are running.
+ *
++<<<<<<< HEAD
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the markers.
+ *
+ * The default is off.
+ *
+ * Enabling it will force the map to stop displaying the markers during
+ * zoom level changes. Set to on if you have a large number of markers.
+ *
+ * @see elm_map_paused_markers_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused);
+
+/**
+ * Get a value whether markers will be displayed on zoom level changes or not
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map @b won't display markers or @c EINA_FALSE
+ * indicates it will. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * This gets the current markers paused state for the map object.
+ *
+ * @see elm_map_paused_markers_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_paused_markers_get(const Evas_Object *obj);
+
+/**
+ * Get the information of downloading status.
+ *
+ * @param obj The map object.
+ * @param try_num Pointer where to store number of tiles being downloaded.
+ * @param finish_num Pointer where to store number of tiles successfully
+ * downloaded.
+ *
+ * This gets the current downloading status for the map object, the number
+ * of tiles being downloaded and the number of tiles already downloaded.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
+
+/**
+ * Convert a pixel coordinate (x,y) into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param x the coordinate.
+ * @param y the coordinate.
+ * @param size the size in pixels of the map.
+ * The map is a square and generally his size is : pow(2.0, zoom)*256.
+ * @param lon Pointer where to store the longitude that correspond to x.
+ * @param lat Pointer where to store the latitude that correspond to y.
+ *
+ * @note Origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken on account.
+ *
+ * @see elm_map_utils_convert_geo_into_coord() if you need the inverse.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat);
+
+/**
+ * Convert a geographic coordinate (longitude, latitude) into a pixel
+ * coordinate (x, y).
+ *
+ * @param obj The map object.
+ * @param lon the longitude.
+ * @param lat the latitude.
+ * @param size the size in pixels of the map. The map is a square
+ * and generally his size is : pow(2.0, zoom)*256.
+ * @param x Pointer where to store the horizontal pixel coordinate that
+ * correspond to the longitude.
+ * @param y Pointer where to store the vertical pixel coordinate that
+ * correspond to the latitude.
+ *
+ * @note Origin pixel point is the top left corner of the viewport.
+ * Map zoom and size are taken on account.
+ *
+ * @see elm_map_utils_convert_coord_into_geo() if you need the inverse.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y);
+
+/**
+ * Convert a geographic coordinate (longitude, latitude) into a name
+ * (address).
+ *
+ * @param obj The map object.
+ * @param lon the longitude.
+ * @param lat the latitude.
+ * @return name A #Elm_Map_Name handle for this coordinate.
+ *
+ * To get the string for this address, elm_map_name_address_get()
+ * should be used.
+ *
+ * @see elm_map_utils_convert_name_into_coord() if you need the inverse.
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Name *elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat);
+
+/**
+ * Convert a name (address) into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param name The address.
+ * @return name A #Elm_Map_Name handle for this address.
+ *
+ * To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
+ *
+ * @see elm_map_utils_convert_coord_into_name() if you need the inverse.
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Name *elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address);
+
+/**
+ * Convert canvas coordinates into a geographic coordinate
+ * (longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param x horizontal coordinate of the point to convert.
+ * @param y vertical coordinate of the point to convert.
+ * @param lon A poniter to the longitude.
+ * @param lat A pointer to the latitude.
+ *
+ * This gets longitude and latitude from canvas x, y coordinates. The canvas
+ * coordinates mean x, y coordinate from current viewport.
+ * elm_map_utils_convert_coord_into_geo() internally to get the geographic
+ * location.
+ *
+ * see elm_map_rotate_get()
+ * see elm_map_utils_convert_coord_into_geo()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_canvas_to_geo_convert(const Evas_Object *obj, const Evas_Coord x, const Evas_Coord y, double *lon, double *lat);
+
+/**
+ * Add a new marker to the map object.
+ *
+ * @param obj The map object.
+ * @param lon The longitude of the marker.
+ * @param lat The latitude of the marker.
+ * @param clas The class, to use when marker @b isn't grouped to others.
+ * @param clas_group The class group, to use when marker is grouped to others
+ * @param data The data passed to the callbacks.
+ *
+ * @return The created marker or @c NULL upon failure.
+ *
+ * A marker will be created and shown in a specific point of the map, defined
+ * by @p lon and @p lat.
+ *
+ * It will be displayed using style defined by @p class when this marker
+ * is displayed alone (not grouped). A new class can be created with
+ * elm_map_marker_class_new().
+ *
+ * If the marker is grouped to other markers, it will be displayed with
+ * style defined by @p class_group. Markers with the same group are grouped
+ * if they are close. A new group class can be created with
+ * elm_map_marker_group_class_new().
+ *
+ * Markers created with this method can be deleted with
+ * elm_map_marker_remove().
+ *
+ * A marker can have associated content to be displayed by a bubble,
+ * when a user click over it, as well as an icon. These objects will
+ * be fetch using class' callback functions.
+ *
+ * @see elm_map_marker_class_new()
+ * @see elm_map_marker_group_class_new()
+ * @see elm_map_marker_remove()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Marker *elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data);
+
+/**
+ * Set the maximum numbers of markers' content to be displayed in a group.
+ *
+ * @param obj The map object.
+ * @param max The maximum numbers of items displayed in a bubble.
+ *
+ * A bubble will be displayed when the user clicks over the group,
+ * and will place the content of markers that belong to this group
+ * inside it.
+ *
+ * A group can have a long list of markers, consequently the creation
+ * of the content of the bubble can be very slow.
+ *
+ * In order to avoid this, a maximum number of items is displayed
+ * in a bubble.
+ *
+ * By default this number is 30.
+ *
+ * Marker with the same group class are grouped if they are close.
+ *
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_max_marker_per_group_set(Evas_Object *obj, int max);
+
+/**
+ * Remove a marker from the map.
+ *
+ * @param marker The marker to remove.
+ *
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_remove(Elm_Map_Marker *marker);
+
+/**
+ * Get the current coordinates of the marker.
+ *
+ * @param marker marker.
+ * @param lat Pointer where to store the marker's latitude.
+ * @param lon Pointer where to store the marker's longitude.
+ *
+ * These values are set when adding markers, with function
+ * elm_map_marker_add().
+ *
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat);
+
+/**
+ * Animatedly bring in given marker to the center of the map.
+ *
+ * @param marker The marker to center at.
+ *
+ * This causes map to jump to the given @p marker's coordinates
+ * and show it (by scrolling) in the center of the viewport, if it is not
+ * already centered. This will use animation to do so and take a period
+ * of time to complete.
+ *
+ * @see elm_map_marker_show() for a function to avoid animation.
+ * @see elm_map_marker_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_bring_in(Elm_Map_Marker *marker);
+
+/**
+ * Show the given marker at the center of the map, @b immediately.
+ *
+ * @param marker The marker to center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region contining the given @p marker's coordinates, that will be
+ * moved to the center of the map.
+ *
+ * @see elm_map_marker_bring_in() for a function to move with animation.
+ * @see elm_map_markers_list_show() if more than one marker need to be
+ * displayed.
+ * @see elm_map_marker_region_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_show(Elm_Map_Marker *marker);
+
+/**
+ * Move and zoom the map to display a list of markers.
+ *
+ * @param markers A list of #Elm_Map_Marker handles.
+ *
+ * The map will be centered on the center point of the markers in the list.
+ * Then the map will be zoomed in order to fit the markers using the maximum
+ * zoom which allows display of all the markers.
+ *
+ * @warning All the markers should belong to the same map object.
+ *
+ * @see elm_map_marker_show() to show a single marker.
+ * @see elm_map_marker_bring_in()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_markers_list_show(Eina_List *markers);
+
+/**
+ * Get the Evas object returned by the ElmMapMarkerGetFunc callback
+ *
+ * @param marker The marker wich content should be returned.
+ * @return Return the evas object if it exists, else @c NULL.
+ *
+ * To set callback function #ElmMapMarkerGetFunc for the marker class,
+ * elm_map_marker_class_get_cb_set() should be used.
+ *
+ * This content is what will be inside the bubble that will be displayed
+ * when an user clicks over the marker.
+ *
+ * This returns the actual Evas object used to be placed inside
+ * the bubble. This may be @c NULL, as it may
+ * not have been created or may have been deleted, at any time, by
+ * the map. <b>Do not modify this object</b> (move, resize,
+ * show, hide, etc.), as the map is controlling it. This
+ * function is for querying, emitting custom signals or hooking
+ * lower level callbacks for events on that object. Do not delete
+ * this object under any circumstances.
+ *
+ * @ingroup Map
+ */
+EAPI Evas_Object *elm_map_marker_object_get(const Elm_Map_Marker *marker);
+
+/**
+ * Update the marker
+ *
+ * @param marker The marker to be updated.
+ *
+ * If a content is set to this marker, it will call function to delete it,
+ * #ElmMapMarkerDelFunc, and then will fetch the content again with
+ * #ElmMapMarkerGetFunc.
+ *
+ * These functions are set for the marker class with
+ * elm_map_marker_class_get_cb_set() and elm_map_marker_class_del_cb_set().
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_update(Elm_Map_Marker *marker);
+
+/**
+ * Close all the bubbles opened by the user.
+ *
+ * @param obj The map object.
+ *
+ * A bubble is displayed with a content fetched with #ElmMapMarkerGetFunc
+ * when the user clicks on a marker.
+ *
+ * This functions is set for the marker class with
+ * elm_map_marker_class_get_cb_set().
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_bubbles_close(Evas_Object *obj);
+
+/**
+ * Create a new group class.
+ *
+ * @param obj The map object.
+ * @return Returns the new group class.
+ *
+ * Each marker must be associated to a group class. Markers in the same
+ * group are grouped if they are close.
+ *
+ * The group class defines the style of the marker when a marker is grouped
+ * to others markers. When it is alone, another class will be used.
+ *
+ * A group class will need to be provided when creating a marker with
+ * elm_map_marker_add().
+ *
+ * Some properties and functions can be set by class, as:
+ * - style, with elm_map_group_class_style_set()
+ * - data - to be associated to the group class. It can be set using
+ * elm_map_group_class_data_set().
+ * - min zoom to display markers, set with
+ * elm_map_group_class_zoom_displayed_set().
+ * - max zoom to group markers, set using
+ * elm_map_group_class_zoom_grouped_set().
+ * - visibility - set if markers will be visible or not, set with
+ * elm_map_group_class_hide_set().
+ * - #ElmMapGroupIconGetFunc - used to fetch icon for markers group classes.
+ * It can be set using elm_map_group_class_icon_cb_set().
+ *
+ * @see elm_map_marker_add()
+ * @see elm_map_group_class_style_set()
+ * @see elm_map_group_class_data_set()
+ * @see elm_map_group_class_zoom_displayed_set()
+ * @see elm_map_group_class_zoom_grouped_set()
+ * @see elm_map_group_class_hide_set()
+ * @see elm_map_group_class_icon_cb_set()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Group_Class *elm_map_group_class_new(Evas_Object *obj);
+
+/**
+ * Set the marker's style of a group class.
+ *
+ * @param clas The group class.
+ * @param style The style to be used by markers.
+ *
+ * Each marker must be associated to a group class, and will use the style
+ * defined by such class when grouped to other markers.
+ *
+ * The following styles are provided by default theme:
+ * @li @c radio - blue circle
+ * @li @c radio2 - green circle
+ * @li @c empty
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style);
+
+/**
+ * Set the icon callback function of a group class.
+ *
+ * @param clas The group class.
+ * @param icon_get The callback function that will return the icon.
+ *
+ * Each marker must be associated to a group class, and it can display a
+ * custom icon. The function @p icon_get must return this icon.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, ElmMapGroupIconGetFunc icon_get);
+
+/**
+ * Set the data associated to the group class.
+ *
+ * @param clas The group class.
+ * @param data The new user data.
+ *
+ * This data will be passed for callback functions, like icon get callback,
+ * that can be set with elm_map_group_class_icon_cb_set().
+ *
+ * If a data was previously set, the object will lose the pointer for it,
+ * so if needs to be freed, you must do it yourself.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_group_class_icon_cb_set()
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data);
+
+/**
+ * Set the minimum zoom from where the markers are displayed.
+ *
+ * @param clas The group class.
+ * @param zoom The minimum zoom.
+ *
+ * Markers only will be displayed when the map is displayed at @p zoom
+ * or bigger.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom);
+
+/**
+ * Set the zoom from where the markers are no more grouped.
+ *
+ * @param clas The group class.
+ * @param zoom The maximum zoom.
+ *
+ * Markers only will be grouped when the map is displayed at
+ * less than @p zoom.
+ *
+ * @see elm_map_group_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom);
+
+/**
+ * Set if the markers associated to the group class @p clas are hidden or not.
+ *
+ * @param clas The group class.
+ * @param hide Use @c EINA_TRUE to hide markers or @c EINA_FALSE
+ * to show them.
+ *
+ * If @p hide is @c EINA_TRUE the markers will be hidden, but default
+ * is to show them.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide);
+
+/**
+ * Create a new marker class.
+ *
+ * @param obj The map object.
+ * @return Returns the new group class.
+ *
+ * Each marker must be associated to a class.
+ *
+ * The marker class defines the style of the marker when a marker is
+ * displayed alone, i.e., not grouped to to others markers. When grouped
+ * it will use group class style.
+ *
+ * A marker class will need to be provided when creating a marker with
+ * elm_map_marker_add().
+ *
+ * Some properties and functions can be set by class, as:
+ * - style, with elm_map_marker_class_style_set()
+ * - #ElmMapMarkerIconGetFunc - used to fetch icon for markers classes.
+ * It can be set using elm_map_marker_class_icon_cb_set().
+ * - #ElmMapMarkerGetFunc - used to fetch bubble content for marker classes.
+ * Set using elm_map_marker_class_get_cb_set().
+ * - #ElmMapMarkerDelFunc - used to delete bubble content for marker classes.
+ * Set using elm_map_marker_class_del_cb_set().
+ *
+ * @see elm_map_marker_add()
+ * @see elm_map_marker_class_style_set()
+ * @see elm_map_marker_class_icon_cb_set()
+ * @see elm_map_marker_class_get_cb_set()
+ * @see elm_map_marker_class_del_cb_set()
+ *
+ * @ingroup Map
+ */
+EAPI Elm_Map_Marker_Class *elm_map_marker_class_new(Evas_Object *obj);
+
+/**
+ * Set the marker's style of a marker class.
+ *
+ * @param clas The marker class.
+ * @param style The style to be used by markers.
+ *
+ * Each marker must be associated to a marker class, and will use the style
+ * defined by such class when alone, i.e., @b not grouped to other markers.
+ *
+ * The following styles are provided by default theme:
+ * @li @c radio
+ * @li @c radio2
+ * @li @c empty
+ *
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_add()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style);
+
+/**
+ * Set the icon callback function of a marker class.
*
- * By default these values are 0 (world map) and 18 (maximum zoom).
+ * @param clas The marker class.
+ * @param icon_get The callback function that will return the icon.
*
- * This function should be used when zoom mode is set to
- * #ELM_MAP_ZOOM_MODE_MANUAL. This is the default mode, and can be set
- * with elm_map_zoom_mode_set().
+ * Each marker must be associated to a marker class, and it can display a
+ * custom icon. The function @p icon_get must return this icon.
*
- * @see elm_map_zoom_mode_set()
- * @see elm_map_zoom_get()
+ * @see elm_map_marker_class_new() for more details.
+ * @see elm_map_marker_add()
*
* @ingroup Map
*/
*
* @ingroup Map
*/
-EAPI void elm_map_region_to_canvas_convert(const Evas_Object *obj, double lon, double lat, Evas_Coord *x, Evas_Coord *y);
+EAPI void elm_map_user_agent_set(Evas_Object *obj, const char *user_agent);
/**
- * Pause or unpause the map.
+ * Get the user agent used by the map object.
*
* @param obj The map object.
- * @param paused Use @c EINA_TRUE to pause the map @p obj or @c EINA_FALSE
- * to unpause it.
- *
- * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
- * for map.
- *
- * The default is off.
+ * @return The user agent identification string used by the map.
*
- * This will stop zooming using animation, changing zoom levels will
- * change instantly. This will stop any existing animations that are running.
+ * @see elm_map_user_agent_set() for details.
*
+ * @ingroup Map
+ */
+EAPI const char *elm_map_user_agent_get(const Evas_Object *obj);
++=======
+ * @see elm_map_paused_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_paused_set(Evas_Object *obj, Eina_Bool paused);
/**
- * Add a new route to the map object.
+ * Get a value whether map is paused or not.
*
* @param obj The map object.
- * @param type The type of transport to be considered when tracing a route.
- * @param method The routing method, what should be priorized.
- * @param flon The start longitude.
- * @param flat The start latitude.
- * @param tlon The destination longitude.
- * @param tlat The destination latitude.
- *
- * @return The created route or @c NULL upon failure.
+ * @return @c EINA_TRUE means map is pause. @c EINA_FALSE indicates
+ * it is not.
*
- * A route will be traced by point on coordinates (@p flat, @p flon)
- * to point on coordinates (@p tlat, @p tlon), using the route service
- * set with elm_map_route_source_set().
+ * This gets the current paused state for the map object.
*
- * It will take @p type on consideration to define the route,
- * depending if the user will be walking or driving, the route may vary.
- * One of #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE, or
- * #ELM_MAP_ROUTE_TYPE_FOOT need to be used.
+ * @see elm_map_paused_set() for details.
*
- * Another parameter is what the route should priorize, the minor distance
- * or the less time to be spend on the route. So @p method should be one
- * of #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST.
+ * @ingroup Map
+ */
+ EAPI Eina_Bool elm_map_paused_get(const Evas_Object *obj);
+
+ /**
+ * Rotate the map.
*
- * Routes created with this method can be deleted with
- * elm_map_route_remove(), colored with elm_map_route_color_set(),
- * and distance can be get with elm_map_route_distance_get().
+ * @param obj The map object.
+ * @param degree Angle from 0.0 to 360.0 to rotate around Z axis.
+ * @param cx Rotation's center horizontal position.
+ * @param cy Rotation's center vertical position.
*
- * @see elm_map_route_remove()
- * @see elm_map_route_color_set()
- * @see elm_map_route_distance_get()
- * @see elm_map_route_source_set()
+ * @see elm_map_rotate_get()
*
* @ingroup Map
*/
*
* @ingroup Map
*/
- EAPI const char *elm_map_route_waypoint_get(const Elm_Map_Route *route);
+ EAPI Elm_Map_Overlay * elm_map_overlay_add(Evas_Object *obj, double lon, double lat);
/**
+ * Delete a overlay from the map. This function can delete all types
+ * of overlays.
+ *
+ * @param overlay The overlay to be deleted.
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_del(Elm_Map_Overlay *overlay);
+
+ /**
+ * Get the overlay type.
+ *
+ * @param overlay The overlay to return type.
+ * @return Return the overlay type.
+ *
+ * This type is resolved when the overlay is created.
+ *
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+ EAPI Elm_Map_Overlay_Type elm_map_overlay_type_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set a pointer of user data for a overlay.
+ *
+ * @param overlay The overlay to own the user data.
+ * @param data A pointer of user data
+ *
+ * @see elm_map_overlay_data_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_data_set(Elm_Map_Overlay *overlay, void *data);
+
+ /**
+ * Get the user data stored on a overlay.
+ *
+ * @param overlay The overlay to return the user data.
+ * @return A pointer to data stored using elm_map_overlay_data_set(),
+ * or @c NULL, if none has been set.
+ *
+ * @see elm_map_overlay_data_set()
+ *
+ * @ingroup Map
+ */
+ EAPI void * elm_map_overlay_data_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set if the overlay is hidden or not.
+ *
+ * @param overlay The overlay to be hidden.
+ * @param hide Use @c EINA_TRUE to hide the overlay or @c EINA_FALSE to show.
+ *
+ * @see elm_map_overlay_hide_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_hide_set(Elm_Map_Overlay *overlay, Eina_Bool hide);
+
+ /**
+ * Get a value whether the overlay is hidden or not.
+ *
+ * @param overlay The overlay to return the hidden state.
+ * @return @c EINA_TRUE means the overlay is hidden. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * This gets the current hidden state for the overlay.
+ *
+ * @see elm_map_overlay_hide_set()
+ *
+ * @ingroup Map
+ */
+ EAPI Eina_Bool elm_map_overlay_hide_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set the minimum zoom from where the overlay is displayed.
+ *
+ * @param overlay The overlay to be set the minimum zoom.
+ * @param zoom The minimum zoom.
+ *
+ * The overlay only will be displayed when the map is displayed at @p zoom
+ * or bigger.
+ *
+ * @see elm_map_overlay_displayed_zoom_min_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_displayed_zoom_min_set(Elm_Map_Overlay *overlay, int zoom);
+
+ /**
+ * Get the minimum zoom from where the overlay is displayed.
+ *
+ * @param overlay The overlay to return the minimum zoom.
+ * @return zoom The minimum zoom.
+ *
+ * @see elm_map_overlay_displayed_zoom_min_set()
+ *
+ * @ingroup Map
+ */
+ EAPI int elm_map_overlay_displayed_zoom_min_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Pause or unpause the overlay.
+ *
+ * @param overlay The overlay to be paused.
+ * @param paused Use @c EINA_TRUE to pause the @p overlay or @c EINA_FALSE
+ * to unpause it.
+ *
+ * This sets the paused state to on (@c EINA_TRUE) or off (@c EINA_FALSE)
+ * for the overlay.
+ *
+ * The default is off.
+ *
+ * This will stop moving the overlay coordinates instantly.
+ * even if map being scrolled or zoomed.
+ *
+ * @see elm_map_overlay_paused_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_paused_set(Elm_Map_Overlay *overlay, Eina_Bool paused);
+
+ /**
+ * Get a value whether the overlay is paused or not.
+ *
+ * @param overlay The overlay to return paused state.
+ * @return @c EINA_TRUE means overlay is paused. @c EINA_FALSE indicates
+ * it is not.
+ *
+ * This gets the current paused state for the overlay.
+ *
+ * @see elm_map_overlay_paused_set()
+ *
+ * @ingroup Map
+ */
+ EAPI Eina_Bool elm_map_overlay_paused_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set the content object of the overlay.
+ *
+ * @param overlay The overlay to be set the content.
+ * @param obj The evas object will be used to display the overlay.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * The content should be resized or set size hints before set to the overlay.
+ * <b> Do not modify this object</b> (move, show, hide, del, etc.),
+ * after set.
+ * You can only resize this.
+ *
+ * This content is what will be inside the overlay that will be displayed.
+ * If a content is set, icon and default style layout are no more used before
+ * the content is deleted.
+ *
+ * If @p obj is @c NULL, content inside the overlay is deleted.
+ *
+ * @see elm_map_overlay_content_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_content_set(Elm_Map_Overlay *overlay, Evas_Object *obj);
+
+ /**
+ * Get the content object.
+ *
+ * @param overlay The overlay to return the content.
+ * @return Return the evas object if it exists, else @c NULL.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * Returned content is what being inside the overlay that being displayed.
+ *
+ * <b> Do not modify this object</b> (move, show, hide, del, etc.).
+ * You can only resize this.
+ *
+ * The content can be set by elm_map_overlay_content_set().
+ *
+ * @see elm_map_overlay_content_set()
+ *
+ * @ingroup Map
+ */
+ EAPI const Evas_Object * elm_map_overlay_content_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set a icon of the overlay.
+ *
+ * @param overlay The overlay to be set the icon.
+ * @param icon The icon will be used to display the overlay.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * <b> Do not modify this object</b> (move, show, hide, resize, del, etc.),
+ * after set.
+ *
+ * If icon is set, default style layout will not be used.
+ *
+ * If @p icon is @c NULL, icon inside the overlay will be deleted.
+ *
+ * @see elm_map_overlay_icon_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_icon_set(Elm_Map_Overlay *overlay, Evas_Object *icon);
+
+ /**
+ * Get the icon object.
+ *
+ * @param overlay The overlay to return the icon.
+ * @return Return the icon object if it exists, else @c NULL.
+ *
+ * Only default and class type overlay support this function.
+ *
+ * Returned icon is what being inside the overlay that being displayed.
+ *
+ * <b> Do not modify this icon </b> (move, show, hide, resize, del, etc.).
+ *
+ * The icon can be set by elm_map_overlay_icon_set().
+ *
+ * @see elm_map_overlay_icon_set()
+ *
+ * @ingroup Map
+ */
+ EAPI const Evas_Object * elm_map_overlay_icon_get(const Elm_Map_Overlay *overlay);
+
+ /**
+ * Set the geographic coordinates of the overlay.
+ *
+ * @param overlay The overlay to be set geographic coordinates.
+ * @param lon Longitude to be set.
+ * @param lat Latitude to be set.
+ *
+ * Only default and bubble type overlay support this function.
+ *
+ * This sets the center coordinates of the overlay. It can be
+ * get by elm_map_overlay_region_get().
+ *
+ * @see elm_map_overlay_region_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_region_set(Elm_Map_Overlay *overlay, double lon, double lat);
+
+ /**
+ * Get the geographic coordinates of the overlay.
+ *
+ * @param overlay The overlay to return geographic coordinates.
+ * @param lon Pointer to store longitude.
+ * @param lat Pointer to store latitude.
+ *
+ * Only default and bubble type overlay support this function.
+ *
+ * This returns the center coordinates of the overlay. It can be
+ * set by elm_map_overlay_region_set().
+ *
+ * @see elm_map_overlay_region_set()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_region_get(const Elm_Map_Overlay *overlay, double *lon, double *lat);
+
+
+ /**
+ * Set the object color of the overlay.
+ *
+ * @param overlay The overlay to be set color.
+ * @param r Red channel value, from 0 to 255.
+ * @param g Green channel value, from 0 to 255.
+ * @param b Blue channel value, from 0 to 255.
+ * @param a Alpha channel value, from 0 to 255.
+ *
+ * It uses an additive color model, so each color channel represents
+ * how much of each primary colors must to be used. 0 represents
+ * absence of this color, so if all of the three are set to 0,
+ * the color will be black.
+ *
+ * These component values should be integers in the range 0 to 255,
+ * (single 8-bit byte).
+ *
+ * This sets the color used for the overlay. By default, it is set to
+ * solid red (r = 255, g = 0, b = 0, a = 255).
+ *
+ * For alpha channel, 0 represents completely transparent, and 255, opaque.
+ *
+ * @see elm_map_overlay_color_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_color_set(Elm_Map_Overlay *overlay, int r, int g, int b, int a);
+
+ /**
+ * Get the object color of the overlay.
+ *
+ * @param overlay The overlay to return color.
+ * @param r Pointer to store the red channel value.
+ * @param g Pointer to store the green channel value.
+ * @param b Pointer to store the blue channel value.
+ * @param a Pointer to store the alpha channel value.
+ *
+ * @see elm_map_overlay_color_set()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_color_get(const Elm_Map_Overlay *overlay, int *r, int *g, int *b, int *a);
+
+ /**
+ * Show the given overlay at the center of the map, immediately.
+ *
+ * @param overlay The overlay to be center at.
+ *
+ * This causes map to @b redraw its viewport's contents to the
+ * region containing the given @p overlay's coordinates, that will be
+ * moved to the center of the map.
+ *
+ * @see elm_map_overlays_show() if more than one overlay need to be displayed.
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_show(Elm_Map_Overlay *overlay);
+
+ /**
+ * Move and zoom the map to display a list of overlays.
+ *
+ * @param overlays A list of #Elm_Map_Overlay handles.
+ *
+ * The map will be centered on the center point of the overlays in the list.
+ * Then the map will be zoomed in order to fit the overlays using the maximum
+ * zoom which allows display of all the overlays.
+ *
+ * @warning All the overlays should belong to the same map object.
+ *
+ * @see elm_map_overlay_show() to show a single overlay.
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlays_show(Eina_List *overlays);
+
+ /**
+ * Set the get callback function of the overlay.
+ *
+ * @param overlay The overlay to own the get callback function.
+ * @param get_cb The callback function.
+ * @param data The user callback data.
+ *
+ * You can delete this callback function by setting @c NULL.
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_get_cb_set(Elm_Map_Overlay *overlay, Elm_Map_Overlay_Get_Cb get_cb, void *data);
+
+
+ /**
+ * Add a new class overlay to the map object.
+ * This overlay has a class type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * This overlay is not shown before overlay members are appended.
+ * if overlay members in the same class are close, group overlays
+ * are created. If they are far away, group overlays are hidden.
+ * When group overlays are shown, they have default style layouts at first.
+ *
+ * You can changed the state (hidden, paused, etc.) or set the content
+ * or icon of the group overlays.
+ * Also these changes have a influence on the overlays in the same class
+ * even if each overlay is alone and is not grouped.
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+ EAPI Elm_Map_Overlay * elm_map_overlay_class_add(Evas_Object *obj);
+
+ /**
+ * Add a new overlay member to the class overlay.
+ *
+ * @param clas The class overlay to add a new overlay.
+ * @param overlay The overlay to be added to the class overlay.
+ *
+ * @see elm_map_overlay_class_remove()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_class_append(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+ /**
+ * Remove a overlay from the class.
+ *
+ * @param clas The class overlay to delete the overlay.
+ * @param overlay The overlay to be deleted from the class overlay.
+ *
+ * @see elm_map_overlay_class_append()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_class_remove(Elm_Map_Overlay *clas, Elm_Map_Overlay *overlay);
+
+ /**
+ * Set the maximum zoom from where the overlay members in the class can be
+ * grouped.
+ *
+ * @param clas The overlay class has overlay members.
+ * @param zoom The maximum zoom.
+ *
+ * Overlay members in the class only will be grouped when the map
+ * is displayed at less than @p zoom.
+ *
+ * @see elm_map_overlay_class_zoom_max_get()
+ *
+ * @ingroup Map
+ */
+ EAPI
+ EAPI void elm_map_overlay_class_zoom_max_set(Elm_Map_Overlay *clas, int zoom);
+
+ /**
+ * Get the zoom from where the overlay members in the class are no more grouped.
+ *
+ * @param clas The overlay class has overlay members.
+ *
+ * @return The maximum zoom.
+ *
+ * @see elm_map_overlay_class_zoom_max_set()
+ *
+ * @ingroup Map
+ */
+ EAPI int elm_map_overlay_class_zoom_max_get(const Elm_Map_Overlay *clas);
+
+ /**
+ * Add a new bubble overlay to the map object.
+ * This overlay has a bubble type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * A bubble will not be displayed before geographic coordinates are set or
+ * any other overlays are followed.
+ *
+ * This overlay has a bubble style layout and icon or content can not
+ * be set.
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_add()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_region_set()
+ * @see elm_map_overlay_bubble_follow()
+ *
+ * @ingroup Map
+ */
+ EAPI Elm_Map_Overlay * elm_map_overlay_bubble_add(Evas_Object *obj);
+
+ /**
+ * Follow a other overlay.
+ *
+ * @param bubble The bubble overlay to follow a parent overlay.
+ * @param parent The parent overlay to be followed by the bubble overlay.
+ *
+ * Bubble overlay will follow the parent overlay's movement (hide, show, move).
+ *
+ * @see elm_map_overlay_bubble_add()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_bubble_follow(Elm_Map_Overlay *bubble, Elm_Map_Overlay *parent);
+
+ /**
+ * Add a content object to the bubble overlay.
+ *
+ * @param bubble The bubble overlay to add a content.
+ * @param content The content to be added to the bubble overlay.
+ *
+ * Added contents will be displayed inside the bubble overlay.
+ *
+ * @see elm_map_overlay_bubble_content_clear()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_overlay_bubble_content_append(Elm_Map_Overlay *bubble, Evas_Object *content);
+
+ /**
+ * Clear all contents inside the bubble overlay.
+ *
+ * @param bubble The bubble overlay to clear the contents.
+ *
+ * This will delete all contents inside the bubble overlay.
+ *
+ * @see elm_map_overlay_bubble_content_append()
+ *
+ * @ingroup Map
+ */
+
+ EAPI void elm_map_overlay_bubble_content_clear(Elm_Map_Overlay *bubble);
+
+ /**
+ * Add a new route overlay to the map object.
+ * This overlay has a route type.
+ *
+ * @param obj The map object to add a new overlay.
+ * @param route The route object to make a overlay.
+ * @return The created overlay or @c NULL upon failure.
+ *
+ * This overlay has a route style layout and icon or content can not
+ * be set.
+ *
+ * The color scheme can be changed by elm_map_overlay_content_set().
+ *
+ * Overlay created with this method can be deleted with elm_map_overlay_del().
+ *
+ * @see elm_map_overlay_del()
+ * @see elm_map_overlay_class_add()
+ * @see elm_map_overlay_content_set()
+ * @see elm_map_overlay_content_get()
+ *
+ * @ingroup Map
+ */
+ EAPI Elm_Map_Overlay * elm_map_overlay_route_add(Evas_Object *obj, const Elm_Map_Route *route);
+
+ /**
+ * Get the information of tile load status.
+ *
+ * @param obj The map object.
+ * @param try_num Pointer to store number of tiles download requested.
+ * @param finish_num Pointer to store number of tiles successfully downloaded.
+ *
+ * This gets the current tile loaded status for the map object.
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_tile_load_status_get(const Evas_Object *obj, int *try_num, int *finish_num);
+
+ /**
+ * Get the names of available sources for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @return The char pointer array of source names.
+ *
+ * It will provide a list with all available sources.
+ * Current source can be set by elm_map_source_set(), or get with
+ * elm_map_source_get().
+ *
+ * At least available sources of tile type:
+ * @li "Mapnik"
+ * @li "Osmarender"
+ * @li "CycleMap"
+ * @li "Maplint"
+ *
+ * At least available sources of route type:
+ * @li "Yours"
+ *
+ * At least available sources of name type:
+ * @li "Nominatim"
+ *
+ * @see elm_map_source_set()
+ * @see elm_map_source_get()
+ *
+ * @ingroup Map
+ */
+ EAPI const char **elm_map_sources_get(const Evas_Object *obj, Elm_Map_Source_Type type);
+
+ /**
+ * Set the current source of the map for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @param source_name The source to be used.
+ *
+ * Map widget retrieves tile images that composes the map from a web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_TILE type.
+ * A different service can return a different maps with different
+ * information and it can use different zoom values.
+ *
+ * Map widget provides route data based on a external web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_ROUTE type.
+ *
+ * Map widget also provide geoname data based on a external web service.
+ * This web service can be set with this method
+ * for ELM_MAP_SOURCE_TYPE_NAME type.
+ *
+ * The @p source_name need to match one of the names provided by
+ * elm_map_sources_get().
+ *
+ * The current source can be get using elm_map_source_get().
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_get()
+ *
+ * @ingroup Map
+ */
+ EAPI void elm_map_source_set(Evas_Object *obj, Elm_Map_Source_Type type, const char *source_name);
+
+ /**
+ * Get the name of currently used source for a specific type.
+ *
+ * @param obj The map object.
+ * @param type source type.
+ * @return Returns the name of the source in use.
+ *
+ * @see elm_map_sources_get()
+ * @see elm_map_source_set()
+ *
+ * @ingroup Map
+ */
+ EAPI const char *elm_map_source_get(const Evas_Object *obj, Elm_Map_Source_Type type);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Add a new route to the map object.
+ *
+ * @param obj The map object.
+ * @param type The type of transport to be considered when tracing a route.
++<<<<<<< HEAD
++ * @param method The routing method, what should be priorized.
++=======
+ * @param method The routing method, what should be prioritized.
++>>>>>>> remotes/origin/upstream
+ * @param flon The start longitude.
+ * @param flat The start latitude.
+ * @param tlon The destination longitude.
+ * @param tlat The destination latitude.
+ *
+ * @return The created route or @c NULL upon failure.
+ *
+ * A route will be traced by point on coordinates (@p flat, @p flon)
+ * to point on coordinates (@p tlat, @p tlon), using the route service
+ * set with elm_map_route_source_set().
+ *
+ * It will take @p type on consideration to define the route,
+ * depending if the user will be walking or driving, the route may vary.
+ * One of #ELM_MAP_ROUTE_TYPE_MOTOCAR, #ELM_MAP_ROUTE_TYPE_BICYCLE, or
+ * #ELM_MAP_ROUTE_TYPE_FOOT need to be used.
+ *
++<<<<<<< HEAD
++ * Another parameter is what the route should priorize, the minor distance
++=======
+ * Another parameter is what the route should prioritize, the minor distance
++>>>>>>> remotes/origin/upstream
+ * or the less time to be spend on the route. So @p method should be one
+ * of #ELM_MAP_ROUTE_METHOD_SHORTEST or #ELM_MAP_ROUTE_METHOD_FASTEST.
+ *
+ * Routes created with this method can be deleted with
+ * elm_map_route_remove(), colored with elm_map_route_color_set(),
+ * and distance can be get with elm_map_route_distance_get().
+ *
+ * @see elm_map_route_remove()
+ * @see elm_map_route_color_set()
+ * @see elm_map_route_distance_get()
+ * @see elm_map_route_source_set()
+ *
+ * @ingroup Map
+ */
++<<<<<<< HEAD
++EAPI Elm_Map_Route *elm_map_route_add(Evas_Object *obj, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat);
++=======
+ EAPI Elm_Map_Route *elm_map_route_add(Evas_Object *obj, Elm_Map_Route_Type type, Elm_Map_Route_Method method, double flon, double flat, double tlon, double tlat, Elm_Map_Route_Cb route_cb, void *data);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Remove a route from the map.
+ *
+ * @param route The route to remove.
+ *
+ * @see elm_map_route_add()
+ *
+ * @ingroup Map
+ */
++<<<<<<< HEAD
++EAPI void elm_map_route_remove(Elm_Map_Route *route);
++
++/**
++ * Set the route color.
++ *
++ * @param route The route object.
++ * @param r Red channel value, from 0 to 255.
++ * @param g Green channel value, from 0 to 255.
++ * @param b Blue channel value, from 0 to 255.
++ * @param a Alpha channel value, from 0 to 255.
++ *
++ * It uses an additive color model, so each color channel represents
++ * how much of each primary colors must to be used. 0 represents
++ * ausence of this color, so if all of the three are set to 0,
++ * the color will be black.
++ *
++ * These component values should be integers in the range 0 to 255,
++ * (single 8-bit byte).
++ *
++ * This sets the color used for the route. By default, it is set to
++ * solid red (r = 255, g = 0, b = 0, a = 255).
++ *
++ * For alpha channel, 0 represents completely transparent, and 255, opaque.
++ *
++ * @see elm_map_route_color_get()
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_route_color_set(Elm_Map_Route *route, int r, int g, int b, int a);
++
++/**
++ * Get the route color.
++ *
++ * @param route The route object.
++ * @param r Pointer where to store the red channel value.
++ * @param g Pointer where to store the green channel value.
++ * @param b Pointer where to store the blue channel value.
++ * @param a Pointer where to store the alpha channel value.
++ *
++ * @see elm_map_route_color_set() for details.
++ *
++ * @ingroup Map
++ */
++EAPI void elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g, int *b, int *a);
++=======
+ EAPI void elm_map_route_del(Elm_Map_Route *route);
++>>>>>>> remotes/origin/upstream
+
+ /**
+ * Get the route distance in kilometers.
+ *
+ * @param route The route object.
+ * @return The distance of route (unit : km).
+ *
+ * @ingroup Map
+ */
+ EAPI double elm_map_route_distance_get(const Elm_Map_Route *route);
+
+ /**
+ * Get the information of route nodes.
+ *
+ * @param route The route object.
+ * @return Returns a string with the nodes of route.
+ *
+ * @ingroup Map
+ */
+ EAPI const char *elm_map_route_node_get(const Elm_Map_Route *route);
+
+ /**
+ * Get the information of route waypoint.
+ *
+ * @param route the route object.
+ * @return Returns a string with information about waypoint of route.
+ *
+ * @ingroup Map
+ */
+ EAPI const char *elm_map_route_waypoint_get(const Elm_Map_Route *route);
+
+ /**
++<<<<<<< HEAD
++=======
+ * Request a address or geographic coordinates(longitude, latitude)
+ * from a given address or geographic coordinate(longitude, latitude).
+ *
+ * @param obj The map object.
+ * @param address The address.
+ * @param lon The longitude.
+ * @param lat The latitude.
+ * @param name_cb The callback function.
+ * @param data The user callback data.
+ * @return name A #Elm_Map_Name handle for this coordinate.
+ *
+ * If you want to get address from geographic coordinates, set input @p address
+ * as NULL and set @p lon, @p lat as you want to convert.
+ * If address is set except NULL, @p lon and @p lat are checked.
+ *
+ * To get the string for this address, elm_map_name_address_get()
+ * should be used after callback or "name,loaded" signal is called.
+ *
+ * To get the longitude and latitude, elm_map_name_region_get()
+ * should be used.
+ *
+ * @ingroup Map
+ */
+ EAPI Elm_Map_Name *elm_map_name_add(const Evas_Object *obj, const char *address, double lon, double lat, Elm_Map_Name_Cb name_cb, void *data);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Get the address of the name.
*
* @param name The name handle.
* Get the current coordinates of the name.
*
* @param name The name handle.
++<<<<<<< HEAD
+ * @param lat Pointer where to store the latitude.
+ * @param lon Pointer where to store The longitude.
++=======
+ * @param lat Pointer to store the latitude.
+ * @param lon Pointer to store The longitude.
++>>>>>>> remotes/origin/upstream
*
* This gets the coordinates of the @p name, created with one of the
* conversion functions.
*
* @param name The name to remove.
*
++<<<<<<< HEAD
+ * Basically the struct handled by @p name will be freed, so convertions
++=======
+ * Basically the struct handled by @p name will be freed, so conversions
++>>>>>>> remotes/origin/upstream
* between address and coordinates will be lost.
*
* @see elm_map_utils_convert_name_into_coord()
*
* @ingroup Map
*/
++<<<<<<< HEAD
+EAPI void elm_map_name_remove(Elm_Map_Name *name);
+
+/**
+ * Rotate the map.
+ *
+ * @param obj The map object.
+ * @param degree Angle from 0.0 to 360.0 to rotate arount Z axis.
+ * @param cx Rotation's center horizontal position.
+ * @param cy Rotation's center vertical position.
+ *
+ * @see elm_map_rotate_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy);
+
+/**
+ * Get the rotate degree of the map
+ *
+ * @param obj The map object
+ * @param degree Pointer where to store degrees from 0.0 to 360.0
+ * to rotate arount Z axis.
+ * @param cx Pointer where to store rotation's center horizontal position.
+ * @param cy Pointer where to store rotation's center vertical position.
+ *
+ * @see elm_map_rotate_set() to set map rotation.
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy);
+
+/**
+ * Enable or disable mouse wheel to be used to zoom in / out the map.
+ *
+ * @param obj The map object.
+ * @param disabled Use @c EINA_TRUE to disable mouse wheel or @c EINA_FALSE
+ * to enable it.
+ *
+ * Mouse wheel can be used for the user to zoom in or zoom out the map.
+ *
+ * It's disabled by default.
+ *
+ * @see elm_map_wheel_disabled_get()
+ *
+ * @ingroup Map
+ */
+EAPI void elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * Get a value whether mouse wheel is enabled or not.
+ *
+ * @param obj The map object.
+ * @return @c EINA_TRUE means map is disabled. @c EINA_FALSE indicates
+ * it is enabled. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * Mouse wheel can be used for the user to zoom in or zoom out the map.
+ *
+ * @see elm_map_wheel_disabled_set() for details.
+ *
+ * @ingroup Map
+ */
+EAPI Eina_Bool elm_map_wheel_disabled_get(const Evas_Object *obj);
+
+#ifdef ELM_EMAP
+/**
++=======
+ EAPI void elm_map_name_del(Elm_Map_Name *name);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Add a track on the map
*
* @param obj The map object.
*
* @ingroup Map
*/
++<<<<<<< HEAD
+EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, EMap_Route *emap);
+#endif
++=======
+ EAPI Evas_Object *elm_map_track_add(Evas_Object *obj, void *emap);
++>>>>>>> remotes/origin/upstream
/**
* Remove a track from the map
*/
EAPI void elm_map_track_remove(Evas_Object *obj, Evas_Object *route);
++<<<<<<< HEAD
+/**
+ * @}
+ */
++=======
++>>>>>>> remotes/origin/upstream
if (content)
{
evas_object_data_set(content, "_elm_leaveme", (void *)1);
++<<<<<<< HEAD
+ elm_widget_sub_object_add(content, obj);
++=======
+ elm_widget_sub_object_add(obj, content);
++>>>>>>> remotes/origin/upstream
evas_object_smart_member_add(content, obj);
evas_object_clip_set(content, wd->clip);
evas_object_color_set(wd->clip, 255, 255, 255, 255);
* This holds one content object and uses an Evas Map of transformation
* points to be later used with this content. So the content will be
* moved, resized, etc as a single image. So it will improve performance
++<<<<<<< HEAD
+ * when you have a complex interafce, with a lot of elements, and will
+ * need to resize or move it frequently (the content object and its
+ * children).
+ *
+ * Default contents parts of the mapbuf widget that you can use for are:
++=======
+ * when you have a complex interface, with a lot of elements, and will
+ * need to resize or move it frequently (the content object and its
+ * children).
+ *
+ * Default content parts of the mapbuf widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the mapbuf
*
* Supported elm_object common APIs.
*
* Also, when enabled, alpha and smooth states will be used, so if the
* content isn't solid, alpha should be enabled, for example, otherwise
++<<<<<<< HEAD
+ * a black retangle will fill the content.
++=======
+ * a black rectangle will fill the content.
++>>>>>>> remotes/origin/upstream
*
* When disabled, the stored map will be freed and geometry prior to
* enabling the map will be restored.
_elm_theme_object_set
(obj, VIEW(item), "menu", "item_with_submenu",
elm_widget_style_get(obj));
++<<<<<<< HEAD
+ elm_object_item_text_set((Elm_Object_Item *) item,
+ item->label);
+ elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
++=======
+ elm_object_item_text_set((Elm_Object_Item *)item,
+ item->label);
+ elm_menu_item_icon_name_set((Elm_Object_Item *)item,
++>>>>>>> remotes/origin/upstream
item->icon_str);
}
else
{
_elm_theme_object_set(obj, VIEW(item), "menu", "item",
elm_widget_style_get(obj));
++<<<<<<< HEAD
+ elm_object_item_text_set((Elm_Object_Item *) item,
+ item->label);
+ elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
+ item->icon_str);
+ }
+ _item_disable_hook((Elm_Object_Item *) item);
++=======
+ elm_object_item_text_set((Elm_Object_Item *)item,
+ item->label);
+ elm_menu_item_icon_name_set((Elm_Object_Item *)item,
+ item->icon_str);
+ }
+ _item_disable_hook((Elm_Object_Item *)item);
++>>>>>>> remotes/origin/upstream
edje_object_scale_set(VIEW(item), elm_widget_scale_get(obj) *
_elm_config->scale);
}
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
Elm_Menu_Item *item;
if (part && strcmp(part, "default")) return;
++<<<<<<< HEAD
+ item = (Elm_Menu_Item *) it;
++=======
+ item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
eina_stringshare_replace(&item->label, label);
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Menu_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Menu_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static void
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
Elm_Menu_Item *item;
if (part && strcmp(part, "default")) return;
++<<<<<<< HEAD
+ item = (Elm_Menu_Item *) it;
++=======
+ item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->content)
{
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Menu_Item *) it)->content;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Menu_Item *)it)->content;
++>>>>>>> remotes/origin/upstream
}
static void
_item_disable_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (elm_widget_item_disabled_get(item))
{
EINA_LIST_FOREACH(item->parent->submenu.items, l, item2)
{
if (item2 != item)
++<<<<<<< HEAD
+ elm_menu_item_selected_set((Elm_Object_Item *) item2, 0);
++=======
+ elm_menu_item_selected_set((Elm_Object_Item *)item2, 0);
++>>>>>>> remotes/origin/upstream
}
}
else
EINA_LIST_FOREACH(wd->items, l, item2)
{
if (item2 != item)
++<<<<<<< HEAD
+ elm_menu_item_selected_set((Elm_Object_Item *) item2, 0);
++=======
+ elm_menu_item_selected_set((Elm_Object_Item *)item2, 0);
++>>>>>>> remotes/origin/upstream
}
}
}
Elm_Menu_Item *item = data;
item->submenu.open = EINA_TRUE;
evas_object_show(item->submenu.hv);
++<<<<<<< HEAD
+ _sizing_eval(WIDGET(item));
++=======
+ _submenu_sizing_eval(item);
++>>>>>>> remotes/origin/upstream
}
static void
edje_object_mirrored_set(VIEW(item), elm_widget_mirrored_get(WIDGET(item)));
_elm_theme_object_set(WIDGET(item), VIEW(item), "menu", "item_with_submenu", elm_widget_style_get(WIDGET(item)));
++<<<<<<< HEAD
+ elm_object_item_text_set((Elm_Object_Item *) item,
+ item->label);
+ if (item->icon_str)
+ elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
++=======
+ elm_object_item_text_set((Elm_Object_Item *)item,
+ item->label);
+ if (item->icon_str)
+ elm_menu_item_icon_name_set((Elm_Object_Item *)item,
++>>>>>>> remotes/origin/upstream
item->icon_str);
edje_object_signal_callback_add(VIEW(item), "elm,action,open", "",
_submenu_open, item);
EAPI Evas_Object *
elm_menu_item_object_get(const Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ return VIEW(((Elm_Menu_Item *) it));
++=======
+ return VIEW(((Elm_Menu_Item *)it));
++>>>>>>> remotes/origin/upstream
}
static void
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
Elm_Object_Item *_item;
EINA_LIST_FREE(item->submenu.items, _item) elm_object_item_del(_item);
elm_widget_sub_object_add(WIDGET(subitem), subitem->content);
edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subitem->content);
if (icon)
++<<<<<<< HEAD
+ elm_menu_item_object_icon_name_set((Elm_Object_Item *) subitem, icon);
++=======
+ elm_menu_item_icon_name_set((Elm_Object_Item *) subitem, icon);
++>>>>>>> remotes/origin/upstream
_elm_menu_item_add_helper(obj, (Elm_Menu_Item *) parent, subitem, wd);
return (Elm_Object_Item *) subitem;
}
++<<<<<<< HEAD
+EAPI Elm_Object_Item *
++=======
+ EINA_DEPRECATED EAPI Elm_Object_Item *
++>>>>>>> remotes/origin/upstream
elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data)
{
Elm_Menu_Item *subitem;
elm_menu_item_index_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 0);
++<<<<<<< HEAD
+ return ((Elm_Menu_Item *) it)->idx;
++=======
+ return ((Elm_Menu_Item *)it)->idx;
++>>>>>>> remotes/origin/upstream
}
EAPI void
return _item_text_get_hook(it, NULL);
}
++<<<<<<< HEAD
+EAPI void
+elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ EINA_SAFETY_ON_NULL_RETURN(icon);
+ char icon_tmp[512];
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ EINA_DEPRECATED EAPI void
+ elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon)
+ {
+ elm_menu_item_icon_name_set(it, icon);
+ }
+
+ EAPI void
+ elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ EINA_SAFETY_ON_NULL_RETURN(icon);
+ char icon_tmp[512];
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!*icon) return;
if ((item->icon_str) && (!strcmp(item->icon_str, icon))) return;
return _item_content_get_hook(it, NULL);
}
++<<<<<<< HEAD
+EAPI const char *
+elm_menu_item_object_icon_name_get(const Elm_Object_Item *it)
+{
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ return ((Elm_Menu_Item *) it)->icon_str;
++=======
+ EINA_DEPRECATED EAPI const char *
+ elm_menu_item_object_icon_name_get(const Elm_Object_Item *it)
+ {
+ return elm_menu_item_icon_name_get(it);
+ }
+
+ EAPI const char *
+ elm_menu_item_icon_name_get(const Elm_Object_Item *it)
+ {
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ return ((Elm_Menu_Item *)it)->icon_str;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
elm_menu_item_is_separator(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Menu_Item *) it)->separator;
++=======
+ return ((Elm_Menu_Item *)it)->separator;
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_menu_item_subitems_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return ((Elm_Menu_Item *) it)->submenu.items;
++=======
+ return ((Elm_Menu_Item *)it)->submenu.items;
++>>>>>>> remotes/origin/upstream
}
EAPI const Eina_List *
elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (selected == item->selected) return;
item->selected = selected;
elm_menu_item_selected_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Menu_Item *) it)->selected;
++=======
+ return ((Elm_Menu_Item *)it)->selected;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
elm_menu_item_prev_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->parent)
{
elm_menu_item_next_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Menu_Item *item = (Elm_Menu_Item *) it;
++=======
+ Elm_Menu_Item *item = (Elm_Menu_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->parent)
{
return NULL;
}
++<<<<<<< HEAD
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_menu_item_menu_get(const Elm_Object_Item *it)
{
return elm_object_item_widget_get(it);
Elm_Menu_Item *item;
EINA_LIST_FOREACH(wd->items, l, item)
{
++<<<<<<< HEAD
+ if (item->selected) return ((Elm_Object_Item *) item);
++=======
+ if (item->selected) return ((Elm_Object_Item *)item);
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
* Signals that you can add callbacks for are:
* @li "clicked" - the user clicked the empty space in the menu to dismiss.
*
++<<<<<<< HEAD
+ * Default contents parts of the menu items that you can use for are:
++=======
+ * Default content parts of the menu items that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A main content of the menu item
*
* Default text parts of the menu items that you can use for are:
*
* @param obj The menu object.
* @param parent The parent menu item (optional)
++<<<<<<< HEAD
+ * @param icon An icon display on the item. The icon will be destryed by the menu.
++=======
+ * @param icon An icon display on the item. The icon will be destroyed by the menu.
++>>>>>>> remotes/origin/upstream
* @param label The label of the item.
* @param func Function called when the user select the item.
* @param data Data sent by the callback.
EAPI Elm_Object_Item *elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
/**
++<<<<<<< HEAD
+ * @brief Add an object swallowed in an item at the end of the given menu
+ * widget
+ *
+ * @param obj The menu object.
+ * @param parent The parent menu item (optional)
+ * @param subobj The object to swallow
+ * @param func Function called when the user select the item.
+ * @param data Data sent by the callback.
+ * @return Returns the new item.
+ *
+ * Add an evas object as an item to the menu.
+ */
+EAPI Elm_Object_Item *elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data);
+
+/**
+ * @brief Set the icon of a menu item to the standard icon with name @p icon
+ *
+ * @param it The menu item object.
+ * @param icon The icon object to set for the content of @p item
+ *
+ * Once this icon is set, any previously set icon will be deleted.
+ */
+EAPI void elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon);
++=======
+ * @brief Set the icon of a menu item to the standard icon with name @p icon
+ *
+ * @param it The menu item object.
+ * @param icon The name of icon object to set for the content of @p item
+ *
+ * Once this icon is set, any previously set icon will be deleted.
+ */
+ EAPI void elm_menu_item_icon_name_set(Elm_Object_Item *it, const char *icon);
++>>>>>>> remotes/origin/upstream
/**
* @brief Get the string representation from the icon of a menu item
* @param it The menu item object.
* @return The string representation of @p item's icon or NULL
*
++<<<<<<< HEAD
+ * @see elm_menu_item_object_icon_name_set()
+ */
+EAPI const char *elm_menu_item_object_icon_name_get(const Elm_Object_Item *it);
++=======
+ * @see elm_menu_item_icon_name_set()
+ */
+ EAPI const char *elm_menu_item_icon_name_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* @brief Set the selected state of @p item.
EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it);
/**
++<<<<<<< HEAD
+ * @brief @brief Return a menu item's owner menu
+ *
+ * @param it The menu item
+ * @return The menu object owning @p item, or NULL on failure
+ *
+ * Use this function to get the menu object owning an item.
+ */
+EAPI Evas_Object *elm_menu_item_menu_get(const Elm_Object_Item *it);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @brief Get the selected item in the menu
*
* @param obj The menu object
/**
++<<<<<<< HEAD
+ * @defgroup UI-Mirroring Selective Widget mirroring
++=======
+ * @defgroup Mirroring Mirroring
++>>>>>>> remotes/origin/upstream
*
* These functions allow you to set ui-mirroring on specific
* widgets or the whole interface. Widgets can be in one of two
* @{
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_mirrored_get(void);
+EAPI void elm_mirrored_set(Eina_Bool mirrored);
+
+/**
+ * Get the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
++=======
+ /**
+ * Get the widget's mirrored mode.
+ *
+ * @param obj The widget.
++>>>>>>> remotes/origin/upstream
* @return EINA_TRUE if mirrored is set, EINA_FALSE otherwise
*/
EAPI Eina_Bool elm_object_mirrored_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set the system mirrored mode. This determines the default mirrored mode
+ * of widgets.
+ *
++=======
+ * Set the widget's mirrored mode.
+ *
+ * @param obj The widget.
++>>>>>>> remotes/origin/upstream
* @param mirrored EINA_TRUE to set mirrored mode, EINA_FALSE to unset it.
*/
EAPI void elm_object_mirrored_set(Evas_Object *obj, Eina_Bool mirrored);
/**
++<<<<<<< HEAD
+ * Request that your elementary application needs efreet
++=======
+ * Request that your elementary application needs Efreet
++>>>>>>> remotes/origin/upstream
*
* This initializes the Efreet library when called and if support exists
* it returns EINA_TRUE, otherwise returns EINA_FALSE. This must be called
Evas_Object *notify, *content, *parent;
Elm_Notify_Orient orient;
++<<<<<<< HEAD
+ Eina_Bool repeat_events;
++=======
+ Eina_Bool allow_events;
++>>>>>>> remotes/origin/upstream
Evas_Object *block_events;
double timeout;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
elm_notify_parent_set(obj, NULL);
++<<<<<<< HEAD
+ elm_notify_repeat_events_set(obj, EINA_TRUE);
++=======
+ elm_notify_allow_events_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
if (wd->timer)
{
ecore_timer_del(wd->timer);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
evas_object_show(wd->notify);
++<<<<<<< HEAD
+ if (!wd->repeat_events)
+ evas_object_show(wd->block_events);
++=======
+ if (!wd->allow_events) evas_object_show(wd->block_events);
++>>>>>>> remotes/origin/upstream
_timer_init(obj, wd);
elm_object_focus_set(obj, EINA_TRUE);
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
evas_object_hide(wd->notify);
++<<<<<<< HEAD
+ if (!wd->repeat_events)
+ evas_object_hide(wd->block_events);
++=======
+ if (!wd->allow_events) evas_object_hide(wd->block_events);
++>>>>>>> remotes/origin/upstream
if (wd->timer)
{
ecore_timer_del(wd->timer);
elm_widget_content_get_hook_set(obj, _content_get_hook);
elm_widget_content_unset_hook_set(obj, _content_unset_hook);
++<<<<<<< HEAD
+ wd->repeat_events = EINA_TRUE;
++=======
+ wd->allow_events = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
wd->notify = edje_object_add(e);
wd->orient = -1;
return wd->timeout;
}
++<<<<<<< HEAD
+EAPI void
+elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (repeat == wd->repeat_events) return;
+ wd->repeat_events = repeat;
+ if (!repeat)
++=======
+ EINA_DEPRECATED EAPI void
+ elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat)
+ {
+ elm_notify_allow_events_set(obj, repeat);
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_notify_repeat_events_get(const Evas_Object *obj)
+ {
+ return elm_notify_allow_events_get(obj);
+ }
+
+ EAPI void
+ elm_notify_allow_events_set(Evas_Object *obj, Eina_Bool allow)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (allow == wd->allow_events) return;
+ wd->allow_events = allow;
+ if (!allow)
++>>>>>>> remotes/origin/upstream
{
wd->block_events = edje_object_add(evas_object_evas_get(obj));
_block_events_theme_apply(obj);
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_notify_repeat_events_get(const Evas_Object *obj)
++=======
+ elm_notify_allow_events_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->repeat_events;
++=======
+ return wd->allow_events;
++>>>>>>> remotes/origin/upstream
}
* @li "timeout" - when timeout happens on notify and it's hidden
* @li "block,clicked" - when a click outside of the notify happens
*
++<<<<<<< HEAD
+ * Default contents parts of the notify widget that you can use for are:
++=======
+ * Default content parts of the notify widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the notify
*
* Supported elm_object common APIs.
* @brief Set the notify parent
*
* @param obj The notify object
++<<<<<<< HEAD
+ * @param content The new parent
++=======
+ * @param parent The new parent
++>>>>>>> remotes/origin/upstream
*
* Once the parent object is set, a previously set one will be disconnected
* and replaced.
* hidden.
*
* @param obj The notify object
++<<<<<<< HEAD
+ * @param time The timeout in seconds
++=======
+ * @param timeout The timeout in seconds
++>>>>>>> remotes/origin/upstream
*
* This function sets a timeout and starts the timer controlling when the
* notify is hidden. Since calling evas_object_show() on a notify restarts
* its area.
*
* @param obj The notify object
++<<<<<<< HEAD
+ * @param repeats EINA_TRUE Events are repeats, else no
++=======
+ * @param allow EINA_TRUE If events are allowed, otherwise not
++>>>>>>> remotes/origin/upstream
*
* When true if the user clicks outside the window the events will be caught
* by the others widgets, else the events are blocked.
*
* @note The default value is EINA_TRUE.
*/
++<<<<<<< HEAD
+EAPI void elm_notify_repeat_events_set(Evas_Object *obj, Eina_Bool repeat);
+
+/**
+ * @brief Return true if events are repeat below the notify object
+ * @param obj the notify object
+ *
+ * @see elm_notify_repeat_events_set()
+ */
+EAPI Eina_Bool elm_notify_repeat_events_get(const Evas_Object *obj);
++=======
+ EAPI void elm_notify_allow_events_set(Evas_Object *obj, Eina_Bool allow);
+
+ /**
+ * @brief Return true if events are allowed below the notify object
+ * @param obj the notify object
+ *
+ * @see elm_notify_allow_events_set()
+ */
+ EAPI Eina_Bool elm_notify_allow_events_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* @}
*
* @param obj The parent object whose children to look at
* @param name The name of the child to find
++<<<<<<< HEAD
+ * @param recurse Set to thge maximum number of levels to recurse (0 == none, 1 is only look at 1 level of children etc.)
++=======
+ * @param recurse Set to the maximum number of levels to recurse (0 == none, 1 is only look at 1 level of children etc.)
++>>>>>>> remotes/origin/upstream
* @return The found object of that name, or NULL if none is found
*
* This function searches the children (or recursively children of
*/
/**
++<<<<<<< HEAD
+ * Set the style to use by a widget
+ *
+ * Sets the style name that will define the appearance of a widget. Styles
+ * vary from widget to widget and may also be defined by other themes
+ * by means of extensions and overlays.
+ *
+ * @param obj The Elementary widget to style
+ * @param style The style name to use
++=======
+ * Set the style to used by a given widget
+ *
+ * @param obj The Elementary widget to style
+ * @param style The name of the style to use on it
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * This sets the style (by name) that will define the appearance of a
+ * widget. Styles vary from widget to widget and may also be defined
+ * by other themes by means of extensions and overlays.
++>>>>>>> remotes/origin/upstream
*
* @see elm_theme_extension_add()
* @see elm_theme_extension_del()
*
* @ingroup Styles
*/
++<<<<<<< HEAD
+EAPI void elm_object_style_set(Evas_Object *obj, const char *style);
++=======
+ EAPI Eina_Bool elm_object_style_set(Evas_Object *obj, const char *style);
++>>>>>>> remotes/origin/upstream
/**
* Get the style used by the widget
*
* This gets the style being used for that widget. Note that the string
++<<<<<<< HEAD
+ * pointer is only valid as longas the object is valid and the style doesn't
++=======
+ * pointer is only valid as long as the object is valid and the style doesn't
++>>>>>>> remotes/origin/upstream
* change.
*
* @param obj The Elementary widget to query for its style
/**
* @defgroup WidgetNavigation Widget Tree Navigation.
*
++<<<<<<< HEAD
+ * How to check if an Evas Object is an Elementary widget? How to
+ * get the first elementary widget that is parent of the given
+ * object? These are all covered in widget tree navigation.
+ *
+ * @ref general_functions_example_page "This" example contemplates
+ * some of these functions.
++=======
+ * These functions provide checks for if a Evas_Object is an Elementary widget,
+ * the possibility of getting a widget's parent, top level parent and getting a
+ * string representation of a widget's type.
++>>>>>>> remotes/origin/upstream
*/
/**
/**
* Remove a signal-triggered callback from a widget edje object.
*
++<<<<<<< HEAD
+ * This function removes a callback, previoulsy attached to a
+ * signal emitted by the edje object of the obj. The parameters
+ * emission, source and func must match exactly those passed to a
+ * previous call to elm_object_signal_callback_add(). The data
+ * pointer that was passed to this call will be returned.
+ *
+ * @param obj The object
++=======
+ * @param obj The object handle
++>>>>>>> remotes/origin/upstream
* @param emission The signal's name.
* @param source The signal's source.
* @param func The callback function to be executed when the signal is
* emitted.
++<<<<<<< HEAD
+ * @return The data pointer
++=======
+ * @return The data pointer of the signal callback or @c NULL, on
+ * errors.
+ *
+ * This function removes the @b last callback, previously attached to
+ * a signal emitted by an undelying Edje object of @a obj, whose
+ * parameters @a emission, @a source and @c func match exactly with
+ * those passed to a previous call to
+ * elm_object_signal_callback_add(). The data pointer that was passed
+ * to this call will be returned.
+ *
++>>>>>>> remotes/origin/upstream
* @ingroup General
*/
EAPI void *elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
/**
* Remove an event callback from a widget.
*
++<<<<<<< HEAD
+ * This function removes a callback, previoulsy attached to event emission
++=======
+ * This function removes a callback, previously attached to event emission
++>>>>>>> remotes/origin/upstream
* by the @p obj.
* The parameters func and data must match exactly those passed to
* a previous call to elm_object_event_callback_add(). The data pointer that
++<<<<<<< HEAD
++=======
+ typedef void (*Elm_Object_Item_Smart_Cb) (void *data, Elm_Object_Item *it, void *event_info);
+
++>>>>>>> remotes/origin/upstream
/**
* Get the widget object's handle which contains a given item
*
/**
* Set the disabled state of an widget item.
*
++<<<<<<< HEAD
+ * @param obj The Elementary object item
++=======
+ * @param it The Elementary object item
++>>>>>>> remotes/origin/upstream
* @param disabled The state to put in in: @c EINA_TRUE for
* disabled, @c EINA_FALSE for enabled
*
/**
* Get the disabled state of an widget item.
*
++<<<<<<< HEAD
+ * @param obj The Elementary object
++=======
+ * @param it The Elementary object item
++>>>>>>> remotes/origin/upstream
* @return @c EINA_TRUE, if the widget item is disabled, @c EINA_FALSE
* if it's enabled (or on errors)
*
* freed.
*
* @param it The item to set the callback on
++<<<<<<< HEAD
+ * @param func The function called
++=======
+ * @param del_cb The function called
++>>>>>>> remotes/origin/upstream
*
* That function will receive these parameters:
* @li void * item data
/**
* Set the text to be shown in a given object item's tooltips.
*
++<<<<<<< HEAD
+ * @param item Target item.
++=======
+ * @param it Target item.
++>>>>>>> remotes/origin/upstream
* @param text The text to set in the content.
*
* Setup the text as tooltip to object. The item can have only one tooltip,
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_tooltip_text_set(Elm_Object_Item *item, const char *text);
+
+/**
+ * @brief Disable size restrictions on an object's tooltip
+ * @param item The tooltip's anchor object
+ * @param disable If EINA_TRUE, size restrictions are disabled
+ * @return EINA_FALSE on failure, EINA_TRUE on success
+ *
+ * This function allows a tooltip to expand beyond its parant window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
+EAPI Eina_Bool elm_object_item_tooltip_window_mode_set(Elm_Object_Item *item, Eina_Bool disable);
+
+/**
+ * @brief Retrieve size restriction state of an object's tooltip
+ * @param obj The tooltip's anchor object
+ * @return If EINA_TRUE, size restrictions are disabled
+ *
+ * This function returns whether a tooltip is allowed to expand beyond
+ * its parant window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
+EAPI Eina_Bool elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *item);
++=======
+ EAPI void elm_object_item_tooltip_text_set(Elm_Object_Item *it, const char *text);
+
+ /**
+ * @brief Disable size restrictions on an object's tooltip
+ * @param it The tooltip's anchor object
+ * @param disable If EINA_TRUE, size restrictions are disabled
+ * @return EINA_FALSE on failure, EINA_TRUE on success
+ *
+ * This function allows a tooltip to expand beyond its parent window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
+ EAPI Eina_Bool elm_object_item_tooltip_window_mode_set(Elm_Object_Item *it, Eina_Bool disable);
+
+ /**
+ * @brief Retrieve size restriction state of an object's tooltip
+ * @param it The tooltip's anchor object
+ * @return If EINA_TRUE, size restrictions are disabled
+ *
+ * This function returns whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
+ EAPI Eina_Bool elm_object_item_tooltip_window_mode_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Set the content to be shown in the tooltip item.
* return a valid Evas_Object. This object is then managed fully by
* tooltip system and is deleted when the tooltip is gone.
*
++<<<<<<< HEAD
+ * @param item the object item being attached a tooltip.
++=======
+ * @param it the object item being attached a tooltip.
++>>>>>>> remotes/origin/upstream
* @param func the function used to create the tooltip contents.
* @param data what to provide to @a func as callback data/context.
* @param del_cb called when data is not needed anymore, either when
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_tooltip_content_cb_set(Elm_Object_Item *item, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
++=======
+ EAPI void elm_object_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
++>>>>>>> remotes/origin/upstream
/**
* Unset tooltip from item.
*
++<<<<<<< HEAD
+ * @param item object item to remove previously set tooltip.
++=======
+ * @param it object item to remove previously set tooltip.
++>>>>>>> remotes/origin/upstream
*
* Remove tooltip from item. The callback provided as del_cb to
* elm_object_item_tooltip_content_cb_set() will be called to notify
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_tooltip_unset(Elm_Object_Item *item);
++=======
+ EAPI void elm_object_item_tooltip_unset(Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Sets a different style for this item tooltip.
* elm_object_item_tooltip_content_cb_set() or
* elm_object_item_tooltip_text_set()
*
++<<<<<<< HEAD
+ * @param item object item with tooltip already set.
++=======
+ * @param it object item with tooltip already set.
++>>>>>>> remotes/origin/upstream
* @param style the theme style to use (default, transparent, ...)
*
* @see elm_object_tooltip_style_set() for more details.
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_tooltip_style_set(Elm_Object_Item *item, const char *style);
++=======
+ EAPI void elm_object_item_tooltip_style_set(Elm_Object_Item *it, const char *style);
++>>>>>>> remotes/origin/upstream
/**
* Get the style for this item tooltip.
*
++<<<<<<< HEAD
+ * @param item object item with tooltip already set.
++=======
+ * @param it object item with tooltip already set.
++>>>>>>> remotes/origin/upstream
* @return style the theme style in use, defaults to "default". If the
* object does not have a tooltip set, then NULL is returned.
*
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI const char *elm_object_item_tooltip_style_get(const Elm_Object_Item *item);
+
+
++=======
+ EAPI const char *elm_object_item_tooltip_style_get(const Elm_Object_Item *it);
+
++>>>>>>> remotes/origin/upstream
/**
* Set the type of mouse pointer/cursor decoration to be shown,
* when the mouse pointer is over the given item
*
++<<<<<<< HEAD
+ * @param ite, item to customize cursor on
++=======
+ * @param it item to customize cursor on
++>>>>>>> remotes/origin/upstream
* @param cursor the cursor type's name
*
* This function works analogously as elm_object_cursor_set(), but
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_cursor_set(Elm_Object_Item *item, const char *cursor);
++=======
+ EAPI void elm_object_item_cursor_set(Elm_Object_Item *it, const char *cursor);
++>>>>>>> remotes/origin/upstream
/*
* Get the type of mouse pointer/cursor decoration set to be shown,
* when the mouse pointer is over the given item
*
++<<<<<<< HEAD
+ * @param item item with custom cursor set
++=======
+ * @param it item with custom cursor set
++>>>>>>> remotes/origin/upstream
* @return the cursor type's name or @c NULL, if no custom cursors
* were set to @p item (and on errors)
*
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI const char *elm_object_item_cursor_get(const Elm_Object_Item *item);
++=======
+ EAPI const char *elm_object_item_cursor_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Unset any custom mouse pointer/cursor decoration set to be
* shown, when the mouse pointer is over the given
* item, thus making it show the @b default cursor again.
*
++<<<<<<< HEAD
+ * @param item the item
++=======
+ * @param it the item
++>>>>>>> remotes/origin/upstream
*
* Use this call to undo any custom settings on this item's cursor
* decoration, bringing it back to defaults (no custom style set).
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_cursor_unset(Elm_Object_Item *item);
++=======
+ EAPI void elm_object_item_cursor_unset(Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Set a different @b style for a given custom cursor set for an
* item.
*
++<<<<<<< HEAD
+ * @param item item with custom cursor set
++=======
+ * @param it item with custom cursor set
++>>>>>>> remotes/origin/upstream
* @param style the <b>theme style</b> to use (e.g. @c "default",
* @c "transparent", etc)
*
* cursor decorations <b>defined in a theme file</b>, which can have,
* given a cursor name/type, <b>alternate styles</b> on it. It
* works analogously as elm_object_cursor_style_set(), but here
++<<<<<<< HEAD
+ * applyed only to item objects.
+ *
+ * @warning Before you set a cursor style you should have definen a
++=======
+ * applies only to item objects.
+ *
+ * @warning Before you set a cursor style you should have defined a
++>>>>>>> remotes/origin/upstream
* custom cursor previously on the item, with
* elm_object_item_cursor_set()
*
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_cursor_style_set(Elm_Object_Item *item, const char *style);
++=======
+ EAPI void elm_object_item_cursor_style_set(Elm_Object_Item *it, const char *style);
++>>>>>>> remotes/origin/upstream
/**
* Get the current @b style set for a given item's custom
* cursor
*
++<<<<<<< HEAD
+ * @param item item with custom cursor set.
++=======
+ * @param it item with custom cursor set.
++>>>>>>> remotes/origin/upstream
* @return style the cursor style in use. If the object does not
* have a cursor set, then @c NULL is returned.
*
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI const char *elm_object_item_cursor_style_get(const Elm_Object_Item *item);
++=======
+ EAPI const char *elm_object_item_cursor_style_get(const Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Set if the (custom)cursor for a given item should be
* searched in its theme, also, or should only rely on the
* rendering engine.
*
++<<<<<<< HEAD
+ * @param item item with custom (custom) cursor already set on
++=======
+ * @param it item with custom (custom) cursor already set on
++>>>>>>> remotes/origin/upstream
* @param engine_only Use @c EINA_TRUE to have cursors looked for
* only on those provided by the rendering engine, @c EINA_FALSE to
* have them searched on the widget's theme, as well.
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI void elm_object_item_cursor_engine_only_set(Elm_Object_Item *item, Eina_Bool engine_only);
++=======
+ EAPI void elm_object_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only);
++>>>>>>> remotes/origin/upstream
/**
* Get if the (custom) cursor for a given item is being
* searched in its theme, also, or is only relying on the rendering
* engine.
*
++<<<<<<< HEAD
+ * @param item an item
++=======
+ * @param it an object item
++>>>>>>> remotes/origin/upstream
* @return @c EINA_TRUE, if cursors are being looked for only on
* those provided by the rendering engine, @c EINA_FALSE if they
* are being searched on the widget's theme, as well.
*
* @ingroup General
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const Elm_Object_Item *item);
+
++=======
+ EAPI Eina_Bool elm_object_item_cursor_engine_only_get(const Elm_Object_Item *it);
+
+ /**
+ * Add (register) a callback function to the smart event specified by @p event
+ * on the elm_object_item @p it.
+ *
+ * @param it an object item
+ * @param event the event's name string
+ * @param func the callback function
+ * @param data user data to be passed to the callback function
+ *
+ * Smart callbacks look very similar to Evas Smart callbacks, but are
+ * implemented as elementary object item's custom ones.
+ *
+ * This function adds a function callback to an elementary object item when the
+ * event named @p event occurs in it. The function is @p func.
+ *
+ * A smart callback function must have the Elm_Object_Item_Smart_Cb prototype
+ * definition. The first parameter (@p data) in this definition will be a user
+ * specific data. The second parameter @p it is a handle to the object item on
+ * which event occurred. The third parameter, @p event_info, is a pointer to
+ * data which is totally dependent on the elementary object item's
+ * implementation and semantic for the given event.
+ *
+ * @see elm_object_item_smart_callback_del()
+ *
+ * @ingroup General
+ */
+ //Don't use this APIs
+ //EAPI void elm_object_item_smart_callback_add(Elm_Object_Item *it, const char *event, Elm_Object_Item_Smart_Cb func, const void *data);
+
+ /**
+ * Delete (unregister) a callback function from the smart event specified by @p
+ * event on the elementary object item @p it.
+ *
+ * @param it an object item
+ * @param event the event's name string
+ * @param func the callback function
+ * @return data user data.
+ *
+ * This function removes <b>the first</b> added smart callback on the item @p it
+ * matching the event name @p event and the registered function pointer @p func.
+ * If the removal is successful it will also return the data pointer that was
+ * passed to elm_object_item_smart_callback_add() (that will be the same as the
+ * parameter) when the callback(s) was(were) added to the item. If not
+ * successful @c NULL will be returned.
+ *
+ * @see elm_object_item_smart_callback_add()
+ *
+ * @ingroup General
+ */
+ //Don't use this APIs
+ //EAPI void *elm_object_item_smart_callback_del(Elm_Object_Item *it, const char *event, Elm_Object_Item_Smart_Cb func);
++>>>>>>> remotes/origin/upstream
#include <Elementary.h>
#include "elm_priv.h"
++<<<<<<< HEAD
+typedef struct _Widget_Data Widget_Data;
+typedef struct _Item Item;
+
+struct _Widget_Data
+{
+ Eina_List *stack;
+ Item *top, *oldtop;
+ Evas_Object *rect, *clip;
+};
+
+struct _Item
+{
+ Evas_Object *obj, *base, *content;
+ Evas_Coord minw, minh;
+ Eina_Bool popme : 1;
+};
+
+static const char *widtype = NULL;
+static void _del_hook(Evas_Object *obj);
+static void _mirrored_set(Evas_Object *obj, Eina_Bool rtl);
+static void _theme_hook(Evas_Object *obj);
+static void _sizing_eval(Evas_Object *obj);
+static void _changed_size_hints(void *data,
+ Evas *e,
+ Evas_Object *obj,
+ void *event_info);
+static void _content_del(void *data,
+ Evas *e,
+ Evas_Object *obj,
+ void *event_info);
+static Eina_List *_item_get(Evas_Object *obj, Evas_Object *content);
+
+static const char SIG_HIDE_FINISHED[] = "hide,finished";
+static const char SIG_SHOW_FINISHED[] = "show,finished";
+
+static const Evas_Smart_Cb_Description _signals[] = {
+ {SIG_HIDE_FINISHED, ""},
+ {SIG_SHOW_FINISHED, ""},
+ {NULL, NULL}
+};
+
+static void
+_del_hook(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ free(wd);
+}
+
+static void
+_mirrored_set(Evas_Object *obj, Eina_Bool rtl)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ EINA_LIST_FOREACH(wd->stack, l, it)
+ edje_object_mirrored_set(it->base, rtl);
+}
+
+static void
+_theme_hook(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ _elm_widget_mirrored_reload(obj);
+ _mirrored_set(obj, elm_widget_mirrored_get(obj));
+ EINA_LIST_FOREACH(wd->stack, l, it)
+ {
+ _elm_theme_object_set(obj, it->base, "pager", "base",
+ elm_widget_style_get(obj));
+ edje_object_scale_set(it->base, elm_widget_scale_get(obj) *
+ _elm_config->scale);
+ }
+ _sizing_eval(obj);
+}
+
+static Eina_List *
+_item_get(Evas_Object *obj, Evas_Object *content)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Item *it;
+ Eina_List *l;
+ if (!wd) return NULL;
+
+ EINA_LIST_FOREACH(wd->stack, l, it)
+ {
+ if (it->content == content)
+ return l;
+ }
+
+ return NULL;
+}
+
+static Eina_Bool
+_elm_pager_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Evas_Object *cur;
+
+ if ((!wd) || (!wd->top))
+ return EINA_FALSE;
+
+ cur = wd->top->content;
+
+ /* Try Focus cycle in subitem */
+ return elm_widget_focus_next_get(cur, dir, next);
+}
+
+static void
+_sizing_eval(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Evas_Coord minw = -1, minh = -1;
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ EINA_LIST_FOREACH(wd->stack, l, it)
+ {
+ if (it->minw > minw) minw = it->minw;
+ if (it->minh > minh) minh = it->minh;
+ }
+ evas_object_size_hint_min_set(obj, minw, minh);
+ evas_object_size_hint_max_set(obj, -1, -1);
+}
+
+static void
+_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Item *it = data;
+ Evas_Coord minw = -1, minh = -1;
+ evas_object_size_hint_min_get(it->content, &minw, &minh);
+ // FIXME: why is this needed? how does edje get this unswallowed or
+ // lose its callbacks to edje
+ edje_object_part_swallow(it->base, "elm.swallow.content", it->content);
+ edje_object_size_min_calc(it->base, &it->minw, &it->minh);
+ _sizing_eval(it->obj);
+}
+
+static void
+_eval_top(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Item *ittop;
+ if (!wd) return;
+ if (!wd->stack) return;
+ ittop = eina_list_last(wd->stack)->data;
+ if (ittop != wd->top)
+ {
+ Evas_Object *o;
+ const char *onshow, *onhide;
+
+ if (wd->top)
+ {
+ o = wd->top->base;
+ if (wd->top->popme)
+ {
+ edje_object_signal_emit(o, "elm,action,pop", "elm");
+ wd->stack = eina_list_remove(wd->stack, wd->top);
+ }
+ else
+ edje_object_signal_emit(o, "elm,action,hide", "elm");
+ onhide = edje_object_data_get(o, "onhide");
+ if (onhide)
+ {
+ if (!strcmp(onhide, "raise")) evas_object_raise(o);
+ else if (!strcmp(onhide, "lower")) evas_object_lower(o);
+ }
+ }
+ wd->oldtop = wd->top;
+ wd->top = ittop;
+ o = wd->top->base;
+ evas_object_show(o);
+ if (wd->oldtop)
+ {
+ if (elm_object_focus_get(wd->oldtop->content))
+ elm_widget_focused_object_clear(wd->oldtop->content);
+ if (wd->oldtop->popme)
+ edje_object_signal_emit(o, "elm,action,show", "elm");
+ else
+ edje_object_signal_emit(o, "elm,action,push", "elm");
+ }
+ else
+ edje_object_signal_emit(o, "elm,action,push", "elm");
+ onshow = edje_object_data_get(o, "onshow");
+ if (onshow)
+ {
+ if (!strcmp(onshow, "raise")) evas_object_raise(o);
+ else if (!strcmp(onshow, "lower")) evas_object_lower(o);
+ }
+ }
+}
+
+static void
+_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Coord x, y;
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ evas_object_geometry_get(obj, &x, &y, NULL, NULL);
+ EINA_LIST_FOREACH(wd->stack, l, it)
+ evas_object_move(it->base, x, y);
+}
+
+static void
+_content_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ l = _item_get(data, obj);
+ if (!l) return;
+ it = l->data;
+ wd->stack = eina_list_remove_list(wd->stack, l);
+ evas_object_event_callback_del_full
+ (obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it);
+ evas_object_del(it->base);
+ _eval_top(data);
+ free(it);
+}
+
+static void
+_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Widget_Data *wd = elm_widget_data_get(data);
+ Evas_Coord w, h;
+ Eina_List *l;
+ Item *it;
+ if (!wd) return;
+ evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+ EINA_LIST_FOREACH(wd->stack, l, it) evas_object_resize(it->base, w, h);
+}
+
+static void
+_show_finished_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Item *it = data;
+ Evas_Object *obj = it->obj;
+ Evas_Object *content = it->content;
+
+ evas_object_smart_callback_call(obj, SIG_SHOW_FINISHED, content);
+}
+
+static void
+_hide_finished_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ Item *it = data;
+ Evas_Object *obj2 = it->obj;
+ Evas_Object *content = it->content;
+
+ if (it->popme)
+ {
+ evas_object_del(it->base);
+ evas_object_event_callback_del_full(content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ it);
+ evas_object_event_callback_del(content,
+ EVAS_CALLBACK_DEL,
+ _content_del);
+ evas_object_del(content);
+ free(it);
+ }
+ else
+ {
+ evas_object_hide(it->base);
+ edje_object_signal_emit(it->base, "elm,action,reset", "elm");
+ edje_object_message_signal_process(it->base);
+ evas_object_hide(content);
+ }
+ evas_object_smart_callback_call(obj2, SIG_HIDE_FINISHED, content);
+ _sizing_eval(obj2);
+}
+
+EAPI Evas_Object *
+elm_pager_add(Evas_Object *parent)
+{
+ Evas_Object *obj;
+ Evas *e;
+ Widget_Data *wd;
+
+ ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
+
+ ELM_SET_WIDTYPE(widtype, "pager");
+ elm_widget_type_set(obj, "pager");
+ elm_widget_sub_object_add(parent, obj);
+ elm_widget_data_set(obj, wd);
+ elm_widget_del_hook_set(obj, _del_hook);
+ elm_widget_theme_hook_set(obj, _theme_hook);
+ elm_widget_focus_next_hook_set(obj, _elm_pager_focus_next_hook);
+ elm_widget_can_focus_set(obj, EINA_FALSE);
+
+ wd->clip = evas_object_rectangle_add(e);
+ elm_widget_resize_object_set(obj, wd->clip);
+ elm_widget_sub_object_add(obj, wd->clip);
+
+ wd->rect = evas_object_rectangle_add(e);
+ elm_widget_sub_object_add(obj, wd->rect);
+ evas_object_color_set(wd->rect, 255, 255, 255, 0);
+ evas_object_clip_set(wd->rect, wd->clip);
+
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
+
+ evas_object_smart_callbacks_descriptions_set(obj, _signals);
+
+ _mirrored_set(obj, elm_widget_mirrored_get(obj));
+ _sizing_eval(obj);
+ return obj;
+}
+
+EAPI void
+elm_pager_content_push(Evas_Object *obj, Evas_Object *content)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Evas_Coord x, y, w, h;
+ Item *it;
+
+ if ((!wd) || (!content)) return;
+ if (_item_get(obj, content)) return;
+
+ it = ELM_NEW(Item);
+ if (!it) return;
+ it->obj = obj;
+ it->content = content;
+ it->base = edje_object_add(evas_object_evas_get(obj));
+ evas_object_smart_member_add(it->base, obj);
+ evas_object_geometry_get(obj, &x, &y, &w, &h);
+ evas_object_move(it->base, x, y);
+ evas_object_resize(it->base, w, h);
+ evas_object_clip_set(it->base, wd->clip);
+ elm_widget_sub_object_add(obj, it->base);
+ elm_widget_sub_object_add(obj, it->content);
+ _elm_theme_object_set(obj,
+ it->base,
+ "pager",
+ "base",
+ elm_widget_style_get(obj));
+ edje_object_signal_callback_add
+ (it->base, "elm,action,show,finished", "", _show_finished_cb, it);
+ edje_object_signal_callback_add(it->base,
+ "elm,action,hide,finished",
+ "",
+ _hide_finished_cb,
+ it);
+ evas_object_event_callback_add(it->content,
+ EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints,
+ it);
+ evas_object_event_callback_add(it->content,
+ EVAS_CALLBACK_DEL,
+ _content_del,
+ obj);
+ edje_object_part_swallow(it->base, "elm.swallow.content", it->content);
+ edje_object_size_min_calc(it->base, &it->minw, &it->minh);
+ evas_object_data_set(it->base, "_elm_leaveme", obj);
+ evas_object_show(it->content);
+ wd->stack = eina_list_append(wd->stack, it);
+ _eval_top(obj);
+ _sizing_eval(obj);
+}
+
+EAPI void
+elm_pager_content_pop(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_List *ll;
+ Item *it;
+ if (!wd) return;
+ if (!wd->stack) return;
+ it = eina_list_last(wd->stack)->data;
+ it->popme = EINA_TRUE;
+ ll = eina_list_last(wd->stack);
+ if (ll)
+ {
+ ll = ll->prev;
+ if (!ll)
+ {
+ Evas_Object *o;
+ const char *onhide;
+
+ wd->top = it;
+ o = wd->top->base;
+ edje_object_signal_emit(o, "elm,action,pop", "elm");
+ wd->stack = eina_list_remove(wd->stack, it);
+ onhide = edje_object_data_get(o, "onhide");
+ if (onhide)
+ {
+ if (!strcmp(onhide, "raise")) evas_object_raise(o);
+ else if (!strcmp(onhide, "lower")) evas_object_lower(o);
+ }
+ wd->top = NULL;
+ }
+ else
+ {
+ it = ll->data;
+ elm_pager_content_promote(obj, it->content);
+ }
+ }
+}
+
+EAPI void
+elm_pager_content_promote(Evas_Object *obj, Evas_Object *content)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Eina_List *l;
+ if (!wd) return;
+ l = _item_get(obj, content);
+ if (!l) return;
+
+ wd->stack = eina_list_demote_list(wd->stack, l);
+ _eval_top(obj);
+}
+
+EAPI Evas_Object *
+elm_pager_content_bottom_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ Item *it;
+ if (!wd) return NULL;
+ if (!wd->stack) return NULL;
+ it = wd->stack->data;
+ return it->content;
+}
+
+EAPI Evas_Object *
+elm_pager_content_top_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+ if (!wd->top) return NULL;
+ return wd->top->content;
++=======
+ /* FIXME:
+ * 1. Possibly remove those callbacks and just use the naviframe ones.
+ * 2. I can create a different object, but it can wait until inheritance
+ * is implemented, too annoying atm. */
+ static void
+ _push_finished(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+ {
+ evas_object_smart_callback_call(obj, "show,finished", event_info);
+ }
+
+ static void
+ _pop_finished(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+ {
+ evas_object_smart_callback_call(obj, "hide,finished", event_info);
+ }
+
+ EINA_DEPRECATED EAPI Evas_Object *
+ elm_pager_add(Evas_Object *parent)
+ {
+ Evas_Object *nf = elm_naviframe_add(parent);
+ evas_object_smart_callback_add(nf, "push,finished", _push_finished, NULL);
+ evas_object_smart_callback_add(nf, "pop,finished", _pop_finished, NULL);
+ return nf;
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_pager_content_push(Evas_Object *obj, Evas_Object *content)
+ {
+ Elm_Object_Item *it;
+ it = elm_naviframe_item_push(obj, NULL, NULL, NULL, content, NULL);
+ elm_naviframe_item_title_visible_set(it, EINA_FALSE);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_pager_content_pop(Evas_Object *obj)
+ {
+ elm_naviframe_item_pop(obj);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_pager_content_promote(Evas_Object *obj, Evas_Object *content)
+ {
+ Eina_List *items = elm_naviframe_items_get(obj);
+ Eina_List *itr;
+ Elm_Object_Item *it;
+ EINA_LIST_FOREACH(items, itr, it)
+ {
+ if (elm_object_item_content_get(it) == content)
+ {
+ elm_naviframe_item_promote(it);
+ break;
+ }
+ }
+ eina_list_free(items);
+ }
+
+ EINA_DEPRECATED EAPI Evas_Object *
+ elm_pager_content_bottom_get(const Evas_Object *obj)
+ {
+ Elm_Object_Item *it;
+ it = elm_naviframe_bottom_item_get(obj);
+ return elm_object_item_content_get(it);
+ }
+
+ EINA_DEPRECATED EAPI Evas_Object *
+ elm_pager_content_top_get(const Evas_Object *obj)
+ {
+ Elm_Object_Item *it;
+ it = elm_naviframe_top_item_get(obj);
+ return elm_object_item_content_get(it);
+ }
+
+ EINA_DEPRECATED EAPI void
+ elm_pager_item_style_default_set(Evas_Object *obj, const char *style)
+ {
+ elm_object_style_set(obj, style);
+ }
+
+ EINA_DEPRECATED EAPI const char *
+ elm_pager_item_style_default_get(const Evas_Object *obj)
+ {
+ return elm_object_style_get(obj);
++>>>>>>> remotes/origin/upstream
}
* @li ELM_PANEL_ORIENT_LEFT
* @li ELM_PANEL_ORIENT_RIGHT
*
++<<<<<<< HEAD
+ * Default contents parts of the panel widget that you can use for are:
++=======
+ * Default content parts of the panel widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the panel
*
* Supported elm_object common APIs.
/**
* @brief Sets the orientation of the panel
*
++<<<<<<< HEAD
+ * @param parent The parent object
++=======
+ * @param obj The panel object
++>>>>>>> remotes/origin/upstream
* @param orient The panel orientation. Can be one of the following:
* @li ELM_PANEL_ORIENT_TOP
* @li ELM_PANEL_ORIENT_LEFT
* @brief Set the state of the panel.
*
* @param obj The panel object
++<<<<<<< HEAD
+ * @param hidden If true, the panel will run the animation to contract
++=======
+ * @param hidden If true, the panel will run the animation to disappear.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_panel_hidden_set(Evas_Object *obj, Eina_Bool hidden);
* @brief Get the state of the panel.
*
* @param obj The panel object
++<<<<<<< HEAD
+ * @param hidden If true, the panel is in the "hide" state
++=======
+ * @return EINA_TRUE if it is hidden state
++>>>>>>> remotes/origin/upstream
*/
EAPI Eina_Bool elm_panel_hidden_get(const Evas_Object *obj);
EAPI void elm_panel_toggle(Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * @brief Set the content of the panel.
+ *
+ * @param obj The panel object
+ * @param content The content object
+ */
+ EAPI void elm_panel_content_set(Evas_Object *obj, Evas_Object *content);
+
+ /**
+ * @brief Get the content of the panel.
+ *
+ * @param obj The panel object
+ * @return The content object of the panel or NULL if none is set.
+ *
+ * @see elm_panel_content_set()
+ */
+ EAPI Evas_Object * elm_panel_content_get(const Evas_Object *obj);
+
+ /**
+ * @brief Remove and return the content from the panel.
+ *
+ * @param obj The panel object
+ * @return The content object of the panel or NULL if none is set.
+ */
+ EAPI Evas_Object * elm_panel_content_unset(Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
edje_object_part_swallow(wd->panes, "elm.swallow.left", wd->contents.left);
if (wd->contents.right)
edje_object_part_swallow(wd->panes, "elm.swallow.right", wd->contents.right);
++<<<<<<< HEAD
+ if(wd->contents.left && wd->contents.right)
+ edje_object_signal_emit(wd->panes, "elm.panes.pair", "elm");
+ if(wd->fixed)
++=======
+ if (wd->fixed)
++>>>>>>> remotes/origin/upstream
edje_object_signal_emit(wd->panes, "elm.panes.fixed", "elm");
edje_object_scale_set(wd->panes, elm_widget_scale_get(obj) *
}
}
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
static void
_clicked(void *data, Evas_Object *obj __UNUSED__ , const char *emission __UNUSED__, const char *source __UNUSED__)
{
{
evas_object_del(wd->contents.left);
wd->contents.left = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->panes, "elm.panes.unpair", "elm");
++=======
++>>>>>>> remotes/origin/upstream
}
if (content)
{
wd->contents.left = content;
elm_widget_sub_object_add(obj, content);
edje_object_part_swallow(wd->panes, "elm.swallow.left", content);
++<<<<<<< HEAD
+ if (wd->contents.right)
+ edje_object_signal_emit(wd->panes, "elm.panes.pair", "elm");
++=======
++>>>>>>> remotes/origin/upstream
}
}
{
evas_object_del(wd->contents.right);
wd->contents.right = NULL;
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->panes, "elm.panes.unpair", "elm");
++=======
++>>>>>>> remotes/origin/upstream
}
if (content)
{
wd->contents.right = content;
elm_widget_sub_object_add(obj, content);
edje_object_part_swallow(wd->panes, "elm.swallow.right", content);
++<<<<<<< HEAD
+ if (wd->contents.left)
+ edje_object_signal_emit(wd->panes, "elm.panes.pair", "elm");
++=======
++>>>>>>> remotes/origin/upstream
}
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd->contents.left) return NULL;
Evas_Object *content = wd->contents.left;
++<<<<<<< HEAD
+
+ edje_object_part_unswallow(wd->panes, content);
+ evas_object_hide(wd->contents.left);
+ elm_widget_sub_object_del(obj, content);
+ wd->contents.left = NULL;
+ edje_object_signal_emit(wd->panes, "elm.panes.unpair", "elm");
++=======
+ elm_widget_sub_object_del(obj, content);
+ edje_object_part_unswallow(wd->panes, content);
+ wd->contents.left = NULL;
++>>>>>>> remotes/origin/upstream
return content;
}
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd->contents.right) return NULL;
Evas_Object *content = wd->contents.right;
++<<<<<<< HEAD
+
+ edje_object_part_unswallow(wd->panes, content);
+ evas_object_hide(wd->contents.right);
+ elm_widget_sub_object_del(obj, content);
+ wd->contents.right = NULL;
+ edje_object_signal_emit(wd->panes, "elm.panes.unpair", "elm");
++=======
+ elm_widget_sub_object_del(obj, content);
+ edje_object_part_unswallow(wd->panes, content);
+ wd->contents.right = NULL;
++>>>>>>> remotes/origin/upstream
return content;
}
return obj;
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_panes_content_left_set(Evas_Object *obj, Evas_Object *content)
{
_content_set_hook(obj, "left", content);
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_panes_content_right_set(Evas_Object *obj, Evas_Object *content)
{
_content_set_hook(obj, "right", content);
}
++<<<<<<< HEAD
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_panes_content_left_get(const Evas_Object *obj)
{
return _content_get_hook(obj, "left");
}
++<<<<<<< HEAD
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_panes_content_right_get(const Evas_Object *obj)
{
return _content_get_hook(obj, "right");
}
++<<<<<<< HEAD
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_panes_content_left_unset(Evas_Object *obj)
{
return _content_unset_hook(obj, "left");
}
++<<<<<<< HEAD
+EAPI Evas_Object *
++=======
+ EINA_DEPRECATED EAPI Evas_Object *
++>>>>>>> remotes/origin/upstream
elm_panes_content_right_unset(Evas_Object *obj)
{
return _content_unset_hook(obj, "right");
edje_object_part_drag_value_set(wd->panes, "elm.bar", size, 0.0);
}
++<<<<<<< HEAD
++=======
+ EAPI double
+ elm_panes_content_right_size_get(const Evas_Object *obj)
+ {
+ return (1.0 - elm_panes_content_left_size_get(obj));
+ }
+
+ EAPI void
+ elm_panes_content_right_size_set(Evas_Object *obj, double size)
+ {
+ elm_panes_content_left_size_set(obj, (1.0 - size));
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_panes_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)
{
* @image html img/panes.png
* @image latex img/panes.eps width=\textwidth
*
++<<<<<<< HEAD
+ * The panes adds a dragable bar between two contents. When dragged
+ * this bar will resize contents size.
++=======
+ * The panes widget adds a draggable bar between two contents. When dragged
+ * this bar will resize contents' size.
++>>>>>>> remotes/origin/upstream
*
* Panes can be displayed vertically or horizontally, and contents
* size proportion can be customized (homogeneous by default).
* Available styles for it:
* - @c "default"
*
++<<<<<<< HEAD
+ * Default contents parts of the panes widget that you can use for are:
+ * @li "left" - A leftside content of the panes
+ * @li "right" - A rightside content of the panes
+ *
+ * If panes is displayed vertically, left content will be displayed at
+ * top.
+ *
++=======
+ * Default content parts of the panes widget that you can use are:
+ * @li "left" - A leftside content of the panes
+ * @li "right" - A rightside content of the panes
+ *
+ * If panes are displayed vertically, left content will be displayed on
+ * top.
+ *
+ * Supported elm_object common APIs.
+ * @li elm_object_part_content_set
+ * @li elm_object_part_content_get
+ * @li elm_object_part_content_unset
+ *
++>>>>>>> remotes/origin/upstream
* Here is an example on its usage:
* @li @ref panes_example
*/
EAPI Evas_Object *elm_panes_add(Evas_Object *parent);
/**
++<<<<<<< HEAD
++=======
+ * Set whether the left and right panes resize homogeneously or not.
+ *
+ * @param obj The panes object.
+ * @param fixed Use @c EINA_TRUE to make @p obj to be
+ * resize the left and right panes @b homogeneously.
+ * Use @c EINA_FALSE to make use of the values specified in
+ * elm_panes_content_left_size_set() and
+ * elm_panes_content_right_size_set()
+ * to resize the left and right panes.
+ *
+ * By default panes are resized homogeneously.
+ *
+ * @see elm_panes_fixed_get()
+ * @see elm_panes_content_left_size_set()
+ * @see elm_panes_content_right_size_set()
+ *
+ * @ingroup Panes
+ */
+ EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+
+ /**
+ * Retrieve the resize mode for the panes of a given panes widget.
+ *
+ * @param obj The panes object.
+ * @return @c EINA_TRUE, if @p obj is set to be resized @b homogeneously,
+ *
+ * @see elm_panes_fixed_set() for more details.
+ * @see elm_panes_content_left_size_get()
+ * @see elm_panes_content_right_size_get()
+ *
+ * @ingroup Panes
+ */
+ EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Get the size proportion of panes widget's left side.
*
* @param obj The panes object.
EAPI void elm_panes_content_left_size_set(Evas_Object *obj, double size);
/**
++<<<<<<< HEAD
++=======
+ * Get the size proportion of panes widget's right side.
+ *
+ * @param obj The panes object.
+ * @return float value between 0.0 and 1.0 representing size proportion
+ * of right side.
+ *
+ * @see elm_panes_content_right_size_set() for more details.
+ *
+ * @ingroup Panes
+ */
+ EAPI double elm_panes_content_right_size_get(const Evas_Object *obj);
+
+ /**
+ * Set the size proportion of panes widget's right side.
+ *
+ * @param obj The panes object.
+ * @param size Value between 0.0 and 1.0 representing size proportion
+ * of right side.
+ *
+ * By default it's homogeneous, i.e., both sides have the same size.
+ *
+ * If something different is required, it can be set with this function.
+ * For example, if the right content should be displayed over
+ * 75% of the panes size, @p size should be passed as @c 0.75.
+ * This way, left content will be resized to 25% of panes size.
+ *
+ * If displayed vertically, left content is displayed at top, and
+ * right content at bottom.
+ *
+ * @note This proportion will change when user drags the panes bar.
+ *
+ * @see elm_panes_content_right_size_get()
+ *
+ * @ingroup Panes
+ */
+ EAPI void elm_panes_content_right_size_set(Evas_Object *obj, double size);
+
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the orientation of a given panes widget.
*
* @param obj The panes object.
* @ingroup Panes
*/
EAPI Eina_Bool elm_panes_horizontal_get(const Evas_Object *obj);
++<<<<<<< HEAD
+EAPI void elm_panes_fixed_set(Evas_Object *obj, Eina_Bool fixed);
+EAPI Eina_Bool elm_panes_fixed_get(const Evas_Object *obj);
++=======
++>>>>>>> remotes/origin/upstream
/**
* @}
eina_stringshare_replace(&wd->thumb.file.path, file);
eina_stringshare_replace(&wd->thumb.file.key, group);
++<<<<<<< HEAD
+ if (elm_thumb_ethumb_client_connected())
++=======
+ if (elm_thumb_ethumb_client_connected_get())
++>>>>>>> remotes/origin/upstream
{
_icon_thumb_apply(wd);
return ;
/**
* @defgroup Photo Photo
*
++<<<<<<< HEAD
+ * For displaying the photo of a person (contact). Simple, yet
++=======
+ * For displaying a photo, for ex., a person (contact). Simple, yet
++>>>>>>> remotes/origin/upstream
* with a very specific purpose.
*
* Signals that you can add callbacks for are:
*
* "clicked" - This is called when a user has clicked the photo
++<<<<<<< HEAD
+ * "drag,start" - Someone started dragging the image out of the object
+ * "drag,end" - Dragged item was dropped (somewhere)
++=======
+ * "drag,start" - dragging the image out of the photo object
+ * "drag,end" - Drop the dragged item
++>>>>>>> remotes/origin/upstream
*
* @{
*/
* Set the file that will be used as thumbnail in the photo.
*
* @param obj The photo object.
++<<<<<<< HEAD
+ * @param file The path to file that will be used as thumb.
++=======
+ * @param file The path to file that will be used as thumbnail.
++>>>>>>> remotes/origin/upstream
* @param group The key used in case of an EET file.
*
* @ingroup Photo
* Set the size that will be used on the photo
*
* @param obj The photo object
++<<<<<<< HEAD
+ * @param size The size that the photo will be
++=======
+ * @param size The size of the photo
++>>>>>>> remotes/origin/upstream
*
* @ingroup Photo
*/
* the image will delete the existing content.
*
* @param obj The photo object.
++<<<<<<< HEAD
+ * @param set To set of clear editablity.
++=======
+ * @param set To set of clear editability.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_photo_editable_set(Evas_Object *obj, Eina_Bool set);
EAPI void elm_photo_aspect_fixed_set(Evas_Object *obj, Eina_Bool fixed);
/**
++<<<<<<< HEAD
+ * Get if the object fixes the original aspect ratio.
++=======
+ * Get if the object keeps the original aspect ratio.
++>>>>>>> remotes/origin/upstream
*
* @param obj The photo object.
* @return @c EINA_TRUE if the object keeps the original aspect, @c EINA_FALSE
Evas_Object *obj;
Evas_Object *scr;
Evas_Object *pan_smart;
++<<<<<<< HEAD
++=======
+ Evas_Object *gest;
+ double gest_start;
+
++>>>>>>> remotes/origin/upstream
Pan *pan;
Evas_Coord pan_x, pan_y, minw, minh;
double zoom;
Elm_Photocam_Zoom_Mode mode;
++<<<<<<< HEAD
++=======
+ Evas_Coord pvx, pvy, px, py, zoom_point_x, zoom_point_y;
+ struct
+ {
+ int imx, imy;
+ struct
+ {
+ int x_start, y_start;
+ int x_end, y_end;
+ double t_start;
+ double t_end;
+ Ecore_Animator *animator;
+ } bounce;
+ } gzoom;
++>>>>>>> remotes/origin/upstream
const char *file;
Ecore_Job *calc_job;
Eina_Bool on_hold : 1;
Eina_Bool paused : 1;
Eina_Bool do_region : 1;
++<<<<<<< HEAD
++=======
+ Eina_Bool do_gesture : 1;
+ Eina_Bool zoom_gest : 1;
++>>>>>>> remotes/origin/upstream
};
struct _Pan
ay = 0;
gw = wd->size.w;
gh = wd->size.h;
++<<<<<<< HEAD
+ if (ow > gw) ax = (ow - gw) / 2;
+ if (oh > gh) ay = (oh - gh) / 2;
++=======
+ if (!wd->zoom_gest)
+ {
+ if (ow > gw) ax = (ow - gw) / 2;
+ if (oh > gh) ay = (oh - gh) / 2;
+ }
++>>>>>>> remotes/origin/upstream
evas_object_move(wd->img, ox + 0 - px + ax, oy + 0 - py + ay);
evas_object_resize(wd->img, gw, gh);
ay = 0;
gw = wd->size.w;
gh = wd->size.h;
++<<<<<<< HEAD
+ if (ow > gw) ax = (ow - gw) / 2;
+ if (oh > gh) ay = (oh - gh) / 2;
++=======
+ if (!wd->zoom_gest)
+ {
+ if (ow > gw) ax = (ow - gw) / 2;
+ if (oh > gh) ay = (oh - gh) / 2;
+ }
++>>>>>>> remotes/origin/upstream
for (y = 0; y < g->gh; y++)
{
for (x = 0; x < g->gw; x++)
if (wd->calc_job) ecore_job_del(wd->calc_job);
if (wd->scr_timer) ecore_timer_del(wd->scr_timer);
if (wd->zoom_animator) ecore_animator_del(wd->zoom_animator);
++<<<<<<< HEAD
++=======
+ if (wd->gzoom.bounce.animator) ecore_animator_del(wd->gzoom.bounce.animator);
++>>>>>>> remotes/origin/upstream
if (wd->long_timer) ecore_timer_del(wd->long_timer);
free(wd);
}
Grid *g;
if (!sd) return;
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
++<<<<<<< HEAD
+ img_place(sd->wd->obj, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
+ EINA_LIST_FOREACH(sd->wd->grids, l, g)
+ {
+ grid_load(sd->wd->obj, g);
+ grid_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y, ox, oy, ow, oh);
++=======
+ img_place(sd->wd->obj, sd->wd->pan_x, sd->wd->pan_y,
+ ox - sd->wd->gzoom.imx, oy - sd->wd->gzoom.imy, ow, oh);
+ EINA_LIST_FOREACH(sd->wd->grids, l, g)
+ {
+ grid_load(sd->wd->obj, g);
+ grid_place(sd->wd->obj, g, sd->wd->pan_x, sd->wd->pan_y,
+ ox - sd->wd->gzoom.imx, oy - sd->wd->gzoom.imy, ow, oh);
++>>>>>>> remotes/origin/upstream
}
}
return EINA_TRUE;
}
++<<<<<<< HEAD
++=======
+ Eina_Bool
+ _bounce_eval(void *_wd)
+ {
+ Widget_Data *wd = (Widget_Data *)_wd;
+ double t, tt;
+
+ if (!wd) return ECORE_CALLBACK_CANCEL;
+ if ((wd->gzoom.imx == wd->gzoom.bounce.x_end) &&
+ (wd->gzoom.imy == wd->gzoom.bounce.y_end))
+ {
+ wd->gzoom.imx = 0;
+ wd->gzoom.imy = 0;
+ wd->zoom_gest = EINA_FALSE;
+ wd->gzoom.bounce.animator = NULL;
+ _freeze_off(NULL, wd->obj, NULL);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ t = ecore_loop_time_get();
+ tt = (t - wd->gzoom.bounce.t_start) / (wd->gzoom.bounce.t_end - wd->gzoom.bounce.t_start);
+ tt = 1.0 - tt;
+ tt = 1.0 - (tt * tt);
+
+ if (t > wd->gzoom.bounce.t_end)
+ {
+ wd->gzoom.imx = 0;
+ wd->gzoom.imy = 0;
+ wd->zoom_gest = EINA_FALSE;
+ _freeze_off(NULL, wd->obj, NULL);
+ zoom_do(wd->obj, 1.0);
+ wd->gzoom.bounce.animator = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (wd->gzoom.imx != wd->gzoom.bounce.x_end)
+ wd->gzoom.imx = wd->gzoom.bounce.x_start * (1.0 - tt) + wd->gzoom.bounce.x_end * tt;
+
+ if (wd->gzoom.imy != wd->gzoom.bounce.y_end)
+ wd->gzoom.imy = wd->gzoom.bounce.y_start * (1.0 - tt) + wd->gzoom.bounce.y_end * tt;
+
+ zoom_do(wd->obj, 1.0 - (1.0 - tt));
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ static void
+ _gzoom(Widget_Data *_wd, Evas_Coord px, Evas_Coord py, Elm_Gesture_Zoom_Info* gest)
+ {
+ Widget_Data *wd = (Widget_Data *)_wd;
+ Evas_Coord rx, ry, rw, rh;
+ int regx, regy, regw, regh, ix, iy, iw, ih;
+ int xx, yy;
+
+ if (!wd) return;
+ wd->mode = ELM_PHOTOCAM_ZOOM_MODE_MANUAL;
+ wd->zoom = wd->gest_start / gest->zoom;
+ wd->size.ow = wd->size.w;
+ wd->size.oh = wd->size.h;
+ elm_smart_scroller_child_pos_get(wd->scr, &rx, &ry);
+ elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh);
+ if ((rw <= 0) || (rh <= 0)) return;
+
+ wd->size.nw = (double)wd->size.imw / wd->zoom;
+ wd->size.nh = (double)wd->size.imh / wd->zoom;
+
+ elm_photocam_image_region_get(wd->obj, ®x, ®y, ®w, ®h);
+ evas_object_geometry_get(wd->img, &ix, &iy, &iw, &ih);
+
+ wd->pvx = gest->x;
+ wd->pvy = gest->y;
+
+ xx = (px / wd->zoom) - wd->pvx;
+ yy = (py / wd->zoom) - wd->pvy;
+ wd->gzoom.imx = 0;
+ wd->gzoom.imy = 0;
+
+ if ((xx < 0) || (rw > wd->size.nw))
+ {
+ wd->gzoom.imx = xx;
+ xx = 0;
+ }
+ else if ((xx + rw) > wd->size.nw)
+ {
+ wd->gzoom.imx = xx + rw - wd->size.nw;
+ xx = wd->size.nw - rw;
+ }
+
+ if ((yy < 0) || (rh > wd->size.nh))
+ {
+ wd->gzoom.imy = yy;
+ yy = 0;
+ }
+ else if ((yy + rh) > wd->size.nh)
+ {
+ wd->gzoom.imy = yy + rh - wd->size.nh;
+ yy = wd->size.nh - rh;
+ }
+
+ wd->size.spos.x = (double)(xx + (rw / 2)) / (double)(wd->size.nw);
+ wd->size.spos.y = (double)(yy + (rh / 2)) / (double)(wd->size.nh);
+
+ zoom_do(wd->obj, 1.0);
+ }
+
+ static Evas_Event_Flags
+ _gzoom_start(void *_wd, void *event_info)
+ {
+ Widget_Data *wd = (Widget_Data *)_wd;
+ Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
+ Evas_Coord rw, rh;
+ int x,y,w,h;
+ double marginx = 0, marginy = 0;
+
+ if (wd->gzoom.bounce.animator)
+ {
+ ecore_animator_del(wd->gzoom.bounce.animator);
+ wd->gzoom.bounce.animator = NULL;
+ }
+ wd->zoom_gest = EINA_TRUE;
+ _freeze_on(NULL, wd->obj, NULL);
+
+ elm_photocam_image_region_get(wd->obj, &x, &y, &w, &h);
+ elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh);
+
+ if (rw > wd->size.nw)
+ marginx = (rw - wd->size.nw) / 2;
+ if (rh > wd->size.nh)
+ marginy = (rh - wd->size.nh) / 2;
+
+ wd->gest_start = wd->zoom;
+
+ wd->zoom_point_x = x + ((p->x - marginx) * wd->zoom) + wd->gzoom.imx;
+ wd->zoom_point_y = y + ((p->y - marginy) * wd->zoom) + wd->gzoom.imy;
+
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Evas_Event_Flags
+ _gzoom_move(void *_wd, void *event_info)
+ {
+ Widget_Data *wd = (Widget_Data *)_wd;
+ Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
+
+ _gzoom(wd, wd->zoom_point_x, wd->zoom_point_y, p);
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
+ static Evas_Event_Flags
+ _gzoom_end(void *_wd, void *event_info __UNUSED__)
+ {
+ Widget_Data *wd = (Widget_Data *)_wd;
+ Evas_Coord rw, rh;
+
+ elm_smart_scroller_child_viewport_size_get(wd->scr, &rw, &rh);
+ wd->gest_start = 1.0;
+
+ if (wd->gzoom.imx || wd->gzoom.imy)
+ {
+ double t;
+
+ t = ecore_loop_time_get();
+ wd->gzoom.bounce.x_start = wd->gzoom.imx;
+ wd->gzoom.bounce.y_start = wd->gzoom.imy;
+ wd->gzoom.bounce.x_end = 0;
+ wd->gzoom.bounce.y_end = 0;
+
+ if (rw > wd->size.nw &&
+ rh > wd->size.nh)
+ {
+ Evas_Coord pw, ph;
+ double z;
+
+ if ((wd->size.imw < rw) && (wd->size.imh < rh))
+ {
+ wd->zoom = 1;
+ wd->size.nw = wd->size.imw;
+ wd->size.nh = wd->size.imh;
+ }
+ else
+ {
+ ph = (wd->size.imh * rw) / wd->size.imw;
+ if (ph > rh)
+ {
+ pw = (wd->size.imw * rh) / wd->size.imh;
+ ph = rh;
+ }
+ else
+ {
+ pw = rw;
+ }
+ if (wd->size.imw > wd->size.imh)
+ z = (double)wd->size.imw / pw;
+ else
+ z = (double)wd->size.imh / ph;
+
+ wd->zoom = z;
+ wd->size.nw = pw;
+ wd->size.nh = ph;
+ }
+ wd->gzoom.bounce.x_end = (wd->size.nw - rw) / 2;
+ wd->gzoom.bounce.y_end = (wd->size.nh - rh) / 2;
+ }
+ else
+ {
+ int xx, yy;
+
+ xx = (wd->zoom_point_x / wd->zoom) - wd->pvx;
+ yy = (wd->zoom_point_y / wd->zoom) - wd->pvy;
+
+ if (xx < 0) xx = 0;
+ if (yy < 0) yy = 0;
+
+ if (rw > wd->size.nw)
+ wd->gzoom.bounce.x_end = (wd->size.nw -rw) / 2;
+ if ((xx + rw) > wd->size.nw)
+ xx = wd->size.nw - rw;
+
+ if (rh > wd->size.nh)
+ wd->gzoom.bounce.y_end = (wd->size.nh - rh) / 2;
+ if ((yy + rh) > wd->size.nh)
+ yy = wd->size.nh - rh;
+
+ wd->size.spos.x = (double)(xx + (rw / 2)) / (double)(wd->size.nw);
+ wd->size.spos.y = (double)(yy + (rh / 2)) / (double)(wd->size.nh);
+ }
+
+ wd->gzoom.bounce.t_start = t;
+ wd->gzoom.bounce.t_end = t + _elm_config->page_scroll_friction;
+
+ wd->gzoom.bounce.animator = ecore_animator_add(_bounce_eval, wd);
+ }
+ else
+ {
+ _freeze_off(NULL, wd->obj, NULL);
+ wd->zoom_gest = EINA_FALSE;
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_photocam_add(Evas_Object *parent)
{
_pan_set, _pan_get, _pan_max_get,
_pan_min_get, _pan_child_size_get);
++<<<<<<< HEAD
+ wd->zoom = 1;
+ wd->mode = ELM_PHOTOCAM_ZOOM_MODE_MANUAL;
+
++=======
+ wd->zoom_gest = EINA_FALSE;
+ wd->gest_start = 1.0;
+ wd->zoom = 1;
+ wd->mode = ELM_PHOTOCAM_ZOOM_MODE_MANUAL;
++>>>>>>> remotes/origin/upstream
wd->tsize = 512;
wd->img = evas_object_image_add(e);
wd->size.imh = h;
wd->size.w = wd->size.imw / wd->zoom;
wd->size.h = wd->size.imh / wd->zoom;
++<<<<<<< HEAD
++=======
+ if (wd->gzoom.bounce.animator)
+ {
+ ecore_animator_del(wd->gzoom.bounce.animator);
+ wd->gzoom.bounce.animator = NULL;
+ }
++>>>>>>> remotes/origin/upstream
if (wd->zoom_animator)
{
wd->nosmooth--;
"elm,state,busy,start", "elm");
evas_object_smart_callback_call(obj, SIG_LOAD_DETAIL, NULL);
}
++<<<<<<< HEAD
+ {
+ double tz = wd->zoom;
+ wd->zoom = 0.0;
+ elm_photocam_zoom_set(wd->obj, tz);
+ }
++=======
+ {
+ double tz = wd->zoom;
+ wd->zoom = 0.0;
+ elm_photocam_zoom_set(wd->obj, tz);
+ }
++>>>>>>> remotes/origin/upstream
return evas_object_image_load_error_get(wd->img);
}
wd->size.nh = ph;
}
}
++<<<<<<< HEAD
++=======
+ else if (wd->mode == ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN)
+ {
+ if ((wd->size.imw < 1) || (wd->size.imh < 1))
+ {
+ wd->size.nw = 0;
+ wd->size.nh = 0;
+ }
+ else if ((wd->size.imw < rw) && (wd->size.imh < rh))
+ {
+ if (1 != wd->zoom) zoom_changed = 1;
+ wd->zoom = 1;
+ wd->size.nw = wd->size.imw;
+ wd->size.nh = wd->size.imh;
+ }
+ else
+ {
+ ph = (wd->size.imh * rw) / wd->size.imw;
+ if (ph > rh)
+ {
+ pw = (wd->size.imw * rh) / wd->size.imh;
+ ph = rh;
+ }
+ else
+ pw = rw;
+ if (wd->size.imw > wd->size.imh)
+ z = (double)wd->size.imw / pw;
+ else
+ z = (double)wd->size.imh / ph;
+ if (z != wd->zoom)
+ zoom_changed = 1;
+ wd->zoom = z;
+ wd->size.nw = pw;
+ wd->size.nh = ph;
+ }
+ }
++>>>>>>> remotes/origin/upstream
if (wd->main_load_pending)
{
wd->size.w = wd->size.nw;
free(g);
}
}
++<<<<<<< HEAD
+done:
++=======
+ done:
++>>>>>>> remotes/origin/upstream
wd->t_start = ecore_loop_time_get();
wd->t_end = wd->t_start + _elm_config->zoom_friction;
if ((wd->size.w > 0) && (wd->size.h > 0))
if (!wd) return;
if (wd->mode == mode) return;
wd->mode = mode;
++<<<<<<< HEAD
+ {
+ double tz = wd->zoom;
+ wd->zoom = 0.0;
+ elm_photocam_zoom_set(wd->obj, tz);
+ }
++=======
+ {
+ double tz = wd->zoom;
+ wd->zoom = 0.0;
+ elm_photocam_zoom_set(wd->obj, tz);
+ }
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Photocam_Zoom_Mode
if (h) *h = wd->size.imh;
}
++<<<<<<< HEAD
+EAPI void
+elm_photocam_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
+{
++=======
+ EINA_DEPRECATED EAPI void
+ elm_photocam_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
+ {
+ return elm_photocam_image_region_get(obj, x, y, w, h);
+ }
+
+ EAPI void
+ elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
Evas_Coord sx, sy, sw, sh;
if (rh < 1) rh = 1;
if ((rx + rw) > wd->size.w) rx = wd->size.w - rw;
if ((ry + rh) > wd->size.h) ry = wd->size.h - rh;
++<<<<<<< HEAD
++=======
+ if (wd->gzoom.bounce.animator)
+ {
+ ecore_animator_del(wd->gzoom.bounce.animator);
+ wd->gzoom.bounce.animator = NULL;
+ zoom_do(obj, 1.0);
+ }
++>>>>>>> remotes/origin/upstream
if (wd->zoom_animator)
{
wd->nosmooth--;
if (rh < 1) rh = 1;
if ((rx + rw) > wd->size.w) rx = wd->size.w - rw;
if ((ry + rh) > wd->size.h) ry = wd->size.h - rh;
++<<<<<<< HEAD
++=======
+ if (wd->gzoom.bounce.animator)
+ {
+ ecore_animator_del(wd->gzoom.bounce.animator);
+ wd->gzoom.bounce.animator = NULL;
+ zoom_do(obj, 1.0);
+ }
++>>>>>>> remotes/origin/upstream
if (wd->zoom_animator)
{
wd->nosmooth--;
wd->paused = paused;
if (wd->paused)
{
++<<<<<<< HEAD
++=======
+ if (wd->gzoom.bounce.animator)
+ {
+ ecore_animator_del(wd->gzoom.bounce.animator);
+ wd->gzoom.bounce.animator = NULL;
+ zoom_do(obj, 1.0);
+ }
++>>>>>>> remotes/origin/upstream
if (wd->zoom_animator)
{
ecore_animator_del(wd->zoom_animator);
elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce);
}
++<<<<<<< HEAD
++=======
+ EAPI void
+ elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->do_gesture == !!gesture) return;
+
+ if (wd->gest)
+ {
+ evas_object_del(wd->gest);
+ wd->gest = NULL;
+ }
+
+ if (gesture)
+ {
+ wd->gest = elm_gesture_layer_add(wd->obj);
+ if (!wd->gest) return;
+ elm_gesture_layer_attach(wd->gest, wd->obj);
+ elm_gesture_layer_cb_set(wd->gest, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_START,
+ _gzoom_start, wd);
+ elm_gesture_layer_cb_set(wd->gest, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE,
+ _gzoom_move, wd);
+ elm_gesture_layer_cb_set(wd->gest, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END,
+ _gzoom_end, wd);
+ elm_gesture_layer_cb_set(wd->gest, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT,
+ _gzoom_end, wd);
+ }
+
+ wd->do_gesture = !!gesture;
+ }
+
+ EAPI Eina_Bool
+ elm_photocam_gesture_enabled_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ return wd->do_gesture;
+ }
++>>>>>>> remotes/origin/upstream
ELM_PHOTOCAM_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_photocam_zoom_set */
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT, /**< Zoom until photo fits in photocam */
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL, /**< Zoom until photo fills photocam */
++<<<<<<< HEAD
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Unzoom until photo fits in photocam */
++=======
+ ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN, /**< Zoom in until photo fits in photocam */
++>>>>>>> remotes/origin/upstream
ELM_PHOTOCAM_ZOOM_MODE_LAST
} Elm_Photocam_Zoom_Mode;
* This sets the zoom level. 1 will be 1:1 pixel for pixel. 2 will be 2:1
* (that is 2x2 photo pixels will display as 1 on-screen pixel). 4:1 will be
* 4x4 photo pixels as 1 screen pixel, and so on. The @p zoom parameter must
++<<<<<<< HEAD
+ * be greater than 0. It is usggested to stick to powers of 2. (1, 2, 4, 8,
++=======
+ * be greater than 0. It is suggested to stick to powers of 2. (1, 2, 4, 8,
++>>>>>>> remotes/origin/upstream
* 16, 32, etc.).
*/
EAPI void elm_photocam_zoom_set(Evas_Object *obj, double zoom);
* This returns the current zoom level of the photocam object. Note that if
* you set the fill mode to other than ELM_PHOTOCAM_ZOOM_MODE_MANUAL
* (which is the default), the zoom level may be changed at any time by the
++<<<<<<< HEAD
+ * photocam object itself to account for photo size and photocam viewpoer
++=======
+ * photocam object itself to account for photo size and photocam viewport
++>>>>>>> remotes/origin/upstream
* size.
*
* @see elm_photocam_zoom_set()
* modes will allow the photocam object to automatically adjust zoom mode
* based on properties. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT) will adjust zoom so
* the photo fits EXACTLY inside the scroll frame with no pixels outside this
++<<<<<<< HEAD
+ * area. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no
++=======
+ * region. ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL will be similar but ensure no
++>>>>>>> remotes/origin/upstream
* pixels within the frame are left unfilled.
*/
EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photocam_Zoom_Mode mode);
EAPI void elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h);
/**
++<<<<<<< HEAD
+ * @brief Get the area of the image that is currently shown
++=======
+ * @brief Get the region of the image that is currently shown
++>>>>>>> remotes/origin/upstream
*
* @param obj
* @param x A pointer to the X-coordinate of region
* @see elm_photocam_image_region_show()
* @see elm_photocam_image_region_bring_in()
*/
++<<<<<<< HEAD
+EAPI void elm_photocam_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+/**
+ * @brief Set the viewed portion of the image
++=======
+ EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+ /**
+ * @brief Set the viewed region of the image
++>>>>>>> remotes/origin/upstream
*
* @param obj The photocam object
* @param x X-coordinate of region in image original pixels
*
* This sets the paused state to on(EINA_TRUE) or off (EINA_FALSE) for
* photocam. The default is off. This will stop zooming using animation on
++<<<<<<< HEAD
+ * zoom levels changes and change instantly. This will stop any existing
++=======
+ * zoom level changes and change instantly. This will stop any existing
++>>>>>>> remotes/origin/upstream
* animations that are running.
*/
EAPI void elm_photocam_paused_set(Evas_Object *obj, Eina_Bool paused);
* @brief Set the photocam scrolling bouncing.
*
* @param obj The photocam object
++<<<<<<< HEAD
+ * @param h_bounce bouncing for horizontal
+ * @param v_bounce bouncing for vertical
++=======
+ * @param h_bounce set this to @c EINA_TRUE for horizontal bouncing
+ * @param v_bounce set this to @c EINA_TRUE for vertical bouncing
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_photocam_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
* @brief Get the photocam scrolling bouncing.
*
* @param obj The photocam object
++<<<<<<< HEAD
+ * @param h_bounce bouncing for horizontal
+ * @param v_bounce bouncing for vertical
++=======
+ * @param h_bounce horizontal bouncing
+ * @param v_bounce vertical bouncing
++>>>>>>> remotes/origin/upstream
*
* @see elm_photocam_bounce_set()
*/
EAPI void elm_photocam_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
/**
++<<<<<<< HEAD
++=======
+ * @brief Set the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @param gesture The gesture state to set
+ *
+ * This sets the gesture state to on(EINA_TRUE) or off (EINA_FALSE) for
+ * photocam. The default is off. This will start multi touch zooming.
+ */
+ EAPI void elm_photocam_gesture_enabled_set(Evas_Object *obj, Eina_Bool gesture);
+
+ /**
+ * @brief Get the gesture state for photocam.
+ *
+ * @param obj The photocam object
+ * @return The current gesture state
+ *
+ * This gets the current gesture state for the photocam object.
+ *
+ * @see elm_photocam_gesture_enabled_set()
+ */
+ EAPI Eina_Bool elm_photocam_gesture_enabled_get(const Evas_Object *obj);
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
/**
* @defgroup Plug Plug
*
++<<<<<<< HEAD
+ *
+ * An object that allows one to show an image which other process created.
+ * It can be used anywhere like any other elementary widget.
+ *
+ * This widget provides the limited functionality because this widget usually used to show socket's image.
+ *
+ * If more functionality is needed, it will be added.
+ *
+ *
++=======
+ * An object that allows one to show an image which other process created.
+ * It can be used anywhere like any other elementary widget.
+ *
++>>>>>>> remotes/origin/upstream
*/
/**
* @param parent The parent object
* @return The new plug image object or NULL if it cannot be created
*
++<<<<<<< HEAD
+ *
++=======
++>>>>>>> remotes/origin/upstream
* @ingroup Plug
*/
EAPI Evas_Object *elm_plug_add(Evas_Object *parent);
/**
* Connect a plug widget to service provided by socket image.
*
++<<<<<<< HEAD
+ * @param ee_target The Ecore_Evas containing the canvas in which the new image object will live.
+ * @param svcname The service name to connect to set up by the socket.
+ * @param svcnum The service number to connect to (set up by socket).
+ * @param svcsys Booleain to set if the service is a system one or not (set up by socket).
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ *
+ * @ingroup Plug
+ */
+
++=======
+ * @param obj The Evas_Object where the new image object will live.
+ * @param svcname The service name to connect to set up by the socket.
+ * @param svcnum The service number to connect to (set up by socket).
+ * @param svcsys Boolean to set if the service is a system one or not (set up by socket).
+ * @return (@c EINA_TRUE = success, @c EINA_FALSE = error)
+ *
+ * @ingroup Plug
+ */
++>>>>>>> remotes/origin/upstream
EAPI Eina_Bool elm_plug_connect(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
/**
typedef struct _Elm_Config Elm_Config;
typedef struct _Elm_Module Elm_Module;
++<<<<<<< HEAD
++=======
+ typedef struct _Elm_Datetime_Module_Data Elm_Datetime_Module_Data;
++>>>>>>> remotes/origin/upstream
struct _Elm_Theme
{
unsigned char thumbscroll_bounce_enable;
double thumbscroll_border_friction;
double thumbscroll_sensitivity_friction;
++<<<<<<< HEAD
+ double scroll_smooth_time_interval;
++=======
++>>>>>>> remotes/origin/upstream
double scroll_smooth_amount;
double scroll_smooth_history_weight;
double scroll_smooth_future_time;
double glayer_long_tap_start_timeout;
int access_mode;
Eina_Bool glayer_continues_enable;
++<<<<<<< HEAD
++=======
+ int week_start;
+ int weekend_start;
+ int weekend_len;
++>>>>>>> remotes/origin/upstream
/* Not part of the EET file */
Eina_Bool is_mirrored : 1;
int references;
};
++<<<<<<< HEAD
++=======
+ struct _Elm_Datetime_Module_Data
+ {
+ Evas_Object *base;
+ void (*field_limit_get)(Evas_Object *obj, Elm_Datetime_Field_Type field_type, int *range_min, int *range_max);
+ const char *(*field_format_get)(Evas_Object * obj, Elm_Datetime_Field_Type field_type);
+ };
+
++>>>>>>> remotes/origin/upstream
int _elm_ews_wm_init(void);
void _elm_ews_wm_shutdown(void);
void _elm_ews_wm_rescale(Elm_Theme *th, Eina_Bool use_theme);
extern int _elm_log_dom;
extern Eina_List *_elm_win_list;
extern int _elm_win_deferred_free;
++<<<<<<< HEAD
++=======
+ extern const char *_elm_preferred_engine;
++>>>>>>> remotes/origin/upstream
#ifdef ENABLE_NLS
/* Our gettext wrapper, used to disable translation of elm if the app
* value</b>. Label, icon and unit strings/objects are @b optional
* for progress bars.
*
++<<<<<<< HEAD
+ * A progress bar may be @b inverted, in which state it gets its
+ * values inverted, with high values being on the left or top and
+ * low values on the right or bottom, as opposed to normally have
+ * the low values on the former and high values on the latter,
+ * respectively, for horizontal and vertical modes.
++=======
+ * A progress bar may be @b inverted, in which case it gets its
+ * values inverted, i.e., high values being on the left or top and
+ * low values on the right or bottom, for horizontal and vertical modes
+ * respectively.
++>>>>>>> remotes/origin/upstream
*
* The @b span of the progress, as set by
* elm_progressbar_span_size_set(), is its length (horizontally or
* vertically), unless one puts size hints on the widget to expand
* on desired directions, by any container. That length will be
++<<<<<<< HEAD
+ * scaled by the object or applications scaling factor. At any
+ * point code can query the progress bar for its value with
++=======
+ * scaled by the object or applications scaling factor.
+ * Applications can query the progress bar for its value with
++>>>>>>> remotes/origin/upstream
* elm_progressbar_value_get().
*
* Available widget styles for progress bars:
* "pulse" effect is available)
*
* Default text parts of the progressbar widget that you can use for are:
++<<<<<<< HEAD
+ * @li "default" - Label of the progressabar
+ *
+ * Default contents parts of the progressbar widget that you can use for are:
++=======
+ * @li "default" - Label of the progressbar
+ *
+ * Default content parts of the progressbar widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the progressbar
*
* Supported elm_object common APIs.
*
* By default, progress bars will display values from the low to
* high value boundaries. There are, though, contexts in which the
++<<<<<<< HEAD
+ * state of progression of a given task is @b unknown. For those,
+ * one can set a progress bar widget to a "pulsing state", to give
+ * the user an idea that some computation is being held, but
+ * without exact progress values. In the default theme it will
++=======
+ * progress of a given task is @b unknown. For such cases,
+ * one can set a progress bar widget to a "pulsing state", to give
+ * the user an idea that some computation is being held, but
+ * without exact progress values. In the default theme, it will
++>>>>>>> remotes/origin/upstream
* animate its bar with the contents filling in constantly and back
* to non-filled, in a loop. To start and stop this pulsing
* animation, one has to explicitly call elm_progressbar_pulse().
* area to be hidden completely. If not, it'll set the <b>format
* string</b> for the units label's @b text. The units label is
* provided a floating point value, so the units text is up display
++<<<<<<< HEAD
+ * at most one floating point falue. Note that the units label is
++=======
+ * at most one floating point value. Note that the units label is
++>>>>>>> remotes/origin/upstream
* optional. Use a format string such as "%1.2f meters" for
* example.
*
wd->group->valuep = NULL;
}
}
++<<<<<<< HEAD
++=======
+
+ EAPI Evas_Object *
+ elm_radio_selected_object_get(Evas_Object *obj)
+ {
+ Eina_List *l;
+ Evas_Object *child;
+ Widget_Data *wd2;
+
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return NULL;
+
+ EINA_LIST_FOREACH(wd->group->radios, l, child)
+ {
+ wd2 = elm_widget_data_get(child);
+ if (wd2->value == wd->group->value)
+ return child;
+ }
+ return NULL;
+ }
++>>>>>>> remotes/origin/upstream
*
* A radio object contains an indicator, an optional Label and an optional
* icon object. While it's possible to have a group of only one radio they,
++<<<<<<< HEAD
+ * are normally used in groups of 2 or more. To add a radio to a group use
+ * elm_radio_group_add(). The radio object(s) will select from one of a set
++=======
+ * are normally used in groups of 2 or more.
+ *
+ * elm_radio objects are grouped in a slightly different, compared to other
+ * UI toolkits. There is no seperate group name/id to remember or manage.
+ * The members represent the group, there are the group. To make a group,
+ * use elm_radio_group_add() and pass existing radio object and the new radio
+ * object.
+ *
+ * The radio object(s) will select from one of a set
++>>>>>>> remotes/origin/upstream
* of integer values, so any value they are configuring needs to be mapped to
* a set of integers. To configure what value that radio object represents,
* use elm_radio_state_value_set() to set the integer it represents. To set
* Default text parts of the radio widget that you can use for are:
* @li "default" - Label of the radio
*
++<<<<<<< HEAD
+ * Default contents parts of the radio widget that you can use for are:
++=======
+ * Default content parts of the radio widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon of the radio
*
* Supported elm_object common APIs.
EAPI int elm_radio_state_value_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * @brief Set the value of the radio.
+ *
+ * @param obj The radio object
++=======
+ * @brief Set the value of the radio group.
+ *
+ * @param obj The radio object (any radio object of the group).
++>>>>>>> remotes/origin/upstream
* @param value The value to use for the group
*
* This sets the value of the radio group and will also set the value if
EAPI void elm_radio_value_set(Evas_Object *obj, int value);
/**
++<<<<<<< HEAD
+ * @brief Get the state of the radio object
+ *
+ * @param obj The radio object
++=======
+ * @brief Get the value of the radio group
+ *
+ * @param obj The radio object (any radio object of the group).
++>>>>>>> remotes/origin/upstream
* @return The integer state
*/
EAPI int elm_radio_value_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * @brief Set a convenience pointer to a integer to change
+ *
+ * @param obj The radio object
++=======
+ * @brief Set a convenience pointer to a integer to change when radio group
+ * value changes.
+ *
+ * @param obj The radio object (any object of a group)
++>>>>>>> remotes/origin/upstream
* @param valuep Pointer to the integer to modify
*
* This sets a pointer to a integer, that, in addition to the radio objects
EAPI void elm_radio_value_pointer_set(Evas_Object *obj, int *valuep);
/**
++<<<<<<< HEAD
++=======
+ * @brief Get the selected radio object.
+ *
+ * @param obj Any radio object (any object of a group)
+ * @return The selected radio object
+ */
+ EAPI Evas_Object *elm_radio_selected_object_get(Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
}
#endif
++<<<<<<< HEAD
+EAPI double
+elm_route_lon_min_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->lon_min;
+}
+
+EAPI double
+elm_route_lat_min_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->lat_min;
+}
+
+EAPI double
+elm_route_lon_max_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->lon_max;
+}
+
+EAPI double
+elm_route_lat_max_get(Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ return wd->lat_max;
+}
+
++=======
+ EINA_DEPRECATED EAPI double
+ elm_route_lon_min_get(Evas_Object *obj)
+ {
+ double val;
+ elm_route_longitude_min_max_get(obj, &val, NULL);
+ return val;
+ }
+
+ EINA_DEPRECATED EAPI double
+ elm_route_lat_min_get(Evas_Object *obj)
+ {
+ double val;
+ elm_route_latitude_min_max_get(obj, &val, NULL);
+ return val;
+ }
+
+ EINA_DEPRECATED EAPI double
+ elm_route_lon_max_get(Evas_Object *obj)
+ {
+ double val;
+ elm_route_longitude_min_max_get(obj, NULL, &val);
+ return val;
+ }
+
+ EINA_DEPRECATED EAPI double
+ elm_route_lat_max_get(Evas_Object *obj)
+ {
+ double val;
+ elm_route_latitude_min_max_get(obj, NULL, &val);
+ return val;
+ }
+
+ EAPI void
+ elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (min) *min = wd->lon_min;
+ if (max) *max = wd->lon_max;
+ }
+
+ EAPI void
+ elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (min) *min = wd->lat_min;
+ if (max) *max = wd->lat_max;
+ }
++>>>>>>> remotes/origin/upstream
/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-3f0^-2{2(0W1st0 :*/
++<<<<<<< HEAD
+EAPI Evas_Object *elm_route_add(Evas_Object *parent);
+#ifdef ELM_EMAP
+EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+#endif
+EAPI double elm_route_lon_min_get(Evas_Object *obj);
+EAPI double elm_route_lat_min_get(Evas_Object *obj);
+EAPI double elm_route_lon_max_get(Evas_Object *obj);
+EAPI double elm_route_lat_max_get(Evas_Object *obj);
++=======
+ /**
+ * @defgroup Route Route
+ *
+ * For displaying a route on the map widget.
+ *
+ * @{
+ */
+
+ /**
+ * Add a new route object to the parent's canvas
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ */
+ EAPI Evas_Object *elm_route_add(Evas_Object *parent);
+
+ #ifdef ELM_EMAP
+ EAPI void elm_route_emap_set(Evas_Object *obj, EMap_Route *emap);
+ #endif
+
+
+ EINA_DEPRECATED EAPI double elm_route_lon_min_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lat_min_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lon_max_get(Evas_Object *obj);
+ EINA_DEPRECATED EAPI double elm_route_lat_max_get(Evas_Object *obj);
+
+ /**
+ * Get the minimum and maximum values along the longitude.
+ *
+ * @param obj The route object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @ingroup Route
+ */
+ EAPI void elm_route_longitude_min_max_get(const Evas_Object *obj, double *min, double *max);
+
+ /**
+ * Get the minimum and maximum values along the latitude.
+ *
+ * @param obj The route object.
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
+ *
+ * @note If only one value is needed, the other pointer can be passed
+ * as @c NULL.
+ *
+ * @ingroup Route
+ */
+ EAPI void elm_route_latitude_min_max_get(const Evas_Object *obj, double *min, double *max);
++>>>>>>> remotes/origin/upstream
*/
/**
++<<<<<<< HEAD
+ * Get the global scaling factor
+ *
+ * This gets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @return The scaling factor
+ * @ingroup Scaling
+ */
+EAPI double elm_scale_get(void);
+
+/**
+ * Set the global scaling factor
+ *
+ * This sets the globally configured scaling factor that is applied to all
+ * objects.
+ *
+ * @param scale The scaling factor to set
+ * @ingroup Scaling
+ */
+EAPI void elm_scale_set(double scale);
+
+/**
+ * Set the global scaling factor for all applications on the display
+ *
+ * This sets the globally configured scaling factor that is applied to all
+ * objects for all applications.
+ * @param scale The scaling factor to set
+ * @ingroup Scaling
+ */
+// XXX: deprecate and replace with elm_config_all_flush()
+EAPI void elm_scale_all_set(double scale);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Set the scaling factor for a given Elementary object
*
* @param obj The Elementary to operate on
/**
* Get the scrolling lock of the given widget
*
++<<<<<<< HEAD
+ * This gets the lock for X axis scrolling.
++=======
+ * This gets the lock for Y axis scrolling.
++>>>>>>> remotes/origin/upstream
*
* @param obj The object
* @ingroup Scrollhints
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ elm_smart_scroller_propagate_events_set(wd->scr, propagation);
++=======
+ evas_object_propagate_events_set(wd->scr, propagation);
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return elm_smart_scroller_propagate_events_get(wd->scr);
++=======
+ return evas_object_propagate_events_get(wd->scr);
++>>>>>>> remotes/origin/upstream
}
EAPI void
elm_smart_scroller_gravity_get(wd->scr, x, y);
}
++<<<<<<< HEAD
+
+EAPI void
+elm_scroller_page_move_set(Evas_Object *obj, Eina_Bool set)
+{
+ return ;
+}
++=======
++>>>>>>> remotes/origin/upstream
* @li "scroll,drag,start" - dragging the contents around has started
* @li "scroll,drag,stop" - dragging the contents around has stopped
* @note The "scroll,anim,*" and "scroll,drag,*" signals are only emitted by
++<<<<<<< HEAD
+ * user intervetion.
+ *
+ * @note When Elemementary is in embedded mode the scrollbars will not be
+ * dragable, they appear merely as indicators of how much has been scrolled.
+ * @note When Elementary is in desktop mode the thumbscroll(a.k.a.
+ * fingerscroll) won't work.
+ *
+ * Default contents parts of the scroller widget that you can use for are:
++=======
+ * user intervention.
+ *
+ * @note When Elementary is in embedded mode the scrollbars will not be
+ * draggable, they appear merely as indicators of how much has been scrolled.
+ * @note When Elementary is in desktop mode the thumbscroll(a.k.a.
+ * fingerscroll) won't work.
+ *
+ * Default content parts of the scroller widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "default" - A content of the scroller
*
* Supported elm_object common APIs.
*
* @see elm_scroller_last_page_get()
* @see elm_scroller_page_show()
++<<<<<<< HEAD
+ * @see elm_scroller_page_brint_in()
++=======
+ * @see elm_scroller_page_bring_in()
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_scroller_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
*
* @see elm_scroller_current_page_get()
* @see elm_scroller_page_show()
++<<<<<<< HEAD
+ * @see elm_scroller_page_brint_in()
++=======
+ * @see elm_scroller_page_bring_in()
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_scroller_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber);
static void
_item_text_set_hook(Elm_Object_Item *it, const char *part, const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
Widget_Data *wd;
Elm_Segment_Item *item;
if (part && strcmp(part, "default")) return;
++<<<<<<< HEAD
+ item = (Elm_Segment_Item *) it;
++=======
+ item = (Elm_Segment_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_item_data_get(item);
if (!wd) return;
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Segment_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Segment_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static void
const char *part,
Evas_Object *content)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++=======
++>>>>>>> remotes/origin/upstream
Elm_Segment_Item *item;
if (part && strcmp(part, "icon")) return;
++<<<<<<< HEAD
+ item = (Elm_Segment_Item *) it;
++=======
+ item = (Elm_Segment_Item *)it;
++>>>>>>> remotes/origin/upstream
//Remove the existing icon
if (item->icon)
static Evas_Object *
_item_content_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "icon")) return NULL;
+ return ((Elm_Segment_Item *) it)->icon;
++=======
+ if (part && strcmp(part, "icon")) return NULL;
+ return ((Elm_Segment_Item *)it)->icon;
++>>>>>>> remotes/origin/upstream
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+ Widget_Data *wd;
+ Elm_Segment_Item *item = (Elm_Segment_Item *) it;
++=======
+ Widget_Data *wd;
+ Elm_Segment_Item *item = (Elm_Segment_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_item_data_get(item);
if (!wd) return EINA_FALSE;
wd->seg_items = eina_list_append(wd->seg_items, it);
_update_list(wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
wd->seg_items = eina_list_append(wd->seg_items, it);
_update_list(wd);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI void
it = _item_find(obj, idx);
if (!it) return;
++<<<<<<< HEAD
+ elm_object_item_del((Elm_Object_Item *) it);
++=======
+ elm_object_item_del((Elm_Object_Item *)it);
++>>>>>>> remotes/origin/upstream
}
EAPI const char*
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Widget_Data *wd;
++<<<<<<< HEAD
+ Elm_Segment_Item *item = (Elm_Segment_Item *) it;
++=======
+ Elm_Segment_Item *item = (Elm_Segment_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_item_data_get(item);
if (!wd) return;
elm_segment_control_item_index_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, -1);
++<<<<<<< HEAD
+ return ((Elm_Segment_Item *) it)->seg_index;
++=======
+ return ((Elm_Segment_Item *)it)->seg_index;
++>>>>>>> remotes/origin/upstream
}
* Available styles for it:
* - @c "default"
*
++<<<<<<< HEAD
+ * Default contents parts of the segment control items that you can use for are:
++=======
+ * Default content parts of the segment control items that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "icon" - An icon in a segment control item
*
* Default text parts of the segment control items that you can use for are:
* sc = elm_segment_control_add(win);
* ic = elm_icon_add(win);
* elm_icon_file_set(ic, "path/to/image", NULL);
++<<<<<<< HEAD
+ * elm_icon_scale_set(ic, EINA_TRUE, EINA_TRUE);
++=======
+ * elm_icon_resizable_set(ic, EINA_TRUE, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
* elm_segment_control_item_add(sc, ic, "label");
* evas_object_show(sc);
* @endcode
* This sets the selected state of the given item @p it.
* @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
*
++<<<<<<< HEAD
+ * If a new item is selected the previosly selected will be unselected.
+ * Previoulsy selected item can be get with function
++=======
+ * If a new item is selected the previously selected will be unselected.
+ * Selected item can be got with function
++>>>>>>> remotes/origin/upstream
* elm_segment_control_item_selected_get().
*
* The selected item always will be highlighted on segment control.
_elm_theme_object_set(obj, wd->slider, "slider", "horizontal", elm_widget_style_get(obj));
else
_elm_theme_object_set(obj, wd->slider, "slider", "vertical", elm_widget_style_get(obj));
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(obj))
+ edje_object_signal_emit(wd->slider, "elm,state,disabled", "elm");
+ else
+ edje_object_signal_emit(wd->slider, "elm,state,enabled", "elm");
++=======
++>>>>>>> remotes/origin/upstream
if (wd->icon)
{
edje_object_part_swallow(wd->slider, "elm.swallow.content", wd->icon);
if (wd->labels)
{
eina_hash_foreach(wd->labels, _labels_foreach_text_set, wd);
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->slider, "elm,state,text,visible", "elm");
++=======
+ edje_object_signal_emit(wd->slider, "elm,state,text,visible", "elm");
++>>>>>>> remotes/origin/upstream
}
if (wd->units)
static void
_drag(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Widget_Data *wd = elm_widget_data_get((Evas_Object*)data);
+ if (elm_widget_disabled_get(data)) return;
_val_fetch(data);
_units_set(data);
_indicator_set(data);
+ edje_object_signal_emit(wd->slider, "elm,state,drag", "elm");
+ edje_object_message_signal_process(wd->slider);
++=======
++ _val_fetch(data);
++ _units_set(data);
++ _indicator_set(data);
++>>>>>>> remotes/origin/upstream
}
static void
_drag_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ Widget_Data *wd = elm_widget_data_get((Evas_Object*)data);
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
_val_fetch(data);
evas_object_smart_callback_call(data, SIG_DRAG_START, NULL);
_units_set(data);
_indicator_set(data);
elm_widget_scroll_freeze_push(data);
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->slider, "elm,state,drag", "elm");
+ edje_object_message_signal_process(wd->slider);
++=======
++>>>>>>> remotes/origin/upstream
}
static void
_drag_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
_val_fetch(data);
evas_object_smart_callback_call(data, SIG_DRAG_STOP, NULL);
_units_set(data);
static void
_drag_step(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
_val_fetch(data);
_units_set(data);
_indicator_set(data);
{
double step;
Widget_Data *wd;
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(data);
step = 0.05;
{
double step;
Widget_Data *wd;
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(data);
step = -0.05;
Evas_Event_Mouse_Down *ev = event_info;
Evas_Coord x, y, w, h;
double button_x = 0.0, button_y = 0.0;
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
++=======
++>>>>>>> remotes/origin/upstream
wd->spacer_down = EINA_TRUE;
wd->val2 = wd->val;
evas_object_geometry_get(wd->spacer, &x, &y, &w, &h);
wd->downx = ev->canvas.x - x;
wd->downy = ev->canvas.y - y;
++<<<<<<< HEAD
+ edje_object_part_drag_value_get(wd->slider, "elm.dragable.slider", &button_x, &button_y);
++=======
++>>>>>>> remotes/origin/upstream
if (wd->horizontal)
{
button_x = ((double)ev->canvas.x - (double)x) / (double)w;
_units_set(data);
_indicator_set(data);
edje_object_signal_emit(wd->slider, "elm,state,indicator,show", "elm");
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->slider, "elm,state,drag", "elm");
+ edje_object_message_signal_process(wd->slider);
++=======
++>>>>>>> remotes/origin/upstream
}
static void
{
Widget_Data *wd = elm_widget_data_get(data);
Evas_Event_Mouse_Move *ev = event_info;
++<<<<<<< HEAD
+ Evas_Coord x, y, w, h, d = 0;
+ double button_x = 0.0, button_y = 0.0;
+ if (elm_widget_disabled_get(data)) return;
+
+ if (wd->spacer_down)
+ {
++=======
+ Evas_Coord x, y, w, h;
+ double button_x = 0.0, button_y = 0.0;
+
+ if (wd->spacer_down)
+ {
+ Evas_Coord d = 0;
+
++>>>>>>> remotes/origin/upstream
evas_object_geometry_get(wd->spacer, &x, &y, &w, &h);
if (wd->horizontal) d = abs(ev->cur.canvas.x - x - wd->downx);
else d = abs(ev->cur.canvas.y - y - wd->downy);
if (!wd->frozen)
{
elm_widget_scroll_freeze_push(data);
++<<<<<<< HEAD
+ wd->frozen = EINA_TRUE;
+ }
+ ev->event_flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
+ }
+
++=======
+ wd->frozen = 1;
+ }
+ ev->event_flags &= ~EVAS_EVENT_FLAG_ON_HOLD;
+ }
+
++>>>>>>> remotes/origin/upstream
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
if (wd->spacer_down) wd->spacer_down = EINA_FALSE;
if (wd->frozen)
{
elm_widget_scroll_freeze_pop(data);
++<<<<<<< HEAD
+ wd->frozen = EINA_FALSE;
++=======
+ wd->frozen = 0;
++>>>>>>> remotes/origin/upstream
}
edje_object_signal_emit(wd->slider, "elm,state,indicator,hide", "elm");
elm_slider_value_set(data, wd->val2);
_val_fetch(data);
_units_set(data);
_indicator_set(data);
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->slider, "elm,state,drag", "elm");
+ edje_object_message_signal_process(wd->slider);
++=======
++>>>>>>> remotes/origin/upstream
}
}
_spacer_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
Widget_Data *wd = elm_widget_data_get(data);
++<<<<<<< HEAD
+ if (elm_widget_disabled_get(data)) return;
+ if (!wd->spacer_down) return;
+
+ wd->spacer_down = EINA_FALSE;
++=======
+
+ if (!wd->spacer_down) return;
+ if (wd->spacer_down) wd->spacer_down = EINA_FALSE;
++>>>>>>> remotes/origin/upstream
_val_fetch(data);
evas_object_smart_callback_call(data, SIG_DRAG_STOP, NULL);
_units_set(data);
if (wd->frozen)
{
elm_widget_scroll_freeze_pop(data);
++<<<<<<< HEAD
+ wd->frozen = EINA_FALSE;
++=======
+ wd->frozen = 0;
++>>>>>>> remotes/origin/upstream
}
edje_object_signal_emit(wd->slider, "elm,state,indicator,hide", "elm");
}
{
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
if (!wd) return NULL;
if (!wd->labels) return NULL;
wd->val = val;
if (wd->val < wd->val_min) wd->val = wd->val_min;
if (wd->val > wd->val_max) wd->val = wd->val_max;
++<<<<<<< HEAD
+ edje_object_signal_emit(wd->slider, "elm,state,drag", "elm");
++=======
++>>>>>>> remotes/origin/upstream
_val_set(obj);
_units_set(obj);
_indicator_set(obj);
* @image html img/widget/slider/preview-00.png
* @image latex img/widget/slider/preview-00.eps width=\textwidth
*
++<<<<<<< HEAD
+ * The slider adds a dragable “slider” widget for selecting the value of
++=======
+ * The slider adds a draggable “slider” widget for selecting the value of
++>>>>>>> remotes/origin/upstream
* something within a range.
*
* A slider can be horizontal or vertical. It can contain an Icon and has a
* Available styles for it:
* - @c "default"
*
++<<<<<<< HEAD
+ * Default contents parts of the slider widget that you can use for are:
+ * @li "icon" - An icon of the slider
+ * @li "end" - A end part content of the slider
+ *
+ * Default text parts of the silder widget that you can use for are:
+ * @li "default" - Label of the silder
++=======
+ * Default content parts of the slider widget that you can use for are:
+ * @li "icon" - An icon of the slider
+ * @li "end" - A end part content of the slider
+ *
+ * Default text parts of the slider widget that you can use for are:
+ * @li "default" - Label of the slider
++>>>>>>> remotes/origin/upstream
*
* Supported elm_object common APIs.
* @li elm_object_disabled_set
* Get the minimum and maximum values of the slider.
*
* @param obj The slider object.
++<<<<<<< HEAD
+ * @param min Pointer where to store the minimum value.
+ * @param max Pointer where to store the maximum value.
++=======
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
++>>>>>>> remotes/origin/upstream
*
* @note If only one value is needed, the other pointer can be passed
* as @c NULL.
#include "elm_priv.h"
typedef struct _Widget_Data Widget_Data;
++<<<<<<< HEAD
+
++=======
++>>>>>>> remotes/origin/upstream
typedef struct _Elm_Slideshow_Item Elm_Slideshow_Item;
struct _Elm_Slideshow_Item
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+
+ Elm_Slideshow_Item *item = (Elm_Slideshow_Item *) it;
++=======
+ Elm_Slideshow_Item *item = (Elm_Slideshow_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
{
l2 = eina_list_prev(l);
if (l2)
++<<<<<<< HEAD
+ elm_slideshow_show(eina_list_data_get(l2));
+
+ }
+ else
+ elm_slideshow_show(eina_list_data_get(l2));
++=======
+ elm_slideshow_item_show(eina_list_data_get(l2));
+
+ }
+ else
+ elm_slideshow_item_show(eina_list_data_get(l2));
++>>>>>>> remotes/origin/upstream
}
wd->items = eina_list_remove_list(wd->items, item->l);
wd->items = eina_list_merge(wd->items, item->l);
++<<<<<<< HEAD
+ if (!wd->current) elm_slideshow_show((Elm_Object_Item *) item);
+
+ return (Elm_Object_Item *) item;
++=======
+ if (!wd->current) elm_slideshow_item_show((Elm_Object_Item *)item);
+
+ return (Elm_Object_Item *)item;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item*
wd->items = eina_list_sorted_merge(wd->items, item->l, func);
++<<<<<<< HEAD
+ if (!wd->current) elm_slideshow_show((Elm_Object_Item *) item);
+
+ return (Elm_Object_Item *) item;
+}
+
+EAPI void
+elm_slideshow_show(Elm_Object_Item *it)
++=======
+ if (!wd->current) elm_slideshow_item_show((Elm_Object_Item *)item);
+
+ return (Elm_Object_Item *)item;
+ }
+
+ EAPI void
+ elm_slideshow_item_show(Elm_Object_Item *it)
++>>>>>>> remotes/origin/upstream
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
char buf[1024];
Elm_Slideshow_Item *item, *next = NULL;
Widget_Data *wd;
++<<<<<<< HEAD
+ item = (Elm_Slideshow_Item *) it;
++=======
+ item = (Elm_Slideshow_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return;
if (item == wd->current) return;
evas_object_smart_callback_call(WIDGET(item), SIG_CHANGED, wd->current);
}
++<<<<<<< HEAD
++=======
+ EINA_DEPRECATED EAPI void
+ elm_slideshow_show(Elm_Object_Item *it)
+ {
+ elm_slideshow_item_show(it);
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_slideshow_next(Evas_Object *obj)
{
struct _Elm_Slideshow_Item_Class
{
struct _Elm_Slideshow_Item_Class_Func
++<<<<<<< HEAD
+ {
+ SlideshowItemGetFunc get;
+ SlideshowItemDelFunc del;
+ } func;
++=======
+ {
+ SlideshowItemGetFunc get;
+ SlideshowItemDelFunc del;
+ } func;
++>>>>>>> remotes/origin/upstream
}; /**< #Elm_Slideshow_Item_Class member definitions */
/**
*
* @ingroup Slideshow
*/
++<<<<<<< HEAD
+EAPI void elm_slideshow_show(Elm_Object_Item *it);
++=======
+ EAPI void elm_slideshow_item_show(Elm_Object_Item *it);
++>>>>>>> remotes/origin/upstream
/**
* Slide to the @b next item, in a given slideshow widget
* @warning The stringshared strings get no new references
* exclusive to the user grabbing the list, here, so if you'd like
* to use them out of this call's context, you'd better @c
++<<<<<<< HEAD
+ * eina_stringshare_ref() them.
++=======
+ * eina_stringshare_ref() them. Also the list is an internal list and
+ * so is only valid for as long as the slideshow object is valid and
+ * has not internally changed its list for some reason, so make a
+ * copy if you need it around.
++>>>>>>> remotes/origin/upstream
*
* @see elm_slideshow_transition_set()
*
* Get the real Evas object created to implement the view of a
* given slideshow item
*
++<<<<<<< HEAD
+ * @param item The slideshow item.
++=======
+ * @param it The slideshow item.
++>>>>>>> remotes/origin/upstream
* @return the Evas object implementing this item's view.
*
* This returns the actual Evas object used to implement the
*
* The available layouts for slideshows on the default theme are:
* - @c "fullscreen" - item images with original aspect, scaled to
++<<<<<<< HEAD
+ * touch top and down slideshow borders or, if the image's heigh
++=======
+ * touch top and down slideshow borders or, if the image's height
++>>>>>>> remotes/origin/upstream
* is not enough, left and right slideshow borders.
* - @c "not_fullscreen" - the same behavior as the @c "fullscreen"
* one, but always leaving 10% of the slideshow's dimensions of
{
Evas_Object *spinner, *ent;
const char *label;
++<<<<<<< HEAD
+ double val, val_min, val_max, orig_val, step;
+ double drag_start_pos, spin_speed, interval, first_interval;
++=======
+ double val, val_min, val_max, orig_val, step, base;
+ double drag_start_pos, spin_speed, interval, first_interval;
+ int round;
++>>>>>>> remotes/origin/upstream
Ecore_Timer *delay, *spin;
Eina_List *special_values;
Eina_Bool wrap : 1;
Elm_Spinner_Special_Value *sv;
Widget_Data *wd = elm_widget_data_get(obj);
char buf[1024];
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
if (!wd) return;
EINA_LIST_FOREACH(wd->special_values, l, sv)
{
}
static Eina_Bool
++<<<<<<< HEAD
+_value_set(Evas_Object *obj, double delta)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ double new_val;
+ if (!wd) return EINA_FALSE;
+ new_val = wd->val + delta;
++=======
+ _value_set(Evas_Object *obj, double new_val)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd) return EINA_FALSE;
+
+ if (wd->round > 0)
+ new_val = wd->base +
+ (double)((((int)(new_val - wd->base)) / wd->round) * wd->round);
+
++>>>>>>> remotes/origin/upstream
if (wd->wrap)
{
while (new_val < wd->val_min)
if (wd->entry_visible) return;
edje_object_part_drag_value_get(wd->spinner, "elm.dragable.slider",
&pos, NULL);
++<<<<<<< HEAD
+ offset = wd->step;
+ delta = (pos - wd->drag_start_pos) * offset;
+ /* If we are on rtl mode, change the delta to be negative on such changes */
+ if (elm_widget_mirrored_get(obj))
+ delta *= -1;
+ if (_value_set(data, delta)) _write_label(data);
+ wd->drag_start_pos = pos;
++=======
+
+ offset = wd->step * _elm_config->scale;
+ delta = (pos - wd->drag_start_pos) * offset;
+ /* If we are on rtl mode, change the delta to be negative on such changes */
+ if (elm_widget_mirrored_get(obj)) delta *= -1;
+ if (_value_set(data, wd->drag_start_pos + delta)) _write_label(data);
++>>>>>>> remotes/origin/upstream
wd->dragging = 1;
}
{
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return ECORE_CALLBACK_CANCEL;
++<<<<<<< HEAD
+ if (_value_set(data, wd->spin_speed)) _write_label(data);
++=======
+ if (_value_set(data, wd->val + wd->spin_speed)) _write_label(data);
++>>>>>>> remotes/origin/upstream
wd->interval = wd->interval / 1.05;
ecore_timer_interval_set(wd->spin, wd->interval);
return ECORE_CALLBACK_RENEW;
if (!wd) return 0.0;
return wd->first_interval;
}
++<<<<<<< HEAD
++=======
+
+ EAPI void
+ elm_spinner_base_set(Evas_Object *obj, double base)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->base = base;
+ }
+
+ EAPI double
+ elm_spinner_base_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0.0;
+ return wd->base;
+ }
+
+ EAPI void
+ elm_spinner_round_set(Evas_Object *obj, int rnd)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ wd->round = rnd;
+ }
+
+ EAPI int
+ elm_spinner_round_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) 0;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return 0;
+ return wd->round;
+ }
++>>>>>>> remotes/origin/upstream
* Get the minimum and maximum values of the spinner.
*
* @param obj The spinner object.
++<<<<<<< HEAD
+ * @param min Pointer where to store the minimum value.
+ * @param max Pointer where to store the maximum value.
++=======
+ * @param min Pointer to store the minimum value.
+ * @param max Pointer to store the maximum value.
++>>>>>>> remotes/origin/upstream
*
* @note If only one value is needed, the other pointer can be passed
* as @c NULL.
* Spinner objects can have edition @b disabled, in which state they will
* be changed only by arrows.
* Useful for contexts
++<<<<<<< HEAD
+ * where you don't want your users to interact with it writting the value.
++=======
+ * where you don't want your users to interact with it writing the value.
++>>>>>>> remotes/origin/upstream
* Specially
* when using special values, the user can see real value instead
* of special label on edition.
EAPI double elm_spinner_interval_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set the base for rounding
+ *
+ * @param obj The spinner object
+ * @param base The base value
+ *
+ * Rounding works as follows:
+ *
+ * rounded_val = base + (double)(((value - base) / round) * round)
+ *
+ * Where rounded_val, value and base are doubles, and round is an integer.
+ *
+ * This means that things will be rounded to increments (or decrements) of
+ * "round" starting from value @p base. The default base for rounding is 0.
+ *
+ * Example: round = 3, base = 2
+ * Values: 3, 6, 9, 12, 15, ...
+ *
+ * Example: round = 2, base = 5.5
+ * Values: 5.5, 7.5, 9.5, 11.5, ...
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_get() too.
+ *
+ * @ingroup Spinner
+ */
+ EAPI void elm_spinner_base_set(Evas_Object *obj, double base);
+
+ /**
+ * Get the base for rounding
+ *
+ * @param obj The spinner object
+ * @return The base rounding value
+ *
+ * This returns the base for rounding.
+ *
+ * @see elm_spinner_round_set() too.
+ * @see elm_spinner_base_set() too.
+ *
+ * @ingroup Spinner
+ */
+ EAPI double elm_spinner_base_get(const Evas_Object *obj);
+
+ /**
+ * Set the round value for rounding
+ *
+ * @param obj The spinner object
+ * @param rnd The rounding value
+ *
+ * Sets the rounding value used for value rounding in the spinner.
+ *
+ * @see elm_spinner_round_get()
+ * @see elm_spinner_base_set()
+ *
+ * @ingroup Spinner
+ */
+ EAPI void elm_spinner_round_set(Evas_Object *obj, int rnd);
+
+ /**
+ * Get the round value for rounding
+ *
+ * @param obj The spinner object
+ * @return The rounding value
+ *
+ * This returns the round value for rounding.
+ *
+ * @see elm_spinner_round_set() too.
+ * @see elm_spinner_base_set() too.
+ *
+ * @ingroup Spinner
+ */
+ EAPI int elm_spinner_round_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* @}
*/
#include <Elementary_Cursor.h>
#include "elm_priv.h"
++<<<<<<< HEAD
+#define ELM_STORE_MAGIC 0x3f89ea56
+#define ELM_STORE_FILESYSTEM_MAGIC 0x3f89ea57
+#define ELM_STORE_DBSYSTEM_MAGIC 0x3f89ea58
+#define ELM_STORE_ITEM_MAGIC 0x5afe8c1d
+#define CACHE_COUNT 1024
++=======
+ typedef struct _Elm_Store_Filesystem Elm_Store_Filesystem;
+ typedef struct _Elm_Store_Item_Filesystem Elm_Store_Item_Filesystem;
+
+ #define ELM_STORE_MAGIC 0x3f89ea56
+ #define ELM_STORE_FILESYSTEM_MAGIC 0x3f89ea57
+ #define ELM_STORE_ITEM_MAGIC 0x5afe8c1d
++>>>>>>> remotes/origin/upstream
struct _Elm_Store
{
Eina_List *realized;
int realized_count;
int cache_max;
++<<<<<<< HEAD
+ int item_count;
+ int type;
+ Eina_List *always_fetched;
++=======
++>>>>>>> remotes/origin/upstream
struct {
struct {
Elm_Store_Item_List_Cb func;
Elm_Store_Item_Unfetch_Cb func;
void *data;
} unfetch;
++<<<<<<< HEAD
+ struct {
+ Elm_Store_Item_Select_Cb func;
+ void *data;
+ } item_select;
+ struct {
+ Elm_Store_Item_Sort_Cb func;
+ void *data;
+ } item_sort;
+ struct {
+ Elm_Store_Item_Free_Cb func;
+ void *data;
+ } item_free;
+ } cb;
+ Eina_Bool sorted : 1;
+ Eina_Bool fetch_thread : 1;
+ Eina_Bool live : 1;
++=======
+ } cb;
+ Eina_Bool sorted : 1;
+ Eina_Bool fetch_thread : 1;
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item
EINA_INLIST;
EINA_MAGIC;
Elm_Store *store;
++<<<<<<< HEAD
+ Elm_Object_Item *item;
++=======
+ Elm_Object_Item *item;
++>>>>>>> remotes/origin/upstream
Ecore_Thread *fetch_th;
Ecore_Job *eval_job;
const Elm_Store_Item_Mapping *mapping;
void *data;
++<<<<<<< HEAD
+ Elm_Store_Item_Info *item_info;
+ Elm_Object_Item *first_item;
+ Elm_Object_Item *last_item;
++=======
++>>>>>>> remotes/origin/upstream
Eina_Lock lock;
Eina_Bool live : 1;
Eina_Bool was_live : 1;
const char *path;
};
++<<<<<<< HEAD
+struct _Elm_Store_DBsystem
+{
+ Elm_Store base;
+ EINA_MAGIC;
+ void *p_db;
+};
+
+typedef enum
+{
+ ELM_STORE_ITEM_SORT_LOW = -1,
+ ELM_STORE_ITEM_SORT_SAME = 0,
+ ELM_STORE_ITEM_SORT_HIGH = 1,
+ ELM_STORE_ITEM_SORT_UNKNOWN = 2,
+ ELM_STORE_ITEM_SORT_LAST
+} Elm_Store_Item_Sort_Type;
+
static Elm_Genlist_Item_Class _store_item_class;
+static void _item_del(void *data, Evas_Object *obj __UNUSED__);
+static void _item_realized(void *data, Evas_Object *obj __UNUSED__, void *event_info);
+static void _item_unrealized(void *data, Evas_Object *obj __UNUSED__, void *event_info);
+static void _genlist_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);
+
++=======
++static Elm_Genlist_Item_Class _store_item_class;
++
++>>>>>>> remotes/origin/upstream
static void
_store_cache_trim(Elm_Store *st)
{
eina_lock_take(&sti->lock);
}
sti->fetched = EINA_FALSE;
++<<<<<<< HEAD
+ eina_lock_release(&sti->lock);
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti, NULL);
+ eina_lock_take(&sti->lock);
++=======
+ //// let fetch/unfetch do the locking
+ // eina_lock_release(&sti->lock);
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti);
+ // eina_lock_take(&sti->lock);
++>>>>>>> remotes/origin/upstream
sti->data = NULL;
eina_lock_release(&sti->lock);
}
sti->fetch_th = NULL;
}
if (sti->store->item.free) sti->store->item.free(sti);
++<<<<<<< HEAD
+ if (sti->data)
+ {
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti, NULL);
+ sti->data = NULL;
+ }
++=======
+ eina_lock_take(&sti->lock);
+ if (sti->data)
+ {
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti);
+ sti->data = NULL;
+ }
+ eina_lock_release(&sti->lock);
++>>>>>>> remotes/origin/upstream
eina_lock_free(&sti->lock);
st->items = NULL;
free(sti);
}
if (!sti->fetched)
{
++<<<<<<< HEAD
+ eina_lock_release(&sti->lock);
+ if (sti->store->cb.fetch.func)
+ sti->store->cb.fetch.func(sti->store->cb.fetch.data, sti, NULL);
+ eina_lock_take(&sti->lock);
++=======
+ //// let fetch/unfetch do the locking
+ // eina_lock_release(&sti->lock);
+ if (sti->store->cb.fetch.func)
+ sti->store->cb.fetch.func(sti->store->cb.fetch.data, sti);
+ // eina_lock_take(&sti->lock);
++>>>>>>> remotes/origin/upstream
sti->fetched = EINA_TRUE;
}
eina_lock_release(&sti->lock);
{
Elm_Store_Item *sti = data;
eina_lock_take(&sti->lock);
++<<<<<<< HEAD
+ if (sti->data) elm_genlist_item_update((Elm_Object_Item *) sti->item);
++=======
+ if (sti->data) elm_genlist_item_update(sti->item);
++>>>>>>> remotes/origin/upstream
eina_lock_release(&sti->lock);
if (th == sti->fetch_th) sti->fetch_th = NULL;
}
Elm_Store_Item *sti = data;
eina_lock_take(&sti->lock);
if (th == sti->fetch_th) sti->fetch_th = NULL;
++<<<<<<< HEAD
+ if (sti->data) elm_genlist_item_update((Elm_Object_Item *) sti->item);
++=======
+ if (sti->data) elm_genlist_item_update(sti->item);
++>>>>>>> remotes/origin/upstream
eina_lock_release(&sti->lock);
}
{
Elm_Store *st = data;
Elm_Object_Item *gli = event_info;
++<<<<<<< HEAD
+ Elm_Store_Item *sti = (Elm_Store_Item *) elm_genlist_item_data_get(gli);
++=======
+ Elm_Store_Item *sti = elm_object_item_data_get(gli);
++>>>>>>> remotes/origin/upstream
if (!sti) return;
st->realized_count++;
sti->live = EINA_TRUE;
{
Elm_Store *st = data;
Elm_Object_Item *gli = event_info;
++<<<<<<< HEAD
+ Elm_Store_Item *sti = (Elm_Store_Item *) elm_genlist_item_data_get(gli);
++=======
+ Elm_Store_Item *sti = elm_object_item_data_get(gli);
++>>>>>>> remotes/origin/upstream
if (!sti) return;
st->realized_count--;
sti->live = EINA_FALSE;
m->details.icon.h);
elm_icon_smooth_set(ic, m->details.icon.smooth);
elm_icon_no_scale_set(ic, m->details.icon.no_scale);
++<<<<<<< HEAD
+ elm_icon_scale_set(ic,
++=======
+ elm_icon_resizable_set(ic,
++>>>>>>> remotes/origin/upstream
m->details.icon.scale_up,
m->details.icon.scale_down);
if (s)
if (!itc) itc = &_store_item_class;
else
{
++<<<<<<< HEAD
+ itc->func.text_get = (GenlistItemTextGetFunc)_store_item_text_get;
+ itc->func.content_get = (GenlistItemContentGetFunc)_store_item_content_get;
+ itc->func.state_get = NULL; // FIXME: support state gets later
+ itc->func.del = (GenlistItemDelFunc)_store_item_del;
++=======
+ itc->func.text_get = _store_item_text_get;
+ itc->func.content_get = _store_item_content_get;
+ itc->func.state_get = NULL; // FIXME: support state gets later
+ itc->func.del = _store_item_del;
++>>>>>>> remotes/origin/upstream
}
// FIXME: handle being a parent (tree)
eina_magic_string_set(ELM_STORE_ITEM_MAGIC, "Elm_Store_Item");
// setup default item class (always the same) if list cb doesnt provide one
_store_item_class.item_style = "default";
++<<<<<<< HEAD
+ _store_item_class.func.text_get = (GenlistItemTextGetFunc)_store_item_text_get;
+ _store_item_class.func.content_get = (GenlistItemContentGetFunc)_store_item_content_get;
+ _store_item_class.func.state_get = NULL; // FIXME: support state gets later
+ _store_item_class.func.del = (GenlistItemDelFunc)_store_item_del;
++=======
+ _store_item_class.func.text_get = _store_item_text_get;
+ _store_item_class.func.content_get = _store_item_content_get;
+ _store_item_class.func.state_get = NULL; // FIXME: support state gets later
+ _store_item_class.func.del = _store_item_del;
++>>>>>>> remotes/origin/upstream
// TODO: END - move to elm_store_init()
EINA_MAGIC_SET(st, ELM_STORE_MAGIC);
st->cache_max = 128;
st->fetch_thread = EINA_TRUE;
++<<<<<<< HEAD
+ st->type = 0;
++=======
++>>>>>>> remotes/origin/upstream
return st;
}
#define elm_store_new(type) (type*)_elm_store_new(sizeof(type))
ecore_thread_cancel(st->list_th);
st->list_th = NULL;
}
++<<<<<<< HEAD
+
+ if (!st->type)
+ {
+ eina_list_free(st->realized);
+ item_free = st->item.free;
+ while (st->items)
+ {
+ Elm_Store_Item *sti = (Elm_Store_Item *)st->items;
+ if (sti->eval_job) ecore_job_del(sti->eval_job);
+ if (sti->fetch_th)
+ {
+ ecore_thread_cancel(sti->fetch_th);
+ sti->fetch_th = NULL;
+ }
+ if (item_free) item_free(sti);
+ if (sti->data)
+ {
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti, NULL);
+ sti->data = NULL;
+ }
+ eina_lock_free(&sti->lock);
+ free(sti);
+ }
+ if (st->genlist)
+ {
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _store_genlist_item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _store_genlist_item_unrealized);
+ elm_genlist_clear(st->genlist);
+ st->genlist = NULL;
+ }
+ if (st->free) st->free(st);
+ }
+ else
+ {
+ if (st->genlist)
+ {
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _item_unrealized);
+ elm_genlist_clear(st->genlist);
+ st->genlist = NULL;
+ }
+ while (st->always_fetched)
+ {
+ Elm_Store_Item *sti = eina_list_data_get(st->always_fetched);
+ Eina_List *find = NULL;
+ find = eina_list_data_find_list(st->always_fetched, sti);
+ if (find)
+ {
+ st->always_fetched = eina_list_remove_list(st->always_fetched, find);
+ _item_del(sti,NULL);
+ }
+ }
+ st->always_fetched = eina_list_free(st->always_fetched);
+ st->realized = eina_list_free(st->realized);
+ if (st->free) st->free(st);
+ st->live = EINA_FALSE;
+ }
++=======
+ eina_list_free(st->realized);
+ item_free = st->item.free;
+ while (st->items)
+ {
+ Elm_Store_Item *sti = (Elm_Store_Item *)st->items;
+ if (sti->eval_job) ecore_job_del(sti->eval_job);
+ if (sti->fetch_th)
+ {
+ ecore_thread_cancel(sti->fetch_th);
+ sti->fetch_th = NULL;
+ }
+ if (item_free) item_free(sti);
+ eina_lock_take(&sti->lock);
+ if (sti->data)
+ {
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti);
+ sti->data = NULL;
+ }
+ eina_lock_release(&sti->lock);
+ eina_lock_free(&sti->lock);
+ free(sti);
+ }
+ if (st->genlist)
+ {
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _store_genlist_item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _store_genlist_item_unrealized);
+ elm_genlist_clear(st->genlist);
+ st->genlist = NULL;
+ }
+ if (st->free) st->free(st);
++>>>>>>> remotes/origin/upstream
free(st);
}
if (st->genlist == obj) return;
if (st->genlist)
{
++<<<<<<< HEAD
+ if (!st->type)
+ {
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _store_genlist_item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _store_genlist_item_unrealized);
+ }
+ else
+ {
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _item_unrealized);
+ }
++=======
+ evas_object_event_callback_del_full(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
+ evas_object_smart_callback_del(st->genlist, "realized", _store_genlist_item_realized);
+ evas_object_smart_callback_del(st->genlist, "unrealized", _store_genlist_item_unrealized);
++>>>>>>> remotes/origin/upstream
elm_genlist_clear(st->genlist);
}
st->genlist = obj;
if (!st->genlist) return;
++<<<<<<< HEAD
+ if (!st->type)
+ {
+ evas_object_smart_callback_add(st->genlist, "realized", _store_genlist_item_realized, st);
+ evas_object_smart_callback_add(st->genlist, "unrealized", _store_genlist_item_unrealized, st);
+ evas_object_event_callback_add(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
+ }
+ else
+ {
+ evas_object_smart_callback_add(st->genlist, "realized", _item_realized, st);
+ evas_object_smart_callback_add(st->genlist, "unrealized", _item_unrealized, st);
+ evas_object_event_callback_add(st->genlist, EVAS_CALLBACK_DEL, _genlist_del, st);
+ }
++=======
+ evas_object_smart_callback_add(st->genlist, "realized", _store_genlist_item_realized, st);
+ evas_object_smart_callback_add(st->genlist, "unrealized", _store_genlist_item_unrealized, st);
+ evas_object_event_callback_add(st->genlist, EVAS_CALLBACK_DEL, _store_genlist_del, st);
++>>>>>>> remotes/origin/upstream
elm_genlist_clear(st->genlist);
}
if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
if (max < 0) max = 0;
st->cache_max = max;
++<<<<<<< HEAD
+ if(!st->type) _store_cache_trim(st);
++=======
+ _store_cache_trim(st);
++>>>>>>> remotes/origin/upstream
}
EAPI int
elm_store_item_data_set(Elm_Store_Item *sti, void *data)
{
if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
++<<<<<<< HEAD
+ eina_lock_take(&sti->lock);
+ sti->data = data;
+ eina_lock_release(&sti->lock);
++=======
+ //// let fetch/unfetch do the locking
+ // eina_lock_take(&sti->lock);
+ sti->data = data;
+ // eina_lock_release(&sti->lock);
++>>>>>>> remotes/origin/upstream
}
EAPI void *
{
if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return NULL;
void *d;
++<<<<<<< HEAD
+ eina_lock_take(&sti->lock);
+ d = sti->data;
+ eina_lock_release(&sti->lock);
++=======
+ //// let fetch/unfetch do the locking
+ // eina_lock_take(&sti->lock);
+ d = sti->data;
+ // eina_lock_release(&sti->lock);
++>>>>>>> remotes/origin/upstream
return d;
}
// dont need lock
return sti->path;
}
++<<<<<<< HEAD
+
+// TODO: BEGIN -DBsystem store
+
+static const Elm_Store_Item_Mapping *
+_item_mapping_find(Elm_Store_Item *sti, const char *part)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return NULL;
+ const Elm_Store_Item_Mapping *m;
+
+ if (!sti->item_info) return NULL;
+
+ for (m = sti->item_info->mapping; m; m++)
+ {
+ if (m->type == ELM_STORE_ITEM_MAPPING_NONE) break;
+ if (!strcmp(part, m->part)) return m;
+ }
+ return NULL;
+}
+
+static char *
+_item_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part)
+{
+ Elm_Store_Item *sti = data;
+ Elm_Store *st = sti->store;
+ if (st->live)
+ {
+ eina_lock_take(&sti->lock);
+ if (sti->data)
+ {
+ const char *s = "";
+ const Elm_Store_Item_Mapping *m = _item_mapping_find(sti, part);
+ if (m)
+ {
+ switch (m->type)
+ {
+ case ELM_STORE_ITEM_MAPPING_LABEL:
+ eina_lock_release(&sti->lock);
+ s = *(char **)(((unsigned char *)sti->data) + m->offset);
+ eina_lock_take(&sti->lock);
+ break;
+
+ case ELM_STORE_ITEM_MAPPING_CUSTOM:
+ if (m->details.custom.func)
+ {
+ eina_lock_release(&sti->lock);
+ s = m->details.custom.func(sti->data, sti, part);
+ eina_lock_take(&sti->lock);
+ }
+ break;
+
+ default:
+ break;
+ }
+ if (s)
+ {
+ eina_lock_release(&sti->lock);
+ return strdup(s);
+ }
+ else
+ {
+ eina_lock_release(&sti->lock);
+ return NULL;
+ }
+ }
+ }
+ else
+ {
+ const char *s = "";
+ const Elm_Store_Item_Mapping *m = _item_mapping_find(sti, part);
+ if (m->type == ELM_STORE_ITEM_MAPPING_CUSTOM)
+ {
+ if (m->details.custom.func)
+ {
+ eina_lock_release(&sti->lock);
+ s = m->details.custom.func(sti->item_info, sti, part);
+ eina_lock_take(&sti->lock);
+ }
+
+ if (s)
+ {
+ eina_lock_release(&sti->lock);
+ return strdup(s);
+ }
+ else
+ {
+ eina_lock_release(&sti->lock);
+ return NULL;
+ }
+ }
+ eina_lock_release(&sti->lock);
+ return NULL;
+ /*
+ if (!strcmp(part, "elm.text.1"))
+ {
+ eina_lock_release(&sti->lock);
+ // elm_genlist_item_display_only_set(sti->item, EINA_TRUE);
+ return strdup("Loading..");
+ }
+ */
+ }
+ eina_lock_release(&sti->lock);
+ }
+ return NULL;
+}
+
+static Evas_Object *
+_item_content_get(void *data, Evas_Object *obj, const char *part)
+{
+ Elm_Store_Item *sti = data;
+ Elm_Store *st = sti->store;
+
+ if (st->live && sti->item)
+ {
+ eina_lock_take(&sti->lock);
+ if (sti->data)
+ {
+ const Elm_Store_Item_Mapping *m = _item_mapping_find(sti, part);
+ if (m)
+ {
+ Evas_Object *ic = NULL;
+ const char *s = NULL;
+
+ switch (m->type)
+ {
+ case ELM_STORE_ITEM_MAPPING_ICON:
+ ic = elm_icon_add(obj);
+ s = *(char **)(((unsigned char *)sti->data) + m->offset);
+ elm_icon_order_lookup_set(ic, m->details.icon.lookup_order);
+ evas_object_size_hint_aspect_set(ic,
+ EVAS_ASPECT_CONTROL_VERTICAL,
+ m->details.icon.w,
+ m->details.icon.h);
+ elm_icon_smooth_set(ic, m->details.icon.smooth);
+ elm_icon_no_scale_set(ic, m->details.icon.no_scale);
+ elm_icon_scale_set(ic,
+ m->details.icon.scale_up,
+ m->details.icon.scale_down);
+
+ if (s)
+ {
+ if (m->details.icon.standard_name)
+ elm_icon_standard_set(ic, s);
+ else
+ elm_icon_file_set(ic, s, NULL);
+ }
+ break;
+
+ case ELM_STORE_ITEM_MAPPING_PHOTO:
+ ic = elm_icon_add(obj);
+ s = *(char **)(((unsigned char *)sti->data) + m->offset);
+ elm_photo_size_set(ic, m->details.photo.size);
+ if (s)
+ elm_photo_file_set(ic, s);
+ break;
+
+ case ELM_STORE_ITEM_MAPPING_CUSTOM:
+ if (m->details.custom.func)
+ ic = m->details.custom.func(sti->data, sti, part);
+ break;
+
+ default:
+ break;
+ }
+ eina_lock_release(&sti->lock);
+ return ic;
+ }
+ }
+ eina_lock_release(&sti->lock);
+ }
+ return NULL;
+}
+
+static Elm_Store *
+_store_init(size_t size)
+{
+ Elm_Store *st = calloc(1, size);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(st, NULL);
+
+ eina_magic_string_set(ELM_STORE_MAGIC, "Elm_Store");
+ eina_magic_string_set(ELM_STORE_ITEM_MAGIC, "Elm_Store_Item");
+ eina_magic_string_set(ELM_STORE_DBSYSTEM_MAGIC, "Elm_Store_DBsystem");
+
+ _store_item_class.item_style = "default";
+ _store_item_class.func.text_get = (GenlistItemTextGetFunc)_item_text_get;
+ _store_item_class.func.content_get = (GenlistItemContentGetFunc)_item_content_get;
+ _store_item_class.func.state_get = NULL;
+ _store_item_class.func.del = NULL;
+
+ EINA_MAGIC_SET(st, ELM_STORE_MAGIC);
+ st->cache_max = CACHE_COUNT;
+ st->live = EINA_TRUE;
+ st->fetch_thread = EINA_FALSE;
+ st->type = 1;
+ return st;
+}
+
+#define _store_new(type) (type *)_store_init(sizeof(type))
+
+static void
+_genlist_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Elm_Store *st = data;
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+
+ st->genlist = NULL;
+ if (st->list_th)
+ {
+ ecore_thread_cancel(st->list_th);
+ st->list_th = NULL;
+ }
+ st->realized = eina_list_free(st->realized);
+}
+
+static void
+_store_fetch_do(void *data, Ecore_Thread *th __UNUSED__)
+{
+ Elm_Store_Item *sti = data;
+
+ eina_lock_take(&sti->lock);
+ if (sti->data)
+ {
+ eina_lock_release(&sti->lock);
+ return;
+ }
+ if (!sti->fetched)
+ {
+ if (sti->item_info != NULL)
+ {
+ eina_lock_release(&sti->lock);
+ if (sti->store->cb.fetch.func)
+ sti->store->cb.fetch.func(sti->store->cb.fetch.data, sti, sti->item_info);
+ eina_lock_take(&sti->lock);
+ sti->fetched = EINA_TRUE;
+ }
+ }
+ eina_lock_release(&sti->lock);
+}
+
+static void
+_store_fetch_end(void *data, Ecore_Thread *th)
+{
+ Elm_Store_Item *sti = data;
+ eina_lock_take(&sti->lock);
+ if (sti->data) elm_genlist_item_update((Elm_Object_Item *) sti->item);
+ eina_lock_release(&sti->lock);
+ if (th == sti->fetch_th) sti->fetch_th = NULL;
+}
+
+static void
+_store_fetch_cancel(void *data, Ecore_Thread *th)
+{
+ Elm_Store_Item *sti = data;
+ eina_lock_take(&sti->lock);
+ if (th == sti->fetch_th) sti->fetch_th = NULL;
+ // if(sti->data) elm_genlist_item_update(sti->item);
+ eina_lock_release(&sti->lock);
+}
+
+static void
+_item_eval(void *data)
+{
+ Elm_Store_Item *sti = data;
+ if (!sti) return;
+ Elm_Store *st = sti->store;
+
+ if (sti->fetched == EINA_FALSE)
+ {
+ if (st->fetch_thread && !sti->fetch_th)
+ {
+ sti->fetch_th = ecore_thread_run(_store_fetch_do, _store_fetch_end, _store_fetch_cancel, sti);
+ }
+ else if (!st->fetch_thread)
+ {
+ _store_fetch_do(sti,NULL);
+ _store_fetch_end(sti,NULL);
+ }
+ }
+ else
+ {
+ eina_lock_take(&sti->lock);
+ if (!sti->fetched)
+ {
+ eina_lock_release(&sti->lock);
+ if (sti->fetch_th)
+ {
+ ecore_thread_cancel(sti->fetch_th);
+ sti->fetch_th = NULL;
+ }
+ eina_lock_take(&sti->lock);
+ }
+ sti->fetched = EINA_FALSE;
+ eina_lock_release(&sti->lock);
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti, sti->item_info);
+ eina_lock_take(&sti->lock);
+ sti->data = NULL;
+ eina_lock_release(&sti->lock);
+ }
+}
+
+static void
+_item_realize(void *data)
+{
+ Elm_Store_Item *sti = data;
+ Elm_Store *st = sti->store;
+ sti->eval_job = NULL;
+ if (st->live)
+ {
+ Eina_List *find = NULL;
+ find = eina_list_data_find_list(st->always_fetched, sti);
+ if (find) return;
+
+ find = eina_list_data_find_list(st->realized,sti);
+ if (find)
+ {
+ Elm_Store_Item *realized_sti = NULL;
+ realized_sti = eina_list_data_get(find);
+ st->realized = eina_list_remove_list(st->realized, find);
+ _item_eval(realized_sti);
+ }
+ if (st->realized)
+ {
+ if ((int)eina_list_count(st->realized) == st->cache_max)
+ {
+ Elm_Store_Item *realized_sti = NULL;
+ Eina_List *last = eina_list_last(st->realized);
+ realized_sti = eina_list_data_get(last);
+ st->realized = eina_list_remove_list(st->realized, last);
+ _item_eval(realized_sti);
+ }
+ }
+ st->realized = eina_list_prepend(st->realized, sti);
+ _item_eval(sti);
+ }
+}
+
+static void
+_item_job_add(Elm_Store_Item *sti)
+{
+ if (sti->eval_job) ecore_job_del(sti->eval_job);
+ sti->eval_job = ecore_job_add(_item_realize, sti);
+}
+
+static void
+_item_fetch(Elm_Store_Item *sti)
+{
+ Elm_Store *st = sti->store;
+
+ if (st->live)
+ {
+ eina_lock_take(&sti->lock);
+ if (!sti->fetched)
+ {
+ eina_lock_release(&sti->lock);
+ if (sti->fetch_th)
+ {
+ ecore_thread_cancel(sti->fetch_th);
+ sti->fetch_th = NULL;
+ }
+ eina_lock_take(&sti->lock);
+ }
+ if (sti->item_info != NULL)
+ {
+ eina_lock_release(&sti->lock);
+ if (sti->store->cb.fetch.func)
+ sti->store->cb.fetch.func(sti->store->cb.fetch.data, sti, sti->item_info);
+ eina_lock_take(&sti->lock);
+ sti->fetched = EINA_TRUE;
+ }
+ eina_lock_release(&sti->lock);
+ }
+}
+
+static void
+_item_unfetch(Elm_Store_Item *sti)
+{
+ EINA_SAFETY_ON_NULL_RETURN(sti);
+ Elm_Store *st = sti->store;
+
+ if (st->live)
+ {
+ eina_lock_take(&sti->lock);
+ if (!sti->fetched)
+ {
+ eina_lock_release(&sti->lock);
+ if (sti->fetch_th)
+ {
+ ecore_thread_cancel(sti->fetch_th);
+ sti->fetch_th = NULL;
+ }
+ eina_lock_take(&sti->lock);
+ }
+ sti->fetched = EINA_FALSE;
+ eina_lock_release(&sti->lock);
+ if (st->cb.unfetch.func)
+ st->cb.unfetch.func(st->cb.unfetch.data, sti, sti->item_info);
+ eina_lock_take(&sti->lock);
+ sti->data = NULL;
+ eina_lock_release(&sti->lock);
+ }
+}
+
+static void
+_item_realized(void *data , Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Store *st = data;
+ if (!st) return;
+ Elm_Object_Item *gli = event_info;
+ Elm_Store_Item *sti = elm_genlist_item_data_get(gli);
+ if (!sti) return;
+
+ if (st->live)
+ {
+ if (!sti->data) _item_job_add(sti);
+ }
+ // TODO:
+}
+
+static void
+_item_unrealized(void *data , Evas_Object *obj __UNUSED__, void *event_info)
+{
+ Elm_Store *st = data;
+ if (!st) return;
+ Elm_Object_Item *gli = event_info;
+ Elm_Store_Item *sti = elm_genlist_item_data_get(gli);
+ if (!sti) return;
+
+ if (st->live)
+ {
+ if (sti->eval_job)
+ {
+ ecore_job_del(sti->eval_job);
+ sti->eval_job = NULL;
+ }
+ }
+}
+
+static void
+_item_free(Elm_Store_Item *sti)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
+ Elm_Store *st = sti->store;
+ eina_lock_take(&sti->lock);
+ if (st->live && st->cb.item_free.func && sti->item_info)
+ {
+ eina_lock_release(&sti->lock);
+ st->cb.item_free.func(st->cb.item_free.data, sti->item_info);
+ eina_lock_take(&sti->lock);
+ sti->item_info = NULL;
+ }
+ eina_lock_release(&sti->lock);
+ eina_lock_take(&sti->lock);
+ free(sti);
+}
+
+static void
+_item_del(void *data, Evas_Object *obj __UNUSED__)
+{
+ Elm_Store_Item *sti = data;
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
+ Elm_Store *st = sti->store;
+
+ if (sti->eval_job)
+ {
+ ecore_job_del(sti->eval_job);
+ sti->eval_job = NULL;
+ }
+
+ Eina_List *find = NULL;
+ find = eina_list_data_find_list(st->always_fetched, sti);
+ if (find) return;
+
+ find = eina_list_data_find_list(st->realized,sti);
+ if (find)
+ {
+ Elm_Store_Item *realized_sti = NULL;
+ realized_sti = eina_list_data_get(find);
+ st->realized = eina_list_remove_list(st->realized, find);
+ }
+ if (sti->data) _item_unfetch(sti);
+ if (st->item.free) st->item.free(sti);
+}
+
+static void
+_list_do(void *data, Ecore_Thread *th)
+{
+ Elm_Store *st = data;
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+
+ Elm_Store_Item_Info *item_info;
+ Eina_Bool ok = EINA_FALSE;
+ int loop;
+ for (loop = 0; loop < st->item_count; loop++)
+ {
+ item_info = calloc(1, sizeof(Elm_Store_Item_Info));
+ if (!item_info) return;
+ item_info->index = loop;
+
+ if (st->cb.list.func) ok = st->cb.list.func(st->cb.list.data, item_info);
+ if (ok) ecore_thread_feedback(th, item_info);
+ else free(item_info);
+ if (ecore_thread_check(th)) break;
+ }
+}
+
+static void
+_list_update(void *data, Ecore_Thread *th __UNUSED__, void *msg)
+{
+ Elm_Store *st = data;
+ Elm_Store_Item_Info *info = msg;
+ elm_store_item_add(st, info);
+}
+
+static void
+_list_end(void *data, Ecore_Thread *th)
+{
+ Elm_Store *st = data;
+ if (th == st->list_th) st->list_th = NULL;
+}
+
+static void
+_list_cancel(void *data, Ecore_Thread *th)
+{
+ Elm_Store *st = data;
+ if (th == st->list_th) st->list_th = NULL;
+}
+
+static void
+_group_item_append(Elm_Store_Item *sti, Elm_Genlist_Item_Class *itc)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
+ Elm_Store *st = sti->store;
+ if (st->live)
+ {
+ if (st->always_fetched)
+ {
+ Eina_Bool group_existed = EINA_FALSE;
+ const Eina_List *l = st->always_fetched;
+ Elm_Store_Item *group_sti = eina_list_data_get(l);
+ while (!group_existed && group_sti)
+ {
+ if (group_sti->item_info->group_index == sti->item_info->group_index)
+ {
+ group_existed = EINA_TRUE;
+ break;
+ }
+ else
+ {
+ l = eina_list_next(l);
+ group_sti = eina_list_data_get(l);
+ }
+ }
+ if (group_existed) return; //Already existed the group item
+ }
+ st->always_fetched = eina_list_append(st->always_fetched, sti);
+ sti->realized = EINA_FALSE;
+ if (sti->data) _item_unfetch(sti);
+ _item_fetch(sti);
+
+ if (sti->item_info->group_index == -1)
+ {
+ sti->item = elm_genlist_item_append(st->genlist,
+ itc,
+ sti,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+ return;
+ }
+ }
+}
+
+static void
+_normal_item_append(Elm_Store_Item *sti, Elm_Genlist_Item_Class *itc)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
+ Elm_Store *st = sti->store;
+ if (st->live && sti->item_info)
+ {
+ Eina_Bool need_update = EINA_FALSE;
+ Eina_Bool group_existed = EINA_FALSE;
+ const Eina_List *l;
+
+ if (st->always_fetched)
+ {
+ if (sti->item_info->rec_item == EINA_TRUE)
+ {
+ if (sti->item_info->group_index != sti->item_info->pre_group_index)
+ {
+ if (sti->item_info->group_index < sti->item_info->pre_group_index)
+ {
+ Eina_Bool pre_group_existed = EINA_FALSE;
+ l = st->always_fetched;
+ Elm_Store_Item *pre_group_sti = eina_list_data_get(l);
+ while (!pre_group_existed && pre_group_sti)
+ {
+ if (pre_group_sti->item_info->pre_group_index == sti->item_info->pre_group_index)
+ {
+ pre_group_existed = EINA_TRUE;
+ break;
+ }
+ else
+ {
+ l = eina_list_next(l);
+ pre_group_sti = eina_list_data_get(l);
+ }
+ }
+ if (pre_group_sti && pre_group_sti->realized) // already added the header item to the genlist
+ {
+ Eina_Bool deleted = EINA_FALSE;
+ Eina_Bool last_item = EINA_FALSE;
+ Elm_Object_Item *comp_item = pre_group_sti->first_item;
+ while (!deleted && comp_item)
+ {
+ Elm_Store_Item *comp_sti = elm_genlist_item_data_get(comp_item);
+ if (comp_sti)
+ {
+ int sort = st->cb.item_sort.func(st->cb.item_sort.data, sti->item_info, comp_sti->item_info);
+ if(sort == ELM_STORE_ITEM_SORT_SAME)
+ {
+ elm_store_item_del(comp_sti);
+ deleted = EINA_TRUE;
+ break;
+ }
+ }
+ if (last_item) break;
+ else comp_item = elm_genlist_item_next_get(comp_item);
+
+ if (comp_item == pre_group_sti->last_item) last_item = EINA_TRUE;
+ }
+ if (!deleted) printf(" The item does not existed in the pre group of genlist \n");
+ }
+ else //Pre group item does not existed in the always fetched list or the genlist
+ {
+ Eina_Bool deleted = EINA_FALSE;
+ Elm_Object_Item *comp_item = elm_genlist_first_item_get(st->genlist);
+ while (!deleted && comp_item)
+ {
+ Elm_Store_Item *comp_sti = elm_genlist_item_data_get(comp_item);
+ if (comp_sti && sti->item_info->item_type == comp_sti->item_info->item_type)
+ {
+ int sort = st->cb.item_sort.func(st->cb.item_sort.data, sti->item_info, comp_sti->item_info);
+ if (sort == ELM_STORE_ITEM_SORT_SAME)
+ {
+ elm_store_item_del(comp_sti);
+ deleted = EINA_TRUE;
+ break;
+ }
+ }
+ comp_item = elm_genlist_item_next_get(comp_item);
+ }
+ if (!deleted) printf(" The item does not existed in the genlist \n");
+ }
+ }
+ else
+ {
+ sti->item_info->group_index = sti->item_info->pre_group_index;
+ need_update = EINA_TRUE;
+ }
+ }
+ else need_update = EINA_TRUE;
+ }
+ l = st->always_fetched;
+ Elm_Store_Item *group_sti = eina_list_data_get(l);
+ while (!group_existed && group_sti) // Search the group item of a normal item in the always_fetched list
+ {
+ if (group_sti->item_info->group_index == sti->item_info->group_index)
+ {
+ group_existed = EINA_TRUE;
+ break;
+ }
+ else
+ {
+ l = eina_list_next(l);
+ group_sti = eina_list_data_get(l);
+ }
+ }
+ if (group_sti)
+ {
+ if (group_sti->realized) // already added the header item to the genlist
+ {
+ Eina_Bool added = EINA_FALSE;
+ Elm_Object_Item *comp_item = group_sti->first_item;
+ while (!added && comp_item)
+ {
+ Elm_Store_Item *comp_sti = elm_genlist_item_data_get(comp_item);
+ if (comp_sti)
+ {
+ int sort = st->cb.item_sort.func(st->cb.item_sort.data, sti->item_info, comp_sti->item_info);
+ if (sort == ELM_STORE_ITEM_SORT_SAME)
+ {
+ if (need_update == EINA_TRUE) elm_store_item_update(comp_sti);
+ else added = EINA_TRUE;
+ break;
+ }
+ else if (sort == ELM_STORE_ITEM_SORT_LOW)
+ {
+ sti->item = elm_genlist_item_insert_before(st->genlist,
+ itc,
+ sti,
+ group_sti->item,
+ comp_item,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+
+ if (comp_item == group_sti->first_item) group_sti->first_item = sti->item;
+ added = EINA_TRUE;
+ break;
+ }
+
+ if (comp_item == group_sti->last_item) //To add the item in to the last of its group
+ {
+ need_update = EINA_FALSE;
+ break;
+ }
+ }
+ comp_item = elm_genlist_item_next_get(comp_item);
+ }
+ if (!added && !need_update)
+ {
+ Elm_Object_Item *last_item = group_sti->last_item;
+ if (last_item)
+ {
+ sti->item = elm_genlist_item_insert_after(st->genlist,
+ itc,
+ sti,
+ group_sti->item,
+ last_item,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+ group_sti->last_item = sti->item;
+ }
+ else printf(" Group item have no last item. so can not add a item to the genlist \n");
+ }
+ }
+ else // To add the header item in genlist, and compare with other header items along with callback func
+ {
+ Eina_Bool added = EINA_FALSE;
+ l = st->always_fetched;
+ Elm_Store_Item *comp_group_sti = eina_list_data_get(l);
+ while (!added && comp_group_sti)
+ {
+ if (comp_group_sti != group_sti && comp_group_sti->realized)
+ {
+ // Compare with group items
+ int sort = st->cb.item_sort.func(st->cb.item_sort.data, group_sti->item_info, comp_group_sti->item_info);
+ if(sort == ELM_STORE_ITEM_SORT_LOW)
+ {
+ group_sti->item = elm_genlist_item_insert_before(st->genlist,
+ group_sti->item_info->item_class,
+ group_sti,
+ NULL,
+ comp_group_sti->item,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+
+ group_sti->realized = EINA_TRUE;
+ sti->item = elm_genlist_item_insert_after(st->genlist,
+ itc,
+ sti,
+ group_sti->item,
+ group_sti->item,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+
+ group_sti->first_item = sti->item;
+ group_sti->last_item = sti->item;
+ added = EINA_TRUE;
+ break;
+ }
+ }
+ l = eina_list_next(l);
+ comp_group_sti = eina_list_data_get(l);
+ }
+ if (!comp_group_sti) // First item append in the genlist
+ {
+ group_sti->item = elm_genlist_item_append(st->genlist,
+ group_sti->item_info->item_class,
+ group_sti,
+ NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL, NULL);
+
+ group_sti->realized = EINA_TRUE;
+ sti->item = elm_genlist_item_append(st->genlist,
+ itc,
+ sti,
+ group_sti->item,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+
+ group_sti->first_item = sti->item;
+ group_sti->last_item = sti->item;
+ }
+ }
+ }
+ }
+ if (!group_existed) // No exist the group item of normal item, so it added without group.
+ {
+ Eina_Bool added = EINA_FALSE;
+ Elm_Object_Item *comp_item = elm_genlist_first_item_get(st->genlist);
+ while (!added && comp_item)
+ {
+ Elm_Store_Item *comp_sti = elm_genlist_item_data_get(comp_item);
+ if (comp_sti)
+ {
+ if (sti->item_info->item_type == comp_sti->item_info->item_type)
+ {
+ int sort = st->cb.item_sort.func(st->cb.item_sort.data, sti->item_info, comp_sti->item_info);
+ if (sort == ELM_STORE_ITEM_SORT_SAME)
+ {
+ if (sti->item_info->rec_item == EINA_TRUE)
+ {
+ elm_store_item_update(comp_sti);
+ need_update = EINA_TRUE;
+ }
+ else added = EINA_TRUE;
+ break;
+ }
+ else if (sort == ELM_STORE_ITEM_SORT_LOW)
+ {
+ sti->item = elm_genlist_item_insert_before(st->genlist,
+ itc,
+ sti,
+ NULL,
+ comp_item,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+
+ added = EINA_TRUE;
+ break;
+ }
+ }
+ }
+ comp_item = elm_genlist_item_next_get(comp_item);
+ if (comp_item == NULL) need_update = EINA_FALSE;
+ }
+ if (!added && !need_update)
+ {
+ sti->item = elm_genlist_item_append(st->genlist,
+ itc,
+ sti,
+ NULL,
+ ELM_GENLIST_ITEM_NONE,
+ (Evas_Smart_Cb)sti->store->cb.item_select.func,
+ (void *)sti->store->cb.item_select.data);
+ }
+ }
+ }
+}
+
+static void
+_store_free(Elm_Store *st)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+ Elm_Store_DBsystem *std = (Elm_Store_DBsystem *)st;
+ if(std->p_db) eina_stringshare_del(std->p_db);
+}
+
+/**
+ * Add a new dbsystem Store object
+ *
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Store
+ */
+EAPI Elm_Store *
+elm_store_dbsystem_new(void)
+{
+ Elm_Store_DBsystem *std = _store_new(Elm_Store_DBsystem);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(std, NULL);
+
+ EINA_MAGIC_SET(std, ELM_STORE_DBSYSTEM_MAGIC);
+ std->base.free = _store_free;
+ std->base.item.free = _item_free;
+ return &std->base;
+}
+
+/**
+ * Sets the item count of a store
+ *
+ * @param st The store object
+ * @param count The item count of an store
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_count_set(Elm_Store *st, int count)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+ st->item_count = count;
+}
+
+
+/**
+ * Set the select func that select the state of a list item whether true or false
+ *
+ * @param st The store object
+ * @param func The select cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+ st->cb.item_select.func = func;
+ st->cb.item_select.data = (void *)data;
+}
+
+/**
+ * Sets the sort func that sort the item with a next in the list
+ *
+ * @param st The store object
+ * @param func The sort cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+ st->cb.item_sort.func = func;
+ st->cb.item_sort.data = (void *)data;
+}
+
+/**
+ * Set the store item free func
+ *
+ * @param st The store object
+ * @param func The free cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+ st->cb.item_free.func = func;
+ st->cb.item_free.data = (void *)data;
+}
+
+/**
+ * Get the item index that included header items
+ *
+ * @param sti The store item object
+ * @return The item index in genlist
+ *
+ * @ingroup Store
+ */
+EAPI int
+elm_store_item_index_get(const Elm_Store_Item *sti)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return -1;
+ Elm_Store *st = sti->store;
+
+ if (st->live)
+ {
+ int index = 0;
+ if (st->genlist)
+ {
+ Elm_Object_Item *gen_item = elm_genlist_first_item_get(st->genlist);
+ while (gen_item)
+ {
+ Elm_Store_Item *item = elm_genlist_item_data_get(gen_item);
+ if (item == sti) return index;
+ gen_item = elm_genlist_item_next_get(gen_item);
+ index++;
+ }
+ }
+ }
+ return -1;
+}
+
+/**
+ * Get the item index of real data that don't included header items
+ *
+ * @param sti The store item object
+ * @return The real item index
+ *
+ * @ingroup Store
+ */
+EAPI int
+elm_store_item_data_index_get(const Elm_Store_Item *sti)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return -1;
+ Elm_Store *st = sti->store;
+
+ if (st->live)
+ {
+ int index = 0;
+ Elm_Object_Item *gen_item = elm_genlist_first_item_get(st->genlist);
+ while (gen_item)
+ {
+ Elm_Store_Item *item = elm_genlist_item_data_get(gen_item);
+ if (item && item->item_info->item_type != ELM_GENLIST_ITEM_GROUP)
+ {
+ if(item == sti) return index;
+ index++;
+ }
+ gen_item = elm_genlist_item_next_get(gen_item);
+ }
+ }
+ return -1;
+}
+
+/**
+ * Get the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @return The DB pointer of item
+ *
+ * @ingroup Store
+ */
+EAPI void *
+elm_store_dbsystem_db_get(const Elm_Store_Item *sti)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return NULL;
+
+ const Elm_Store_DBsystem *std = (const Elm_Store_DBsystem *)sti->store;
+ if (!EINA_MAGIC_CHECK(sti->store, ELM_STORE_MAGIC)) return NULL;
+ if (!EINA_MAGIC_CHECK(std, ELM_STORE_DBSYSTEM_MAGIC)) return NULL;
+ return std->p_db;
+}
+
+/**
+ * Set the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @parm p_db The DB pointer of item
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_dbsystem_db_set(Elm_Store *store, void *p_db)
+{
+ Elm_Store_DBsystem *std = (Elm_Store_DBsystem *)store;
+ if (!EINA_MAGIC_CHECK(store, ELM_STORE_MAGIC)) return;
+ if (!EINA_MAGIC_CHECK(std, ELM_STORE_DBSYSTEM_MAGIC)) return;
+ if (store->list_th)
+ {
+ ecore_thread_cancel(store->list_th);
+ store->list_th = NULL;
+ }
+ std->p_db = p_db;
+ store->list_th = ecore_thread_feedback_run(_list_do,
+ _list_update,
+ _list_end,
+ _list_cancel,
+ store, EINA_TRUE);
+}
+
+/**
+ * Append the item to the genlist
+ *
+ * @param st The store object
+ * @param info The store item info dbsystem object
+ * @return The item of store
+ *
+ * @ingroup Store
+ */
+EAPI Elm_Store_Item *
+elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return NULL;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(info, NULL);
+ Elm_Store_Item *sti;
+ Elm_Genlist_Item_Class *itc;
+
+ sti = calloc(1, sizeof(Elm_Store_Item));
+ if (!sti) return NULL;
+ eina_lock_new(&sti->lock);
+ EINA_MAGIC_SET(sti, ELM_STORE_ITEM_MAGIC);
+ sti->store = st;
+ sti->item_info = info;
+ sti->fetched = EINA_FALSE;
+
+ itc = info->item_class;
+ if (!itc) itc = &_store_item_class;
+ else
+ {
+ itc->func.text_get = (GenlistItemTextGetFunc)_item_text_get;
+ itc->func.content_get = (GenlistItemContentGetFunc)_item_content_get;
+ itc->func.state_get = NULL;
+ itc->func.del = (GenlistItemDelFunc)_item_del;
+ }
+
+ if (st->live)
+ {
+ if (sti->item_info->item_type == ELM_GENLIST_ITEM_GROUP) _group_item_append(sti, itc);
+ else _normal_item_append(sti, itc);
+ return sti;
+ }
+ else
+ {
+ free(sti);
+ return NULL;
+ }
+}
+
+/**
+ * Realize the visible items to the screen
+ *
+ * @param st The store object
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_visible_items_update(Elm_Store *st)
+{
+ if (!EINA_MAGIC_CHECK(st, ELM_STORE_MAGIC)) return;
+
+ Eina_List *realized_list = elm_genlist_realized_items_get(st->genlist);
+ Elm_Object_Item *item = eina_list_data_get(realized_list);
+ while (item)
+ {
+ Elm_Store_Item *realized_sti = elm_genlist_item_data_get(item);
+ elm_store_item_update(realized_sti);
+ realized_list = eina_list_next(realized_list);
+ item = eina_list_data_get(realized_list);
+ }
+}
+
+/**
+ * Realize the item to the screen
+ *
+ * @param sti The store item object
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_update(Elm_Store_Item *sti)
+{
+ Elm_Store *st = sti->store;
+
+ Eina_List *find = NULL;
+ find = eina_list_data_find_list(st->always_fetched, sti);
+ if (find)
+ {
+ if (sti->data) _item_unfetch(sti);
+ _item_fetch(sti);
+ if (sti->realized) elm_genlist_item_update(sti->item);
+ }
+ else
+ {
+ find = eina_list_data_find_list(st->realized,sti);
+ if (find) _item_realize(sti);
+ }
+}
+
+/**
+ * Delete the item of genlist
+ *
+ * @param sti The store item object
+ *
+ * @ingroup Store
+ */
+EAPI void
+elm_store_item_del(Elm_Store_Item *sti)
+{
+ if (!EINA_MAGIC_CHECK(sti, ELM_STORE_ITEM_MAGIC)) return;
+ Elm_Store *st = sti->store;
+
+ if (st->live)
+ {
+ Eina_List *find = NULL;
+ find = eina_list_data_find_list(st->always_fetched, sti);
+ if (find) st->always_fetched = eina_list_remove_list(st->always_fetched, find);
+
+ Eina_Bool deleted = EINA_FALSE;
+ Elm_Object_Item *comp_item = elm_genlist_first_item_get(st->genlist);
+ while (!deleted && comp_item)
+ {
+ Elm_Store_Item *comp_sti = elm_genlist_item_data_get(comp_item);
+ if (comp_sti && (sti == comp_sti))
+ {
+ Elm_Object_Item *group_item = elm_genlist_item_parent_get(comp_item);
+ if (group_item)
+ {
+ Elm_Store_Item *group_sti = elm_genlist_item_data_get(group_item);
+ if (group_sti)
+ {
+ if ((group_sti->first_item == comp_item) && (group_sti->last_item == comp_item))
+ {
+ group_sti->realized = EINA_FALSE;
+ group_sti->first_item = NULL;
+ group_sti->last_item = NULL;
+ elm_genlist_item_del(group_item);
+ }
+ else if ((group_sti->first_item == comp_item) && (group_sti->last_item != comp_item))
+ {
+ Elm_Object_Item *next_item = elm_genlist_item_next_get(comp_item);
+ group_sti->first_item = next_item;
+ }
+ else if ((group_sti->first_item != comp_item) && (group_sti->last_item == comp_item))
+ {
+ Elm_Object_Item *prev_item = elm_genlist_item_prev_get(comp_item);
+ group_sti->last_item = prev_item;
+ }
+ }
+ }
+ elm_genlist_item_del(comp_sti->item);
+ deleted = EINA_TRUE;
+ break;
+ }
+ comp_item = elm_genlist_item_next_get(comp_item);
+ }
+
+ if(!deleted) printf(" Not deleted because it does not existed in the genlist \n");
+ }
+}
+
+// TODO: END -DBsystem store
+
++=======
++>>>>>>> remotes/origin/upstream
++<<<<<<< HEAD
+typedef struct _Elm_Store Elm_Store;
+typedef struct _Elm_Store_DBsystem Elm_Store_DBsystem;
+typedef struct _Elm_Store_Filesystem Elm_Store_Filesystem;
+typedef struct _Elm_Store_Item Elm_Store_Item;
+typedef struct _Elm_Store_Item_DBsystem Elm_Store_Item_DBsystem;
+typedef struct _Elm_Store_Item_Filesystem Elm_Store_Item_Filesystem;
+typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info;
+typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem;
+typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping;
+typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty;
+typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon;
+typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo;
+typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom;
+
+typedef Eina_Bool (*Elm_Store_Item_List_Cb) (void *data, Elm_Store_Item_Info *info);
+typedef void (*Elm_Store_Item_Fetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
+typedef void (*Elm_Store_Item_Unfetch_Cb) (void *data, Elm_Store_Item *sti, Elm_Store_Item_Info *info);
+typedef void (*Elm_Store_Item_Select_Cb) (void *data, Elm_Store_Item *sti);
+typedef int (*Elm_Store_Item_Sort_Cb) (void *data, Elm_Store_Item_Info *info1, Elm_Store_Item_Info *info2);
+typedef void (*Elm_Store_Item_Free_Cb) (void *data, Elm_Store_Item_Info *info);
+typedef void *(*Elm_Store_Item_Mapping_Cb) (void *data, Elm_Store_Item *sti, const char *part);
++=======
+ /**
+ * @defgroup Store Elementary Store
+ *
+ * Store is an abstracting API that is intended to farm off fetching of data
+ * to threads running asynchronously from the mainloop that actually fetch
+ * data needed for a genlist (or possibly future other widgets) so scrolling
+ * never blocks waiting on IO (though normally this should be the users
+ * job - if using genlist, to ensure all data genlist needs is in memory at
+ * the time it needs it, and if it isn't to queue and defer a fetch and let
+ * genlist know later when its ready. Store actually does this and implements
+ * the infrastructure of this, leaving the actual fetch and convert up to
+ * functions provided by the user).
+ *
+ * It is possible for store to run inline without a thread, but this is
+ * highly inadvisable. you can disable this with:
+ *
+ * elm_store_fetch_thread_set(store, EINA_FALSE);
+ *
+ * Store works first by creating a store, setting up functions to list items
+ * and fetch items. Currently the only store type supported is the
+ * filesystem store, which will list the files inside a directory (not
+ * recursively) and then hand each file it finds (the file path) to the
+ * list function for evaluation.
+ *
+ * The list function may look at filename, may open the file or do
+ * anything it likes to determine something about the file. Either it
+ * filters it out (returns EINA_FALSE) and it is discarded or it
+ * returns EINA_TRUE and also provides a "sort id" which is a string
+ * store uses to figure out sorting. This string could be the filename, or
+ * some data based on its contents. The strings are sorted alphabetically
+ * like any normal ASCII strings, with case being important. As this listing
+ * function runs in a thread, it can do blocking IO and parsing without
+ * hurting the fluidity of the main loop and GUI. The list function also
+ * returns information on how to map fields in the source file to elements
+ * of the genlist item. For example, how the fetcher reads the private
+ * data struct of the user (what memory offset in the struct the data is at)
+ * and what type is there (it's a label of some sort, an icon, or with a
+ * custom mapping function that figures it out itself and creates the
+ * content needed for the genlist item).
+ *
+ * Store then uses this sort id to build (over time) a sorted list of items
+ * that then map 1:1 to genlist items. When these items are visible and
+ * need content, Store calls the fetch function per item, which is responsible
+ * for fetching the data from the given item and returning data to store
+ * so it can map this to some item content. This function also runs in a
+ * thread, and thus can do blocking IO work to later return the data. Sorting
+ * is optional and can be enabled or disabled too.
+ *
+ * When items are no longer needed, store will cal the unfetch function to
+ * free data in memory about that item that is no longer needed. This function
+ * is called in the mainloop and is expected to take minimal or almost no time
+ * to simply free up memory resources.
+ *
+ * @{
+ */
+
+ typedef struct _Elm_Store Elm_Store; /**< A store object */
+ typedef struct _Elm_Store_Item Elm_Store_Item; /**< A handle of a store item passed to store fetch/unfetch functions */
+ typedef struct _Elm_Store_Item_Info Elm_Store_Item_Info; /**< Basic information about a store item - always cast into a specific type like Elm_Store_Item_Info_Filesystem */
+ typedef struct _Elm_Store_Item_Info_Filesystem Elm_Store_Item_Info_Filesystem; /**< Filesystem specific information about a store item */
+ typedef struct _Elm_Store_Item_Mapping Elm_Store_Item_Mapping; /**< A basic way of telling Store how to take your return data (string, or something else from your struct) and convert it into something genlist can use */
+ typedef struct _Elm_Store_Item_Mapping_Empty Elm_Store_Item_Mapping_Empty; /**< An empty piece of mapping information. Useful for String labels as they get used directly */
+ typedef struct _Elm_Store_Item_Mapping_Icon Elm_Store_Item_Mapping_Icon; /***< The data being mapped at the given address is an icon, so use these properties for finding it */
+ typedef struct _Elm_Store_Item_Mapping_Photo Elm_Store_Item_Mapping_Photo; /**< The data is a photo, so use these parameters to find it */
+ typedef struct _Elm_Store_Item_Mapping_Custom Elm_Store_Item_Mapping_Custom; /**> The item needs a custom mapping which means calling a function and returning a string from it, as opposed to a static lookup. It should not be allocated, and should live in a buffer in memory that survives the return of this function if its a label, or an allocated icon object if its an icon needed etc. */
+
+ typedef Eina_Bool (*Elm_Store_Item_List_Cb)(void *data, Elm_Store_Item_Info *info); /**< Function to call for listing an item */
+ typedef void (*Elm_Store_Item_Fetch_Cb)(void *data, Elm_Store_Item *sti); /**< Function to call to fetch item data */
+ typedef void (*Elm_Store_Item_Unfetch_Cb)(void *data, Elm_Store_Item *sti); /**< Function to cal lto un-fetch (free) an item */
+ typedef void *(*Elm_Store_Item_Mapping_Cb)(void *data, Elm_Store_Item *sti, const char *part); /**< Custom mapping function to call */
++>>>>>>> remotes/origin/upstream
typedef enum
{
ELM_STORE_ITEM_MAPPING_NONE = 0,
++<<<<<<< HEAD
+ ELM_STORE_ITEM_MAPPING_LABEL, // const char * -> label
+ ELM_STORE_ITEM_MAPPING_STATE, // Eina_Bool -> state
+ ELM_STORE_ITEM_MAPPING_ICON, // char * -> icon path
+ ELM_STORE_ITEM_MAPPING_PHOTO, // char * -> photo path
+ ELM_STORE_ITEM_MAPPING_CUSTOM, // item->custom(it->data, it, part) -> void * (-> any)
+ // can add more here as needed by common apps
++=======
+ ELM_STORE_ITEM_MAPPING_LABEL, /**< const char * -> label */
+ ELM_STORE_ITEM_MAPPING_STATE, /**< Eina_Bool -> state */
+ ELM_STORE_ITEM_MAPPING_ICON, /**< char * -> icon path */
+ ELM_STORE_ITEM_MAPPING_PHOTO, /**< char * -> photo path */
+ ELM_STORE_ITEM_MAPPING_CUSTOM, /**< item->custom(it->data, it, part) -> void * (-> any) */
++>>>>>>> remotes/origin/upstream
ELM_STORE_ITEM_MAPPING_LAST
} Elm_Store_Item_Mapping_Type;
struct _Elm_Store_Item_Mapping_Icon
{
++<<<<<<< HEAD
+ // FIXME: allow edje file icons
+ int w, h;
+ Elm_Icon_Lookup_Order lookup_order;
+ Eina_Bool standard_name : 1;
+ Eina_Bool no_scale : 1;
+ Eina_Bool smooth : 1;
+ Eina_Bool scale_up : 1;
+ Eina_Bool scale_down : 1;
++=======
+ int w, h; /**< The desired icon size in addition to the file path returned from the mapping */
+ Elm_Icon_Lookup_Order lookup_order; /**< The order in which to find the icon */
+ Eina_Bool standard_name : 1; /**< Use a standard name to find it (EINA_TRUE) or not */
+ Eina_Bool no_scale : 1; /**< EINA_TRUE is you don't want the icon scaled */
+ Eina_Bool smooth : 1; /**< EINA_TRUE if icon is to be smooth scaled */
+ Eina_Bool scale_up : 1; /**< EINA_TRUE if scaling up is allowed */
+ Eina_Bool scale_down : 1; /**< EINA_TRUE if scaling down is allowed */
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item_Mapping_Empty
{
++<<<<<<< HEAD
+ Eina_Bool dummy;
++=======
+ Eina_Bool dummy; /**< dummy entry - set to anything you like */
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item_Mapping_Photo
{
++<<<<<<< HEAD
+ int size;
++=======
+ int size; /**< Photo size to use (see elm_photo_add()) with the given photo path */
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item_Mapping_Custom
{
++<<<<<<< HEAD
+ Elm_Store_Item_Mapping_Cb func;
++=======
+ Elm_Store_Item_Mapping_Cb func; /**< The function called to do the custom mapping and return it */
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item_Mapping
{
++<<<<<<< HEAD
+ Elm_Store_Item_Mapping_Type type;
+ const char *part;
+ int offset;
++=======
+ Elm_Store_Item_Mapping_Type type; /**< what kind of mapping is this */
+ const char *part; /**< what part name in the genlist item is this filling in */
+ int offset; /**< offset in memory (in bytes) relative to base of structure for item data where the data for the mapping lives */
++>>>>>>> remotes/origin/upstream
union
{
Elm_Store_Item_Mapping_Empty empty;
Elm_Store_Item_Mapping_Photo photo;
Elm_Store_Item_Mapping_Custom custom;
// add more types here
++<<<<<<< HEAD
+ } details;
++=======
+ } details; /**< Allowed to be one of these possible mapping types */
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Store_Item_Info
{
++<<<<<<< HEAD
+ int index;
+ int item_type;
+ int group_index;
+ Eina_Bool rec_item;
+ int pre_group_index;
+
+ Elm_Genlist_Item_Class *item_class;
+ const Elm_Store_Item_Mapping *mapping;
+ void *data;
+ char *sort_id;
+};
+
+
+struct _Elm_Store_Item_Info_Filesystem
+{
+ Elm_Store_Item_Info base;
+ char *path;
+};
+
+#define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
+#define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
+
+EAPI void elm_store_free(Elm_Store *st);
+
+EAPI Elm_Store *elm_store_filesystem_new(void);
+EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir);
+EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st);
+EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti);
+
+EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj);
+
+EAPI void elm_store_cache_set(Elm_Store *st, int max);
+EAPI int elm_store_cache_get(const Elm_Store *st);
+EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data);
+EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data);
+EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread);
+EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st);
+
+EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data);
+EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted);
+EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st);
+EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data);
+EAPI void *elm_store_item_data_get(Elm_Store_Item *sti);
+EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti);
+EAPI const Elm_Object_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti);
+
+/**
+ * dbsystem Store object
+ *
+ * @addtogroup DBStore
+ * @{
+ *
+ * @return The new object or NULL if it cannot be created
+ */
+EAPI Elm_Store *elm_store_dbsystem_new(void);
+/**
+ * Sets the item count of a store
+ *
+ * @param st The store object
+ * @param count The item count of an store
+ */
+EAPI void elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1);
+/**
+ * Set the select func that select the state of a list item whether true or false
+ *
+ * @param st The store object
+ * @param func The select cb function of an store
+ * @param data The new data pointer to set
+ */
+EAPI void elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1);
+/**
+ * Sets the sort func that sort the item with a next in the list
+ *
+ * @param st The store object
+ * @param func The sort cb function of an store
+ * @param data The new data pointer to set
+ */
+EAPI void elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1);
+/**
+ * Set the store item free func
+ *
+ * @param st The store object
+ * @param func The free cb function of an store
+ * @param data The new data pointer to set
+ */
+EAPI void elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1);
+/**
+ * Get the item index that included header items
+ *
+ * @param sti The store item object
+ * @return The item index in genlist
+ */
+EAPI int elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+/**
+ * Get the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @return The DB pointer of item
+ */
+EAPI void *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+/**
+ * Set the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @parm p_db The DB pointer of item
+ */
+EAPI void elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1);
+/**
+ */
+EAPI int elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+/**
+ * Append the item to the genlist
+ *
+ * @param st The store object
+ * @param info The store item info dbsystem object
+ * @return The item of store
+ */
+EAPI Elm_Store_Item *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1);
+/**
+ * Realize the visible items to the screen
+ *
+ * @param st The store object
+ */
+EAPI void elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+/**
+ * Realize the item to the screen
+ *
+ * @param sti The store item object
+ */
+EAPI void elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1);
+/**
+ * Delete the item of genlist
+ *
+ * @param sti The store item object
+ */
+EAPI void elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+EAPI void elm_store_free(Elm_Store *st);
+EAPI Elm_Store *elm_store_filesystem_new(void);
+EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir) EINA_ARG_NONNULL(1);
+EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+
+EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj) EINA_ARG_NONNULL(1);
+
+EAPI void elm_store_cache_set(Elm_Store *st, int max) EINA_ARG_NONNULL(1);
+EAPI int elm_store_cache_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread) EINA_ARG_NONNULL(1);
+EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+
+EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data) EINA_ARG_NONNULL(1, 2);
+EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted) EINA_ARG_NONNULL(1);
+EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st) EINA_ARG_NONNULL(1);
+EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data) EINA_ARG_NONNULL(1);
+EAPI void *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
+EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
++=======
+ Elm_Genlist_Item_Class *item_class; /**< The genlist item class that should be used for the item that has been listed */
+ const Elm_Store_Item_Mapping *mapping; /**< What kind of mappings do we use for the fields of this item to fill in the genlist item. Terminate array pointed to here with ELM_STORE_ITEM_MAPPING_END */
+ void *data; /**< Pointer to pass to struct data in memory if its already there, of not, NULL */
+ char *sort_id; /**< Sort ID string (strduped()) to know how to wort items, or NULL, if you don't care */
+ };
+
+ struct _Elm_Store_Item_Info_Filesystem
+ {
+ Elm_Store_Item_Info base; /**< Base information about an item */
+ char *path; /**< Extra information specific to the filesystem store */
+ };
+
+ #define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } } /**< Use this to end a list of mappings */
+ #define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it) /**< Use this to get the offset in bytes in memory for where the data for the mapping lives relative to the item data (a private struct pointed to owned by the user */
+
+ /**
+ * Create a new store object
+ *
+ * This creates a new store object to then configure so it works.
+ *
+ * @return A new store object, or NULL if creation fails
+ */
+ EAPI Elm_Store *elm_store_filesystem_new(void);
+ /**
+ * Free the store object and all items it manages
+ *
+ * This frees the given @p st store and all the items it manages. It will
+ * clear the List that it populated, but otherwise leave it alone. It will
+ * cancel background threads (and may have to wait for them to complete a
+ * pending operation to do this).
+ *
+ * @param st The store to free
+ */
+ EAPI void elm_store_free(Elm_Store *st);
+
+ /**
+ * Set the path to the directory to scan for a filesystem store
+ *
+ * This sets the directory (@p dir) to scan and begins scanning in the
+ * the background in threads (or not if threading is disabled with
+ * elm_store_fetch_thread_set()). Note that Listing is always done in a thread
+ * but fetching may not be if disabled here. This should be the last thing
+ * called after fetch, list and unfetch functions are set, as well as target
+ * genlist etc. You also should not change the directory once set. If you
+ * need a new directory scanned, create a new store.
+ *
+ * @param st The store to modify
+ * @param dir A string giving the path to the directory to scan
+ */
+ EAPI void elm_store_filesystem_directory_set(Elm_Store *st, const char *dir);
+
+ /**
+ * Get the directory set on a filesystem store
+ *
+ * This gets the directory set by elm_store_filesystem_directory_set(). This
+ * string returned will be valid until elm_store_filesystem_directory_set()
+ * changes it or until the store is freed with elm_store_free().
+ *
+ * @return A string with the path set, or NULL if none set.
+ */
+ EAPI const char *elm_store_filesystem_directory_get(const Elm_Store *st);
+
+ /**
+ * Get the path of a specific store item
+ *
+ * This returns the full path of a store item. This string is valid only
+ * during the list function set by elm_store_list_func_set() or during the
+ * fetch function set by elm_store_fetch_func_set() or during the unfetch
+ * function set by elm_store_unfetch_func_set().
+ *
+ * @param sti The store item to get the path from
+ * @return A full path in a string or NULL if none available
+ */
+ EAPI const char *elm_store_item_filesystem_path_get(const Elm_Store_Item *sti);
+
+ /**
+ * Set the target genlist to fill in from the store
+ *
+ * This tells the store the target genlist to use to fill in content from
+ * the store. Once a store starts "going" via elm_store_filesystem_directory_set()
+ * The target should never be changed again.
+ *
+ * @param st The store to do the filling.
+ * @param obj The genlist object to fill in and control the content of from the store.
+ */
+ EAPI void elm_store_target_genlist_set(Elm_Store *st, Evas_Object *obj);
+
+ /**
+ * Set the maximum number of items that are not visible to keep cached
+ *
+ * Store may keep some items around for caching purposes that cannot be seen,
+ * so this controls the maximum number. The default is 128, but may change
+ * at any point in time in the future.
+ *
+ * @param st The store to modify
+ * @param max The number of items to keep (should be greater than or equal to 0)
+ */
+ EAPI void elm_store_cache_set(Elm_Store *st, int max);
+
+ /**
+ * Get the maximum number if items to cache
+ *
+ * This returns the number of items at most to cache.
+ *
+ * @param st The store to query
+ * @return The maximum number of items to cache (>= 0)
+ * @see elm_store_cache_set()
+ */
+ EAPI int elm_store_cache_get(const Elm_Store *st);
+
+ /**
+ * Set the function used to deal with listing of items
+ *
+ * This function is called per item that is found so it can examine the item
+ * and discard it (return EINA_FALSE to discard, or EINA_TRUE to accept), and
+ * work out some sorting ID (that may be filename or anything else based on
+ * content). This function is always called from a thread.
+ *
+ * @param st The store to set the function of
+ * @param func The function to be called
+ * @param data the data pointer to be passed to the @p func function when called
+ */
+ EAPI void elm_store_list_func_set(Elm_Store *st, Elm_Store_Item_List_Cb func, const void *data);
+
+ /**
+ * Set the function used to deal with fetching of items
+ *
+ * This function is called per item that needs data to be fetched when it
+ * becomes visible and such data is needed. This function is normally run
+ * from a thread (unless elm_store_fetch_thread_set() disables this). The
+ * fetch function is to read data from the source and fill a structure
+ * allocated for this item with fields and then rely on the mapping setup
+ * to tell Store how to take a field in the structure and apply it to a
+ * genlist item.
+ *
+ * @param st The store to set the function of
+ * @param func The function to be called
+ * @param data the data pointer to be passed to the @p func function when called
+ */
+ EAPI void elm_store_fetch_func_set(Elm_Store *st, Elm_Store_Item_Fetch_Cb func, const void *data);
+
+ /**
+ * Set the function used to free the structure allocated for the item
+ *
+ * This function is called per item when it is not needed in memory anymore
+ * and should free the structure allocated in and filled in the function set
+ * by elm_store_fetch_func_set().
+ *
+ * @param st The store to set the function of
+ * @param func The function to be called
+ * @param data the data pointer to be passed to the @p func function when called
+ */
+ EAPI void elm_store_unfetch_func_set(Elm_Store *st, Elm_Store_Item_Unfetch_Cb func, const void *data);
+
+ /**
+ * Enable or disable fetching in a thread for Store
+ *
+ * @param st The store to modify
+ * @param use_thread EINA_TRUE to use a thread to fetch, EINA_FALSE don't use a thread.
+ */
+ EAPI void elm_store_fetch_thread_set(Elm_Store *st, Eina_Bool use_thread);
+
+ /**
+ * Get the thread enabled fetching option for Store
+ *
+ * @return The state set currently for the store.
+ * @see elm_store_fetch_thread_set()
+ */
+ EAPI Eina_Bool elm_store_fetch_thread_get(const Elm_Store *st);
+
+ /**
+ * Set if items are to be sorted or not.
+ *
+ * By default items are not sorted, but read "in order" as they are found. If
+ * you want to sort, your list function set by elm_store_list_func_set() must
+ * provide a sort ID to sort by, and then Store will take care of sorting when
+ * it inserts items. You should set this up before you begin listing items
+ * in the store and then never change it again.
+ *
+ * @param st The store to modify
+ * @param sorted EINA_TRUE if we are to sort, EINA_FALSE if not.
+ */
+ EAPI void elm_store_sorted_set(Elm_Store *st, Eina_Bool sorted);
+
+ /**
+ * Get the sorting flag
+ *
+ * Get the sorted flag as set by elm_store_sorted_set().
+ *
+ * @param st The store to query
+ * @return EINA_TRUE if sorted, EINA_FALSE if not.
+ */
+ EAPI Eina_Bool elm_store_sorted_get(const Elm_Store *st);
+
+ /**
+ * Set the item data holding item fields to map to item values in genlist
+ *
+ * Once you decode an item, allocate a structure for it and fill the structure,
+ * you should set the item data with this function (eg in the fetch function).
+ * This item pointer is the base offset to use when mapping fields to item
+ * values. Once you unfetch, store will handle NULLing the data pointer for you.
+ *
+ * @param sti The store item to set the data pointer of
+ * @param data The data pointer to set.
+ */
+ EAPI void elm_store_item_data_set(Elm_Store_Item *sti, void *data);
+
+ /**
+ * Get the item data
+ *
+ * This gets the data pointer set by elm_store_item_data_set().
+ *
+ * @param sti The store item to query
+ * @return The data pointer set on the item
+ */
+ EAPI void *elm_store_item_data_get(Elm_Store_Item *sti);
+
+ /**
+ * Fetch the store than a store item belongs to
+ *
+ * This fetches the store object that owns the store item.
+ *
+ * @param sti The store item to query
+ * @return The store the item belongs to
+ */
+ EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti);
+
+ /**
+ * Fetch the genlist item that this store item controls
+ *
+ * @param sti The store item to query
+ * @return The genlist object item handle controlled by this store item
+ */
+ EAPI const Elm_Object_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti);
+
+ /**
+ * @}
+ */
++>>>>>>> remotes/origin/upstream
* @defgroup Table Table
*
* A container widget to arrange other widgets in a table where items can
++<<<<<<< HEAD
+ * also span multiple columns or rows - even overlap (and then be raised or
+ * lowered accordingly to adjust stacking if they do overlap).
+ *
+ * For a Table widget the row/column count is not fixed.
+ * The table widget adjusts itself when subobjects are added to it dynamically.
+ *
+ * The followin are examples of how to use a table:
++=======
+ * span multiple columns or rows - even overlap (and then be raised or
+ * lowered accordingly to adjust stacking if they do overlap).
+ *
+ * The row and column count is not fixed. The table widget adjusts itself when
+ * subobjects are added to it dynamically.
+ *
+ * The most common way to use a table is:
+ * @code
+ * table = elm_table_add(win);
+ * evas_object_show(table);
+ * elm_table_padding_set(table, space_between_columns, space_between_rows);
+ * elm_table_pack(table, table_content_object, x_coord, y_coord, colspan, rowspan);
+ * elm_table_pack(table, table_content_object, next_x_coord, next_y_coord, colspan, rowspan);
+ * elm_table_pack(table, table_content_object, other_x_coord, other_y_coord, colspan, rowspan);
+ * @endcode
+ *
+ * The following are examples of how to use a table:
++>>>>>>> remotes/origin/upstream
* @li @ref tutorial_table_01
* @li @ref tutorial_table_02
*
elm_theme_flush(th);
}
++<<<<<<< HEAD
++=======
+ EAPI const Eina_List *
+ elm_theme_overlay_list_get(const Elm_Theme *th)
+ {
+ if (!th) th = &(theme_default);
+ return th->overlay;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_theme_extension_add(Elm_Theme *th, const char *item)
{
elm_theme_flush(th);
}
++<<<<<<< HEAD
++=======
+ EAPI const Eina_List *
+ elm_theme_extension_list_get(const Elm_Theme *th)
+ {
+ if (!th) th = &(theme_default);
+ return th->extension;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI void
elm_theme_set(Elm_Theme *th, const char *theme)
{
th->theme = NULL;
}
elm_theme_flush(th);
++<<<<<<< HEAD
++=======
+ if (th == &(theme_default))
+ eina_stringshare_replace(&_elm_config->theme, theme);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
elm_theme_flush(&(theme_default));
}
++<<<<<<< HEAD
+EAPI void
+elm_theme_all_set(const char *theme)
+{
+ eina_stringshare_replace(&_elm_config->theme, theme);
+ elm_theme_set(NULL, theme);
+ _elm_config_all_update();
++=======
+ EINA_DEPRECATED EAPI void
+ elm_theme_all_set(const char *theme)
+ {
+ elm_theme_set(NULL, theme);
+ elm_config_all_flush();
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_List *
s = strchr(file, '.');
if ((s) && (!strcasecmp(s, ".edj")))
{
++<<<<<<< HEAD
+ int dup;
++=======
+ int dupp;
++>>>>>>> remotes/origin/upstream
th = strdup(file);
s = strchr(th, '.');
*s = 0;
++<<<<<<< HEAD
+ dup = 0;
++=======
+ dupp = 0;
++>>>>>>> remotes/origin/upstream
EINA_LIST_FOREACH(list, l, s)
{
if (!strcmp(s, th))
{
++<<<<<<< HEAD
+ dup = 1;
+ break;
+ }
+ }
+ if (dup) free(th);
++=======
+ dupp = 1;
+ break;
+ }
+ }
+ if (dupp) free(th);
++>>>>>>> remotes/origin/upstream
else list = eina_list_append(list, th);
}
}
* by setting the @c ELM_THEME environment variable before running an
* application, or globally for all programs using the @c elementary_config
* utility. Applications can change the default theme using elm_theme_set(),
++<<<<<<< HEAD
+ * but this can go against the user wishes, so it's not an adviced practice.
++=======
+ * but this can go against the user wishes, so it's not an advised practice.
++>>>>>>> remotes/origin/upstream
*
* Ideally, applications should find everything they need in the already
* provided theme, but there may be occasions when that's not enough and
* theme for the application and will probably clash with the end user
* options, not to mention the risk of ending up with not matching styles
* across the program. Unless there's a very special reason to use them,
++<<<<<<< HEAD
+ * overlays should be avoided for the resons exposed before.
++=======
+ * overlays should be avoided for the reasons exposed before.
++>>>>>>> remotes/origin/upstream
*
* All these theme lists are handled by ::Elm_Theme instances. Elementary
* keeps one default internally and every function that receives one of
EAPI void elm_theme_free(Elm_Theme *th);
/**
++<<<<<<< HEAD
+ * Copy the theme fom the source to the destination theme
++=======
+ * Copy the theme from the source to the destination theme
++>>>>>>> remotes/origin/upstream
*
* @param th The source theme to copy from
* @param thdst The destination theme to copy data to
* new styles, or changing system theme configuration is not possible. Do
* NOT use this instead of a proper system theme configuration. Use proper
* configuration files, profiles, environment variables etc. to set a theme
++<<<<<<< HEAD
+ * so that the theme can be altered by simple confiugration by a user. Using
++=======
+ * so that the theme can be altered by simple configuration by a user. Using
++>>>>>>> remotes/origin/upstream
* this call to achieve that effect is abusing the API and will create lots
* of trouble.
*
EAPI void elm_theme_overlay_del(Elm_Theme *th, const char *item);
/**
++<<<<<<< HEAD
++=======
+ * Get the list of registered overlays for the given theme
+ *
+ * @param th The theme from which to get the overlays
+ * @return List of theme overlays. Do not free it.
+ *
+ * @see elm_theme_overlay_add()
+ */
+ EAPI const Eina_List *elm_theme_overlay_list_get(const Elm_Theme *th);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Appends a theme extension to the list of extensions.
*
* @param th The theme to add to, or if NULL, the default theme
EAPI void elm_theme_extension_del(Elm_Theme *th, const char *item);
/**
++<<<<<<< HEAD
++=======
+ * Get the list of registered extensions for the given theme
+ *
+ * @param th The theme from which to get the extensions
+ * @return List of theme extensions. Do not free it.
+ *
+ * @see elm_theme_extension_add()
+ */
+ EAPI const Eina_List *elm_theme_extension_list_get(const Elm_Theme *th);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the theme search order for the given theme
*
* @param th The theme to set the search order, or if NULL, the default theme
*
* A theme element can consist of a full or relative path to a .edj file,
* or a name, without extension, for a theme to be searched in the known
++<<<<<<< HEAD
+ * theme paths for Elemementary.
++=======
+ * theme paths for Elementary.
++>>>>>>> remotes/origin/upstream
*
* @see elm_theme_set()
* @see elm_theme_get()
EAPI const Eina_List *elm_theme_list_get(const Elm_Theme *th);
/**
++<<<<<<< HEAD
+ * Return the full patrh for a theme element
++=======
+ * Return the full path for a theme element
++>>>>>>> remotes/origin/upstream
*
* @param f The theme element name
* @param in_search_path Pointer to a boolean to indicate if item is in the search path or not
*
* This returns a string you should free with free() on success, NULL on
* failure. This will search for the given theme element, and if it is a
++<<<<<<< HEAD
+ * full or relative path element or a simple searchable name. The returned
+ * path is the full path to the file, if searched, and the file exists, or it
+ * is simply the full path given in the element or a resolved path if
+ * relative to home. The @p in_search_path boolean pointed to is set to
+ * EINA_TRUE if the file was a searchable file andis in the search path,
++=======
+ * full or relative path element or a simple search-able name. The returned
+ * path is the full path to the file, if searched, and the file exists, or it
+ * is simply the full path given in the element or a resolved path if
+ * relative to home. The @p in_search_path boolean pointed to is set to
+ * EINA_TRUE if the file was a search-able file and is in the search path,
++>>>>>>> remotes/origin/upstream
* and EINA_FALSE otherwise.
*/
EAPI char *elm_theme_list_item_path_get(const char *f, Eina_Bool *in_search_path);
EAPI void elm_theme_full_flush(void);
/**
++<<<<<<< HEAD
+ * Set the theme for all elementary using applications on the current display
+ *
+ * @param theme The name of the theme to use. Format same as the ELM_THEME
+ * environment variable.
+ */
+EAPI void elm_theme_all_set(const char *theme);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Return a list of theme elements in the theme search path
*
* @return A list of strings that are the theme element names.
* Get the specific theme to be used
*
* @param obj The object to get the specific theme from
++<<<<<<< HEAD
+ * @return The specifc theme set.
++=======
+ * @return The specific theme set.
++>>>>>>> remotes/origin/upstream
*
* This will return a specific theme set, or NULL if no specific theme is
* set on that object. It will not return inherited themes from parents, only
{
evas_object_show(wd->frame);
++<<<<<<< HEAD
+ if (elm_thumb_ethumb_client_connected())
++=======
+ if (elm_thumb_ethumb_client_connected_get())
++>>>>>>> remotes/origin/upstream
{
_thumb_apply(wd);
return;
#ifdef HAVE_ELEMENTARY_ETHUMB
if (((file_replaced) || (key_replaced)) && (evas_object_visible_get(obj)))
_thumb_show(wd);
++<<<<<<< HEAD
++=======
+ #else
+ (void)key_replaced;
++>>>>>>> remotes/origin/upstream
#endif
}
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_thumb_ethumb_client_connected(void)
++=======
+ elm_thumb_ethumb_client_connected_get(void)
++>>>>>>> remotes/origin/upstream
{
return _elm_ethumb_connected;
}
* A thumb object is used for displaying the thumbnail of an image or video.
* You must have compiled Elementary with Ethumb_Client support and the DBus
* service must be present and auto-activated in order to have thumbnails to
++<<<<<<< HEAD
+ * be generated.
++=======
+ * be generated. You must also have a Session bus, not System bus.
++>>>>>>> remotes/origin/upstream
*
* Once the thumbnail object becomes visible, it will check if there is a
* previously generated thumbnail image for the file set on it. If not, it
EAPI void elm_thumb_file_get(const Evas_Object *obj, const char **file, const char **key);
/**
++<<<<<<< HEAD
+ * Get the path and key to the image or video generated by ethumb.
+ *
+ * One just need to make sure that the thumbnail was generated before getting
++=======
+ * Get the path and key to the image or video thumbnail generated by ethumb.
+ *
+ * One just needs to make sure that the thumbnail was generated before getting
++>>>>>>> remotes/origin/upstream
* its path; otherwise, the path will be NULL. One way to do that is by asking
* for the path when/after the "generate,stop" smart callback is called.
*
* looping.
*
* @param obj The thumb object.
++<<<<<<< HEAD
+ * @param setting The animation setting.
++=======
+ * @param s The animation setting.
++>>>>>>> remotes/origin/upstream
*
* @see elm_thumb_file_set()
*
* @return EINA_TRUE if the client is connected to the server or EINA_FALSE
* otherwise.
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_thumb_ethumb_client_connected(void);
++=======
+ EAPI Eina_Bool elm_thumb_ethumb_client_connected_get(void);
++>>>>>>> remotes/origin/upstream
/**
* Make the thumbnail 'editable'.
*
* @param obj Thumb object.
++<<<<<<< HEAD
+ * @param set Turn on or off editability. Default is @c EINA_FALSE.
++=======
+ * @param edit Turn on or off editability. Default is @c EINA_FALSE.
++>>>>>>> remotes/origin/upstream
*
* This means the thumbnail is a valid drag target for drag and drop, and can be
* cut or pasted too.
int icon_size;
unsigned int item_count;
double align;
++<<<<<<< HEAD
+ Eina_Bool homogeneous : 1;
+ Eina_Bool no_select : 1;
+ Eina_Bool always_select : 1;
++=======
+ Elm_Object_Select_Mode select_mode;
+ Eina_Bool homogeneous : 1;
++>>>>>>> remotes/origin/upstream
Eina_Bool vertical : 1;
Eina_Bool long_press : 1;
Ecore_Timer *long_timer;
static void _menu_move_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _menu_hide(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data);
++<<<<<<< HEAD
+static void _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *signal);
+static void _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *signal);
++=======
+ static void _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *sig);
+ static void _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *sig);
++>>>>>>> remotes/origin/upstream
static const char SIG_CLICKED[] = "clicked";
static const char SIG_LONGPRESSED[] = "longpressed";
static void
_item_disable_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+ Widget_Data *wd;
+ Elm_Toolbar_Item *toolbar_it = (Elm_Toolbar_Item *) it;
++=======
+ Widget_Data *wd;
+ Elm_Toolbar_Item *toolbar_it = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(toolbar_it));
if (!wd) return;
if (elm_widget_item_disabled_get(it) || (it->separator) || (it->object)) return;
sel = it->selected;
++<<<<<<< HEAD
+ if (!wd->no_select)
+ {
+ if (sel)
+ {
+ if (wd->always_select) return;
++=======
+ if (wd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
+ {
+ if (sel)
+ {
+ if (wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) return;
++>>>>>>> remotes/origin/upstream
_item_unselect(it);
}
else
const char *part,
const char *label)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+ if (part && strcmp(part, "default")) return;
+ _item_label_set(((Elm_Toolbar_Item *) it), label, "elm,state,label_set");
++=======
+ if (part && strcmp(part, "default")) return;
+ _item_label_set(((Elm_Toolbar_Item *)it), label, "elm,state,label_set");
++>>>>>>> remotes/origin/upstream
}
static const char *
_item_text_get_hook(const Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Toolbar_Item *) it)->label;
++=======
+ if (part && strcmp(part, "default")) return NULL;
+ return ((Elm_Toolbar_Item *)it)->label;
++>>>>>>> remotes/origin/upstream
}
static void
_item_content_set_hook(Elm_Object_Item *it,
++<<<<<<< HEAD
+ const char *part,
+ Evas_Object *content)
+{
++=======
+ const char *part,
+ Evas_Object *content)
+ {
+ double scale;
+
++>>>>>>> remotes/origin/upstream
if (part && strcmp(part, "object")) return;
Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
Evas_Object *obj = WIDGET(item);
Widget_Data *wd = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ double scale;
++=======
+
++>>>>>>> remotes/origin/upstream
if (item->object == content) return;
item->object = content;
elm_widget_sub_object_add(obj, item->object);
static Evas_Object *
_item_content_unset_hook(Elm_Object_Item *it, const char *part)
{
++<<<<<<< HEAD
+ if (part && strcmp(part, "object")) return;
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+ Evas_Object *obj = WIDGET(item);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ double scale;
+ edje_object_part_unswallow(VIEW(it), item->object);
+ elm_widget_sub_object_del(obj, item->object);
+ item->object = NULL;
+ scale = (elm_widget_scale_get(obj) * _elm_config->scale);
+ _theme_hook_item(obj, item, scale, wd->icon_size);
++=======
+ Evas_Object *o;
+ double scale;
+
+ if (part && strcmp(part, "object")) return NULL;
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+ Evas_Object *obj = WIDGET(item);
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ edje_object_part_unswallow(VIEW(it), item->object);
+ elm_widget_sub_object_del(obj, item->object);
+ o = item->object;
+ item->object = NULL;
+ scale = (elm_widget_scale_get(obj) * _elm_config->scale);
+ _theme_hook_item(obj, item, scale, wd->icon_size);
+ return o;
++>>>>>>> remotes/origin/upstream
}
static void
/* All items are removed from the box object, since removing individual
* items won't trigger a resize. Items are be readded below. */
evas_object_box_remove_all(wd->bx, EINA_FALSE);
++<<<<<<< HEAD
+ if (((wd->vertical) && (ih > vh)) ||
++=======
+ if (((wd->vertical) && (ih > vh)) ||
++>>>>>>> remotes/origin/upstream
((!wd->vertical) && (iw > vw)))
{
Evas_Object *menu;
_fix_items_visibility(wd, &iw, vw);
}
evas_object_box_remove_all(wd->bx, EINA_FALSE);
++<<<<<<< HEAD
+ if (((wd->vertical) && (ih > vh)) ||
++=======
+ if (((wd->vertical) && (ih > vh)) ||
++>>>>>>> remotes/origin/upstream
((!wd->vertical) && (iw > vw)))
{
EINA_INLIST_FOREACH(wd->items, it)
Evas_Object *obj = (Evas_Object *) data;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ _els_box_layout(o, priv, !wd->vertical, wd->homogeneous,
++=======
+ _els_box_layout(o, priv, !wd->vertical, wd->homogeneous,
++>>>>>>> remotes/origin/upstream
elm_widget_mirrored_get(obj));
}
static Eina_Bool
_item_del_pre_hook(Elm_Object_Item *it)
{
++<<<<<<< HEAD
+ ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+
+ Widget_Data *wd;
+ Evas_Object *obj2;
+ Elm_Toolbar_Item *item, *next;
+ item = (Elm_Toolbar_Item *) it;
++=======
+ Widget_Data *wd;
+ Evas_Object *obj2;
+ Elm_Toolbar_Item *item, *next;
+ item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return EINA_FALSE;
wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item));
wd->item_count--;
if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
++<<<<<<< HEAD
+ if (wd->always_select && item->selected && next) _item_select(next);
++=======
+ if ((wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+ item->selected && next) _item_select(next);
++>>>>>>> remotes/origin/upstream
_item_del(item);
_theme_hook(obj2);
evas_object_size_hint_max_set(VIEW(it), -1, -1);
evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_RESIZE,
_resize_item, obj);
++<<<<<<< HEAD
+ if ((!wd->items) && wd->always_select) _item_select(it);
++=======
+ if ((!wd->items) && (wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS))
+ _item_select(it);
++>>>>>>> remotes/origin/upstream
wd->item_count++;
return it;
}
}
static void
++<<<<<<< HEAD
+_item_label_set(Elm_Toolbar_Item *item, const char *label, const char *signal)
++=======
+ _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *sig)
++>>>>>>> remotes/origin/upstream
{
const char *s;
if ((s) && (atoi(s)))
{
edje_object_part_text_set(VIEW(item), "elm.text_new", item->label);
++<<<<<<< HEAD
+ edje_object_signal_emit (VIEW(item), signal, "elm");
++=======
+ edje_object_signal_emit (VIEW(item), sig, "elm");
++>>>>>>> remotes/origin/upstream
edje_object_signal_callback_add(VIEW(item),
"elm,state,label_set,done", "elm",
_elm_toolbar_item_label_set_cb, item);
}
static void
++<<<<<<< HEAD
+_elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *signal)
++=======
+ _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *sig)
++>>>>>>> remotes/origin/upstream
{
Evas_Object *old_icon;
int ms = 0;
}
edje_object_part_swallow(VIEW(item), "elm.swallow.icon_new",
item->icon);
++<<<<<<< HEAD
+ edje_object_signal_emit (VIEW(item), signal, "elm");
++=======
+ edje_object_signal_emit (VIEW(item), sig, "elm");
++>>>>>>> remotes/origin/upstream
edje_object_signal_callback_add(VIEW(item),
"elm,state,icon_set,done", "elm",
_elm_toolbar_item_icon_set_cb, item);
_theme_hook_item(obj, it, scale, wd->icon_size);
_sizing_eval(obj);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
_theme_hook_item(obj, it, scale, wd->icon_size);
_sizing_eval(obj);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
_theme_hook_item(obj, it, scale, wd->icon_size);
_sizing_eval(obj);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
_theme_hook_item(obj, it, scale, wd->icon_size);
_sizing_eval(obj);
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return (Elm_Object_Item *) ELM_TOOLBAR_ITEM_FROM_INLIST(
++<<<<<<< HEAD
+ EINA_INLIST_GET(((Elm_Toolbar_Item *) it))->next);
++=======
+ EINA_INLIST_GET(((Elm_Toolbar_Item *)it))->next);
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return (Elm_Object_Item *) ELM_TOOLBAR_ITEM_FROM_INLIST(
++<<<<<<< HEAD
+ EINA_INLIST_GET(((Elm_Toolbar_Item *) it))->prev);
++=======
+ EINA_INLIST_GET(((Elm_Toolbar_Item *)it))->prev);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
elm_toolbar_item_priority_set(Elm_Object_Item *it, int priority)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
if (item->prio.priority == priority) return;
item->prio.priority = priority;
_resize(WIDGET(item), NULL, NULL, NULL);
elm_toolbar_item_priority_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 0);
++<<<<<<< HEAD
+ return ((Elm_Toolbar_Item *) it)->prio.priority;
++=======
+ return ((Elm_Toolbar_Item *)it)->prio.priority;
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
EINA_INLIST_FOREACH(wd->items, it)
{
if (!strcmp(it->label, label))
++<<<<<<< HEAD
+ return (Elm_Object_Item *) it;
++=======
+ return (Elm_Object_Item *)it;
++>>>>>>> remotes/origin/upstream
}
return NULL;
}
elm_toolbar_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd) return;
elm_toolbar_item_selected_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Toolbar_Item *) it)->selected;
++=======
+ return ((Elm_Toolbar_Item *)it)->selected;
++>>>>>>> remotes/origin/upstream
}
EAPI Elm_Object_Item *
Evas_Object *icon_obj;
Widget_Data *wd;
Evas_Object *obj;
++<<<<<<< HEAD
+ Elm_Toolbar_Item * item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item * item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
elm_toolbar_item_icon_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return ((Elm_Toolbar_Item *) it)->icon_str;
++=======
+ return ((Elm_Toolbar_Item *)it)->icon_str;
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
Widget_Data *wd;
Evas_Object *obj;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
elm_toolbar_item_icon_object_get(Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ return ((Elm_Toolbar_Item *) it)->icon;
++=======
+ return ((Elm_Toolbar_Item *)it)->icon;
++>>>>>>> remotes/origin/upstream
}
EAPI Eina_Bool
Widget_Data *wd;
Evas_Object *obj;
Eina_Bool ret;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
Widget_Data *wd;
Evas_Object *obj;
Eina_Bool ret;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
elm_toolbar_item_separator_set(Elm_Object_Item *it, Eina_Bool separator)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
Evas_Object *obj = WIDGET(item);
Widget_Data *wd = elm_widget_data_get(obj);
double scale;
elm_toolbar_item_separator_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
++<<<<<<< HEAD
+ return ((Elm_Toolbar_Item *) it)->separator;
++=======
+ return ((Elm_Toolbar_Item *)it)->separator;
++>>>>>>> remotes/origin/upstream
}
EAPI void
if (shrink_mode == ELM_TOOLBAR_SHRINK_MENU)
{
++<<<<<<< HEAD
+ elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF,
++=======
+ elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF,
++>>>>>>> remotes/origin/upstream
ELM_SMART_SCROLLER_POLICY_OFF);
wd->more_item = _item_new(obj, "more_menu", "More", NULL, NULL);
}
elm_toolbar_item_menu_set(Elm_Object_Item *it, Eina_Bool menu)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd) return;
elm_toolbar_item_menu_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!item->menu) return NULL;
Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd) return NULL;
Evas_Object *icon_obj;
Evas_Object *obj;
Widget_Data *wd;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(WIDGET(item));
if (!wd) return NULL;
if (!state) return EINA_FALSE;
++<<<<<<< HEAD
+ item = (Elm_Toolbar_Item *) it;
++=======
+ item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
if (!item->states) return EINA_FALSE;
del_state = eina_list_data_find_list(item->states, state);
Eina_List *next_state;
Elm_Toolbar_Item_State *it_state;
Evas_Object *obj;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
elm_toolbar_item_state_get(const Elm_Object_Item *it)
{
ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
if ((!item->states) || (!item->current_state)) return NULL;
if (item->current_state == item->states) return NULL;
Widget_Data *wd;
Evas_Object *obj;
Eina_List *next_state;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
Widget_Data *wd;
Evas_Object *obj;
Eina_List *prev_state;
++<<<<<<< HEAD
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
++=======
+ Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
++>>>>>>> remotes/origin/upstream
obj = WIDGET(item);
wd = elm_widget_data_get(obj);
return elm_object_item_cursor_engine_only_get(it);
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ if (always_select && (!wd->always_select) && wd->items)
+ _item_select(ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items));
+ wd->always_select = always_select;
+}
+
+EAPI Eina_Bool
++=======
+ if (always_select)
+ elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_toolbar_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_toolbar_always_select_mode_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->always_select;
+}
+
+EAPI void
++=======
+ Elm_Object_Select_Mode oldmode = elm_toolbar_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_ALWAYS)
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+ }
+
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select)
{
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
++<<<<<<< HEAD
+ wd->no_select = no_select;
+}
+
+EAPI Eina_Bool
++=======
+ if (no_select)
+ elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_NONE);
+ else
+ {
+ Elm_Object_Select_Mode oldmode = elm_toolbar_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_DEFAULT);
+ }
+ }
+
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_toolbar_no_select_mode_get(const Evas_Object *obj)
{
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return EINA_FALSE;
++<<<<<<< HEAD
+ return wd->no_select;
++=======
+ Elm_Object_Select_Mode oldmode = elm_toolbar_select_mode_get(obj);
+ if (oldmode == ELM_OBJECT_SELECT_MODE_NONE)
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
++>>>>>>> remotes/origin/upstream
}
EAPI void
{
return elm_toolbar_shrink_mode_get(obj);
}
++<<<<<<< HEAD
++=======
+
+ EAPI void
+ elm_toolbar_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
+ return;
+ if ((mode == ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+ (wd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+ wd->items)
+ _item_select(ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items));
+ if (wd->select_mode != mode)
+ wd->select_mode = mode;
+ }
+
+ EAPI Elm_Object_Select_Mode
+ elm_toolbar_select_mode_get(const Evas_Object *obj)
+ {
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_OBJECT_SELECT_MODE_MAX;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return ELM_OBJECT_SELECT_MODE_MAX;
+ return wd->select_mode;
+ }
+
++>>>>>>> remotes/origin/upstream
* @enum _Elm_Toolbar_Shrink_Mode
* @typedef Elm_Toolbar_Shrink_Mode
*
++<<<<<<< HEAD
+ * Set toolbar's items display behavior, it can be scrollabel,
++=======
+ * Set toolbar's items display behavior, it can be scrollable,
++>>>>>>> remotes/origin/upstream
* show a menu with exceeding items, or simply hide them.
*
* @note Default value is #ELM_TOOLBAR_SHRINK_MENU. It reads value
* from elm config.
*
++<<<<<<< HEAD
+ * Values <b> don't </b> work as bitmask, only one can be choosen.
++=======
+ * Values <b> don't </b> work as bitmask, only one can be chosen.
++>>>>>>> remotes/origin/upstream
*
* @see elm_toolbar_shrink_mode_set()
* @see elm_toolbar_shrink_mode_get()
*/
typedef enum
{
++<<<<<<< HEAD
+ ELM_TOOLBAR_SHRINK_NONE, /**< Set toolbar minimun size to fit all the items. */
++=======
+ ELM_TOOLBAR_SHRINK_NONE, /**< Set toolbar minimum size to fit all the items. */
++>>>>>>> remotes/origin/upstream
ELM_TOOLBAR_SHRINK_HIDE, /**< Hide exceeding items. */
ELM_TOOLBAR_SHRINK_SCROLL, /**< Allow accessing exceeding items through a scroller. */
ELM_TOOLBAR_SHRINK_MENU, /**< Inserts a button to pop up a menu with exceeding items. */
EAPI Elm_Icon_Lookup_Order elm_toolbar_icon_order_lookup_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
+ * Set whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @param wrap @c EINA_TRUE to enable always-select mode or @c EINA_FALSE to
+ * disable it.
+ *
+ * This will cause the toolbar to always have an item selected, and clicking
+ * the selected item will not cause a selected event to be emitted. Enabling this mode
+ * will immediately select the first toolbar item.
+ *
+ * Always-selected is disabled by default.
+ *
+ * @see elm_toolbar_always_select_mode_get().
+ *
+ * @ingroup Toolbar
+ */
+EAPI void elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
+
+/**
+ * Get whether the toolbar should always have an item selected.
+ *
+ * @param obj The toolbar object.
+ * @return @c EINA_TRUE means an item will always be selected, @c EINA_FALSE indicates
+ * that it is possible to have no items selected. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_always_select_mode_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+EAPI Eina_Bool elm_toolbar_always_select_mode_get(const Evas_Object *obj);
+
+/**
+ * Set whether the toolbar items' should be selected by the user or not.
+ *
+ * @param obj The toolbar object.
+ * @param wrap @c EINA_TRUE to disable selection or @c EINA_FALSE to
+ * enable it.
+ *
+ * This will turn off the ability to select items entirely and they will
+ * neither appear selected nor emit selected signals. The clicked
+ * callback function will still be called.
+ *
+ * Selection is enabled by default.
+ *
+ * @see elm_toolbar_no_select_mode_get().
+ *
+ * @ingroup Toolbar
+ */
+EAPI void elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select);
+
+/**
+ * Set whether the toolbar items' should be selected by the user or not.
+ *
+ * @param obj The toolbar object.
+ * @return @c EINA_TRUE means items can be selected. @c EINA_FALSE indicates
+ * they can't. If @p obj is @c NULL, @c EINA_FALSE is returned.
+ *
+ * @see elm_toolbar_no_select_mode_set() for details.
+ *
+ * @ingroup Toolbar
+ */
+EAPI Eina_Bool elm_toolbar_no_select_mode_get(const Evas_Object *obj);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Append item to the toolbar.
*
* @param obj The toolbar object.
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_object_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If such function isn't needed, just passing
* @c NULL as @p func is enough. The same should be done for @p data.
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_object_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If such function isn't needed, just passing
* @c NULL as @p func is enough. The same should be done for @p data.
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_object_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If such function isn't needed, just passing
* @c NULL as @p func is enough. The same should be done for @p data.
* Associated @p data can be properly freed when item is deleted if a
* callback function is set with elm_object_item_del_cb_set().
*
++<<<<<<< HEAD
+ * If a function is passed as argument, it will be called everytime this item
++=======
+ * If a function is passed as argument, it will be called every time this item
++>>>>>>> remotes/origin/upstream
* is selected, i.e., the user clicks over an unselected item.
* If such function isn't needed, just passing
* @c NULL as @p func is enough. The same should be done for @p data.
/**
* Get the item before @p item in toolbar.
*
++<<<<<<< HEAD
+ * @param item The toolbar item.
++=======
+ * @param it The toolbar item.
++>>>>>>> remotes/origin/upstream
* @return The item before @p item, or @c NULL if none or on failure.
*
* @note If it is the first item, @c NULL will be returned.
* This sets the selected state of the given item @p it.
* @c EINA_TRUE for selected, @c EINA_FALSE for not selected.
*
++<<<<<<< HEAD
+ * If a new item is selected the previosly selected will be unselected.
+ * Previoulsy selected item can be get with function
++=======
+ * If a new item is selected the previously selected will be unselected.
+ * Previously selected item can be get with function
++>>>>>>> remotes/origin/upstream
* elm_toolbar_selected_item_get().
*
* Selected items will be highlighted.
/**
* Set the icon associated with @p item.
*
++<<<<<<< HEAD
+ * @param obj The parent of this item.
++=======
++>>>>>>> remotes/origin/upstream
* @param it The toolbar item.
* @param icon A string with icon name or the absolute path of an image file.
*
* Set or unset item as a separator.
*
* @param it The toolbar item.
++<<<<<<< HEAD
+ * @param setting @c EINA_TRUE to set item @p item as separator or
++=======
+ * @param separator @c EINA_TRUE to set item @p item as separator or
++>>>>>>> remotes/origin/upstream
* @c EINA_FALSE to unset, i.e., item will be used as a regular item.
*
* Items aren't set as separator by default.
* @param shrink_mode Toolbar's items display behavior.
*
* The toolbar won't scroll if #ELM_TOOLBAR_SHRINK_NONE,
++<<<<<<< HEAD
+ * but will enforce a minimun size so all the items will fit, won't scroll
++=======
+ * but will enforce a minimum size so all the items will fit, won't scroll
++>>>>>>> remotes/origin/upstream
* and won't show the items that don't fit if #ELM_TOOLBAR_SHRINK_HIDE,
* will scroll if #ELM_TOOLBAR_SHRINK_SCROLL, and will create a button to
* pop up excess elements with #ELM_TOOLBAR_SHRINK_MENU.
EAPI Elm_Toolbar_Item_State *elm_toolbar_item_state_add(Elm_Object_Item *it, const char *icon, const char *label, Evas_Smart_Cb func, const void *data);
/**
++<<<<<<< HEAD
+ * Delete a previoulsy added state to @p item.
++=======
+ * Delete a previously added state to @p item.
++>>>>>>> remotes/origin/upstream
*
* @param it The toolbar item.
* @param state The state to be deleted.
*
* If @p state is @c NULL, it won't select any state and the default item's
* icon and label will be used. It's the same behaviour than
++<<<<<<< HEAD
+ * elm_toolbar_item_state_unser().
++=======
+ * elm_toolbar_item_state_unset().
++>>>>>>> remotes/origin/upstream
*
* @see elm_toolbar_item_state_unset()
*
* @ingroup Toolbar
*/
EAPI unsigned int elm_toolbar_items_count(const Evas_Object *obj);
++<<<<<<< HEAD
++=======
+
+ /**
+ * Set the toolbar select mode.
+ *
+ * @param obj The toolbar object
+ * @param mode The select mode
+ *
+ * elm_toolbar_select_mode_set() changes item select mode in the toolbar widget.
+ * - ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+ * callback when first becoming selected. Any further clicks will
+ * do nothing, unless you set always select mode.
+ * - ELM_OBJECT_SELECT_MODE_ALWAYS : This means that, even if selected,
+ * every click will make the selected callbacks be called.
+ * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+ * entirely and they will neither appear selected nor call selected
+ * callback functions.
+ *
+ * @see elm_toolbar_select_mode_get()
+ *
+ * @ingroup Toolbar
+ */
+ EAPI void
+ elm_toolbar_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode);
+
+ /**
+ * Get the toolbar select mode.
+ *
+ * @param obj The toolbar object
+ * @return The select mode
+ * (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+ *
+ * @see elm_toolbar_select_mode_set()
+ *
+ * @ingroup Toolbar
+ */
+ EAPI Elm_Object_Select_Mode
+ elm_toolbar_select_mode_get(const Evas_Object *obj);
+
++>>>>>>> remotes/origin/upstream
/**
* @}
*/
*/
typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb)(void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
++<<<<<<< HEAD
+// XXX: move to config, rename all config things elm_config_*
+EAPI double elm_tooltip_delay_get(void);
+// XXX: move to config, rename all config things elm_config_*
+EAPI Eina_Bool elm_tooltip_delay_set(double delay);
+
+EAPI void elm_object_tooltip_show(Evas_Object *obj);
+EAPI void elm_object_tooltip_hide(Evas_Object *obj);
++=======
+ EINA_DEPRECATED EAPI double elm_tooltip_delay_get(void);
+ EINA_DEPRECATED EAPI Eina_Bool elm_tooltip_delay_set(double delay);
+
+ EAPI void elm_object_tooltip_show(Evas_Object *obj);
+ EAPI void elm_object_tooltip_hide(Evas_Object *obj);
+
+ /**
+ * Set the text to be displayed inside the tooltip.
+ *
+ * @param obj The tooltip object.
+ * @param text The text to be displayed.
+ */
++>>>>>>> remotes/origin/upstream
EAPI void elm_object_tooltip_text_set(Evas_Object *obj, const char *text);
EAPI void elm_object_tooltip_domain_translatable_text_set(Evas_Object *obj, const char *domain, const char *text);
#define elm_object_tooltip_translatable_text_set(obj, text) elm_object_tooltip_domain_translatable_text_set((obj), NULL, (text))
EAPI void elm_object_tooltip_content_cb_set(Evas_Object *obj, Elm_Tooltip_Content_Cb func, const void *data, Evas_Smart_Cb del_cb);
EAPI void elm_object_tooltip_unset(Evas_Object *obj);
++<<<<<<< HEAD
++EAPI void elm_object_tooltip_style_set(Evas_Object *obj, const char *style);
++EAPI const char *elm_object_tooltip_style_get(const Evas_Object *obj);
++EAPI Eina_Bool elm_object_tooltip_window_mode_set(Evas_Object *obj, Eina_Bool disable);
++=======
+
+ /**
+ * Sets a different style for this object tooltip.
+ *
+ * @note before you set a style you should define a tooltip with
+ * elm_object_tooltip_content_cb_set() or
+ * elm_object_tooltip_text_set().
+ *
+ * @param obj an object with tooltip already set.
+ * @param style the theme style to use (default, transparent, ...)
+ */
EAPI void elm_object_tooltip_style_set(Evas_Object *obj, const char *style);
+
+ /**
+ * Get the style for this object tooltip.
+ *
+ * @param obj an object with tooltip already set.
+ * @return style the theme style in use, defaults to "default". If the
+ * object does not have a tooltip set, then NULL is returned.
+ */
EAPI const char *elm_object_tooltip_style_get(const Evas_Object *obj);
+
+ /**
+ * @brief Disable size restrictions on an object's tooltip
+ * @param obj The tooltip's anchor object
+ * @param disable If EINA_TRUE, size restrictions are disabled
+ * @return EINA_FALSE on failure, EINA_TRUE on success
+ *
+ * This function allows a tooltip to expand beyond its parent window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
EAPI Eina_Bool elm_object_tooltip_window_mode_set(Evas_Object *obj, Eina_Bool disable);
+
+ /**
+ * @brief Retrieve size restriction state of an object's tooltip
+ * @param obj The tooltip's anchor object
+ * @return If EINA_TRUE, size restrictions are disabled
+ *
+ * This function returns whether a tooltip is allowed to expand beyond
+ * its parent window's canvas.
+ * It will instead be limited only by the size of the display.
+ */
++>>>>>>> remotes/origin/upstream
EAPI Eina_Bool elm_object_tooltip_window_mode_get(const Evas_Object *obj);
/**
static void _transit_obj_remove(Elm_Transit *transit, Evas_Object *obj);
static void _transit_effect_del(Elm_Transit *transit, Elm_Transit_Effect_Module *effect_module);
static void _transit_remove_dead_effects(Elm_Transit *transit);
++<<<<<<< HEAD
++=======
+ static void _transit_chain_go(Elm_Transit *transit);
++>>>>>>> remotes/origin/upstream
static void _transit_del(Elm_Transit *transit);
static Eina_Bool _transit_animate_op(Elm_Transit *transit, double progress);
static Eina_Bool _transit_animate_cb(void *data);
}
static void
++<<<<<<< HEAD
++=======
+ _transit_chain_go(Elm_Transit *transit)
+ {
+ ELM_TRANSIT_CHECK_OR_RETURN(transit);
+ elm_transit_go(transit);
+ _transit_animate_cb(transit);
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_transit_del(Elm_Transit *transit)
{
Elm_Transit_Effect_Module *effect_module;
if (transit->finished && transit->next_chain_transits)
{
EINA_LIST_FOREACH_SAFE(transit->next_chain_transits, elist, elist_next, chain_transit)
++<<<<<<< HEAD
+ elm_transit_go(chain_transit);
++=======
+ _transit_chain_go(chain_transit);
+
++>>>>>>> remotes/origin/upstream
}
eina_list_free(transit->next_chain_transits);
transit->progress = elapsed_time / duration;
switch (transit->tween_mode)
{
++<<<<<<< HEAD
+ case ELM_TRANSIT_TWEEN_MODE_ACCELERATE:
+ transit->progress = 1.0 - sin((ELM_PI / 2.0) + (transit->progress * ELM_PI / 2.0));
+ break;
+ case ELM_TRANSIT_TWEEN_MODE_DECELERATE:
+ transit->progress = sin(transit->progress * ELM_PI / 2.0);
+ break;
+ case ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL:
+ transit->progress = (1.0 - cos(transit->progress * ELM_PI)) / 2.0;
++=======
+ case ELM_TRANSIT_TWEEN_MODE_LINEAR:
+ transit->progress = ecore_animator_pos_map(transit->progress,
+ ECORE_POS_MAP_LINEAR,
+ 0, 0);
+ case ELM_TRANSIT_TWEEN_MODE_ACCELERATE:
+ transit->progress = ecore_animator_pos_map(transit->progress,
+ ECORE_POS_MAP_ACCELERATE,
+ 0, 0);
+ break;
+ case ELM_TRANSIT_TWEEN_MODE_DECELERATE:
+ transit->progress = ecore_animator_pos_map(transit->progress,
+ ECORE_POS_MAP_DECELERATE,
+ 0, 0);
+ break;
+ case ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL:
+ transit->progress = ecore_animator_pos_map(transit->progress,
+ ECORE_POS_MAP_SINUSOIDAL,
+ 0, 0);
++>>>>>>> remotes/origin/upstream
break;
default:
break;
* effects, create an @ref Elm_Transit and add the desired transition effects.
*
* Once the effects are added into transit, they will be automatically
++<<<<<<< HEAD
+ * managed (their callback will be called until the duration is ended, and
+ * they will be deleted on completion).
++=======
+ * managed (their callback will be called for the set duration and
+ * they will be deleted upon completion).
++>>>>>>> remotes/origin/upstream
*
* Example:
* @code
* @li @ref elm_transit_effect_resizing_add
*
* Other transition effects are used to make one object disappear and another
++<<<<<<< HEAD
+ * object appear on its old place. These effects are:
++=======
+ * object appear on its place. These effects are:
++>>>>>>> remotes/origin/upstream
*
* @li @ref elm_transit_effect_flip_add
* @li @ref elm_transit_effect_resizable_flip_add
* elm_transit_chain_transit_add.
*
* @warning We strongly recommend to use elm_transit just when edje can not do
++<<<<<<< HEAD
+ * the trick. Edje has more advantage than Elm_Transit, it has more flexibility and
+ * animations can be manipulated inside the theme.
++=======
+ * the trick. Edje is better at handling transitions than Elm_Transit.
+ * Edje has more flexibility and animations can be manipulated inside the theme.
++>>>>>>> remotes/origin/upstream
*
* List of examples:
* @li @ref transit_example_01_explained
/**
* @enum Elm_Transit_Effect_Flip_Axis
*
++<<<<<<< HEAD
+ * The axis where flip effect should be applied.
++=======
+ * The axis along which flip effect should be applied.
++>>>>>>> remotes/origin/upstream
*/
typedef enum
{
/**
* @enum Elm_Transit_Effect_Wipe_Dir
*
++<<<<<<< HEAD
+ * The direction where the wipe effect should occur.
++=======
+ * The direction in which the wipe effect should occur.
++>>>>>>> remotes/origin/upstream
*/
typedef enum
{
typedef void (*Elm_Transit_Del_Cb)(void *data, Elm_Transit *transit);
/**
++<<<<<<< HEAD
+ * Add new transit.
+ *
+ * @note Is not necessary to delete the transit object, it will be deleted at
+ * the end of its operation.
+ * @note The transit will start playing when the program enter in the main loop, is not
+ * necessary to give a start to the transit.
++=======
+ * Create new transit.
+ *
+ * @note It is not necessary to delete the transit object, it will be deleted at
+ * the end of its operation.
+ * @note The transit will start playing when the program enters the main loop.
++>>>>>>> remotes/origin/upstream
*
* @return The transit object.
*
/**
* Stops the animation and delete the @p transit object.
*
++<<<<<<< HEAD
+ * Call this function if you wants to stop the animation before the duration
+ * time. Make sure the @p transit object is still alive with
+ * elm_transit_del_cb_set() function.
+ * All added effects will be deleted, calling its repective data_free_cb
+ * functions. The function setted by elm_transit_del_cb_set() will be called.
++=======
+ * Call this function if you want to stop the animation before the
+ * transit time. Make sure the @p transit object is still alive with
+ * elm_transit_del_cb_set() function.
+ * All added effects will be deleted, calling its respective data_free_cb
+ * functions. The function set by elm_transit_del_cb_set() will be called.
++>>>>>>> remotes/origin/upstream
*
* @see elm_transit_del_cb_set()
*
* @param transit The transit object to be deleted.
*
* @ingroup Transit
++<<<<<<< HEAD
+ * @warning Just call this function if you are sure the transit is alive.
++=======
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_transit_del(Elm_Transit *transit);
/**
* Add a new effect to the transit.
*
++<<<<<<< HEAD
+ * @note The cb function and the data are the key to the effect. If you try to
+ * add an already added effect, nothing is done.
+ * @note After the first addition of an effect in @p transit, if its
+ * effect list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ *
+ * Exemple:
++=======
+ * @note The cb function and the data are the key to the effect.
+ * If you try to add an existing effect, nothing is done.
+ * @note After the first addition of an effect to @p transit, if its
+ * effect list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ *
+ * Example:
++>>>>>>> remotes/origin/upstream
* @code
* Elm_Transit *transit = elm_transit_add();
* elm_transit_effect_add(transit,
* @p data.
*
* @ingroup Transit
++<<<<<<< HEAD
+ * @warning The transit free the context data at the and of the transition with
+ * the data_free_cb function, do not use the context data in another transit.
++=======
+ * @warning The transit will free the context data at the and of the
+ * transition with the data_free_cb function.
+ * Do not share the context data in between different transit objects.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_transit_effect_add(Elm_Transit *transit, Elm_Transit_Effect_Transition_Cb transition_cb, Elm_Transit_Effect *effect, Elm_Transit_Effect_End_Cb end_cb);
*
* @note If the effect is not found, nothing is done.
* @note If the effect list become empty, this function will call
++<<<<<<< HEAD
+ * elm_transit_del(transit), that is, it will kill the @p transit.
++=======
+ * elm_transit_del(transit), i.e., it will kill the @p transit.
++>>>>>>> remotes/origin/upstream
*
* @param transit The transit object.
* @param transition_cb The operation function.
/**
* Add new object to apply the effects.
*
++<<<<<<< HEAD
+ * @note After the first addition of an object in @p transit, if its
+ * object list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ * @note If the @p obj belongs to another transit, the @p obj will be
+ * removed from it and it will only belong to the @p transit. If the old
+ * transit stays without objects, it will die.
+ * @note When you add an object into the @p transit, its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state whith evas_object_pass_events_set()
+ * after add the object, this state will change again when @p transit stops to
+ * run.
++=======
+ * @note After the first addition of an object to @p transit, if its
+ * object list become empty again, the @p transit will be killed by
+ * elm_transit_del(transit) function.
+ * @note If the @p obj belongs to another transit, the @p obj will be
+ * removed from it and it will only belong to the other @p transit.
+ * If the old transit stays without objects, it will die.
+ * @note When you add an object into the @p transit, its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state with evas_object_pass_events_set()
+ * after add the object, this state will change again when @p transit stops.
++>>>>>>> remotes/origin/upstream
*
* @param transit The transit object.
* @param obj Object to be animated.
*
* @ingroup Transit
++<<<<<<< HEAD
+ * @warning It is not allowed to add a new object after transit begins to go.
++=======
+ * @warning It is not allowed to add a new object after transit begins.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_transit_object_add(Elm_Transit *transit, Evas_Object *obj);
*
* @note If the @p obj is not in the @p transit, nothing is done.
* @note If the list become empty, this function will call
++<<<<<<< HEAD
+ * elm_transit_del(transit), that is, it will kill the @p transit.
++=======
+ * elm_transit_del(transit), i.e., it will kill the @p transit.
++>>>>>>> remotes/origin/upstream
*
* @param transit The transit object.
* @param obj Object to be removed from @p transit.
*
* @ingroup Transit
++<<<<<<< HEAD
+ * @warning It is not allowed to remove objects after transit begins to go.
++=======
+ * @warning It is not allowed to remove objects after transit begins.
++>>>>>>> remotes/origin/upstream
*/
EAPI void elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj);
* @note One state includes geometry, color, map data.
*
* @param transit The transit object.
++<<<<<<< HEAD
+ * @param state_keep Keeping or Non Keeping.
++=======
+ * @param state_keep retain the state or not.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Transit
*/
/**
* Set the event enabled when transit is operating.
*
++<<<<<<< HEAD
+ * If @p enabled is EINA_TRUE, the objects of the transit will receives
+ * events from mouse and keyboard during the animation.
+ * @note When you add an object with elm_transit_object_add(), its state from
+ * evas_object_pass_events_get(obj) is saved, and it is applied when the
+ * transit ends, if you change this state with evas_object_pass_events_set()
++=======
+ * If @p enabled is EINA_TRUE, the objects of the transit will receive
+ * events from mouse and keyboard during the animation.
+ * @note When you add an object with elm_transit_object_add(), its state from
+ * evas_object_freeze_events_get(obj) is saved, and it is applied when the
+ * transit ends. If you change this state with evas_object_freeze_events_set()
++>>>>>>> remotes/origin/upstream
* after adding the object, this state will change again when @p transit stops
* to run.
*
/**
* Set the user-callback function when the transit is deleted.
*
++<<<<<<< HEAD
+ * @note Using this function twice will overwrite the first function setted.
++=======
+ * @note Using this function twice will overwrite the first function set.
++>>>>>>> remotes/origin/upstream
* @note the @p transit object will be deleted after call @p cb function.
*
* @param transit The transit object.
* @param cb Callback function pointer. This function will be called before
* the deletion of the transit.
++<<<<<<< HEAD
+ * @param data Callback funtion user data. It is the @p op parameter.
++=======
+ * @param data Callback function user data. It is the @p op parameter.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Transit
*/
/**
* Set reverse effect automatically.
*
++<<<<<<< HEAD
+ * If auto reverse is setted, after running the effects with the progress
+ * parameter from 0 to 1, it will call the effecs again with the progress
+ * from 1 to 0. The transit will last for a time iqual to (2 * duration * repeat),
+ * where the duration was setted with the function elm_transit_add and
++=======
+ * If auto reverse is set, after running the effects with the progress
+ * parameter from 0 to 1, it will call the effects again with the progress
+ * from 1 to 0. The transit will last for a time equal to (2 * duration * repeat),
+ * where the duration was set with the function elm_transit_add and
++>>>>>>> remotes/origin/upstream
* the repeat with the function elm_transit_repeat_times_set().
*
* @param transit The transit object.
* Set the transit repeat count. Effect will be repeated by repeat count.
*
* This function sets the number of repetition the transit will run after
++<<<<<<< HEAD
+ * the first one, that is, if @p repeat is 1, the transit will run 2 times.
++=======
+ * the first one, i.e., if @p repeat is 1, the transit will run 2 times.
++>>>>>>> remotes/origin/upstream
* If the @p repeat is a negative number, it will repeat infinite times.
*
* @note If this function is called during the transit execution, the transit
* Pause/Resume the transition.
*
* If you call elm_transit_go again, the transit will be started from the
++<<<<<<< HEAD
+ * beginning, and will be unpaused.
++=======
+ * beginning, and will be played.
++>>>>>>> remotes/origin/upstream
*
* @note @p transit can not be NULL
*
EAPI Elm_Transit_Effect *elm_transit_effect_flip_add(Elm_Transit *transit, Elm_Transit_Effect_Flip_Axis axis, Eina_Bool cw);
/**
++<<<<<<< HEAD
+ * Add the Resizable Flip Effect to Elm_Transit.
++=======
+ * Add the Resizeable Flip Effect to Elm_Transit.
++>>>>>>> remotes/origin/upstream
*
* @note This API is one of the facades. It creates resizable flip effect context
* and add it's required APIs to elm_transit_effect_add.
* @param transit Transit object.
* @param axis Flipping Axis(X or Y).
* @param cw Flipping Direction. EINA_TRUE is clock-wise.
++<<<<<<< HEAD
+ * @return Resizable flip effect context data.
++=======
+ * @return Resizeable flip effect context data.
++>>>>>>> remotes/origin/upstream
*
* @ingroup Transit
* @warning It is highly recommended just create a transit with this effect when
}
if (!strcmp(ev->keyname, "space"))
{
++<<<<<<< HEAD
+ if (elm_video_is_playing(obj))
++=======
+ if (elm_video_is_playing_get(obj))
++>>>>>>> remotes/origin/upstream
elm_video_pause(obj);
else
elm_video_play(obj);
#endif
}
++<<<<<<< HEAD
+EAPI void
+elm_video_file_set(Evas_Object *video, const char *filename)
+{
+#ifdef HAVE_EMOTION
+ ELM_CHECK_WIDTYPE(video, widtype);
++=======
+ EAPI Eina_Bool
+ elm_video_file_set(Evas_Object *video, const char *filename)
+ {
+ #ifdef HAVE_EMOTION
+ ELM_CHECK_WIDTYPE(video, widtype) EINA_FALSE;
++>>>>>>> remotes/origin/upstream
Widget_Data *wd = elm_widget_data_get(video);
if (wd->remember) emotion_object_last_position_save(wd->emotion);
wd->stop = EINA_FALSE;
++<<<<<<< HEAD
+ emotion_object_file_set(wd->emotion, filename);
+ emotion_object_last_position_load(wd->emotion);
+ edje_object_signal_emit(wd->layout, "elm,video,load", "elm");
+#else
+ (void) video;
+ (void) filename;
+#endif
+}
+
+EAPI void
++=======
+ if (!emotion_object_file_set(wd->emotion, filename)) return EINA_FALSE;
+
+ if ((!strncmp(filename, "file://", 7)) || (!strstr(filename, "://")))
+ emotion_object_last_position_load(wd->emotion);
+
+ edje_object_signal_emit(wd->layout, "elm,video,load", "elm");
+
+ return EINA_TRUE;
+ #else
+ (void) video;
+ (void) filename;
+
+ return EINA_FALSE;
+ #endif
+ }
+
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_video_uri_set(Evas_Object *video, const char *uri)
{
#ifdef HAVE_EMOTION
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_video_is_playing(const Evas_Object *video)
++=======
+ elm_video_is_playing_get(const Evas_Object *video)
++>>>>>>> remotes/origin/upstream
{
#ifdef HAVE_EMOTION
ELM_CHECK_WIDTYPE(video, widtype) EINA_FALSE;
}
EAPI Eina_Bool
++<<<<<<< HEAD
+elm_video_is_seekable(const Evas_Object *video)
++=======
+ elm_video_is_seekable_get(const Evas_Object *video)
++>>>>>>> remotes/origin/upstream
{
#ifdef HAVE_EMOTION
ELM_CHECK_WIDTYPE(video, widtype) EINA_FALSE;
* @{
*
* Elementary comes with two object that help design application that need
++<<<<<<< HEAD
+ * to display video. The main one, Elm_Video, display a video by using Emotion.
+ * It does embedded the video inside an Edje object, so you can do some
+ * animation depending on the video state change. It does also implement a
+ * ressource management policy to remove this burden from the application writer.
+ *
+ * The second one, Elm_Player is a video player that need to be linked with and Elm_Video.
+ * It take care of updating its content according to Emotion event and provide a
+ * way to theme itself. It also does automatically raise the priority of the
+ * linked Elm_Video so it will use the video decoder if available. It also does
+ * activate the remember function on the linked Elm_Video object.
++=======
+ * to display video.
+ *
+ * The first one, Elm_Video, display a video by using Emotion.
+ * It embeds the video inside an Edje object, so you can do some
+ * animation depending on the video state change. It also implements a
+ * resource management policy to remove this burden from the application.
+ *
+ * The second one,
+ * Elm_Player is a video player that need to be linked with an Elm_Video.
+ * It take care of updating its content according to Emotion event and provide a
+ * way to theme itself. It also automatically raises the priority of the
+ * linked Elm_Video so it will use the video decoder, if available. It also
+ * activates the "remember" function on the linked Elm_Video object.
++>>>>>>> remotes/origin/upstream
*
* Signals that you can add callback for are :
*
* "rewind,clicked" - the user clicked the rewind button.
* "stop,clicked" - the user clicked the stop button.
*
++<<<<<<< HEAD
+ * Default contents parts of the player widget that you can use for are:
++=======
+ * Default content parts of the player widget that you can use for are:
++>>>>>>> remotes/origin/upstream
* @li "video" - A video of the player
*
*/
* This function inserts a new video widget on the canvas.
*
* @see elm_video_file_set()
++<<<<<<< HEAD
+ * @see elm_video_uri_set()
++=======
++>>>>>>> remotes/origin/upstream
*
* @ingroup Video
*/
EAPI Evas_Object *elm_video_add(Evas_Object *parent);
/**
++<<<<<<< HEAD
+ * @brief Define the file that will be the video source.
+ *
+ * @param video The video object to define the file for.
+ * @param filename The file to target.
+ *
+ * This function will explicitly define a filename as a source
+ * for the video of the Elm_Video object.
+ *
+ * @see elm_video_uri_set()
+ * @see elm_video_add()
+ * @see elm_player_add()
+ *
+ * @ingroup Video
+ */
+EAPI void elm_video_file_set(Evas_Object *video, const char *filename);
+
+/**
+ * @brief Define the uri that will be the video source.
+ *
+ * @param video The video object to define the file for.
+ * @param uri The uri to target.
+ *
+ * This function will define an uri as a source for the video of the
+ * Elm_Video object. URI could be remote source of video, like http:// or local source
+ * like for example WebCam who are most of the time v4l2:// (but that depend and
+ * you should use Emotion API to request and list the available Webcam on your system).
+ *
+ * @see elm_video_file_set()
++=======
+ * @brief Define the file or URI that will be the video source.
+ *
+ * @param video The video object to define the file or URI for the video
+ * of the Elm_Video object.
+ *
+ * @param filename The file or URI to target.
+ * Local files can be specified using file:// or by using full file paths.
+ * URI could be remote source of video, like http:// or local source like
+ * WebCam (v4l2://). (You can use Emotion API to request and list
+ * the available Webcam on your system).
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise
+ *
+ * This function will explicitly define a file or URI as a source
+ * for the video of the Elm_Video object.
+ *
++>>>>>>> remotes/origin/upstream
* @see elm_video_add()
* @see elm_player_add()
*
* @ingroup Video
*/
++<<<<<<< HEAD
+EAPI void elm_video_uri_set(Evas_Object *video, const char *uri);
++=======
+ EAPI Eina_Bool elm_video_file_set(Evas_Object *video, const char *filename);
++>>>>>>> remotes/origin/upstream
/**
* @brief Get the underlying Emotion object.
*
* @ingroup Video
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_video_is_playing(const Evas_Object *video);
++=======
+ EAPI Eina_Bool elm_video_is_playing_get(const Evas_Object *video);
++>>>>>>> remotes/origin/upstream
/**
* @brief Is it possible to seek inside the video.
*
* @ingroup Video
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_video_is_seekable(const Evas_Object *video);
++=======
+ EAPI Eina_Bool elm_video_is_seekable_get(const Evas_Object *video);
++>>>>>>> remotes/origin/upstream
/**
* @brief Is the audio muted.
EAPI double elm_video_audio_level_get(const Evas_Object *video);
/**
++<<<<<<< HEAD
+ * @brief Set the audio level of anElm_Video object.
++=======
+ * @brief Set the audio level of an Elm_Video object.
++>>>>>>> remotes/origin/upstream
*
* @param video The video object to proceed the request on.
* @param volume The new audio volume.
*/
EAPI void elm_video_audio_level_set(Evas_Object *video, double volume);
++<<<<<<< HEAD
++EAPI double elm_video_play_position_get(const Evas_Object *video);
++EAPI void elm_video_play_position_set(Evas_Object *video, double position);
++EAPI double elm_video_play_length_get(const Evas_Object *video);
++EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
++EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
++=======
+ /**
+ * @brief Get the current position (in seconds) being played in the
+ * Elm_Video object.
+ *
+ * @param video The video object.
+ * @return the time(in seconds) since the beginning of the media file.
+ *
+ * @ingroup Video
+ */
EAPI double elm_video_play_position_get(const Evas_Object *video);
+
+ /**
+ * @brief Set the current position (in seconds) to be played in the
+ * Elm_Video object.
+ *
+ * @param video The video object.
+ * @param position the time(in seconds) since the beginning of the media file.
+ *
+ * @ingroup Video
+ */
EAPI void elm_video_play_position_set(Evas_Object *video, double position);
+ /**
+ * @brief Get the total playing time (in seconds) of the Elm_Video object.
+ *
+ * @param video The video object.
+ * @return the total duration(in seconds) of the media file.
+ *
+ * @ingroup Video
+ */
EAPI double elm_video_play_length_get(const Evas_Object *video);
+
+ /**
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param video The video object.
+ * @param remember the last played position of the Elm_Video object.
+ *
+ * @note This API only serves as indication. System support is required.
+ *
+ * @ingroup Video
+ */
EAPI void elm_video_remember_position_set(Evas_Object *video, Eina_Bool remember);
+
+ /**
+ * @brief Set whether the object can remember the last played position.
+ *
+ * @param video The video object.
+ * @return whether the object remembers the last played position (EINA_TRUE)
+ * or not.
+ *
+ * @note This API only serves as indication. System support is required.
+ *
+ * @ingroup Video
+ */
EAPI Eina_Bool elm_video_remember_position_get(const Evas_Object *video);
+
+ /**
+ * @brief Get the title (for ex. DVD title) from this emotion object.
+ *
+ * @param video The Elm_Video object.
+ * @return A string containing the title.
+ *
+ * This function is only useful when playing a DVD.
+ *
+ * @note Don't change or free the string returned by this function.
+ *
+ * @ingroup Video
+ */
++>>>>>>> remotes/origin/upstream
EAPI const char *elm_video_title_get(const Evas_Object *video);
/**
* @}
{ NULL, NULL }
};
++<<<<<<< HEAD
+static void
+_theme_hook(Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_WEB
+ Elm_Theme *theme = elm_object_theme_get(obj);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ const Eina_List *themes, *l;
+ const char *th;
+ char *view_theme = NULL;
+
+ themes = elm_theme_list_get(theme);
+ EINA_LIST_FOREACH(themes, l, th)
++=======
+ #ifdef HAVE_ELEMENTARY_WEB
+ static char *
+ _webkit_theme_find(const Eina_List *list)
+ {
+ const Eina_List *l;
+ const char *th;
+
+ EINA_LIST_FOREACH(list, l, th)
++>>>>>>> remotes/origin/upstream
{
char *path = elm_theme_list_item_path_get(th, NULL);
if (!path) continue;
if (edje_file_group_exists(path, "webkit/base"))
++<<<<<<< HEAD
+ {
+ view_theme = path;
+ break;
+ }
+ free(path);
+ }
+
++=======
+ return path;
+ free(path);
+ }
+
+ return NULL;
+ }
+ #endif
+
+ static void
+ _theme_hook(Evas_Object *obj)
+ {
+ #ifdef HAVE_ELEMENTARY_WEB
+ Elm_Theme *theme = elm_object_theme_get(obj);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ const Eina_List *themes;
+ char *view_theme = NULL;
+
+ themes = elm_theme_overlay_list_get(theme);
+ view_theme = _webkit_theme_find(themes);
+ if (view_theme) goto set;
+
+ themes = elm_theme_list_get(theme);
+ view_theme = _webkit_theme_find(themes);
+ if (view_theme) goto set;
+
+ themes = elm_theme_extension_list_get(theme);
+ view_theme = _webkit_theme_find(themes);
+
+ set:
++>>>>>>> remotes/origin/upstream
if (view_theme)
{
ewk_view_theme_set(wd->ewk_view, view_theme);
return;
notify = elm_notify_add(obj);
++<<<<<<< HEAD
+ elm_notify_repeat_events_set(notify, EINA_FALSE);
+ elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
+
+ list = elm_list_add(obj);
+ elm_list_always_select_mode_set(list, EINA_TRUE);
++=======
+ elm_notify_allow_events_set(notify, EINA_FALSE);
+ elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
+
+ list = elm_list_add(obj);
+ elm_list_select_mode_set(data, ELM_OBJECT_SELECT_MODE_ALWAYS);
++>>>>>>> remotes/origin/upstream
elm_list_bounce_set(list, EINA_FALSE, EINA_FALSE);
elm_list_mode_set(list, ELM_LIST_EXPAND);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
#endif
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_web_back_possible(Evas_Object *obj)
+{
++=======
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_web_back_possible(Evas_Object *obj)
+ {
+ return elm_web_back_possible_get(obj);
+ }
+
+ EAPI Eina_Bool
+ elm_web_back_possible_get(Evas_Object *obj)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
#ifdef HAVE_ELEMENTARY_WEB
Widget_Data *wd = elm_widget_data_get(obj);
#endif
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_web_forward_possible(Evas_Object *obj)
+{
++=======
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_web_forward_possible(Evas_Object *obj)
+ {
+ return elm_web_forward_possible_get(obj);
+ }
+
+ EAPI Eina_Bool
+ elm_web_forward_possible_get(Evas_Object *obj)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
#ifdef HAVE_ELEMENTARY_WEB
Widget_Data *wd = elm_widget_data_get(obj);
#endif
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_web_history_enable_get(const Evas_Object *obj)
+{
++=======
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_web_history_enable_get(const Evas_Object *obj)
+ {
+ return elm_web_history_enabled_get(obj);
+ }
+
+ EAPI Eina_Bool
+ elm_web_history_enabled_get(const Evas_Object *obj)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
#ifdef HAVE_ELEMENTARY_WEB
Widget_Data *wd = elm_widget_data_get(obj);
#endif
}
++<<<<<<< HEAD
+EAPI void
+elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable)
+{
++=======
+ EINA_DEPRECATED EAPI void
+ elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable)
+ {
+ elm_web_history_enabled_set(obj, enable);
+ }
+
+ EAPI void
+ elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enable)
+ {
++>>>>>>> remotes/origin/upstream
ELM_CHECK_WIDTYPE(obj, widtype);
#ifdef HAVE_ELEMENTARY_WEB
Widget_Data *wd = elm_widget_data_get(obj);
#endif
}
++<<<<<<< HEAD
+EAPI void
+elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visible, Eina_Bool *fullscreen)
+{
+#ifdef HAVE_ELEMENTARY_WEB
+ ewk_window_features_bool_property_get((const Ewk_Window_Features *)wf,
+ toolbar_visible, statusbar_visible,
+ scrollbars_visible, menubar_visible,
+ locationbar_visible, fullscreen);
+#else
++=======
+ EAPI Eina_Bool
+ elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag)
+ {
+ #ifdef HAVE_ELEMENTARY_WEB
+ Eina_Bool toolbar_visible, statusbar_visible;
+ Eina_Bool scrollbars_visible, menubar_visible;
+ Eina_Bool locationbar_visible, fullscreen;
+
+ ewk_window_features_bool_property_get((const Ewk_Window_Features *)wf,
+ &toolbar_visible, &statusbar_visible,
+ &scrollbars_visible, &menubar_visible,
+ &locationbar_visible, &fullscreen);
+
+ //TODO : Improve ewk API usage to get one value.
+ //
+ switch(flag)
+ {
+ case ELM_WEB_WINDOW_FEATURE_TOOLBAR:
+ return toolbar_visible;
+ break;
+ case ELM_WEB_WINDOW_FEATURE_STATUSBAR:
+ return statusbar_visible;
+ break;
+ case ELM_WEB_WINDOW_FEATURE_SCROLLBARS:
+ return scrollbars_visible;
+ break;
+ case ELM_WEB_WINDOW_FEATURE_MENUBAR:
+ return menubar_visible;
+ break;
+ case ELM_WEB_WINDOW_FEATURE_LOCATIONBAR:
+ return locationbar_visible;
+ break;
+ case ELM_WEB_WINDOW_FEATURE_FULLSCREEN:
+ return fullscreen;
+ break;
+ }
+ #else
+
+ if (!wf) return EINA_FALSE;
+ if (flag==ELM_WEB_WINDOW_FEATURE_TOOLBAR)
+ {
+ //TODO Handle unused variable warnings when
+ //ewk is not installed.
+ }
+
+ /* What to do with these ?
+
++>>>>>>> remotes/origin/upstream
(void)wf;
(void)toolbar_visible;
(void)statusbar_visible;
(void)menubar_visible;
(void)locationbar_visible;
(void)fullscreen;
++<<<<<<< HEAD
+#endif
+}
+
+EAPI void
+elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h)
++=======
+
+ */
+
+ #endif
+ return EINA_FALSE;
+ }
+
+ EAPI void
+ elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
++>>>>>>> remotes/origin/upstream
{
#ifdef HAVE_ELEMENTARY_WEB
ewk_window_features_int_property_get((const Ewk_Window_Features *)wf,
x, y, w, h);
#else
++<<<<<<< HEAD
++=======
+
+ if (!wf || !x || !y || !w || !h) return;
+ /* What to do with these ?
+
++>>>>>>> remotes/origin/upstream
(void)wf;
(void)x;
(void)y;
(void)w;
(void)h;
++<<<<<<< HEAD
++=======
+
+ */
+
++>>>>>>> remotes/origin/upstream
#endif
}
* @image html img/widget/web/preview-00.png
* @image latex img/widget/web/preview-00.eps
*
++<<<<<<< HEAD
+ * A web object is used for displaying web pages (HTML/CSS/JS)
++=======
+ * A web widget is used for displaying web pages (HTML/CSS/JS)
++>>>>>>> remotes/origin/upstream
* using WebKit-EFL. You must have compiled Elementary with
* ewebkit support.
*
struct _Elm_Web_Frame_Load_Error
{
int code; /**< Numeric error code */
++<<<<<<< HEAD
+ Eina_Bool is_cancellation; /**< Error produced by cancelling a request */
++=======
+ Eina_Bool is_cancellation; /**< Error produced by canceling a request */
++>>>>>>> remotes/origin/upstream
const char *domain; /**< Error domain name */
const char *description; /**< Error description (already localized) */
const char *failing_url; /**< The URL that failed to load */
*/
typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
++<<<<<<< HEAD
++=======
+
+ /**
+ * Definitions of web window features.
+ *
+ */
+ typedef enum
+ {
+ ELM_WEB_WINDOW_FEATURE_TOOLBAR,
+ ELM_WEB_WINDOW_FEATURE_STATUSBAR,
+ ELM_WEB_WINDOW_FEATURE_SCROLLBARS,
+ ELM_WEB_WINDOW_FEATURE_MENUBAR,
+ ELM_WEB_WINDOW_FEATURE_LOCATIONBAR,
+ ELM_WEB_WINDOW_FEATURE_FULLSCREEN
+ } Elm_Web_Window_Feature_Flag;
+
++>>>>>>> remotes/origin/upstream
/**
* Callback type for the create_window hook.
*
* @li @p data User data pointer set when setting the hook function
* @li @p obj The elm_web object requesting the new window
* @li @p message The message to show in the confirm dialog
++<<<<<<< HEAD
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
++=======
+ * @li @p ret Pointer to store the user selection. @c EINA_TRUE if
++>>>>>>> remotes/origin/upstream
* the user selected @c Ok, @c EINA_FALSE otherwise.
*
* The function should return the object representing the confirm dialog.
* @li @p obj The elm_web object requesting the new window
* @li @p message The message to show in the prompt dialog
* @li @p def_value The default value to present the user in the entry
++<<<<<<< HEAD
+ * @li @p value Pointer where to store the value given by the user. Must
+ * be a malloc'ed string or @c NULL if the user cancelled the popup.
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
++=======
+ * @li @p value Pointer to store the value given by the user. Must
+ * be a malloc'ed string or @c NULL if the user canceled the popup.
+ * @li @p ret Pointer to store the user selection. @c EINA_TRUE if
++>>>>>>> remotes/origin/upstream
* the user selected @c Ok, @c EINA_FALSE otherwise.
*
* The function should return the object representing the prompt dialog.
* @li @p obj The elm_web object requesting the new window
* @li @p allows_multiple @c EINA_TRUE if multiple files can be selected.
* @li @p accept_types Mime types accepted
++<<<<<<< HEAD
+ * @li @p selected Pointer where to store the list of malloc'ed strings
+ * containing the path to each file selected. Must be @c NULL if the file
+ * dialog is cancelled
+ * @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
++=======
+ * @li @p selected Pointer to store the list of malloc'ed strings
+ * containing the path to each file selected. Must be @c NULL if the file
+ * dialog is canceled
+ * @li @p ret Pointer to store the user selection. @c EINA_TRUE if
++>>>>>>> remotes/origin/upstream
* the user selected @c Ok, @c EINA_FALSE otherwise.
*
* The function should return the object representing the file selector
* Change useragent of a elm_web object
*
* @param obj The object
++<<<<<<< HEAD
+ * @param useragent String for useragent
++=======
+ * @param user_agent String for useragent
++>>>>>>> remotes/origin/upstream
*
*/
EAPI void elm_web_useragent_set(Evas_Object *obj, const char *user_agent);
*
* @param obj The web object
* @param uri The URI to set
++<<<<<<< HEAD
+ * @return EINA_TRUE if the URI could be, EINA_FALSE if an error occurred
++=======
+ * @return EINA_TRUE if the URI could be set, EINA_FALSE if an error occurred
++>>>>>>> remotes/origin/upstream
*/
EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
* @return A newly allocated string, or NULL if nothing is selected or an
* error occurred
*/
++<<<<<<< HEAD
+EAPI char *elm_view_selection_get(const Evas_Object *obj);
++=======
+ EAPI char *elm_web_selection_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Tells the web object which index in the currently open popup was selected
/**
* Gets whether highlighting marks is enabled
*
++<<<<<<< HEAD
+ * @param The web object
++=======
+ * @param obj The web object
++>>>>>>> remotes/origin/upstream
*
* @return EINA_TRUE is marks are set to be highlighted, EINA_FALSE
* otherwise
* 0.0 and 1.0. This is an estimated progress accounting for all the frames
* included in the page.
*
++<<<<<<< HEAD
+ * @param The web object
++=======
+ * @param obj The web object
++>>>>>>> remotes/origin/upstream
*
* @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
* failure
*
* @return EINA_TRUE on success, EINA_FALSE otherwise
*
++<<<<<<< HEAD
+ * @see elm_web_history_enable_set()
++=======
+ * @see elm_web_history_enabled_set()
++>>>>>>> remotes/origin/upstream
* @see elm_web_back_possible()
* @see elm_web_forward()
* @see elm_web_navigate()
*
* @return EINA_TRUE on success, EINA_FALSE otherwise
*
++<<<<<<< HEAD
+ * @see elm_web_history_enable_set()
+ * @see elm_web_forward_possible()
++=======
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_forward_possible_get()
++>>>>>>> remotes/origin/upstream
* @see elm_web_back()
* @see elm_web_navigate()
*/
* @return EINA_TRUE on success, EINA_FALSE on error or if not enough
* history exists to jump the given number of steps
*
++<<<<<<< HEAD
+ * @see elm_web_history_enable_set()
+ * @see elm_web_navigate_possible()
++=======
+ * @see elm_web_history_enabled_set()
+ * @see elm_web_navigate_possible_get()
++>>>>>>> remotes/origin/upstream
* @see elm_web_back()
* @see elm_web_forward()
*/
* @return EINA_TRUE if it's possible to back in history, EINA_FALSE
* otherwise
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_web_back_possible(Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_web_back_possible_get(Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Queries whether it's possible to go forward in history
* @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
* otherwise
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_web_forward_possible(Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_web_forward_possible_get(Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Queries whether it's possible to jump the given number of steps
* @return EINA_TRUE if enough history exists to perform the given jump,
* EINA_FALSE otherwise
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_web_navigate_possible(Evas_Object *obj, int steps);
++=======
+ EAPI Eina_Bool elm_web_navigate_possible_get(Evas_Object *obj, int steps);
++>>>>>>> remotes/origin/upstream
/**
* Gets whether browsing history is enabled for the given object
*
* @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
*/
++<<<<<<< HEAD
+EAPI Eina_Bool elm_web_history_enable_get(const Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_web_history_enabled_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
/**
* Enables or disables the browsing history
*
* @param obj The web object
++<<<<<<< HEAD
+ * @param enable Whether to enable or disable the browsing history
+ */
+EAPI void elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
++=======
+ * @param enabled Whether to enable or disable the browsing history
+ */
+ EAPI void elm_web_history_enabled_set(Evas_Object *obj, Eina_Bool enabled);
++>>>>>>> remotes/origin/upstream
/**
* Sets the zoom level of the web object
EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
++<<<<<<< HEAD
+EAPI void elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visble, Eina_Bool *fullscreen);
+EAPI void elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h);
++=======
+
+ /**
+ * Gets boolean properties from Elm_Web_Window_Features
+ * (such as statusbar, menubar, etc) that are on a window.
+ *
+ * @param obj The web window features object
+ * @param flag The web window feature flag whose value is required.
+ *
+ * @return EINA_TRUE if the flag is set, EINA_FALSE otherwise
+ */
+ EAPI Eina_Bool elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag);
+
+ /**
+ *
+ * TODO : Add documentation.
+ *
+ * @param obj The web window features object
+ * @param x, y, w, h - the co-ordinates of the web view window.
+ *
+ */
+ EAPI void elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
++>>>>>>> remotes/origin/upstream
/**
* @}
typedef struct _Edje_Signal_Data Edje_Signal_Data;
typedef struct _Elm_Event_Cb_Data Elm_Event_Cb_Data;
typedef struct _Elm_Translate_String_Data Elm_Translate_String_Data;
++<<<<<<< HEAD
++=======
+ typedef struct _Elm_Widget_Item_Callback Elm_Widget_Item_Callback;
++>>>>>>> remotes/origin/upstream
struct _Smart_Data
{
const char *string;
};
++<<<<<<< HEAD
++=======
+ struct _Elm_Widget_Item_Callback
+ {
+ const char *event;
+ Elm_Object_Item_Smart_Cb func;
+ void *data;
+ int walking : 1;
+ Eina_Bool delete_me : 1;
+ };
+
+
++>>>>>>> remotes/origin/upstream
/* local subsystem functions */
static void _smart_reconfigure(Smart_Data *sd);
static void _smart_add(Evas_Object *obj);
Evas_Object *obj;
_smart_init();
obj = evas_object_smart_add(evas, _e_smart);
++<<<<<<< HEAD
+ elm_widget_mirrored_set(obj, elm_mirrored_get());
++=======
+ elm_widget_mirrored_set(obj, elm_config_mirrored_get());
++>>>>>>> remotes/origin/upstream
return obj;
}
sd->callback_del_func = func;
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_widget_theme(Evas_Object *obj)
{
const Eina_List *l;
Evas_Object *child;
Elm_Tooltip *tt;
Elm_Cursor *cur;
++<<<<<<< HEAD
+
+ API_ENTRY return;
+ EINA_LIST_FOREACH(sd->subobjs, l, child) elm_widget_theme(child);
+ if (sd->resize_obj) elm_widget_theme(sd->resize_obj);
+ if (sd->hover_obj) elm_widget_theme(sd->hover_obj);
+ EINA_LIST_FOREACH(sd->tooltips, l, tt) elm_tooltip_theme(tt);
+ EINA_LIST_FOREACH(sd->cursors, l, cur) elm_cursor_theme(cur);
+ if (sd->theme_func) sd->theme_func(obj);
++=======
+ Eina_Bool ret = EINA_TRUE;
+
+ API_ENTRY return EINA_FALSE;
+ EINA_LIST_FOREACH(sd->subobjs, l, child) ret &= elm_widget_theme(child);
+ if (sd->resize_obj) ret &= elm_widget_theme(sd->resize_obj);
+ if (sd->hover_obj) ret &= elm_widget_theme(sd->hover_obj);
+ EINA_LIST_FOREACH(sd->tooltips, l, tt) elm_tooltip_theme(tt);
+ EINA_LIST_FOREACH(sd->cursors, l, cur) elm_cursor_theme(cur);
+ if (sd->theme_func) sd->theme_func(obj);
+
+ return ret;
++>>>>>>> remotes/origin/upstream
}
EAPI void
_elm_widget_mirrored_reload(Evas_Object *obj)
{
API_ENTRY return;
++<<<<<<< HEAD
+ Eina_Bool mirrored = elm_mirrored_get();
++=======
+ Eina_Bool mirrored = elm_config_mirrored_get();
++>>>>>>> remotes/origin/upstream
if (elm_widget_mirrored_automatic_get(obj) && (sd->is_mirrored != mirrored))
{
sd->is_mirrored = mirrored;
if (automatic)
{
++<<<<<<< HEAD
+ elm_widget_mirrored_set(obj, elm_mirrored_get());
++=======
+ elm_widget_mirrored_set(obj, elm_config_mirrored_get());
++>>>>>>> remotes/origin/upstream
}
}
}
Elm_Theme *th, *pth = elm_widget_theme_get(sobj);
Eina_Bool mirrored, pmirrored = elm_widget_mirrored_get(obj);
++<<<<<<< HEAD
++=======
+ if (sobj == sd->parent_obj)
+ {
+ elm_widget_sub_object_del(sobj, obj);
+ WRN("You passed a parent object of obj = %p as the sub object = %p!", obj, sobj);
+ }
+
++>>>>>>> remotes/origin/upstream
if (_elm_widget_is(sobj))
{
Smart_Data *sd2 = evas_object_smart_data_get(sobj);
{
Smart_Data *sd2 = evas_object_smart_data_get(sd->resize_obj);
if (sd2) sd2->parent_obj = NULL;
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_HIDE,
++=======
+ evas_object_event_callback_del_full(sd->resize_obj,
+ EVAS_CALLBACK_HIDE,
++>>>>>>> remotes/origin/upstream
_sub_obj_hide, sd);
}
evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_DEL,
_sub_obj_del, sd);
++<<<<<<< HEAD
+ evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_MOUSE_DOWN,
+ _sub_obj_mouse_down, sd);
+ evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_MOUSE_MOVE,
+ _sub_obj_mouse_move, sd);
+ evas_object_event_callback_del_full(sd->resize_obj, EVAS_CALLBACK_MOUSE_UP,
+ _sub_obj_mouse_up, sd);
+ evas_object_smart_member_del(sd->resize_obj);
++=======
+ evas_object_event_callback_del_full(sd->resize_obj,
+ EVAS_CALLBACK_MOUSE_DOWN,
+ _sub_obj_mouse_down, sd);
+ evas_object_event_callback_del_full(sd->resize_obj,
+ EVAS_CALLBACK_MOUSE_MOVE,
+ _sub_obj_mouse_move, sd);
+ evas_object_event_callback_del_full(sd->resize_obj,
+ EVAS_CALLBACK_MOUSE_UP,
+ _sub_obj_mouse_up, sd);
+ evas_object_smart_member_del(sd->resize_obj);
+
++>>>>>>> remotes/origin/upstream
if (_elm_widget_is(sd->resize_obj))
{
if (elm_widget_focus_get(sd->resize_obj)) _unfocus_parents(obj);
Eina_Bool can_focus)
{
API_ENTRY return;
++<<<<<<< HEAD
+ sd->can_focus = can_focus;
+ if (can_focus)
++=======
+
+ can_focus = !!can_focus;
+
+ if (sd->can_focus == can_focus) return;
+ sd->can_focus = can_focus;
+ if (sd->can_focus)
++>>>>>>> remotes/origin/upstream
{
evas_object_event_callback_add(obj, EVAS_CALLBACK_KEY_DOWN,
_propagate_event,
{
API_ENTRY return;
++<<<<<<< HEAD
+ if (sd->tree_unfocusable == tree_unfocusable) return;
+ sd->tree_unfocusable = !!tree_unfocusable;
++=======
+ tree_unfocusable = !!tree_unfocusable;
+ if (sd->tree_unfocusable == tree_unfocusable) return;
+ sd->tree_unfocusable = tree_unfocusable;
++>>>>>>> remotes/origin/upstream
elm_widget_focus_tree_unfocusable_handle(obj);
}
{
API_ENTRY return;
EINA_SAFETY_ON_NULL_RETURN(child);
++<<<<<<< HEAD
+ if (!sd->focus_next_func)
+ return;
++=======
+ if (!sd->focus_next_func) return;
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_del_full(child, EVAS_CALLBACK_DEL,
_elm_object_focus_chain_del_cb, sd);
if (!relative_child)
++<<<<<<< HEAD
+ {
+ sd->focus_chain = eina_list_append(sd->focus_chain, child);
+ return;
+ }
+
+ sd->focus_chain = eina_list_append_relative(sd->focus_chain, child, relative_child);
+ return;
++=======
+ sd->focus_chain = eina_list_append(sd->focus_chain, child);
+ else
+ sd->focus_chain = eina_list_append_relative(sd->focus_chain,
+ child, relative_child);
++>>>>>>> remotes/origin/upstream
}
/**
{
API_ENTRY return;
EINA_SAFETY_ON_NULL_RETURN(child);
++<<<<<<< HEAD
+ if (!sd->focus_next_func)
+ return;
++=======
+
+ if (!sd->focus_next_func) return;
++>>>>>>> remotes/origin/upstream
evas_object_event_callback_del_full(child, EVAS_CALLBACK_DEL,
_elm_object_focus_chain_del_cb, sd);
if (!relative_child)
++<<<<<<< HEAD
+ {
+ sd->focus_chain = eina_list_prepend(sd->focus_chain, child);
+ return;
+ }
+
+ sd->focus_chain = eina_list_prepend_relative(sd->focus_chain, child, relative_child);
+ return;
++=======
+ sd->focus_chain = eina_list_prepend(sd->focus_chain, child);
+ else
+ sd->focus_chain = eina_list_prepend_relative(sd->focus_chain,
+ child, relative_child);
++>>>>>>> remotes/origin/upstream
}
/**
*
* @ingroup Widget
*/
++<<<<<<< HEAD
+EAPI void
++=======
+ //FIXME: If x, y indicates the elements of the directional vector,
+ //It would be better if these values are the normalized value(float x, float y)
+ //or degree.
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_widget_focus_direction_go(Evas_Object *obj __UNUSED__,
int x __UNUSED__,
int y __UNUSED__)
eina_stringshare_del(esd->source);
data = esd->data;
free(esd);
++<<<<<<< HEAD
+ break;
+ }
+ }
+ sd->callback_del_func(obj, emission, source, _edje_signal_callback, esd);
++=======
+
+ sd->callback_del_func
+ (obj, emission, source, _edje_signal_callback, esd);
+ return data;
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
return data;
}
Evas_Object *parent_obj, *child_obj;
Evas_Coord px, py, cx, cy;
++<<<<<<< HEAD
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+
+ API_ENTRY return;
+ if (!forceshow && (x == sd->rx) && (y == sd->ry)
+ && (w == sd->rw) && (h == sd->rh)) return;
++=======
+ API_ENTRY return;
+
+ evas_smart_objects_calculate(evas_object_evas_get(obj));
+
+ if (!forceshow && (x == sd->rx) && (y == sd->ry) &&
+ (w == sd->rw) && (h == sd->rh)) return;
++>>>>>>> remotes/origin/upstream
sd->rx = x;
sd->ry = y;
sd->rw = w;
}
EAPI const char *
++<<<<<<< HEAD
+elm_widget_access_info_get(Evas_Object *obj)
++=======
+ elm_widget_access_info_get(const Evas_Object *obj)
++>>>>>>> remotes/origin/upstream
{
API_ENTRY return NULL;
return sd->access_info;
return sd->theme;
}
++<<<<<<< HEAD
+EAPI void
+elm_widget_style_set(Evas_Object *obj,
+ const char *style)
+{
+ API_ENTRY return;
+
+ if (eina_stringshare_replace(&sd->style, style))
+ elm_widget_theme(obj);
++=======
+ EAPI Eina_Bool
+ elm_widget_style_set(Evas_Object *obj,
+ const char *style)
+ {
+ API_ENTRY return EINA_FALSE;
+
+ if (eina_stringshare_replace(&sd->style, style))
+ return elm_widget_theme(obj);
+
+ return EINA_TRUE;
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
EAPI void
elm_widget_focus_hide_handle(Evas_Object *obj)
{
++<<<<<<< HEAD
++=======
+ if (!_elm_widget_is(obj))
+ return;
++>>>>>>> remotes/origin/upstream
_if_focused_revert(obj, EINA_TRUE);
}
{
API_ENTRY return;
++<<<<<<< HEAD
++=======
+ //FIXME: Need to check whether the object is unfocusable or not.
+
++>>>>>>> remotes/origin/upstream
if (!elm_widget_parent_get(obj))
elm_widget_focused_object_clear(obj);
else
elm_widget_focus_tree_unfocusable_handle(obj);
}
++<<<<<<< HEAD
++=======
+ EAPI unsigned int
+ elm_widget_focus_order_get(const Evas_Object *obj)
+ {
+ API_ENTRY return 0;
+ return sd->focus_order;
+ }
+
++>>>>>>> remotes/origin/upstream
/**
* @internal
*
return item;
}
++<<<<<<< HEAD
+void
+_elm_widget_item_free(Elm_Widget_Item *item)
+{
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
++=======
+ EAPI void
+ _elm_widget_item_free(Elm_Widget_Item *item)
+ {
+ ELM_WIDGET_ITEM_FREE_OR_RETURN(item);
+ Elm_Object_Item_Smart_Cb cb;
+
+ if (item->walking > 0)
+ {
+ item->delete_me = EINA_TRUE;
+ return;
+ }
+
+ EINA_LIST_FREE(item->callbacks, cb) free(cb);
++>>>>>>> remotes/origin/upstream
if (item->del_func)
item->del_func((void *)item->data, item->widget, item);
//Widget item delete callback
if (item->del_pre_func)
{
++<<<<<<< HEAD
+ if (item->del_pre_func((Elm_Object_Item *) item))
+ _elm_widget_item_free(item);
+ }
++=======
+ if (item->del_pre_func((Elm_Object_Item *)item))
+ _elm_widget_item_free(item);
+ }
+ else
+ _elm_widget_item_free(item);
++>>>>>>> remotes/origin/upstream
}
/**
*
* Set the function to notify to widgets when item is being deleted by user.
*
++<<<<<<< HEAD
+ * This function will complain if there was a callback set already,
+ * however it will set the new one.
+ *
++=======
++>>>>>>> remotes/origin/upstream
* @param item a valid #Elm_Widget_Item to be notified
* @see elm_widget_item_del_pre_hook_set() convenience macro.
* @ingroup Widget
_elm_widget_item_del_pre_hook_set(Elm_Widget_Item *item, Elm_Widget_Del_Pre_Cb func)
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
++<<<<<<< HEAD
+ if ((item->del_pre_func) && (item->del_pre_func != func))
+ WRN("You're replacing a previously set del_pre_cb %p of item %p with %p", item->del_pre_func, item, func);
++=======
++>>>>>>> remotes/origin/upstream
item->del_pre_func = func;
}
Eina_Bool engine_only)
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
++<<<<<<< HEAD
+ elm_object_cursor_engine_only_set(item->view, engine_only);
++=======
+ elm_object_cursor_theme_search_enabled_set(item->view, engine_only);
++>>>>>>> remotes/origin/upstream
}
/**
_elm_widget_item_cursor_engine_only_get(const Elm_Widget_Item *item)
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, EINA_FALSE);
++<<<<<<< HEAD
+ return elm_object_cursor_engine_only_get(item->view);
++=======
+ return elm_object_cursor_theme_search_enabled_get(item->view);
++>>>>>>> remotes/origin/upstream
}
// smart object funcs
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
if (!item->content_set_func) return;
++<<<<<<< HEAD
+ item->content_set_func((Elm_Object_Item *) item, part, content);
++=======
+ item->content_set_func((Elm_Object_Item *)item, part, content);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL);
if (!item->content_get_func) return NULL;
++<<<<<<< HEAD
+ return item->content_get_func((Elm_Object_Item *) item, part);
++=======
+ return item->content_get_func((Elm_Object_Item *)item, part);
++>>>>>>> remotes/origin/upstream
}
EAPI Evas_Object *
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL);
if (!item->content_unset_func) return NULL;
++<<<<<<< HEAD
+ return item->content_unset_func((Elm_Object_Item *) item, part);
++=======
+ return item->content_unset_func((Elm_Object_Item *)item, part);
++>>>>>>> remotes/origin/upstream
}
EAPI void
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
if (!item->text_set_func) return;
++<<<<<<< HEAD
+ item->text_set_func((Elm_Object_Item *) item, part, label);
++=======
+ item->text_set_func((Elm_Object_Item *)item, part, label);
++>>>>>>> remotes/origin/upstream
}
EAPI void
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
if (item->signal_emit_func)
++<<<<<<< HEAD
+ item->signal_emit_func((Elm_Object_Item *) item, emission, source);
++=======
+ item->signal_emit_func((Elm_Object_Item *)item, emission, source);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
{
ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL);
if (!item->text_get_func) return NULL;
++<<<<<<< HEAD
+ return item->text_get_func((Elm_Object_Item *) item, part);
++=======
+ return item->text_get_func((Elm_Object_Item *)item, part);
++>>>>>>> remotes/origin/upstream
}
EAPI void
else item->access_info = eina_stringshare_add(txt);
}
++<<<<<<< HEAD
++=======
+ EAPI void
+ elm_widget_item_smart_callback_add(Elm_Widget_Item *item, const char *event, Elm_Object_Item_Smart_Cb func, const void *data)
+ {
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
+ if ((!event) || (!func)) return;
+
+ Elm_Widget_Item_Callback *cb = ELM_NEW(Elm_Widget_Item_Callback);
+ if (!cb) return;
+
+ //TODO: apply MEMPOOL?
+ cb->event = eina_stringshare_add(event);
+ cb->func = func;
+ cb->data = (void *)data;
+ item->callbacks = eina_list_append(item->callbacks, cb);
+ }
+
+ EAPI void*
+ elm_widget_item_smart_callback_del(Elm_Widget_Item *item, const char *event, Elm_Object_Item_Smart_Cb func)
+ {
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL);
+
+ Eina_List *l, *l_next;
+ Elm_Widget_Item_Callback *cb;
+
+ if ((!event) || (!func)) return NULL;
+
+ EINA_LIST_FOREACH_SAFE(item->callbacks, l, l_next, cb)
+ {
+ if ((!strcmp(cb->event, event)) && (cb->func == func))
+ {
+ void *data = cb->data;
+ if (!cb->walking)
+ {
+ item->callbacks = eina_list_remove_list(item->callbacks, l);
+ free(cb);
+ }
+ else
+ cb->delete_me = EINA_TRUE;
+ return data;
+ }
+ }
+ return NULL;
+ }
+
+ EAPI void
+ _elm_widget_item_smart_callback_call(Elm_Widget_Item *item, const char *event, void *event_info)
+ {
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
+
+ Eina_List *l, *l_next;
+ Elm_Widget_Item_Callback *cb;
+ const char *strshare;
+
+ if (!event) return;
+
+ strshare = eina_stringshare_add(event);
+
+ EINA_LIST_FOREACH(item->callbacks, l, cb)
+ {
+ if (strcmp(cb->event, strshare)) continue;
+ if (cb->delete_me) continue;
+ cb->walking++;
+ item->walking++;
+ cb->func(cb->data, (Elm_Object_Item *)item, event_info);
+ item->walking--;
+ cb->walking--;
+ if (item->delete_me) break;
+ }
+
+ //Clear callbacks
+ EINA_LIST_FOREACH_SAFE(item->callbacks, l, l_next, cb)
+ {
+ if (!cb->delete_me) continue;
+ item->callbacks = eina_list_remove_list(item->callbacks, l);
+ free(cb);
+ }
+
+ if (item->delete_me && !item->walking)
+ elm_widget_item_free(item);
+ }
++>>>>>>> remotes/origin/upstream
static void
_smart_add(Evas_Object *obj)
if (!sd) return;
sd->obj = obj;
sd->x = sd->y = sd->w = sd->h = 0;
++<<<<<<< HEAD
+ sd->can_focus = 1;
+ sd->mirrored_auto_mode = EINA_TRUE; /* will follow system locale settings */
+ evas_object_smart_data_set(obj, sd);
++=======
+ sd->mirrored_auto_mode = EINA_TRUE; /* will follow system locale settings */
+ evas_object_smart_data_set(obj, sd);
+ elm_widget_can_focus_set(obj, EINA_TRUE);
++>>>>>>> remotes/origin/upstream
}
static Evas_Object *
elm_widget_tree_dump(const Evas_Object *top)
{
#ifdef ELM_DEBUG
++<<<<<<< HEAD
++=======
+ if (!_elm_widget_is(top))
+ return;
++>>>>>>> remotes/origin/upstream
_sub_obj_tree_dump(top, 0);
#else
return;
#warning "there. You only need a widget if you want to seamlessly be part"
#warning "of the focus tree and want to transparently become a container"
#warning "for any number of child Elementary widgets"
++<<<<<<< HEAD
+//#error "ERROR. Compile aborted."
++=======
+ #error "ERROR. Compile aborted."
++>>>>>>> remotes/origin/upstream
#endif
#define ELM_INTERNAL_API_VERSION 7000
EAPI void _elm_access_clear(Elm_Access_Info *ac);
EAPI void _elm_access_text_set(Elm_Access_Info *ac, int type, const char *text);
EAPI void _elm_access_callback_set(Elm_Access_Info *ac, int type, Elm_Access_Content_Cb func, const void *data);
++<<<<<<< HEAD
+EAPI char *_elm_access_text_get(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item);
+EAPI void _elm_access_read(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item);
+EAPI void _elm_access_say(const char *txt);
+EAPI Elm_Access_Info *_elm_access_object_get(Evas_Object *obj);
+EAPI Elm_Access_Info *_elm_access_item_get(Elm_Widget_Item *it);
++=======
+ EAPI char *_elm_access_text_get(const Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item); /* this is ok it actually returns a strduped string - it's meant to! */
+ EAPI void _elm_access_read(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item);
+ EAPI void _elm_access_say(const char *txt);
+ EAPI Elm_Access_Info *_elm_access_object_get(const Evas_Object *obj);
+ EAPI Elm_Access_Info *_elm_access_item_get(const Elm_Widget_Item *it);
++>>>>>>> remotes/origin/upstream
EAPI void _elm_access_object_hilight(Evas_Object *obj);
EAPI void _elm_access_object_unhilight(Evas_Object *obj);
EAPI void _elm_access_object_hilight_disable(Evas *e);
Evas_Smart_Cb del_func;
/**< widget delete callback function. don't expose this callback call */
Elm_Widget_Del_Pre_Cb del_pre_func;
++<<<<<<< HEAD
++=======
+ Eina_List *callbacks;
++>>>>>>> remotes/origin/upstream
Elm_Widget_Content_Set_Cb content_set_func;
Elm_Widget_Content_Get_Cb content_get_func;
Elm_Widget_Disable_Cb disable_func;
Elm_Access_Info *access;
const char *access_info;
++<<<<<<< HEAD
+ Eina_Bool disabled : 1;
+ /* widget variations should have data from here and on */
+ /* @todo: TODO check if this is enough for 1.0 release, maybe add padding! */
++=======
+
+ Eina_Bool disabled : 1;
+ Eina_Bool walking : 1;
+ Eina_Bool delete_me : 1;
++>>>>>>> remotes/origin/upstream
};
struct _Elm_Object_Item
#define ELM_NEW(t) calloc(1, sizeof(t))
++<<<<<<< HEAD
+#define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...) \
+ ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)(it), __VA_ARGS__); \
+ ELM_CHECK_WIDTYPE(WIDGET(it), widtype) __VA_ARGS__;
+
+#define ELM_OBJ_ITEM_CHECK_OR_GOTO(it, label) \
+ ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label); \
+ if (!elm_widget_type_check(WIDGET(it), (widtype), __func__)) goto label;
+
++=======
++>>>>>>> remotes/origin/upstream
EAPI Eina_Bool elm_widget_api_check(int ver);
EAPI Evas_Object *elm_widget_add(Evas *evas);
EAPI void elm_widget_del_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj));
EAPI void elm_widget_signal_emit_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source));
EAPI void elm_widget_signal_callback_add_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data));
EAPI void elm_widget_signal_callback_del_hook_set(Evas_Object *obj, void (*func)(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data));
++<<<<<<< HEAD
+EAPI void elm_widget_theme(Evas_Object *obj);
++=======
+ EAPI Eina_Bool elm_widget_theme(Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
EAPI void elm_widget_theme_specific(Evas_Object *obj, Elm_Theme *th, Eina_Bool force);
EAPI void elm_widget_translate(Evas_Object *obj);
EAPI void elm_widget_focus_next_hook_set(Evas_Object *obj, Eina_Bool (*func)(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next));
*
* Restore the focus state of the sub-tree.
*
++<<<<<<< HEAD
+ * This API will restore the focus state of the sub-tree to the lastest
+ * state. If a sub-tree is unfocused and wants to get back to the lastest
++=======
+ * This API will restore the focus state of the sub-tree to the latest
+ * state. If a sub-tree is unfocused and wants to get back to the latest
++>>>>>>> remotes/origin/upstream
* focus state, this API will be helpful.
*
* @param obj The widget root of sub-tree
EAPI void elm_widget_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic);
EAPI void elm_widget_theme_set(Evas_Object *obj, Elm_Theme *th);
EAPI Elm_Theme *elm_widget_theme_get(const Evas_Object *obj);
++<<<<<<< HEAD
+EAPI void elm_widget_style_set(Evas_Object *obj, const char *style);
++=======
+ EAPI Eina_Bool elm_widget_style_set(Evas_Object *obj, const char *style);
++>>>>>>> remotes/origin/upstream
EAPI const char *elm_widget_style_get(const Evas_Object *obj);
EAPI void elm_widget_type_set(Evas_Object *obj, const char *type);
EAPI const char *elm_widget_type_get(const Evas_Object *obj);
EAPI void elm_widget_focus_mouse_up_handle(Evas_Object *obj);
EAPI void elm_widget_focus_tree_unfocusable_handle(Evas_Object *obj);
EAPI void elm_widget_focus_disabled_handle(Evas_Object *obj);
++<<<<<<< HEAD
++=======
+ EAPI unsigned int elm_widget_focus_order_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
EAPI void elm_widget_text_part_set(Evas_Object *obj, const char *part, const char *label);
EAPI const char *elm_widget_text_part_get(const Evas_Object *obj, const char *part);
EAPI void elm_widget_domain_translatable_text_part_set(Evas_Object *obj, const char *part, const char *domain, const char *text);
EAPI Evas_Object *elm_widget_content_part_get(const Evas_Object *obj, const char *part);
EAPI Evas_Object *elm_widget_content_part_unset(Evas_Object *obj, const char *part);
EAPI void elm_widget_access_info_set(Evas_Object *obj, const char *txt);
++<<<<<<< HEAD
+EAPI const char *elm_widget_access_info_get(Evas_Object *obj);
++=======
+ EAPI const char *elm_widget_access_info_get(const Evas_Object *obj);
++>>>>>>> remotes/origin/upstream
EAPI Elm_Widget_Item *_elm_widget_item_new(Evas_Object *parent, size_t alloc_size);
EAPI void _elm_widget_item_free(Elm_Widget_Item *item);
EAPI void _elm_widget_item_del(Elm_Widget_Item *item);
EAPI Eina_Bool _elm_widget_item_disabled_get(const Elm_Widget_Item *item);
EAPI void _elm_widget_item_disable_hook_set(Elm_Widget_Item *item, Elm_Widget_Disable_Cb func);
EAPI void _elm_widget_item_del_pre_hook_set(Elm_Widget_Item *item, Elm_Widget_Del_Pre_Cb func);
++<<<<<<< HEAD
++=======
+ EAPI void elm_widget_item_smart_callback_add(Elm_Widget_Item *item, const char *event, Elm_Object_Item_Smart_Cb func, const void *data);
+ EAPI void *elm_widget_item_smart_callback_del(Elm_Widget_Item *item, const char *event, Elm_Object_Item_Smart_Cb func);
+ EAPI void _elm_widget_item_smart_callback_call(Elm_Widget_Item *item, const char *event, void *event_info);
++>>>>>>> remotes/origin/upstream
/* debug function. don't use it unless you are tracking parenting issues */
EAPI void elm_widget_tree_dump(const Evas_Object *top);
*/
#define elm_widget_item_del_pre_hook_set(item, func) \
_elm_widget_item_del_pre_hook_set((Elm_Widget_Item *)item, (Elm_Widget_Del_Pre_Cb)func)
++<<<<<<< HEAD
+
+#define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \
+ do { \
+ if (!item) { \
+ CRITICAL("Elm_Widget_Item " # item " is NULL!"); \
+ return __VA_ARGS__; \
+ } \
+ if (!EINA_MAGIC_CHECK(item, ELM_WIDGET_ITEM_MAGIC)) { \
+ EINA_MAGIC_FAIL(item, ELM_WIDGET_ITEM_MAGIC); \
+ return __VA_ARGS__; \
+ } \
+ } while (0)
+
+#define ELM_WIDGET_ITEM_CHECK_OR_GOTO(item, label) \
+ do { \
+ if (!item) { \
+ CRITICAL("Elm_Widget_Item " # item " is NULL!"); \
+ goto label; \
+ } \
+ if (!EINA_MAGIC_CHECK(item, ELM_WIDGET_ITEM_MAGIC)) { \
+ EINA_MAGIC_FAIL(item, ELM_WIDGET_ITEM_MAGIC); \
+ goto label; \
+ } \
+ } while (0)
++=======
+ /**
+ * Convenience function to query callback call hook
+ * @see _elm_widget_item_smart_callback_call()
+ */
+ #define elm_widget_item_smart_callback_call(item, event, event_info) \
+ _elm_widget_item_smart_callback_call((Elm_Widget_Item *) item, event, event_info)
+
+ #define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \
+ ELM_WIDGET_ITEM_FREE_OR_RETURN(item, __VA_ARGS__); \
+ do { \
+ if (((Elm_Widget_Item *)item)->delete_me) { \
+ CRITICAL("Elm_Widget_Item " # item " is deleted!"); \
+ return __VA_ARGS__; \
+ } \
+ } while (0)
+
+ #define ELM_WIDGET_ITEM_CHECK_OR_GOTO(item, label) \
+ ELM_WIDGET_ITEM_FREE_OR_RETURN(item); \
+ do { \
+ if (((Elm_Widget_Item *)item)->delete_me) { \
+ CRITICAL("Elm_Widget_Item " # item " is deleted!"); \
+ goto label; \
+ } \
+ } while (0)
+
+ #define ELM_WIDGET_ITEM_FREE_OR_RETURN(item, ...) \
+ do { \
+ if (!EINA_MAGIC_CHECK(item, ELM_WIDGET_ITEM_MAGIC)) { \
+ EINA_MAGIC_FAIL(item, ELM_WIDGET_ITEM_MAGIC); \
+ return __VA_ARGS__; \
+ } \
+ } while (0)
++>>>>>>> remotes/origin/upstream
#define ELM_SET_WIDTYPE(widtype, type) \
do { \
ob = elm_widget_add(evas); if (!(ob)) { free(wdat); return (ret); } \
} while (0)
++<<<<<<< HEAD
++=======
+ #define ELM_OBJ_ITEM_CHECK_OR_RETURN(it, ...) \
+ ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, __VA_ARGS__);
+
+ #define ELM_OBJ_ITEM_CHECK_OR_GOTO(it, label) \
+ ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_GOTO(it, label);
+
++>>>>>>> remotes/origin/upstream
/**
* The drag and drop API.
* Currently experimental, and will change when it does dynamic type
* And yes, elm_widget, should probably be elm_experimental...
* Complaints about this code should go to /dev/null, or failing that nash.
*/
++<<<<<<< HEAD
+Eina_Bool elm_cnp_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const void *selbuf, size_t buflen);
+Eina_Bool elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
+Eina_Bool elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
+Eina_Bool elm_selection_selection_has_owner(void);
+Eina_Bool elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, Elm_Drop_Cb, void *);
+Eina_Bool elm_drop_target_del(Evas_Object *widget);
+Eina_Bool elm_drag_start(Evas_Object *, Elm_Sel_Format, const char *, void (*)(void *, Evas_Object*), void *);
+
++=======
+ Eina_Bool elm_selection_selection_has_owner(void);
+ Eina_Bool elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, Elm_Drop_Cb, void *);
+ Eina_Bool elm_drop_target_del(Evas_Object *widget);
+ Eina_Bool elm_drag_start(Evas_Object *, Elm_Sel_Format, const char *, void (*)(void *, Evas_Object *), void *);
++>>>>>>> remotes/origin/upstream
#endif
Elm_Win_Type type;
Elm_Win_Keyboard_Mode kbdmode;
++<<<<<<< HEAD
++=======
+ Elm_Win_Indicator_Mode indmode;
+ Elm_Win_Indicator_Opacity_Mode ind_o_mode;
++>>>>>>> remotes/origin/upstream
struct {
const char *info;
Ecore_Timer *timer;
int repeat_count;
int shot_counter;
} shot;
++<<<<<<< HEAD
+ Eina_Bool autodel : 1;
+ Eina_Bool constrain : 1;
+ Eina_Bool resizing : 1;
++=======
++>>>>>>> remotes/origin/upstream
int resize_location;
int *autodel_clear, rot;
int show_count;
struct {
int x, y;
} screen;
++<<<<<<< HEAD
+
++=======
+ struct
+ {
+ Ecore_Evas *ee;
+ Evas *evas;
+ Evas_Object *obj, *hot_obj;
+ int hot_x, hot_y;
+ } pointer;
++>>>>>>> remotes/origin/upstream
struct {
Evas_Object *top;
Eina_Bool top_animate : 1;
Eina_Bool geometry_changed : 1;
} focus_highlight;
++<<<<<<< HEAD
++=======
+
+ Evas_Object *icon;
+ const char *title;
+ const char *icon_name;
+ const char *role;
+
+ double aspect;
+ Eina_Bool urgent : 1;
+ Eina_Bool modal : 1;
+ Eina_Bool demand_attention : 1;
+ Eina_Bool autodel : 1;
+ Eina_Bool constrain : 1;
+ Eina_Bool resizing : 1;
+ Eina_Bool iconified : 1;
+ Eina_Bool withdrawn : 1;
+ Eina_Bool sticky : 1;
+ Eina_Bool fullscreen : 1;
+ Eina_Bool maximized : 1;
+ Eina_Bool skip_focus : 1;
++>>>>>>> remotes/origin/upstream
};
static const char *widtype = NULL;
static void _elm_win_frame_cb_maximize(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *source __UNUSED__);
static void _elm_win_frame_cb_close(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *source __UNUSED__);
++<<<<<<< HEAD
++=======
+ //static void _elm_win_pointer_add(Elm_Win *win, const char *style);
+
++>>>>>>> remotes/origin/upstream
static const char SIG_DELETE_REQUEST[] = "delete,request";
static const char SIG_FOCUS_OUT[] = "focus,out";
static const char SIG_FOCUS_IN[] = "focus,in";
static const char SIG_MOVED[] = "moved";
static const char SIG_THEME_CHANGED[] = "theme,changed";
++<<<<<<< HEAD
++=======
+ static const char SIG_WITHDRAWN[] = "withdrawn";
+ static const char SIG_ICONIFIED[] = "iconified";
+ static const char SIG_NORMAL[] = "normal";
+ static const char SIG_STICK[] = "stick";
+ static const char SIG_UNSTICK[] = "unstick";
+ static const char SIG_FULLSCREEN[] = "fullscreen";
+ static const char SIG_UNFULLSCREEN[] = "unfullscreen";
+ static const char SIG_MAXIMIZED[] = "maximized";
+ static const char SIG_UNMAXIMIZED[] = "unmaximized";
++>>>>>>> remotes/origin/upstream
static const Evas_Smart_Cb_Description _signals[] = {
{SIG_DELETE_REQUEST, ""},
{SIG_FOCUS_OUT, ""},
{SIG_FOCUS_IN, ""},
{SIG_MOVED, ""},
++<<<<<<< HEAD
++=======
+ {SIG_WITHDRAWN, ""},
+ {SIG_ICONIFIED, ""},
+ {SIG_NORMAL, ""},
+ {SIG_STICK, ""},
+ {SIG_UNSTICK, ""},
+ {SIG_FULLSCREEN, ""},
+ {SIG_UNFULLSCREEN, ""},
+ {SIG_MAXIMIZED, ""},
+ {SIG_UNMAXIMIZED, ""},
++>>>>>>> remotes/origin/upstream
{NULL, NULL}
};
win = elm_widget_data_get(obj);
if (!win) return;
_elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE);
++<<<<<<< HEAD
+ if (win->show_count == 1)
++=======
+ if (!elm_widget_focus_order_get(obj))
++>>>>>>> remotes/origin/upstream
{
elm_widget_focus_steal(win->win_obj);
win->show_count++;
}
}
++<<<<<<< HEAD
++=======
+ static void
+ _elm_win_state_change(Ecore_Evas *ee)
+ {
+ Evas_Object *obj;
+ Elm_Win *win;
+ Eina_Bool ch_withdrawn = EINA_FALSE;
+ Eina_Bool ch_sticky = EINA_FALSE;
+ Eina_Bool ch_iconified = EINA_FALSE;
+ Eina_Bool ch_fullscreen = EINA_FALSE;
+ Eina_Bool ch_maximized = EINA_FALSE;
+
+ if (!(obj = ecore_evas_object_associate_get(ee))) return;
+
+ if (!(win = elm_widget_data_get(obj))) return;
+
+ if (win->withdrawn != ecore_evas_withdrawn_get(win->ee))
+ {
+ win->withdrawn = ecore_evas_withdrawn_get(win->ee);
+ ch_withdrawn = EINA_TRUE;
+ }
+ if (win->sticky != ecore_evas_sticky_get(win->ee))
+ {
+ win->sticky = ecore_evas_sticky_get(win->ee);
+ ch_sticky = EINA_TRUE;
+ }
+ if (win->iconified != ecore_evas_iconified_get(win->ee))
+ {
+ win->iconified = ecore_evas_iconified_get(win->ee);
+ ch_iconified = EINA_TRUE;
+ }
+ if (win->fullscreen != ecore_evas_fullscreen_get(win->ee))
+ {
+ win->fullscreen = ecore_evas_fullscreen_get(win->ee);
+ ch_fullscreen = EINA_TRUE;
+ }
+ if (win->maximized != ecore_evas_maximized_get(win->ee))
+ {
+ win->maximized = ecore_evas_maximized_get(win->ee);
+ ch_maximized = EINA_TRUE;
+ }
+ if ((ch_withdrawn) || (ch_iconified))
+ {
+ if (win->withdrawn)
+ evas_object_smart_callback_call(win->win_obj, SIG_WITHDRAWN, NULL);
+ else if (win->iconified)
+ evas_object_smart_callback_call(win->win_obj, SIG_ICONIFIED, NULL);
+ else
+ evas_object_smart_callback_call(win->win_obj, SIG_NORMAL, NULL);
+ }
+ if (ch_sticky)
+ {
+ if (win->sticky)
+ evas_object_smart_callback_call(win->win_obj, SIG_STICK, NULL);
+ else
+ evas_object_smart_callback_call(win->win_obj, SIG_UNSTICK, NULL);
+ }
+ if (ch_fullscreen)
+ {
+ if (win->fullscreen)
+ evas_object_smart_callback_call(win->win_obj, SIG_FULLSCREEN, NULL);
+ else
+ evas_object_smart_callback_call(win->win_obj, SIG_UNFULLSCREEN, NULL);
+ }
+ if (ch_maximized)
+ {
+ if (win->maximized)
+ evas_object_smart_callback_call(win->win_obj, SIG_MAXIMIZED, NULL);
+ else
+ evas_object_smart_callback_call(win->win_obj, SIG_UNMAXIMIZED, NULL);
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
static Eina_Bool
_elm_win_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
{
{
evas_object_hide(win->img_obj);
}
++<<<<<<< HEAD
++=======
+ if (win->pointer.obj)
+ {
+ evas_object_hide(win->pointer.obj);
+ ecore_evas_hide(win->pointer.ee);
+ }
++>>>>>>> remotes/origin/upstream
}
static void
_elm_win_focus_highlight_shutdown(win);
eina_stringshare_del(win->focus_highlight.style);
++<<<<<<< HEAD
++=======
+ if (win->title) eina_stringshare_del(win->title);
+ if (win->icon_name) eina_stringshare_del(win->icon_name);
+ if (win->role) eina_stringshare_del(win->role);
+ if (win->icon) evas_object_del(win->icon);
+
++>>>>>>> remotes/origin/upstream
free(win);
if ((!_elm_win_list) &&
{
evas_object_show(win->img_obj);
}
++<<<<<<< HEAD
++=======
+ if (win->pointer.obj)
+ {
+ ecore_evas_show(win->pointer.ee);
+ evas_object_show(win->pointer.obj);
+ /* ecore_evas_wayland_pointer_set(win->pointer.ee, 10, 10); */
+ }
++>>>>>>> remotes/origin/upstream
evas_object_show(obj);
}
{
win->xwin = 0;
++<<<<<<< HEAD
+#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
++=======
+ #define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
++>>>>>>> remotes/origin/upstream
if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
{
if (win->ee) win->xwin = ecore_evas_software_x11_window_get(win->ee);
static void
_elm_win_xwin_update(Elm_Win *win)
{
++<<<<<<< HEAD
++=======
+ const char *s;
+
++>>>>>>> remotes/origin/upstream
_elm_win_xwindow_get(win);
if (win->parent)
{
if (!win->xwin) return; /* nothing more to do */
++<<<<<<< HEAD
++=======
+ s = win->title;
+ if (!s) s = _elm_appname;
+ if (!s) s = "";
+ if (win->icon_name) s = win->icon_name;
+ ecore_x_icccm_icon_name_set(win->xwin, s);
+ ecore_x_netwm_icon_name_set(win->xwin, s);
+
+ s = win->role;
+ if (s) ecore_x_icccm_window_role_set(win->xwin, s);
+
+ // set window icon
+ if (win->icon)
+ {
+ void *data;
+
+ data = evas_object_image_data_get(win->icon, EINA_FALSE);
+ if (data)
+ {
+ Ecore_X_Icon ic;
+ int w = 0, h = 0, stride, x, y;
+ unsigned char *p;
+ unsigned int *p2;
+
+ evas_object_image_size_get(win->icon, &w, &h);
+ stride = evas_object_image_stride_get(win->icon);
+ if ((w > 0) && (h > 0) &&
+ (stride >= (int)(w * sizeof(unsigned int))))
+ {
+ ic.width = w;
+ ic.height = h;
+ ic.data = malloc(w * h * sizeof(unsigned int));
+
+ if (ic.data)
+ {
+ p = (unsigned char *)data;
+ p2 = (unsigned int *)ic.data;
+ for (y = 0; y < h; y++)
+ {
+ for (x = 0; x < w; x++)
+ {
+ *p2 = *((unsigned int *)p);
+ p += sizeof(unsigned int);
+ p2++;
+ }
+ p += (stride - (w * sizeof(unsigned int)));
+ }
+ ecore_x_netwm_icons_set(win->xwin, &ic, 1);
+ free(ic.data);
+ }
+ }
+ evas_object_image_data_set(win->icon, data);
+ }
+ }
+
++>>>>>>> remotes/origin/upstream
switch (win->type)
{
case ELM_WIN_BASIC:
}
ecore_x_e_virtual_keyboard_state_set
(win->xwin, (Ecore_X_Virtual_Keyboard_State)win->kbdmode);
++<<<<<<< HEAD
++=======
+ if (win->indmode == ELM_WIN_INDICATOR_SHOW)
+ ecore_x_e_illume_indicator_state_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_STATE_ON);
+ else if (win->indmode == ELM_WIN_INDICATOR_HIDE)
+ ecore_x_e_illume_indicator_state_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
++>>>>>>> remotes/origin/upstream
}
#endif
else
win->resize_location = 0;
++<<<<<<< HEAD
+ /* FIXME: Change to more generic wayland resize function */
++=======
++>>>>>>> remotes/origin/upstream
if (win->resize_location > 0)
ecore_evas_wayland_resize(win->ee, win->resize_location);
}
Elm_Win *win;
if (!(win = data)) return;
++<<<<<<< HEAD
++=======
+ win->iconified = EINA_TRUE;
++>>>>>>> remotes/origin/upstream
ecore_evas_iconified_set(win->ee, EINA_TRUE);
}
Elm_Win *win;
if (!(win = data)) return;
++<<<<<<< HEAD
+ ecore_evas_maximized_set(win->ee, EINA_TRUE);
++=======
+ if (win->maximized) win->maximized = EINA_FALSE;
+ else win->maximized = EINA_TRUE;
+ ecore_evas_maximized_set(win->ee, win->maximized);
++>>>>>>> remotes/origin/upstream
}
static void
evas_object_del(win->win_obj);
}
++<<<<<<< HEAD
++=======
+ /*
+ static void
+ _elm_win_pointer_add(Elm_Win *win, const char *style)
+ {
+ int mw, mh;
+
+ return;
+
+ win->pointer.ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 0, 32, 32, 0);
+ ecore_evas_resize(win->pointer.ee, 32, 32);
+
+ win->pointer.evas = ecore_evas_get(win->ee);
+
+ win->pointer.obj = edje_object_add(win->pointer.evas);
+ _elm_theme_set(NULL, win->pointer.obj, "pointer", "base", style);
+ edje_object_size_min_calc(win->pointer.obj, &mw, &mh);
+ evas_object_move(win->pointer.obj, 0, 0);
+ evas_object_resize(win->pointer.obj, 32, 32);
+ evas_object_show(win->pointer.obj);
+ }
+ */
+
++>>>>>>> remotes/origin/upstream
#ifdef ELM_DEBUG
static void
_debug_key_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
_elm_win_eval_subobjs(obj);
}
++<<<<<<< HEAD
++=======
+ static void
+ _elm_win_obj_icon_callback_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+ {
+ Elm_Win *win = data;
+ if (win->icon == obj) win->icon = NULL;
+ }
+
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *
elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
{
CRITICAL(engine " engine creation failed. Trying default."); \
win->ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); \
if (win->ee) \
++<<<<<<< HEAD
+ elm_engine_set(ecore_evas_engine_name_get(win->ee)); \
+ } while (0)
+#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
+
++=======
+ elm_config_preferred_engine_set(ecore_evas_engine_name_get(win->ee)); \
+ } while (0)
+ #define ENGINE_COMPARE(name) (_elm_preferred_engine && !strcmp(_elm_preferred_engine, name))
+
+ win->kbdmode = ELM_WIN_KEYBOARD_UNKNOWN;
+ win->indmode = ELM_WIN_INDICATOR_UNKNOWN;
+
++>>>>>>> remotes/origin/upstream
switch (type)
{
case ELM_WIN_INLINED_IMAGE:
else if (ENGINE_COMPARE(ELM_WAYLAND_SHM))
{
win->ee = ecore_evas_wayland_shm_new(NULL, 0, 0, 0, 1, 1, 0);
++<<<<<<< HEAD
+ win->evas = ecore_evas_get(win->ee);
+
+ _elm_win_frame_add(win, "default");
++=======
+ win->evas = ecore_evas_get(win->ee);
+
+ _elm_win_frame_add(win, "default");
+ // _elm_win_pointer_add(win, "default");
++>>>>>>> remotes/origin/upstream
}
else if (ENGINE_COMPARE(ELM_WAYLAND_EGL))
{
win->ee = ecore_evas_wayland_egl_new(NULL, 0, 0, 0, 1, 1, 0);
++<<<<<<< HEAD
+ win->evas = ecore_evas_get(win->ee);
+
+ _elm_win_frame_add(win, "default");
+ }
+ else if (!strncmp(_elm_config->engine, "shot:", 5))
+ {
+ win->ee = ecore_evas_buffer_new(1, 1);
+ ecore_evas_manual_render_set(win->ee, EINA_TRUE);
+ win->shot.info = eina_stringshare_add(_elm_config->engine + 5);
++=======
+ win->evas = ecore_evas_get(win->ee);
+
+ _elm_win_frame_add(win, "default");
+ // _elm_win_pointer_add(win, "default");
+ }
+ else if (!strncmp(_elm_preferred_engine, "shot:", 5))
+ {
+ win->ee = ecore_evas_buffer_new(1, 1);
+ ecore_evas_manual_render_set(win->ee, EINA_TRUE);
+ win->shot.info = eina_stringshare_add(_elm_preferred_engine + 5);
++>>>>>>> remotes/origin/upstream
_shot_init(win);
}
#undef FALLBACK_TRY
if (win->frame_obj)
{
++<<<<<<< HEAD
+// evas_object_clip_set(win->win_obj, win->frame_obj);
++=======
+ evas_object_clip_set(win->win_obj, win->frame_obj);
++>>>>>>> remotes/origin/upstream
evas_object_stack_below(win->frame_obj, win->win_obj);
}
ecore_evas_callback_focus_in_set(win->ee, _elm_win_focus_in);
ecore_evas_callback_focus_out_set(win->ee, _elm_win_focus_out);
ecore_evas_callback_move_set(win->ee, _elm_win_move);
++<<<<<<< HEAD
++=======
+ ecore_evas_callback_state_change_set(win->ee, _elm_win_state_change);
++>>>>>>> remotes/origin/upstream
evas_image_cache_set(win->evas, (_elm_config->image_cache * 1024));
evas_font_cache_set(win->evas, (_elm_config->font_cache * 1024));
EINA_LIST_FOREACH(_elm_config->font_dirs, l, fontpath)
Elm_Win *win;
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
++<<<<<<< HEAD
+ if (!win) return;
+ ecore_evas_title_set(win->ee, title);
+ if (win->frame_obj)
+ edje_object_part_text_set(win->frame_obj, "elm.text.title", title);
++=======
+ if (!win || !title) return;
+ eina_stringshare_replace(&(win->title), title);
+ ecore_evas_title_set(win->ee, win->title);
+ if (win->frame_obj)
+ edje_object_part_text_set(win->frame_obj, "elm.text.title", win->title);
++>>>>>>> remotes/origin/upstream
}
EAPI const char *
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
win = elm_widget_data_get(obj);
if (!win) return NULL;
++<<<<<<< HEAD
+ return ecore_evas_title_get(win->ee);
++=======
+ return win->title;
+ }
+
+ EAPI void
+ elm_win_icon_name_set(Evas_Object *obj, const char *icon_name)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win || !icon_name) return;
+ eina_stringshare_replace(&(win->icon_name), icon_name);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI const char *
+ elm_win_icon_name_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ win = elm_widget_data_get(obj);
+ if (!win) return NULL;
+ return win->icon_name;
+ }
+
+ EAPI void
+ elm_win_role_set(Evas_Object *obj, const char *role)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win || !role) return;
+ eina_stringshare_replace(&(win->role), role);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI const char *
+ elm_win_role_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ win = elm_widget_data_get(obj);
+ if (!win) return NULL;
+ return win->role;
+ }
+
+ EAPI void
+ elm_win_icon_object_set(Evas_Object *obj, Evas_Object *icon)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ if (win->icon)
+ evas_object_event_callback_del_full(win->icon, EVAS_CALLBACK_DEL,
+ _elm_win_obj_icon_callback_del, win);
+ win->icon = icon;
+ if (win->icon)
+ evas_object_event_callback_add(win->icon, EVAS_CALLBACK_DEL,
+ _elm_win_obj_icon_callback_del, win);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI const Evas_Object *
+ elm_win_icon_object_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+ win = elm_widget_data_get(obj);
+ if (!win) return NULL;
+ return win->icon;
++>>>>>>> remotes/origin/upstream
}
EAPI void
return ecore_evas_alpha_get(win->ee);
}
++<<<<<<< HEAD
+EAPI void
++=======
+ EINA_DEPRECATED EAPI void
++>>>>>>> remotes/origin/upstream
elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent)
{
Elm_Win *win;
}
}
++<<<<<<< HEAD
+EAPI Eina_Bool
++=======
+ EINA_DEPRECATED EAPI Eina_Bool
++>>>>>>> remotes/origin/upstream
elm_win_transparent_get(const Evas_Object *obj)
{
Elm_Win *win;
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
++<<<<<<< HEAD
+
+ // YYY: handle if win->img_obj
+#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
++=======
+ // YYY: handle if win->img_obj
+ #define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
++>>>>>>> remotes/origin/upstream
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{
}
else
{
++<<<<<<< HEAD
++=======
+ win->fullscreen = fullscreen;
++>>>>>>> remotes/origin/upstream
ecore_evas_fullscreen_set(win->ee, fullscreen);
#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
++<<<<<<< HEAD
+
+#define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
++=======
+ #define ENGINE_COMPARE(name) (!strcmp(_elm_preferred_engine, name))
++>>>>>>> remotes/origin/upstream
if (ENGINE_COMPARE(ELM_SOFTWARE_FB) ||
ENGINE_COMPARE(ELM_SOFTWARE_16_WINCE))
{
}
else
{
++<<<<<<< HEAD
+ return ecore_evas_fullscreen_get(win->ee);
++=======
+ return win->fullscreen;
++>>>>>>> remotes/origin/upstream
}
#undef ENGINE_COMPARE
}
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
++<<<<<<< HEAD
++=======
+ win->maximized = maximized;
++>>>>>>> remotes/origin/upstream
// YYY: handle if win->img_obj
ecore_evas_maximized_set(win->ee, maximized);
#ifdef HAVE_ELEMENTARY_X
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
++<<<<<<< HEAD
+ return ecore_evas_maximized_get(win->ee);
++=======
+ return win->maximized;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
++<<<<<<< HEAD
++=======
+ win->iconified = iconified;
++>>>>>>> remotes/origin/upstream
ecore_evas_iconified_set(win->ee, iconified);
#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
++<<<<<<< HEAD
+ return ecore_evas_iconified_get(win->ee);
++=======
+ return win->iconified;
+ }
+
+ EAPI void
+ elm_win_withdrawn_set(Evas_Object *obj, Eina_Bool withdrawn)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ win->withdrawn = withdrawn;
+ ecore_evas_withdrawn_set(win->ee, withdrawn);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_win_withdrawn_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+ return win->withdrawn;
+ }
+
+ EAPI void
+ elm_win_urgent_set(Evas_Object *obj, Eina_Bool urgent)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ win->urgent = urgent;
+ ecore_evas_urgent_set(win->ee, urgent);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_win_urgent_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+ return win->urgent;
+ }
+
+ EAPI void
+ elm_win_demand_attention_set(Evas_Object *obj, Eina_Bool demand_attention)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ win->demand_attention = demand_attention;
+ ecore_evas_demand_attention_set(win->ee, demand_attention);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_win_demand_attention_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+ return win->demand_attention;
+ }
+
+ EAPI void
+ elm_win_modal_set(Evas_Object *obj, Eina_Bool modal)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ win->modal = modal;
+ ecore_evas_modal_set(win->ee, modal);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI Eina_Bool
+ elm_win_modal_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+ return win->modal;
+ }
+
+ EAPI void
+ elm_win_aspect_set(Evas_Object *obj, double aspect)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ win->aspect = aspect;
+ ecore_evas_aspect_set(win->ee, aspect);
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwin_update(win);
+ #endif
+ }
+
+ EAPI double
+ elm_win_aspect_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ win = elm_widget_data_get(obj);
+ if (!win) return EINA_FALSE;
+ return win->aspect;
++>>>>>>> remotes/origin/upstream
}
EAPI void
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
++<<<<<<< HEAD
++=======
+ win->sticky = sticky;
++>>>>>>> remotes/origin/upstream
ecore_evas_sticky_set(win->ee, sticky);
#ifdef HAVE_ELEMENTARY_X
_elm_win_xwin_update(win);
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
win = elm_widget_data_get(obj);
if (!win) return EINA_FALSE;
++<<<<<<< HEAD
+ return ecore_evas_sticky_get(win->ee);
++=======
+ return win->sticky;
++>>>>>>> remotes/origin/upstream
}
EAPI void
}
EAPI void
++<<<<<<< HEAD
++=======
+ elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ if (mode == win->indmode) return;
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+ #endif
+ win->indmode = mode;
+ #ifdef HAVE_ELEMENTARY_X
+ if (win->xwin)
+ {
+ if (win->indmode == ELM_WIN_INDICATOR_SHOW)
+ ecore_x_e_illume_indicator_state_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_STATE_ON);
+ else if (win->indmode == ELM_WIN_INDICATOR_HIDE)
+ ecore_x_e_illume_indicator_state_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_STATE_OFF);
+ }
+ #endif
+ }
+
+ EAPI Elm_Win_Indicator_Mode
+ elm_win_indicator_mode_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_WIN_INDICATOR_UNKNOWN;
+ win = elm_widget_data_get(obj);
+ if (!win) return ELM_WIN_INDICATOR_UNKNOWN;
+ return win->indmode;
+ }
+
+ EAPI void
+ elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode mode)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+ if (mode == win->ind_o_mode) return;
+ win->ind_o_mode = mode;
+ #ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+ if (win->xwin)
+ {
+ if (win->ind_o_mode == ELM_WIN_INDICATOR_OPAQUE)
+ ecore_x_e_illume_indicator_opacity_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_OPAQUE);
+ else if (win->ind_o_mode == ELM_WIN_INDICATOR_TRANSLUCENT)
+ ecore_x_e_illume_indicator_opacity_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_TRANSLUCENT);
+ else if (win->ind_o_mode == ELM_WIN_INDICATOR_TRANSPARENT)
+ ecore_x_e_illume_indicator_opacity_set
+ (win->xwin, ECORE_X_ILLUME_INDICATOR_TRANSPARENT);
+
+ }
+ #endif
+ }
+
+ EAPI Elm_Win_Indicator_Opacity_Mode
+ elm_win_indicator_opacity_get(const Evas_Object *obj)
+ {
+ Elm_Win *win;
+ ELM_CHECK_WIDTYPE(obj, widtype) ELM_WIN_INDICATOR_OPACITY_UNKNOWN;
+ win = elm_widget_data_get(obj);
+ if (!win) return ELM_WIN_INDICATOR_OPACITY_UNKNOWN;
+ return win->ind_o_mode;
+ }
+
+ EAPI void
++>>>>>>> remotes/origin/upstream
elm_win_screen_position_get(const Evas_Object *obj, int *x, int *y)
{
Elm_Win *win;
ELM_CHECK_WIDTYPE(obj, widtype);
win = elm_widget_data_get(obj);
if (!win) return;
++<<<<<<< HEAD
+#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+ if (skip)
+ {
+ if (win->xwin)
+ {
+ Ecore_X_Window_State states[2];
+
+ ecore_x_icccm_hints_set(win->xwin, 0, 0, 0, 0, 0, 0, 0);
+ states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+ states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
+ ecore_x_netwm_window_state_set(win->xwin, states, 2);
+ }
+ }
+#else
+ (void) skip;
+#endif
++=======
+ win->skip_focus = skip;
+ ecore_evas_focus_skip_set(win->ee, skip);
++>>>>>>> remotes/origin/upstream
}
EAPI void
return win->focus_highlight.style;
}
++<<<<<<< HEAD
+EAPI void
+elm_win_indicator_state_set(Evas_Object *obj, int show_state)
+{
+ Elm_Win *win;
+ if (strcmp(elm_widget_type_get(obj), "win")) return;
+ win = elm_widget_data_get(obj);
+ if (!win) return;
+#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+ if (win->xwin)
+ return ecore_x_window_prop_property_set (win->xwin,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE, ECORE_X_ATOM_CARDINAL, 32, &show_state, 1);
+#endif
+ return;
+}
+
+EAPI int
+elm_win_indicator_state_get(Evas_Object *obj)
+{
+ Elm_Win *win;
+ if (strcmp(elm_widget_type_get(obj), "win")) return -1;
+ win = elm_widget_data_get(obj);
+ if (!win) return -1;
+#ifdef HAVE_ELEMENTARY_X
+ _elm_win_xwindow_get(win);
+ if (win->xwin)
+ {
+ int ret;
+ int count;
+ int show = -1;
+ unsigned int *prop_data = NULL;
+
+ ret = ecore_x_window_prop_property_get (win->xwin,
+ ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE, ECORE_X_ATOM_CARDINAL, 32, (void *)&prop_data, &count);
+ if( ret && prop_data )
+ memcpy (&show, prop_data, sizeof (int));
+
+ if (prop_data) free (prop_data);
+
+ return show;
+ }
+#endif
+ return -1;
+}
+
+
++=======
++>>>>>>> remotes/origin/upstream
typedef struct _Widget_Data Widget_Data;
struct _Widget_Data
}
static void
++<<<<<<< HEAD
++=======
+ _elm_inwin_text_set_hook(Evas_Object *obj, const char *item, const char *text)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!wd || !item) return;
+ edje_object_part_text_set(wd->frm, item, text);
+ _sizing_eval(obj);
+ }
+
+ static const char *
+ _elm_inwin_text_get_hook(const Evas_Object *obj, const char *item)
+ {
+ Widget_Data *wd = elm_widget_data_get(obj);
+
+ if (!item || !wd || !wd->frm) return NULL;
+ return edje_object_part_text_get(wd->frm, item);
+ }
+
+ static void
++>>>>>>> remotes/origin/upstream
_sizing_eval(Evas_Object *obj)
{
Widget_Data *wd = elm_widget_data_get(obj);
elm_widget_del_hook_set(obj2, _del_hook);
elm_widget_theme_hook_set(obj2, _theme_hook);
elm_widget_focus_next_hook_set(obj2, _elm_inwin_focus_next_hook);
++<<<<<<< HEAD
++=======
+ elm_widget_text_set_hook_set(obj2, _elm_inwin_text_set_hook);
+ elm_widget_text_get_hook_set(obj2, _elm_inwin_text_get_hook);
++>>>>>>> remotes/origin/upstream
elm_widget_can_focus_set(obj2, EINA_TRUE);
elm_widget_highlight_ignore_set(obj2, EINA_TRUE);
* window is shown before doing the virtual "in memory" rendering and then
* save the output to the file specified by the file option (and then exit).
* If no delay is given, the default is 0.5 seconds. If no file is given the
++<<<<<<< HEAD
+ * default output file is "out.png". Repeat option is for continous
++=======
+ * default output file is "out.png". Repeat option is for continuous
++>>>>>>> remotes/origin/upstream
* capturing screenshots. Repeat range is from 1 to 999 and filename is
* fixed to "out001.png" Some examples of using the shot engine:
*
* @li "focus,in": window got focus
* @li "focus,out": window lost focus
* @li "moved": window that holds the canvas was moved
++<<<<<<< HEAD
++=======
+ * @li "withdrawn": window is still managed normally but removed from view
+ * @li "iconified": window is minimized (perhaps into an icon or taskbar)
+ * @li "normal": window is in a normal state (not withdrawn or iconified)
+ * @li "stick": window has become sticky (shows on all desktops)
+ * @li "unstick": window has stopped being sticky
+ * @li "fullscreen": window has become fullscreen
+ * @li "unfullscreen": window has stopped being fullscreen
+ * @li "maximized": window has been maximized
+ * @li "unmaximized": window has stopped being maximized
++>>>>>>> remotes/origin/upstream
*
* Examples:
* @li @ref win_example_01
similar. */
ELM_WIN_MENU, /**< Similar to #ELM_WIN_TOOLBAR. */
ELM_WIN_UTILITY, /**< A persistent utility window, like a toolbox or
++<<<<<<< HEAD
+ pallete. */
++=======
+ palette. */
++>>>>>>> remotes/origin/upstream
ELM_WIN_SPLASH, /**< Splash window for a starting up application. */
ELM_WIN_DROPDOWN_MENU, /**< The window is a dropdown menu, as when an
entry in a menubar is clicked. Typically used
Evas_Object. */
ELM_WIN_SOCKET_IMAGE,/**< The window is rendered onto an image buffer
and can be shown other process's plug image object.
++<<<<<<< HEAD
+ No actural window is created for this type,
++=======
+ No actual window is created for this type,
++>>>>>>> remotes/origin/upstream
instead the window and all of its contents will be
rendered to an image buffer and can be shown
other process's plug image object*/
* When the application window is being managed by Illume, it may request
* any of the following layouts for the virtual keyboard.
*/
++<<<<<<< HEAD
+// XXX: remove this as it conflicts with input panel
++=======
++>>>>>>> remotes/origin/upstream
typedef enum
{
ELM_WIN_KEYBOARD_UNKNOWN, /**< Unknown keyboard state */
ELM_WIN_KEYBOARD_PIN, /**< PIN keyboard layout */
ELM_WIN_KEYBOARD_PHONE_NUMBER, /**< Phone keyboard layout */
ELM_WIN_KEYBOARD_HEX, /**< Hexadecimal numeric keyboard layout */
++<<<<<<< HEAD
+ ELM_WIN_KEYBOARD_TERMINAL, /**< Full (QUERTY) keyboard layout */
++=======
+ ELM_WIN_KEYBOARD_TERMINAL, /**< Full (QWERTY) keyboard layout */
++>>>>>>> remotes/origin/upstream
ELM_WIN_KEYBOARD_PASSWORD, /**< Password keyboard layout */
ELM_WIN_KEYBOARD_IP, /**< IP keyboard layout */
ELM_WIN_KEYBOARD_HOST, /**< Host keyboard layout */
} Elm_Win_Keyboard_Mode;
/**
++<<<<<<< HEAD
++=======
+ * 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 if you use ELM_ILLUME_INDICATOR_HIDE. The default
+ * is to have the indicator shown.
+ */
+ typedef enum
+ {
+ ELM_WIN_INDICATOR_UNKNOWN, /**< 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
+ */
+
+ typedef enum
+ {
+ ELM_WIN_INDICATOR_OPACITY_UNKNOWN, /**< 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;
+
+ /**
++>>>>>>> remotes/origin/upstream
* Available commands that can be sent to the Illume manager.
*
* When running under an Illume session, a window may send commands to the
ELM_ILLUME_COMMAND_FOCUS_BACK, /**< Reverts focus to the previous window */
ELM_ILLUME_COMMAND_FOCUS_FORWARD, /**< Sends focus to the next window in the list */
ELM_ILLUME_COMMAND_FOCUS_HOME, /**< Hides all windows to show the Home screen */
++<<<<<<< HEAD
+ ELM_ILLUME_COMMAND_CLOSE /**< Closes the currently active window */
++=======
+ ELM_ILLUME_COMMAND_CLOSE, /**< Closes the currently active window */
++>>>>>>> remotes/origin/upstream
} Elm_Illume_Command;
/**
* @param name The name of the window
* @param type The window type, one of #Elm_Win_Type.
*
++<<<<<<< HEAD
+ * The @p parent paramter can be @c NULL for every window @p type except
++=======
+ * The @p parent parameter can be @c NULL for every window @p type except
++>>>>>>> remotes/origin/upstream
* #ELM_WIN_INLINED_IMAGE, which needs a parent to retrieve the canvas on
* which the image object will be created.
*
EAPI const char *elm_win_title_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set the icon name of the window
+ *
+ * @param obj The window object
+ * @param icon_name The icon name to set
+ */
+ EAPI void elm_win_icon_name_set(Evas_Object *obj, const char *icon_name);
+
+ /**
+ * Get the icon name of the window
+ *
+ * The returned string is an internal one and should not be freed or
+ * modified. It will also be rendered invalid if a new icon name is set or if
+ * the window is destroyed.
+ *
+ * @param obj The window object
+ * @return The icon name
+ */
+ EAPI const char *elm_win_icon_name_get(const Evas_Object *obj);
+
+ /**
+ * Set the role of the window
+ *
+ * @param obj The window object
+ * @param role The role to set
+ */
+ EAPI void elm_win_role_set(Evas_Object *obj, const char *role);
+
+ /**
+ * Get the role of the window
+ *
+ * The returned string is an internal one and should not be freed or
+ * modified. It will also be rendered invalid if a new role is set or if
+ * the window is destroyed.
+ *
+ * @param obj The window object
+ * @return The role
+ */
+ EAPI const char *elm_win_role_get(const Evas_Object *obj);
+
+ /**
+ * Set the object to represent the window icon
+ *
+ * This sets an object that will be used as the icon for the window. The exact
+ * pixel dimensions of the object (not object size) will be used, and the
+ * image pixels will be used as-is when this function is called. If the
+ * image object has been updated, then call this function again to source
+ * the image pixels and put them on the window's icon. This has limitations
+ * as only image objects allowed at this stage. This may be lifted in future.
+ *
+ * @param obj The window object
+ * @param icon The object to use for an icon
+ */
+ EAPI void elm_win_icon_object_set(Evas_Object *obj, Evas_Object *icon);
+
+ /**
+ * Get the icon object used for the window
+ *
+ * The object returns is the one marked by elm_win_icon_object_set() as the
+ * object to use for the window icon.
+ *
+ * @param obj The window object
+ * @return The icon object set
+ */
+ EAPI const Evas_Object *elm_win_icon_object_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the window's autodel state.
*
* When closing the window in any way outside of the program control, like
* Center a window on its screen
*
* This function centers window @p obj horizontally and/or vertically based on the values
++<<<<<<< HEAD
+ * of @p h and @v.
++=======
+ * of @p h and @p v.
++>>>>>>> remotes/origin/upstream
* @param obj The window object
* @param h If true, center horizontally. If false, do not change horizontal location.
* @param v If true, center vertically. If false, do not change vertical location.
* Shaped windows, when supported, will render the parts of the window that
* has no content, transparent.
*
++<<<<<<< HEAD
+ * If @p shaped is EINA_FALSE, then it is strongly adviced to have some
++=======
+ * If @p shaped is EINA_FALSE, then it is strongly advised to have some
++>>>>>>> remotes/origin/upstream
* background object or cover the entire window in any other way, or the
* parts of the canvas that have no data will show framebuffer artifacts.
*
EAPI void elm_win_alpha_set(Evas_Object *obj, Eina_Bool alpha);
/**
++<<<<<<< HEAD
+ * Get the transparency state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is transparent
+ *
+ * @see elm_win_transparent_set()
+ */
+// XXX: deprecate this
+EAPI Eina_Bool elm_win_transparent_get(const Evas_Object *obj);
+
+/**
+ * Set the transparency state of a window.
+ *
+ * Use elm_win_alpha_set() instead.
+ *
+ * @param obj The window object
+ * @param transparent If true, the window is transparent
+ *
+ * @see elm_win_alpha_set()
+ */
+// XXX: deprecate this
+EAPI void elm_win_transparent_set(Evas_Object *obj, Eina_Bool transparent);
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* Get the alpha channel state of a window.
*
* @param obj The window object
EAPI Eina_Bool elm_win_iconified_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Set the withdrawn state of a window.
+ *
+ * @param obj The window object
+ * @param withdrawn If true, the window is withdrawn
+ */
+ EAPI void elm_win_withdrawn_set(Evas_Object *obj, Eina_Bool withdrawn);
+
+ /**
+ * Get the withdrawn state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is withdrawn
+ */
+ EAPI Eina_Bool elm_win_withdrawn_get(const Evas_Object *obj);
+
+ /**
+ * Set the urgent state of a window.
+ *
+ * @param obj The window object
+ * @param urgent If true, the window is urgent
+ */
+ EAPI void elm_win_urgent_set(Evas_Object *obj, Eina_Bool urgent);
+
+ /**
+ * Get the urgent state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is urgent
+ */
+ EAPI Eina_Bool elm_win_urgent_get(const Evas_Object *obj);
+
+ /**
+ * Set the demand_attention state of a window.
+ *
+ * @param obj The window object
+ * @param demand_attention If true, the window is demand_attention
+ */
+ EAPI void elm_win_demand_attention_set(Evas_Object *obj, Eina_Bool demand_attention);
+
+ /**
+ * Get the demand_attention state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is demand_attention
+ */
+ EAPI Eina_Bool elm_win_demand_attention_get(const Evas_Object *obj);
+
+ /**
+ * Set the modal state of a window.
+ *
+ * @param obj The window object
+ * @param modal If true, the window is modal
+ */
+ EAPI void elm_win_modal_set(Evas_Object *obj, Eina_Bool modal);
+
+ /**
+ * Get the modal state of a window.
+ *
+ * @param obj The window object
+ * @return If true, the window is modal
+ */
+ EAPI Eina_Bool elm_win_modal_get(const Evas_Object *obj);
+
+ /**
+ * Set the aspect ratio of a window.
+ *
+ * @param obj The window object
+ * @param aspect If 0, the window has no aspect limits, otherwise it is
+ * width divided by height
+ */
+ EAPI void elm_win_aspect_set(Evas_Object *obj, double aspect);
+
+ /**
+ * Get the aspect ratio of a window.
+ *
+ * @param obj The window object
+ * @return The aspect ratio set (0 by default)
+ */
+ EAPI double elm_win_aspect_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Set the layer of the window.
*
* What this means exactly will depend on the underlying engine used.
/**
* Get the style set for the focus highlight object
*
++<<<<<<< HEAD
+ * Gets the style set for this windows highilght object, or NULL if none
++=======
+ * Gets the style set for this windows highlight object, or NULL if none
++>>>>>>> remotes/origin/upstream
* is set.
*
* @param obj The window to retrieve the highlights style from
* @return The style set or NULL if none was. Default is used in that case.
*/
EAPI const char *elm_win_focus_highlight_style_get(const Evas_Object *obj);
++<<<<<<< HEAD
+EAPI void elm_win_indicator_state_set(Evas_Object *obj, int show_state);
+EAPI int elm_win_indicator_state_get(Evas_Object *obj);
+/*...
+ * ecore_x_icccm_hints_set -> accepts_focus (add to ecore_evas)
+ * ecore_x_icccm_hints_set -> window_group (add to ecore_evas)
+ * ecore_x_icccm_size_pos_hints_set -> request_pos (add to ecore_evas)
+ * ecore_x_icccm_client_leader_set -> l (add to ecore_evas)
+ * ecore_x_icccm_window_role_set -> role (add to ecore_evas)
+ * ecore_x_icccm_transient_for_set -> forwin (add to ecore_evas)
+ * ecore_x_netwm_window_type_set -> type (add to ecore_evas)
+ *
+ * (add to ecore_x) set netwm argb icon! (add to ecore_evas)
+ * (blank mouse, private mouse obj, defaultmouse)
+ *
+ */
++=======
++>>>>>>> remotes/origin/upstream
/**
* Sets the keyboard mode of the window.
EAPI Eina_Bool elm_win_keyboard_win_get(const Evas_Object *obj);
/**
++<<<<<<< HEAD
++=======
+ * Sets the indicator mode of the window.
+ *
+ * @param obj The window object
+ * @param mode The mode to set, one of #Elm_Win_Indicator_Mode
+ */
+ EAPI void elm_win_indicator_mode_set(Evas_Object *obj, Elm_Win_Indicator_Mode mode);
+
+ /**
+ * Gets the indicator mode of the window.
+ *
+ * @param obj The window object
+ * @return The mode, one of #Elm_Win_Indicator_Mode
+ */
+ EAPI Elm_Win_Indicator_Mode elm_win_indicator_mode_get(const Evas_Object *obj);
+
+ /**
+ * Sets the indicator opacity mode of the window.
+ *
+ * @param obj The window object
+ * @param mode The mode to set, one of #Elm_Win_Indicator_Opacity_Mode
+ */
+ EAPI void elm_win_indicator_opacity_set(Evas_Object *obj, Elm_Win_Indicator_Opacity_Mode mode);
+
+ /**
+ * Gets the indicator opacity mode of the window.
+ *
+ * @param obj The window object
+ * @return The mode, one of #Elm_Win_Indicator_Opacity_Mode
+ */
+ EAPI Elm_Win_Indicator_Opacity_Mode elm_win_indicator_opacity_get(const Evas_Object *obj);
+
+ /**
++>>>>>>> remotes/origin/upstream
* Get the screen position of a window.
*
* @param obj The window object
*
* @param obj The window object
* @param svcname The name of the service to be advertised. ensure that it is unique (when combined with @p svcnum) otherwise creation may fail.
++<<<<<<< HEAD
+ * @param svcnum A number (any value, 0 beig the common default) to differentiate multiple instances of services with the same name.
+ * @param svcsys A boolean that if true, specifies to create a system-wide service all users can connect to, otherwise the service is private to the user ide that created the service.
++=======
+ * @param svcnum A number (any value, 0 being the common default) to differentiate multiple instances of services with the same name.
+ * @param svcsys A boolean that if true, specifies to create a system-wide service all users can connect to, otherwise the service is private to the user id that created the service.
++>>>>>>> remotes/origin/upstream
* @return If socket creation is successful
*/
EAPI Eina_Bool elm_win_socket_listen(Evas_Object *obj, const char *svcname, int svcnum, Eina_Bool svcsys);
* @param parent The parent object
* @return The new object or NULL if it cannot be created
*/
++<<<<<<< HEAD
+// XXX: deprecate this
++=======
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *elm_win_inwin_add(Evas_Object *parent);
/**
*
* @param obj The inwin to activate
*/
++<<<<<<< HEAD
+// XXX: deprecate this
++=======
++>>>>>>> remotes/origin/upstream
EAPI void elm_win_inwin_activate(Evas_Object *obj);
/**
* @param obj The inwin object
* @param content The object to set as content
*/
++<<<<<<< HEAD
+// XXX: deprecate this
++=======
++>>>>>>> remotes/origin/upstream
EAPI void elm_win_inwin_content_set(Evas_Object *obj, Evas_Object *content);
/**
* Get the content of an inwin object.
*
++<<<<<<< HEAD
+ * Return the content object which is set for this widget.
++=======
+ * Return the content object for this widget.
++>>>>>>> remotes/origin/upstream
*
* The returned object is valid as long as the inwin is still alive and no
* other content is set on it. Deleting the object will notify the inwin
* @param obj The inwin object
* @return The content that is being used
*/
++<<<<<<< HEAD
+// XXX: deprecate this
++=======
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *elm_win_inwin_content_get(const Evas_Object *obj);
/**
* @param obj The inwin object
* @return The content that was being used
*/
++<<<<<<< HEAD
+// XXX: deprecate this
++=======
++>>>>>>> remotes/origin/upstream
EAPI Evas_Object *elm_win_inwin_content_unset(Evas_Object *obj);
/**
_elm_cursor_set_hot_spots(cur);
}
++<<<<<<< HEAD
+EAPI void
+elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only)
+{
+ ELM_CURSOR_GET_OR_RETURN(cur, obj);
+ cur->engine_only = engine_only;
++=======
+ EINA_DEPRECATED EAPI void
+ elm_object_cursor_engine_only_set(Evas_Object *obj, Eina_Bool engine_only)
+ {
+ elm_object_cursor_theme_search_enabled_set(obj, engine_only);
+ }
+
+ EAPI void elm_object_cursor_theme_search_enabled_set(Evas_Object *obj, Eina_Bool theme_search)
+ {
+ ELM_CURSOR_GET_OR_RETURN(cur, obj);
+ cur->engine_only = theme_search;
++>>>>>>> remotes/origin/upstream
if (cur->obj)
{
evas_object_del(cur->obj);
_elm_cursor_cur_set(cur);
}
++<<<<<<< HEAD
+EAPI Eina_Bool
+elm_object_cursor_engine_only_get(const Evas_Object *obj)
+{
+ ELM_CURSOR_GET_OR_RETURN(cur, obj, EINA_FALSE);
+ return cur->engine_only;
+}
+
+EAPI int
+elm_cursor_engine_only_get(void)
+{
+ return _elm_config->cursor_engine_only;
+}
+
+EAPI Eina_Bool
+elm_cursor_engine_only_set(int engine_only)
+{
+ if ((engine_only < 0) || (engine_only > 1)) return EINA_FALSE;
+ _elm_config->cursor_engine_only = engine_only;
+ return EINA_TRUE;
++=======
+
+ EINA_DEPRECATED EAPI Eina_Bool
+ elm_object_cursor_engine_only_get(const Evas_Object *obj)
+ {
+ return elm_object_cursor_theme_search_enabled_get(obj);
+ }
+
+ EAPI Eina_Bool
+ elm_object_cursor_theme_search_enabled_get(const Evas_Object *obj)
+ {
+ ELM_CURSOR_GET_OR_RETURN(cur, obj, EINA_FALSE);
+ return cur->engine_only;
++>>>>>>> remotes/origin/upstream
}
sd = evas_object_smart_data_get(obj);
/* smart code here */
++<<<<<<< HEAD
+ /* NOTE: Do not merge upstream for the if (sd->edje) { } statements
+ But wonder whether the edje resource icons have no problem. */
+ if (!sd->edje) goto out;
+
++=======
++>>>>>>> remotes/origin/upstream
if (sd->prev) evas_object_del(sd->prev);
pclip = evas_object_clip_get(sd->obj);
if (sd->obj) sd->prev = sd->obj;
evas_object_clip_set(sd->obj, pclip);
sd->edje = EINA_FALSE;
++<<<<<<< HEAD
+out:
++=======
++>>>>>>> remotes/origin/upstream
if (!sd->size)
evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
_els_smart_icon_file_key_set(Evas_Object *obj, const char *file, const char *key)
{
Smart_Data *sd;
++<<<<<<< HEAD
++=======
+ Evas_Coord w, h;
++>>>>>>> remotes/origin/upstream
sd = evas_object_smart_data_get(obj);
if (!sd) return EINA_FALSE;
_els_smart_icon_file_helper(obj);
evas_object_image_file_set(sd->obj, file, key);
++<<<<<<< HEAD
+ // NOTE: Do not merge upstream for sd->preloading.
+ sd->preloading = EINA_FALSE; // by default preload off by seok.j.jeong
+ sd->show = EINA_TRUE;
+ // NOTE: Do not merge upstream for sd->preloading.
+ if (sd->preloading)
+ evas_object_image_preload(sd->obj, EINA_FALSE);
+ // NOTE: Do not merge upstream for sd->preloading.
+ if (sd->preloading) // sd->preloading can be changed by above function. so add "if (sd->preloading)" as below
+ evas_object_hide(sd->obj);
++=======
+ sd->preloading = EINA_TRUE;
+ sd->show = EINA_TRUE;
+ evas_object_hide(sd->obj);
+ _els_smart_icon_size_get(obj, &w, &h);
+ evas_object_image_load_size_set(sd->obj, w, h);
+ evas_object_image_preload(sd->obj, EINA_FALSE);
++>>>>>>> remotes/origin/upstream
if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
{
ERR("Things are going bad for '%s' (%p)", file, sd->obj);
case ELM_IMAGE_FLIP_VERTICAL:
_els_smart_icon_flip_vertical(sd);
return;
++<<<<<<< HEAD
+ case ELM_IMAGE_ROTATE_180_CW:
++=======
+ case ELM_IMAGE_ROTATE_180:
++>>>>>>> remotes/origin/upstream
_els_smart_icon_rotate_180(sd);
return;
default:
w = -w;
hw = hw - 1;
break;
++<<<<<<< HEAD
+ case ELM_IMAGE_ROTATE_90_CW:
+ to = data + w - 1;
+ hw = -hw - 1;
+ break;
+ case ELM_IMAGE_ROTATE_90_CCW:
++=======
+ case ELM_IMAGE_ROTATE_90:
+ to = data + w - 1;
+ hw = -hw - 1;
+ break;
+ case ELM_IMAGE_ROTATE_270:
++>>>>>>> remotes/origin/upstream
to = data + hw - w;
w = -w;
hw = hw + 1;
evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
sd->px = sd->delta_posx*sd->gravity_x;
sd->py = sd->delta_posy*sd->gravity_y;
++<<<<<<< HEAD
++=======
+
++>>>>>>> remotes/origin/upstream
}
else
evas_object_move(sd->child_obj, sd->x - sd->px, sd->y - sd->py);
Eina_Bool bounce_x_hold : 1;
Eina_Bool bounce_y_hold : 1;
Eina_Bool scroll : 1;
++<<<<<<< HEAD
+ Eina_Bool want_reset : 1;
++=======
++>>>>>>> remotes/origin/upstream
} down;
struct {
Eina_Bool bounce_animator_disabled :1;
Eina_Bool is_mirrored : 1;
Eina_Bool wheel_disabled : 1;
++<<<<<<< HEAD
+ Eina_Bool event_propagation :1;
++=======
++>>>>>>> remotes/origin/upstream
};
/* local subsystem functions */
}
void
++<<<<<<< HEAD
+elm_smart_scroller_propagate_events_set(Evas_Object *obj, Eina_Bool propagation)
+{
+ API_ENTRY return;
+ sd->event_propagation = propagation;
+
+ evas_object_propagate_events_set(sd->edje_obj, propagation);
+}
+
+Eina_Bool
+elm_smart_scroller_propagate_events_get(Evas_Object *obj)
+{
+ API_ENTRY return EINA_FALSE;
+ return sd->event_propagation;
+}
+
+void
++=======
++>>>>>>> remotes/origin/upstream
elm_smart_scroller_object_theme_set(Evas_Object *parent, Evas_Object *obj, const char *clas, const char *group, const char *style)
{
API_ENTRY return;
sd->down.dragged_began = EINA_FALSE;
sd->down.hold_parent = EINA_FALSE;
sd->down.cancelled = EINA_FALSE;
++<<<<<<< HEAD
+ if(sd->hold || sd->freeze)
+ sd->down.want_reset = EINA_TRUE;
+ else
+ sd->down.want_reset = EINA_FALSE;
++=======
++>>>>>>> remotes/origin/upstream
}
}
fx = sd->down.hold_x;
fy = sd->down.hold_y;
++<<<<<<< HEAD
+
+ if ((!sd->hold) && (!sd->freeze) && (_elm_config->scroll_smooth_time_interval > 0.0))
+ {
+ int i, count = 0; //count for the real event number we have to deal with
+ int queue_size = 10; //for event queue size
+ int src_index = 0, dst_index = 0;
+ int xsum = 0, ysum=0;
+ Evas_Coord x=0, y=0;
+
+ struct {
+ Evas_Coord x, y;
+ double t;
+ } pos[queue_size];
+
+ double tdiff, tnow;
+ double time_interval=_elm_config->scroll_smooth_time_interval;
+ // FIXME: assume server and client have the same "timezone"
+ // (0 timepoint) for now. this needs to be figured out in advance
+ // though.
+ tdiff = sd->down.hist.est_timestamp_diff;
+ tnow = ecore_time_get() - tdiff;
+
+ for(i = 0; i < queue_size; i++)
+ {
+ x = sd->down.history[i].x;
+ y = sd->down.history[i].y;
+
+ //if there is no history value , we don't deal with it
+ //if there is better wat to know existance of history value , I will modify this code to it
+ if ( (x == 0) && (y == 0) )
+ {
+ break;
+ }
+ _down_coord_eval(sd, &x, &y);
+
+ pos[i].x = x;
+ pos[i].y = y;
+ pos[i].t = tnow - sd->down.history[i].timestamp;
+ }
+ count = --i;
+
+ // we only deal with smooth scroll there is enough history
+ for(i = 0; i < queue_size; i++)
+ {
+ if (src_index > count) break;
+ if (i == 0)
+ {
+ xsum = pos[i].x;
+ ysum = pos[i].y;
+ dst_index++;
+ continue;
+ }
+ while ((pos[src_index].t < time_interval *i) &&
+ (src_index <= count))
+ {
+ src_index++;
+ }
+ if (src_index <= count)
+ {
+ xsum += pos[src_index].x;
+ ysum += pos[src_index].y;
+ dst_index++;
+ }
+ }
+ fx = xsum / dst_index;
+ fy = ysum / dst_index;
++=======
+ if (_elm_config->scroll_smooth_amount > 0.0)
+ {
+ int i, count = 0;
+ Evas_Coord basex = 0, basey = 0, x, y;
+ double dt, t, tdiff, tnow, twin;
+ struct {
+ Evas_Coord x, y, dx, dy;
+ double t, dt;
+ } pos[60];
+
+ tdiff = sd->down.hist.est_timestamp_diff;
+ tnow = ecore_time_get() - tdiff;
+ t = tnow;
+ twin = _elm_config->scroll_smooth_time_window;
+ for (i = 0; i < 60; i++)
+ {
+ // oldest point is sd->down.history[i]
+ // newset is sd->down.history[0]
+ dt = t - sd->down.history[i].timestamp;
+ if (dt > twin)
+ {
+ i--;
+ break;
+ }
+ x = sd->down.history[i].x;
+ y = sd->down.history[i].y;
+ _down_coord_eval(sd, &x, &y);
+ if (i == 0)
+ {
+ basex = x;
+ basey = y;
+ }
+ pos[i].x = x - basex;
+ pos[i].y = y - basey;
+ pos[i].t =
+ sd->down.history[i].timestamp - sd->down.history[0].timestamp;
+ count++;
+ }
+ count = i;
+ if (count >= 2)
+ {
+ double dtsum = 0.0, tadd, maxdt;
+ double dxsum = 0.0, dysum = 0.0, xsum = 0.0, ysum = 0.0;
+
+ for (i = 0; i < (count - 1); i++)
+ {
+ pos[i].dx = pos[i].x - pos[i + 1].x;
+ pos[i].dy = pos[i].y - pos[i + 1].y;
+ pos[i].dt = pos[i].t - pos[i + 1].t;
+ dxsum += pos[i].dx;
+ dysum += pos[i].dy;
+ dtsum += pos[i].dt;
+ xsum += pos[i].x;
+ ysum += pos[i].y;
+ }
+ maxdt = pos[i].t;
+ dxsum /= (double)i;
+ dysum /= (double)i;
+ dtsum /= (double)i;
+ xsum /= (double)i;
+ ysum /= (double)i;
+ tadd = tnow - sd->down.history[0].timestamp + _elm_config->scroll_smooth_future_time;
+ tadd = tadd - (maxdt / 2);
+ #define WEIGHT(n, o, v) n = (((double)o * (1.0 - v)) + ((double)n * v))
+ WEIGHT(tadd, sd->down.hist.tadd, _elm_config->scroll_smooth_history_weight);
+ WEIGHT(dxsum, sd->down.hist.dxsum, _elm_config->scroll_smooth_history_weight);
+ WEIGHT(dysum, sd->down.hist.dysum, _elm_config->scroll_smooth_history_weight);
+ fx = basex + xsum + ((dxsum * tadd) / dtsum);
+ fy = basey + ysum + ((dysum * tadd) / dtsum);
+ sd->down.hist.tadd = tadd;
+ sd->down.hist.dxsum = dxsum;
+ sd->down.hist.dysum = dysum;
+ WEIGHT(fx, sd->down.hold_x, _elm_config->scroll_smooth_amount);
+ WEIGHT(fy, sd->down.hold_y, _elm_config->scroll_smooth_amount);
+ }
+ // printf("%3.5f %i %i\n", ecore_time_get(), sd->down.hold_y, fy);
++>>>>>>> remotes/origin/upstream
}
elm_smart_scroller_child_pos_get(sd->smart_obj, &ox, &oy);
Evas_Event_Mouse_Down *ev;
Smart_Data *sd;
Evas_Coord x = 0, y = 0, ox = 0, oy = 0;
++<<<<<<< HEAD
+ Evas_Coord vw, vh, aw, ah;
++=======
++>>>>>>> remotes/origin/upstream
sd = data;
ev = event_info;
((sd->down.dy > 0) && (sd->down.pdy > 0)) ||
((sd->down.dy < 0) && (sd->down.pdy < 0)))
{
++<<<<<<< HEAD
+ double t = ecore_loop_time_get();
+ double dt = t - sd->down.anim_start;
+
+ if (dt < 0.0) dt = 0.0;
+ else if (dt > _elm_config->thumbscroll_friction)
+ dt = _elm_config->thumbscroll_friction;
+ sd->down.extra_time = _elm_config->thumbscroll_friction - dt;
+ }
+ else
+ sd->down.extra_time = 0.0;
+ elm_smart_scroller_child_viewport_size_get(sd->smart_obj, &vw, &vh);
+ aw = abs(sd->down.dx);
+ if (aw > vw*3)
+ {
+ if (sd->down.dx > 0) sd->down.dx = vw*3;
+ else sd->down.dx = -(vw*3);
+ }
+ ah = abs(sd->down.dy);
+ if (ah > vh*3)
+ {
+ if (sd->down.dy > 0) sd->down.dy = vh*3;
+ else sd->down.dy = -(vh*3);
+ }
++=======
+ double tt = ecore_loop_time_get();
+ double dtt = tt - sd->down.anim_start;
+
+ if (dtt < 0.0) dtt = 0.0;
+ else if (dtt > _elm_config->thumbscroll_friction)
+ dtt = _elm_config->thumbscroll_friction;
+ sd->down.extra_time = _elm_config->thumbscroll_friction - dtt;
+ }
+ else
+ sd->down.extra_time = 0.0;
++>>>>>>> remotes/origin/upstream
sd->down.pdx = sd->down.dx;
sd->down.pdy = sd->down.dy;
ox = -sd->down.dx;
y = sd->down.sy - (ev->cur.canvas.y - sd->down.y);
else
y = sd->down.sy;
++<<<<<<< HEAD
+ if(sd->down.want_reset)
+ {
+ sd->down.x = ev->cur.canvas.x;
+ sd->down.y = ev->cur.canvas.y;
+ sd->down.want_reset = EINA_FALSE;
+ }
++=======
++>>>>>>> remotes/origin/upstream
if ((sd->down.dir_x) || (sd->down.dir_y))
{
if (!sd->down.locked)
if (str && (!strcmp(str, "enabled")))
{
elm_win_alpha_set(tt->tt_win, EINA_TRUE);
++<<<<<<< HEAD
+ elm_win_transparent_set(tt->tt_win, EINA_TRUE);
++=======
++>>>>>>> remotes/origin/upstream
}
else
{
elm_win_alpha_set(tt->tt_win, EINA_FALSE);
++<<<<<<< HEAD
+ elm_win_transparent_set(tt->tt_win, EINA_FALSE);
++=======
++>>>>>>> remotes/origin/upstream
}
}
}
/**
++<<<<<<< HEAD
+ * Get the configured tooltip delay
+ *
+ * This gets the globally configured tooltip delay in seconds
+ *
+ * @return The tooltip delay
+ * @ingroup Tooltips
+ */
+EAPI double
+elm_tooltip_delay_get(void)
+{
+ return _elm_config->tooltip_delay;
+}
+
+/**
+ * Set the configured tooltip delay
+ *
+ * This sets the globally configured delay to tooltip
+ *
+ * @param delay The delay to show the tooltip
+ * @return EINA_TRUE if value is valid and setted
+ * @ingroup Tooltips
+ */
+EAPI Eina_Bool
+elm_tooltip_delay_set(double delay)
+{
+ if (delay < 0.0) return EINA_FALSE;
+ _elm_config->tooltip_delay = delay;
+ return EINA_TRUE;
+}
+
+/**
++=======
++>>>>>>> remotes/origin/upstream
* @brief Disable size restrictions on an object's tooltip
* @param obj The tooltip's anchor object
* @param disable If EINA_TRUE, size restrictions are disabled
* @return EINA_FALSE on failure, EINA_TRUE on success
*
++<<<<<<< HEAD
+ * This function allows a tooltip to expand beyond its parant window's canvas.
++=======
+ * This function allows a tooltip to expand beyond its parent window's canvas.
++>>>>>>> remotes/origin/upstream
* It will instead be limited only by the size of the display.
*/
EAPI Eina_Bool
* @return If EINA_TRUE, size restrictions are disabled
*
* This function returns whether a tooltip is allowed to expand beyond
++<<<<<<< HEAD
+ * its parant window's canvas.
++=======
+ * its parent window's canvas.
++>>>>>>> remotes/origin/upstream
* It will instead be limited only by the size of the display.
*/
EAPI Eina_Bool
SUBDIRS = \
test_entry \
++<<<<<<< HEAD
+ctxpopup_copypasteUI \
+test_map \
+access_output
++=======
+ test_map \
+ access_output \
+ datetime_input_ctxpopup
++>>>>>>> remotes/origin/upstream
module_la_SOURCES = mod.c
++<<<<<<< HEAD
+module_la_LIBADD = $(top_builddir)/src/lib/libelementary.la
++=======
+ module_la_LIBADD = @ELEMENTARY_LIBS@ $(top_builddir)/src/lib/libelementary.la
++>>>>>>> remotes/origin/upstream
module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version
module_la_LIBTOOLFLAGS = --tag=disable-static
#endif
EAPI char *
++<<<<<<< HEAD
+map_module_source_get(void)
++=======
+ map_module_source_name_get(void)
++>>>>>>> remotes/origin/upstream
{
return strdup("test_map");
}
EAPI int
++<<<<<<< HEAD
+map_module_zoom_min_get(void)
++=======
+ map_module_tile_zoom_min_get(void)
++>>>>>>> remotes/origin/upstream
{
return 0;
}
EAPI int
++<<<<<<< HEAD
+map_module_zoom_max_get(void)
++=======
+ map_module_tile_zoom_max_get(void)
++>>>>>>> remotes/origin/upstream
{
return 18;
}
EAPI char *
++<<<<<<< HEAD
+map_module_url_get(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
++=======
+ map_module_tile_url_get(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
++>>>>>>> remotes/origin/upstream
{
char buf[PATH_MAX];
snprintf(buf, sizeof(buf), "http://tile.openstreetmap.org/%d/%d/%d.png",
return strdup(buf);
}
++<<<<<<< HEAD
+EAPI int
+map_module_route_source_get(void)
+{
+ return 0;
+}
+
+EAPI char *
+map_module_route_url_get(Evas_Object *obj __UNUSED__, char *type_name __UNUSED__, int method __UNUSED__, double flon __UNUSED__, double flat __UNUSED__, double tlon __UNUSED__, double tlat __UNUSED__)
++=======
+ EAPI char *
+ map_module_route_source_get(void)
+ {
+ return NULL;
+ }
+
+ EAPI char *
+ map_module_route_url_get(Evas_Object *obj __UNUSED__, const char *type_name __UNUSED__, int method __UNUSED__, double flon __UNUSED__, double flat __UNUSED__, double tlon __UNUSED__, double tlat __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
return strdup("");
}
EAPI char *
++<<<<<<< HEAD
+map_module_name_url_get(Evas_Object *obj __UNUSED__, int method __UNUSED__, char *name __UNUSED__, double lon __UNUSED__, double lat __UNUSED__)
++=======
+ map_module_name_url_get(Evas_Object *obj __UNUSED__, int method __UNUSED__, const char *name __UNUSED__, double lon __UNUSED__, double lat __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
return strdup("");
}
EAPI Eina_Bool
++<<<<<<< HEAD
+map_module_geo_into_coord(const Evas_Object *obj __UNUSED__, int zoom __UNUSED__, double lon __UNUSED__, double lat __UNUSED__, int size __UNUSED__, int *x __UNUSED__, int *y __UNUSED__)
++=======
+ map_module_tile_geo_to_coord(const Evas_Object *obj __UNUSED__, int zoom __UNUSED__, double lon __UNUSED__, double lat __UNUSED__, int size __UNUSED__, int *x __UNUSED__, int *y __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
return EINA_FALSE;
}
EAPI Eina_Bool
++<<<<<<< HEAD
+map_module_coord_into_geo(const Evas_Object *obj __UNUSED__, int zoom __UNUSED__, int x __UNUSED__, int y __UNUSED__, int size __UNUSED__, double *lon __UNUSED__, double *lat __UNUSED__)
++=======
+ map_module_tile_coord_to_geo(const Evas_Object *obj __UNUSED__, int zoom __UNUSED__, int x __UNUSED__, int y __UNUSED__, int size __UNUSED__, double *lon __UNUSED__, double *lat __UNUSED__)
++>>>>>>> remotes/origin/upstream
{
return EINA_FALSE;
}