diff options
author | Xavi Artigas <xavierartigas@yahoo.es> | 2018-08-13 07:03:39 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2018-08-13 07:03:39 -0400 |
commit | 26bedebc18c263b8dc2f5407484b771c19f8532f (patch) | |
tree | f687481d39c9d465eeeeb491bd51fe33f55d7822 | |
parent | a8421fc0c00238db476eaabd6115836adf1078d5 (diff) | |
download | efl-26bedebc18c263b8dc2f5407484b771c19f8532f.tar.gz |
elm: bring back elm/uiclock
Summary:
It turns out elm/uiclock (which was removed in 89675c3219) is actually used,
at least by the datetime legacy widget. Removing this widget broke the
datetime_example test.
This commit reverts 89675c3219 and fixes the elm/uiclock part names:
- Part names are prefixed with 'elm.'
- efl_ui_clock.c (which is used for both the new efl and the legacy elm widgets)
now looks for part names with 'efl.' and 'elm.' prefixes, and without any
prefix, for compatibility with older themes.
Fixes T6928
Test Plan: the Datetime elementary_test (and all other clock-related tests) now work.
Reviewers: zmike, jsuya, CHAN, devilhorns, Jaehyun_Cho
Reviewed By: zmike, jsuya, CHAN
Subscribers: #reviewers, Jaehyun, Hermet, cedric, #committers
Tags: #efl
Maniphest Tasks: T6928
Differential Revision: https://phab.enlightenment.org/D6577
-rw-r--r-- | data/elementary/themes/Makefile.am | 1 | ||||
-rw-r--r-- | data/elementary/themes/default.edc | 1 | ||||
-rw-r--r-- | data/elementary/themes/edc/elm/uiclock.edc | 207 | ||||
-rw-r--r-- | src/lib/elementary/efl_ui_clock.c | 60 |
4 files changed, 258 insertions, 11 deletions
diff --git a/data/elementary/themes/Makefile.am b/data/elementary/themes/Makefile.am index e6777477ed..1cf4e6e304 100644 --- a/data/elementary/themes/Makefile.am +++ b/data/elementary/themes/Makefile.am @@ -149,6 +149,7 @@ elementary/themes/edc/elm/textpath.edc \ elementary/themes/edc/elm/thumb.edc \ elementary/themes/edc/elm/toolbar.edc \ elementary/themes/edc/elm/tooltip.edc \ +elementary/themes/edc/elm/uiclock.edc \ elementary/themes/edc/elm/video.edc \ elementary/themes/edc/elm/win.edc \ \ diff --git a/data/elementary/themes/default.edc b/data/elementary/themes/default.edc index b48a26b0b2..40d1920a07 100644 --- a/data/elementary/themes/default.edc +++ b/data/elementary/themes/default.edc @@ -36,6 +36,7 @@ collections { #include "edc/elm/access.edc" #include "edc/elm/photo.edc" #include "edc/elm/focus.edc" +#include "edc/elm/uiclock.edc" #include "edc/elm/player.edc" #include "edc/elm/thumb.edc" #include "edc/elm/pointer.edc" diff --git a/data/elementary/themes/edc/elm/uiclock.edc b/data/elementary/themes/edc/elm/uiclock.edc new file mode 100644 index 0000000000..db444fd215 --- /dev/null +++ b/data/elementary/themes/edc/elm/uiclock.edc @@ -0,0 +1,207 @@ +#define DATETIME_FIELD(_pos) \ + part { \ + name: "elm.field"#_pos; type: SWALLOW; \ + scale: 1; \ + clip_to: "clip"; \ + description { state: "default" 0.0; \ + visible: 0; \ + min: 0 0; \ + align: 0.0 0.5; \ + fixed: 1 1; \ + rel1.relative: 1.0 0.0; \ + rel1.to: "elm.separator"#_pos; \ + rel2.relative: 1.0 1.0; \ + rel2.to: "elm.separator"#_pos; \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + min: 8 10; \ + } \ + } \ + programs{ \ + program { name: "field_"#_pos"enabled"; \ + signal: "field"#_pos",enable"; source: "elm"; \ + action: STATE_SET "enable" 0.0; \ + target: "elm.field"#_pos; \ + } \ + program { name: "field_"#_pos"disabled"; \ + signal: "field"#_pos",disable"; source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.field"#_pos; \ + } \ + } +#define DATETIME_SEPARATOR(_pos, _after) \ + part { \ + name: "elm.separator"#_pos; type: TEXT; \ + scale: 1; \ + effect: SHADOW BOTTOM; \ + clip_to: "disclip"; \ + description { state: "default" 0.0; \ + visible: 0; \ + min: 0 0; \ + align: 0.0 0.5; \ + fixed: 1 0; \ + rel1 { \ + relative: 1.0 0.0; \ + to: "elm.field"#_after; \ + } \ + rel2 { \ + relative: 1.0 1.0; \ + to: "elm.field"#_after; \ + } \ + color_class: "datetime_separator_text"; \ + text { \ + font: "Sans"; size: 10; \ + min: 1 0; \ + ellipsis: -1; \ + align: 0.5 0.5; \ + text_class: "datetime_separator_text"; \ + } \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + min: 8 10; \ + } \ + } \ + part { \ + name: "separator"#_pos"d"; type: TEXT; \ + scale: 1; \ + effect: SHADOW BOTTOM; \ + clip_to: "disclip2"; \ + description { state: "default" 0.0; \ + visible: 0; \ + rel1.to: "elm.separator"#_pos; \ + rel2.to: "elm.separator"#_pos; \ + color_class: "datetime_separator_text_disabled"; \ + text { \ + text_source: "elm.separator"#_pos; \ + font: "Sans"; size: 10; \ + text_class: "datetime_separator_text_disabled"; \ + } \ + } \ + description { state: "enable" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } \ + programs { \ + program { \ + signal: "field"#_after",enable"; source: "elm"; \ + action: STATE_SET "enable" 0.0; \ + target: "elm.separator"#_pos; \ + target: "separator"#_pos"d"; \ + } \ + program { \ + signal: "field"#_after",disable"; source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.separator"#_pos; \ + target: "separator"#_pos"d"; \ + } \ + } +group { name: "elm/uiclock/base/default"; + parts { + part { name: "bg"; type: RECT; + description { state: "default" 0.0; + color_class: "datetime_bg"; + } + } + part { name: "clip"; type: RECT; + description { state: "default" 0.0; + rel1.to: "elm.separator0"; + rel2.to: "elm.separator7"; + } + } + part { name: "disclip"; type: RECT; + clip_to: "clip"; + description { state: "default" 0.0; + rel1.to: "elm.separator0"; + rel2.to: "elm.separator7"; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "disclip2"; type: RECT; + clip_to: "clip"; + description { state: "default" 0.0; + rel1.to: "elm.separator0"; + rel2.to: "elm.separator7"; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.separator0"; type: SPACER; + scale: 1; + description { state: "default" 0.0; + min: 8 10; + align: 0.0 0.5; + fixed: 1 0; + rel2.relative: 0.0 1.0; + } + } + DATETIME_FIELD(0) + DATETIME_SEPARATOR(1,0) + DATETIME_FIELD(1) + DATETIME_SEPARATOR(2,1) + DATETIME_FIELD(2) + DATETIME_SEPARATOR(3,2) + DATETIME_FIELD(3) + DATETIME_SEPARATOR(4,3) + DATETIME_FIELD(4) + DATETIME_SEPARATOR(5,4) + DATETIME_FIELD(5) + DATETIME_SEPARATOR(6,5) + DATETIME_FIELD(6) + DATETIME_SEPARATOR(7,6) + DATETIME_FIELD(7) + DATETIME_SEPARATOR(8,7) + part { name: "elm.separator9"; type: SPACER; + description { state: "default" 0.0; + rel1.to: "elm.separator7"; + rel1.relative: 1.0 0.0; + min: 8 10; + } + } + part { name: "discover"; type: RECT; + description { state: "default" 0.0; + rel1.to: "elm.separator0"; + rel2.to: "elm.separator7"; + visible: 0; + color: 0 0 0 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.access"; type: RECT; repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { + signal: "elm,state,disabled"; source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + target: "disclip2"; + target: "discover"; + } + program { + signal: "elm,state,enabled"; source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + target: "disclip2"; + target: "discover"; + } + } +} +#undef DATETIME_SEPARATOR +#undef DATETIME_FIELD diff --git a/src/lib/elementary/efl_ui_clock.c b/src/lib/elementary/efl_ui_clock.c index c34fd05e57..13d46286a8 100644 --- a/src/lib/elementary/efl_ui_clock.c +++ b/src/lib/elementary/efl_ui_clock.c @@ -76,6 +76,21 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { {NULL, NULL} }; +static void _part_name_snprintf(char *buffer, int buffer_size, + const Evas_Object *obj, const char *template, int n) +{ + snprintf(buffer, buffer_size, template, n); + if (edje_object_part_exists (obj, buffer)) return; + // Try 'elm' prefix instead of 'efl' + buffer[0] = 'e'; + buffer[1] = 'l'; + buffer[2] = 'm'; + if (edje_object_part_exists (obj, buffer)) return; + // Skip the namespace prefix "elm." which was not present + // in previous versions + snprintf(buffer, buffer_size, template + 4, n); +} + static Elm_Module * _dt_mod_find(void) { @@ -259,7 +274,8 @@ _field_list_arrange(Evas_Object *obj) for (idx = 0; idx < EFL_UI_CLOCK_TYPE_COUNT; idx++) { field = sd->field_list + idx; - snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location); + _part_name_snprintf(buf, sizeof(buf), obj, EDC_PART_FIELD_STR, + field->location); if (field->visible && field->fmt_exist) { @@ -396,17 +412,24 @@ _reload_format(Evas_Object *obj) { snprintf(buf, sizeof(buf), EDC_PART_FIELD_ENABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); } else { snprintf(buf, sizeof(buf), EDC_PART_FIELD_DISABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); } if (field->location + 1) { - snprintf(buf, sizeof(buf), EDC_PART_SEPARATOR_STR, (field->location + 1)); + _part_name_snprintf(buf, sizeof(buf), obj, EDC_PART_SEPARATOR_STR, + field->location + 1); elm_layout_text_set(obj, buf, field->separator); } } @@ -535,11 +558,15 @@ _efl_ui_clock_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Clock_Data *sd) { snprintf(buf, sizeof(buf), EDC_PART_FIELD_ENABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); if (field->location) { - snprintf(buf, sizeof(buf), EDC_PART_SEPARATOR_STR, (field->location)); + _part_name_snprintf(buf, sizeof(buf), obj, EDC_PART_SEPARATOR_STR, + field->location); elm_layout_text_set(obj, buf, field->separator); } @@ -549,7 +576,10 @@ _efl_ui_clock_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Clock_Data *sd) { snprintf(buf, sizeof(buf), EDC_PART_FIELD_DISABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); } } @@ -993,12 +1023,16 @@ _efl_ui_clock_field_visible_set(Eo *obj, Efl_Ui_Clock_Data *sd, Efl_Ui_Clock_Typ snprintf(buf, sizeof(buf), EDC_PART_FIELD_ENABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); edje_object_message_signal_process(wd->resize_obj); - snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location); + _part_name_snprintf(buf, sizeof(buf), obj, EDC_PART_FIELD_STR, + field->location); elm_layout_content_unset(obj, buf); elm_layout_content_set(obj, buf, field->item_obj); } @@ -1010,12 +1044,16 @@ _efl_ui_clock_field_visible_set(Eo *obj, Efl_Ui_Clock_Data *sd, Efl_Ui_Clock_Typ snprintf(buf, sizeof(buf), EDC_PART_FIELD_DISABLE_SIG_STR, field->location); - elm_layout_signal_emit(obj, buf, "efl"); + if (elm_widget_is_legacy(obj)) + elm_layout_signal_emit(obj, buf, "elm"); + else + elm_layout_signal_emit(obj, buf, "efl"); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); edje_object_message_signal_process(wd->resize_obj); - snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location); + _part_name_snprintf(buf, sizeof(buf), obj, EDC_PART_FIELD_STR, + field->location); evas_object_hide(elm_layout_content_unset(obj, buf)); } sd->freeze_sizing = EINA_FALSE; |