TizenRefApp-8046 Implement ThreadListViewItem class 1 part 46/116646/2
authorOleksander Kostenko <o.kostenko@samsung.com>
Mon, 27 Feb 2017 11:02:38 +0000 (13:02 +0200)
committerOleksander Kostenko <o.kostenko@samsung.com>
Mon, 27 Feb 2017 11:20:44 +0000 (13:20 +0200)
Change-Id: I9cb5b25ff543b4861c935230331598daaae5ae8c
Signed-off-by: Oleksander Kostenko <o.kostenko@samsung.com>
edje/images/list_noti_new_bg.#.png [new file with mode: 0644]
res/edje/icons.edc
res/edje/thread_genlist_theme.edc
src/MsgThread/View/inc/ThreadListViewItem.h
src/MsgThread/View/src/ThreadListViewItem.cpp

diff --git a/edje/images/list_noti_new_bg.#.png b/edje/images/list_noti_new_bg.#.png
new file mode 100644 (file)
index 0000000..315d1b1
Binary files /dev/null and b/edje/images/list_noti_new_bg.#.png differ
index df2ea1d7249a919ecf2ec44ba771df7350f181df..9110bb6bded4476e54ad2a167214078fe1481a6c 100755 (executable)
@@ -98,4 +98,53 @@ collections {
          }
       }
    }
+   group {
+      name: "badge";
+      images {
+            image: "list_noti_new_bg.#.png" RAW;
+      }
+      parts
+      {
+         part{ name: "elm.image.count.bg";
+            type:IMAGE;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               fixed: 0 1;
+               min: 30 30;
+               max: 30 30;
+               image {
+                        normal:"list_noti_new_bg.#.png";
+               }
+               color: 255 255 255 255;
+            }
+         }
+         PADDING_LEFT("pad.left", 13);
+         PADDING_RIGHT("pad.right", 13);
+         part { name: "elm.text.count";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 1.0 0.5;
+                  to_x: "pad.left";
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  to_x: "pad.right";
+               }
+               color: 250 250 250 255;
+               text {
+                  font: "Tizen:style=Regular";
+                  size: 32;
+                  ellipsis: 0.0;
+                  align: 0.5 0.5;
+                  min: 1 0;
+               }
+            }
+         }
+      }
+   }
 }
\ No newline at end of file
index 8ae9afaf14f8a22a479d501b18788b1b1f040b77..8f214347f15c41064cfd0da4a0984b63340b965f 100755 (executable)
-// Based on: https://review.tizen.org/gerrit/gitweb?p=profile/mobile/platform/core/uifw/efl-theme-tizen-mobile.git
-// Change-Id: Ia2b0040915500522d0a5bfc39348d6b046c4d3a3
-
 #include "macros.inl"
 
