From 680740b6ae8cc995fa02a2747a6da63aac784c7b Mon Sep 17 00:00:00 2001 From: Prince Kr Dubey Date: Tue, 17 May 2011 11:05:09 +0530 Subject: [PATCH] Merge Conflict resolved.[SegmentControl] SVN code merged. elm_label support deprecated. Theme is also modified so merging now. Change-Id: Ic7103cbca32bc331cbf026fdd30b17932104ce63 --- data/objects/test.edc | 154 ++- data/themes/default.edc | 2101 +++++++++++++++++------------------- data/themes/seg_left_pressed.png | Bin 1039 -> 747 bytes data/themes/seg_left_selected.png | Bin 842 -> 595 bytes data/themes/seg_middle_normal.png | Bin 425 -> 425 bytes data/themes/seg_middle_pressed.png | Bin 846 -> 856 bytes data/themes/seg_right_normal.png | Bin 891 -> 778 bytes data/themes/seg_right_pressed.png | Bin 754 -> 756 bytes data/themes/seg_right_selected.png | Bin 612 -> 592 bytes data/themes/seg_single_normal.png | Bin 1446 -> 1428 bytes data/themes/seg_single_pressed.png | Bin 2073 -> 1404 bytes src/bin/test.c | 2 + src/bin/test_segment_control.c | 141 +-- src/lib/Elementary.h.in | 40 +- src/lib/elm_segment_control.c | 395 ++++--- 15 files changed, 1357 insertions(+), 1476 deletions(-) diff --git a/data/objects/test.edc b/data/objects/test.edc index 3bb0d79..e219a41 100644 --- a/data/objects/test.edc +++ b/data/objects/test.edc @@ -619,6 +619,8 @@ collections { scale: 1; //allow scaling description { state: "default" 0.0; + visible: 0; + min: 480 400; color: 0 0 0 0; } } @@ -627,116 +629,170 @@ collections { scale: 1; //allow scaling description { state: "default" 0.0; + visible: 0; min : 250 30; //minimum size for gap filler fixed: 0 1; - rel1 { relative: 0 0; } - rel2 { relative: 1 0; } + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: 1.0 0.0; + } color: 0 0 0 0; align: 0 0; } } - part { name: "segment"; + part { name: "segment1"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; - min: 360 50; - max: 360 50; - rel1 { relative: 0 1.0; to_y: "top_padding"; } - align: 0.5 0; + rel1 { + relative: 0.0 1.0; + to_x: "bg"; + to_y: "top_padding"; + } + rel2 { + relative: 1.0 0.25; + to: "bg"; + } + align: 0.5 0.0; } } - part { name: "btn1_bottom_padding"; + part { name: "segment1_bottom_padding"; type: RECT; scale: 1; description { state: "default" 0.0; - min : 250 30; - max : 250 30; + visible: 0; + min : 250 10; + max : 250 10; fixed: 1 1; align: 0.5 0; - rel1 { relative: 0 1.0; to_y: "segment"; } - rel2 { relative: 1 1.0; to_y: "segment"; } + rel1 { + relative: 0 1.0; + to_y: "segment1"; + } + rel2 { + relative: 1 1.0; + to_y: "segment1"; + } color: 0 255 0 0; } } - part { name: "add"; + part { name: "segment2"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; - align: 0.5 0; - min: 250 50; - max: 250 50; - rel1 { relative: 0 1.0; to_y: "btn1_bottom_padding"; } - align: 0.5 0; + rel1 { + relative: 0.1 1.0; + to_x: "bg"; + to_y: "segment1_bottom_padding"; + } + rel2 { + relative: 0.9 160/400; + to: "bg"; + } + align: 0.5 0.0; } } - part { name: "btn2_bottom_padding"; + part { name: "segment2_bottom_padding"; type: RECT; scale: 1; description { state: "default" 0.0; - min : 250 50; - max : 250 50; + visible: 0; + min : 250 10; + max : 250 10; fixed: 1 1; align: 0.5 0; - rel1 { relative: 0 1.0; to_y: "add"; } - rel2 { relative: 1 1.0; to_y: "add"; } - color: 0 0 0 0; - } + rel1 { + relative: 0 1.0; + to_y: "segment2"; + } + rel2 { + relative: 1 1.0; + to_y: "segment2"; + } + } } - part { name: "del"; + part { name: "segment3"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; - min: 250 50; - max: 250 50; - align: 0.5 0; - rel1 { relative: 0 1.0; to_y: "btn2_bottom_padding"; } - align: 0.5 0; + rel1 { + relative: 0.2 1.0; + to_x: "bg"; + to_y: "segment2_bottom_padding"; + } + rel2 { + relative: 0.8 0.6; + to: "bg"; + } + align: 0.5 0.0; } } - part { name: "btn3_bottom_padding"; + part { name: "segment3_bottom_padding"; type: RECT; scale: 1; description { state: "default" 0.0; - min : 250 50; - max : 250 50; + visible: 0; + min : 250 10; + max : 250 10; fixed: 1 1; align: 0.5 0; - rel1 { relative: 0 1.0; to_y: "del"; } - rel2 { relative: 1 1.0; to_y: "del"; } - color: 0 0 0 0; + rel1 { + relative: 0 1.0; + to_y: "segment3"; + } + rel2 { + relative: 1 1.0; + to_y: "segment3"; + } } } - part { name: "insert"; + part { name: "segment4"; type: SWALLOW; scale: 1; description { - fixed: 1 1; - min: 250 50; - max: 250 50; state: "default" 0.0; - rel1 { relative: 0 1.0; to_y: "btn3_bottom_padding"; } - align: 0.5 0; + fixed: 1 1; + rel1 { + relative: 0.3 1.0; + to_x: "bg"; + to_y: "segment3_bottom_padding"; + } + rel2 { + relative: 0.7 340/400; + to: "bg"; + } + align: 0.5 0.0; } } - part { name: "btn_bottom_padding"; + part { name: "btn1_bottom_padding"; type: RECT; scale: 1; description { state: "default" 0.0; - min : 0 30; - rel1 { relative: 0 1.0; to_y: "insert"; } - rel2 { relative: 1 1.0;} - color: 0 0 0 0; - align: 0.5 1; + visible: 0; + min : 250 100; + max : 250 100; + fixed: 1 1; + align: 0.5 0; + rel1 { + relative: 0 1.0; + to_y: "segment4"; + } + rel2 { + relative: 1 1.0; + to_y: "segment4"; + } } } } diff --git a/data/themes/default.edc b/data/themes/default.edc index 71833eb..86c0f1f 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -9,727 +9,7 @@ externals.external: "elm"; collections { -/////////////////////////////////////////////////////////////////////////////// - group { name: "elm/segment_control/base/default"; - parts { - part { name: "bg"; - type: RECT; - mouse_events: 0; - scale: 1; - description { - state: "default" 0.0; - color: 0 0 0 0; - min: 100 40; - } - } - } - } - group { name: "elm/segment_control/item/default"; - data.item: "label.wrap.part" "label.bg"; - images { - image: "seg_single_pressed.png" COMP; - image: "seg_single_selected.png" COMP; - image: "seg_single_normal.png" COMP; - - image: "seg_left_pressed.png" COMP; - image: "seg_left_selected.png" COMP; - image: "seg_left_normal.png" COMP; - - image: "seg_middle_pressed.png" COMP; - image: "seg_middle_selected.png" COMP; - image: "seg_middle_normal.png" COMP; - image: "seg_right_pressed.png" COMP; - image: "seg_right_selected.png" COMP; - image: "seg_right_normal.png" COMP; - } - parts { - part { name: "segment"; - mouse_events: 1; - scale: 1; - description { state: "default" 0.0; - min: 1 1; - visible: 0; - image { - normal: "seg_single_normal.png"; - border: 7 7 7 7; - border_scale: 1; - middle: 1; - } - } - description { state: "default_single" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_single_normal.png"; - border: 7 7 7 7; - } - } - description { state: "default_left" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_left_normal.png"; - border: 6 1 7 7; - } - } - description { state: "default_right" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_right_normal.png"; - border: 1 6 7 7; - } - } - description { state: "default_middle" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_middle_normal.png"; - border: 2 2 2 2; - } - } - description { state: "pressed_single" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_single_pressed.png"; - border: 7 7 7 7; - } - } - description { state: "pressed_left" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_left_pressed.png"; - border: 6 1 7 7; - } - } - description { state: "pressed_right" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_right_pressed.png"; - border: 1 6 7 7; - } - } - description { state: "pressed_middle" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_middle_pressed.png"; - border: 1 1 2 2; - } - } - description { state: "selected_single" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_single_selected.png"; - border: 7 7 7 7; - } - } - description { state: "selected_left" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_left_selected.png"; - border: 6 3 7 7; - } - } - description { state: "selected_right" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_right_selected.png"; - border: 3 6 7 7; - } - } - description { state: "selected_middle" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_middle_selected.png"; - border: 3 3 3 3; - } - } - } - part { name: "padding_left"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel1.relative: 0.0 0.0; - rel2.relative: 0.0 1.0; - min: 2 2; - max: 2 2; - fixed: 1 0; - color: 0 0 0 0; - } - } - part { name: "padding_right"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 0.0; - rel1.relative: 1.0 0.0; - rel2.relative: 1.0 1.0; - min: 2 2; - max: 2 2; - fixed: 1 0; - color: 0 0 0 0; - } - } - part { name: "padding_top"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 0.0 0.0; - rel1.relative: 0.0 0.0; - rel2.relative: 1.0 0.0; - min: 2 2; - max: 2 2; - fixed: 0 1; - color: 0 0 0 0; - } - } - part { name: "padding_bottom"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - align: 1.0 1.0; - rel1.relative: 0.0 1.0; - rel2.relative: 1.0 1.0; - min: 2 2; - max: 2 2; - fixed: 0 1; - color: 0 0 0 0; - } - } - part { name: "icon.bg"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; - visible: 1; - fixed: 1 0; - rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } - rel2 {relative: 1.0 1.0; to: "elm.swallow.icon"; } - align: 0.0 0.5; - color: 0 0 0 0; - } - } - part { name: "padding_icon_text"; - type: RECT; - scale: 1; - mouse_events: 0; - description { state: "default" 0.0; //when only icon or no icon is there - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon.bg"; } - rel2 { relative: 1.0 1.0; to: "icon.bg"; } - fixed: 1 0; - min: 0 0; - color: 0 0 0 0; - } - description { state: "icononly" 0.0; - inherit: "default" 0.0; - } - description { state: "visible" 0.0; //when icon is visible - align: 0.0 0.0; - rel1 { relative: 1.0 0.0; to: "icon.bg"; } - rel2 { relative: 1.0 1.0; to: "icon.bg"; } - fixed: 1 0; - min: 2 0; - color: 0 0 0 0; - } - } - part { name: "elm.swallow.icon"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - visible: 0; - align: 0.0 0.5; - rel1 {relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; } - rel2 {relative: 0.0 0.0; to_y: "padding_bottom"; } - fixed: 1 0; - aspect: 1.0 1.0; - aspect_preference: BOTH; - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - rel2 {relative: 0.3 0.0; to_y: "padding_bottom"; } - } - description { state: "icononly" 0.0;; - inherit: "default" 0.0; - visible: 1; - rel2 {relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; } - align: 0.5 0.5; - } - } - part { name: "label.bg"; - repeat_events: 1; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 1.0 1.0; to_x: "padding_icon_text"; to_y: "padding_top"; } - rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; } - } - } - part { name: "elm.swallow.label"; - type: SWALLOW; - mouse_events: 0; - scale: 1; - clip_to: "label.bg"; - description { state: "default" 0.0; - visible: 0; - fixed: 1 1; - min: 1 1; - align: 0.0 0.5; - rel1 { relative: 1.0 1.0; to_x: "padding_icon_text";} - rel2 { relative: 0.0 0.0; to_x: "padding_right";} - } - description { state: "visible" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - part { name: "disabler"; - repeat_events: 0; - scale: 1; - description { state: "default" 0.0; - visible: 0; - fixed: 1 1; - min: 1 1; - align: 0.0 0.5; - rel1 { relative: 0.0 0.0; to: "segment";} - rel2 { relative: 1.0 1.0; to: "segment";} - color: 255 255 255 150; - } - description { state: "disabled_single" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_single_normal.png"; - border: 7 7 7 7; - } - } - description { state: "disabled_left" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_left_normal.png"; - border: 6 1 7 7; - } - } - description { state: "disabled_right" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_right_normal.png"; - border: 1 6 7 7; - } - } - description { state: "disabled_middle" 0.0; - inherit: "default" 0.0; - visible: 1; - image { - normal: "seg_middle_normal.png"; - border: 2 2 2 2; - } - } - } - } - programs { - script { - public seg_type; // 1-Single, 2-Left, 3-Middle, 4-Right. - public seg_state; // 1-Normal/Default, 2-Pressed, 3-Selected. - public seg_status;// 0-Enabled/Default, 1-Disabled - - public update_state() { - new type, state, disabled; - type = get_int(seg_type); - state = get_int(seg_state); - disabled = get_int(seg_status); - - if( state ==1 ) - { - if(type == 1) - set_state(PART:"segment", "default_single", 0.0); - else if(type == 2) - set_state(PART:"segment", "default_left", 0.0); - else if(type == 3) - set_state(PART:"segment", "default_middle", 0.0); - else if(type == 4) - set_state(PART:"segment", "default_right", 0.0); - } - else if( state == 2 ) - { - if(type == 1) - set_state(PART:"segment", "pressed_single", 0.0); - else if(type == 2) - set_state(PART:"segment", "pressed_left", 0.0); - else if(type == 3) - set_state(PART:"segment", "pressed_middle", 0.0); - else if(type == 4) - set_state(PART:"segment", "pressed_right", 0.0); - } - else if( state == 3 ) - { - if(type == 1) - set_state(PART:"segment", "selected_single", 0.0); - else if(type == 2) - set_state(PART:"segment", "selected_left", 0.0); - else if(type == 3) - set_state(PART:"segment", "selected_middle", 0.0); - else if(type == 4) - set_state(PART:"segment", "selected_right", 0.0); - } - if( disabled == 1 ) - { - if(type == 1) - set_state(PART:"disabler", "disabled_single", 0.0); - else if(type == 2) - set_state(PART:"disabler", "disabled_left", 0.0); - else if(type == 3) - set_state(PART:"disabler", "disabled_middle", 0.0); - else if(type == 4) - set_state(PART:"disabler", "disabled_right", 0.0); - } - } - } - program { - name: "segment_type_s"; - signal: "elm,type,segment,single"; - source: "elm"; - script { - set_int(seg_type, 1); - update_state(); - } - } - program { - name: "segment_type_l"; - signal: "elm,type,segment,left"; - source: "elm"; - script { - set_int(seg_type, 2); - update_state(); - } - } - program { - name: "segment_type_m"; - signal: "elm,type,segment,middle"; - source: "elm"; - script { - set_int(seg_type, 3); - update_state(); - } - } - program { - name: "segment_type_r"; - signal: "elm,type,segment,right"; - source: "elm"; - script { - set_int(seg_type, 4); - update_state(); - } - } - program { - name: "normal_segment"; - signal: "elm,state,segment,normal"; - source: "elm"; - script { - set_int(seg_state, 1); - update_state(); - } - } - program { - name: "pressed_segment"; - signal: "elm,state,segment,pressed"; - source: "elm"; - script { - set_int(seg_state, 2); - update_state(); - } - } - program { - name: "selected_segment"; - signal: "elm,state,segment,selected"; - source: "elm"; - script { - set_int(seg_state, 3 ); - update_state(); - } - } - program { name: "disable_segment"; - signal: "elm,state,disabled"; - source: "elm"; - script { - set_int(seg_status, 1); - update_state(); - } - } - program { name: "enable_segment"; - signal: "elm,state,enabled"; - source: "elm"; - script { - set_int(seg_status, 0); - update_state(); - } - } - program { name: "text_show"; - signal: "elm,state,text,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "icononly")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"padding_icon_text", "visible", 0.0); - } - set_state(PART:"elm.swallow.label", "visible", 0.0); - } - } - program { name: "text_hide"; - signal: "elm,state,text,hidden"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.icon", st, 30, vl); - if (!strcmp(st, "visible")) - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"padding_icon_text", "icononly", 0.0); - } - set_state(PART:"elm.swallow.label", "default", 0.0); - } - } - program { name: "icon_show"; - signal: "elm,state,icon,visible"; - source: "elm"; - script { - new st[31]; - new Float:vl; - get_state(PART:"elm.swallow.label", st, 30, vl); - if (!strcmp(st, "normal")) - { - set_state(PART:"elm.swallow.icon", "visible", 0.0); - set_state(PART:"padding_icon_text", "visible", 0.0); - } - else - { - set_state(PART:"elm.swallow.icon", "icononly", 0.0); - set_state(PART:"padding_icon_text", "icononly", 0.0); - } - } - } - program { name: "icon_hide"; - signal: "elm,state,icon,hidden"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "elm.swallow.icon"; - } - } - } - group { name: "elm/label/base/segment_normal"; - data.item: "default_font_size" "24"; - data.item: "min_font_size" "16"; - data.item: "max_font_size" "24"; - styles { - style { name: "seg_text_style_normal"; - base: "font=Sans font_size=16 style=shadow \ - shadow_color=#2924224d \ - align=center \ - color=#ffffffff wrap=char"; - tag: "br" "\n"; - tag: "hilight" "+ font=Sans:style=Bold"; - tag: "tab" "\t"; - } - style { name: "seg_text_style_selected"; - base: "font=Sans:style=Bold font_size=16 style=shadow \ - shadow_color=#aaaaaa4d \ - align=center \ - color=#111111ff wrap=char"; - tag: "br" "\n"; - tag: "hilight" "+ font=Sans:style=Bold"; - tag: "b" "+ font=Sans:style=Bold"; - tag: "tab" "\t"; - } - style { name: "seg_text_style_disabled"; - base: "font=SLP:style=Medium font_size=24 style=shadow \ - shadow_color=#2924224d \ - align=center color=#2924224d \ - wrap=char"; - tag: "br" "\n"; - tag: "hilight" "+ font=SLP:style=Bold"; - tag: "b" "+ font=SLP:style=Bold"; - tag: "tab" "\t"; - } - } - parts { - part { name: "label.swallow.background"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - } - } - part { name: "label.text.clip"; - type: RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0 0; to: "label.swallow.background"; } - rel2 { relative: 1 1; to: "label.swallow.background"; } - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - effect: SHADOW; - mouse_events: 0; - scale: 1; - clip_to: "label.text.clip"; - description { state: "default" 0.0; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - align: 0.0 0.5; - text { - style: "seg_text_style_normal"; - align: 0.0 0.5; - min: 1 0; - } - } - } - } - } - - group { name: "elm/label/base/segment_pressed"; - data.item: "default_font_size" "24"; - data.item: "min_font_size" "16"; - data.item: "max_font_size" "24"; - parts { - part { name: "label.swallow.background"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - } - } - part { name: "label.text.clip"; - type: RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0 0; to: "label.swallow.background"; } - rel2 { relative: 1 1; to: "label.swallow.background"; } - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - effect: SHADOW; - mouse_events: 0; - scale: 1; - clip_to: "label.text.clip"; - description { state: "default" 0.0; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - align: 0.0 0.5; - text { - style: "seg_text_style_selected"; - align: 0.0 0.5; - min: 1 0; - } - } - } - } -} - - group { name: "elm/label/base/segment_selected"; - data.item: "default_font_size" "24"; - data.item: "min_font_size" "16"; - data.item: "max_font_size" "24"; - parts { - part { name: "label.swallow.background"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - } - } - part { name: "label.text.clip"; - type: RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0 0; to: "label.swallow.background"; } - rel2 { relative: 1 1; to: "label.swallow.background"; } - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - effect: SHADOW; - mouse_events: 0; - scale: 1; - clip_to: "label.text.clip"; - description { state: "default" 0.0; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - align: 0.0 0.5; - text { - style: "seg_text_style_selected"; - align: 0.0 0.5; - min: 1 0; - } - } - } - } - } - group { name: "elm/label/base/segment_disabled"; - data.item: "default_font_size" "24"; - data.item: "min_font_size" "16"; - data.item: "max_font_size" "24"; - parts { - part { name: "label.swallow.background"; - type: SWALLOW; - description { state: "default" 0.0; - visible: 1; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - } - } - part { name: "label.text.clip"; - type: RECT; - description { state: "default" 0.0; - visible: 1; - rel1 { relative: 0 0; to: "label.swallow.background"; } - rel2 { relative: 1 1; to: "label.swallow.background"; } - } - } - part { name: "elm.text"; - type: TEXTBLOCK; - effect: SHADOW; - mouse_events: 0; - scale: 1; - clip_to: "label.text.clip"; - description { state: "default" 0.0; - rel1.relative, 0.0 0.0; - rel2.relative, 1.0 1.0; - align: 0.0 0.5; - text { - style: "seg_text_style_disabled"; - align: 0.0 0.5; - min: 1 0; - } - } - } - } - } /////////////////////////////////////////////////////////////////////////////// group { name: "elm/focus_highlight/top/default"; images { @@ -36477,121 +35757,439 @@ collections { offset: 0 -1; } rel2 { - to_y: "elm.swallow.filename"; + to_y: "elm.swallow.filename"; + relative: 1.0 0.0; + offset: -1 -1; + } + } + } + part { name: "elm.swallow.filename"; + type: SWALLOW; + description { state: "default" 0.0; + align: 0.5 1.0; + fixed: 1 1; + rel1 { + to_y: "elm.swallow.ok"; + relative: 0.0 0.0; + offset: 0 -1; + } + rel2 { + to_y: "elm.swallow.ok"; + relative: 1.0 0.0; + offset: -1 -1; + } + } + } + part { name: "elm.swallow.cancel"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 1.0; + fixed: 1 1; + rel1 { + to: "elm.swallow.ok"; + relative: 0.0 0.0; + offset: -3 0; + } + rel2 { + to: "elm.swallow.ok"; + relative: 0.0 1.0; + offset: -3 -1; + } + } + } + part { name: "elm.swallow.ok"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 1.0; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + } + } + + group { name: "elm/fileselector_entry/base/default"; + parts { + part { name: "elm.swallow.entry"; + type: SWALLOW; + description { state: "default" 0.0; + align: 0.0 0.0; + min: 50 10; + rel2 { to_x: "elm.swallow.button"; + relative: 0.0 1.0; + offset: -1 -1; + } + } + } + part { name: "elm.swallow.button"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 0.0; + min: 10 10; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + offset: -21 0; + } + } + } + } + } + +//////////////////////////////////////////////////////////////////////// +// Standard layouts to be used // +//////////////////////////////////////////////////////////////////////// + /* application with toolbar and main content area */ + group { name: "elm/layout/application/toolbar-content"; + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { to_y: "elm.external.toolbar"; + relative: 0.0 1.0; + offset: -1 1; + } + } + } + + part { name: "elm.external.toolbar"; + type: EXTERNAL; + source: "elm/toolbar"; + description { state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 1; + rel2 { + relative: 1.0 0.0; + offset: -1 47; + } + } + } + } + } + + /* application with toolbar and main content area with a back button and title area */ + group { name: "elm/layout/application/toolbar-content-back"; + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { to_y: "title_clipper"; + relative: 0.0 1.0; + offset: -1 1; + } + } + } + + part { name: "elm.external.toolbar"; + type: EXTERNAL; + source: "elm/toolbar"; + description { state: "default" 0.0; + fixed: 0 1; + align: 0.5 0.0; + rel2 { + relative: 1.0 0.0; + offset: -1 47; + } + } + } + part { name: "title_clipper"; + type: RECT; + description { state: "default" 0.0; + visible: 1; + rel1 { + to_y: "back"; + } + rel2 { + to_y: "back"; + } + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + rel2 { + relative: 1.0 0.0; + } + } + } + part { name: "back_clipper"; + type: RECT; + clip_to: "title_clipper"; + description { state: "default" 0.0; + visible: 1; + } + description { state: "hidden" 0.0; + visible: 0; + } + } + part { name: "back"; + type: EXTERNAL; + source: "elm/button"; + clip_to: "back_clipper"; + description { state: "default" 0.0; + align: 0.0 0.0; + fixed: 1 1; + rel1 { to_y: "elm.external.toolbar"; + relative: 0.0 1.0; + offset: 0 1; + } + rel2 { to_y: "elm.external.toolbar"; + relative: 0.0 1.0; + offset: 50 32; + } + params.string: "label" "Back"; + } + } + programs { + program { + signal: "clicked"; + source: "back"; + action: SIGNAL_EMIT "elm,action,back" ""; + } + program { + signal: "elm,back,hide"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "back_clipper"; + } + program { + signal: "elm,back,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "back_clipper"; + } + program { + signal: "elm,title,hide"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 0.1; + target: "title_clipper"; + } + program { + signal: "elm,title,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "title_clipper"; + } + } + + part { name: "elm.swallow.end"; + type: SWALLOW; + description { state: "default" 0.0; + align: 1.0 0.0; + fixed: 1 1; + rel1 { to_y: "elm.external.toolbar"; + relative: 1.0 1.0; + offset: -2 1; + } + rel2 { to_y: "elm.external.toolbar"; + relative: 1.0 1.0; + offset: -1 32; + } + } + } + + part { name: "elm.text.title"; + type: TEXT; + effect: SOFT_SHADOW; + scale: 1; + description { state: "default" 0.0; + rel1 { to_y: "elm.external.toolbar"; + to_x: "back"; + relative: 1.0 1.0; + offset: 2 1; + } + rel2 { to_y: "back"; + to_x: "elm.swallow.end"; + relative: 0.0 1.0; + offset: -3 -1; + } + text { + font: "Sans:style=Bold"; + size: 12; + } + } + } + } + } + + /* application with toolbar and main content area with a back and next buttons and title area */ + group { name: "elm/layout/application/toolbar-content-back-next"; + parts { + part { name: "elm.swallow.content"; + type: SWALLOW; + description { state: "default" 0.0; + rel1 { to_y: "title_clipper"; + relative: 0.0 1.0; + offset: -1 1; + } + } + } + + part { name: "elm.external.toolbar"; + type: EXTERNAL; + source: "elm/toolbar"; + description { state: "default" 0.0; + fixed: 0 1; + align: 0.5 0.0; + rel2 { relative: 1.0 0.0; - offset: -1 -1; + offset: -1 47; } } } - part { name: "elm.swallow.filename"; - type: SWALLOW; + part { name: "title_clipper"; + type: RECT; description { state: "default" 0.0; - align: 0.5 1.0; - fixed: 1 1; + visible: 1; rel1 { - to_y: "elm.swallow.ok"; - relative: 0.0 0.0; - offset: 0 -1; + to_y: "back"; } rel2 { - to_y: "elm.swallow.ok"; + to_y: "back"; + } + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + rel2 { relative: 1.0 0.0; - offset: -1 -1; } } } - part { name: "elm.swallow.cancel"; - type: SWALLOW; + part { name: "back"; + type: EXTERNAL; + source: "elm/button"; + clip_to: "back_clipper"; description { state: "default" 0.0; - align: 1.0 1.0; + align: 0.0 0.0; fixed: 1 1; - rel1 { - to: "elm.swallow.ok"; - relative: 0.0 0.0; - offset: -3 0; + rel1 { to_y: "elm.external.toolbar"; + relative: 0.0 1.0; + offset: 0 1; } - rel2 { - to: "elm.swallow.ok"; + rel2 { to_y: "elm.external.toolbar"; relative: 0.0 1.0; - offset: -3 -1; + offset: 50 32; } + params.string: "label" "Back"; } } - part { name: "elm.swallow.ok"; - type: SWALLOW; + part { name: "back_clipper"; + type: RECT; + clip_to: "title_clipper"; description { state: "default" 0.0; - align: 1.0 1.0; - fixed: 1 1; - rel1 { - relative: 1.0 1.0; - offset: -1 -1; - } + visible: 1; } - } - } - } - - group { name: "elm/fileselector_entry/base/default"; - parts { - part { name: "elm.swallow.entry"; - type: SWALLOW; - description { state: "default" 0.0; - align: 0.0 0.0; - min: 50 10; - rel2 { to_x: "elm.swallow.button"; - relative: 0.0 1.0; - offset: -1 -1; - } + description { state: "hidden" 0.0; + visible: 0; } } - part { name: "elm.swallow.button"; - type: SWALLOW; + part { name: "next"; + type: EXTERNAL; + source: "elm/button"; + clip_to: "next_clipper"; description { state: "default" 0.0; align: 1.0 0.0; - min: 10 10; fixed: 1 1; - rel1 { - relative: 1.0 0.0; - offset: -21 0; + rel1 { to_y: "elm.external.toolbar"; + relative: 1.0 1.0; + offset: -2 1; + } + rel2 { to_y: "elm.external.toolbar"; + relative: 1.0 1.0; + offset: -1 32; } + params.string: "label" "Next"; + } + } + part { name: "next_clipper"; + type: RECT; + clip_to: "title_clipper"; + description { state: "default" 0.0; + visible: 1; + } + description { state: "hidden" 0.0; + visible: 0; } } - } - } - -//////////////////////////////////////////////////////////////////////// -// Standard layouts to be used // -//////////////////////////////////////////////////////////////////////// - /* application with toolbar and main content area */ - group { name: "elm/layout/application/toolbar-content"; - parts { - part { name: "elm.swallow.content"; - type: SWALLOW; + programs { + program { + signal: "clicked"; + source: "back"; + action: SIGNAL_EMIT "elm,action,back" ""; + } + program { + signal: "elm,title,hide"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 0.1; + target: "title_clipper"; + } + program { + signal: "elm,title,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "title_clipper"; + } + program { + signal: "elm,back,hide"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "back_clipper"; + } + program { + signal: "elm,back,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "back_clipper"; + } + program { + signal: "clicked"; + source: "next"; + action: SIGNAL_EMIT "elm,action,next" ""; + } + program { + signal: "elm,next,hide"; + source: "elm"; + action: STATE_SET "hidden" 0.0; + target: "next_clipper"; + } + program { + signal: "elm,next,show"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "next_clipper"; + } + } + part { name: "elm.text.title"; + type: TEXT; + effect: SOFT_SHADOW; + scale: 1; + clip_to: "title_clipper"; description { state: "default" 0.0; rel1 { to_y: "elm.external.toolbar"; + to_x: "back"; + relative: 1.0 1.0; + offset: 2 1; + } + rel2 { to_y: "back"; + to_x: "next"; relative: 0.0 1.0; - offset: -1 1; + offset: -3 -1; } - } - } - - part { name: "elm.external.toolbar"; - type: EXTERNAL; - source: "elm/toolbar"; - description { state: "default" 0.0; - align: 0.5 0.0; - fixed: 0 1; - rel2 { - relative: 1.0 0.0; - offset: -1 47; + text { + font: "Sans:style=Bold"; + size: 12; } } } } } - - /* application with toolbar and main content area with a back button and title area */ - group { name: "elm/layout/application/toolbar-content-back"; + /* application with a main content area with a back button and title area */ + group { name: "elm/layout/application/content-back"; parts { part { name: "elm.swallow.content"; type: SWALLOW; @@ -36602,19 +36200,6 @@ collections { } } } - - part { name: "elm.external.toolbar"; - type: EXTERNAL; - source: "elm/toolbar"; - description { state: "default" 0.0; - fixed: 0 1; - align: 0.5 0.0; - rel2 { - relative: 1.0 0.0; - offset: -1 47; - } - } - } part { name: "title_clipper"; type: RECT; description { state: "default" 0.0; @@ -36651,12 +36236,12 @@ collections { description { state: "default" 0.0; align: 0.0 0.0; fixed: 1 1; - rel1 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; + rel1 { + relative: 0.0 0.0; offset: 0 1; } - rel2 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; + rel2 { + relative: 0.0 0.0; offset: 50 32; } params.string: "label" "Back"; @@ -36700,11 +36285,11 @@ collections { description { state: "default" 0.0; align: 1.0 0.0; fixed: 1 1; - rel1 { to_y: "elm.external.toolbar"; - relative: 1.0 1.0; + rel1 { + relative: 1.0 0.0; offset: -2 1; } - rel2 { to_y: "elm.external.toolbar"; + rel2 { relative: 1.0 1.0; offset: -1 32; } @@ -36716,9 +36301,9 @@ collections { effect: SOFT_SHADOW; scale: 1; description { state: "default" 0.0; - rel1 { to_y: "elm.external.toolbar"; + rel1 { to_x: "back"; - relative: 1.0 1.0; + relative: 1.0 0.0; offset: 2 1; } rel2 { to_y: "back"; @@ -36735,8 +36320,8 @@ collections { } } - /* application with toolbar and main content area with a back and next buttons and title area */ - group { name: "elm/layout/application/toolbar-content-back-next"; + /* application with a main content area with a back and next buttons and title area */ + group { name: "elm/layout/application/content-back-next"; parts { part { name: "elm.swallow.content"; type: SWALLOW; @@ -36748,18 +36333,6 @@ collections { } } - part { name: "elm.external.toolbar"; - type: EXTERNAL; - source: "elm/toolbar"; - description { state: "default" 0.0; - fixed: 0 1; - align: 0.5 0.0; - rel2 { - relative: 1.0 0.0; - offset: -1 47; - } - } - } part { name: "title_clipper"; type: RECT; description { state: "default" 0.0; @@ -36786,12 +36359,12 @@ collections { description { state: "default" 0.0; align: 0.0 0.0; fixed: 1 1; - rel1 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; + rel1 { + relative: 0.0 0.0; offset: 0 1; } - rel2 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; + rel2 { + relative: 0.0 0.0; offset: 50 32; } params.string: "label" "Back"; @@ -36814,12 +36387,12 @@ collections { description { state: "default" 0.0; align: 1.0 0.0; fixed: 1 1; - rel1 { to_y: "elm.external.toolbar"; - relative: 1.0 1.0; + rel1 { + relative: 1.0 0.0; offset: -2 1; } - rel2 { to_y: "elm.external.toolbar"; - relative: 1.0 1.0; + rel2 { + relative: 1.0 0.0; offset: -1 32; } params.string: "label" "Next"; @@ -36890,9 +36463,9 @@ collections { scale: 1; clip_to: "title_clipper"; description { state: "default" 0.0; - rel1 { to_y: "elm.external.toolbar"; + rel1 { to_x: "back"; - relative: 1.0 1.0; + relative: 1.0 0.0; offset: 2 1; } rel2 { to_y: "back"; @@ -36908,355 +36481,661 @@ collections { } } } - /* application with a main content area with a back button and title area */ - group { name: "elm/layout/application/content-back"; + + /* application with toolbar and main content area as a vertical box */ + group { name: "elm/layout/application/toolbar-vbox"; parts { - part { name: "elm.swallow.content"; - type: SWALLOW; + part { name: "elm.box.content"; + type: BOX; description { state: "default" 0.0; - rel1 { to_y: "title_clipper"; + rel1 { to_y: "elm.external.toolbar"; + relative: 0.0 1.0; + offset: -1 1; + } + box.layout: "vertical"; + } + } + + part { name: "elm.external.toolbar"; + type: EXTERNAL; + source: "elm/toolbar"; + description { state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 1; + rel2 { + relative: 1.0 0.0; + offset: -1 47; + } + } + } + } + } + + /* application with toolbar and main content area as a table */ + group { name: "elm/layout/application/toolbar-table"; + parts { + part { name: "elm.table.content"; + type: TABLE; + description { state: "default" 0.0; + rel1 { to_y: "elm.external.toolbar"; relative: 0.0 1.0; offset: -1 1; } } } - part { name: "title_clipper"; + + part { name: "elm.external.toolbar"; + type: EXTERNAL; + source: "elm/toolbar"; + description { state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 1; + rel2 { + relative: 1.0 0.0; + offset: -1 47; + } + } + } + } + } + +/////////////////////////////////////////////////////////////////////////////// + group { name: "elm/segment_control/base/default"; +#define SEGMENT_TYPE_SINGLE 1 +#define SEGMENT_TYPE_LEFT 2 +#define SEGMENT_TYPE_MIDDLE 3 +#define SEGMENT_TYPE_RIGHT 4 +#define SEGMENT_STATE_NORMAL 1 +#define SEGMENT_STATE_PRESSED 2 +#define SEGMENT_STATE_SELECTED 3 +#define SEGMENT_STATUS_ENABLED 0 +#define SEGMENT_STATUS_DISABLED 1 + parts { + part { name: "bg"; + type: RECT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + min: 100 40; + } + } + } + } + group { name: "elm/segment_control/item/default"; + images { + image: "seg_single_pressed.png" COMP; + image: "seg_single_selected.png" COMP; + image: "seg_single_normal.png" COMP; + + image: "seg_left_pressed.png" COMP; + image: "seg_left_selected.png" COMP; + image: "seg_left_normal.png" COMP; + + image: "seg_middle_pressed.png" COMP; + image: "seg_middle_selected.png" COMP; + image: "seg_middle_normal.png" COMP; + + image: "seg_right_pressed.png" COMP; + image: "seg_right_selected.png" COMP; + image: "seg_right_normal.png" COMP; + } + parts { + part { name: "segment"; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + min: 1 1; + visible: 0; + image { + normal: "seg_single_normal.png"; + border: 7 7 7 7; + border_scale: 1; + middle: 1; + } + } + description { state: "default_single" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_single_normal.png"; + border: 7 7 7 7; + } + } + description { state: "default_left" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_left_normal.png"; + border: 6 1 7 7; + } + } + description { state: "default_right" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_right_normal.png"; + border: 1 6 7 7; + } + } + description { state: "default_middle" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_middle_normal.png"; + border: 2 2 2 2; + } + } + description { state: "pressed_single" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_single_pressed.png"; + border: 7 7 7 7; + } + } + description { state: "pressed_left" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_left_pressed.png"; + border: 6 1 7 7; + } + } + description { state: "pressed_right" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_right_pressed.png"; + border: 1 6 7 7; + } + } + description { state: "pressed_middle" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_middle_pressed.png"; + border: 1 1 2 2; + } + } + description { state: "selected_single" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_single_selected.png"; + border: 7 7 7 7; + } + } + description { state: "selected_left" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_left_selected.png"; + border: 6 3 7 7; + } + } + description { state: "selected_right" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_right_selected.png"; + border: 3 6 7 7; + } + } + description { state: "selected_middle" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_middle_selected.png"; + border: 3 3 3 3; + } + } + } + part { name: "padding_left"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + min: 2 2; + max: 2 2; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { name: "padding_right"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 0.0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + min: 2 2; + max: 2 2; + fixed: 1 0; + color: 0 0 0 0; + } + } + part { name: "padding_top"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 0.0 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.0; + min: 2 2; + max: 2 2; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { name: "padding_bottom"; + type: RECT; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; + align: 1.0 1.0; + rel1.relative: 0.0 1.0; + rel2.relative: 1.0 1.0; + min: 2 2; + max: 2 2; + fixed: 0 1; + color: 0 0 0 0; + } + } + part { name: "icon.bg"; type: RECT; + scale: 1; + mouse_events: 0; description { state: "default" 0.0; visible: 1; + fixed: 1 0; rel1 { - to_y: "back"; - } - rel2 { - to_y: "back"; + to_x: "padding_left"; + to_y: "padding_top"; + relative: 1.0 1.0; } - } - description { state: "hidden" 0.0; - inherit: "default" 0.0; - visible: 0; rel2 { - relative: 1.0 0.0; + to: "elm.swallow.icon"; + relative: 1.0 1.0; } + align: 0.0 0.5; + color: 0 0 0 0; } } - part { name: "back_clipper"; + part { name: "padding_icon_text"; type: RECT; - clip_to: "title_clipper"; - description { state: "default" 0.0; - visible: 1; - } - description { state: "hidden" 0.0; - visible: 0; - } - } - part { name: "back"; - type: EXTERNAL; - source: "elm/button"; - clip_to: "back_clipper"; - description { state: "default" 0.0; + scale: 1; + mouse_events: 0; + description { state: "default" 0.0; //when only icon or no icon is there align: 0.0 0.0; - fixed: 1 1; rel1 { - relative: 0.0 0.0; - offset: 0 1; + to: "icon.bg"; + relative: 1.0 0.0; } rel2 { - relative: 0.0 0.0; - offset: 50 32; + to: "icon.bg"; + relative: 1.0 1.0; } - params.string: "label" "Back"; - } - } - programs { - program { - signal: "clicked"; - source: "back"; - action: SIGNAL_EMIT "elm,action,back" ""; - } - program { - signal: "elm,back,hide"; - source: "elm"; - action: STATE_SET "hidden" 0.0; - target: "back_clipper"; - } - program { - signal: "elm,back,show"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "back_clipper"; + fixed: 1 0; + min: 0 0; + color: 0 0 0 0; } - program { - signal: "elm,title,hide"; - source: "elm"; - action: STATE_SET "hidden" 0.0; - transition: LINEAR 0.1; - target: "title_clipper"; + description { state: "icononly" 0.0; + inherit: "default" 0.0; } - program { - signal: "elm,title,show"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "title_clipper"; + description { state: "visible" 0.0; //when icon is visible + inherit: "default" 0.0; + min: 2 0; } } - - part { name: "elm.swallow.end"; + part { name: "elm.swallow.icon"; type: SWALLOW; - description { state: "default" 0.0; - align: 1.0 0.0; - fixed: 1 1; - rel1 { - relative: 1.0 0.0; - offset: -2 1; - } - rel2 { - relative: 1.0 1.0; - offset: -1 32; - } - } - } - - part { name: "elm.text.title"; - type: TEXT; - effect: SOFT_SHADOW; scale: 1; description { state: "default" 0.0; + visible: 0; + align: 0.0 0.5; rel1 { - to_x: "back"; - relative: 1.0 0.0; - offset: 2 1; - } - rel2 { to_y: "back"; - to_x: "elm.swallow.end"; - relative: 0.0 1.0; - offset: -3 -1; - } - text { - font: "Sans:style=Bold"; - size: 12; + to_x: "padding_left"; + to_y: "padding_top"; + relative: 1.0 1.0; } - } - } - } - } - - /* application with a main content area with a back and next buttons and title area */ - group { name: "elm/layout/application/content-back-next"; - parts { - part { name: "elm.swallow.content"; - type: SWALLOW; - description { state: "default" 0.0; - rel1 { to_y: "title_clipper"; - relative: 0.0 1.0; - offset: -1 1; + rel2 { + to_y: "padding_bottom"; + relative: 0.0 0.0; } + fixed: 1 0; + aspect: 1.0 1.0; + aspect_preference: BOTH; } - } - - part { name: "title_clipper"; - type: RECT; - description { state: "default" 0.0; + description { state: "visible" 0.0; + inherit: "default" 0.0; visible: 1; - rel1 { - to_y: "back"; - } rel2 { - to_y: "back"; + to_y: "padding_bottom"; + relative: 0.3 0.0; } } - description { state: "hidden" 0.0; + description { state: "icononly" 0.0; inherit: "default" 0.0; - visible: 0; + visible: 1; rel2 { - relative: 1.0 0.0; + to_x: "padding_right"; + to_y: "padding_bottom"; + relative: 0.0 0.0; } + align: 0.5 0.5; } } - part { name: "back"; - type: EXTERNAL; - source: "elm/button"; - clip_to: "back_clipper"; - description { state: "default" 0.0; - align: 0.0 0.0; + part { name: "elm.text"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + visible: 0; fixed: 1 1; + min: 1 1; rel1 { - relative: 0.0 0.0; - offset: 0 1; + to_x: "padding_icon_text"; + relative: 1.0 1.0; } rel2 { + to_x: "padding_right"; relative: 0.0 0.0; - offset: 50 32; } - params.string: "label" "Back"; + color: 224 224 224 255; + color3: 0 0 0 64; + text { + font: "Sans"; + ellipsis: 0.0; + fit: 1 1; + size: 24; + size_range: 8 36; + min: 0 1; + } } - } - part { name: "back_clipper"; - type: RECT; - clip_to: "title_clipper"; - description { state: "default" 0.0; + description { state: "normal" 0.0; + inherit: "default" 0.0; visible: 1; } - description { state: "hidden" 0.0; - visible: 0; + description { state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 0 0 0 255; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 50 50 50 255; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 200 200 200 255; } } - part { name: "next"; - type: EXTERNAL; - source: "elm/button"; - clip_to: "next_clipper"; + part { name: "disabler"; + repeat_events: 0; + scale: 1; description { state: "default" 0.0; - align: 1.0 0.0; + visible: 0; fixed: 1 1; - rel1 { - relative: 1.0 0.0; - offset: -2 1; + min: 1 1; + align: 0.0 0.5; + rel1 { relative: 0.0 0.0; to: "segment";} + rel2 { relative: 1.0 1.0; to: "segment";} + color: 255 255 255 150; + } + description { state: "disabled_single" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_single_normal.png"; + border: 7 7 7 7; } - rel2 { - relative: 1.0 0.0; - offset: -1 32; + } + description { state: "disabled_left" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_left_normal.png"; + border: 6 1 7 7; } - params.string: "label" "Next"; - } - } - part { name: "next_clipper"; - type: RECT; - clip_to: "title_clipper"; - description { state: "default" 0.0; + } + description { state: "disabled_right" 0.0; + inherit: "default" 0.0; visible: 1; + image { + normal: "seg_right_normal.png"; + border: 1 6 7 7; + } } - description { state: "hidden" 0.0; - visible: 0; + description { state: "disabled_middle" 0.0; + inherit: "default" 0.0; + visible: 1; + image { + normal: "seg_middle_normal.png"; + border: 2 2 2 2; + } } } - programs { - program { - signal: "clicked"; - source: "back"; - action: SIGNAL_EMIT "elm,action,back" ""; + } + programs { + script { + public seg_type; // Single, Left, Middle, Right. + public seg_state; // Normal/Default, Pressed, Selected. + public seg_status;// Enabled/Default, Disabled + + public update_state() { + new type, state, disabled; + type = get_int(seg_type); + state = get_int(seg_state); + disabled = get_int(seg_status); + + if(state == SEGMENT_STATE_NORMAL) + { + if(type == SEGMENT_TYPE_SINGLE) + set_state(PART:"segment", "default_single", 0.0); + else if(type == SEGMENT_TYPE_LEFT) + set_state(PART:"segment", "default_left", 0.0); + else if(type == SEGMENT_TYPE_MIDDLE) + set_state(PART:"segment", "default_middle", 0.0); + else if(type == SEGMENT_TYPE_RIGHT) + set_state(PART:"segment", "default_right", 0.0); + set_state(PART:"elm.text", "normal", 0.0); + } + else if(state == SEGMENT_STATE_PRESSED) + { + if(type == SEGMENT_TYPE_SINGLE) + set_state(PART:"segment", "pressed_single", 0.0); + else if(type == SEGMENT_TYPE_LEFT) + set_state(PART:"segment", "pressed_left", 0.0); + else if(type == SEGMENT_TYPE_MIDDLE) + set_state(PART:"segment", "pressed_middle", 0.0); + else if(type == SEGMENT_TYPE_RIGHT) + set_state(PART:"segment", "pressed_right", 0.0); + set_state(PART:"elm.text", "pressed", 0.0); + } + else if(state == SEGMENT_STATE_SELECTED) + { + if(type == SEGMENT_TYPE_SINGLE) + set_state(PART:"segment", "selected_single", 0.0); + else if(type == SEGMENT_TYPE_LEFT) + set_state(PART:"segment", "selected_left", 0.0); + else if(type == SEGMENT_TYPE_MIDDLE) + set_state(PART:"segment", "selected_middle", 0.0); + else if(type == SEGMENT_TYPE_RIGHT) + set_state(PART:"segment", "selected_right", 0.0); + set_state(PART:"elm.text", "selected", 0.0); + } + if(disabled == SEGMENT_STATUS_DISABLED) + { + if(type == SEGMENT_TYPE_SINGLE) + set_state(PART:"disabler", "disabled_single", 0.0); + else if(type == SEGMENT_TYPE_LEFT) + set_state(PART:"disabler", "disabled_left", 0.0); + else if(type == SEGMENT_TYPE_MIDDLE) + set_state(PART:"disabler", "disabled_middle", 0.0); + else if(type == SEGMENT_TYPE_RIGHT) + set_state(PART:"disabler", "disabled_right", 0.0); + set_state(PART:"elm.text", "disabled", 0.0); + } } - program { - signal: "elm,title,hide"; - source: "elm"; - action: STATE_SET "hidden" 0.0; - transition: LINEAR 0.1; - target: "title_clipper"; + } + program { + name: "segment_type_s"; + signal: "elm,type,segment,single"; + source: "elm"; + script { + set_int(seg_type, SEGMENT_TYPE_SINGLE); + update_state(); } - program { - signal: "elm,title,show"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "title_clipper"; + } + program { + name: "segment_type_l"; + signal: "elm,type,segment,left"; + source: "elm"; + script { + set_int(seg_type, SEGMENT_TYPE_LEFT); + update_state(); } - program { - signal: "elm,back,hide"; - source: "elm"; - action: STATE_SET "hidden" 0.0; - target: "back_clipper"; + } + program { + name: "segment_type_m"; + signal: "elm,type,segment,middle"; + source: "elm"; + script { + set_int(seg_type, SEGMENT_TYPE_MIDDLE); + update_state(); } - program { - signal: "elm,back,show"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "back_clipper"; + } + program { + name: "segment_type_r"; + signal: "elm,type,segment,right"; + source: "elm"; + script { + set_int(seg_type, SEGMENT_TYPE_RIGHT); + update_state(); } - program { - signal: "clicked"; - source: "next"; - action: SIGNAL_EMIT "elm,action,next" ""; + } + program { + name: "normal_segment"; + signal: "elm,state,segment,normal"; + source: "elm"; + script { + set_int(seg_state, SEGMENT_STATE_NORMAL); + update_state(); } - program { - signal: "elm,next,hide"; - source: "elm"; - action: STATE_SET "hidden" 0.0; - target: "next_clipper"; + } + program { + name: "pressed_segment"; + signal: "elm,state,segment,pressed"; + source: "elm"; + script { + set_int(seg_state, SEGMENT_STATE_PRESSED); + update_state(); } - program { - signal: "elm,next,show"; - source: "elm"; - action: STATE_SET "default" 0.0; - target: "next_clipper"; + } + program { + name: "selected_segment"; + signal: "elm,state,segment,selected"; + source: "elm"; + script { + set_int(seg_state, SEGMENT_STATE_SELECTED); + update_state(); } } - part { name: "elm.text.title"; - type: TEXT; - effect: SOFT_SHADOW; - scale: 1; - clip_to: "title_clipper"; - description { state: "default" 0.0; - rel1 { - to_x: "back"; - relative: 1.0 0.0; - offset: 2 1; - } - rel2 { to_y: "back"; - to_x: "next"; - relative: 0.0 1.0; - offset: -3 -1; - } - text { - font: "Sans:style=Bold"; - size: 12; - } + program { name: "disable_segment"; + signal: "elm,state,disabled"; + source: "elm"; + script { + set_int(seg_status, SEGMENT_STATUS_DISABLED); + update_state(); } } - } - } - - /* application with toolbar and main content area as a vertical box */ - group { name: "elm/layout/application/toolbar-vbox"; - parts { - part { name: "elm.box.content"; - type: BOX; - description { state: "default" 0.0; - rel1 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; - offset: -1 1; - } - box.layout: "vertical"; + program { name: "enable_segment"; + signal: "elm,state,enabled"; + source: "elm"; + script { + set_int(seg_status, SEGMENT_STATUS_ENABLED); + update_state(); } } - - part { name: "elm.external.toolbar"; - type: EXTERNAL; - source: "elm/toolbar"; - description { state: "default" 0.0; - align: 0.5 0.0; - fixed: 0 1; - rel2 { - relative: 1.0 0.0; - offset: -1 47; - } + program { name: "text_show"; + signal: "elm,state,text,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "icononly")) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + get_state(PART:"elm.text", st, 30, vl); + if (!strcmp(st, "selected")) + set_state(PART:"elm.text", "selected", 0.0); + else + set_state(PART:"elm.text", "normal", 0.0); } } - } - } - - /* application with toolbar and main content area as a table */ - group { name: "elm/layout/application/toolbar-table"; - parts { - part { name: "elm.table.content"; - type: TABLE; - description { state: "default" 0.0; - rel1 { to_y: "elm.external.toolbar"; - relative: 0.0 1.0; - offset: -1 1; - } + program { name: "text_hide"; + signal: "elm,state,text,hidden"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.swallow.icon", st, 30, vl); + if (!strcmp(st, "visible")) + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } + set_state(PART:"elm.text", "default", 0.0); } } - - part { name: "elm.external.toolbar"; - type: EXTERNAL; - source: "elm/toolbar"; - description { state: "default" 0.0; - align: 0.5 0.0; - fixed: 0 1; - rel2 { - relative: 1.0 0.0; - offset: -1 47; - } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + script { + new st[31]; + new Float:vl; + get_state(PART:"elm.text", st, 30, vl); + if ((!strcmp(st, "normal")) || (!strcmp(st, "selected"))) + { + set_state(PART:"elm.swallow.icon", "visible", 0.0); + set_state(PART:"padding_icon_text", "visible", 0.0); + } + else + { + set_state(PART:"elm.swallow.icon", "icononly", 0.0); + set_state(PART:"padding_icon_text", "icononly", 0.0); + } } } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.icon"; + } } +#undef SEGMENT_TYPE_SINGLE +#undef SEGMENT_TYPE_LEFT +#undef SEGMENT_TYPE_MIDDLE +#undef SEGMENT_TYPE_RIGHT +#undef SEGMENT_STATE_NORMAL +#undef SEGMENT_STATE_PRESSED +#undef SEGMENT_STATE_SELECTED +#undef SEGMENT_STATUS_ENABLED +#undef SEGMENT_STATUS_DISABLED } /* a simple title layout, with a label and two icons */ diff --git a/data/themes/seg_left_pressed.png b/data/themes/seg_left_pressed.png index 120cc399c8ca9ba8c376298a44d199bb37167e83..347c6071430bd9948cef6a004e508a2e7632aea5 100644 GIT binary patch delta 705 zcmV;y0zUnZ236o$XL^d$p|prE(~!Bw~kH{mwiL0m$7 za0~k65_~s8gec6!5ogj}x08pqYr1D9Ni~Nmy8iS3f8CC1+ZIqjS3JUoc^UbeN1iwiOP`+xg#c6P?;=_vr-dz^El{`U43yI3qZIXNN5 zh;xn@BPk_PN{C3dU=I!sD2jrnX$T?Uy(h+qh-5H;?G5)J=NusfVvM;5u>GK)2qEB{ z%LyTb4j4knG9d)owxw;`P2iBRmmUH~(jqdF_TJ;Y&*Kp=rPP7r3Otn7DJ6zYl7Hm= z>-Q5t_dka*-0%$S&HgJPOAl{KN-IE0i6m>lRiqK4BpEN}zaH16Gg#85$IZngB&GH3 z*e9U=#qFtxc^3Xr=mUFn?SO+oW}7`J2xX<8XV{lSYig>~-e6n7(2urO;ZV zwZ<5e#{gC<{RuEwYca-96h$sAF@B!4HXYDfgDncmvZAWG7ub34q^&Uqr4(gZ@};iv z6Gx2Q6E((Qt@~sgc&e(3$z;+^Sc|oGRZ_h7hzMm_5<(!Ql#}{G3Uq~ZI)9yVcz8%% z*PnhZRaK2@k3Kp&;_mJa5uvVYCX-2yot+(acXvDB`T05b_xIe~+%TO^DT;!ss;KKa z_W((uFnx^O^NzlXLZ|M1K2G5^Amn2DK zKA%gNBngwrg!z1qe*e#VX0sU|K72s;dp)8kqTlZmTI;xT=MFb++(12h_Dl{A4p3E9 z$=TT%I?r<^lL^{dOO|D5?>*L9bWs$1nSMblr3iyy{Sbcy;dEK%QEsjr><+lEXyd%lJAS}td=Y4x<=P^P209O z+hDDwHXG4pvLs0ozJC3--h2>fv{nQ`&`li#AzH6rq9`JYBErF7 zz~0^-*ROwHXLom(JkL>Y-n^0Vc+CC#_i@hQy+;{idGX>8xpwUuBEr3U_Y`m6z7_Ai zlw~P-o{NZ}L`1SI<9xqYuU=JJM5wBYEX!Cd7663jVw$FuWeI?8+ZJOCRaI?85kW-o z-s8RBif!9&E~WWd{K?t2TW9E;BTZAje*4C1x!Qj^l~QP>(OUl?>hJaU7$yCXQnOc=YIzOs7-H zvP_oC<@)A7O(yd9c+6_G1mMAghYDj1Po6xHckkYbb58zez~je{#ab&((@0sCl4Y5s zX)1rqzb;nFvfHX zx+<)-hzQo&uJ@{{I-_%L+u6m2opU(nu-4+7+hWi(4cpe+OGsSerD+=4w&h1|E*|Dm z;>A?&J&kWJCwl*DW9vQMH+a7}^=v+;X&QgZvgGXSjOB94DqT^QCDvGsG3!LFG+VON z7SIi(9jHnvE_3Ab&0<+p2NLfq&GZoK7k+zyWdN{-|y~kvn#@=7ooLg zcXvS33=t86AfVsxQ`hzOWANUilwvR#ARR7t4whzWJxs-;vG zsUM{>qkdErFVijnmvf7n;Q;da^@*_Kl8DP;15mb?VvEj`s;QjkVI!{plPZRJ{b66*GOB{F!2Bh&URU z8O-|6!%86x#vWjdN#XzzVEIyyqivShp6V&2}~7z}bm zYfY97kcWo{r38PtzrPPM9*>c_uG=G$Wf@Ww1!_K@httzjy!V*0ELp8q6h(n7{w^qr zg5`3FXwirWT5C+xG)yKF4i67ev)L>h92{USFE6R<8nM>0Uayg+XO2xo4WH1qEEX*PF54?^Zf=Nf0E~Z#P}eoqTCBA==P+@x-EOI> z3hzDQy(ff_j(hLhNTShu-{xNw1MLSQzVDf8>sKjG@?iWo0|nM@{F zYw_NH2&(T42MHR1Z!;qba_Zh@ZJOb$4gh<2^bBLcjsKve~+_W+Pks#Wbl6jXdn8nW}>a< zarf$7aPk-zpMgVY2;n`Mq9{_v)>_K4Oiv+}sqH#DltnRhM^EQpeF+#BpLy!3Tq*UX z$1ZNzD56J6?L}+dsV(naP`6FV7)=OS@}#xyWo??Kc?X&{7LoK?dc7sfGM=BGIX^#7 zucu30(&P2@HS5)i$HzxP2xM87V(cbq?(XiCt!sY&`4eI*`>YE80(x_UH0q_FXaE2J M07*qoM6N<$f*Xu?jsO4v diff --git a/data/themes/seg_middle_normal.png b/data/themes/seg_middle_normal.png index d0fa76153b0414cb6d2c2653e2efdcdad59996f4..4bd183a4325c10877fc43ce956f9820927352f87 100644 GIT binary patch delta 21 dcmZ3%#K^}F@!=AJ2H)c380su~T2PFUi diff --git a/data/themes/seg_middle_pressed.png b/data/themes/seg_middle_pressed.png index bb7c82152cf7b7e742f07c324444910cfbe6f90c..79fbe0fa7c96e908c05bfc0bb67ace6c3d77248a 100644 GIT binary patch delta 774 zcmV+h1Nr>U2G|CWUVqyI5)BjyRySWN0008mNkl;A}I|Yi~rhB~h zGDVNl|LsANpC*#^*bjxY2 zr4*D>25_xaJZY^#M8Zsf?6Gfi&LAQX5wzCOTEiGK0#i!JIZK;!MvPG=8)IOtg|&7C zrj)QO3u25&DG7KBWHy7x5W-zxN(t85A!r5wVvJ%vwqQexGu*0e}FYmNnr_>z;9di1%mz;yV!U90B$w z6HC1T-gxXm+|M=dz7t^Ce7V%C?ftI<)iQpyRI%ZIZLI)%y7z*$J*UGOzoXZWZGZ)} zkKj(fUTF_hck4_Afc+ZO9jk~CBVveHmWUV^oG)jjoPUvX^GHOnHmtzo@rdK;h_A0N z#1Iiez$IL8I-TI1$9$OKoyWt&1C}MORFzV@#`R_$0{}IyQSpx_L4g!Wznv1b*4OVm z-m_l-@f#pEw*Qe~=kO|fYm=$-vg7f(TQ@1L8^a(<)T_~GwBr@GYwSb41@|;>sNRC^ zr{e$f*ndkI_uEz@5RGG8$pvVP5e+2L(7MT58#gjGD6+K<&N)$Lt`N>SG4Go>?^ob7 zd8D)q!a}5wbCWmkJ*H`D)&u8x9%PJ#w6U>p&S9D+%=3(So_miIYOT;(!&)nn$7^g< zJ?44F;c)o5=6v@U0Px;l>xsoQP2%xzILIBqdw(x$9jG!**2hxHaCzVxhjVTWj@DXk z6)a^f$^@;~Th#!3e0)So=|(*HX2mJumn-mcxwLeB{{3v>)zlOT zrA@7hE8%czQc562FwcLU(W-d_b|y=0sO^p}0?6uj7ytkO07*qoM6N<$ Ef^A1_YXATM delta 764 zcmVKHi0C2nAkWvCOSJ^%b0DoF*0KfnM^E@NxjGS`^ zX6C9%YYifTFsne(*tRJp5D|z7T5D*nF$_Zwj4>jmRNIsiLI`#7Fbpupz!c~Fgnw!baY>A^0p`?!+kSga#o7Qs0Kj>5xX^keVjz<9*-ktI$;qj}R_emc zJK#=Z3zB}~bU0UmdGqJYiyVD(M>Y3<&0MAX=F(PROZSnnw)eE#<1>2g*an!vtpyMI zywL8b9>y64fa4g{T&n;d0)h{i=YSAq-0nBTl#o)$R#9pjsAijB%GdrLqziiSvyyrIvetfA5Nf{k>d)_xpXN`uX=0q^V>i$0000+35|i(?f|(HmK$@ngs{8wU3~z@r_fZnuk0 eyNy<>MSlS<$<^uiBrlHu0000 ziAV{{5u{`}@M(MFm*4~P2e3i{g2ZbD7dYT`;+gK=!^C!iod6?^EL&64)m_zXIypH} zd|1|6L{S9i9FC5TaBy&dFbt_ytAQ>q{wM$t`NOJ;>2!+c=YMCMpP%FP^%eboAIHbX z*x1-0y1Tn8L?9v%5uzx<+1VK$A0Kgec!=R}h)So^`Tg?pg7J8ao0}Wl-rnNj;Q?_R zV|RBK?RFdE@feqvm)PImhec3`6vKJvis^_V$JV0OB}C*}A^I zMz`C=*47q+Ab&sS3P_R!)><$#m>H_-0nWKn zfO9U}A_5}%9^gw6Qaa2G03MLO6aegCoy~v%ybj-4K`Na0#O&+LEY3PO>&0X#qm%&% zfP$HQ((IEi$$_%#iI4%z^84sNRrO_coEb6z07Jz<1fXInP*q=2V{!ncbFyRtiU@=`JL4mm z@>Gm5P=8gZD$G1!Sp;Kfp`Smk5|QzgW+P^f5}~X|i7*GivK;cRGbWE<=Bt$7yr@P_ ziL-BCE34=#O8Kgo3RD!#0-|M_?31=N@KWf@a4Tt!-w}*PYj-b_Q70joqSX)~|r_;e;FhIZ8L!;3^yWJ)_Jw4Tr4y{(JXf~VJ oY$LU>xw(mEqk(D=kf~JgA6c?7WkKLIL;wH)07*qoM6N<$f=my4AOHXW diff --git a/data/themes/seg_right_pressed.png b/data/themes/seg_right_pressed.png index 9ae9c261ab154aa90ea0dafc502c0005c4bebebb..e93ae2005125505f7aeabab9f6fbbd90fcc736cc 100644 GIT binary patch delta 674 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 JPDHLkV1m@Sje`IH delta 1369 zcmV-f1*ZCx3#JQ@UVqvQ5ep3ok^^BH000FhNklvOLq> zPuEjVRdq|6rl=~;IUNp%32$QwXoz*r>BYqb`}_NR{P>ak_wTc_v%|xO4>872?X+4@wfaBVAm6@yeVZbj*e(H zo9yoHVh4i(2L}hNt*x=Qw@0tnheEIT)7$Z{O`ZZJ4JO+!4+`D&=Cr_U6{P}ZU zzI@5S!2#Rb+c|*uo~^Ad+U+)P-n`-S=g%ZbGP4KHIe$KV`b3(hJbwI`t*tHg_xBkL z2H4?nh_#lrwKbe`93LMuuN@yBv$?s+-Me?O)-oIpvCcW1bA%8WjYgcFp3-PE<^mXx z$6Q@q5o09FGO{eoWg0>tgn)C7G)-^h{U*z@tlVq}0ae9{2rwmyO%R&_bF-D9r zb9-Qn{Hqd}+ygVwf0%pm>2>0DiV6=DV}GPZ(d~Ms2sMD3ij0v-^smR@c3sVw$^%nZ z5ePBn9!yJ9ZXwcXs*86u73qHtaw*fO(-aj~B~|@TGEGc^MkR!Zh?xcmK9p5di~(ip zWbwoMn$)P2JeO4CcPP>v*%(vKxlYwjshcEP2mxb~swd~%g_5GegIg6M1!E`=y?@2J z*J2PSF^~y>+|YyT)a0+?q|kjQ4~iNBNn*-LKWaSnOL+NRs&P}9Tv3#}mS6sad6ZgY zazQnKO_Bs_Ezadl-&$MpciW>&jMe$nTAM%3W|O6*C9F*l0c-8tc~CTc5uw>^(p+j{ z+wC^%_t*LB9O4@_(=07dhgcXQ{Eo`uaMZP6yL&ci7$CW#hLEoO6uF z<0|3gM-Nj^vHS5jC3B9AjSc$!KJ89Br)Ya;oAZlv0KR_x%4jq~L}sc>MHN=f>D}D? zoj-PW+1cKv*=%CF-L8OYzu#wNWreqI-*R$tQac~b5MEUl7Z>UEdi48!9#U^@vAn!Y zx7!sNk5g15F3WT@8u9n}IfJtSm&42at~PDwlK^z;qrPMj_DB$RU00000NkvXXu0mjfFUFeM diff --git a/data/themes/seg_single_pressed.png b/data/themes/seg_single_pressed.png index bdda5ace14e78bfa5d103865b97473aa983edfeb..ff90a244e252507997fbb5e55bec38b71875d314 100644 GIT binary patch delta 1367 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 XWvSz7{WEZQ00000NkvXXu0mjf6etim diff --git a/src/bin/test.c b/src/bin/test.c index 78577ee..1b8e2b3 100644 --- a/src/bin/test.c +++ b/src/bin/test.c @@ -120,6 +120,7 @@ void test_diskselector(void *data, Evas_Object *obj, void *event_info); void test_colorselector(void *data, Evas_Object *obj, void *event_info); void test_ctxpopup(void *data, Evas_Object *obj, void *event_info); void test_bubble(void *data, Evas_Object *obj, void *event_info); +void test_segment_control(void *data, Evas_Object *obj, void *event_info); void test_store(void *data, Evas_Object *obj, void *event_info); struct elm_test @@ -373,6 +374,7 @@ my_win_main(char *autorun) ADD_TEST("Color Selector", test_colorselector); ADD_TEST("Ctxpopup", test_ctxpopup); ADD_TEST("Bubble", test_bubble); + ADD_TEST("Segment Control", test_segment_control); ADD_TEST("Store", test_store); #undef ADD_TEST diff --git a/src/bin/test_segment_control.c b/src/bin/test_segment_control.c index 0afed9a..4a45fb8 100644 --- a/src/bin/test_segment_control.c +++ b/src/bin/test_segment_control.c @@ -4,66 +4,21 @@ #endif #ifndef ELM_LIB_QUICKLAUNCH -static Evas_Object* btn1 = NULL; -static Evas_Object* btn2 = NULL; -static Evas_Object* btn3 = NULL; - - -static void -_cb1( void* data, Evas_Object* obj, void* event_info) -{ - Elm_Segment_Item *it1 = elm_segment_control_item_selected_get( data ); - elm_segment_control_item_del(it1); - return; -} - - -static void -_cb3( void* data, Evas_Object* obj, void* event_info) -{ - Elm_Segment_Item *it1; - char buf[PATH_MAX]; - Evas_Object *ic1 = elm_icon_add(obj); - snprintf(buf, sizeof(buf), "%s/images/icon_00.png", PACKAGE_DATA_DIR); - elm_icon_file_set(ic1, buf, NULL); - evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1); - - - it1 = elm_segment_control_item_insert_at(data, ic1, "Inserted Item", 0); - elm_segment_control_item_label_set(it1, "Inserted Item"); - return; -} - -static void -_cb2( void* data, Evas_Object* obj, void* event_info) -{ - Elm_Segment_Item *it1; - char buf[PATH_MAX]; - Evas_Object *ic1; - - it1 = elm_segment_control_item_add(data, NULL, "Added Item"); - - ic1 = elm_icon_add(obj); - snprintf(buf, sizeof(buf), "%s/images/logo.png", PACKAGE_DATA_DIR); - elm_icon_file_set(ic1, buf, NULL); - evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1); - elm_segment_control_item_icon_set(it1, ic1); - - return; -} - void test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Evas_Object *win, *bg, *bx, *ic, *ic1; - Elm_Segment_Item *it1, *it2, *it3; - + Evas_Object *win, *bg, *ic, *ic1, *ic2, *ic3, *ic4, *ic5; + Elm_Segment_Item *it1, *it2, *it3, *it4, *it5; Evas_Object * in_layout; - Evas_Object *segment; + Evas_Object *segment1, *segment2, *segment3, *segment4; char buf[PATH_MAX]; char buf1[PATH_MAX]; char buf2[PATH_MAX]; + char buf3[PATH_MAX]; + char buf4[PATH_MAX]; + char buf5[PATH_MAX]; + char buf6[PATH_MAX]; win = elm_win_add(NULL, "segmentcontrol", ELM_WIN_BASIC); elm_win_title_set(win, "Segment Control"); @@ -74,12 +29,8 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e 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); - in_layout = elm_layout_add( win ); + elm_win_resize_object_add(win, in_layout); snprintf(buf, sizeof(buf), "%s/objects/test.edj", PACKAGE_DATA_DIR); elm_layout_file_set(in_layout, buf, "segment_test"); evas_object_size_hint_weight_set(in_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -90,45 +41,65 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1); ic1 = elm_icon_add(in_layout); - snprintf(buf2, sizeof(buf2), "%s/images/icon_00.png", PACKAGE_DATA_DIR); + snprintf(buf2, sizeof(buf2), "%s/images/logo.png", PACKAGE_DATA_DIR); elm_icon_file_set(ic1, buf2, NULL); evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1); - segment = elm_segment_control_add(win); - - it1 = elm_segment_control_item_add(segment, NULL, "Only Text"); - it2 = elm_segment_control_item_add(segment, ic, NULL); + segment1 = elm_segment_control_add(win); + it1 = elm_segment_control_item_add(segment1, NULL, "Only Text"); + it2 = elm_segment_control_item_add(segment1, ic, NULL); elm_segment_control_item_selected_set(it2, EINA_TRUE); - it3 = elm_segment_control_item_add(segment, ic1, "Text_Icon_test"); - - elm_object_disabled_set(segment, EINA_TRUE); - btn1 = elm_button_add(win); + it3 = elm_segment_control_item_add(segment1, ic1, "Text_Icon_test"); + it4 = elm_segment_control_item_add(segment1, NULL, "Seg4"); + it5 = elm_segment_control_item_add(segment1, NULL, "Seg5"); - elm_button_label_set(btn1, "Delete"); - evas_object_show(btn1); - - btn2 = elm_button_add(win); - elm_button_label_set(btn2, "Add"); - evas_object_show(btn2); + segment2 = elm_segment_control_add(win); + it1 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + it2 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment2, NULL, "SegmentControlItem"); + it4 = elm_segment_control_item_add(segment2, NULL, "SegmentItem"); + + ic2 = elm_icon_add(in_layout); + snprintf(buf3, sizeof(buf3), "%s/images/logo.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic2, buf3, NULL); + evas_object_size_hint_aspect_set(ic2, EVAS_ASPECT_CONTROL_BOTH, 1, 1); + + ic3 = elm_icon_add(in_layout); + snprintf(buf4, sizeof(buf4), "%s/images/logo.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic3, buf4, NULL); + evas_object_size_hint_aspect_set(ic3, EVAS_ASPECT_CONTROL_BOTH, 1, 1); + + ic4 = elm_icon_add(in_layout); + snprintf(buf5, sizeof(buf5), "%s/images/logo.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic4, buf5, NULL); + evas_object_size_hint_aspect_set(ic4, EVAS_ASPECT_CONTROL_BOTH, 1, 1); + + segment3 = elm_segment_control_add(win); + it1 = elm_segment_control_item_add(segment3, ic2, NULL); + it2 = elm_segment_control_item_add(segment3, ic3, NULL); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment3, ic4, NULL); - btn3 = elm_button_add(win); - elm_button_label_set(btn3, "Insert"); - evas_object_show(btn3); + ic5 = elm_icon_add(in_layout); + snprintf(buf6, sizeof(buf6), "%s/images/logo.png", PACKAGE_DATA_DIR); + elm_icon_file_set(ic5, buf6, NULL); + evas_object_size_hint_aspect_set(ic5, EVAS_ASPECT_CONTROL_BOTH, 1, 1); - evas_object_smart_callback_add( btn1, "clicked", _cb1, segment); - evas_object_smart_callback_add( btn2, "clicked", _cb2, segment); - evas_object_smart_callback_add( btn3, "clicked", _cb3, segment); + segment4 = elm_segment_control_add(win); + it1 = elm_segment_control_item_add(segment4, NULL, "Disabled"); + it2 = elm_segment_control_item_add(segment4, ic5, "Disabled"); + elm_segment_control_item_selected_set(it2, EINA_TRUE); + it3 = elm_segment_control_item_add(segment4, NULL, "Disabled"); + elm_object_disabled_set(segment4, EINA_TRUE); - evas_object_show(segment); - elm_layout_content_set(in_layout, "segment", segment); - elm_layout_content_set(in_layout, "add", btn2); - elm_layout_content_set(in_layout, "del", btn1); - elm_layout_content_set(in_layout, "insert", btn3); + elm_layout_content_set(in_layout, "segment1", segment1); + elm_layout_content_set(in_layout, "segment2", segment2); + elm_layout_content_set(in_layout, "segment3", segment3); + elm_layout_content_set(in_layout, "segment4", segment4); - elm_box_pack_end(bx, in_layout); evas_object_show(in_layout); evas_object_show(win); } #endif - diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index fc5b925..c39c77a 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -2064,24 +2064,6 @@ extern "C" { * "changed" - when the radio status is changed */ - /* SegmentControl */ - typedef struct _Elm_Segment_Item Elm_Segment_Item; - EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent) EINA_ARG_NONNULL(1); - EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1); - EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1); - EAPI void elm_segment_control_item_del(Elm_Segment_Item *it) EINA_ARG_NONNULL(1); - EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index) EINA_ARG_NONNULL(1); - EAPI int elm_segment_control_item_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - EAPI Elm_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1); - EAPI const char *elm_segment_control_item_label_get(Evas_Object *obj, int index) EINA_ARG_NONNULL(1); - EAPI void elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1); - EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1); - EAPI void elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1); - EAPI int elm_segment_control_item_index_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1); - EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1); - EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); - EAPI void elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1); - EAPI Evas_Object *elm_page_control_add(Evas_Object *parent); EAPI void elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count); EAPI void elm_page_control_page_id_set(Evas_Object *obj, unsigned int page_id); @@ -3449,6 +3431,28 @@ extern "C" { EAPI const Elm_Store *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1); + /* SegmentControl */ + typedef struct _Elm_Segment_Item Elm_Segment_Item; + EAPI Evas_Object *elm_segment_control_add(Evas_Object *parent) EINA_ARG_NONNULL(1); + EAPI Elm_Segment_Item *elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, const char *label) EINA_ARG_NONNULL(1); + EAPI Elm_Segment_Item *elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, const char *label, int index) EINA_ARG_NONNULL(1); + EAPI void elm_segment_control_item_del(Elm_Segment_Item *it) EINA_ARG_NONNULL(1); + EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index) EINA_ARG_NONNULL(1); + EAPI int elm_segment_control_item_count_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI Elm_Segment_Item *elm_segment_control_item_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1); + EAPI const char *elm_segment_control_item_label_get(Evas_Object *obj, int index) EINA_ARG_NONNULL(1); + EAPI void elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_segment_control_item_icon_get(const Evas_Object *obj, int index) EINA_ARG_NONNULL(1); + EAPI void elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1); + EAPI int elm_segment_control_item_index_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1); + EAPI Evas_Object *elm_segment_control_item_object_get(const Elm_Segment_Item *it) EINA_ARG_NONNULL(1); + EAPI Elm_Segment_Item *elm_segment_control_item_selected_get(const Evas_Object *obj) EINA_ARG_NONNULL(1); + EAPI void elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) EINA_ARG_NONNULL(1); + /* smart callbacks called: + * "changed" -when the user clicks on a segment item which is not previously + * selected and get selected. The event_info parameter is the + * segment item index. + */ #ifdef __cplusplus } diff --git a/src/lib/elm_segment_control.c b/src/lib/elm_segment_control.c index c4173b4..c13c86d 100644 --- a/src/lib/elm_segment_control.c +++ b/src/lib/elm_segment_control.c @@ -3,11 +3,20 @@ /** * @defgroup SegmentControl SegmentControl - * @ingroup Elementary * - * SegmentControl Widget is a horizontal control made of multiple segments, each segment item - * functioning similar to discrete two state button. A segmented control affords a compact means to group together a number of controls. - * Only one Segment item can be at selected state. A segmented control item can display combination of Text and any Evas_Object like layout or other widget. + * SegmentControl Widget is a horizontal control made of multiple segment items, + * each segment item functioning similar to discrete two state button. A segment + * control groups the the items together and provides compact single button with + * multiple equal size segments. Segment item size is determined by base widget + * size and the number of items added. + * Only one Segment item can be at selected state. A segment item can display + * combination of Text and any Evas_Object like Images or other widget. + * + * Signals that you can add callbacks for are: + * + * "changed" -when the user clicks on a segment item which is not previously + * selected and get selected. The event_info parameter is the + * segment item index. */ typedef struct _Widget_Data Widget_Data; @@ -25,7 +34,7 @@ struct _Elm_Segment_Item { Elm_Widget_Item base; Evas_Object *icon; - Evas_Object *label; + const char *label; int seg_index; }; @@ -38,16 +47,24 @@ static void _item_free(Elm_Segment_Item *it); static void _segment_off(Elm_Segment_Item *it); static void _segment_on(Elm_Segment_Item *it); static void _position_items(Widget_Data *wd); -static void _on_move_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__); -static void _mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__); -static void _mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, - void *event_info __UNUSED__); +static void _on_move_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj + __UNUSED__, void *event_info __UNUSED__); +static void _mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj + __UNUSED__, void *event_info __UNUSED__); +static void _mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj + __UNUSED__, void *event_info __UNUSED__); static void _swallow_item_objects(Elm_Segment_Item *it); static void _update_list(Widget_Data *wd); static Elm_Segment_Item * _item_find(const Evas_Object *obj, int index); -static Elm_Segment_Item* _item_new(Evas_Object *obj, Evas_Object *icon, const char *label ); +static Elm_Segment_Item* _item_new(Evas_Object *obj, Evas_Object *icon, + const char *label); + +static const char SIG_CHANGED[] = "changed"; + +static const Evas_Smart_Cb_Description _signals[] = { + {SIG_CHANGED, ""}, + {NULL, NULL} +}; static void _sizing_eval(Evas_Object *obj) @@ -59,9 +76,9 @@ _sizing_eval(Evas_Object *obj) wd = elm_widget_data_get(obj); if (!wd) return; - elm_coords_finger_size_adjust(1, &minw, 1, &minh); + elm_coords_finger_size_adjust(wd->item_count, &minw, 1, &minh); edje_object_size_min_restricted_calc(wd->base, &minw, &minh, minw, minh); - elm_coords_finger_size_adjust(1, &minw, 1, &minh); + elm_coords_finger_size_adjust(wd->item_count, &minw, 1, &minh); evas_object_size_hint_min_get(obj, &w, &h); if (w > minw) minw = w; @@ -87,23 +104,32 @@ static void _theme_hook(Evas_Object *obj) { Eina_List *l; + Eina_Bool rtl; Elm_Segment_Item *it; Widget_Data *wd; wd = elm_widget_data_get(obj); if (!wd) return; - _elm_theme_object_set(obj, wd->base, "segment_control", "base", elm_widget_style_get(obj)); - edje_object_scale_set(wd->base, elm_widget_scale_get(wd->base) *_elm_config->scale); + _elm_widget_mirrored_reload(obj); + rtl = elm_widget_mirrored_get(obj); + edje_object_mirrored_set(wd->base, rtl); + + _elm_theme_object_set(obj, wd->base, "segment_control", "base", + elm_widget_style_get(obj)); + edje_object_scale_set(wd->base, elm_widget_scale_get(wd->base) + *_elm_config->scale); EINA_LIST_FOREACH(wd->seg_items, l, it) { - _elm_theme_object_set(obj, it->base.view, "segment_control", "item", elm_widget_style_get(obj)); - edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.view) *_elm_config->scale); + _elm_theme_object_set(obj, it->base.view, "segment_control", + "item", elm_widget_style_get(obj)); + edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.view) + *_elm_config->scale); + edje_object_mirrored_set(it->base.view, rtl); } _update_list(wd); - _sizing_eval(obj); } static void @@ -116,6 +142,9 @@ _disable_hook(Evas_Object *obj) _update_list(wd); } +// TODO: Elm_widget elm_widget_focus_list_next_get supports only Elm_widget list, +// Not the Elm_Widget_item. Focus switching with in widget not supported until +// it is supported in elm_widget #if 0 static void * _elm_list_data_get(const Eina_List *list) @@ -128,16 +157,16 @@ _elm_list_data_get(const Eina_List *list) return it->base.view; } -/* TODO Can focus stay on Evas_Object which is not a elm_widget ?? */ static Eina_Bool -_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next) +_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, + Evas_Object **next) { static int count=0; Widget_Data *; const Eina_List *items; void *(*list_data_get) (const Eina_List *list); - wd = elm_widget_data_get(obj) + wd = elm_widget_data_get(obj); if ((!wd)) return EINA_FALSE; /* Focus chain */ @@ -164,13 +193,13 @@ _item_free(Elm_Segment_Item *it) wd = elm_widget_item_data_get(it); if (!wd) return; - if(wd->selected_item == it) wd->selected_item = NULL; - if(wd->seg_items) wd->seg_items = eina_list_remove(wd->seg_items, it); + if (wd->selected_item == it) wd->selected_item = NULL; + if (wd->seg_items) wd->seg_items = eina_list_remove(wd->seg_items, it); elm_widget_item_pre_notify_del(it); if (it->icon) evas_object_del(it->icon); - if (it->label) evas_object_del(it->label); + if (it->label) eina_stringshare_del(it->label); elm_widget_item_del(it); } @@ -179,7 +208,6 @@ static void _segment_off(Elm_Segment_Item *it) { Widget_Data *wd; - char buf[4096]; if (!it) return; @@ -187,11 +215,6 @@ _segment_off(Elm_Segment_Item *it) if (!wd) return; edje_object_signal_emit(it->base.view, "elm,state,segment,normal", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_normal", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } if (wd->selected_item == it) wd->selected_item = NULL; } @@ -200,7 +223,6 @@ static void _segment_on(Elm_Segment_Item *it) { Widget_Data *wd; - char buf[4096]; if (!it) return; @@ -211,14 +233,9 @@ _segment_on(Elm_Segment_Item *it) if (wd->selected_item) _segment_off(wd->selected_item); edje_object_signal_emit(it->base.view, "elm,state,segment,selected", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_selected", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } wd->selected_item = it; - evas_object_smart_callback_call(wd->obj, "changed", (void*) it->seg_index); + evas_object_smart_callback_call(wd->obj, SIG_CHANGED, (void*) it->seg_index); } static void @@ -226,21 +243,31 @@ _position_items(Widget_Data *wd) { Eina_List *l; Elm_Segment_Item *it; - int bx, by, bw, bh, position; + Eina_Bool rtl; + int bx, by, bw, bh, pos; wd->item_count = eina_list_count(wd->seg_items); if (wd->item_count <= 0) return; evas_object_geometry_get(wd->base, &bx, &by, &bw, &bh); wd->item_width = bw / wd->item_count; + rtl = elm_widget_mirrored_get(wd->obj); + + if (rtl) + pos = bx + bw - wd->item_width; + else + pos = bx; - position = bx; EINA_LIST_FOREACH(wd->seg_items, l, it) { - evas_object_move(it->base.view, bx, by ); - evas_object_resize(it->base.view, wd->item_width, bh ); - bx += wd->item_width; + evas_object_move(it->base.view, pos, by); + evas_object_resize(it->base.view, wd->item_width, bh); + if (rtl) + pos -= wd->item_width; + else + pos += wd->item_width; } + _sizing_eval(wd->obj); } static void @@ -248,26 +275,12 @@ _on_move_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Widget_Data *wd; - Evas_Coord law = 0, lah = 0; - Eina_List *l; - Elm_Segment_Item *it = NULL; - const char *lbl_area; wd = elm_widget_data_get(data); if (!wd) return; _position_items(wd); - EINA_LIST_FOREACH(wd->seg_items, l, it) - { - lbl_area = edje_object_data_get(it->base.view, "label.wrap.part"); - if (it->label && lbl_area) - { - edje_object_part_geometry_get(it->base.view, lbl_area, NULL, NULL, &law, &lah); - elm_label_wrap_width_set(it->label, law); - elm_label_wrap_height_set(it->label, lah); - } - } } static void @@ -278,7 +291,6 @@ _mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Segment_Item *it; Evas_Event_Mouse_Up *ev; Evas_Coord x, y, w, h; - char buf[4096]; it = data; if (!it) return; @@ -293,17 +305,11 @@ _mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, ev = event_info; evas_object_geometry_get(it->base.view, &x, &y, &w, &h); - if((ev->output.x > x) && (ev->output.x < (x+w)) && (ev->output.y > y) && (ev->output.y < (y+h))) + if ((ev->output.x >= x) && (ev->output.x <= (x + w)) && (ev->output.y >= y) + && (ev->output.y <= (y + h))) _segment_on(it); else - { - edje_object_signal_emit(it->base.view, "elm,state,segment,normal", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_normal", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } + edje_object_signal_emit(it->base.view, "elm,state,segment,normal", "elm"); } static void @@ -312,7 +318,6 @@ _mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, { Widget_Data *wd; Elm_Segment_Item *it; - char buf[4096]; it = data; if (!it) return; @@ -325,19 +330,11 @@ _mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, if (it == wd->selected_item) return; edje_object_signal_emit(it->base.view, "elm,state,segment,pressed", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_pressed", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } } static void _swallow_item_objects(Elm_Segment_Item *it) { - Evas_Coord law = 0, lah = 0; - const char *lbl_area; - if (!it) return; if (it->icon) @@ -349,29 +346,19 @@ _swallow_item_objects(Elm_Segment_Item *it) edje_object_signal_emit(it->base.view, "elm,state,icon,hidden", "elm"); if (it->label) - { - edje_object_part_swallow(it->base.view, "elm.swallow.label", it->label); - edje_object_signal_emit(it->base.view, "elm,state,text,visible", "elm"); - - lbl_area = edje_object_data_get(it->base.view, "label.wrap.part"); - if (lbl_area) - { - edje_object_part_geometry_get(it->base.view, lbl_area, NULL, NULL, &law, &lah ); - elm_label_wrap_width_set(it->label, law); - elm_label_wrap_height_set(it->label, lah); - } - } + edje_object_signal_emit(it->base.view, "elm,state,text,visible", "elm"); else edje_object_signal_emit(it->base.view, "elm,state,text,hidden", "elm"); + edje_object_message_signal_process(it->base.view); } static void _update_list(Widget_Data *wd) { Eina_List *l; - Elm_Segment_Item *it = NULL; + Elm_Segment_Item *it; + Eina_Bool rtl; int index = 0; - char buf[4096]; _position_items(wd); @@ -381,73 +368,64 @@ _update_list(Widget_Data *wd) it->seg_index = 0; //Set the segment type - edje_object_signal_emit(it->base.view, "elm,type,segment,single", "elm"); + edje_object_signal_emit(it->base.view, + "elm,type,segment,single", "elm"); //Set the segment state if (wd->selected_item == it) - { - edje_object_signal_emit(it->base.view, "elm,state,segment,selected", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_selected", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } + edje_object_signal_emit(it->base.view, + "elm,state,segment,selected", "elm"); else - edje_object_signal_emit(it->base.view, "elm,state,segment,normal", "elm"); + edje_object_signal_emit(it->base.view, + "elm,state,segment,normal", "elm"); if (elm_widget_disabled_get(wd->obj)) - { - edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_disabled", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } + edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm"); _swallow_item_objects(it); - return; } + rtl = elm_widget_mirrored_get(wd->obj); EINA_LIST_FOREACH(wd->seg_items, l, it) { it->seg_index = index; //Set the segment type - if(index == 0) - edje_object_signal_emit(it->base.view, "elm,type,segment,left", "elm"); - else if(index == wd->item_count-1) - edje_object_signal_emit(it->base.view, "elm,type,segment,right", "elm"); + if (index == 0) + { + if (rtl) + edje_object_signal_emit(it->base.view, + "elm,type,segment,right", "elm"); + else + edje_object_signal_emit(it->base.view, + "elm,type,segment,left", "elm"); + } + else if (index == (wd->item_count - 1)) + { + if (rtl) + edje_object_signal_emit(it->base.view, + "elm,type,segment,left", "elm"); + else + edje_object_signal_emit(it->base.view, + "elm,type,segment,right", "elm"); + } else - edje_object_signal_emit(it->base.view, "elm,type,segment,middle", "elm"); + edje_object_signal_emit(it->base.view, + "elm,type,segment,middle", "elm"); //Set the segment state if (wd->selected_item == it) - { - edje_object_signal_emit(it->base.view, "elm,state,segment,selected", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_selected", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } + edje_object_signal_emit(it->base.view, + "elm,state,segment,selected", "elm"); else - edje_object_signal_emit(it->base.view, "elm,state,segment,normal", "elm"); + edje_object_signal_emit(it->base.view, + "elm,state,segment,normal", "elm"); if (elm_widget_disabled_get(wd->obj)) - { - edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm"); - if (it->label) - { - snprintf(buf, sizeof(buf), "%s/segment_disabled", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } + edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm"); _swallow_item_objects(it); - index++; } } @@ -466,11 +444,10 @@ _item_find(const Evas_Object *obj, int index) } static Elm_Segment_Item* -_item_new(Evas_Object *obj, Evas_Object *icon, const char *label ) +_item_new(Evas_Object *obj, Evas_Object *icon, const char *label) { Elm_Segment_Item *it; Widget_Data *wd; - char buf[4096]; wd = elm_widget_data_get(obj); if (!wd) return NULL; @@ -480,26 +457,30 @@ _item_new(Evas_Object *obj, Evas_Object *icon, const char *label ) elm_widget_item_data_set(it, wd); it->base.view = edje_object_add(evas_object_evas_get(obj)); - edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.view) *_elm_config->scale); + edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.view) + *_elm_config->scale); evas_object_smart_member_add(it->base.view, obj); elm_widget_sub_object_add(obj, it->base.view); - _elm_theme_object_set(obj, it->base.view, "segment_control", "item", elm_object_style_get(obj)); + _elm_theme_object_set(obj, it->base.view, "segment_control", "item", + elm_object_style_get(obj)); + edje_object_mirrored_set(it->base.view, + elm_widget_mirrored_get(it->base.widget)); if (label) - { - it->label = elm_label_add(obj); - elm_widget_sub_object_add(it->base.view, it->label); - snprintf(buf, sizeof(buf), "%s/segment_normal", elm_widget_style_get(obj)); - elm_object_style_set(it->label, buf); - elm_label_label_set(it->label, label); - elm_label_ellipsis_set(it->label, EINA_TRUE); - evas_object_show(it->label); - } + eina_stringshare_replace(&it->label, label); + if (it->label) + edje_object_signal_emit(it->base.view, "elm,state,text,visible", "elm"); + else + edje_object_signal_emit(it->base.view, "elm,state,text,hidden", "elm"); + edje_object_message_signal_process(it->base.view); + edje_object_part_text_set(it->base.view, "elm.text", label); it->icon = icon; if (it->icon) elm_widget_sub_object_add(it->base.view, it->icon); - evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, it); - evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_UP, _mouse_up, it); + evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_DOWN, + _mouse_down, it); + evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_UP, + _mouse_up, it); evas_object_show(it->base.view); return it; @@ -510,7 +491,7 @@ _item_new(Evas_Object *obj, Evas_Object *icon, const char *label ) * @param [in] parent The parent object * @return The new object or NULL if it cannot be created * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Evas_Object * elm_segment_control_add(Evas_Object *parent) @@ -519,12 +500,8 @@ elm_segment_control_add(Evas_Object *parent) Evas *e; Widget_Data *wd; - EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); + ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL); - wd = ELM_NEW(Widget_Data); - e = evas_object_evas_get(parent); - if (!e) return NULL; - obj = elm_widget_add(e); ELM_SET_WIDTYPE(widtype, "segment_control"); elm_widget_type_set(obj, "segment_control"); elm_widget_sub_object_add(parent, obj); @@ -533,21 +510,25 @@ elm_segment_control_add(Evas_Object *parent) elm_widget_theme_hook_set(obj, _theme_hook); elm_widget_disable_hook_set(obj, _disable_hook); + // TODO: Focus switch support to Elm_widget_Item not supported yet. #if 0 - /* TODO Can focus stay on Evas_Object which is not a elm_widget ?? */ elm_widget_focus_next_hook_set(obj, _focus_next_hook); #endif wd->obj = obj; wd->base = edje_object_add(e); - edje_object_scale_set(wd->base, elm_widget_scale_get(wd->base) *_elm_config->scale); + edje_object_scale_set(wd->base, elm_widget_scale_get(wd->base) + *_elm_config->scale); _elm_theme_object_set(obj, wd->base, "segment_control", "base", "default"); elm_widget_resize_object_set(obj, wd->base); - evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _on_move_resize, obj); - evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _on_move_resize, obj); - _sizing_eval(obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, + _on_move_resize, obj); + evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, + _on_move_resize, obj); + + evas_object_smart_callbacks_descriptions_set(obj, _signals); return obj; } @@ -556,10 +537,11 @@ elm_segment_control_add(Evas_Object *parent) * Add new segment item to SegmentControl. * @param [in] obj The SegmentControl object * @param [in] icon Any Objects like icon, Label, layout etc - * @param [in] label The label for added segment item. Note that, NULL is different from empty string "". + * @param [in] label The label for added segment item. + * Note that, NULL is different from empty string "". * @return The new segment item or NULL if it cannot be created * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Elm_Segment_Item * elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, @@ -585,12 +567,13 @@ elm_segment_control_item_add(Evas_Object *obj, Evas_Object *icon, * Insert a new segment item to SegmentControl. * @param [in] obj The SegmentControl object * @param [in] icon Any Objects like icon, Label, layout etc - * @param [in] label The label for added segment item. Note that, NULL is different from empty string "". + * @param [in] label The label for added segment item. + * Note that, NULL is different from empty string "". * @param [in] index Segment item location. Value should be between 0 and - * Existing total item count( @see elm_segment_control_item_count_get() ) + * Existing total item count( @see elm_segment_control_item_count_get() ) * @return The new segment item or NULL if it cannot be created * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Elm_Segment_Item * elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, @@ -622,7 +605,7 @@ elm_segment_control_item_insert_at(Evas_Object *obj, Evas_Object *icon, * @param [in] obj The SegmentControl object * @param [in] it The segment item to be deleted * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI void elm_segment_control_item_del(Elm_Segment_Item *it) @@ -631,7 +614,7 @@ elm_segment_control_item_del(Elm_Segment_Item *it) Widget_Data *wd; wd = elm_widget_item_data_get(it); - if(!wd) return; + if (!wd) return; _item_free(it); _update_list(wd); @@ -640,9 +623,9 @@ elm_segment_control_item_del(Elm_Segment_Item *it) /** * Delete a segment item of given index from SegmentControl * @param [in] obj The SegmentControl object - * @param [in] index The position at which segment item to be deleted + * @param [in] index The position at which segment item to be deleted. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI void elm_segment_control_item_del_at(Evas_Object *obj, int index) @@ -666,7 +649,7 @@ elm_segment_control_item_del_at(Evas_Object *obj, int index) * @param [in] index The index of the segment item * @return The label of the segment item * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI const char* elm_segment_control_item_label_get(Evas_Object *obj, int index) @@ -675,7 +658,7 @@ elm_segment_control_item_label_get(Evas_Object *obj, int index) Elm_Segment_Item *it; it = _item_find(obj, index); - if (it && it->label) return elm_label_label_get(it->label); + if (it) return it->label; return NULL; } @@ -685,47 +668,25 @@ elm_segment_control_item_label_get(Evas_Object *obj, int index) * @param [in] it The SegmentControl Item * @param [in] label New label text. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI void elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) { ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it); Widget_Data *wd; - char buf[4096]; wd = elm_widget_item_data_get(it); if (!wd) return; - if (!label && !it->label) return; //No label, return - if (label && !it->label) // Create Label Object - { - it->label = elm_label_add(it->base.view); - elm_widget_sub_object_add(it->base.view, it->label); - elm_label_label_set(it->label, label); - elm_label_ellipsis_set(it->label, EINA_TRUE); - evas_object_show(it->label); - - if(wd->selected_item == it ) - { - snprintf(buf, sizeof(buf), "%s/segment_selected", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - else - { - snprintf(buf, sizeof(buf), "%s/segment_normal", elm_widget_style_get(wd->obj)); - elm_object_style_set(it->label, buf); - } - } - else if (!label && it->label) // Delete Label Object - { - evas_object_del(it->label); - it->label = NULL; - } - else // Update the text - elm_label_label_set(it->label, label); - - _swallow_item_objects( it ); + eina_stringshare_replace(&it->label, label); + if (it->label) + edje_object_signal_emit(it->base.view, "elm,state,text,visible", "elm"); + else + edje_object_signal_emit(it->base.view, "elm,state,text,hidden", "elm"); + edje_object_message_signal_process(it->base.view); + //label can be NULL also. + edje_object_part_text_set(it->base.view, "elm.text", it->label); } /** @@ -734,7 +695,7 @@ elm_segment_control_item_label_set(Elm_Segment_Item* it, const char* label) * @param [in] index The index of the segment item * @return The icon object. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Evas_Object * elm_segment_control_item_icon_get(const Evas_Object *obj, int index) @@ -753,7 +714,7 @@ elm_segment_control_item_icon_get(const Evas_Object *obj, int index) * @param [in] it The SegmentControl Item * @param [in] icon Objects like Layout, Icon, Label etc... * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI void elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) @@ -769,8 +730,14 @@ elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) } it->icon = icon; - if (it->icon) elm_widget_sub_object_add(it->base.view, it->icon); - _swallow_item_objects( it ); + if (it->icon) + { + elm_widget_sub_object_add(it->base.view, it->icon); + edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon); + edje_object_signal_emit(it->base.view, "elm,state,icon,visible", "elm"); + } + else + edje_object_signal_emit(it->base.view, "elm,state,icon,hidden", "elm"); } /** @@ -778,7 +745,7 @@ elm_segment_control_item_icon_set(Elm_Segment_Item *it, Evas_Object *icon) * @param [in] obj The SegmentControl object * @return Segment items count. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI int elm_segment_control_item_count_get(const Evas_Object *obj) @@ -797,7 +764,7 @@ elm_segment_control_item_count_get(const Evas_Object *obj) * @param [in] it The Segment item * @return obj The base object of the segment item. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Evas_Object* elm_segment_control_item_object_get(const Elm_Segment_Item *it) @@ -812,7 +779,7 @@ elm_segment_control_item_object_get(const Elm_Segment_Item *it) * @param [in] obj The SegmentControl object * @return Selected Segment Item. NULL if none of segment item is selected. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Elm_Segment_Item* elm_segment_control_item_selected_get(const Evas_Object *obj) @@ -829,9 +796,10 @@ elm_segment_control_item_selected_get(const Evas_Object *obj) /** * Select/unselect a particular segment item of SegmentControl * @param [in] it The Segment item that is to be selected or unselected. - * @param [in] select Passing EINA_TRUE will select the segment item and EINA_FALSE will unselect. + * @param [in] select Passing EINA_TRUE will select the segment item and + * EINA_FALSE will unselect. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI void elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) @@ -844,12 +812,13 @@ elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) if (it == wd->selected_item) { - if (select) return; //already in selected selected state. + //already in selected state. + if (select) return; //unselect case _segment_off(it); } - else + else if (select) _segment_on(it); return; @@ -861,7 +830,7 @@ elm_segment_control_item_selected_set(Elm_Segment_Item *it, Eina_Bool select) * @param [in] index The index of the segment item. * @return The Segment item. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI Elm_Segment_Item * elm_segment_control_item_get(const Evas_Object *obj, int index) @@ -879,7 +848,7 @@ elm_segment_control_item_get(const Evas_Object *obj, int index) * @param [in] it The Segment Item. * @return Segment Item index. * - * @ingroup SegmentControl SegmentControl + * @ingroup SegmentControl */ EAPI int elm_segment_control_item_index_get(const Elm_Segment_Item *it) -- 2.7.4