[Genlist] Add sliding feature for groupindex
authorTae-Hwan Kim <the81.kim@samsung.com>
Thu, 9 May 2013 08:38:56 +0000 (17:38 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Wed, 12 Jun 2013 11:19:00 +0000 (20:19 +0900)
Change-Id: Ib4b6d0ef93dee4333242c4a93fb1ec121c6c5edd

themes/inc/tizen-hd-inc.edc
themes/widgets/genlist/genlist_groupindex.edc
themes/widgets/genlist/genlist_textblock_style.edc

index ea57f2d..73e8040 100644 (file)
 #define GENLIST_GROUPINDEX_LIST_SIZE                     32
 #define GENLIST_GROUPINDEX_LIST_COLOR                    59 115 182 255
 #define GENLIST_GROUPINDEX_LIST_FOCUS_COLOR              255 255 255 255
+#define GENLIST_GROUPINDEX_LIST_COLOR_STYLE              "#3B73B6FF"
 
 #define GENLIST_GROUPINDEX_LIST_BG_COLOR                 248 246 239 255
 #define GENLIST_GROUPINDEX_LIST_PRESS_COLOR              132 162 198 255
index 895e483..7e44fa5 100644 (file)
       text_class: "list_item"; \
    }
 
+// Group Index
+#define GENLIST_PARAM_INDEX_LIST_TB \
+   text { \
+      align: 0 0.5; \
+      min: 0 1; \
+      style: "genlist_style_groupindex_text"; \
+   }
+
+#define GENLIST_PART_PADDING_GROUPINDEX_LEFT \
+         GENLIST_PART_EXPANDED_PAD \
+         GENLIST_PART_RECT("elm.padding.left", \
+            GENLIST_DESCRIPTION_L("elm.swallow.pad",  \
+               color: GENLIST_LIST_BG_COLOR; \
+               min: GROUPINDEX_PADDING_SIZE_LEFT 0; \
+               max: GROUPINDEX_PADDING_SIZE_LEFT -1; \
+               fixed: 1 0; \
+            ) \
+            GENLIST_DESCRIPTION_DECORATE_PADDING \
+            GENLIST_DESCRIPTION_REORDER_PADDING \
+            GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+         )
+
+#define GENLIST_PART_PADDING_GROUPINDEX_RIGHT \
+         GENLIST_PART_RECT("elm.padding.right", \
+            description { state: "default" 0.0; \
+               color: GENLIST_LIST_BG_COLOR; \
+               min: GROUPINDEX_PADDING_SIZE_RIGHT 0; \
+               max: GROUPINDEX_PADDING_SIZE_RIGHT -1; \
+               fixed: 1 0; \
+               align: 1.0 0.5; \
+               rel1.to: "base"; \
+               rel2.to: "base"; \
+               rel1.relative: 1 0; \
+            } \
+            GENLIST_DESCRIPTION_DECORATE_PADDING \
+            GENLIST_DESCRIPTION_REORDER_PADDING \
+            GENLIST_DESCRIPTION_DECORATE_REORDER_PADDING \
+         )
+
+#define SLIDING_PER_FPS 1
+#define SLIDING_FPS     60.0
 // 2.1.1
    group { GENLIST_NAME("groupindex/default")
       alias: "elm/genlist/item/grouptitle/default";
 
       data.item: "texts" "elm.text";
 
+      script {
+         public sliding_timer;
+         public end_timer;
+         public text_w;
+         public org_text_w;
+
+         public get_width() {
+            new x, y, w, h;
+            get_geometry(PART:"elm.text", x, y, w, h);
+            set_int(org_text_w, w);
+
+            set_state(PART:"elm.text", "sliding", 0.0);
+            get_geometry(PART:"elm.text", x, y, w, h);
+            set_int(text_w, w);
+         }
+         public ender(val) {
+            if (get_int(sliding_timer)) cancel_timer(get_int(sliding_timer));
+            set_int(sliding_timer, 0);
+            if (get_int(end_timer)) cancel_timer(get_int(end_timer));
+            set_int(end_timer, 0);
+            set_state(PART:"elm.text", "default", 0.0);
+         }
+         public sliding(val) {
+            if (val == 0) {
+               get_width();
+               if (get_int(text_w) < get_int(org_text_w)) {
+                  set_int(end_timer, timer(0.5, "ender", 1));
+                  return;
+               }
+            }
+            /*
+            new buf[128];
+            snprintf(buf, 127, "val:%d <= org_w:%d - sliding_w:%d  ",
+               val, get_int(org_text_w), get_int(text_w));
+            set_text(PART:"dbg", buf);
+            */
+            custom_state(PART:"elm.text", "sliding", 0.0);
+            set_state_val(PART:"elm.text", STATE_REL1_OFFSET, val, 0);
+            set_state_val(PART:"elm.text", STATE_REL2_OFFSET, val, 0);
+            set_state(PART:"elm.text", "custom", 0.0);
+            val -= SLIDING_PER_FPS;
+
+            if (val <= -get_int(text_w) + get_int(org_text_w)) {
+               set_int(end_timer, timer(0.5, "ender", 1));
+            } else
+               set_int(sliding_timer, timer(1.0/SLIDING_FPS, "sliding", val));
+         }
+      }
+
       parts {
          GENLIST_PART_BASE
          GENLIST_PART_INDEX_BG
-         GENLIST_PART_PADDING_LEFT_SIZE(GROUPINDEX_PADDING_SIZE_LEFT)
-         GENLIST_PART_PADDING_RIGHT_SIZE(GROUPINDEX_PADDING_SIZE_RIGHT)
          GENLIST_PART_PADDING_TOP_SIZE(20)
          GENLIST_PART_PADDING_BOTTOM_SIZE(14)
-         GENLIST_PART_TEXT("elm.text",
+         GENLIST_PART_TEXTBLOCK("elm.text",
             GENLIST_DESCRIPTION_LRT("elm.padding.left", "elm.padding.right", "elm.padding.top",
-               GENLIST_PARAM_INDEX_LIST
+               GENLIST_PARAM_INDEX_LIST_TB
                min: 0 GROUPINDEX_TEXT_HEIGHT;
                fixed: 0 1;
             )
+            description { state: "sliding" 0.0;
+               inherit: "default";
+               text.min: 1 1;
+               align: 0 0;
+            }
             GENLIST_DESCRIPTION_INDEX_LIST
          )
          GENLIST_PART_INDEX_LINE("elm.padding.left", "elm.padding.right", "elm.text", "elm.padding.bottom")
+         /*
+         part { name: "dbg";
+            type: TEXT;
+            description { state: "default" 0.0;
+               color: 255 0 0 255;
+               text {
+                  font: "Sans";
+                  size: 12;
+                  align: 1.0 1.0;
+               }
+            }
+         }
+         */
+        GENLIST_PART_PADDING_GROUPINDEX_LEFT
+        GENLIST_PART_PADDING_GROUPINDEX_RIGHT
+      }
+      program { name: "default";
+         signal: "elm,state,default";
+         source: "elm";
+         script {
+            ender(1);
+            set_state(PART:"elm.text", "default", 0.0);
+            set_state(PART:"index_line", "default", 0.0);
+            set_state(PART:"bg", "default", 0.0);
+         }
       }
       programs {
          GENLIST_PROGRAM_DISABLED( target: "elm.text"; target: "index_line"; )
-         GENLIST_PROGRAM_SELECT( target: "elm.text"; target: "index_line"; target: "bg"; )
+         program { name: "selected";
+            signal: "elm,state,selected";
+            source: "elm";
+            script {
+               if (!get_int(sliding_timer) && !get_int(end_timer)) {
+                  set_state(PART:"elm.text", "selected", 0.0);
+                  set_state(PART:"index_line", "selected", 0.0);
+                  set_state(PART:"bg", "selected", 0.0);
+               }
+            }
+         }
+         program { name: "unselected";
+            signal: "elm,state,unselected";
+            source: "elm";
+            script {
+               if (!get_int(sliding_timer) && !get_int(end_timer)) {
+                  set_state(PART:"elm.text", "default", 0.0);
+                  set_state(PART:"index_line", "default", 0.0);
+                  set_state(PART:"bg", "default", 0.0);
+               }
+            }
+         }
+         program { name: "slide_start";
+            signal: "elm,state,slide,start";
+            source: "";
+            script {
+               set_state(PART:"index_line", "default", 0.0);
+               set_state(PART:"bg", "default", 0.0);
+               if (!get_int(sliding_timer) && !get_int(end_timer)) {
+                  set_int(sliding_timer, timer(0.5, "sliding", 0));
+               } else {
+                  set_state(PART:"elm.text", "default", 0.0);
+               }
+            }
+         }
+         program { name: "slide_stop";
+            signal: "elm,state,slide,stop";
+            source: "elm";
+            script {
+               ender(0);
+            }
+         }
       }
    }
 
index 8205711..4db80e8 100644 (file)
       tag:  "match" GENLIST_LIST_TEXT_FOCUS_COLOR_STYLE;
 
 styles {
+   // ********************** groupindex text
+   style { name: "genlist_style_groupindex_text";
+      base: "font=Tizen:style=Regular font_size="GENLIST_GROUPINDEX_LIST_SIZE" color="GENLIST_GROUPINDEX_LIST_COLOR_STYLE" text_class=list_item ellipsis=1.0";
+      STYLE_TAG
+      STYLE_TAG_MATCH
+   }
    // ********************** dialgoue group help text
    style { name: "genlist_style_dialogue_group_help_text";
       base: "font=Tizen:style=Regular font_size="GENLIST_DIALOGUE_GROUP_HELP_TEXT_SIZE" color="GENLIST_DIALOGUE_GROUP_HELP_TEXT_COLOR_STYLE" text_class=list_item wrap=mixed";