-#define STYLE_TAGS \
-    tag:  "br" "\n";\
-    tag:  "ps" "ps";\
-    tag:  "tab" "\t";\
-    tag:  "b" "+ font_weight=Bold";
+#define LIST_SLIDING_SPEED                                 0.009
+#define LIST_SLIDING_START_WAITING_TIME                    0.8
+#define LIST_HIGHLIGHT_DURATION_TIME                       0.2
+#define LIST_UNHIGHLIGHT_DURATION_TIME                     0.2
+
+ #define DESC_FROM_L( PARAM ) \
+   description { state: "default" 0.0; \
+      fixed: 1 0; \
+      align: 0.0 0.5; \
+      rel2.relative: 0.0 1.0; \
+      PARAM \
+   }
+
+ #define DESC_FROM_R( PARAM ) \
+   description { state: "default" 0.0; \
+      fixed: 1 0; \
+      align: 1.0 0.5; \
+      rel1.relative: 1 0; \
+      PARAM \
+   }
+
+ #define DESC_FROM_T( PARAM ) \
+   description { state: "default" 0.0; \
+      fixed: 0 1; \
+      align: 0.5 0.0; \
+      rel2.relative: 1.0 0.0; \
+      PARAM \
+   }
+
+ #define DESC_FROM_B( PARAM ) \
+   description { state: "default" 0.0; \
+      fixed: 0 1; \
+      rel1.relative: 0.0 1.0; \
+      align: 0.5 1.0; \
+      PARAM \
+   }
+
+#define DESC_LRTB( LEFT, RIGHT, TOP, BOTTOM, PARAM ) \
+   description { state: "default" 0.0; \
+      rel1 { \
+         relative: 1 1; \
+         to_x: LEFT; \
+         to_y: TOP; \
+      } \
+      rel2 { \
+         relative: 0 0; \
+         to_x: RIGHT; \
+         to_y: BOTTOM; \
+      } \
+      PARAM \
+   }
+
+#define DESC_L( LEFT, PARAM ) \
+   description { state: "default" 0.0; \
+      align: 0 0.5; \
+      fixed: 1 0; \
+      rel1 { \
+         relative: 1 0; \
+         to_x: LEFT; \
+      } \
+      rel2 { \
+         relative: 1 1; \
+         to_x: LEFT; \
+      } \
+      PARAM \
+   }
+
+#define DESC_LRB( LEFT, RIGHT, BOTTOM, PARAM ) \
+   description { state: "default" 0.0; \
+      align: 0.5 1; \
+      rel1 { \
+         relative: 1 0; \
+         to_x: LEFT; \
+         to_y: BOTTOM; \
+      } \
+      rel2 { \
+         relative: 0 0; \
+         to_x: RIGHT; \
+         to_y: BOTTOM; \
+      } \
+      PARAM \
+   }
+
+#define PART(TYPE, NAME, DESCRIPION) \
+   part { name: NAME; \
+      scale: 1; \
+      type: TYPE; \
+      DESCRIPION \
+   }
+
+#define PROLOG_LIST \
+   data.item: "treesize" 0; \
+   data.item: "flips" "elm.flip.icon elm.flip.content"; \
+
+#define PART_CENTER_CHECK \
+   PART(SWALLOW, "elm.swallow.center_check", \
+      description { state: "default" 0.0; \
+         align: 0.5 0.5; \
+      } \
+   ) \
+
+#define PART_LIST_BG \
+   PART(RECT, "bg",  \
+      description { state: "default" 0.0; \
+         color: 0 0 0 0; \
+      } \
+   )
+
+#define PART_LIST_EVENT \
+   PART(RECT, "event_block", \
+      mouse_events: 0; \
+      repeat_events: 1; \
+      description { state: "default" 0.0; \
+         color: 0 0 0 0; \
+         visible: 0; \
+      } \
+      description { state: "blocked" 0.0; \
+         color: 0 0 0 0; \
+         visible: 1; \
+      } \
+   )
+
+#define PART_LIST_PADDINGS_FOCUS_BG(LEFT_SIZE, RIGHT_SIZE, TOP_SIZE, BOTTOM_SIZE, HIGHLIGHTED_TOP_SIZE, HIGHLIGHTED_BOTTOM_SIZE, BOTTOM_SIZE_1, FOCUS_BG_TOP_SIZE, FOCUS_BG_BOTTOM_SIZE) \
+   PART(SPACER, "elm.padding.left", \
+      DESC_FROM_L( \
+         min: LEFT_SIZE 0; \
+         max: LEFT_SIZE -1; \
+      ) \
+   ) \
+   PART(SPACER, "elm.padding.right", \
+      DESC_FROM_R( \
+         min: RIGHT_SIZE 0; \
+         max: RIGHT_SIZE -1; \
+      ) \
+   ) \
+   PART(SPACER, "elm.padding.top", \
+      DESC_FROM_T( \
+         min: 0 TOP_SIZE; \
+         max: -1 TOP_SIZE; \
+      ) \
+      description { state: "highlighting" 0.0; \
+         inherit: "default" 0.0; \
+      } \
+      description { state: "highlighted" 0.0; \
+         inherit: "highlighting" 0.0; \
+         min: 0 HIGHLIGHTED_TOP_SIZE; \
+         max: -1 HIGHLIGHTED_TOP_SIZE; \
+      } \
+   ) \
+   PART(SPACER, "elm.padding.bottom", \
+      DESC_FROM_B( \
+         min: 0 BOTTOM_SIZE; \
+         max: -1 BOTTOM_SIZE; \
+      ) \
+      description { state: "highlighting" 0.0; \
+         inherit: "default" 0.0; \
+      } \
+      description { state: "highlighted" 0.0; \
+         inherit: "highlighting" 0.0; \
+         min: 0 HIGHLIGHTED_BOTTOM_SIZE; \
+         max: -1 HIGHLIGHTED_BOTTOM_SIZE; \
+      } \
+   ) \
+   PART(RECT, "elm.padding.focus_bg.top", \
+      DESC_FROM_T( \
+         min: 0 FOCUS_BG_TOP_SIZE; \
+         max: -1 FOCUS_BG_TOP_SIZE; \
+         color: 0 0 0 0; \
+      ) \
+   ) \
+   PART(RECT, "elm.padding.focus_bg.bottom", \
+      DESC_FROM_B( \
+         min: 0 FOCUS_BG_BOTTOM_SIZE; \
+         max: -1 FOCUS_BG_BOTTOM_SIZE; \
+         color: 0 0 0 0; \
+      ) \
+   ) \
+   PART(SPACER, "elm.padding.bottom.1", \
+      DESC_FROM_B( \
+         min: 0 BOTTOM_SIZE_1; \
+         max: -1 BOTTOM_SIZE_1; \
+      ) \
+   )
+
+#define SCRIPT_START_SLIDE \
+script { \
+   public g_duration_1; \
+   public g_duration_2; \
+   public g_timer_id; \
+   public g_anim_id; \
+   public g_sliding_start; \
+   public g_text_size; \
+   public is_disabled; \
+   public is_highlighted; \
+   \
+   public init() { \
+      slide_stop(); \
+      set_float(g_duration_1, 0); \
+      set_float(g_duration_2, 0); \
+      set_int(g_timer_id, 0); \
+      set_int(g_anim_id, 0); \
+      set_int(g_sliding_start, 0); \
+      set_int(is_disabled, 0); \
+      set_int(is_highlighted, 0); \
+   } \
+   public set_disabled(val) { \
+      set_int(is_disabled, val); \
+   } \
+   public set_highlighted(val) { \
+      set_int(is_highlighted, val); \
+   } \
+   public get_disabled() { \
+      return get_int(is_disabled); \
+   } \
+   public get_highlighted() { \
+      return get_int(is_highlighted); \
+   } \
+   public slide_first_anim(val, Float:pos) { \
+      if (get_disabled()) \
+         set_tween_state(PART:"elm.text", pos, "slide_disabled", 0.0, "slide_1_disabled", 0.0); \
+      else \
+         set_tween_state(PART:"elm.text", pos, "slide", 0.0, "slide_1", 0.0); \
+      if (!get_highlighted()) { \
+         slide_stop(); \
+      } else if (pos >= 1.0) { \
+         cancel_anim(get_int(g_anim_id)); \
+         set_int(g_anim_id, anim(get_float(g_duration_2), "slide_second_anim", 1)); \
+      } \
+   } \
+   public slide_second_anim(val, Float:pos) { \
+      if (get_disabled()) \
+         set_tween_state(PART:"elm.text", pos, "slide_2_disabled", 0.0, "disabled", 0.0); \
+      else \
+         set_tween_state(PART:"elm.text", pos, "slide_2", 0.0, "default", 0.0); \
+      if (pos >= 1.0) \
+         slide_stop(); \
+   } \
+   public slide_first() { \
+      set_int(g_anim_id, anim(get_float(g_duration_1), "slide_first_anim", 1)); \
+   } \
+   public slide_start(val) { \
+      set_int(g_timer_id, timer(LIST_SLIDING_START_WAITING_TIME + (val / 1000), "start", 1)); \
+   } \
+   public start() { \
+      check_size(); \
+      if (get_int(g_sliding_start)) { \
+      if (get_disabled()) \
+         set_state(PART:"elm.text", "slide_disabled", 0.0); \
+      else \
+         set_state(PART:"elm.text", "slide", 0.0); \
+         get_duration(); \
+         custom_state(PART:"elm.padding.slide.end", "default", 0.0); \
+         set_state_val(PART:"elm.padding.slide.end", STATE_REL1_OFFSET, get_int(g_text_size), 0); \
+         set_state_val(PART:"elm.padding.slide.end", STATE_REL2_OFFSET, get_int(g_text_size)-1, -1); \
+         set_state(PART:"elm.padding.slide.end", "custom", 0.0); \
+         slide_first(); \
+      } \
+   } \
+   public slide_stop() { \
+      if (get_int(g_timer_id)) { \
+         cancel_timer(get_int(g_timer_id)); \
+         set_int(g_timer_id, 0); \
+      } \
+      if (get_int(g_anim_id)) { \
+         cancel_anim(get_int(g_anim_id)); \
+         set_int(g_anim_id, 0); \
+      } \
+      if (get_disabled()) \
+         set_state(PART:"elm.text", "disabled", 0.0); \
+      else \
+         set_state(PART:"elm.text", "default", 0.0); \
+      set_int(g_sliding_start, 0); \
+   } \
+   public check_size() { \
+      new x, y, w, w1, h; \
+      get_geometry(PART:"elm.text", x, y, w, h); \
+      get_geometry(PART:"clipper.text", x, y, w1, h); \
+      set_int(g_text_size, w1); \
+      if (w1 > 0 && w >= w1) \
+         set_int(g_sliding_start, 1); \
+      else \
+         set_int(g_sliding_start, 0); \
+   } \
+   public get_duration() { \
+      new x, y, w, w1, h; \
+      get_geometry(PART:"elm.text", x, y, w, h); \
+      get_geometry(PART:"clipper.text", x, y, w1, h); \
+      set_float(g_duration_1, w * LIST_SLIDING_SPEED); \
+      set_float(g_duration_2, w1 * LIST_SLIDING_SPEED); \
+   } \
+}
+
+#define PROGRAM_LIST_DEFAULT( TARGET ) \
+   program { name: "default"; \
+      signal: "elm,state,default"; \
+      source: "elm"; \
+      script { \
+         init(); \
+         run_program(PROGRAM:"defaulted"); \
+         set_mouse_events(PART:"event_block", 0); \
+         set_repeat_events(PART:"event_block", 1); \
+         set_state(PART:"event_block", "default", 0.0); \
+      } \
+   } \
+   program { name: "defaulted"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+   }
+
+#define PROGRAM_LIST_DISABLE( TARGET ) \
+   program { name: "enabled"; \
+      signal: "elm,state,enabled"; \
+      source: "elm"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+   } \
+   program { name: "disabled"; \
+      signal: "elm,state,disabled"; \
+      source: "elm"; \
+      action: STATE_SET "disabled" 0.0; \
+      TARGET \
+   }
+
+#define PROGRAM_LIST_DISABLE_SLIDE( TARGET ) \
+   program { name: "enabled"; \
+      signal: "elm,state,enabled"; \
+      source: "elm"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+      after: "set_enabled"; \
+   } \
+   program { name: "set_enabled"; \
+      script { \
+         set_disabled(0); \
+      } \
+   } \
+   program { name: "disabled"; \
+      signal: "elm,state,disabled"; \
+      source: "elm"; \
+      action: STATE_SET "disabled" 0.0; \
+      TARGET \
+      after: "set_disabled"; \
+   } \
+   program { name: "set_disabled"; \
+      script { \
+         set_disabled(1); \
+      } \
+   }
+
+#define PROGRAM_LIST_SELECT( TARGET ) \
+   program { name: "selected"; \
+      signal: "elm,state,selected"; \
+      source: "elm"; \
+      action: STATE_SET "selected" 0.0; \
+      TARGET \
+   } \
+   program { name: "unselected"; \
+      signal: "elm,state,unselected"; \
+      source: "elm"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+   }
+
+#define PROGRAM_LIST_HIGHLIGHT(TARGET) \
+   program { name: "text_highlight"; \
+      signal: "elm,state,highlighted"; \
+      source: "elm"; \
+      script { \
+         if (!get_highlighted()) { \
+            set_highlighted(1); \
+            run_program(PROGRAM:"text_highlighting"); \
+         } \
+      } \
+   } \
+   program { name: "text_highlighting"; \
+      action: STATE_SET "highlighting" 0.0; \
+      TARGET \
+      after: "text_highlighted"; \
+   } \
+   program { name: "text_highlighted"; \
+      transition: CUBIC_BEZIER LIST_HIGHLIGHT_DURATION_TIME 0 0 1 1; \
+      action: STATE_SET "highlighted" 0.0; \
+      TARGET \
+      after: "text_slide"; \
+   } \
+    program { name: "text_unhighlight"; \
+      signal: "elm,state,unhighlighted"; \
+      source: "elm"; \
+      script { \
+         if (get_highlighted()) { \
+            set_highlighted(0); \
+            slide_stop(); \
+            run_program(PROGRAM:"text_unhighlighting"); \
+         } \
+      } \
+   } \
+   program { name: "text_unhighlighting"; \
+      transition: CUBIC_BEZIER LIST_UNHIGHLIGHT_DURATION_TIME 0 0 1 1; \
+      action: STATE_SET "highlighting" 0.0; \
+      TARGET \
+      after: "text_unhighlighted"; \
+   } \
+   program { name: "text_unhighlighted"; \
+      action: STATE_SET "default" 0.0; \
+      TARGET \
+   } \
+   program { name: "text_slide"; \
+      source: "elm"; \
+      signal: "elm,action,title,slide,start"; \
+      script { \
+         slide_start(0); \
+      } \
+   } \
+   program { name: "text_slide_stop"; \
+      source: "elm"; \
+      signal: "elm,action,title,slide,stop"; \
+      script { \
+         slide_stop(); \
+      } \
+   }
+
+#define PROGRAM_LIST_SOUND \
+   program { name: "play_sound"; \
+      signal: "elm,state,clicked"; \
+      source: "elm"; \
+      script { \
+         run_program(PROGRAM:"play_sample"); \
+      } \
+   } \
+   program { \
+      name: "play_sample"; \
+      action: RUN_PLUGIN "touch_sound"; \
+   }
+
+#define PROGRAM_LIST_TEXT_SLIDE \
+   program { name: "slide_start"; \
+      source: "elm"; \
+      signal: "elm,action,title,slide,start"; \
+      script { \
+         slide_start(0); \
+      } \
+   } \
+   program { name: "text_slide_stop"; \
+      source: "elm"; \
+      signal: "elm,action,title,slide,stop"; \
+      script { \
+         slide_stop(); \
+      } \
+   }
+
+#define PROGRAM_LIST_EVENT \
+   program { name: "content_event_disable"; \
+      signal: "elm,state,content_event,disable"; \
+      source: "elm"; \
+      script { \
+         set_mouse_events(PART:"event_block", 1); \
+         set_repeat_events(PART:"event_block", 0); \
+         set_state(PART:"event_block", "blocked", 0.0); \
+      } \
+   } \
+   program { name: "content_event_enable"; \
+      signal: "elm,state,content_event,enable"; \
+      source: "elm"; \
+      script { \
+         set_mouse_events(PART:"event_block", 0); \
+         set_repeat_events(PART:"event_block", 1); \
+         set_state(PART:"event_block", "default", 0.0); \
+      } \
+   }
+
+#define PARAM_TEXT(STYLE, PARAM) \
+   align: 0.5 0.5; \
+   text { \
+      min: 0 1; \
+      max: 1 1; \
+      ellipsis: -1.0; \
+      fade_ellipsis: 1.0; \
+      style: STYLE; \
+      PARAM \
+   }
+
+#define PARAM_SUB_TEXT(STYLE, PARAM) \
+   align: 0.5 1.0; \
+   text { \
+      min: 0 1; \
+      max: 1 1; \
+      style: STYLE; \
+      PARAM \
+   }
+
+#define PART_MAIN_TEXT(NAME, LEFT, RIGHT, TOP, BOTTOM) \
+   PART(SPACER, "elm.padding.slide.end", \
+      DESC_L(RIGHT, \
+         fixed: 1 0; \
+         min: 0 0; \
+         max: 0 -1; \
+      ) \
+   ) \
+   PART(RECT, "clipper.text", \
+      DESC_LRTB(LEFT, RIGHT, TOP, BOTTOM, \
+      ) \
+   ) \
+   PART(TEXTBLOCK, NAME, \
+      clip_to: "clipper.text"; \
+      DESC_LRTB(LEFT, RIGHT, TOP, BOTTOM, \
+         fixed: 1 0; \
+         min: 0 LIST_TEXT_MAIN_HEIGHT_INC; \
+         PARAM_TEXT("list_text_main_normal",) \
+      ) \
+      description { state: "disabled" 0.0; \
+         inherit: "default" 0.0; \
+         text.style: "list_text_main_disabled"; \
+      } \
+      description { state: "slide" 0.0; \
+         inherit: "default" 0.0; \
+         align: 0.0 0.5; \
+         rel1 { \
+            relative: 1.0 1.0; \
+            to_x: LEFT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 1.0 0.0; \
+            to_x: LEFT; \
+            to_y: BOTTOM; \
+         } \
+         text.min: 1 1; \
+      } \
+      description { state: "slide_1" 0.0; \
+         inherit: "default" 0.0; \
+         align: 1.0 0.5; \
+         rel1 { \
+            relative: 1.0 1.0; \
+            to_x: LEFT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 1.0 0.0; \
+            to_x: LEFT; \
+            to_y: BOTTOM; \
+         } \
+         text.min: 1 1; \
+      } \
+      description { state: "slide_2" 0.0; \
+         inherit: "default" 0.0; \
+         align: 0.0 0.5; \
+         rel1 { \
+            relative: 0.0 1.0; \
+            to_x: RIGHT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 0.0 0.0; \
+            to_x: "elm.padding.slide.end"; \
+            to_y: BOTTOM; \
+         } \
+      } \
+      description { state: "slide_disabled" 0.0; \
+         inherit: "disabled" 0.0; \
+         align: 0.0 0.5; \
+         rel1 { \
+            relative: 1.0 1.0; \
+            to_x: LEFT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 1.0 0.0; \
+            to_x: LEFT; \
+            to_y: BOTTOM; \
+         } \
+         text.min: 1 1; \
+      } \
+      description { state: "slide_1_disabled" 0.0; \
+         inherit: "disabled" 0.0; \
+         align: 1.0 0.5; \
+         rel1 { \
+            relative: 1.0 1.0; \
+            to_x: LEFT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 1.0 0.0; \
+            to_x: LEFT; \
+            to_y: BOTTOM; \
+         } \
+         text.min: 1 1; \
+      } \
+      description { state: "slide_2_disabled" 0.0; \
+         inherit: "disabled" 0.0; \
+         align: 0.0 0.5; \
+         rel1 { \
+            relative: 0.0 1.0; \
+            to_x: RIGHT; \
+            to_y: TOP; \
+         } \
+         rel2 { \
+            relative: 0.0 0.0; \
+            to_x: "elm.padding.slide.end"; \
+            to_y: BOTTOM; \
+         } \
+      } \
+      description { state: "pressed" 0.0; \
+         inherit: "default" 0.0; \
+         text.style: "list_text_main_press"; \
+      } \
+   )
+
+#define LIST_TEXT_MAIN_SIZE_INC                            36
+#define LIST_TEXT_SUB_SIZE_INC                             24
 
 #define STYLE_TAG_MATCH \
