efl_ui_popup: apply new theme logic for efl_ui_popup

This commit is contained in:
Sungtaek Hong 2017-11-29 20:21:14 +09:00
parent 3490da0fff
commit 22c5f771be
7 changed files with 291 additions and 249 deletions

View File

@ -1028,6 +1028,7 @@ elementary/themes/edc/efl/multibuttonentry.edc \
elementary/themes/edc/efl/nstate.edc \
elementary/themes/edc/efl/panes.edc \
elementary/themes/edc/efl/photocam.edc \
elementary/themes/edc/efl/popup.edc \
elementary/themes/edc/efl/progress.edc \
elementary/themes/edc/efl/radio.edc \
elementary/themes/edc/efl/scroller.edc \

View File

@ -179,6 +179,7 @@ collections {
#include "edc/efl/slider.edc"
#include "edc/efl/radio.edc"
#include "edc/efl/panes.edc"
#include "edc/efl/popup.edc"
#include "edc/efl/video.edc"
#include "edc/efl/focus.edc"
#include "edc/efl/multibuttonentry.edc"

View File

@ -0,0 +1,238 @@
//Efl.Ui.Popup Themes
group { "efl/popup";
images.image: "rounded_square.png" COMP;
parts {
spacer { "base";
desc { "default";
rel1.offset: 10 10;
rel2.offset: -11 -11;
}
}
image { "bg";
desc { "default";
min: 100 100;
image.border: 15 15 15 15;
image.normal: "rounded_square.png";
}
}
swallow { "elm.swallow.content";
desc { "default";
rel.to: "base";
}
}
}
}
group { "efl/popup.alert";
images.image: "rounded_square.png" COMP;
parts {
image { "bg";
desc { "default";
min: 100 100;
image.border: 15 15 15 15;
image.normal: "rounded_square.png";
}
}
spacer { "base";
desc { "default";
rel.to: "bg";
rel1.offset: 10 10;
rel2.offset: -11 -11;
}
}
rect { "title_bg";
desc { "default";
fixed: 0 1;
min: 0 0;
rel.to: "base";
rel2.relative: 1.0 0.0;
align: 0.5 0.0;
color: 0 0 0 0;
}
desc { "title_visible";
inherit: "default";
min: 0 20;
}
}
textblock { "elm.text.title";
scale;
desc { "default";
fixed: 1 1;
text {
style: "popup_title_style_ellipsis";
}
rel.to: "title_bg";
hid;
}
desc { "title_visible";
inherit: "default";
vis;
}
}
swallow { "buttons";
desc { "default";
fixed: 0 1;
rel.to: "base";
rel1.relative: 0.0 1.0;
align: 0.5 1.0;
min: 0 0;
}
desc { "button_visible";
inherit: "default";
min: 0 30;
}
}
swallow { "elm.swallow.content";
desc { "default";
rel1.to_x: "base";
rel1.to_y: "title_bg";
rel2.to_x: "base";
rel2.to_y: "buttons";
rel1.relative: 0.0 1.0;
rel2.relative: 1.0 0.0;
}
}
}
programs {
program {
signal: "elm,title,show"; source: "elm";
action: STATE_SET "title_visible" 0.0;
target: "title_bg";
target: "elm.text.title";
}
program {
signal: "elm,buttons,show"; source: "elm";
action: STATE_SET "button_visible" 0.0;
target: "buttons";
}
}
}
group { "efl/popup.anchor";
inherit: "efl/popup";
}
group { "efl/popup/backwall";
alias: "efl/popup.alert/backwall";
alias: "efl/popup.anchor/backwall";
parts {
rect { "base";
desc { "default";
color: 0 0 0 64;
}
desc { "show_image";
inherit: "default";
hid;
}
}
swallow { "elm.swallow.image";
desc { "default";
rel.to: "base";
hid;
}
desc { "show_image";
inherit: "default";
vis;
}
}
rect { "block";
desc { "default";
rel.to: "base";
color: 0 0 0 0;
}
}
}
programs {
program {
signal: "elm,state,image,visible"; source: "elm";
action: STATE_SET "show_image" 0.0;
target: "base";
target: "elm.swallow.image";
}
program {
signal: "elm,state,image,hidden"; source: "elm";
action: STATE_SET "default" 0.0;
target: "base";
target: "elm.swallow.image";
}
program {
signal: "mouse,clicked,1"; source: "block";
action: SIGNAL_EMIT "elm,action,clicked" "elm";
}
}
}
group { "efl/popup.alert/button_layout1";
parts {
swallow { "elm.swallow.button1";
}
}
}
group { "efl/popup.alert/button_layout2";
parts {
spacer { "div1";
desc { "default";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
min: 5 5;
}
}
swallow { "elm.swallow.button1";
desc { "default";
rel2.to_x: "div1";
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button2";
desc { "default";
rel1.to_x: "div1";
rel1.relative: 1.0 0.0;
}
}
}
}
group { "efl/popup.alert/button_layout3";
parts {
spacer { "div1";
desc { "default";
rel1.relative: 0.333 0.5;
rel2.relative: 0.333 0.5;
min: 5 5;
}
}
spacer { "div2";
desc { "default";
rel1.relative: 0.666 0.5;
rel2.relative: 0.666 0.5;
min: 5 5;
}
}
swallow { "elm.swallow.button1";
desc { "default";
rel2.to_x: "div1";
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button2";
desc { "default";
rel1.to_x: "div1";
rel2.to_x: "div2";
rel1.relative: 1.0 0.0;
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button3";
desc { "default";
rel1.to_x: "div2";
rel1.relative: 1.0 0.0;
}
}
}
}
group { "efl/popup.alert/button";
inherit: "efl/button";
}

View File

@ -515,232 +515,3 @@ group { name: "elm/popup/base/subpopup";
}
}
}
//Efl.Ui.Popup Themes
group { "elm/popup/base/view";
images.image: "rounded_square.png" COMP;
parts {
spacer { "base";
desc { "default";
rel1.offset: 10 10;
rel2.offset: -11 -11;
}
}
image { "bg";
desc { "default";
min: 100 100;
image.border: 15 15 15 15;
image.normal: "rounded_square.png";
}
}
swallow { "elm.swallow.content";
desc { "default";
rel.to: "base";
}
}
}
}
group { "elm/popup/base/alert";
images.image: "rounded_square.png" COMP;
parts {
image { "bg";
desc { "default";
min: 100 100;
image.border: 15 15 15 15;
image.normal: "rounded_square.png";
}
}
spacer { "base";
desc { "default";
rel.to: "bg";
rel1.offset: 10 10;
rel2.offset: -11 -11;
}
}
rect { "title_bg";
desc { "default";
fixed: 0 1;
min: 0 0;
rel.to: "base";
rel2.relative: 1.0 0.0;
align: 0.5 0.0;
color: 0 0 0 0;
}
desc { "title_visible";
inherit: "default";
min: 0 20;
}
}
textblock { "elm.text.title";
scale;
desc { "default";
fixed: 1 1;
text {
style: "popup_title_style_ellipsis";
}
rel.to: "title_bg";
hid;
}
desc { "title_visible";
inherit: "default";
vis;
}
}
swallow { "buttons";
desc { "default";
fixed: 0 1;
rel.to: "base";
rel1.relative: 0.0 1.0;
align: 0.5 1.0;
min: 0 0;
}
desc { "button_visible";
inherit: "default";
min: 0 30;
}
}
swallow { "elm.swallow.content";
desc { "default";
rel1.to_x: "base";
rel1.to_y: "title_bg";
rel2.to_x: "base";
rel2.to_y: "buttons";
rel1.relative: 0.0 1.0;
rel2.relative: 1.0 0.0;
}
}
}
programs {
program {
signal: "elm,title,show"; source: "elm";
action: STATE_SET "title_visible" 0.0;
target: "title_bg";
target: "elm.text.title";
}
program {
signal: "elm,buttons,show"; source: "elm";
action: STATE_SET "button_visible" 0.0;
target: "buttons";
}
}
}
group { "elm/popup/base/backwall";
parts {
rect { "base";
desc { "default";
color: 0 0 0 64;
}
desc { "show_image";
inherit: "default";
hid;
}
}
swallow { "elm.swallow.image";
desc { "default";
rel.to: "base";
hid;
}
desc { "show_image";
inherit: "default";
vis;
}
}
rect { "block";
desc { "default";
rel.to: "base";
color: 0 0 0 0;
}
}
}
programs {
program {
signal: "elm,state,image,visible"; source: "elm";
action: STATE_SET "show_image" 0.0;
target: "base";
target: "elm.swallow.image";
}
program {
signal: "elm,state,image,hidden"; source: "elm";
action: STATE_SET "default" 0.0;
target: "base";
target: "elm.swallow.image";
}
program {
signal: "mouse,clicked,1"; source: "block";
action: SIGNAL_EMIT "elm,action,clicked" "elm";
}
}
}
group { "elm/popup/base/button1";
parts {
swallow { "elm.swallow.button1";
}
}
}
group { "elm/popup/base/button2";
parts {
spacer { "div1";
desc { "default";
rel1.relative: 0.5 0.5;
rel2.relative: 0.5 0.5;
min: 5 5;
}
}
swallow { "elm.swallow.button1";
desc { "default";
rel2.to_x: "div1";
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button2";
desc { "default";
rel1.to_x: "div1";
rel1.relative: 1.0 0.0;
}
}
}
}
group { "elm/popup/base/button3";
parts {
spacer { "div1";
desc { "default";
rel1.relative: 0.333 0.5;
rel2.relative: 0.333 0.5;
min: 5 5;
}
}
spacer { "div2";
desc { "default";
rel1.relative: 0.666 0.5;
rel2.relative: 0.666 0.5;
min: 5 5;
}
}
swallow { "elm.swallow.button1";
desc { "default";
rel2.to_x: "div1";
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button2";
desc { "default";
rel1.to_x: "div1";
rel2.to_x: "div2";
rel1.relative: 1.0 0.0;
rel2.relative: 0.0 1.0;
}
}
swallow { "elm.swallow.button3";
desc { "default";
rel1.to_x: "div2";
rel1.relative: 1.0 0.0;
}
}
}
}

View File

@ -14,6 +14,8 @@
#define MY_CLASS EFL_UI_POPUP_CLASS
#define MY_CLASS_NAME "Efl.Ui.Popup"
static const char PART_NAME_BACKWALL[] = "backwall";
static void
_backwall_clicked_cb(void *data,
Eo *o EINA_UNUSED,
@ -178,16 +180,22 @@ _efl_ui_popup_efl_object_constructor(Eo *obj, Efl_Ui_Popup_Data *pd)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
if (!elm_widget_theme_klass_get(obj))
elm_widget_theme_klass_set(obj, "popup");
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME);
elm_widget_sub_object_parent_add(obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_layout_theme_set(obj, "popup", "base", "view");
if (!elm_widget_theme_object_set(obj, wd->resize_obj,
elm_widget_theme_klass_get(obj),
elm_widget_theme_element_get(obj),
elm_widget_theme_style_get(obj)))
CRI("Failed to set layout!");
pd->backwall = edje_object_add(evas_object_evas_get(obj));
elm_widget_theme_object_set(obj, pd->backwall, "popup", "base", "backwall");
elm_widget_element_update(obj, pd->backwall, PART_NAME_BACKWALL);
evas_object_smart_member_add(pd->backwall, obj);
evas_object_stack_below(pd->backwall, wd->resize_obj);

View File

@ -12,6 +12,12 @@
#define MY_CLASS EFL_UI_POPUP_ALERT_CLASS
#define MY_CLASS_NAME "Efl.Ui.Popup.Alert"
static const char PART_NAME_BUTTON[] = "button";
static const char PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_COUNT][15] =
{"button_layout1",
"button_layout2",
"button_layout3"};
EOLIAN static void
_efl_ui_popup_alert_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Popup_Alert_Data *pd EINA_UNUSED)
{
@ -127,8 +133,9 @@ _efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popu
efl_del(pd->button[type]);
pd->button[type] = NULL;
}
pd->button[type] = elm_button_add(obj);
elm_object_text_set(pd->button[type], text);
pd->button[type] = efl_add(EFL_UI_BUTTON_CLASS, obj,
elm_widget_element_update(obj, efl_added, PART_NAME_BUTTON),
efl_text_set(efl_added, text));
switch (type)
{
@ -164,8 +171,10 @@ _efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popu
&& pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]
&& pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "popup", "base", "button3");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_3]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_3], "elm.swallow.button3"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
@ -174,8 +183,10 @@ _efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popu
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]
&& pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "popup", "base", "button2");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
@ -183,8 +194,10 @@ _efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popu
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]
&& pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "popup", "base", "button2");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
@ -192,30 +205,38 @@ _efl_ui_popup_alert_button_set(Eo *obj, Efl_Ui_Popup_Alert_Data *pd, Efl_Ui_Popu
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]
&& pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "popup", "base", "button2");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_2]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2], "elm.swallow.button2"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_2]);
}
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "popup", "base", "button1");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_POSITIVE]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
}
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "popup", "base", "button1");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_NEGATIVE]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
}
else if (pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER])
{
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1] = elm_layout_add(obj);
elm_layout_theme_set(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "popup", "base", "button1");
pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]
= efl_add(EFL_UI_LAYOUT_CLASS, obj,
elm_widget_element_update(obj, efl_added,
PART_NAME_BUTTON_LAYOUT[EFL_UI_POPUP_ALERT_BUTTON_1]));
efl_content_set(efl_part(pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1], "elm.swallow.button1"), pd->button[EFL_UI_POPUP_ALERT_BUTTON_USER]);
efl_content_set(efl_part(obj, "buttons"), pd->button_layout[EFL_UI_POPUP_ALERT_BUTTON_1]);
}
@ -230,13 +251,13 @@ _efl_ui_popup_alert_efl_object_constructor(Eo *obj,
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
if (!elm_widget_theme_klass_get(obj))
elm_widget_theme_klass_set(obj, "popup.alert");
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME);
elm_widget_sub_object_parent_add(obj);
elm_layout_theme_set(efl_super(obj, MY_CLASS), "popup", "base", "alert");
return obj;
}

View File

@ -352,6 +352,8 @@ _efl_ui_popup_anchor_efl_object_constructor(Eo *obj,
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
if (!elm_widget_theme_klass_get(obj))
elm_widget_theme_klass_set(obj, "popup.anchor");
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME);