summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYeongJong Lee <yj34.lee@samsung.com>2018-02-26 19:59:31 +0900
committerJaehyun Cho <jae_hyun.cho@samsung.com>2018-02-26 19:59:31 +0900
commite25bd086c5078f52faf274b56452d05cfaec05ba (patch)
tree069a7b22c25772005b35f114638b7ba576c5511b
parentc422359d2efbfed4e6d4e19434d33e9381e023cc (diff)
downloadefl-e25bd086c5078f52faf274b56452d05cfaec05ba.tar.gz
efl.ui.radio: change signal name for icon/text
Summary: see also 73f8b3b78f0ff92ddfc1c16426bf7c176f10293a Test Plan: 1. elementary_test -to radio 2. check that icon is visible Reviewers: cedric, woohyun, Jaehyun_Cho Reviewed By: Jaehyun_Cho Differential Revision: https://phab.enlightenment.org/D5815
-rw-r--r--data/elementary/themes/edc/efl/radio.edc291
-rw-r--r--src/Makefile_Elementary.am1
-rw-r--r--src/lib/elementary/efl_ui_radio.c104
-rw-r--r--src/lib/elementary/efl_ui_radio_legacy.eo3
-rw-r--r--src/lib/elementary/efl_ui_radio_legacy_part.eo8
5 files changed, 383 insertions, 24 deletions
diff --git a/data/elementary/themes/edc/efl/radio.edc b/data/elementary/themes/edc/efl/radio.edc
index 5c6dc64aa3..8e2ccf3b63 100644
--- a/data/elementary/themes/edc/efl/radio.edc
+++ b/data/elementary/themes/edc/efl/radio.edc
@@ -1,3 +1,292 @@
group { "efl/radio";
- inherit: "elm/radio/base/default";
+ images.image: "inset_shadow_circle_tiny.png" COMP;
+ images.image: "inset_circle_tiny.png" COMP;
+ images.image: "sym_radio_alum.png" COMP;
+#define ICON 1
+#define LABEL 2
+#define MASK 3
+#define DISABLE 4
+ script {
+ public btmode;
+ public eval_mode(m) {
+ new m1 = m & MASK;
+ new d = m & DISABLE;
+ if (m1 == (ICON | LABEL)) {
+ if (!d) {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"sizer.content", "visible", 0.0);
+ set_state(PART:"elm.text", "visible", 0.0);
+ set_state(PART:"inset", "default", 0.0);
+ set_state(PART:"clip", "default", 0.0);
+ set_state(PART:"event", "default", 0.0);
+ } else {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"sizer.content", "visible", 0.0);
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ set_state(PART:"inset", "disabled", 0.0);
+ set_state(PART:"clip", "disabled", 0.0);
+ set_state(PART:"event", "disabled", 0.0);
+ }
+ } else if (m1 == (ICON)) {
+ if (!d) {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"sizer.content", "icononly", 0.0);
+ set_state(PART:"elm.text", "default", 0.0);
+ set_state(PART:"inset", "default", 0.0);
+ set_state(PART:"clip", "default", 0.0);
+ set_state(PART:"event", "default", 0.0);
+ } else {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"sizer.content", "icononly", 0.0);
+ set_state(PART:"elm.text", "disabled", 0.0);
+ set_state(PART:"inset", "disabled", 0.0);
+ set_state(PART:"clip", "disabled", 0.0);
+ set_state(PART:"event", "disabled", 0.0);
+ }
+ } else if (m1 == (LABEL)) {
+ if (!d) {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"sizer.content", "default", 0.0);
+ set_state(PART:"elm.text", "visible", 0.0);
+ set_state(PART:"inset", "default", 0.0);
+ set_state(PART:"clip", "default", 0.0);
+ set_state(PART:"event", "default", 0.0);
+ } else {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"sizer.content", "default", 0.0);
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ set_state(PART:"inset", "disabled", 0.0);
+ set_state(PART:"clip", "disabled", 0.0);
+ set_state(PART:"event", "disabled", 0.0);
+ }
+ } else {
+ if (!d) {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"sizer.content", "default", 0.0);
+ set_state(PART:"elm.text", "default", 0.0);
+ set_state(PART:"inset", "default", 0.0);
+ set_state(PART:"clip", "default", 0.0);
+ set_state(PART:"event", "default", 0.0);
+ } else {
+ set_state(PART:"elm.swallow.content", "default", 0.0);
+ set_state(PART:"sizer.content", "default", 0.0);
+ set_state(PART:"elm.text", "default", 0.0);
+ set_state(PART:"inset", "disabled", 0.0);
+ set_state(PART:"clip", "disabled", 0.0);
+ set_state(PART:"event", "disabled", 0.0);
+ }
+ }
+ }
+ }
+ parts {
+ part { name: "inset"; mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ rel1.offset: 2 2;
+ rel2.relative: 0.0 1.0;
+ rel2.offset: 2 -3;
+ image.normal: "inset_shadow_circle_tiny.png";
+ align: 0.0 0.5;
+ min: 13 13;
+ max: 13 13;
+ fixed: 1 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "inset_circle_tiny.png";
+ }
+ }
+ part { name: "indicator"; mouse_events: 0;
+ scale: 1;
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ rel1.to: "inset";
+ rel2.to: "inset";
+ image.normal: "sym_radio_alum.png";
+ min: 11 11;
+ max: 11 11;
+ visible: 0;
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part { name: "clip"; type: RECT;
+ description { state: "default" 0.0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 255 255 255 64;
+ }
+ }
+ part { name: "elm.swallow.content"; type: SWALLOW;
+ required;
+ scale: 1;
+ clip_to: "clip";
+ description { state: "default" 0.0;
+ fixed: 1 0;
+ visible: 0;
+ align: 0.0 0.5;
+ max: 0 0;
+ rel1.to_x: "inset";
+ rel1.relative: 1.0 0.0;
+ rel1.offset: 1 1;
+ rel2.to_x: "inset";
+ rel2.offset: 1 -2;
+ rel2.relative: 1.0 1.0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ aspect: 1.0 1.0;
+ min: 16 16;
+ }
+ }
+ part { name: "sizer.content"; type: TEXT; mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ visible: 0;
+ text { font: FN; size: 10;
+ min: 0 0;
+ text_class: "radio_text";
+ }
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ text {
+ min: 1 1;
+ ellipsis: -1;
+ text: "M";
+ }
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ rel1.to: "elm.swallow.content";
+ rel2.to: "elm.swallow.content";
+ text {
+ min: 1 1;
+ ellipsis: -1;
+ text: "M";
+ }
+ }
+ }
+ part { name: "elm.text"; type: TEXT; mouse_events: 0;
+ effect: SHADOW BOTTOM;
+ scale: 1;
+ required;
+ description { state: "default" 0.0;
+ rel1.offset: 2 2;
+ rel1.to_x: "elm.swallow.content";
+ rel1.relative: 1.0 0.0;
+ rel2.offset: -3 -3;
+ color: FN_COL_DEFAULT;
+ color_class: "radio_text";
+ text { font: FN; size: 10;
+ min: 0 0;
+ align: 0.0 0.5;
+ text_class: "radio";
+ }
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color_class: "radio_text_disabled";
+ color3: 255 255 255 255;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ text.min: 1 1;
+ text.ellipsis: -1;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color_class: "radio_text_disabled";
+ color3: 255 255 255 255;
+ visible: 1;
+ text.min: 1 1;
+ text.ellipsis: -1;
+ }
+ }
+ part { name: "event"; type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+ }
+ programs {
+ program {
+ signal: "mouse,clicked,1"; source: "event";
+ action: SIGNAL_EMIT "elm,action,radio,toggle" "elm";
+ }
+ program {
+ signal: "elm,state,radio,on"; source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "indicator";
+ }
+ program {
+ signal: "elm,state,radio,off"; source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "indicator";
+ }
+ program {
+ signal: "elm,state,elm.text,set"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m |= LABEL; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ program {
+ signal: "elm,state,elm.text,unset"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m &= ~LABEL; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ program {
+ signal: "elm,state,content,set"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m |= ICON; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ program {
+ signal: "elm,state,content,unset"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m &= ~ICON; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ program {
+ signal: "elm,state,disabled"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m |= DISABLE; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ program {
+ signal: "elm,state,enabled"; source: "elm";
+ script {
+ new m = get_int(btmode);
+ m &= ~DISABLE; set_int(btmode, m);
+ eval_mode(m);
+ }
+ }
+ }
+#undef ICON
+#undef LABEL
+#undef MASK
+#undef DISABLE
}
diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index 2728e7830d..8cdc38478b 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -107,6 +107,7 @@ elm_public_eolian_files = \
elm_public_eolian_files += \
lib/elementary/efl_ui_legacy.eo \
lib/elementary/efl_ui_button_legacy_part.eo \
+ lib/elementary/efl_ui_radio_legacy_part.eo \
lib/elementary/elm_spinner.eo \
lib/elementary/elm_multibuttonentry_item.eo \
lib/elementary/elm_interface_scrollable.eo \
diff --git a/src/lib/elementary/efl_ui_radio.c b/src/lib/elementary/efl_ui_radio.c
index 0a49b3c5fc..5cae7ec113 100644
--- a/src/lib/elementary/efl_ui_radio.c
+++ b/src/lib/elementary/efl_ui_radio.c
@@ -130,24 +130,6 @@ _key_action_activate(Evas_Object *obj, const char *params EINA_UNUSED)
return EINA_TRUE;
}
-/* FIXME: replicated from elm_layout just because radio's icon spot
- * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
- * can changed the theme API */
-static void
-_icon_signal_emit(Evas_Object *obj)
-{
- char buf[64];
- Eo *edje;
-
- edje = elm_widget_resize_object_get(obj);
- if (!edje) return;
- snprintf(buf, sizeof(buf), "elm,state,icon,%s",
- elm_layout_content_get(obj, "icon") ? "visible" : "hidden");
-
- elm_layout_signal_emit(obj, buf, "elm");
- edje_object_message_signal_process(edje);
-}
-
EOLIAN static Efl_Ui_Theme_Apply
_efl_ui_radio_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Radio_Data *sd)
{
@@ -161,11 +143,6 @@ _efl_ui_radio_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Radio_Data *sd)
edje_object_message_signal_process(wd->resize_obj);
- /* FIXME: replicated from elm_layout just because radio's icon
- * spot is elm.swallow.content, not elm.swallow.icon. Fix that
- * whenever we can changed the theme API */
- _icon_signal_emit(obj);
-
elm_layout_sizing_eval(obj);
return int_ret;
@@ -368,6 +345,7 @@ ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
#include "efl_ui_radio.eo.c"
#include "efl_ui_radio_legacy.eo.h"
+#include "efl_ui_radio_legacy_part.eo.h"
#define MY_CLASS_NAME_LEGACY "elm_radio"
/* Legacy APIs */
@@ -386,6 +364,86 @@ _efl_ui_radio_legacy_efl_object_constructor(Eo *obj, void *_pd EINA_UNUSED)
return obj;
}
+/* FIXME: replicated from elm_layout just because radio's icon spot
+ * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
+ * can changed the theme API */
+static void
+_icon_signal_emit(Evas_Object *obj)
+{
+ char buf[63];
+ Eo *edje;
+
+ edje = elm_widget_resize_object_get(obj);
+ if (!edje) return;
+ snprintf(buf, sizeof(buf), "elm,state,icon,%s",
+ elm_layout_content_get(obj, "icon") ? "visible" : "hidden");
+
+ elm_layout_signal_emit(obj, buf, "elm");
+ edje_object_message_signal_process(edje);
+ elm_layout_sizing_eval(obj);
+}
+
+EOLIAN static Efl_Ui_Theme_Apply
+_efl_ui_radio_legacy_efl_ui_widget_theme_apply(Eo *obj, void *_pd EINA_UNUSED)
+{
+ Efl_Ui_Theme_Apply int_ret = EFL_UI_THEME_APPLY_FAILED;
+ int_ret = efl_ui_widget_theme_apply(efl_super(obj, EFL_UI_RADIO_LEGACY_CLASS));
+ if (!int_ret) return EFL_UI_THEME_APPLY_FAILED;
+
+ /* FIXME: replicated from elm_layout just because radio's icon
+ * spot is elm.swallow.content, not elm.swallow.icon. Fix that
+ * whenever we can changed the theme API */
+ _icon_signal_emit(obj);
+
+ return int_ret;
+}
+
+/* FIXME: replicated from elm_layout just because radio's icon spot
+ * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
+ * can changed the theme API */
+EOLIAN static Eina_Bool
+_efl_ui_radio_legacy_efl_ui_widget_widget_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, Evas_Object *sobj)
+{
+ Eina_Bool int_ret = EINA_FALSE;
+
+ int_ret = elm_widget_sub_object_del(efl_super(obj, EFL_UI_RADIO_LEGACY_CLASS), sobj);
+ if (!int_ret) return EINA_FALSE;
+
+ _icon_signal_emit(obj);
+
+ return EINA_TRUE;
+}
+
+/* FIXME: replicated from elm_layout just because radio's icon spot
+ * is elm.swallow.content, not elm.swallow.icon. Fix that whenever we
+ * can changed the theme API */
+static Eina_Bool
+_efl_ui_radio_legacy_content_set(Eo *obj, void *_pd EINA_UNUSED, const char *part, Evas_Object *content)
+{
+ Eina_Bool int_ret = EINA_FALSE;
+
+ int_ret = efl_content_set(efl_part(efl_super(obj, EFL_UI_RADIO_LEGACY_CLASS), part), content);
+ if (!int_ret) return EINA_FALSE;
+
+ _icon_signal_emit(obj);
+
+ return EINA_TRUE;
+}
+
+/* Efl.Part begin */
+
+static Eina_Bool
+_part_is_efl_ui_radio_legacy_part(const Eo *obj EINA_UNUSED, const char *part)
+{
+ return eina_streq(part, "elm.swallow.content");
+}
+
+ELM_PART_OVERRIDE_PARTIAL(efl_ui_radio_legacy, EFL_UI_RADIO_LEGACY, void, _part_is_efl_ui_radio_legacy_part)
+ELM_PART_OVERRIDE_CONTENT_SET(efl_ui_radio_legacy, EFL_UI_RADIO_LEGACY, void)
+#include "efl_ui_radio_legacy_part.eo.c"
+
+/* Efl.Part end */
+
EAPI Evas_Object *
elm_radio_add(Evas_Object *parent)
{
diff --git a/src/lib/elementary/efl_ui_radio_legacy.eo b/src/lib/elementary/efl_ui_radio_legacy.eo
index da18c8a654..664929533b 100644
--- a/src/lib/elementary/efl_ui_radio_legacy.eo
+++ b/src/lib/elementary/efl_ui_radio_legacy.eo
@@ -5,5 +5,8 @@ class Efl.Ui.Radio_Legacy (Efl.Ui.Radio, Efl.Ui.Legacy)
implements {
class.constructor;
Efl.Object.constructor;
+ Efl.Ui.Widget.theme_apply;
+ Efl.Ui.Widget.widget_sub_object_del;
+ Efl.Part.part;
}
}
diff --git a/src/lib/elementary/efl_ui_radio_legacy_part.eo b/src/lib/elementary/efl_ui_radio_legacy_part.eo
new file mode 100644
index 0000000000..a9882a824d
--- /dev/null
+++ b/src/lib/elementary/efl_ui_radio_legacy_part.eo
@@ -0,0 +1,8 @@
+class Efl.Ui.Radio_Legacy.Part (Efl.Ui.Layout.Part_Content)
+{
+ [[Elementary radio internal part class]]
+ data: null;
+ implements {
+ Efl.Content.content { set; }
+ }
+}