-   tag:  "match" "+ color=#3db8cc";
-
-#define GENLIST_ITEM_1LINE_HEIGHT_INC                      120
-#define GENLIST_ITEM_2LINE_HEIGHT_INC                      144
-#define GENLIST_ITEM_LR_PADDING_INC                        32
-#define GENLIST_ITEM_TOP_PADDING_INC                       23
-#define GENLIST_ITEM_BOTTOM_PADDING_INC                    24 // including bottom line
-#define GENLIST_ITEM_TYPE_BA_PADDING_INC                   32
-#define GENLIST_ITEM_TYPE_DC_PADDING_INC                   32
-#define GENLIST_ITEM_TYPE_AD_PADDING_INC                   32
-#define GENLIST_ITEM_MAIN_LINE_HEIGHT_INC                  54
-#define GENLIST_ITEM_MAIN_LINE_ICON_TEXT_PADDING_INC       12
-#define GENLIST_ITEM_MAIN_LINE_TEXT_END_PADDING_INC        32
-#define GENLIST_ITEM_SUB_LINE_HEIGHT_INC                   43
-#define GENLIST_ITEM_SUB_LINE_TEXT_END_PADDING_INC         32
-#define GENLIST_ITEM_END_TEXT_WIDTH_INC                    121
-
-//No use to Combination
-#define LIST_BOTTOMLINE_HEIGHT               2
+      tag:  "match" "+ color=#0e76b2ff";
+
+styles {
+   style { name: "list_text_main_normal";
+    base: "font=Tizen:weight=Normal:width=Condensed font_size="LIST_TEXT_MAIN_SIZE_INC" color=#f9f9f9ff text_class=list_item";
+      STYLE_TAG_MATCH
+   }
+   style { name: "list_text_main_press";
+    base: "font=Tizen:weight=Normal:width=Condensed font_size="LIST_TEXT_MAIN_SIZE_INC" color=#f9f9f9ff text_class=list_item";
+      STYLE_TAG_MATCH
+   }
+   style { name: "list_text_main_disabled";
+    base: "font=Tizen:weight=Normal:width=Condensed font_size="LIST_TEXT_MAIN_SIZE_INC" color=#474747ff text_class=list_item";
+      STYLE_TAG_MATCH
+   }
+   style { name: "list_text_sub_normal";
+    base: "font=Tizen:weight=Normal:width=Condensed font_size="LIST_TEXT_SUB_SIZE_INC" color=#b3b3b3ff text_class=tizen";
+      STYLE_TAG_MATCH
+   }
+   style { name: "list_text_sub_press";
+      base: "font=Tizen:weight=Normal:width=Condnesed font_size="LIST_TEXT_SUB_SIZE_INC" color=b3b3b3ff text_class=tizen";
+      STYLE_TAG_MATCH
+   }
+   style { name: "list_text_sub_disabled";
+    base: "font=Tizen:weight=Normal:width=Condensed font_size="LIST_TEXT_SUB_SIZE_INC" color=#b3b3b366 text_class=tizen";
+      STYLE_TAG_MATCH
+   }
+}
+
+#define LIST_PADDING_LEFT_SIZE_INC                         30
+#define LIST_PADDING_RIGHT_SIZE_INC                        30
+
+#define LIST_3LINE_PADDING_TOP_SIZE_INC                    41
+#define LIST_3LINE_PADDING_BOTTOM_SIZE_INC                 41
+#define LIST_3LINE_PADDING_HIGHLIGHTED_TOP_SIZE_INC        9
+#define LIST_3LINE_PADDING_HIGHLIGHTED_BOTTOM_SIZE_INC     73
+#define LIST_3LINE_PADDING_SUB_TEXT_BOTTOM_SIZE_INC        9
+
+#define LIST_TEXT_MAIN_HEIGHT_INC                          47
+#define LIST_TEXT_SUB_HEIGHT_INC                           32
 
 collections {
-    BASE_SCALE;
-    plugins {
-        TOUCH_SOUND_PLUGIN;
-    }
-    styles {
-       // ************* list main text ********** //
-       style { name: "list_text_main";
-          base: "color=#737373FF font=Tizen:style=Regular font_size=32 text_class=tizen ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_main_dim";
-          base: "color=#737373A3 font=Tizen:style=Regular font_size=32 text_class=tizen ellipsis=1.0";
-          // (Changeable UI) base: "font=Tizen:style=Regular font_size="LIST_TEXT_SUB_SIZE" color=#ffffff color_class=T024D text_class=T024D ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_main_press";
-          base: "color=#737373FF font=Tizen:style=Regular font_size=32 text_class=tizen ellipsis=1.0";
-          // (Changeable UI) base: "font=Tizen:style=Regular font_size="LIST_TEXT_SUB_SIZE" color=#ffffff color_class=T024P text_class=T024P ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_end";
-          base: "color=#737373FF font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_end_dim";
-          base: "color=#737373A3 font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_end_press";
-          base: "color=#737373A3 font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_sub_end";
-          base: "color=#737373FF font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_sub_end_dim";
-          base: "color=#737373A3 font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_sub_end_press";
-          base: "color=#737373FF font=Tizen:style=Regular font_size=30 text_class=tizen ellipsis=1.0 align=right";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       // ************* list sub text ********** //
-       style { name: "list_text_sub_01";
-          base: "color=#070707FF font=Tizen:style=Regular font_size=40 text_class=list_item ellipsis=1.0";
-          // (Changeable UI) base: "font=Tizen:style=Regular font_size="LIST_TEXT_MAIN_SIZE" color=#ffffff color_class=T023 text_class=T023 ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_sub_01_dim";
-          base: "color=#0707077F font=Tizen:style=Regular font_size=40 text_class=list_item ellipsis=1.0";
-          // (Changeable UI) base: "font=Tizen:style=Regular font_size="LIST_TEXT_MAIN_SIZE" color=#ffffff  color_class=T023D text_class=T023D ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-       style { name: "list_text_sub_01_press";
-          base: "color=#070707FF font=Tizen:style=Regular font_size=40 text_class=list_item ellipsis=1.0";
-          // (Changeable UI) base: "font=Tizen:style=Regular font_size="LIST_TEXT_MAIN_SIZE" color=#ffffff color_class=T023P text_class=T023P ellipsis=1.0";
-          STYLE_TAGS
-          STYLE_TAG_MATCH
-       }
-    }
-    group { name: "elm/genlist/item/msg_thread/default";
-       alias: "elm/genlist/item_compress/msg_thread/default";
-       alias: "elm/genlist/tree/msg_thread/default";
-       alias: "elm/genlist/tree_compress/msg_thread/default";
-       data.item: "banded_bg_area" "elm.swallow.bg";
-       data.item: "texts" "elm.text elm.text.end elm.text.sub elm.text.sub.end";
-       data.item: "contents" "elm.swallow.icon elm.swallow.icon.0 elm.swallow.icon.1 elm.swallow.icon.2 elm.swallow.end";
-       script {
-          public end_icon_visible = 0;
-          public sub_end_text_visible = 0;
-       }
-       parts {
-          // base spacer for item min height
-          spacer { "base"; scale;
-             desc { "default";
-                min: 0 GENLIST_ITEM_1LINE_HEIGHT_INC;
-             }
-             desc { "sub_text_visible";
-                min: 0 GENLIST_ITEM_2LINE_HEIGHT_INC;
-             }
-          }
-          // background of item
-          rect { name: "bg";
-             desc { state: "default";
-                rel1 { to: "base"; relative: 0.0 0.0; }
-                rel2 { to: "base"; relative: 1.0 1.0; }
-                color: 0 0 0 0;
-             }
-             desc { state: "pressed"; inherit: "default";
-                color: 0 0 0 10;
-             }
-             desc { state: "disabled"; inherit: "default";
-                color: 0 0 0 0;
-             }
-          }
-          // swallow area for banded color
-          swallow { "elm.swallow.bg"; scale;
-             desc { "default";
-                rel1 { to: "bg"; relative: 0.0 0.0; }
-                rel2 { to: "bg"; relative: 1.0 1.0; }
-             }
-          }
-          // left outside padding
-          spacer { "elm.padding.left"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: GENLIST_ITEM_LR_PADDING_INC 0;
-                align: 0.0 0.5;
-                rel1 { to: "elm.swallow.bg"; relative: 0.0 0.0; }
-                rel2 { to: "elm.swallow.bg"; relative: 0.0 1.0; }
-             }
-          }
-          // right outside padding
-          spacer { "elm.padding.right"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: GENLIST_ITEM_LR_PADDING_INC 0;
-                align: 1.0 0.5;
-                rel1 { to: "elm.swallow.bg"; relative: 1.0 0.0; }
-                rel2 { to: "elm.swallow.bg"; relative: 1.0 1.0; }
-             }
-          }
-          // top outside padding
-          spacer { "elm.padding.top"; scale;
-             desc { "default";
-                fixed: 0 1;
-                min: 0 GENLIST_ITEM_TOP_PADDING_INC;
-                max: -1 GENLIST_ITEM_TOP_PADDING_INC;
-                align: 0.5 0.0;
-                rel1 { to: "elm.swallow.bg"; relative: 0.0 0.0; }
-                rel2 { to: "elm.swallow.bg"; relative: 1.0 0.0; }
-             }
-          }
-          // bottom outside padding
-          spacer { "elm.padding.bottom"; scale;
-             desc { "default";
-                fixed: 0 1;
-                min: 0 GENLIST_ITEM_BOTTOM_PADDING_INC;
-                max: -1 GENLIST_ITEM_BOTTOM_PADDING_INC;
-                align: 0.5 1.0;
-                rel1 { to: "elm.swallow.bg"; relative: 0.0 1.0; }
-                rel2 { to: "elm.swallow.bg"; relative: 1.0 1.0; }
-             }
-          }
-          // left swallow (Type B)
-          swallow { "elm.swallow.icon"; scale;
-             desc { state: "default";
-                fixed: 1 0;
-                align: 0.0 0.5;
-                rel1 { to_x: "elm.padding.left"; to_y: "elm.padding.top"; relative: 1.0 1.0; }
-                rel2 { to_x: "elm.padding.left"; to_y: "elm.padding.bottom"; relative: 1.0 0.0; }
-             }
-          }
-          // padding between Type B & Type A
-          spacer { "elm.padding.B.A"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 0.0 0.5;
-                rel1 { to_x: "elm.swallow.icon"; to_y: "elm.padding.top"; relative: 1.0 1.0; }
-                rel2 { to_x: "elm.swallow.icon"; to_y: "elm.padding.bottom"; relative: 1.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_TYPE_BA_PADDING_INC 0;
-             }
-          }
-          // right swallow (Type C)
-          swallow { "elm.swallow.end"; scale;
-             desc { state: "default";
-                fixed: 1 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.padding.right"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.padding.right"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-          }
-          // padding between Type D & Type C
-          spacer { "elm.padding.D.C"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.swallow.end"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.swallow.end"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_TYPE_DC_PADDING_INC 0;
-             }
-          }
-          // right swallow 2 (Type D)
-          swallow { "elm.swallow.icon.2"; scale;
-             desc { state: "default";
-                fixed: 1 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.padding.D.C"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.padding.D.C"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-          }
-          // padding between Type A & Type D
-          spacer { "elm.padding.A.D"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.swallow.icon.2"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.swallow.icon.2"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_TYPE_AD_PADDING_INC 0;
-             }
-          }
-          // sub text line
-          textblock { "elm.text.sub.end"; scale;
-             desc { "default";
-                fixed: 1 1;
-                align: 1.0 0.0;
-                rel1 { to_x: "elm.padding.A.D"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.padding.A.D"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                text.style: "list_text_sub_end";
-                text.min: 1 1;
-                text.ellipsis: -1;
-             }
-             desc { "pressed"; inherit: "default";
-                text.style: "list_text_sub_end_press";
-             }
-             desc { "disabled"; inherit: "default";
-                text.style: "list_text_sub_end_dim";
-             }
-          }
-          spacer { "elm.padding.sub.text.end"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.swallow.icon.1"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.swallow.icon.1"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_SUB_LINE_TEXT_END_PADDING_INC 0;
-             }
-             desc { "text_visible"; inherit: "default";
-                min: GENLIST_ITEM_SUB_LINE_TEXT_END_PADDING_INC 0;
-                rel1 { to_x: "elm.text.sub.end"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.text.sub.end"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-          }
-          textblock { "elm.text.sub"; scale;
-             desc { "default";
-                fixed: 1 1;
-                min: 0 GENLIST_ITEM_SUB_LINE_HEIGHT_INC;
-                align: 0.5 0.0;
-                rel1 { to_x: "elm.padding.B.A"; to_y: "elm.padding.top"; relative: 1.0 1.0; }
-                rel2 { to_x: "elm.padding.sub.text.end"; to_y: "elm.padding.top"; relative: 0.0 1.0; }
-                text.style: "list_text_sub_01";
-                text.min: 0 1;
-             }
-             desc { "pressed"; inherit: "default";
-                text.style: "list_text_sub_01_press";
-             }
-             desc { "disabled"; inherit: "default";
-                text.style: "list_text_sub_01_dim";
-             }
-          }
-          // bottom base of main text line
-          spacer { "base_line";
-             desc { "default";
-                rel1 { to: "elm.padding.top"; relative: 0.0 1.0; }
-                rel2 { to: "elm.padding.top"; relative: 1.0 1.0; }
-             }
-             desc { "sub_text_visible"; inherit: "default";
-                rel1 { to_y: "elm.text.sub"; relative: 0.0 1.0; }
-                rel2 { to_y: "elm.text.sub"; relative: 1.0 1.0; }
-             }
-          }
-          // main text line
-          swallow { "elm.swallow.icon.0"; scale;
-             desc { "default";
-                fixed: 1 0;
-                align: 0.0 0.5;
-                rel1 { to_x: "elm.padding.B.A"; to_y: "base_line"; relative: 1.0 1.0; }
-                rel2 { to_x: "elm.padding.B.A"; to_y: "elm.padding.bottom"; relative: 1.0 0.0; }
-             }
-          }
-          swallow { "elm.swallow.icon.1"; scale;
-             desc { "default";
-                fixed: 1 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.padding.A.D"; to_y: "base_line"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.padding.A.D"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-          }
-          spacer { "elm.padding.main.icon.text"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 0.0 0.5;
-                rel1 { to: "elm.swallow.icon.0"; to_y: "base_line"; relative: 1.0 1.0; }
-                rel2 { to: "elm.swallow.icon.0"; to_y: "elm.padding.bottom"; relative: 1.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_MAIN_LINE_ICON_TEXT_PADDING_INC 0;
-             }
-          }
-          textblock { "elm.text.end"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 GENLIST_ITEM_MAIN_LINE_HEIGHT_INC;
-                max: GENLIST_ITEM_END_TEXT_WIDTH_INC -1;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.padding.A.D"; to_y: "base_line"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.padding.A.D"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-                text.style: "list_text_end";
-                text.min: 1 1;
-                text.max: 0 1;
-                text.ellipsis: -1;
-             }
-             desc { "pressed"; inherit: "default";
-                text.style: "list_text_end_press";
-             }
-             desc { "disabled"; inherit: "default";
-                text.style: "list_text_end_dim";
-             }
-          }
-          spacer { "elm.padding.main.text.end"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 0;
-                align: 1.0 0.5;
-                rel1 { to_x: "elm.swallow.icon.1"; to_y: "base_line"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.swallow.icon.1"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-             desc { "icon_visible"; inherit: "default";
-                min: GENLIST_ITEM_MAIN_LINE_TEXT_END_PADDING_INC 0;
-             }
-             desc { "text_visible"; inherit: "default";
-                min: GENLIST_ITEM_MAIN_LINE_TEXT_END_PADDING_INC 0;
-                rel1 { to_x: "elm.text.end"; to_y: "base_line"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.text.end"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-             desc { "sub_text_visible"; inherit: "default";
-                min: GENLIST_ITEM_MAIN_LINE_TEXT_END_PADDING_INC 0;
-                rel1 { to_x: "elm.text.sub.end"; to_y: "base_line"; relative: 0.0 1.0; }
-                rel2 { to_x: "elm.text.sub.end"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-             }
-          }
-          textblock { "elm.text"; scale;
-             desc { "default";
-                fixed: 1 0;
-                min: 0 GENLIST_ITEM_MAIN_LINE_HEIGHT_INC;
-                align: 0.5 0.5;
-                rel1 { to_x: "elm.padding.main.icon.text"; to_y: "base_line"; relative: 1.0 1.0; }
-                rel2 { to_x: "elm.padding.main.text.end"; to_y: "elm.padding.bottom"; relative: 0.0 0.0; }
-                text.style: "list_text_main";
-                text.min: 0 1;
-             }
-             desc { "pressed"; inherit: "default";
-                text.style: "list_text_main_press";
-             }
-             desc { "disabled"; inherit: "default";
-                text.style: "list_text_main_dim";
-             }
-          }
-          rect { "elm.bottomline"; scale;
-             desc { "default";
-                fixed: 0 1;
-                min: 0 LIST_BOTTOMLINE_HEIGHT;
-                max: -1  LIST_BOTTOMLINE_HEIGHT;
-                align: 0.5 0.0;
-                rel1.relative: 0.0 0.0;
-                rel2.relative: 1.0 0.0;
-                color: 204 204 204 255;
-             }
-             desc { "hidden"; inherit: "default";
-                visible: 0;
-             }
-          }
-       }
-       programs {
-          program { name: "play_sound";
-             signal: "elm,state,clicked";
-             source: "elm";
-             script {
-                 run_program(PROGRAM:"touch_sound");
-             }
-          }
-          program { name: "touch_sound";
-              action: RUN_PLUGIN "touch_sound";
-          }
-          program {
-             signal: "elm,state,elm.swallow.bg,visible";
-             source: "elm";
-             action: STATE_SET "hidden" 0.0;
-             target: "elm.bottomline";
-          }
-          program {
-             signal: "elm,state,elm.swallow.icon,visible";
-             source: "elm";
-             action: STATE_SET "icon_visible" 0.0;
-             target: "elm.padding.B.A";
-          }
-          program {
-             signal: "elm,state,elm.swallow.icon.2,visible";
-             source: "elm";
-             action: STATE_SET "icon_visible" 0.0;
-             target: "elm.padding.A.D";
-          }
-          program {
-             signal: "elm,state,elm.swallow.end,visible";
-             source: "elm";
-             action: STATE_SET "icon_visible" 0.0;
-             target: "elm.padding.D.C";
-          }
-          program {
-             signal: "elm,state,elm.swallow.icon.0,visible";
-             source: "elm";
-             action: STATE_SET "icon_visible" 0.0;
-             target: "elm.padding.main.icon.text";
-          }
-          program {
-             signal: "elm,state,elm.swallow.icon.1,visible";
-             source: "elm";
-             script {
-                if (get_int(sub_end_text_visible) == 0) {
-                   set_state(PART:"elm.padding.main.text.end", "icon_visible", 0.0);
-                   set_state(PART:"elm.padding.sub.text.end", "icon_visible", 0.0);
-                }
-                else {
-                   set_state(PART:"elm.padding.main.text.end", "sub_text_visible", 0.0);
-                   set_state(PART:"elm.padding.sub.text.end", "text_visible", 0.0);
-                }
-                set_int(end_icon_visible, 1);
-             }
-          }
-          program {
-             signal: "elm,state,elm.text.sub,visible";
-             source: "elm";
-             action: STATE_SET "sub_text_visible" 0.0;
-             target: "base";
-             target: "base_line";
-          }
-          program {
-             signal: "elm,state,elm.text.end,visible";
-             source: "elm";
-             script {
-                if (get_int(end_icon_visible) == 1 && get_int(sub_end_text_visible) == 1) {
-                   set_state(PART:"elm.padding.main.text.end", "sub_text_visible", 0.0);
-                }
-                else {
-                   set_state(PART:"elm.padding.main.text.end", "text_visible", 0.0);
-                }
-             }
-          }
-          program {
-             signal: "elm,state,elm.text.sub.end,visible";
-             source: "elm";
-             script {
-                set_int(sub_end_text_visible, 1);
-                set_state(PART:"elm.padding.sub.text.end", "text_visible", 0.0);
-                set_state(PART:"elm.swallow.icon.1", "text_visible", 0.0);
-             }
-          }
-          program { name: "default";
-             signal: "elm,state,default";
-             source: "elm";
-             script {
-                set_state(PART:"base", "default", 0.0);
-                set_state(PART:"base_line", "default", 0.0);
-                set_state(PART:"elm.swallow.icon.1", "default", 0.0);
-                set_state(PART:"elm.padding.B.A", "default", 0.0);
-                set_state(PART:"elm.padding.A.D", "default", 0.0);
-                set_state(PART:"elm.padding.D.C", "default", 0.0);
-                set_state(PART:"elm.padding.main.icon.text", "default", 0.0);
-                set_state(PART:"elm.padding.main.text.end", "default", 0.0);
-                set_state(PART:"elm.padding.sub.text.end", "default", 0.0);
-                set_state(PART:"elm.bottomline", "default", 0.0);
-                set_state(PART:"bg", "default", 0.0);
-                set_state(PART:"elm.text", "default", 0.0);
-                set_state(PART:"elm.text.end", "default", 0.0);
-                set_state(PART:"elm.text.sub", "default", 0.0);
-                set_state(PART:"elm.text.sub.end", "default", 0.0);
-                set_int(sub_end_text_visible, 0);
-             }
-          }
-          program { name: "reset_check";
-             signal: "elm,state,reset_check";
-             source: "elm";
-             script {
-                set_state(PART:"elm.padding.D.C", "default", 0.0);
-             }
-          }
-          program { name: "pressed";
-             signal: "elm,state,selected";
-             source: "elm";
-             action: STATE_SET "pressed" 0.0;
-             target: "bg";
-             target: "elm.text";
-             target: "elm.text.end";
-             target: "elm.text.sub";
-             target: "elm.text.sub.end";
-          }
-          program { name: "unpressed";
-             signal: "elm,state,unselected";
-             source: "elm";
-             action: STATE_SET "default" 0.0;
-             target: "bg";
-             target: "elm.text";
-             target: "elm.text.end";
-             target: "elm.text.sub";
-             target: "elm.text.sub.end";
-          }
-          program { name: "enabled";
-             signal: "elm,state,enabled";
-             source: "elm";
-             action: STATE_SET "default" 0.0;
-             target: "bg";
-             target: "elm.text";
-             target: "elm.text.end";
-             target: "elm.text.sub";
-             target: "elm.text.sub.end";
-          }
-          program { name: "disabled";
-             signal: "elm,state,disabled";
-             source: "elm";
-             action: STATE_SET "disabled" 0.0;
-             target: "bg";
-             target: "elm.text";
-             target: "elm.text.end";
-             target: "elm.text.sub";
-             target: "elm.text.sub.end";
-          }
-       }
-    }
+   BASE_SCALE
+   group { name: "elm/genlist/item/msg_thread/default";
+
+      PROLOG_LIST
+      SCRIPT_START_SLIDE
+      data.item: "texts" "elm.text elm.text.1 elm.text.2";
+      data.item: "contents" "elm.swallow.center_check elm.icon";
+      data.item: "vi_effect" "on";
+
+      parts {
+         PART_LIST_BG
+         PART_LIST_PADDINGS_FOCUS_BG(
+         LIST_PADDING_LEFT_SIZE_INC, LIST_PADDING_RIGHT_SIZE_INC,
+         LIST_3LINE_PADDING_TOP_SIZE_INC, LIST_3LINE_PADDING_BOTTOM_SIZE_INC,
+         LIST_3LINE_PADDING_HIGHLIGHTED_TOP_SIZE_INC, LIST_3LINE_PADDING_HIGHLIGHTED_BOTTOM_SIZE_INC, LIST_3LINE_PADDING_SUB_TEXT_BOTTOM_SIZE_INC,
+         0, 0
+         )
+         PART_MAIN_TEXT("elm.text",
+         "elm.padding.left", "elm.padding.right", "elm.padding.top", "elm.padding.bottom"
+         )
+
+         PART(SWALLOW, "elm.icon", DESC_L("elm.text",
+         fixed: 1 0;
+         min: 0 0;
+         max: 20 20;
+         ))
+
+         PART(RECT, "clipper.sub_text",
+         DESC_LRTB("elm.padding.left", "elm.padding.right", "elm.padding.top", "elm.padding.bottom.1",
+         visible: 0;
+         )
+         description { state: "highlighting" 0.0;
+            visible: 1;
+            color: 0 0 0 0;
+         }
+         description { state: "highlighted" 0.0;
+            inherit: "highlighting" 0.0;
+            color: 255 255 255 255;
+         }
+         )
+         PART(TEXTBLOCK, "elm.text.1",
+         clip_to: "clipper.sub_text";
+         DESC_LRB("elm.padding.left", "elm.padding.right", "elm.text.2",
+         fixed: 1 0;
+         min: 0 LIST_TEXT_SUB_HEIGHT_INC;
+         PARAM_SUB_TEXT("list_text_sub_normal",)
+         )
+         description { state: "pressed" 0.0;
+            inherit: "default" 0.0;
+            text.style: "list_text_sub_press";
+         }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            text.style: "list_text_sub_disabled";
+         }
+         )
+         PART(TEXTBLOCK, "elm.text.2",
+         clip_to: "clipper.sub_text";
+         DESC_LRB("elm.padding.left", "elm.padding.right", "elm.padding.bottom.1",
+         fixed: 1 0;
+         min: 0 LIST_TEXT_SUB_HEIGHT_INC;
+         PARAM_SUB_TEXT("list_text_sub_normal",)
+         )
+         description { state: "pressed" 0.0;
+            inherit: "default" 0.0;
+            text.style: "list_text_sub_press";
+         }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            text.style: "list_text_sub_disabled";
+         }
+         )
+         PART_CENTER_CHECK
+         PART_LIST_EVENT
+      }
+      programs {
+         PROGRAM_LIST_DEFAULT(target: "elm.text"; target: "elm.text.1"; target: "elm.text.2"; target: "elm.padding.top"; target: "elm.padding.bottom"; target: "clipper.sub_text"; )
+         PROGRAM_LIST_HIGHLIGHT(target: "clipper.sub_text"; target: "elm.padding.top"; target: "elm.padding.bottom"; )
+         PROGRAM_LIST_DISABLE_SLIDE(target: "elm.text"; target: "elm.text.1"; target: "elm.text.2"; )
+         PROGRAM_LIST_SOUND
+         PROGRAM_LIST_EVENT
+      }
+   }
 }
\ No newline at end of file
index 062809b02fbf04db0da4daede30d94e6bb3a9013..c26297c8a008b009748a6b55d745386f6fb72ff0 100644 (file)
 #include "ListItem.h"
 #include <string>
 
-namespace Msg
-{
+namespace Msg {
     class ThreadListViewItem
-        : public ListItem
-    {
+        : public ListItem {
         public:
-            enum State
-            {
+            enum State {
                 NormalState,
-                StatusState,
                 IconState
             };
 
@@ -42,26 +38,18 @@ namespace Msg
             static void resetCheckMode(ListView &listView);
 
         protected:
-            virtual std::string getName() = 0;
-            virtual std::string getMessage() = 0;
-            virtual std::string getTime() = 0;
-            virtual Evas_Object *getThumbnail() = 0;
-            virtual std::string getStatus();
-            virtual Evas_Object *getIcon();
+            virtual std::string getName();
+            virtual std::string getMessage();
+            virtual std::string getTime();
+            virtual std::string getUnreadCount();
 
             using ListItem::getState;
             Evas_Object *makeUnreadIcon(const std::string &text) const;
-            std::string decorateNameText(const std::string &text) const;
-            std::string decorateMessageText(const std::string &text) const;
-            std::string decorateTimeText(const std::string &text) const;
-            std::string decorateFailedText(const std::string &text) const;
-            std::string decorateSendingText(const std::string &text) const;
-            std::string decorateDraftText(const std::string &text) const;
 
         private:
-            virtual std::string getText(ListItem &item, const char *part);
-            virtual Evas_Object *getContent(ListItem &item, const char *part);
-            virtual const char *getCheckPart(ListItem &item);
+            std::string getText(ListItem &item, const char *part) override;
+            Evas_Object *getContent(ListItem &item, const char *part) override;
+            const char *getCheckPart(ListItem &item) override;
 
         private:
             State m_State;
index d6277ef6dd676ad472bf218e11ee78b92ffd8abb..080db197622608818ff62904d8917364b51e3c06 100644 (file)
 
 using namespace Msg;
 
-namespace
-{
+namespace {
     ListItemStyleRef threadItemStyle = ListItemStyle::create("msg_thread");
 
-    const char *messagePart = "elm.text";
-    const char *namePart = "elm.text.sub";
-    const char *timePart = "elm.text.sub.end";
-    const char *thumbnailPart = "elm.swallow.icon";
-    const char *checkBoxPart = "elm.swallow.end";
-    const char *statusPart = "elm.text.end";
-    const char *iconPart = "elm.swallow.icon.1";
-
-    const TextStyle unreadTextStyle(34, "#e43d3dFF");
-    const TextStyle failedTextStyle(32, "#e43d3dFF");
-    const TextStyle draftTextStyle(32, "#e43d3dFF");
-    const TextStyle sendingTextStyle(32, "#969696FF");
+    const char *namePart = "elm.text";
+    const char *messagePart = "elm.text.1";
+    const char *timePart = "elm.text.2";
+    const char *checkBoxPart = "elm.swallow.center_check";
+    const char *iconPart = "elm.icon";
 }
 
 ThreadListViewItem::ThreadListViewItem(Elm_Genlist_Item_Type type)
@@ -57,16 +49,12 @@ ThreadListViewItem::~ThreadListViewItem()
 
 std::string ThreadListViewItem::getText(ListItem &item, const char *part)
 {
-    if (!strcmp(part, messagePart))
-    {
+    if (!strcmp(part, messagePart)) {
         return getMessage();
     } else if (!strcmp(part, namePart)) {
         return getName();
     } else if (!strcmp(part, timePart)) {
         return getTime();
-    } else if (!strcmp(part, statusPart)) {
-        if (m_State == StatusState)
-            return getStatus();
     }
 
     return "";
@@ -76,14 +64,9 @@ Evas_Object *ThreadListViewItem::getContent(ListItem &item, const char *part)
 {
     Evas_Object *content = nullptr;
 
-    if (!strcmp(part, thumbnailPart))
-    {
-        content = getThumbnail();
-    } else if (!strcmp(part, iconPart)) {
+    if (!strcmp(part, iconPart)) {
         if (m_State == IconState)
-        {
-            content = getIcon();
-        }
+            content = makeUnreadIcon(getUnreadCount());
     }
 
     return content;
@@ -98,10 +81,7 @@ void ThreadListViewItem::setState(State state, bool updateUi)
 {
     m_State = state;
     if (updateUi)
-    {
         updateFields(iconPart, ELM_GENLIST_ITEM_FIELD_CONTENT);
-        updateFields(statusPart, ELM_GENLIST_ITEM_FIELD_TEXT);
-    }
 }
 
 ThreadListViewItem::State ThreadListViewItem::getState() const
@@ -114,58 +94,31 @@ Evas_Object *ThreadListViewItem::makeUnreadIcon(const std::string &text) const
     if (text.empty())
         return nullptr;
     Evas_Object *icon = View::addLayout(*getOwner(), ICONS_EDJ_PATH, "badge");
-    elm_object_part_text_set(icon,  "elm.text.count", text.c_str());
+    elm_object_part_text_set(icon, "elm.text.count", text.c_str());
     evas_object_show(icon);
     return icon;
 }
 
-std::string ThreadListViewItem::getStatus()
-{
-    return std::string();
-}
-
-Evas_Object *ThreadListViewItem::getIcon()
-{
-    return nullptr;
-}
-
-std::string ThreadListViewItem::decorateNameText(const std::string &text) const
+std::string ThreadListViewItem::getName()
 {
-    // Style set in edc
-    return text;
+    return "NAME"; // only for test
 }
 
-std::string ThreadListViewItem::decorateMessageText(const std::string &text) const
+std::string ThreadListViewItem::getMessage()
 {
-    // Style set in edc
-    return text;
+    return "Message"; // only for test
 }
 
-std::string ThreadListViewItem::decorateTimeText(const std::string &text) const
+std::string ThreadListViewItem::getTime()
 {
-    // Style set in edc
-    return text;
+    return "17.45"; // only for test
 }
 
-std::string ThreadListViewItem::decorateFailedText(const std::string &text) const
+std::string ThreadListViewItem::getUnreadCount()
 {
-    return TextDecorator::make(text, failedTextStyle);
-}
-
-std::string ThreadListViewItem::decorateSendingText(const std::string &text) const
-{
-    return TextDecorator::make(text, sendingTextStyle);
-}
-
-std::string ThreadListViewItem::decorateDraftText(const std::string &text) const
-{
-    return TextDecorator::make(text, draftTextStyle);
+    return ""; // only for test
 }
 
 void ThreadListViewItem::resetCheckMode(ListView &listView)
 {
-    for (ListItem *item: listView.getRealizedItems())
-    {
-        item->emitSignal("elm,state,reset_check", "elm");
-    }
 }