forked from enlightenment/efl
Summary: the basic concept of Efl.Ui.Tab_Pager is similar to elm_toolbar. user can attach Efl.Ui.Tab_Bar to the tab_pager. user can create an Efl.Ui.Tab_Page to add tab label, tab icon and set the content of the page. user can pack Efl.Ui.Tab_Page into tab_pager. The tab and page match one to one. user can controls tab and page through tab_pager. See T5317 Test Plan: elementary_test -to efl.ui.tab_pager Reviewers: cedric, woohyun, Jaehyun_Cho Reviewed By: Jaehyun_Cho Subscribers: eunue Differential Revision: https://phab.enlightenment.org/D5988feature/wayland/multi-output
parent
b8de04d77f
commit
67045ea28a
22 changed files with 2424 additions and 2 deletions
@ -0,0 +1,66 @@ |
||||
collections { |
||||
group { "tab_page_layout"; |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
} |
||||
swallow { "menu"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
align: 0 0; |
||||
min: 200 0; |
||||
max: 200 -1; |
||||
fixed: 0 1; |
||||
} |
||||
} |
||||
rect { "separator"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "menu"; |
||||
rel1.relative: 1 0; |
||||
align: 0 0; |
||||
min: 1 0; |
||||
max: 1 -1; |
||||
fixed: 0 1; |
||||
color: 75 75 75 255; |
||||
} |
||||
} |
||||
swallow { "tab_pager"; |
||||
scale; |
||||
desc { "default"; |
||||
rel1.to: "separator"; |
||||
rel2.to: "base"; |
||||
rel1.relative: 1 0; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
group { "page_layout"; |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
} |
||||
rect { "bg"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
color: 255 255 255 255; |
||||
} |
||||
} |
||||
text { "text"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
align: 0.5 0.5; |
||||
color: 0 0 0 255; |
||||
text.size: 20; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,596 @@ |
||||
group { "efl/tab_bar"; |
||||
images.image: "vgrad_med_lighter.png" COMP; |
||||
images.image: "bevel_out.png" COMP; |
||||
images.image: "shine.png" COMP; |
||||
images.image: "shadow_square_tiny.png" COMP; |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
} |
||||
image { "shadow"; |
||||
nomouse; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
rel1.offset: -3 -2; |
||||
rel2.offset: 2 3; |
||||
image.normal: "shadow_square_tiny.png"; |
||||
image.border: 6 6 6 6; |
||||
fill.smooth: 0; |
||||
} |
||||
} |
||||
image { "bg"; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
image.normal: "vgrad_med_lighter.png"; |
||||
rel1.offset: 0 0; |
||||
rel2.offset: -1 -1; |
||||
fill.smooth: 0; |
||||
} |
||||
} |
||||
swallow { "efl.content"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
} |
||||
} |
||||
image { "bevel"; |
||||
nomouse; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
image.normal: "bevel_out.png"; |
||||
image.border: 1 1 1 1; |
||||
image.middle: 0; |
||||
fill.smooth: 0; |
||||
} |
||||
} |
||||
image { "shine"; |
||||
nomouse; |
||||
desc { "default"; |
||||
image.normal: "shine.png"; |
||||
rel.to: "base"; |
||||
rel1.offset: 0 -2; |
||||
rel2.relative: 1.0 0.0; |
||||
rel2.offset: -1 2; |
||||
FIXED_SIZE(69, 5) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
group { "efl/tab_bar/tab"; |
||||
images.image: "shadow_inset_bevels.png" COMP; |
||||
images.image: "shadow_angled_in_sides.png" COMP; |
||||
images.image: "horizontal_separated_bar_small_glow.png" COMP; |
||||
data.item: "transition_animation_on" "1"; |
||||
images.image: "bevel_dark_in.png" COMP; |
||||
|
||||
#define ICON 1 |
||||
#define LABEL 2 |
||||
#define MASK 3 |
||||
#define DISABLE 4 |
||||
script { |
||||
public btmode; |
||||
public eval_mode(m) { |
||||
new m1 = m & MASK; |
||||
new d = m & DISABLE; |
||||
if (m1 == (ICON | LABEL)) { |
||||
if (!d) { |
||||
set_state(PART:"efl.icon", "default", 0.0); |
||||
set_state(PART:"icon_clip", "default", 0.0); |
||||
set_state(PART:"efl.text", "default", 0.0); |
||||
set_state(PART:"label2", "default", 0.0); |
||||
} else { |
||||
set_state(PART:"efl.icon", "default", 0.0); |
||||
set_state(PART:"icon_clip", "disabled", 0.0); |
||||
set_state(PART:"efl.text", "disabled", 0.0); |
||||
set_state(PART:"label2", "default", 0.0); |
||||
} |
||||
} else if (m1 == (ICON)) { |
||||
if (!d) { |
||||
set_state(PART:"efl.icon", "icononly", 0.0); |
||||
set_state(PART:"icon_clip", "default", 0.0); |
||||
set_state(PART:"efl.text", "icononly", 0.0); |
||||
set_state(PART:"label2", "icononly", 0.0); |
||||
} else { |
||||
set_state(PART:"efl.icon", "icononly", 0.0); |
||||
set_state(PART:"icon_clip", "disabled", 0.0); |
||||
set_state(PART:"efl.text", "icononly", 0.0); |
||||
set_state(PART:"label2", "icononly", 0.0); |
||||
} |
||||
} else if (m1 == (LABEL)) { |
||||
if (!d) { |
||||
set_state(PART:"efl.icon", "noicon", 0.0); |
||||
set_state(PART:"icon_clip", "default", 0.0); |
||||
set_state(PART:"efl.text", "noicon", 0.0); |
||||
set_state(PART:"label2", "noicon", 0.0); |
||||
} else { |
||||
set_state(PART:"efl.icon", "noicon", 0.0); |
||||
set_state(PART:"icon_clip", "disabled", 0.0); |
||||
set_state(PART:"efl.text", "noicon_disabled", 0.0); |
||||
set_state(PART:"label2", "noicon_disabled", 0.0); |
||||
} |
||||
} else { |
||||
if (!d) { |
||||
set_state(PART:"efl.icon", "noicon", 0.0); |
||||
set_state(PART:"icon_clip", "default", 0.0); |
||||
set_state(PART:"efl.text", "noicon", 0.0); |
||||
set_state(PART:"label2", "noicon", 0.0); |
||||
} else { |
||||
set_state(PART:"efl.icon", "noicon", 0.0); |
||||
set_state(PART:"icon_clip", "disabled", 0.0); |
||||
set_state(PART:"efl.text", "noicon_disabled", 0.0); |
||||
set_state(PART:"label2", "noicon_disabled", 0.0); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
desc { "vert"; |
||||
rel1.offset: -1 0; |
||||
rel2.offset: 0 -1; |
||||
} |
||||
} |
||||
image { "shadow1"; |
||||
nomouse; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
image.normal: "shadow_inset_bevels.png"; |
||||
image.border: 2 2 0 1; |
||||
hid; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
} |
||||
image { "shadow2"; |
||||
nomouse; |
||||
desc { "default"; |
||||
rel.to: "shadow1"; |
||||
rel1.offset: 1 0; |
||||
rel2.offset: -2 -1; |
||||
image.normal: "shadow_angled_in_sides.png"; |
||||
image.border: 8 8 0 1; |
||||
image.middle: 0; |
||||
hid; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
} |
||||
rect { "bend_clip"; |
||||
desc { "default"; |
||||
hid; |
||||
} |
||||
desc { "vert"; |
||||
vis; |
||||
} |
||||
} |
||||
image { "bend"; |
||||
clip_to: "bend_clip"; |
||||
desc { "default"; |
||||
min: 2 2; |
||||
max: 99999 2; |
||||
rel2.offset: -1 1; |
||||
rel2.relative: 1.0 0.0; |
||||
image.normal: "bevel_dark_in.png"; |
||||
image.border: 2 2 2 2; |
||||
fill.smooth: 0; |
||||
hid; |
||||
fixed: 1 1; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
} |
||||
rect { "icon_clip"; |
||||
desc { "default"; |
||||
} |
||||
desc { "disabled"; |
||||
inherit: "default"; |
||||
color: 255 255 255 64; |
||||
} |
||||
} |
||||
rect { "icon_clip1"; |
||||
clip_to: "icon_clip"; |
||||
desc { "default"; |
||||
color: 255 255 255 255; |
||||
vis; |
||||
} |
||||
desc { "animation"; |
||||
inherit: "default"; |
||||
color: 255 255 255 0; |
||||
hid; |
||||
} |
||||
} |
||||
swallow { "efl.icon"; |
||||
clip_to: "icon_clip1"; |
||||
desc { "default"; |
||||
align: 0.5 0.5; |
||||
rel1.relative: 0.0 0.0; |
||||
rel1.offset: 2 2; |
||||
rel2.to_y: "efl.text"; |
||||
rel2.relative: 1.0 0.0; |
||||
rel2.offset: -3 -1; |
||||
} |
||||
desc { "noicon"; |
||||
inherit: "default" 0.0; |
||||
hid; |
||||
rel1.offset: 2 0; |
||||
rel2.relative: 1.0 0.0; |
||||
rel2.offset: -3 -4; |
||||
} |
||||
desc { "icononly"; |
||||
inherit: "default" 0.0; |
||||
vis; |
||||
rel2.relative: 1.0 1.0; |
||||
rel2.offset: -3 -3; |
||||
rel2.to_y: "icon_clip"; |
||||
} |
||||
} |
||||
rect { "icon_clip2"; |
||||
clip_to: "icon_clip"; |
||||
desc { "default"; |
||||
color: 255 255 255 0; |
||||
hid; |
||||
} |
||||
desc { "animation"; |
||||
inherit: "default" 0.0; |
||||
color: 255 255 255 255; |
||||
vis; |
||||
} |
||||
} |
||||
swallow { "efl.icon_new"; |
||||
clip_to: "icon_clip2"; |
||||
desc { "default"; |
||||
align: 0.5 0.5; |
||||
rel1.relative: 0.0 0.0; |
||||
rel1.offset: 2 2; |
||||
rel2.to_y: "efl.text"; |
||||
rel2.relative: 1.0 0.0; |
||||
rel2.offset: -3 -1; |
||||
} |
||||
desc { "noicon"; |
||||
inherit: "default"; |
||||
hid; |
||||
rel1.offset: 2 0; |
||||
rel2.relative: 1.0 0.0; |
||||
rel2.offset: -3 -4; |
||||
} |
||||
desc { "icononly"; |
||||
inherit: "default" 0.0; |
||||
vis; |
||||
rel2.relative: 1.0 1.0; |
||||
rel2.offset: -3 -3; |
||||
rel2.to_y: "icon_clip"; |
||||
} |
||||
} |
||||
rect { "text_clip1"; |
||||
desc { "default"; |
||||
color: 255 255 255 255; |
||||
vis; |
||||
} |
||||
desc { "animation"; |
||||
inherit: "default"; |
||||
color: 255 255 255 0; |
||||
hid; |
||||
} |
||||
} |
||||
text { "efl.text"; |
||||
nomouse; |
||||
effect: SHADOW BOTTOM; |
||||
scale; |
||||
clip_to: "text_clip1"; |
||||
desc { "default"; |
||||
rel1.offset: 4 -3; |
||||
rel1.relative: 0.0 1.0; |
||||
rel2.offset: -5 -3; |
||||
align: 0.5 1.0; |
||||
color: FN_COL_DEFAULT; |
||||
color_class: "toolbar_item"; |
||||
text { font: FN; size: 10; |
||||
min: 1 1; |
||||
ellipsis: -1; |
||||
align: 0.5 0.5; |
||||
text_class: "toolbar_item"; |
||||
} |
||||
fixed: 0 1; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
hid; |
||||
color_class: "toolbar_item_selected"; |
||||
} |
||||
desc { "disabled"; |
||||
inherit: "default"; |
||||
color: FN_COL_DISABLE; |
||||
color_class: "toolbar_item_disabled"; |
||||
} |
||||
desc { "noicon"; |
||||
inherit: "default"; |
||||
rel1.offset: 4 2; |
||||
rel1.relative: 0.0 0.0; |
||||
} |
||||
desc { "noicon_disabled"; |
||||
inherit: "noicon"; |
||||
color: FN_COL_DISABLE; |
||||
color_class: "toolbar_item_disabled"; |
||||
} |
||||
desc { "icononly"; |
||||
inherit: "default"; |
||||
text.min: 0 0; |
||||
hid; |
||||
fixed: 1 1; |
||||
} |
||||
} |
||||
text { "label2"; |
||||
nomouse; |
||||
effect: GLOW; |
||||
scale; |
||||
clip_to: "text_clip1"; |
||||
desc { "default"; |
||||
rel1.offset: -3 -3; |
||||
rel1.to: "efl.text"; |
||||
rel2.offset: 2 1; |
||||
rel2.to: "efl.text"; |
||||
color: FN_COL_HIGHLIGHT; |
||||
color_class: "toolbar_item_active"; |
||||
text { font: FN; size: 10; |
||||
text_source: "efl.text"; |
||||
align: 0.5 0.5; |
||||
text_class: "toolbar_item"; |
||||
} |
||||
hid; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
desc { "noicon"; |
||||
inherit: "default"; |
||||
} |
||||
desc { "noicon_disabled"; |
||||
inherit: "noicon"; |
||||
} |
||||
desc { "icononly"; |
||||
inherit: "default"; |
||||
text.min: 0 0; |
||||
hid; |
||||
fixed: 1 1; |
||||
} |
||||
} |
||||
rect { "text_clip2"; |
||||
desc { "default"; |
||||
color: 255 255 255 0; |
||||
hid; |
||||
} |
||||
desc { "animation"; |
||||
inherit: "default"; |
||||
color: 255 255 255 255; |
||||
vis; |
||||
} |
||||
} |
||||
image { "bar"; |
||||
nomouse; |
||||
desc { "default"; |
||||
fixed: 0 1; |
||||
rel1.offset: -3 -7; |
||||
rel1.relative: 0.0 1.0; |
||||
rel1.to: "shadow2"; |
||||
rel2.offset: 2 2; |
||||
rel2.to: "shadow2"; |
||||
image.normal: "horizontal_separated_bar_small_glow.png"; |
||||
image.border: 4 4 4 4; |
||||
fill.smooth: 0; |
||||
hid; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
} |
||||
image { "highlight"; |
||||
nomouse; |
||||
desc { "default"; |
||||
fixed: 0 1; |
||||
rel1.offset: -3 -7; |
||||
rel1.relative: 0.0 1.0; |
||||
rel1.to: "shadow2"; |
||||
rel2.offset: 2 2; |
||||
rel2.to: "shadow2"; |
||||
image.normal: "horizontal_separated_bar_small_glow.png"; |
||||
image.border: 4 4 4 4; |
||||
fill.smooth: 0; |
||||
hid; |
||||
} |
||||
desc { "selected"; |
||||
inherit: "default"; |
||||
vis; |
||||
} |
||||
} |
||||
rect { "event"; |
||||
ignore_flags: ON_HOLD; |
||||
desc { "default"; |
||||
color: 0 0 0 0; |
||||
} |
||||
} |
||||
programs { |
||||
program { |
||||
signal: "efl,orient,horizontal"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "base"; |
||||
target: "bend_clip"; |
||||
} |
||||
program { |
||||
signal: "efl,orient,vertical"; source: "efl"; |
||||
action: STATE_SET "vert" 0.0; |
||||
target: "base"; |
||||
target: "bend_clip"; |
||||
} |
||||
program { name: "st0"; |
||||
signal: "load"; source: ""; |
||||
script { |
||||
set_int(btmode, LABEL | ICON); |
||||
} |
||||
} |
||||
program { |
||||
signal: "efl,state,selected"; source: "efl"; |
||||
action: STATE_SET "selected" 0.0; |
||||
target: "efl.text"; |
||||
target: "label2"; |
||||
target: "shadow1"; |
||||
target: "shadow2"; |
||||
target: "bar"; |
||||
target: "bend"; |
||||
} |
||||
program { |
||||
signal: "efl,state,unselected"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "efl.text"; |
||||
target: "label2"; |
||||
target: "shadow1"; |
||||
target: "shadow2"; |
||||
target: "bar"; |
||||
target: "bend"; |
||||
} |
||||
program { |
||||
signal: "mouse,up,1"; source: "event"; |
||||
action: SIGNAL_EMIT "efl,action,click" "efl"; |
||||
} |
||||
program { |
||||
signal: "efl,highlight,on"; source: "efl"; |
||||
action: STATE_SET "selected" 0.0; |
||||
target: "highlight"; |
||||
} |
||||
program { |
||||
signal: "efl,highlight,off"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "highlight"; |
||||
} |
||||
program { |
||||
signal: "mouse,in"; source: "event"; |
||||
action: SIGNAL_EMIT "efl,mouse,in" "efl"; |
||||
} |
||||
program { name: "mouse,out"; |
||||
signal: "mouse,out"; source: "event"; |
||||
action: SIGNAL_EMIT "efl,mouse,out" "efl"; |
||||
} |
||||
program { name: "st1"; |
||||
signal: "efl,text,hidden"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m &= ~LABEL; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { name: "st2"; |
||||
signal: "efl,text,visible"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m |= LABEL; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { name: "st3"; |
||||
signal: "efl,icon,hidden"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m &= ~ICON; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { name: "st4"; |
||||
signal: "efl,icon,visible"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m |= ICON; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { name: "st5"; |
||||
signal: "efl,state,disabled"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m |= DISABLE; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { name: "st6"; |
||||
signal: "efl,state,enabled"; source: "efl"; |
||||
script { |
||||
new m = get_int(btmode); |
||||
m &= ~DISABLE; set_int(btmode, m); |
||||
eval_mode(m); |
||||
} |
||||
} |
||||
program { |
||||
signal: "efl,state,moving"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "shadow1"; |
||||
target: "shadow2"; |
||||
} |
||||
program { |
||||
signal: "efl,state,icon_set,forward"; source: "efl"; |
||||
after: "icon_set,animation"; |
||||
} |
||||
program { |
||||
signal: "efl,state,icon_set,backward"; source: "efl"; |
||||
after: "icon_set,animation"; |
||||
} |
||||
program { name: "icon_set,animation"; |
||||
signal: "efl,state,icon_set"; source: "efl"; |
||||
action: STATE_SET "animation" 0.0; |
||||
target: "icon_clip1"; |
||||
target: "icon_clip2"; |
||||
transition: LINEAR 0.2; |
||||
after: "icon_set,animation,done"; |
||||
} |
||||
program { name: "icon_set,animation,done"; |
||||
action: SIGNAL_EMIT "efl,state,icon_set,done" "efl"; |
||||
} |
||||
program { |
||||
signal: "efl,state,icon,reset"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "icon_clip1"; |
||||
target: "icon_clip2"; |
||||
} |
||||
program { |
||||
signal: "efl,state,label_set,forward"; source: "efl"; |
||||
after: "label_set,animation"; |
||||
} |
||||
program { |
||||
signal: "efl,state,label_set,backward"; source: "efl"; |
||||
after: "label_set,animation"; |
||||
} |
||||
program { name: "label_set,animation"; |
||||
signal: "efl,state,label_set"; source: "efl"; |
||||
action: STATE_SET "animation" 0.0; |
||||
target: "text_clip1"; |
||||
target: "text_clip2"; |
||||
transition: LINEAR 0.2; |
||||
after: "label_set,animation,done"; |
||||
} |
||||
program { name: "label_set,animation,done"; |
||||
action: SIGNAL_EMIT "efl,state,label_set,done" "efl"; |
||||
} |
||||
program { |
||||
signal: "efl,state,label,reset"; source: "efl"; |
||||
action: STATE_SET "default" 0.0; |
||||
target: "text_clip1"; |
||||
target: "text_clip2"; |
||||
} |
||||
} |
||||
#undef ICON |
||||
#undef LABEL |
||||
#undef MASK |
||||
#undef DISABLE |
||||
} |
||||
} |
@ -0,0 +1,15 @@ |
||||
group { "efl/tab_page"; |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
} |
||||
swallow { "efl.content"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,34 @@ |
||||
group { "efl/tab_pager"; |
||||
parts { |
||||
spacer { "base"; |
||||
scale; |
||||
desc { "default"; |
||||
} |
||||
} |
||||
swallow { "efl.tab_root"; |
||||
scale; |
||||
desc { "default"; |
||||
rel.to: "base"; |
||||
align: 0 0; |
||||
min: 0 50; |
||||
max: -1 50; |
||||
fixed: 0 1; |
||||
} |
||||
} |
||||
swallow { "efl.page_root"; |
||||
scale; |
||||
desc { "default"; |
||||
rel1.to: "efl.tab_root"; |
||||
rel2.to: "base"; |
||||
rel1.relative: 0 1; |
||||
} |
||||
} |
||||
swallow { "efl.event"; |
||||
scale; |
||||
repeat_events: 1; |
||||
desc { "default"; |
||||
rel.to: "efl.page_root"; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,591 @@ |
||||
#ifdef HAVE_CONFIG_H |
||||
# include "elementary_config.h" |
||||
#endif |
||||
#include <Elementary.h> |
||||
|
||||
#define TAB_PAGE_NUM 5 |
||||
#define TAB_LABEL_COUNT 15 |
||||
#define TAB_ICON_COUNT 9 |
||||
|
||||
typedef struct _App_Data { |
||||
Evas_Object *navi; |
||||
Eo *tab_pager; |
||||
} App_Data; |
||||
|
||||
typedef struct _Tab_Set_Data { |
||||
Eo *tab_pager; |
||||
Eo *spinner; |
||||
} Tab_Set_Data; |
||||
|
||||
typedef struct _Tab_Change_Data { |
||||
Eo *tab_pager; |
||||
Eo *label_check; |
||||
Eo *icon_check; |
||||
} Tab_Change_Data; |
||||
|
||||
static void _current_cb(void *data, Evas_Object *obj, void *event_info); |
||||
static void _pack_cb(void *data, Evas_Object *obj, void *event_info); |
||||
static void _unpack_cb(void *data, Evas_Object *obj, void *event_info); |
||||
static void _tab_cb(void *data, Evas_Object *obj, void *event_info); |
||||
static void _transition_cb(void *data, Evas_Object *obj, void *event_info); |
||||
static void _win_del_cb(void *data, const Efl_Event *ev); |
||||
|
||||
static char *tab_labels[] = { |
||||
"efl", "elementary", "ecore", "evas", "eina", |
||||
"eo", "eolian", "embryo", "ethumb", "evil", |
||||
"eet", "edje", "ector", "efreet", "eldbus" |
||||
}; |
||||
|
||||
static char *tab_icons[] = { |
||||
"document-print", "folder-new", "object-rotate-right", |
||||
"mail-send", "edit-cut", "edit-copy", |
||||
"edit-paste", "edit-delete", "clock" |
||||
}; |
||||
|
||||
static char *tab_label_get() |
||||
{ |
||||
int index = rand() % (TAB_LABEL_COUNT - 1); |
||||
return tab_labels[index]; |
||||
} |
||||
|
||||
static char *tab_icon_get() |
||||
{ |
||||
int index = rand() % (TAB_ICON_COUNT - 1); |
||||
return tab_icons[index]; |
||||
} |
||||
|
||||
static void |
||||
_tab_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) |
||||
{ |
||||
Efl_Ui_Tab_Page_Tab_Changed_Event *ev = event->info; |
||||
|
||||
switch (ev->changed_info) |
||||
{ |
||||
case EFL_UI_TAB_PAGE_TAB_CHANGED_LABEL: |
||||
printf("[%p] tab label changed\n", event->object); |
||||
break; |
||||
|
||||
case EFL_UI_TAB_PAGE_TAB_CHANGED_ICON: |
||||
printf("[%p] tab icon changed\n", event->object); |
||||
break; |
||||
|
||||
default: |
||||
break; |
||||
} |
||||
} |
||||
|
||||
Eo * |
||||
content_add(Eo *parent, char *text) |
||||
{ |
||||
Eo *page; |
||||
char buf[PATH_MAX]; |
||||
page = efl_add(EFL_UI_LAYOUT_OBJECT_CLASS, parent); |
||||
|
||||
snprintf(buf, sizeof(buf), "%s/objects/test_tab_pager.edj", elm_app_data_dir_get()); |
||||
|
||||
page = efl_add(EFL_UI_LAYOUT_OBJECT_CLASS, parent, |
||||
efl_file_set(efl_added, buf, "page_layout"), |
||||
efl_text_set(efl_part(efl_added, "text"), text), |
||||
efl_gfx_size_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), |
||||
efl_gfx_size_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL)); |
||||
|
||||
return page; |
||||
} |
||||
|
||||
Eo * |
||||
tab_page_add(Eo *parent) |
||||
{ |
||||
Eo *tab_page; |
||||
char *label = tab_label_get(); |
||||
char *icon = tab_icon_get(); |
||||
Eo *content = content_add(parent, label); |
||||
|
||||
tab_page = efl_add(EFL_UI_TAB_PAGE_CLASS, parent); |
||||
efl_content_set(tab_page, content); |
||||
efl_text_set(efl_part(tab_page, "tab"), label); |
||||
efl_ui_tab_page_part_tab_icon_set(efl_part(tab_page, "tab"), icon); |
||||
|
||||
efl_event_callback_add(tab_page, EFL_UI_TAB_PAGE_EVENT_TAB_CHANGED, _tab_changed_cb, NULL); |
||||
|
||||
return tab_page; |
||||
} |
||||
|
||||
void |
||||
test_ui_tab_pager(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
||||
{ |
||||
Eo *win, *layout, *navi, *list, *tp, *tb, *page; |
||||
//Efl_Page_Transition *tran;
|
||||
App_Data *ad = NULL; |
||||
char buf[PATH_MAX]; |
||||
int i; |
||||
|
||||
win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(), |
||||
efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC), |
||||
efl_text_set(efl_added, "Efl.Ui.Tab_Pager"), |
||||
efl_ui_win_autodel_set(efl_added, EINA_TRUE), |
||||
efl_event_callback_add(efl_added, EFL_EVENT_DEL, _win_del_cb, ad)); |
||||
|
||||
snprintf(buf, sizeof(buf), "%s/objects/test_tab_pager.edj", elm_app_data_dir_get()); |
||||
layout = efl_add(EFL_UI_LAYOUT_OBJECT_CLASS, win, |
||||
efl_file_set(efl_added, buf, "tab_page_layout"), |
||||
efl_content_set(win, efl_added)); |
||||
|
||||
navi = elm_naviframe_add(layout); |
||||
efl_gfx_size_hint_weight_set(navi, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
efl_gfx_size_hint_align_set(navi, EVAS_HINT_FILL, EVAS_HINT_FILL); |
||||
efl_content_set(efl_part(layout, "menu"), navi); |
||||
|
||||
list = elm_list_add(navi); |
||||
efl_gfx_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
efl_gfx_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); |
||||
elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS); |
||||
elm_naviframe_item_push(navi, "Properties", NULL, NULL, list, NULL); |
||||
efl_gfx_entity_visible_set(list, EINA_TRUE); |
||||
|
||||
tp = efl_add(EFL_UI_TAB_PAGER_CLASS, layout, |
||||
efl_gfx_size_hint_weight_set(efl_added, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), |
||||
efl_gfx_size_hint_align_set(efl_added, EVAS_HINT_FILL, EVAS_HINT_FILL), |
||||
efl_ui_pager_page_size_set(efl_added, EINA_SIZE2D(-1, -1)), |
||||
efl_ui_pager_padding_set(efl_added, 20), |
||||
efl_content_set(efl_part(layout, "tab_pager"), efl_added)); |
||||
|
||||
tb = efl_add(EFL_UI_TAB_BAR_CLASS, tp); |
||||
efl_ui_tab_pager_tab_bar_set(tp, tb); |
||||
|
||||
/*
|
||||
tran = efl_add(EFL_PAGE_TRANSITION_SCROLL_CLASS, tp) |
||||
efl_ui_pager_transition_set(tp, tran); |
||||
*/ |
||||
|
||||
for (i = 0 ; i < 3 ; i ++) |
||||
{ |
||||
page = tab_page_add(tp); |
||||
efl_pack_end(tp, page); |
||||
} |
||||
|
||||
efl_ui_pager_current_page_set(tp, 0); |
||||
|
||||
ad = calloc(1, sizeof(ad)); |
||||
ad->navi = navi; |
||||
ad->tab_pager = tp; |
||||
|
||||
elm_list_item_append(list, "Current", NULL, NULL, _current_cb, ad); |
||||
elm_list_item_append(list, "Pack", NULL, NULL, _pack_cb, ad); |
||||
elm_list_item_append(list, "Unpack", NULL, NULL, _unpack_cb, ad); |
||||
elm_list_item_append(list, "Tab", NULL, NULL, _tab_cb, ad); |
||||
elm_list_item_append(list, "Transition", NULL, NULL, _transition_cb, ad); |
||||
elm_list_go(list); |
||||
|
||||
efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 300)); |
||||
} |
||||
|
||||
/* Menu Callback */ |
||||
|
||||
static void |
||||
_win_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
free(data); |
||||
} |
||||
|
||||
static void |
||||
_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
elm_naviframe_item_pop(data); |
||||
} |
||||
|
||||
static void |
||||
_tab_set_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Tab_Set_Data *tsd = data; |
||||
efl_ui_pager_current_page_set(tsd->tab_pager, elm_spinner_value_get(tsd->spinner)); |
||||
} |
||||
|
||||
static void |
||||
_tab_set_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
free(data); |
||||
} |
||||
|
||||
static void |
||||
_current_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) |
||||
{ |
||||
App_Data *ad = (App_Data *) data; |
||||
Evas_Object *navi = ad->navi; |
||||
Eo *tab_pager = ad->tab_pager; |
||||
Eo *btn, *box, *sp; |
||||
Tab_Set_Data *tsd = calloc(1, sizeof(Tab_Set_Data)); |
||||
|
||||
Elm_List_Item *it = event_info; |
||||
elm_list_item_selected_set(it, EINA_FALSE); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, navi, |
||||
efl_text_set(efl_added, "Back"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _btn_cb, navi)); |
||||
|
||||
box = efl_add(EFL_UI_BOX_CLASS, navi, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
elm_naviframe_item_push(navi, "Current", btn, NULL, efl_added, NULL)); |
||||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, box, |
||||
efl_ui_range_min_max_set(efl_added, 0, efl_content_count(tab_pager) - 1), |
||||
efl_ui_range_value_set(efl_added, efl_ui_pager_current_page_get(tab_pager)), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
tsd->tab_pager = tab_pager; |
||||
tsd->spinner = sp; |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Current Tab Page Set"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _tab_set_btn_cb, tsd), |
||||
efl_event_callback_add(efl_added, EFL_EVENT_DEL, _tab_set_btn_del_cb, tsd), |
||||
efl_pack_end(box, efl_added)); |
||||
} |
||||
|
||||
static void |
||||
_pack_begin_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
Eo *tab_page; |
||||
|
||||
tab_page = tab_page_add(tab_pager); |
||||
|
||||
efl_pack_begin(tab_pager, tab_page); |
||||
} |
||||
|
||||
static void |
||||
_pack_end_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
Eo *tab_page; |
||||
|
||||
tab_page = tab_page_add(tab_pager); |
||||
|
||||
efl_pack_end(tab_pager, tab_page); |
||||
} |
||||
|
||||
static void |
||||
_pack_before_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
Eo *tab_page, *cur_tab_page; |
||||
int index; |
||||
|
||||
index = efl_ui_pager_current_page_get(tab_pager); |
||||
cur_tab_page = efl_pack_content_get(tab_pager, index); |
||||
|
||||
tab_page = tab_page_add(tab_pager); |
||||
|
||||
efl_pack_before(tab_pager, tab_page, cur_tab_page); |
||||
} |
||||
|
||||
static void |
||||
_pack_after_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
Eo *tab_page, *cur_tab_page; |
||||
int index; |
||||
|
||||
index = efl_ui_pager_current_page_get(tab_pager); |
||||
cur_tab_page = efl_pack_content_get(tab_pager, index); |
||||
|
||||
tab_page = tab_page_add(tab_pager); |
||||
|
||||
efl_pack_after(tab_pager, tab_page, cur_tab_page); |
||||
} |
||||
|
||||
static void |
||||
_pack_at_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Tab_Set_Data *tsd = data; |
||||
Eo *tab_page; |
||||
|
||||
tab_page = tab_page_add(tsd->tab_pager); |
||||
|
||||
efl_pack_at(tsd->tab_pager, tab_page, elm_spinner_value_get(tsd->spinner)); |
||||
efl_ui_range_min_max_set(tsd->spinner, 0, efl_content_count(tsd->tab_pager) - 1); |
||||
} |
||||
|
||||
static void |
||||
_pack_at_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
free(data); |
||||
} |
||||
|
||||
static void |
||||
_pack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) |
||||
{ |
||||
App_Data *ad = (App_Data *) data; |
||||
Evas_Object *navi = ad->navi; |
||||
Eo *tab_pager = ad->tab_pager; |
||||
Eo *btn, *box, *in_box, *sp; |
||||
Tab_Set_Data *tsd = calloc(1, sizeof(Tab_Set_Data)); |
||||
|
||||
Elm_List_Item *it = event_info; |
||||
elm_list_item_selected_set(it, EINA_FALSE); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, navi, |
||||
efl_text_set(efl_added, "Back"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _btn_cb, navi)); |
||||
|
||||
box = efl_add(EFL_UI_BOX_CLASS, navi, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
elm_naviframe_item_push(navi, "Pack", btn, NULL, efl_added, NULL)); |
||||
|
||||
/* Pack Begin */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Pack Begin"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _pack_begin_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
/* Pack End */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Pack End"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _pack_end_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
/* Pack Before */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Pack Before Current Tab Page"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _pack_before_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
/* Pack After */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Pack After Current Tab Page"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _pack_after_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
in_box = efl_add(EFL_UI_BOX_CLASS, box, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box, |
||||
efl_ui_range_min_max_set(efl_added, 0, efl_content_count(tab_pager) - 1), |
||||
efl_ui_range_value_set(efl_added, efl_ui_pager_current_page_get(tab_pager)), |
||||
efl_pack_end(in_box, efl_added)); |
||||
|
||||
tsd->tab_pager = tab_pager; |
||||
tsd->spinner = sp; |
||||
|
||||
/* Pack At */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, in_box, |
||||
efl_text_set(efl_added, "Pack At"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _pack_at_btn_cb, tsd), |
||||
efl_event_callback_add(efl_added, EFL_EVENT_DEL, _pack_at_btn_del_cb, tsd), |
||||
efl_pack_end(in_box, efl_added)); |
||||
} |
||||
|
||||
static void |
||||
_clear_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
efl_pack_clear(tab_pager); |
||||
} |
||||
|
||||
static void |
||||
_unpack_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
int index = efl_ui_pager_current_page_get(tab_pager); |
||||
Eo *tab_page = efl_pack_content_get(tab_pager, index); |
||||
efl_pack_unpack(tab_pager, tab_page); |
||||
} |
||||
|
||||
static void |
||||
_unpack_all_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Eo *tab_pager = data; |
||||
efl_pack_unpack_all(tab_pager); |
||||
} |
||||
|
||||
static void |
||||
_unpack_at_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Tab_Set_Data *tsd = data; |
||||
|
||||
efl_pack_unpack_at(tsd->tab_pager, elm_spinner_value_get(tsd->spinner)); |
||||
efl_ui_range_min_max_set(tsd->spinner, 0, efl_content_count(tsd->tab_pager) - 1); |
||||
} |
||||
|
||||
static void |
||||
_unpack_at_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
free(data); |
||||
} |
||||
|
||||
static void |
||||
_unpack_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) |
||||
{ |
||||
App_Data *ad = (App_Data *) data; |
||||
Evas_Object *navi = ad->navi; |
||||
Eo *tab_pager = ad->tab_pager; |
||||
Eo *btn, *box, *sp, *in_box; |
||||
Tab_Set_Data *tsd = calloc(1, sizeof(Tab_Set_Data)); |
||||
|
||||
Elm_List_Item *it = event_info; |
||||
elm_list_item_selected_set(it, EINA_FALSE); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, navi, |
||||
efl_text_set(efl_added, "Back"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _btn_cb, navi)); |
||||
|
||||
box = efl_add(EFL_UI_BOX_CLASS, navi, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
elm_naviframe_item_push(navi, "Unpack", btn, NULL, efl_added, NULL)); |
||||
|
||||
/* Clear */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Clear"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _clear_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
/* Unpack */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Unpack"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _unpack_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
/* Unpack All */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Unpack All"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _unpack_all_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
in_box = efl_add(EFL_UI_BOX_CLASS, box, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
efl_ui_direction_set(efl_added, EFL_UI_DIR_HORIZONTAL), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
sp = efl_add(EFL_UI_SPIN_BUTTON_CLASS, in_box, |
||||
efl_ui_range_min_max_set(efl_added, 0, efl_content_count(tab_pager) - 1), |
||||
efl_ui_range_value_set(efl_added, efl_ui_pager_current_page_get(tab_pager)), |
||||
efl_pack_end(in_box, efl_added)); |
||||
|
||||
tsd->tab_pager = tab_pager; |
||||
tsd->spinner = sp; |
||||
|
||||
/* Unpack At */ |
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, in_box, |
||||
efl_text_set(efl_added, "Unpack At"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _unpack_at_btn_cb, tsd), |
||||
efl_event_callback_add(efl_added, EFL_EVENT_DEL, _unpack_at_btn_del_cb, tsd), |
||||
efl_pack_end(in_box, efl_added)); |
||||
} |
||||
|
||||
static void |
||||
_change_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Tab_Change_Data *tcd = data; |
||||
|
||||
Eo *tab_page, *content; |
||||
char *label = NULL; |
||||
char *icon = NULL; |
||||
int cur; |
||||
cur = efl_ui_pager_current_page_get(tcd->tab_pager); |
||||
tab_page = efl_pack_content_get(tcd->tab_pager, cur); |
||||
|
||||
if (efl_ui_nstate_value_get(tcd->label_check)) |
||||
{ |
||||
label = tab_label_get(); |
||||
efl_text_set(efl_part(tab_page, "tab"), label); |
||||
content = content_add(tab_page, label); |
||||
efl_content_set(tab_page, content); |
||||
} |
||||
|
||||
if (efl_ui_nstate_value_get(tcd->icon_check)) |
||||
{ |
||||
icon = tab_icon_get(); |
||||
efl_ui_tab_page_part_tab_icon_set(efl_part(tab_page, "tab"), icon); |
||||
} |
||||
} |
||||
|
||||
static void |
||||
_change_btn_del_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
free(data); |
||||
} |
||||
|
||||
static void |
||||
_tab_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) |
||||
{ |
||||
App_Data *ad = (App_Data *) data; |
||||
Evas_Object *navi = ad->navi; |
||||
Eo *tab_pager = ad->tab_pager; |
||||
Eo *btn, *box, *label_check, *icon_check; |
||||
Tab_Change_Data *tcd = calloc(1, sizeof(Tab_Change_Data)); |
||||
|
||||
Elm_List_Item *it = event_info; |
||||
elm_list_item_selected_set(it, EINA_FALSE); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, navi, |
||||
efl_text_set(efl_added, "Back"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _btn_cb, navi)); |
||||
|
||||
box = efl_add(EFL_UI_BOX_CLASS, navi, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
elm_naviframe_item_push(navi, "Tab", btn, NULL, efl_added, NULL)); |
||||
|
||||
label_check = efl_add(EFL_UI_CHECK_CLASS, box, |
||||
efl_text_set(efl_added, "Tab Label + Page"), |
||||
efl_ui_nstate_value_set(efl_added, EINA_FALSE), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
icon_check = efl_add(EFL_UI_CHECK_CLASS, box, |
||||
efl_text_set(efl_added, "Tab Icon"), |
||||
efl_ui_nstate_value_set(efl_added, EINA_FALSE), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
tcd->tab_pager = tab_pager; |
||||
tcd->label_check = label_check; |
||||
tcd->icon_check = icon_check; |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Change"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _change_btn_cb, tcd), |
||||
efl_event_callback_add(efl_added, EFL_EVENT_DEL, _change_btn_del_cb, tcd), |
||||
efl_pack_end(box, efl_added)); |
||||
} |
||||
|
||||
static void |
||||
_tran_set_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
Efl_Page_Transition *tran = efl_add(EFL_PAGE_TRANSITION_SCROLL_CLASS, data); |
||||
efl_ui_pager_transition_set(data, tran); |
||||
} |
||||
|
||||
static void |
||||
_tran_unset_btn_cb(void *data, const Efl_Event *ev EINA_UNUSED) |
||||
{ |
||||
efl_ui_pager_transition_set(data, NULL); |
||||
} |
||||
|
||||
static void |
||||
_transition_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) |
||||
{ |
||||
App_Data *ad = (App_Data *) data; |
||||
Evas_Object *navi = ad->navi; |
||||
Eo *tab_pager = ad->tab_pager; |
||||
Eo *btn, *box; |
||||
|
||||
Elm_List_Item *it = event_info; |
||||
elm_list_item_selected_set(it, EINA_FALSE); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, navi, |
||||
efl_text_set(efl_added, "Back"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _btn_cb, navi)); |
||||
|
||||
box = efl_add(EFL_UI_BOX_CLASS, navi, |
||||
efl_pack_padding_set(efl_added, 10, 10, EINA_TRUE), |
||||
elm_naviframe_item_push(navi, "Transition", btn, NULL, efl_added, NULL)); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Set"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _tran_set_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
|
||||
btn = efl_add(EFL_UI_BUTTON_CLASS, box, |
||||
efl_text_set(efl_added, "Unset"), |
||||
efl_event_callback_add(efl_added, EFL_UI_EVENT_CLICKED, _tran_unset_btn_cb, tab_pager), |
||||
efl_pack_end(box, efl_added)); |
||||
} |
@ -0,0 +1,392 @@ |
||||
#ifdef HAVE_CONFIG_H |
||||
# include "elementary_config.h" |
||||
#endif |
||||
|
||||
#define EFL_UI_TAB_BAR_BETA |
||||
|
||||
#include <Elementary.h> |
||||
#include "elm_priv.h" |
||||
#include "efl_ui_tab_bar_private.h" |
||||
#include "els_box.h" |
||||
|
||||
#define MY_CLASS EFL_UI_TAB_BAR_CLASS |
||||
|
||||
static const char PART_NAME_TAB[] = "tab"; |
||||
|
||||
static void _tab_select(Efl_Ui_Tab_Bar_Data *sd, Tab_Info *ti); |
||||
|
||||
EOLIAN static void |
||||
_efl_ui_tab_bar_current_tab_set(Eo *obj EINA_UNUSED, Efl_Ui_Tab_Bar_Data *sd, int index) |
||||
{ |
||||
Tab_Info *ti; |
||||
ti = eina_list_nth(sd->tab_infos, index); |
||||
|
||||
_tab_select(sd, ti); |
||||
} |
||||