Add right orientation to elm panel widget

And create a new test for panel, a bit more complex, that should
be extended to show panels with all the 4 orientations, when they're
implemented.



SVN revision: 49202
This commit is contained in:
Bruno Dilly 2010-05-26 03:08:10 +00:00
parent 7d57c9c432
commit 46762b882e
4 changed files with 396 additions and 2 deletions

View File

@ -23201,6 +23201,298 @@ collections {
}
}
group {
name: "elm/panel/base/right";
images
{
image: "bt_base1.png" COMP;
image: "bt_hilight.png" COMP;
image: "bt_shine.png" COMP;
image: "bt_glow.png" COMP;
image: "bt_dis_base.png" COMP;
image: "icon_arrow_left.png" COMP;
image: "icon_arrow_right.png" COMP;
}
parts
{
part
{
name: "bg";
type: RECT;
mouse_events: 0;
description
{
state: "default" 0.0;
color: 255 255 255 0;
rel1.relative: 1 0;
rel2.offset: -31 0;
}
description
{
state: "visible" 0.0;
inherit: "default" 0.0;
rel1.relative: 0 0;
}
}
part
{
name: "base";
type: IMAGE;
mouse_events: 0;
description
{
state: "default" 0.0;
rel1
{
offset: 20 0;
to_x: "bg";
}
rel2.offset: -1 -1;
image
{
normal: "bt_dis_base.png";
border: 4 4 4 4;
}
}
}
part
{
name: "clipper";
type: RECT;
mouse_events: 0;
description
{
state: "default" 0.0;
rel1
{
offset: 4 4;
to: "base";
}
rel2
{
offset: -5 -5;
to: "base";
}
}
}
part
{
name: "elm.swallow.content";
type: SWALLOW;
clip_to: "clipper";
description
{
state: "default" 0.0;
rel1.to: "clipper";
rel2.to: "clipper";
}
}
part
{
name: "btn";
type: IMAGE;
mouse_events: 1;
description
{
state: "default" 0.0;
max: 32 48;
fixed: 1 1;
align: 1 0.5;
rel1
{
to_x: "bg";
}
rel2
{
offset: 2 0;
relative: 0.0 1;
to_x: "base";
}
image
{
normal: "bt_base1.png";
border: 5 0 4 12;
}
fill.smooth: 0;
}
description
{
state: "clicked" 0.0;
inherit: "default" 0.0;
}
}
part
{
name: "btn_over";
type: IMAGE;
mouse_events: 0;
description
{
state: "default" 0.0;
rel1.to: "btn";
rel2
{
relative: 1.0 0.5;
to: "btn";
}
image
{
normal: "bt_hilight.png";
border: 7 0 7 0;
}
}
}
part
{
name: "btn_over2";
type: IMAGE;
mouse_events: 1;
repeat_events: 1;
ignore_flags: ON_HOLD;
description
{
state: "default" 0.0;
rel1.to: "btn";
rel2.to: "btn";
image
{
normal: "bt_shine.png";
border: 7 0 7 7;
}
}
}
part
{
name: "btn_over3";
type: IMAGE;
mouse_events: 1;
repeat_events: 1;
description
{
state: "default" 0.0;
color: 255 255 255 0;
rel1.to: "btn";
rel2.to: "btn";
image
{
normal: "bt_glow.png";
border: 12 12 12 12;
}
fill.smooth: 0;
}
description
{
state: "clicked" 0.0;
inherit: "default" 0.0;
visible: 1;
color: 255 255 255 255;
}
}
part
{
name: "btn_icon";
type: IMAGE;
repeat_events: 1;
description
{
state: "default" 0.0;
rel1.to: "btn";
rel2.to: "btn";
align: 0.5 0.5;
min: 16 16;
max: 16 16;
image.normal: "icon_arrow_left.png";
}
description
{
state: "visible" 0.0;
inherit: "default" 0.0;
image.normal: "icon_arrow_right.png";
}
}
}
programs
{
program
{
name: "show";
signal: "elm,action,show";
source: "elm";
action: STATE_SET "visible" 0.0;
target: "bg";
target: "btn_icon";
transition: LINEAR 0.5;
}
program
{
name: "show2";
signal: "show";
action: STATE_SET "default" 0.0;
target: "bg";
target: "btn_icon";
after: "show3";
}
program
{
name: "show3";
action: STATE_SET "visible" 0.0;
target: "bg";
target: "btn_icon";
transition: LINEAR 0.5;
}
program
{
name: "hide";
signal: "elm,action,hide";
source: "elm";
action: STATE_SET "default" 0.0;
target: "bg";
target: "btn_icon";
transition: LINEAR 0.5;
}
program
{
name: "btn_click";
signal: "mouse,down,1";
source: "btn_over2";
action: STATE_SET "clicked" 0.0;
target: "btn";
}
program
{
name: "btn_unclick";
signal: "mouse,up,1";
source: "btn_over2";
action: STATE_SET "default" 0.0;
target: "btn";
}
program
{
name: "btn_click2";
signal: "mouse,down,1";
source: "btn_over3";
action: STATE_SET "clicked" 0.0;
target: "btn_over3";
}
program
{
name: "btn_unclick2";
signal: "mouse,up,1";
source: "btn_over3";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
target: "btn_over3";
}
program
{
name: "btn_unclick3";
signal: "mouse,up,1";
source: "btn_over2";
action: SIGNAL_EMIT "elm,action,panel,toggle" "";
}
}
}
///////////////////////////////////////////////////////////////////////////////
group { name: "elm/conformant/base/default";
parts {

View File

@ -63,6 +63,7 @@ void test_notify(void *data, Evas_Object *obj, void *event_info);
void test_slideshow(void *data, Evas_Object *obj, void *event_info);
void test_menu(void *data, Evas_Object *obj, void *event_info);
void test_panel(void *data, Evas_Object *obj, void *event_info);
void test_panel2(void *data, Evas_Object *obj, void *event_info);
void test_map(void *data, Evas_Object *obj, void *event_info);
void test_weather(void *data, Evas_Object *obj, void *event_info);
void test_flip(void *data, Evas_Object *obj, void *event_info);
@ -258,6 +259,7 @@ my_win_main(void)
ADD_TEST("Slideshow", test_slideshow);
ADD_TEST("Menu", test_menu);
ADD_TEST("Panel", test_panel);
ADD_TEST("Panel 2", test_panel2);
ADD_TEST("Map", test_map);
ADD_TEST("Weather", test_weather);
ADD_TEST("Flip", test_flip);

View File

@ -160,4 +160,102 @@ _dir_has_subs(const char *path)
return result;
}
void
test_panel2(void *data, Evas_Object *obj, void *event_info)
{
Evas_Object *win, *bg, *panel, *bx, *vbx, *toolbar, *ic;
char buf[PATH_MAX];
Evas_Object *list;
win = elm_win_add(NULL, "panel", ELM_WIN_BASIC);
elm_win_title_set(win, "Panel");
elm_win_autodel_set(win, 1);
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);
vbx = elm_box_add(win);
elm_win_resize_object_add(win, vbx);
evas_object_size_hint_weight_set(vbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(vbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(vbx);
bx = elm_box_add(win);
elm_box_horizontal_set(bx, EINA_TRUE);
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(bx);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_LEFT);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panel, 0, EVAS_HINT_FILL);
itc.item_style = "default";
itc.func.label_get = _label_get;
itc.func.icon_get = _icon_get;
itc.func.state_get = _state_get;
itc.func.del = _item_del;
list = elm_genlist_add(win);
evas_object_size_hint_min_set(list, 100, -1);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(list);
elm_panel_content_set(panel, list);
elm_box_pack_end(bx, panel);
evas_object_show(panel);
_fill_list(list);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_RIGHT);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(panel, 1, EVAS_HINT_FILL);
list = elm_genlist_add(win);
evas_object_size_hint_min_set(list, 100, -1);
evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(list);
elm_panel_content_set(panel, list);
elm_box_pack_end(bx, panel);
evas_object_show(panel);
_fill_list(list);
elm_box_pack_end(vbx, bx);
toolbar = elm_toolbar_add(win);
elm_toolbar_homogenous_set(toolbar, 0);
elm_toolbar_scrollable_set(toolbar, 0);
evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_show(toolbar);
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_toolbar_item_add(toolbar, ic, "Hello", NULL, NULL);
panel = elm_panel_add(win);
elm_panel_orient_set(panel, ELM_PANEL_ORIENT_LEFT);
evas_object_size_hint_weight_set(panel, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(panel, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_panel_content_set(panel, toolbar);
elm_box_pack_end(vbx, panel);
evas_object_show(panel);
evas_object_resize(win, 320, 400);
evas_object_show(win);
}
#endif

View File

@ -12,7 +12,7 @@
* ELM_PANEL_ORIENT_BOTTOM
* ELM_PANEL_ORIENT_LEFT
* ELM_PANEL_ORIENT_RIGHT
* NOTE: Only LEFT orientation is implemented.
* NOTE: Only LEFT and RIGHT orientations are implemented.
*
* THIS WIDGET IS UNDER CONSTRUCTION!
*/
@ -187,7 +187,7 @@ elm_panel_add(Evas_Object *parent)
* ELM_PANEL_ORIENT_LEFT
* ELM_PANEL_ORIENT_RIGHT
*
* NOTE: Currently all orientations but LEFT are unimplemented.
* NOTE: Only LEFT and RIGHT orientations are implemented.
*
* @ingroup Panel
*/
@ -205,7 +205,9 @@ elm_panel_orient_set(Evas_Object *obj, Elm_Panel_Orient orient)
break;
case ELM_PANEL_ORIENT_LEFT:
elm_smart_scroller_object_theme_set(obj, wd->scr, "panel", "base", "left");
break;
case ELM_PANEL_ORIENT_RIGHT:
elm_smart_scroller_object_theme_set(obj, wd->scr, "panel", "base", "right");
break;
default:
break;