forked from enlightenment/efl
New list layout: horizontal.
Now one can set lists to dispose its items horizontally, too. elm_list_horizontal_mode_set(), whose name was bogus and would conflict with the new methods, got renamed to elm_mode_set(), along with the getters. This is coming along to help a widget using lists which has a horizontal mode. The default theme for horizontal items is kinda ugly for default lists, but one can always improve it :) (in a hurry now). Also, I'm introducing a new mode for Elementary lists: expand. SVN revision: 53640
This commit is contained in:
parent
0121df333c
commit
7d4f42fe00
|
@ -11523,6 +11523,814 @@ collections {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
group { name: "elm/list/h_item/default";
|
||||||
|
data.item: "stacking" "above";
|
||||||
|
images {
|
||||||
|
image: "bt_sm_base1.png" COMP;
|
||||||
|
image: "bt_sm_shine.png" COMP;
|
||||||
|
image: "bt_sm_hilight.png" COMP;
|
||||||
|
image: "ilist_1_h.png" COMP;
|
||||||
|
image: "ilist_item_shadow_h.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base_sh";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
align: 0.0 0.0;
|
||||||
|
min: 10 0;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 0 -1;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "ilist_item_shadow_h.png";
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "ilist_1_h.png";
|
||||||
|
border: 2 2 2 2;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_base1.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 -1;
|
||||||
|
}
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 224 224 224 255;
|
||||||
|
color3: 0 0 0 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg1";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_hilight.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg2";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_shine.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: LINEAR 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/list/h_item_odd/default";
|
||||||
|
data.item: "stacking" "below";
|
||||||
|
data.item: "selectraise" "on";
|
||||||
|
images {
|
||||||
|
image: "bt_sm_base1.png" COMP;
|
||||||
|
image: "bt_sm_shine.png" COMP;
|
||||||
|
image: "bt_sm_hilight.png" COMP;
|
||||||
|
image: "ilist_2_h.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "ilist_2_h.png";
|
||||||
|
border: 2 2 2 2;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_base1.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 -1;
|
||||||
|
}
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 224 224 224 255;
|
||||||
|
color3: 0 0 0 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg1";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_hilight.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg2";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_shine.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: LINEAR 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/list/h_item_compress/default";
|
||||||
|
data.item: "stacking" "above";
|
||||||
|
data.item: "selectraise" "on";
|
||||||
|
images {
|
||||||
|
image: "bt_sm_base1.png" COMP;
|
||||||
|
image: "bt_sm_shine.png" COMP;
|
||||||
|
image: "bt_sm_hilight.png" COMP;
|
||||||
|
image: "ilist_1_h.png" COMP;
|
||||||
|
image: "ilist_item_shadow_h.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base_sh";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
align: 0.0 0.0;
|
||||||
|
min: 10 0;
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 0 -1;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "ilist_item_shadow_h.png";
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "ilist_1_h.png";
|
||||||
|
border: 2 2 2 2;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_base1.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 -1;
|
||||||
|
}
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 224 224 224 255;
|
||||||
|
color3: 0 0 0 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg1";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_hilight.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg2";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_shine.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: LINEAR 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
group { name: "elm/list/h_item_compress_odd/default";
|
||||||
|
data.item: "stacking" "below";
|
||||||
|
data.item: "selectraise" "on";
|
||||||
|
images {
|
||||||
|
image: "bt_sm_base1.png" COMP;
|
||||||
|
image: "bt_sm_shine.png" COMP;
|
||||||
|
image: "bt_sm_hilight.png" COMP;
|
||||||
|
image: "ilist_2_h.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "ilist_2_h.png";
|
||||||
|
border: 2 2 2 2;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_base1.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 0.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 0 1;
|
||||||
|
align: 0.5 1.0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 -1;
|
||||||
|
}
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
align: 0.5 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 224 224 224 255;
|
||||||
|
color3: 0 0 0 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg1";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_hilight.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg2";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_shine.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: LINEAR 0.1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
group { name: "elm/slider/horizontal/default";
|
group { name: "elm/slider/horizontal/default";
|
||||||
images {
|
images {
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 350 B |
|
@ -34,6 +34,7 @@ void test_anchorblock(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_toolbar(void *data, Evas_Object *obj, void *event_info);
|
void test_toolbar(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_hoversel(void *data, Evas_Object *obj, void *event_info);
|
void test_hoversel(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_list(void *data, Evas_Object *obj, void *event_info);
|
void test_list(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
void test_list_horizontal(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_list2(void *data, Evas_Object *obj, void *event_info);
|
void test_list2(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_list3(void *data, Evas_Object *obj, void *event_info);
|
void test_list3(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_list4(void *data, Evas_Object *obj, void *event_info);
|
void test_list4(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
@ -250,6 +251,7 @@ my_win_main(char *autorun)
|
||||||
ADD_TEST("Toolbar", test_toolbar);
|
ADD_TEST("Toolbar", test_toolbar);
|
||||||
ADD_TEST("Hoversel", test_hoversel);
|
ADD_TEST("Hoversel", test_hoversel);
|
||||||
ADD_TEST("List", test_list);
|
ADD_TEST("List", test_list);
|
||||||
|
ADD_TEST("List - Horizontal", test_list_horizontal);
|
||||||
ADD_TEST("List 2", test_list2);
|
ADD_TEST("List 2", test_list2);
|
||||||
ADD_TEST("List 3", test_list3);
|
ADD_TEST("List 3", test_list3);
|
||||||
ADD_TEST("List 4", test_list4);
|
ADD_TEST("List 4", test_list4);
|
||||||
|
|
|
@ -27,6 +27,7 @@ test_list(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info _
|
||||||
|
|
||||||
li = elm_list_add(win);
|
li = elm_list_add(win);
|
||||||
elm_win_resize_object_add(win, li);
|
elm_win_resize_object_add(win, li);
|
||||||
|
elm_list_mode_set(li, ELM_LIST_LIMIT);
|
||||||
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
|
||||||
ic = elm_icon_add(win);
|
ic = elm_icon_add(win);
|
||||||
|
@ -148,6 +149,132 @@ test_list(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info _
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_list_horizontal(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *bg, *li, *ic, *ic2, *bx, *tb2, *bt;
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
Elm_List_Item *it1, *it2, *it3, *it4;
|
||||||
|
|
||||||
|
win = elm_win_add(NULL, "list", ELM_WIN_BASIC);
|
||||||
|
elm_win_title_set(win, "List");
|
||||||
|
elm_win_autodel_set(win, EINA_TRUE);
|
||||||
|
|
||||||
|
bg = elm_bg_add(win);
|
||||||
|
elm_win_resize_object_add(win, bg);
|
||||||
|
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_show(bg);
|
||||||
|
|
||||||
|
li = elm_list_add(win);
|
||||||
|
elm_list_horizontal_set(li, EINA_TRUE);
|
||||||
|
elm_list_mode_set(li, ELM_LIST_LIMIT);
|
||||||
|
elm_win_resize_object_add(win, li);
|
||||||
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
|
elm_icon_file_set(ic, buf, NULL);
|
||||||
|
elm_icon_scale_set(ic, 1, 1);
|
||||||
|
it1 = elm_list_item_append(li, "Hello", ic, NULL, NULL, NULL);
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
|
elm_icon_scale_set(ic, 0, 0);
|
||||||
|
elm_icon_file_set(ic, buf, NULL);
|
||||||
|
elm_list_item_append(li, "world", ic, NULL, NULL, NULL);
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
elm_icon_standard_set(ic, "edit");
|
||||||
|
elm_icon_scale_set(ic, 0, 0);
|
||||||
|
elm_list_item_append(li, ".", ic, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
elm_icon_standard_set(ic, "delete");
|
||||||
|
elm_icon_scale_set(ic, 0, 0);
|
||||||
|
ic2 = elm_icon_add(win);
|
||||||
|
elm_icon_standard_set(ic2, "clock");
|
||||||
|
elm_icon_scale_set(ic2, 0, 0);
|
||||||
|
it2 = elm_list_item_append(li, "How", ic, ic2, NULL, NULL);
|
||||||
|
|
||||||
|
bx = elm_box_add(win);
|
||||||
|
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
|
elm_icon_file_set(ic, buf, NULL);
|
||||||
|
elm_icon_scale_set(ic, 0, 0);
|
||||||
|
evas_object_size_hint_align_set(ic, 0.5, 0.5);
|
||||||
|
elm_box_pack_end(bx, ic);
|
||||||
|
evas_object_show(ic);
|
||||||
|
|
||||||
|
ic = elm_icon_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
|
elm_icon_file_set(ic, buf, NULL);
|
||||||
|
elm_icon_scale_set(ic, 0, 0);
|
||||||
|
evas_object_size_hint_align_set(ic, 0.5, 0.0);
|
||||||
|
elm_box_pack_end(bx, ic);
|
||||||
|
evas_object_show(ic);
|
||||||
|
|
||||||
|
elm_list_item_append(li, "are", bx, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
elm_list_item_append(li, "you", NULL, NULL, NULL, NULL);
|
||||||
|
it3 = elm_list_item_append(li, "doing", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "out", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "there", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "today", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "?", NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
it4 = elm_list_item_append(li, "And", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "here", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "we", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "are", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "done", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "with", NULL, NULL, NULL, NULL);
|
||||||
|
elm_list_item_append(li, "items.", NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
elm_list_go(li);
|
||||||
|
|
||||||
|
evas_object_show(li);
|
||||||
|
|
||||||
|
tb2 = elm_table_add(win);
|
||||||
|
evas_object_size_hint_weight_set(tb2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
elm_win_resize_object_add(win, tb2);
|
||||||
|
|
||||||
|
bt = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt, "Hello");
|
||||||
|
evas_object_smart_callback_add(bt, "clicked", my_show_it, it1);
|
||||||
|
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(bt, 0.5, 0.9);
|
||||||
|
elm_table_pack(tb2, bt, 0, 0, 1, 1);
|
||||||
|
evas_object_show(bt);
|
||||||
|
|
||||||
|
bt = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt, "How");
|
||||||
|
evas_object_smart_callback_add(bt, "clicked", my_show_it, it2);
|
||||||
|
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(bt, 0.5, 0.9);
|
||||||
|
elm_table_pack(tb2, bt, 1, 0, 1, 1);
|
||||||
|
evas_object_show(bt);
|
||||||
|
|
||||||
|
bt = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt, "doing");
|
||||||
|
evas_object_smart_callback_add(bt, "clicked", my_show_it, it3);
|
||||||
|
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(bt, 0.5, 0.9);
|
||||||
|
elm_table_pack(tb2, bt, 2, 0, 1, 1);
|
||||||
|
evas_object_show(bt);
|
||||||
|
|
||||||
|
bt = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt, "And");
|
||||||
|
evas_object_smart_callback_add(bt, "clicked", my_show_it, it4);
|
||||||
|
evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(bt, 0.5, 0.9);
|
||||||
|
elm_table_pack(tb2, bt, 3, 0, 1, 1);
|
||||||
|
evas_object_show(bt);
|
||||||
|
|
||||||
|
evas_object_show(tb2);
|
||||||
|
|
||||||
|
evas_object_resize(win, 320, 300);
|
||||||
|
evas_object_show(win);
|
||||||
|
}
|
||||||
|
|
||||||
/***********/
|
/***********/
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -190,7 +317,7 @@ test_list2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
li = elm_list_add(win);
|
li = elm_list_add(win);
|
||||||
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(li, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_list_horizontal_mode_set(li, ELM_LIST_LIMIT);
|
elm_list_mode_set(li, ELM_LIST_LIMIT);
|
||||||
// elm_list_multi_select_set(li, 1);
|
// elm_list_multi_select_set(li, 1);
|
||||||
|
|
||||||
ic = elm_icon_add(win);
|
ic = elm_icon_add(win);
|
||||||
|
@ -307,7 +434,7 @@ test_list3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
li = elm_list_add(win);
|
li = elm_list_add(win);
|
||||||
elm_win_resize_object_add(win, li);
|
elm_win_resize_object_add(win, li);
|
||||||
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_list_horizontal_mode_set(li, ELM_LIST_COMPRESS);
|
elm_list_mode_set(li, ELM_LIST_COMPRESS);
|
||||||
|
|
||||||
ic = elm_icon_add(win);
|
ic = elm_icon_add(win);
|
||||||
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
|
@ -469,7 +596,7 @@ test_list4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
|
|
||||||
li = elm_list_add(win);
|
li = elm_list_add(win);
|
||||||
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_list_horizontal_mode_set(li, ELM_LIST_COMPRESS);
|
elm_list_mode_set(li, ELM_LIST_COMPRESS);
|
||||||
evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);
|
evas_object_smart_callback_add(li, "swipe", test_list4_swipe, &info);
|
||||||
elm_pager_content_push(pager, li);
|
elm_pager_content_push(pager, li);
|
||||||
|
|
||||||
|
@ -585,7 +712,7 @@ test_list5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
|
||||||
|
|
||||||
li = elm_list_add(win);
|
li = elm_list_add(win);
|
||||||
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(li, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_list_horizontal_mode_set(li, ELM_LIST_COMPRESS);
|
elm_list_mode_set(li, ELM_LIST_COMPRESS);
|
||||||
evas_object_smart_callback_add(li, "swipe", test_list5_swipe, NULL);
|
evas_object_smart_callback_add(li, "swipe", test_list5_swipe, NULL);
|
||||||
elm_win_resize_object_add(win, li);
|
elm_win_resize_object_add(win, li);
|
||||||
evas_object_show(li);
|
evas_object_show(li);
|
||||||
|
|
|
@ -6,7 +6,7 @@ typedef struct _Elm_Params_List
|
||||||
{
|
{
|
||||||
const char *policy_h;
|
const char *policy_h;
|
||||||
const char *policy_v;
|
const char *policy_v;
|
||||||
const char *horizontal_mode;
|
const char *mode;
|
||||||
Eina_Bool multi : 1;
|
Eina_Bool multi : 1;
|
||||||
Eina_Bool multi_exists : 1;
|
Eina_Bool multi_exists : 1;
|
||||||
Eina_Bool always_select : 1;
|
Eina_Bool always_select : 1;
|
||||||
|
@ -20,8 +20,7 @@ typedef struct _Elm_Params_List
|
||||||
return i
|
return i
|
||||||
|
|
||||||
static const char *scroller_policy_choices[] = {"auto", "on", "off", NULL};
|
static const char *scroller_policy_choices[] = {"auto", "on", "off", NULL};
|
||||||
static const char *list_horizontal_mode_choices[] = {"compress", "scroll",
|
static const char *list_mode_choices[] = {"compress", "scroll", "limit", NULL};
|
||||||
"limit", NULL};
|
|
||||||
|
|
||||||
static Elm_Scroller_Policy
|
static Elm_Scroller_Policy
|
||||||
_scroller_policy_choices_setting_get(const char *policy_str)
|
_scroller_policy_choices_setting_get(const char *policy_str)
|
||||||
|
@ -33,11 +32,11 @@ _scroller_policy_choices_setting_get(const char *policy_str)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Elm_List_Mode
|
static Elm_List_Mode
|
||||||
_list_horizontal_mode_setting_get(const char *horizontal_mode_str)
|
_list_mode_setting_get(const char *mode_str)
|
||||||
{
|
{
|
||||||
assert(sizeof(list_horizontal_mode_choices)/
|
assert(sizeof(list_mode_choices)/sizeof(list_mode_choices[0]) ==
|
||||||
sizeof(list_horizontal_mode_choices[0]) == ELM_LIST_LAST + 1);
|
ELM_LIST_LAST + 1);
|
||||||
CHOICE_GET(list_horizontal_mode_choices, horizontal_mode_str);
|
CHOICE_GET(list_mode_choices, mode_str);
|
||||||
return ELM_LIST_LAST;
|
return ELM_LIST_LAST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,13 +51,12 @@ external_list_state_set(void *data __UNUSED__, Evas_Object *obj, const void *fro
|
||||||
else if (from_params) p = from_params;
|
else if (from_params) p = from_params;
|
||||||
else return;
|
else return;
|
||||||
|
|
||||||
if (p->horizontal_mode)
|
if (p->mode)
|
||||||
{
|
{
|
||||||
Elm_List_Mode set = _list_horizontal_mode_setting_get(
|
Elm_List_Mode set = _list_mode_setting_get(p->mode);
|
||||||
p->horizontal_mode);
|
|
||||||
|
|
||||||
if (set != ELM_LIST_LAST)
|
if (set != ELM_LIST_LAST)
|
||||||
elm_list_horizontal_mode_set(obj, set);
|
elm_list_mode_set(obj, set);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((p->policy_h) && (p->policy_v))
|
if ((p->policy_h) && (p->policy_v))
|
||||||
|
@ -95,9 +93,9 @@ external_list_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Exte
|
||||||
{
|
{
|
||||||
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
|
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
|
||||||
{
|
{
|
||||||
Elm_List_Mode set = _list_horizontal_mode_setting_get(param->s);
|
Elm_List_Mode set = _list_mode_setting_get(param->s);
|
||||||
if (set == ELM_LIST_LAST) return EINA_FALSE;
|
if (set == ELM_LIST_LAST) return EINA_FALSE;
|
||||||
elm_list_horizontal_mode_set(obj, set);
|
elm_list_mode_set(obj, set);
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,16 +187,16 @@ external_list_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_Exte
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!strcmp(param->name, "horizontal mode"))
|
else if (!strcmp(param->name, "list mode"))
|
||||||
{
|
{
|
||||||
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
|
if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
|
||||||
{
|
{
|
||||||
Elm_List_Mode m = elm_list_horizontal_mode_get(obj);
|
Elm_List_Mode m = elm_list_mode_get(obj);
|
||||||
|
|
||||||
if (m == ELM_LIST_LAST)
|
if (m == ELM_LIST_LAST)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
||||||
param->s = list_horizontal_mode_choices[m];
|
param->s = list_mode_choices[m];
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -236,8 +234,8 @@ external_list_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, c
|
||||||
mem->policy_h = eina_stringshare_add(param->s);
|
mem->policy_h = eina_stringshare_add(param->s);
|
||||||
else if (!strcmp(param->name, "scroll vertical"))
|
else if (!strcmp(param->name, "scroll vertical"))
|
||||||
mem->policy_v = eina_stringshare_add(param->s);
|
mem->policy_v = eina_stringshare_add(param->s);
|
||||||
else if (!strcmp(param->name, "horizontal mode"))
|
else if (!strcmp(param->name, "list mode"))
|
||||||
mem->horizontal_mode = eina_stringshare_add(param->s);
|
mem->mode = eina_stringshare_add(param->s);
|
||||||
}
|
}
|
||||||
return mem;
|
return mem;
|
||||||
}
|
}
|
||||||
|
@ -254,8 +252,8 @@ external_list_params_free(void *params)
|
||||||
{
|
{
|
||||||
Elm_Params_List *mem = params;
|
Elm_Params_List *mem = params;
|
||||||
|
|
||||||
if (mem->horizontal_mode)
|
if (mem->mode)
|
||||||
eina_stringshare_del(mem->horizontal_mode);
|
eina_stringshare_del(mem->mode);
|
||||||
if (mem->policy_h)
|
if (mem->policy_h)
|
||||||
eina_stringshare_del(mem->policy_h);
|
eina_stringshare_del(mem->policy_h);
|
||||||
if (mem->policy_v)
|
if (mem->policy_v)
|
||||||
|
@ -265,8 +263,8 @@ external_list_params_free(void *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Edje_External_Param_Info external_list_params[] = {
|
static Edje_External_Param_Info external_list_params[] = {
|
||||||
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll",
|
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("list mode", "scroll",
|
||||||
list_horizontal_mode_choices),
|
list_mode_choices),
|
||||||
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("scroll horizontal", "auto",
|
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("scroll horizontal", "auto",
|
||||||
scroller_policy_choices),
|
scroller_policy_choices),
|
||||||
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("scroll vertical", "auto",
|
EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("scroll vertical", "auto",
|
||||||
|
|
|
@ -1252,6 +1252,7 @@ extern "C" {
|
||||||
ELM_LIST_COMPRESS = 0,
|
ELM_LIST_COMPRESS = 0,
|
||||||
ELM_LIST_SCROLL,
|
ELM_LIST_SCROLL,
|
||||||
ELM_LIST_LIMIT,
|
ELM_LIST_LIMIT,
|
||||||
|
ELM_LIST_EXPAND,
|
||||||
ELM_LIST_LAST
|
ELM_LIST_LAST
|
||||||
} Elm_List_Mode;
|
} Elm_List_Mode;
|
||||||
typedef struct _Elm_List_Item Elm_List_Item; /**< Item of Elm_List. Sub-type of Elm_Widget_Item */
|
typedef struct _Elm_List_Item Elm_List_Item; /**< Item of Elm_List. Sub-type of Elm_Widget_Item */
|
||||||
|
@ -1264,9 +1265,11 @@ extern "C" {
|
||||||
EAPI void elm_list_clear(Evas_Object *obj);
|
EAPI void elm_list_clear(Evas_Object *obj);
|
||||||
EAPI void elm_list_go(Evas_Object *obj);
|
EAPI void elm_list_go(Evas_Object *obj);
|
||||||
EAPI void elm_list_multi_select_set(Evas_Object *obj, Eina_Bool multi);
|
EAPI void elm_list_multi_select_set(Evas_Object *obj, Eina_Bool multi);
|
||||||
EAPI Eina_Bool elm_list_multi_select_get(const Evas_Object *obj);
|
EAPI Eina_Bool elm_list_multi_select_get(const Evas_Object *obj);
|
||||||
EAPI void elm_list_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode);
|
EAPI void elm_list_mode_set(Evas_Object *obj, Elm_List_Mode mode);
|
||||||
EAPI Elm_List_Mode elm_list_horizontal_mode_get(const Evas_Object *obj);
|
EAPI Elm_List_Mode elm_list_mode_get(const Evas_Object *obj);
|
||||||
|
EAPI void elm_list_horizontal_set(Evas_Object *obj, Eina_Bool horizontal);
|
||||||
|
EAPI Eina_Bool elm_list_horizontal_get(Evas_Object *obj);
|
||||||
EAPI void elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
|
EAPI void elm_list_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select);
|
||||||
EAPI Eina_Bool elm_list_always_select_mode_get(const Evas_Object *obj);
|
EAPI Eina_Bool elm_list_always_select_mode_get(const Evas_Object *obj);
|
||||||
EAPI const Eina_List *elm_list_items_get(const Evas_Object *obj);
|
EAPI const Eina_List *elm_list_items_get(const Evas_Object *obj);
|
||||||
|
|
|
@ -18,6 +18,7 @@ struct _Widget_Data
|
||||||
Eina_List *items, *selected, *to_delete;
|
Eina_List *items, *selected, *to_delete;
|
||||||
Elm_List_Item *last_selected_item;
|
Elm_List_Item *last_selected_item;
|
||||||
Elm_List_Mode mode;
|
Elm_List_Mode mode;
|
||||||
|
Elm_List_Mode h_mode;
|
||||||
Evas_Coord minw[2], minh[2];
|
Evas_Coord minw[2], minh[2];
|
||||||
Eina_Bool scr_minw : 1;
|
Eina_Bool scr_minw : 1;
|
||||||
Eina_Bool scr_minh : 1;
|
Eina_Bool scr_minh : 1;
|
||||||
|
@ -75,18 +76,16 @@ static Eina_Bool _item_single_select_down(Widget_Data *wd);
|
||||||
static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
|
static Eina_Bool _event_hook(Evas_Object *obj, Evas_Object *src,
|
||||||
Evas_Callback_Type type, void *event_info);
|
Evas_Callback_Type type, void *event_info);
|
||||||
|
|
||||||
#define ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, ...) \
|
#define ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, ...) \
|
||||||
if (!it) \
|
if (!it) \
|
||||||
{ \
|
{ \
|
||||||
fprintf(stderr, "ERROR: %s:%d:%s() "#it" is NULL.\n", \
|
ERR("ERROR: "#it" is NULL.\n"); \
|
||||||
__FILE__, __LINE__, __FUNCTION__); \
|
return __VA_ARGS__; \
|
||||||
return __VA_ARGS__; \
|
} \
|
||||||
} \
|
else if (it->deleted) \
|
||||||
else if (it->deleted) \
|
{ \
|
||||||
{ \
|
ERR("ERROR: "#it" has been DELETED.\n"); \
|
||||||
fprintf(stderr, "ERROR: %s:%d:%s() "#it" has been DELETED.\n",\
|
return __VA_ARGS__; \
|
||||||
__FILE__, __LINE__, __FUNCTION__); \
|
|
||||||
return __VA_ARGS__; \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
@ -144,6 +143,7 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
|
||||||
elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
|
elm_smart_scroller_page_size_get(wd->scr, &page_x, &page_y);
|
||||||
elm_smart_scroller_child_viewport_size_get(wd->scr, &v_w, &v_h);
|
elm_smart_scroller_child_viewport_size_get(wd->scr, &v_w, &v_h);
|
||||||
|
|
||||||
|
/* TODO: fix logic for horizontal mode */
|
||||||
if (!strcmp(ev->keyname, "Left") || !strcmp(ev->keyname, "KP_Left"))
|
if (!strcmp(ev->keyname, "Left") || !strcmp(ev->keyname, "KP_Left"))
|
||||||
{
|
{
|
||||||
x -= step_x;
|
x -= step_x;
|
||||||
|
@ -312,8 +312,8 @@ _elm_list_walk(Widget_Data *wd)
|
||||||
{
|
{
|
||||||
if (wd->walking < 0)
|
if (wd->walking < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: walking was negative. fixed!\n");
|
ERR("ERROR: walking was negative. fixed!\n");
|
||||||
wd->walking = 0;
|
wd->walking = 0;
|
||||||
}
|
}
|
||||||
wd->walking++;
|
wd->walking++;
|
||||||
}
|
}
|
||||||
|
@ -324,8 +324,8 @@ _elm_list_unwalk(Widget_Data *wd)
|
||||||
wd->walking--;
|
wd->walking--;
|
||||||
if (wd->walking < 0)
|
if (wd->walking < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: walking became negative. fixed!\n");
|
ERR("ERROR: walking became negative. fixed!\n");
|
||||||
wd->walking = 0;
|
wd->walking = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wd->walking)
|
if (wd->walking)
|
||||||
|
@ -351,12 +351,13 @@ _del_hook(Evas_Object *obj)
|
||||||
|
|
||||||
if (!wd) return;
|
if (!wd) return;
|
||||||
if (wd->walking != 0)
|
if (wd->walking != 0)
|
||||||
fprintf(stderr, "ERROR: list deleted while walking.\n");
|
ERR("ERROR: list deleted while walking.\n");
|
||||||
|
|
||||||
_elm_list_walk(wd);
|
_elm_list_walk(wd);
|
||||||
EINA_LIST_FOREACH(wd->items, n, it) elm_widget_item_pre_notify_del(it);
|
EINA_LIST_FOREACH(wd->items, n, it) elm_widget_item_pre_notify_del(it);
|
||||||
_elm_list_unwalk(wd);
|
_elm_list_unwalk(wd);
|
||||||
if (wd->to_delete) fprintf(stderr, "ERROR: leaking nodes!\n");
|
if (wd->to_delete)
|
||||||
|
ERR("ERROR: leaking nodes!\n");
|
||||||
|
|
||||||
EINA_LIST_FREE(wd->items, it) _elm_list_item_free(it);
|
EINA_LIST_FREE(wd->items, it) _elm_list_item_free(it);
|
||||||
eina_list_free(wd->selected);
|
eina_list_free(wd->selected);
|
||||||
|
@ -405,6 +406,13 @@ _sizing_eval(Evas_Object *obj)
|
||||||
&vmw, &vmh);
|
&vmw, &vmh);
|
||||||
if (wd->scr_minw) w = vmw + minw;
|
if (wd->scr_minw) w = vmw + minw;
|
||||||
if (wd->scr_minh) h = vmh + minh;
|
if (wd->scr_minh) h = vmh + minh;
|
||||||
|
|
||||||
|
evas_object_size_hint_max_get(obj, &maxw, &maxh);
|
||||||
|
if (maxw > 0 && w > maxw)
|
||||||
|
w = maxw;
|
||||||
|
if (maxh > 0 && h > maxh)
|
||||||
|
h = maxh;
|
||||||
|
|
||||||
evas_object_size_hint_min_set(obj, w, h);
|
evas_object_size_hint_min_set(obj, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -820,6 +828,39 @@ _item_new(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *e
|
||||||
return it;
|
return it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_elm_list_mode_set_internal(Widget_Data *wd)
|
||||||
|
{
|
||||||
|
if (!wd->scr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (wd->mode == ELM_LIST_LIMIT)
|
||||||
|
{
|
||||||
|
if (!wd->h_mode)
|
||||||
|
{
|
||||||
|
wd->scr_minw = EINA_TRUE;
|
||||||
|
wd->scr_minh = EINA_FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wd->scr_minw = EINA_FALSE;
|
||||||
|
wd->scr_minh = EINA_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (wd->mode == ELM_LIST_EXPAND)
|
||||||
|
{
|
||||||
|
wd->scr_minw = EINA_TRUE;
|
||||||
|
wd->scr_minh = EINA_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wd->scr_minw = EINA_FALSE;
|
||||||
|
wd->scr_minh = EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_sizing_eval(wd->self);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_fix_items(Evas_Object *obj)
|
_fix_items(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
|
@ -830,6 +871,10 @@ _fix_items(Evas_Object *obj)
|
||||||
Evas_Coord mw, mh;
|
Evas_Coord mw, mh;
|
||||||
int i, redo = 0;
|
int i, redo = 0;
|
||||||
const char *style = elm_widget_style_get(obj);
|
const char *style = elm_widget_style_get(obj);
|
||||||
|
const char *it_plain = wd->h_mode ? "h_item" : "item";
|
||||||
|
const char *it_odd = wd->h_mode ? "h_item_odd" : "item_odd";
|
||||||
|
const char *it_compress = wd->h_mode ? "h_item_compress" : "item_compress";
|
||||||
|
const char *it_compress_odd = wd->h_mode ? "h_item_compress_odd" : "item_compress_odd";
|
||||||
|
|
||||||
if (!wd) return;
|
if (!wd) return;
|
||||||
if (wd->walking)
|
if (wd->walking)
|
||||||
|
@ -856,6 +901,7 @@ _fix_items(Evas_Object *obj)
|
||||||
if (mh > minh[1]) minh[1] = mh;
|
if (mh > minh[1]) minh[1] = mh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((minw[0] != wd->minw[0]) || (minw[1] != wd->minw[1]) ||
|
if ((minw[0] != wd->minw[0]) || (minw[1] != wd->minw[1]) ||
|
||||||
(minw[0] != wd->minh[0]) || (minh[1] != wd->minh[1]))
|
(minw[0] != wd->minh[0]) || (minh[1] != wd->minh[1]))
|
||||||
{
|
{
|
||||||
|
@ -868,115 +914,113 @@ _fix_items(Evas_Object *obj)
|
||||||
i = 0;
|
i = 0;
|
||||||
EINA_LIST_FOREACH(wd->items, l, it)
|
EINA_LIST_FOREACH(wd->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->deleted) continue;
|
if (it->deleted)
|
||||||
it->even = i & 0x1;
|
continue;
|
||||||
if ((it->even != it->is_even) || (!it->fixed) || (redo))
|
|
||||||
{
|
|
||||||
const char *stacking;
|
|
||||||
|
|
||||||
if (it->is_separator)
|
it->even = i & 0x1;
|
||||||
_elm_theme_object_set(obj, it->base.view, "list", "separator", style);
|
if ((it->even != it->is_even) || (!it->fixed) || (redo))
|
||||||
else if (wd->mode == ELM_LIST_COMPRESS)
|
{
|
||||||
{
|
const char *stacking;
|
||||||
if (it->even)
|
|
||||||
_elm_theme_object_set(obj, it->base.view, "list", "item_compress", style);
|
|
||||||
else
|
|
||||||
_elm_theme_object_set(obj, it->base.view, "list", "item_compress_odd", style);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (it->even)
|
|
||||||
_elm_theme_object_set(obj, it->base.view, "list", "item", style);
|
|
||||||
else
|
|
||||||
_elm_theme_object_set(obj, it->base.view, "list", "item_odd", style);
|
|
||||||
}
|
|
||||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
|
||||||
if (stacking)
|
|
||||||
{
|
|
||||||
if (!strcmp(stacking, "below"))
|
|
||||||
evas_object_lower(it->base.view);
|
|
||||||
else if (!strcmp(stacking, "above"))
|
|
||||||
evas_object_raise(it->base.view);
|
|
||||||
}
|
|
||||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
|
||||||
if ((!it->icon) && (minh[0] > 0))
|
|
||||||
{
|
|
||||||
it->icon = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
|
||||||
evas_object_color_set(it->icon, 0, 0, 0, 0);
|
|
||||||
it->dummy_icon = EINA_TRUE;
|
|
||||||
}
|
|
||||||
if ((!it->end) && (minh[1] > 0))
|
|
||||||
{
|
|
||||||
it->end = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
|
||||||
evas_object_color_set(it->end, 0, 0, 0, 0);
|
|
||||||
it->dummy_end = EINA_TRUE;
|
|
||||||
}
|
|
||||||
if (it->icon)
|
|
||||||
{
|
|
||||||
evas_object_size_hint_min_set(it->icon, minw[0], minh[0]);
|
|
||||||
evas_object_size_hint_max_set(it->icon, 99999, 99999);
|
|
||||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
|
||||||
}
|
|
||||||
if (it->end)
|
|
||||||
{
|
|
||||||
evas_object_size_hint_min_set(it->end, minw[1], minh[1]);
|
|
||||||
evas_object_size_hint_max_set(it->end, 99999, 99999);
|
|
||||||
edje_object_part_swallow(it->base.view, "elm.swallow.end", it->end);
|
|
||||||
}
|
|
||||||
if (!it->fixed)
|
|
||||||
{
|
|
||||||
// this may call up user and it may modify the list item
|
|
||||||
// but we're safe as we're flagged as walking.
|
|
||||||
// just don't process further
|
|
||||||
edje_object_message_signal_process(it->base.view);
|
|
||||||
if (it->deleted)
|
|
||||||
continue;
|
|
||||||
mw = mh = -1;
|
|
||||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
|
||||||
edje_object_size_min_restricted_calc(it->base.view, &mw, &mh, mw, mh);
|
|
||||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
|
||||||
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
|
||||||
evas_object_show(it->base.view);
|
|
||||||
}
|
|
||||||
if ((it->selected) || (it->hilighted))
|
|
||||||
{
|
|
||||||
const char *selectraise;
|
|
||||||
|
|
||||||
// this may call up user and it may modify the list item
|
/* FIXME: separators' themes seem to be b0rked */
|
||||||
// but we're safe as we're flagged as walking.
|
if (it->is_separator)
|
||||||
// just don't process further
|
_elm_theme_object_set(obj, it->base.view, "separator",
|
||||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
wd->h_mode ? "horizontal" : "vertical",
|
||||||
if (it->deleted)
|
style);
|
||||||
continue;
|
else if (wd->mode == ELM_LIST_COMPRESS)
|
||||||
|
{
|
||||||
|
if (it->even)
|
||||||
|
_elm_theme_object_set(obj, it->base.view, "list",
|
||||||
|
it_compress, style);
|
||||||
|
else
|
||||||
|
_elm_theme_object_set(obj, it->base.view, "list",
|
||||||
|
it_compress_odd, style);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (it->even)
|
||||||
|
_elm_theme_object_set(obj, it->base.view, "list", it_plain,
|
||||||
|
style);
|
||||||
|
else
|
||||||
|
_elm_theme_object_set(obj, it->base.view, "list", it_odd,
|
||||||
|
style);
|
||||||
|
}
|
||||||
|
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||||
|
if (stacking)
|
||||||
|
{
|
||||||
|
if (!strcmp(stacking, "below"))
|
||||||
|
evas_object_lower(it->base.view);
|
||||||
|
else if (!strcmp(stacking, "above"))
|
||||||
|
evas_object_raise(it->base.view);
|
||||||
|
}
|
||||||
|
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||||
|
|
||||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
if ((!it->icon) && (minh[0] > 0))
|
||||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
{
|
||||||
evas_object_raise(it->base.view);
|
it->icon = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
||||||
}
|
evas_object_color_set(it->icon, 0, 0, 0, 0);
|
||||||
it->fixed = EINA_TRUE;
|
it->dummy_icon = EINA_TRUE;
|
||||||
it->is_even = it->even;
|
}
|
||||||
}
|
if ((!it->end) && (minh[1] > 0))
|
||||||
i++;
|
{
|
||||||
|
it->end = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
||||||
|
evas_object_color_set(it->end, 0, 0, 0, 0);
|
||||||
|
it->dummy_end = EINA_TRUE;
|
||||||
|
}
|
||||||
|
if (it->icon)
|
||||||
|
{
|
||||||
|
evas_object_size_hint_min_set(it->icon, minw[0], minh[0]);
|
||||||
|
evas_object_size_hint_max_set(it->icon, 99999, 99999);
|
||||||
|
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
||||||
|
}
|
||||||
|
if (it->end)
|
||||||
|
{
|
||||||
|
evas_object_size_hint_min_set(it->end, minw[1], minh[1]);
|
||||||
|
evas_object_size_hint_max_set(it->end, 99999, 99999);
|
||||||
|
edje_object_part_swallow(it->base.view, "elm.swallow.end", it->end);
|
||||||
|
}
|
||||||
|
if (!it->fixed)
|
||||||
|
{
|
||||||
|
// this may call up user and it may modify the list item
|
||||||
|
// but we're safe as we're flagged as walking.
|
||||||
|
// just don't process further
|
||||||
|
edje_object_message_signal_process(it->base.view);
|
||||||
|
if (it->deleted)
|
||||||
|
continue;
|
||||||
|
mw = mh = -1;
|
||||||
|
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||||
|
edje_object_size_min_restricted_calc(it->base.view, &mw, &mh, mw, mh);
|
||||||
|
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||||
|
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
||||||
|
evas_object_show(it->base.view);
|
||||||
|
}
|
||||||
|
if ((it->selected) || (it->hilighted))
|
||||||
|
{
|
||||||
|
const char *selectraise;
|
||||||
|
|
||||||
|
// this may call up user and it may modify the list item
|
||||||
|
// but we're safe as we're flagged as walking.
|
||||||
|
// just don't process further
|
||||||
|
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||||
|
if (it->deleted)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||||
|
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||||
|
evas_object_raise(it->base.view);
|
||||||
|
}
|
||||||
|
it->fixed = EINA_TRUE;
|
||||||
|
it->is_even = it->even;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
_elm_list_unwalk(wd);
|
_elm_list_unwalk(wd);
|
||||||
|
|
||||||
mw = 0; mh = 0;
|
mw = 0; mh = 0;
|
||||||
evas_object_size_hint_min_get(wd->box, &mw, &mh);
|
evas_object_size_hint_min_get(wd->box, &mw, &mh);
|
||||||
if (wd->scr)
|
|
||||||
{
|
_elm_list_mode_set_internal(wd);
|
||||||
if (wd->mode == ELM_LIST_LIMIT)
|
|
||||||
{
|
|
||||||
wd->scr_minw = 1;
|
|
||||||
wd->scr_minh = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wd->scr_minw = 0;
|
|
||||||
wd->scr_minh = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_sizing_eval(obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1349,54 +1393,141 @@ elm_list_multi_select_get(const Evas_Object *obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables/disables horizontal mode of the list
|
* Set which mode to use for the list with.
|
||||||
*
|
*
|
||||||
* @param obj The list object
|
* @param obj The list object
|
||||||
* @param mode If true, horizontale mode is enabled
|
* @param mode One of @c ELM_LIST_COMPRESS, @c ELM_LIST_SCROLL or @c
|
||||||
|
* ELM_LIST_LIMIT.
|
||||||
|
*
|
||||||
|
* @note Default value is @c ELM_LIST_SCROLL. At this mode, the list
|
||||||
|
* object won't set any of its size hints to inform how a possible
|
||||||
|
* container should resize it. Then, if it's not created as a "resize
|
||||||
|
* object", it might end with zero dimensions. The list will respect
|
||||||
|
* the container's geometry and, if any of its items won't fit into
|
||||||
|
* its transverse axis, one will be able to scroll it in that
|
||||||
|
* direction. @c ELM_LIST_COMPRESS is the same as the previous, except
|
||||||
|
* that it <b>won't</b> let one scroll in the transverse axis, on
|
||||||
|
* those cases (large items will get cropped). @c ELM_LIST_LIMIT will
|
||||||
|
* actually set a minimun size hint on the list object, so that
|
||||||
|
* containers may respect it (and resize itself to fit the child
|
||||||
|
* properly). More specifically, a minimum size hint will be set for
|
||||||
|
* its transverse axis, so that the <b>largest</b> item in that
|
||||||
|
* direction fits well. @c ELM_LIST_EXPAND, besides setting a minimum
|
||||||
|
* size on the transverse axis, just like the previous mode, will set
|
||||||
|
* a minimum size on the longitudinal axis too, trying to reserve
|
||||||
|
* space to all its children to be visible at a time. The last two
|
||||||
|
* modes can always have effects bounded by setting the list object's
|
||||||
|
* maximum size hints, though.
|
||||||
*
|
*
|
||||||
* @ingroup List
|
* @ingroup List
|
||||||
*/
|
*/
|
||||||
EAPI void
|
EAPI void
|
||||||
elm_list_horizontal_mode_set(Evas_Object *obj, Elm_List_Mode mode)
|
elm_list_mode_set(Evas_Object *obj, Elm_List_Mode mode)
|
||||||
{
|
{
|
||||||
ELM_CHECK_WIDTYPE(obj, widtype);
|
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||||
Widget_Data *wd = elm_widget_data_get(obj);
|
|
||||||
if (!wd) return;
|
Widget_Data *wd;
|
||||||
if (wd->mode == mode) return;
|
|
||||||
|
wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd)
|
||||||
|
return;
|
||||||
|
if (wd->mode == mode)
|
||||||
|
return;
|
||||||
wd->mode = mode;
|
wd->mode = mode;
|
||||||
if (wd->scr)
|
|
||||||
{
|
_elm_list_mode_set_internal(wd);
|
||||||
if (wd->mode == ELM_LIST_LIMIT)
|
|
||||||
{
|
|
||||||
wd->scr_minw = 1;
|
|
||||||
wd->scr_minh = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wd->scr_minw = 0;
|
|
||||||
wd->scr_minh = 0;
|
|
||||||
}
|
|
||||||
_sizing_eval(obj);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the state of horizontal mode of the list
|
* Get the mode the list is at.
|
||||||
*
|
*
|
||||||
* @param obj The list object
|
* @param obj The list object
|
||||||
* @return If true, horizontale mode is enabled
|
* @return mode One of @c ELM_LIST_COMPRESS, @c ELM_LIST_SCROLL or @c
|
||||||
|
* ELM_LIST_LIMIT (@c ELM_LIST_LAST on errors).
|
||||||
|
*
|
||||||
|
* @note see elm_list_mode_set() for more information.
|
||||||
*
|
*
|
||||||
* @ingroup List
|
* @ingroup List
|
||||||
*/
|
*/
|
||||||
EAPI Elm_List_Mode
|
EAPI Elm_List_Mode
|
||||||
elm_list_horizontal_mode_get(const Evas_Object *obj)
|
elm_list_mode_get(const Evas_Object *obj)
|
||||||
{
|
{
|
||||||
ELM_CHECK_WIDTYPE(obj, widtype) ELM_LIST_SCROLL;
|
ELM_CHECK_WIDTYPE(obj, widtype) ELM_LIST_LAST;
|
||||||
Widget_Data *wd = elm_widget_data_get(obj);
|
Widget_Data *wd = elm_widget_data_get(obj);
|
||||||
if (!wd) return ELM_LIST_SCROLL;
|
if (!wd) return ELM_LIST_LAST;
|
||||||
return wd->mode;
|
return wd->mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables/disables horizontal mode of the list.
|
||||||
|
*
|
||||||
|
* @param obj The list object
|
||||||
|
* @param mode If true, horizontale mode is enabled
|
||||||
|
*
|
||||||
|
* @note Bounce options for the list will be reset to default values
|
||||||
|
* with this funcion. Re-call elm_list_bounce_set() once more after
|
||||||
|
* this one, if you had custom values.
|
||||||
|
*
|
||||||
|
* @ingroup List
|
||||||
|
*/
|
||||||
|
EAPI void
|
||||||
|
elm_list_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)
|
||||||
|
{
|
||||||
|
ELM_CHECK_WIDTYPE(obj, widtype);
|
||||||
|
|
||||||
|
Widget_Data *wd;
|
||||||
|
|
||||||
|
wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (wd->h_mode == horizontal)
|
||||||
|
return;
|
||||||
|
|
||||||
|
wd->h_mode = horizontal;
|
||||||
|
elm_box_horizontal_set(wd->box, horizontal);
|
||||||
|
|
||||||
|
if (horizontal)
|
||||||
|
{
|
||||||
|
evas_object_size_hint_weight_set(wd->box, 0.0, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(wd->box, 0.0, EVAS_HINT_FILL);
|
||||||
|
elm_smart_scroller_bounce_allow_set(wd->scr, EINA_TRUE, EINA_FALSE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evas_object_size_hint_weight_set(wd->box, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(wd->box, EVAS_HINT_FILL, 0.0);
|
||||||
|
elm_smart_scroller_bounce_allow_set(wd->scr, EINA_FALSE, EINA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
_elm_list_mode_set_internal(wd);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve whether horizontal mode is enabled for a list.
|
||||||
|
*
|
||||||
|
* @param obj The list object
|
||||||
|
* @return @c EINA_TRUE, if horizontal mode is enabled and @c
|
||||||
|
* EINA_FALSE, otherwise.
|
||||||
|
*
|
||||||
|
* @note see elm_list_horizontal_set() for more information.
|
||||||
|
*
|
||||||
|
* @ingroup List
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool
|
||||||
|
elm_list_horizontal_get(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
|
||||||
|
|
||||||
|
Widget_Data *wd;
|
||||||
|
|
||||||
|
wd = elm_widget_data_get(obj);
|
||||||
|
if (!wd)
|
||||||
|
return EINA_FALSE;
|
||||||
|
|
||||||
|
return wd->h_mode;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables/disables the state of always_select, meaning that
|
* Enables/disables the state of always_select, meaning that
|
||||||
* an item will always be selected.
|
* an item will always be selected.
|
||||||
|
|
Loading…
Reference in New Issue