group { name: "elm/naviframe/item/basic/default"; images.image: "vgrad_med_dark.png" COMP; images.image: "bevel_out.png" COMP; images.image: "shine.png" COMP; images.image: "shadow_vert.png" COMP; parts { // this set of limits and bottoms is evil - but it's a nasty construct // allowing EITHER the title and subtitle texts OR the prev/next button // swallows to control the lower bounds of the naviframe title, depending // on which is taller #define BOTTOMMAX() \ part { name: "limit0"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "title3"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "elm.swallow.next_btn"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ } \ part { name: "limit1"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "elm.swallow.next_btn"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "title3"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ } \ part { name: "bottom0"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "limit1"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "limit0"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ description { state: "other" 0.0; \ inherit: "default" 0.0; \ rel1.to_y: "limit0"; \ rel2.to_y: "limit1"; \ } \ } \ program { name: "pbot0"; \ signal: "limit,height,zero"; source: "bottom0"; \ script { \ new st[31], Float:vl; \ get_state(PART:"bottom0", st, 30, vl); \ if (st[0] == 'd') set_state(PART:"bottom0", "other", 1.0); \ else set_state(PART:"bottom0", "default", 1.0); \ } \ } \ part { name: "limit2"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "title3"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "elm.swallow.prev_btn"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ } \ part { name: "limit3"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "elm.swallow.prev_btn"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "title3"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ } \ part { name: "bottom1"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "limit3"; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "limit2"; \ rel2.offset: -1 0; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ description { state: "other" 0.0; \ inherit: "default" 0.0; \ rel1.to_y: "limit2"; \ rel2.to_y: "limit3"; \ } \ } \ program { name: "pbot1"; \ signal: "limit,height,zero"; source: "bottom1"; \ script { \ new st[31], Float:vl; \ get_state(PART:"bottom1", st, 30, vl); \ if (st[0] == 'd') set_state(PART:"bottom1", "other", 1.0); \ else set_state(PART:"bottom1", "default", 1.0); \ } \ } \ part { name: "bottom"; type: SPACER; \ description { state: "default" 0.0; \ rel1.to_y: "bottom1"; \ rel1.offset: 0 -1; \ rel1.relative: 0.0 1.0; \ rel2.to_y: "bottom0"; \ align: 0.5 1.0; \ fixed: 0 1; \ limit: HEIGHT; \ } \ description { state: "other" 0.0; \ inherit: "default" 0.0; \ rel1.to_y: "bottom0"; \ rel2.to_y: "bottom1"; \ } \ } \ program { name: "pbot"; \ signal: "limit,height,zero"; source: "bottom"; \ script { \ new st[31], Float:vl; \ get_state(PART:"bottom", st, 30, vl); \ if (st[0] == 'd') set_state(PART:"bottom", "other", 1.0); \ else set_state(PART:"bottom", "default", 1.0); \ } \ } BOTTOMMAX() part { name: "title1"; type: TEXT; scale: 1; description { state: "default" 0.0; rel1.relative: 0.0 0.0; rel1.offset: 0 2; rel2.relative: 1.0 0.0; rel2.offset: -1 2; align: 0.5 0.0; color: FN_COL_DEFAULT_SOFT_SHADOW; text { font: FN; size: 8; text: "X"; text_class: "title_bar_sub"; align: 0.5 0.0; min: 0 1; } fixed: 0 1; visible: 0; } } part { name: "title2"; type: TEXT; scale: 1; effect: SOFT_SHADOW BOTTOM; description { state: "default" 0.0; color_class: "border_title_active"; rel1.to_y: "title1"; rel1.relative: 0.0 1.0; rel1.offset: 0 -1; rel2.to_y: "title1"; rel2.offset: -1 -1; align: 0.5 0.0; color: FN_COL_DEFAULT_SOFT_SHADOW; text { font: FNBD; size: 10; text: "X"; text_class: "title_bar"; align: 0.5 0.0; min: 0 1; } fixed: 0 1; visible: 0; } } part { name: "title3"; type: TEXT; scale: 1; description { state: "default" 0.0; rel1.to_y: "title2"; rel1.relative: 0.0 1.0; rel1.offset: 0 -3; rel2.to_y: "title2"; rel2.offset: -1 -3; align: 0.5 0.0; color: FN_COL_DEFAULT_SOFT_SHADOW; text { font: FN; size: 8; text: "X"; text_class: "title_bar_sub"; align: 0.5 0.0; min: 0 1; } fixed: 0 1; visible: 0; } } part { name: "clip"; type: RECT; description { state: "default" 0.0; } } part { name: "base"; type: SPACER; description { state: "default" 0.0; } description { state: "prev" 0.0; inherit: "default" 0.0; rel1.relative: -1.0 0.0; rel2.relative: 0.0 1.0; } description { state: "next" 0.0; inherit: "default" 0.0; rel1.relative: 1.0 0.0; rel2.relative: 2.0 1.0; } } part { name: "elm.swallow.content"; type: SWALLOW; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "top"; rel1.relative: 0.0 1.0; rel2.to: "base"; } description { state: "title-hidden" 0.0; inherit: "default" 0.0; rel1.to: "base"; rel1.relative: 0.0 0.0; } } part { name: "shadow"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; image.normal: "shadow_vert.png"; rel1.to: "top"; rel1.relative: 0.0 1.0; rel2.to: "top"; rel2.offset: -1 0; fill.smooth: 0; min: 0 20; align: 0.5 0.0; fixed: 1 1; } description { state: "title-hidden" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } } part { name: "tophide0"; type: SPACER; description { state: "default" 0.0; rel1.to: "base"; rel2.to_x: "base"; rel2.to_y: "bottom"; } } part { name: "tophide1"; type: SPACER; description { state: "default" 0.0; rel1.to: "tophide0"; rel1.relative: 0.0 -1.0; rel2.to: "tophide0"; } } part { name: "top"; clip_to: "clip"; description { state: "default" 0.0; color_class: "border_top"; image.normal: "vgrad_med_dark.png"; rel1.to: "base"; rel2.to_x: "base"; rel2.to_y: "bottom"; fill.smooth: 0; TILED_HORIZ(120) } description { state: "title-hidden" 0.0; inherit: "default" 0.0; rel1.to: "tophide1"; rel2.to: "base"; rel2.relative: 1.0 0.0; } } part { name: "access.title"; type: RECT; repeat_events: 1; clip_to: "clip"; description { state: "default" 0.0; fixed: 1 1; color: 0 0 0 0; rel1.to: "top"; rel2.to: "top"; } } part { name: "bevel"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; image.normal: "bevel_out.png"; image.border: 1 1 1 1; image.middle: 0; rel1.to: "top"; rel2.to: "top"; fill.smooth: 0; } } part { name: "elm.text.title"; type: TEXT; mouse_events: 0; scale: 1; effect: SOFT_SHADOW BOTTOM; clip_to: "elements_clip"; description { state: "default" 0.0; color_class: "border_title_active_sub"; rel1.to_x: "base"; rel1.to_y: "top"; rel1.relative: 0.0 0.5; rel2.offset: 0 -1; rel2.to_x: "base"; rel2.to_y: "top"; rel2.relative: 1.0 0.5; align: 0.5 0.5; color: FN_COL_DEFAULT_SOFT_SHADOW; text { font: FNBD; size: 10; text_class: "title_bar"; align: 0.5 0.5; min: 0 1; } fixed: 0 1; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.text.subtitle"; type: TEXT; mouse_events: 0; scale: 1; effect: SHADOW BOTTOM; clip_to: "elements_clip"; description { state: "default" 0.0; rel1.to_x: "base"; rel1.to_y: "elm.text.title"; rel1.relative: 0.0 1.0; rel1.offset: 0 -3; rel2.to_x: "base"; rel2.to_y: "elm.text.title"; rel2.offset: -1 -3; align: 0.5 0.0; color: FN_COL_DEFAULT; text { font: FN; size: 8; text_class: "title_bar_sub"; align: 0.5 0.0; min: 0 1; } fixed: 0 1; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "buttons_clip"; type: RECT; clip_to: "elements_clip"; description { state: "default" 0.0; rel1.to: "base"; rel2.to: "base"; } description { state: "title-hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.swallow.next_btn"; type: SWALLOW; scale: 1; clip_to: "buttons_clip"; description { state: "default" 0.0; rel1.to_x: "base"; // rel1.to_y: "top"; rel1.relative: 1.0 0.0; rel1.offset: -3 2; rel2.to_x: "base"; rel2.to_y: "title3"; rel2.offset: -3 -1; align: 1.0 0.5; min: 26 26; max: 1 1; fixed: 1 1; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.swallow.prev_btn"; type: SWALLOW; scale: 1; clip_to: "buttons_clip"; description { state: "default" 0.0; rel1.to_x: "base"; // rel1.to_y: "top"; rel1.offset: 2 2; rel2.relative: 0.0 1.0; rel2.offset: 2 -1; rel2.to_x: "base"; rel2.to_y: "title3"; align: 0.0 0.5; min: 26 26; max: 1 1; fixed: 1 1; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.swallow.icon"; type: SWALLOW; clip_to: "elements_clip"; description { state: "default" 0.0; fixed: 1 0; rel1.to_x: "elm.swallow.prev_btn"; rel1.to_y: "top"; rel1.relative: 1.0 0.0; rel1.offset: 2 2; rel2.to_x: "elm.swallow.prev_btn"; rel2.to_y: "top"; rel2.offset: 2 -3; aspect: 1.0 1.0; aspect_preference: VERTICAL; align: 0.0 0.5; } description { state: "hidden" 0.0; inherit: "default" 0.0; rel1.to_x: "top"; rel1.relative: 0.0 0.0; rel2.to_x: "top"; rel2.offset: -3 -3; align: 0.5 0.5; } } part { name: "shine"; mouse_events: 0; clip_to: "elements_clip"; description { state: "default" 0.0; image.normal: "shine.png"; rel1.offset: 0 -2; rel1.to: "top"; rel2.relative: 1.0 0.0; rel2.offset: -1 2; rel2.to: "top"; FIXED_SIZE(69, 5) } } part { name: "elements_clip"; type: RECT; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "base"; rel2.to: "base"; } description { state: "hidden" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "next" 0.0; inherit: "hidden" 0.0; } description { state: "prev" 0.0; inherit: "hidden" 0.0; } } } programs { program { signal: "elm,state,title,show"; source: "elm"; action: STATE_SET "default" 0.0; target: "top"; target: "shadow"; target: "elm.swallow.content"; target: "buttons_clip"; } program { signal: "elm,action,title,show"; source: "elm"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "top"; target: "shadow"; target: "elm.swallow.content"; after: "titleshow2"; } program { name: "titleshow2"; action: STATE_SET "default" 0.0; target: "buttons_clip"; after: "title_transition_finished"; } program { signal: "elm,state,title,hide"; source: "elm"; action: STATE_SET "title-hidden" 0.0; target: "buttons_clip"; target: "top"; target: "shadow"; target: "elm.swallow.content"; } program { signal: "elm,action,title,hide"; source: "elm"; action: STATE_SET "title-hidden" 0.0; target: "buttons_clip"; after: "titlehide2"; } program { name: "titlehide2"; action: STATE_SET "title-hidden" 0.0; transition: DECEL 0.5; target: "top"; target: "shadow"; target: "elm.swallow.content"; after: "title_transition_finished"; } program { name: "title_transition_finished"; action: SIGNAL_EMIT "elm,action,title,transition,finished" "elm"; } program { signal: "elm,state,prev_btn,show"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.swallow.prev_btn"; } program { signal: "elm,state,prev_btn,hide"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.swallow.prev_btn"; } program { signal: "elm,state,next_btn,show"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.swallow.next_btn"; } program { signal: "elm,state,next_btn,hide"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.swallow.next_btn"; } program { signal: "mouse,clicked,1"; source: "top"; action: SIGNAL_EMIT "elm,action,title,clicked" "elm"; } program { signal: "elm,state,title_label,show"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.swallow.icon"; target: "elm.text.title"; target: "elm.text.subtitle"; } program { signal: "elm,state,title_label,hide"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.swallow.icon"; target: "elm.text.title"; target: "elm.text.subtitle"; } program { signal: "elm,state,visible"; source: "elm"; action: STATE_SET "default" 0.0; target: "elements_clip"; target: "base"; } program { signal: "elm,state,invisible"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elements_clip"; } /* current page is being pushed: [previous]<----[current] */ program { signal: "elm,state,cur,pushed"; source: "elm"; action: STATE_SET "default" 0.0; target: "base"; target: "elements_clip"; after: "pushed2"; } program { name: "pushed2"; action: STATE_SET "prev" 0.0; transition: DECEL 0.5; target: "base"; target: "elements_clip"; after: "pushed3"; } program { name: "pushed3"; action: SIGNAL_EMIT "elm,action,pushed,finished" "elm"; } /* current page is being popped: [current]---->[next] */ program { signal: "elm,state,cur,popped"; source: "elm"; action: STATE_SET "default" 0.0; target: "base"; target: "elements_clip"; after: "popped2"; } program { name: "popped2"; action: STATE_SET "next" 0.0; transition: DECEL 0.5; target: "base"; target: "elements_clip"; after: "popped3"; } program { name: "popped3"; action: SIGNAL_EMIT "elm,action,popped,finished" "elm"; } /* new page is being pushed: [current]<----[next] */ program { signal: "elm,state,new,pushed"; source: "elm"; action: STATE_SET "next" 0.0; target: "base"; target: "elements_clip"; after: "pushedb2"; } program { name: "pushedb2"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "base"; target: "elements_clip"; after: "pushedb3"; } program { name: "pushedb3"; action: SIGNAL_EMIT "elm,action,show,finished" "elm"; } /* previous page is being pushed: [previous]---->[current] */ program { signal: "elm,state,prev,popped"; source: "elm"; action: STATE_SET "prev" 0.0; target: "base"; target: "elements_clip"; after: "poppedb2"; } program { name: "poppedb2"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "base"; target: "elements_clip"; after: "poppedb3"; } program { name: "poppedb3"; action: SIGNAL_EMIT "elm,action,show,finished" "elm"; } } } group { name: "elm/naviframe/item/overlap/default"; inherit: "elm/naviframe/item/basic/default"; alias: "elm/naviframe/item/overlap/pager"; parts { // this is a hack around an edje_cc inherit bug - group doesnt seem // to inherit properly with limits etc. BOTTOMMAX() part { name: "elm.swallow.content"; description { state: "default" 0.0; rel1.to: "base"; rel1.relative: 0.0 0.0; } } part { name: "top"; description { state: "default" 0.0; color: 255 255 255 224; } description { state: "title-hidden" 0.0; color: 255 255 255 224; } } } } #undef BOTTOMMAX