[ctxpopup] adjusted some issues in devel/uifw/master
[platform/core/uifw/efl-theme-tizen.git] / themes / widgets / check.edc
index 1448bb6..784e577 100644 (file)
       images { \
          image: "00_check_bg.png" COMP; \
          image: "00_check_dim_bg.png" COMP; \
-         image: "00_check_dim.png" COMP; \
-         image: "00_check_Activated.png" COMP; \
+         image: "00_check_activated_dim.png" COMP; \
+         image: "00_check_activated.png" COMP; \
+         image: "00_check_press_bg.png" COMP; \
+         image: "00_check_focus.png" COMP; \
       } \
       script { \
          public check_state = CHECK_STATE_DEFAULT; \
             description { state: "visible" 0.0; \
                inherit: "default" 0.0; \
             } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_check_press_bg.png"; \
+            } \
             description { state: "disabled" 0.0; \
                inherit: "default" 0.0; \
                image.normal: "00_check_dim_bg.png"; \
@@ -77,7 +83,7 @@
                rel1.to: "bg"; \
                rel2.to: "bg"; \
                visible: 0; \
-               image.normal: "00_check_Activated.png"; \
+               image.normal: "00_check_activated.png"; \
                color: 255 255 255 0; \
             } \
             description { state: "visible" 0.0; \
             description { state: "disabled_visible" 0.0; \
                inherit: "default" 0.0; \
                visible: 1; \
-               image.normal: "00_check_dim.png"; \
+               image.normal: "00_check_activated_dim.png"; \
                color: 255 255 255 255; \
             } \
+            description { state: "pressed" 0.0; \
+               inherit: "visible" 0.0; \
+            } \
          } \
          part { name: "sequence_clip"; \
             type: RECT; \
          program { name: "touch_sound"; \
             action: PLAY_SAMPLE "touch_sound" 1.0; \
          } \
+         program { name: "bg_normal"; \
+            signal: "mouse,up,1"; \
+            source: "events2"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg"; \
+            target: "check"; \
+         } \
+         program { name: "pressed"; \
+            signal: "mouse,down,1"; \
+            source: "events2"; \
+            action: STATE_SET "pressed" 0.0; \
+            target: "bg"; \
+            target: "check"; \
+         } \
          program { name: "mouse,out"; \
             signal: "mouse,out"; \
             source: "events2"; \
@@ -391,24 +414,27 @@ CHECK_STYLE_DEFAULT("default", CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_WIDTH_IN
 CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC)
 ////////////////////////////////////////////////////////////////////////////////
 
-#define CHECK_STYLE_FOR_GENLIST(style_name, min_width, min_height) \
+#define CHECK_STYLE_DEFAULT_GENLIST(style_name, min_width, min_height) \
    group { name: "elm/check/base/"style_name; \
       images { \
          image: "00_check_bg.png" COMP; \
          image: "00_check_dim_bg.png" COMP; \
-         image: "00_check_dim.png" COMP; \
-         image: "00_check_Activated.png" COMP; \
+         image: "00_check_activated_dim.png" COMP; \
+         image: "00_check_activated.png" COMP; \
       } \
       script { \
          public check_state = CHECK_STATE_DEFAULT; \
+         public check_visible = CHECK_HIDE; \
       } \
       parts { \
          part { name: "back_bg"; \
             type: RECT; \
             scale: 1; \
             description { state: "default" 0.0; \
+               rel2.relative: 0.0 1.0; \
+               align: 0 0.5; \
                min: min_width min_height; \
-               fixed: 0 0; \
+               fixed: 1 0; \
                color: 0 0 0 0; \
             } \
          } \
@@ -424,28 +450,54 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
                image.normal: "00_check_bg.png"; \
                fill.smooth : 0; \
             } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_check_press_bg.png"; \
+            } \
             description { state: "disabled" 0.0; \
                inherit: "default" 0.0; \
                image.normal: "00_check_dim_bg.png"; \
             } \
          } \
          part { name: "check"; \
+            clip_to: "sequence_clip"; \
             mouse_events: 0; \
             scale: 1; \
             description { state: "default" 0.0; \
                rel1.to: "bg"; \
                rel2.to: "bg"; \
                visible: 0; \
-               image.normal: "00_check_Activated.png"; \
+               image.normal: "00_check_activated.png"; \
+               color: 255 255 255 0; \
             } \
             description { state: "visible" 0.0; \
                inherit: "default" 0.0; \
                visible: 1; \
+               color: 255 255 255 255; \
             } \
             description { state: "disabled_visible" 0.0; \
                inherit: "default" 0.0; \
                visible: 1; \
-               image.normal: "00_check_dim.png"; \
+               image.normal: "00_check_activated_dim.png"; \
+               color: 255 255 255 255; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "visible" 0.0; \
+            } \
+         } \
+         part { name: "sequence_clip"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               rel2.relative: 0.0 1.0; \
+               color: 255 255 255 255; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               rel2.relative: 1.0 1.0; \
             } \
          } \
          part { name: "elm.swallow.content"; \
@@ -522,20 +574,6 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
                color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
             } \
          } \
-         part { name: "events1"; \
-            type: RECT; \
-            ignore_flags: ON_HOLD; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-            } \
-         } \
-         part { name: "events2"; \
-            type: RECT; \
-            repeat_events: 1; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-            } \
-         } \
          part { name: "disclip"; \
             type: RECT; \
             mouse_events: 0; \
@@ -560,21 +598,76 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
          } \
       } \
       programs { \
-         program { name: "click"; \
-            signal: "mouse,clicked,1"; \
-            source: "events1"; \
-            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
-            after: "touch_sound"; \
+         program { name: "show"; \
+            signal: "show"; \
+            script { \
+               set_int(check_visible, CHECK_SHOW); \
+            } \
          } \
-         program { name: "touch_sound"; \
-            action: PLAY_SAMPLE "touch_sound" 1.0; \
+         program { name: "hide"; \
+            signal: "hide"; \
+            script { \
+               set_int(check_visible, CHECK_HIDE); \
+            } \
+         } \
+         program { name: "bg_normal"; \
+            signal: "elm,state,mouse,up"; \
+            source: "elm"; \
+            script { \
+               if (CHECK_SHOW == get_int(check_visible)) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                 } \
+               else \
+                 { \
+                    set_state(PART:"check", "default", 0.0); \
+                 } \
+               set_state(PART:"bg", "default", 0.0); \
+            } \
+         } \
+         program { name: "pressed"; \
+            signal: "elm,state,mouse,down"; \
+            source: "elm"; \
+            action: STATE_SET "pressed" 0.0; \
+            script { \
+               if (CHECK_SHOW == get_int(check_visible)) \
+                 { \
+                    set_state(PART:"check", "pressed", 0.0); \
+                 } \
+               set_state(PART:"bg", "pressed", 0.0); \
+            } \
+         } \
+         program { name: "mouse,out"; \
+            signal: "mouse,out"; \
+            source: "events2"; \
+            script { \
+               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
+                 } \
+               else \
+                 { \
+                    set_state(PART:"check", "default", 0.0); \
+                    set_state(PART:"sequence_clip", "default", 0.0); \
+                 } \
+            } \
          } \
          program { name: "check_on"; \
             signal: "elm,state,check,on"; \
             source: "elm"; \
             script { \
                set_int(check_state, CHECK_STATE_VISIBLE); \
-               set_state(PART:"check", "visible", 0.0); \
+               if (get_int(check_visible) == CHECK_SHOW) \
+                 { \
+                    run_program(PROGRAM:"check_show_effect"); \
+                    run_program(PROGRAM:"check_draw_effect"); \
+                 } \
+               else \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
+                 } \
             } \
          } \
          program { name: "check_off"; \
@@ -587,9 +680,20 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
                  { \
                     set_int(check_state, CHECK_STATE_DEFAULT); \
                     set_state(PART:"check", "default", 0.0); \
+                    set_state(PART:"sequence_clip", "default", 0.0); \
                  } \
             } \
          } \
+         program { name: "check_show_effect"; \
+            action: STATE_SET "visible" 0.0; \
+            transition: LINEAR 0.233; \
+            target: "check"; \
+         } \
+         program { name: "check_draw_effect"; \
+            action: STATE_SET "visible" 0.0; \
+            transition: LINEAR 0.267; \
+            target: "sequence_clip"; \
+         } \
          program { name: "text_show"; \
             signal: "elm,state,text,visible"; \
             source: "elm"; \
@@ -672,6 +776,7 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
                if (!strcmp(st, "disabled_visible")) \
                  { \
                     set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
                     set_int(check_state, CHECK_STATE_VISIBLE); \
                  } \
                else \
@@ -681,665 +786,65 @@ CHECK_STYLE_DEFAULT("default/extended", CHECK_STYLE_DEFAULT_EXTENDED_BG_IMAGE_MI
       } \
    }
 ////////////////////////////////////////////////////////////////////////////////
-CHECK_STYLE_FOR_GENLIST("default/genlist_edit", CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
+CHECK_STYLE_DEFAULT_GENLIST("default/genlist_editmode", CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
+CHECK_STYLE_DEFAULT_GENLIST("default/genlist", CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_DEFAULT_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
 ////////////////////////////////////////////////////////////////////////////////
-   styles {
-      style { name: "check_label_textblock_style";
-         base: "font=Tizen:style=Roman font_size="CHECK_DEFAULT_TEXT_FONT_SIZE_INC" color=#ffffff wrap=char text_class=tizen";
-         tag: "br" "\n";
-         tag: "ps" "ps";
-         tag: "hilight" "+ font=Tizen:style=Bold";
-         tag: "b" "+ font=Tizen:style=Bold";
-         tag: "whitecolor" "+ color=#ffffff";
-         tag: "tab" "\t";
-      }
-   }
 
-   group { name: "elm/check/base/on&off";
-      images {
-         image: "00_button_on.png" COMP;
-         image: "00_button_on_dim.png" COMP;
-         image: "00_button_off.png" COMP;
-         image: "00_button_off_dim.png" COMP;
-         image: "00_button_on_off_handler.png" COMP;
-         image: "00_button_on_off_handler_dim.png" COMP;
-      }
-      script {
-         public is_rtl = 0;
-         public is_drag = 0;
-         public was_drag = 0;
-         public check_on = 0;
-      }
-      parts {
-         part { name: "bg";
-            type: RECT;
-            mouse_events: 1;
-            scale: 1;
-            description { state: "default" 0.0;
-               min: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
-               max: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
-               rel2.relative: 0.0 1.0;
-               fixed: 1 1;
-               align: 0.0 0.5;
-               visible: 0;
-            }
-         }
-         part { name: "padding_left";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 0.0 0.0;
-               rel1{ relative: 0.0 0.0; to: "bg"; }
-               rel2{ relative: 0.0 1.0; to: "bg"; }
-               min: 0 0;
-               fixed: 1 1;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "padding_right";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 1.0 0.0;
-               rel1 {
-                  relative: 1.0 0.0;
-                  to: "bg";
-               }
-               rel2 {
-                  relative: 1.0 1.0;
-                  to: "bg";
-               }
-               min: 0 0;
-               fixed: 1 1;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "padding_top";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 0.0 0.0;
-               rel1.to: "bg";
-               rel2 {
-                  relative: 1.0 0.0;
-                  to: "bg";
-               }
-               min: 0 0;
-               fixed: 1 1;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "padding_bottom";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               align: 1.0 1.0;
-               rel1 {
-                  relative: 0.0 1.0;
-                  to: "bg";
-               }
-               rel2 {
-                  relative: 1.0 1.0;
-                  to: "bg";
-               }
-               min: 0 0;
-               fixed: 0 1;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "bg_image";
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               align: 0.0 0.5;
-               rel1 {
-                  relative: 0.0 1.0;
-                  to_x: "bg";
-                  to_y: "padding_top";
-               }
-               rel2 {
-                  relative: 1.0 0.0;
-                  to_x: "bg";
-                  to_y: "padding_bottom";
-               }
-               image.normal: "00_button_off.png";
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_on.png";
-            }
-            description { state: "pressed" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_off.png";
-            }
-            description { state: "visible_pressed" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_on.png";
-            }
-            description { state: "visible_disable" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_on_dim.png";
-            }
-            description { state: "off_disable" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_off_dim.png";
-            }
-         }
-         part { name: "drag_container";
-            type: RECT;
-            scale: 1;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1 {
-                  relative: 1.0 0.0;
-                  to_x: "padding_left";
-                  to_y: "bg";
-               }
-               rel2 {
-                  relative: 0.0 1.0;
-                  to_x: "padding_right";
-                  to_y: "bg";
-               }
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "clipper";
-            type: RECT;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1.to: "bg";
-               rel2.to: "bg";
-               color: 255 255 255 255;
-            }
-         }
-         part { name: "clipper_inner";
-            type: RECT;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1.to: "bg_image";
-               rel2.to: "bg_image";
-               color: 255 255 255 255;
-            }
-         }
-         part { name: "button";
-            scale: 1;
-            clip_to: "clipper";
-            mouse_events: 1;
-            dragable {
-               x: 1 1 0;
-               y: 0 0 0;
-               confine: "drag_container";
-            }
-            description { state: "default" 0.0;
-               min: CHECK_ONOFF_HANDLER_MIN_MAX_INC;
-               max: CHECK_ONOFF_HANDLER_MIN_MAX_INC;
-               rel1.to: "bg";
-               rel2.to: "bg";
-               align: 0.0 0.5;
-               fixed: 1 1;
-               image.normal: "00_button_on_off_handler.png";
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_on_off_handler_dim.png";
-            }
-         }
-         part { name: "button_events";
-            type: RECT;
-            dragable {
-               events: "button";
-            }
-            description { state: "default" 0.0;
-               rel1.to_x: "bg";
-               rel2.to_x: "bg";
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "onrect";
-            type: RECT;
-            scale: 1;
-            clip_to: "clipper";
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1 {
-                  relative: -1.0 0.0;
-                  to: "button";
-               }
-               rel2 {
-                  relative: 0.0 1.0;
-                  to: "button";
-               }
-               align: 1.0 0.5;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "offrect";
-            type: RECT;
-            scale: 1;
-            clip_to: "clipper";
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1 {
-                  relative: 1.0 0.0;
-                  to: "button";
-               }
-               rel2 {
-                  relative: 2.0 1.0;
-                  to: "button";
-               }
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "elm.offtext";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "clipper_inner";
-            description { state: "default" 0.0;
-               rel1.to: "offrect";
-               rel2.to: "offrect";
-               color: 255 255 255 255;
-               text {
-                  font: "Tizen:style=Medium";
-                  size: 20;
-                  min: 0 1;
-                  text_class: "tizen";
-               }
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: 128 128 128 128;
-            }
-         }
-         part { name: "elm.ontext";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "clipper_inner";
-            description { state: "default" 0.0;
-               rel1.to: "onrect";
-               rel2.to: "onrect";
-               color: 255 255 255 255;
-               text {
-                  font: "Tizen:style=Medium";
-                  size: 20;
-                  min: 0 1;
-                  text_class: "tizen";
-               }
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: 128 128 128 128;
-            }
-         }
-         part { name: "elm.swallow.content";
-            type: SWALLOW;
-            clip_to: "disclip";
-            description { state: "default" 0.0;
-               fixed: 1 0;
-               visible: 0;
-               align: 0.0 0.5;
-               rel1 {
-                  to_x: "bg";
-                  relative: 1.0 0.0;
-               }
-               rel2 {
-                  to_x: "bg";
-                  relative: 1.0 1.0;
-               }
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               fixed: 1 1;
-               visible: 1;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               fixed: 1 1;
-               visible: 1;
-               aspect: 1.0 1.0;
-            }
-         }
-         part { name: "elm.text";
-            type: TEXTBLOCK;
-            mouse_events: 0;
-            scale: 1;
-            clip_to: "disclip";
-            description { state: "default" 0.0;
-               visible: 0;
-               fixed: 0 1;
-               rel1 {
-                  relative: 1.0 0.5;
-                  offset: 1 1;
-                  to_x: "elm.swallow.content";
-               }
-               rel2 {
-                  relative: 1.0 0.5;
-                  offset: -2 -2;
-               }
-               align: 0.0 0.5;
-               text {
-                  style: "check_label_textblock_style";
-                  min: 0 0;
-               }
-               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               text.min: 1 1;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               text.min: 1 1;
-            }
-         }
-         part { name: "disclip";
-            type: RECT;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               color: CHECK_DISCLIP_NORMAL_COLOR_INC;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: CHECK_DISCLIP_DISABLED_COLOR_INC;
-            }
-         }
-         part { name: "disabler";
-            type: RECT;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-               visible: 0;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-            }
-         }
-      }
-      programs {
-         program {
-            signal: "mouse,clicked,1";
-            source: "button";
-            script {
-               new Float:dx, Float:dy;
-               get_drag(PART:"button", dx, dy);
-               if (!get_int(was_drag)) {
-                  if (dx > 0.5)
-                    set_drag(PART:"button", 0.0, 0.0);
-                  else
-                    set_drag(PART:"button", 1.0, 0.0);
-                  if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
-                      (get_int(is_rtl) == 0) && (dx > 0.5)) {
-                     if (get_int(check_on)) {
-                       emit("elm,action,check,off", "");
-                       emit("elm,action,touch,sound", "");
-                     }
-                  }
-                  else {
-                     if (!get_int(check_on)) {
-                       emit("elm,action,check,on", "");
-                       emit("elm,action,touch,sound", "");
-                     }
-                  }
-               }
-            }
-         }
-         program { name: "touch_sound";
-            signal: "elm,action,touch,sound";
-            source: "";
-            action: PLAY_SAMPLE "touch_sound" 1.0;
-         }
-         program {
-            signal: "drag";
-            source: "button";
-            script {
-               if (!get_int(is_drag)) emit("elm,action,check,drag,start", "");
-               set_int(is_drag, 1);
-            }
-         }
-         program {
-            signal: "mouse,down,1";
-            source: "button";
-            script {
-               set_int(was_drag, 0);
-               set_int(is_drag, 0);
-            }
-         }
-         program { name: "drag_end";
-            signal: "mouse,up,1";
-            source: "button";
-            script {
-               new Float:dx, Float:dy;
-               get_drag(PART:"button", dx, dy);
-               if (get_int(is_drag)) {
-                  if (dx > 0.5)
-                    set_drag(PART:"button", 1.0, 0.0);
-                  else
-                    set_drag(PART:"button", 0.0, 0.0);
-                  if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
-                      (get_int(is_rtl) == 0) && (dx > 0.5)) {
-                     if (!get_int(check_on)) {
-                       emit("elm,action,check,on", "");
-                       emit("elm,action,touch,sound", "");
-                     }
-                  }
-                  else {
-                     if (get_int(check_on)) {
-                       emit("elm,action,check,off", "");
-                       emit("elm,action,touch,sound", "");
-                     }
-                  }
-                  set_int(was_drag, get_int(is_drag));
-                  set_int(is_drag, 0);
-                  emit("elm,action,check,drag,stop", "");
-               }
-            }
-         }
-         program { name: "check_on";
-            signal: "elm,state,check,on";
-            source: "elm";
-            script {
-               new Float:drag;
-               if (get_int(is_rtl) == 0) {
-                  drag = 100.0;
-               }
-               else {
-                  drag = 0.0;
-               }
-               set_drag(PART:"button", drag, 0.0);
-               set_state(PART:"bg_image", "visible", 0.0);
-               set_int(check_on, 1);
-            }
-         }
-         program { name: "check_off";
-            signal: "elm,state,check,off";
-            source: "elm";
-            script {
-               new Float:drag;
-               if (get_int(is_rtl) == 0) {
-                  drag = 0.0;
-               }
-               else {
-                  drag = 100.0;
-               }
-               set_drag(PART:"button", drag, 0.0);
-               set_state(PART:"bg_image", "default", 0.0);
-               set_int(check_on, 0);
-            }
-         }
-         program { name: "text_show";
-            signal: "elm,state,text,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.text";
-         }
-         program { name: "text_hide";
-            signal: "elm,state,text,hidden";
-            source: "elm";
-            action:  STATE_SET "default" 0.0;
-            target: "elm.text";
-         }
-         program { name: "icon_show";
-            signal: "elm,state,icon,visible";
-            source: "elm";
-            action:  STATE_SET "visible" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "icon_hide";
-            signal: "elm,state,icon,hidden";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "disable";
-            signal: "elm,state,disabled";
-            source: "elm";
-            action: STATE_SET "disabled" 0.0;
-            target: "elm.offtext";
-            target: "elm.ontext";
-            target: "onrect";
-            target: "offrect";
-            target: "disabler";
-            after: "disable_text";
-         }
-         program { name: "disable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.text", "disabled_visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "disabled", 0.0);
-               get_state(PART:"bg_image", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"bg_image", "visible_disable", 0.0);
-               else
-                 set_state(PART:"bg_image", "off_disable", 0.0);
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0);
-               else
-                 set_state(PART:"elm.swallow.content", "disabled", 0.0);
-               set_state(PART:"button", "disabled", 0.0);
-            }
-         }
-         program { name: "enable";
-            signal: "elm,state,enabled";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "disabler";
-            target: "onrect";
-            target: "offrect";
-            after: "enable_text";
-         }
-         program { name: "enable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "disabled_visible"))
-                 set_state(PART:"elm.text", "visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "default", 0.0);
-               get_state(PART:"bg_image", st, 30, vl);
-               if (!strcmp(st, "visible_disable"))
-                 set_state(PART:"bg_image", "visible", 0.0);
-               else
-                 set_state(PART:"bg_image", "default", 0.0);
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.swallow.content", "visible", 0.0);
-               else
-                 set_state(PART:"elm.swallow.content", "default", 0.0);
-               set_state(PART:"button", "default", 0.0);
-            }
-         }
-         program { name: "to_rtl";
-            signal: "edje,state,rtl";
-            source: "edje";
-            script {
-               set_int(is_rtl, 1);
-            }
-         }
-         program { name: "to_ltr";
-            signal: "edje,state,ltr";
-            source: "edje";
-            script {
-               set_int(is_rtl, 0);
-            }
-         }
-      }
-   }
-///////////////////////////////////////////////////////////////////////////////////////
-
-#define CHECK_STYLE_FAVORITE(style_name, min_width, min_height) \
+#define CHECK_STYLE_FOR_GENLIST(style_name, min_width, min_height) \
    group { name: "elm/check/base/"style_name; \
       images { \
-         image: "00_icon_favorite_on_72x72.png" COMP; \
-         image: "00_icon_favorite_on_72x72_dim.png" COMP; \
-         image: "00_icon_favorite_off_72x72.png" COMP; \
-         image: "00_icon_favorite_off_72x72_dim.png" COMP; \
+         image: "00_check_bg.png" COMP; \
+         image: "00_check_dim_bg.png" COMP; \
+         image: "00_check_activated_dim.png" COMP; \
+         image: "00_check_activated.png" COMP; \
+      } \
+      script { \
+         public check_state = CHECK_STATE_DEFAULT; \
       } \
       parts { \
          part { name: "back_bg"; \
             type: RECT; \
             scale: 1; \
             description { state: "default" 0.0; \
-               visible: 0; \
-               rel2.relative: 0.0 1.0; \
-               align: 0 0.5; \
                min: min_width min_height; \
-               fixed: 1 0; \
+               fixed: 0 0; \
+               color: 0 0 0 0; \
             } \
          } \
          part { name: "bg"; \
-            type: RECT; \
-            clip_to: "disclip"; \
+            mouse_events: 0; \
             scale: 1; \
             description { state: "default" 0.0; \
-               visible: 0; \
+               min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               fixed: 1 1; \
                rel1.to: "back_bg"; \
                rel2.to: "back_bg"; \
-               min: CHECK_STYLE_FAVORITE_BG_NORMAL_MIN_MAX_INC; \
-               max: CHECK_STYLE_FAVORITE_BG_NORMAL_MIN_MAX_INC; \
-               fixed: 1 1; \
+               image.normal: "00_check_bg.png"; \
+               fill.smooth : 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_check_dim_bg.png"; \
             } \
          } \
          part { name: "check"; \
             mouse_events: 0; \
-            clip_to: "disclip"; \
             scale: 1; \
             description { state: "default" 0.0; \
                rel1.to: "bg"; \
                rel2.to: "bg"; \
-               image.normal: "00_icon_favorite_off_72x72.png"; \
+               visible: 0; \
+               image.normal: "00_check_activated.png"; \
             } \
             description { state: "visible" 0.0; \
                inherit: "default" 0.0; \
-               image.normal: "00_icon_favorite_on_72x72.png"; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_icon_favorite_off_72x72_dim.png"; \
+               visible: 1; \
             } \
             description { state: "disabled_visible" 0.0; \
                inherit: "default" 0.0; \
-               image.normal: "00_icon_favorite_on_72x72_dim.png"; \
+               visible: 1; \
+               image.normal: "00_check_activated_dim.png"; \
             } \
          } \
          part { name: "elm.swallow.content"; \
@@ -1352,774 +857,547 @@ CHECK_STYLE_FOR_GENLIST("default/genlist_edit", CHECK_STYLE_FAVORITE_DEFAULT_BG_
                rel1 { \
                   to_x: "bg"; \
                   relative: 1.0 0.0; \
-                  offset: 1 1; \
-               } \
-               rel2 { \
-                  to_x: "bg"; \
-                  relative: 1.0 1.0; \
-                  offset: 2 -2; \
-               } \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               fixed: 1 1; \
-               visible: 1; \
-               aspect: 1.0 1.0; \
-               aspect_preference: VERTICAL; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-            } \
-            description { state: "disabled_visible" 0.0; \
-               inherit: "default" 0.0; \
-               fixed: 1 1; \
-               visible: 1; \
-               aspect: 1.0 1.0; \
-            } \
-         } \
-         part { name: "elm.text"; \
-            type: TEXTBLOCK; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               visible: 0; \
-               fixed: 0 1; \
-               rel1 { \
-                  relative: 1.0 0.5; \
-                  offset: 1 1; \
-                  to_x: "elm.swallow.content"; \
-               } \
-               rel2 { \
-                  relative: 1.0 0.5; \
-                  offset: -2 -2; \
-               } \
-               align: 0.0 0.5; \
-               text { \
-                 style: "check_label_textblock_style"; \
-                 min: 0 0; \
-               } \
-               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
-            } \
-            description { state: "visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               text.min: 1 1; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-            } \
-            description { state: "disabled_visible" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-               text.min: 1 1; \
-               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
-            } \
-         } \
-         part { name: "disclip"; \
-            type: RECT; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               color: CHECK_DISCLIP_NORMAL_COLOR_INC; \
-            } \
-         } \
-         part { name: "events"; \
-            type: RECT; \
-            ignore_flags: ON_HOLD; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-            } \
-         } \
-         part { name: "disabler"; \
-            type: RECT; \
-            description { state: "default" 0.0; \
-               color: 0 0 0 0; \
-               visible: 0; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-            } \
-         } \
-      } \
-      programs { \
-         program { name: "click"; \
-            signal: "mouse,clicked,1"; \
-            source: "events"; \
-            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
-            after: "touch_sound"; \
-         } \
-         program { name: "touch_sound"; \
-            action: PLAY_SAMPLE "touch_sound" 1.0; \
-         } \
-         program { name: "check_on"; \
-            signal: "elm,state,check,on"; \
-            source: "elm"; \
-            action: STATE_SET "visible" 0.0; \
-            target: "check"; \
-         } \
-         program { name: "check_off"; \
-            signal: "elm,state,check,off"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "check"; \
-         } \
-         program { name: "text_show"; \
-            signal: "elm,state,text,visible"; \
-            source: "elm"; \
-            action: STATE_SET "visible" 0.0; \
-            target: "elm.text"; \
-         } \
-         program { name: "text_hide"; \
-            signal: "elm,state,text,hidden"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.text"; \
-         } \
-         program { name: "icon_show"; \
-            signal: "elm,state,icon,visible"; \
-            source: "elm"; \
-            action: STATE_SET "visible" 0.0; \
-            target: "elm.swallow.content"; \
-         } \
-         program { name: "icon_hide"; \
-            signal: "elm,state,icon,hidden"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.swallow.content"; \
-         } \
-         program { name: "disable"; \
-            signal: "elm,state,disabled"; \
-            source: "elm"; \
-            action: STATE_SET "disabled" 0.0; \
-            target: "disabler"; \
-            after: "disable_text"; \
-         } \
-         program { name: "disable_text"; \
-            script { \
-               new st[31]; \
-               new Float:vl; \
-               get_state(PART:"elm.text", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
-               else \
-                 set_state(PART:"elm.text", "disabled", 0.0); \
-               get_state(PART:"elm.swallow.content", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
-               else \
-                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
-               get_state(PART:"check", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"check", "disabled_visible", 0.0); \
-               else \
-                 set_state(PART:"check", "disabled", 0.0); \
-            } \
-         } \
-         program { name: "enable"; \
-            signal: "elm,state,enabled"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "disabler"; \
-            after: "enable_text"; \
-         } \
-         program { name: "enable_text"; \
-            script { \
-               new st[31]; \
-               new Float:vl; \
-               get_state(PART:"elm.text", st, 30, vl); \
-               if (!strcmp(st, "disabled_visible")) \
-                 set_state(PART:"elm.text", "visible", 0.0); \
-               else \
-                 set_state(PART:"elm.text", "default", 0.0); \
-               get_state(PART:"elm.swallow.content", st, 30, vl); \
-               if (!strcmp(st, "visible")) \
-                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
-               else \
-                 set_state(PART:"elm.swallow.content", "default", 0.0); \
-               get_state(PART:"check", st, 30, vl); \
-               if (!strcmp(st, "disabled_visible")) \
-                 set_state(PART:"check", "visible", 0.0); \
-               else \
-                 set_state(PART:"check", "default", 0.0); \
+                  offset: 1 1; \
+               } \
+               rel2 { \
+                  to_x: "bg"; \
+                  relative: 1.0 1.0; \
+                  offset: 2 -2; \
+               } \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+               aspect_preference: VERTICAL; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
             } \
          } \
-      } \
-   }
-////////////////////////////////////////////////////////////////////////////////
-CHECK_STYLE_FAVORITE("favorite", CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
-////////////////////////////////////////////////////////////////////////////////
-CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC)
-////////////////////////////////////////////////////////////////////////////////
-
-   group { name: "elm/check/base/grid";
-      images.image: "00_check_bg.png" COMP;
-      images.image: "00_check_dim_bg.png" COMP;
-      images.image: "00_check_dim.png" COMP;
-      images.image: "00_check_Activated.png" COMP;
-      script {
-         public check_state = CHECK_STATE_DEFAULT;
-         public check_visible = CHECK_HIDE;
-      }
-      parts {
-         part { name: "bg";
-            type: RECT;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-            }
-         }
-         part { name: "top_left_padding";
-            type: RECT;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-               min: GENGRID_ITEM_CHECK_TOP_RIGHT_PADDING_INC;
-               align: 0.0 0.0;
-               fixed: 1 1;
-               rel1 {
-                  relative: 0.0 0.0;
-                  to: "bg";
-               }
-               rel2 {
-                  relative: 0.0 0.0;
-                  to: "bg";
-               }
-            }
-         }
-         part { name: "bg2";
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               min: GENGRID_EDIT_MODE_CHECK_SIZE_INC;
-               align: 0.0 0.0;
-               fixed: 1 1;
-               rel1 {
-                  relative: 0.0 1.0;
-                  to: "top_left_padding";
-               }
-               rel2 {
-                  relative: 0.0 1.0;
-                  to: "top_left_padding";
-               }
-               image.normal: "00_check_bg.png";
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_check_dim_bg.png";
-            }
-         }
-         part { name: "check";
-            mouse_events: 0;
-            clip_to: "sequence_clip";
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-               rel1.to: "bg2";
-               rel2.to: "bg2";
-               image.normal: "00_check_Activated.png";
-               color: 255 255 255 0;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               color: 255 255 255 255;
-            }
-            description { state: "pressed" 0.0;
-               inherit: "visible" 0.0;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "00_check_dim.png";
-            }
-         }
-         part { name: "sequence_clip";
-            type: RECT;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               rel1.to: "bg2";
-               rel2.to: "bg2";
-               rel2.relative: 0.0 1.0;
-               color: 255 255 255 255;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               rel2.relative: 1.0 1.0;
-            }
-         }
-         part { name: "elm.swallow.content";
-            type: SWALLOW;
-            description {
-               state: "default" 0.0;
-               fixed: 1 0;
-               visible: 0;
-               color: 255 255 255 255;
-               align: 0.0 0.5;
-               rel1 {
-                  to_x: "bg2";
-                  relative: 1.0 0.0;
-                  offset: 1 1;
-               }
-               rel2 {
-                  to_x: "bg2";
-                  relative: 1.0 1.0;
-                  offset: 2 -2;
-               }
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               fixed: 1 1;
-               visible: 1;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: 128 128 128 128;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               color: 128 128 128 128;
-               fixed: 1 1;
-               visible: 1;
-               aspect: 1.0 1.0;
-            }
-         }
-         part { name: "elm.text";
-            type: TEXTBLOCK;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               visible: 0;
-               fixed: 0 1;
-               rel1 {
-                  relative: 1.0 0.5;
-                  offset: 1 1;
-                  to_x: "elm.swallow.content";
-               }
-               rel2 {
-                  relative: 1.0 0.5;
-                  offset: -2 -2;
-               }
-               color: 255 255 255 255;
-               align: 0.0 0.5;
-               text {
-                  style: "check_label_textblock_style";
-                  min: 0 0;
-               }
-               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC;
-            }
-            description { state: "visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               text.min: 1 1;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               text.min: 1 1;
-               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC;
-            }
-         }
-         part { name: "events";
-            type: RECT;
-            ignore_flags: ON_HOLD;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-            }
-         }
-         part { name: "disabler";
-            type: RECT;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-               visible: 0;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-            }
-         }
+         part { name: "elm.text"; \
+            type: TEXTBLOCK; \
+            mouse_events: 0; \
+            clip_to: "disclip"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 0 1; \
+               rel1 { \
+                  relative: 1.0 0.5; \
+                  offset: 1 1; \
+                  to_x: "elm.swallow.content"; \
+               } \
+               rel2 { \
+                  relative: 1.0 0.5; \
+                  offset: -2 -2; \
+               } \
+               align: 0.0 0.5; \
+               text { \
+                  style: "check_label_textblock_style"; \
+                  min: 0 0; \
+               } \
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "events1"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "events2"; \
+            type: RECT; \
+            repeat_events: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disclip"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: CHECK_DISCLIP_NORMAL_COLOR_INC; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: CHECK_DISCLIP_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "click"; \
+            signal: "mouse,clicked,1"; \
+            source: "events1"; \
+            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
+            after: "touch_sound"; \
+         } \
+         program { name: "touch_sound"; \
+            action: PLAY_SAMPLE "touch_sound" 1.0; \
+         } \
+         program { name: "check_on"; \
+            signal: "elm,state,check,on"; \
+            source: "elm"; \
+            script { \
+               set_int(check_state, CHECK_STATE_VISIBLE); \
+               set_state(PART:"check", "visible", 0.0); \
+            } \
+         } \
+         program { name: "check_off"; \
+            signal: "elm,state,check,off"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "check"; \
+            script { \
+               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
+                 { \
+                    set_int(check_state, CHECK_STATE_DEFAULT); \
+                    set_state(PART:"check", "default", 0.0); \
+                 } \
+            } \
+         } \
+         program { name: "text_show"; \
+            signal: "elm,state,text,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "text_hide"; \
+            signal: "elm,state,text,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "icon_show"; \
+            signal: "elm,state,icon,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "icon_hide"; \
+            signal: "elm,state,icon,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "disclip"; \
+            target: "bg"; \
+            after: "disable_text"; \
+         } \
+         program { name: "disable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "disabled", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 { \
+                    set_state(PART:"check", "disabled_visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \
+                 } \
+            } \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "disclip"; \
+            target: "bg"; \
+            after: "enable_text"; \
+         } \
+         program { name: "enable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"elm.text", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "default", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "default", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_VISIBLE); \
+                 } \
+               else \
+                 set_int(check_state, CHECK_STATE_DEFAULT); \
+            } \
+         } \
+      } \
+   }
+////////////////////////////////////////////////////////////////////////////////
+CHECK_STYLE_FOR_GENLIST("default/genlist_edit", CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
+////////////////////////////////////////////////////////////////////////////////
+   styles {
+      style { name: "check_label_textblock_style";
+         base: "font=Tizen:style=Roman font_size="CHECK_DEFAULT_TEXT_FONT_SIZE_INC" color=#ffffff wrap=char text_class=tizen";
+         tag: "br" "\n";
+         tag: "ps" "ps";
+         tag: "hilight" "+ font=Tizen:style=Bold";
+         tag: "b" "+ font=Tizen:style=Bold";
+         tag: "whitecolor" "+ color=#ffffff";
+         tag: "tab" "\t";
       }
-      programs {
-         program { name: "show";
-            signal: "show";
-            script {
-               set_int(check_visible, CHECK_SHOW);
-            }
-         }
-         program { name: "hide";
-            signal: "hide";
-            script {
-               set_int(check_visible, CHECK_HIDE);
-            }
-         }
-         program { name: "click";
-            signal: "mouse,clicked,1";
-            source: "events";
-            action: SIGNAL_EMIT "elm,action,check,toggle" "";
-            after: "bg_normal";
-         }
-         program { name: "bg_normal";
-            script {
-               set_state(PART:"bg2", "default", 0.0);
-            }
-         }
-         program { name: "pressed";
-            signal: "mouse,down,1";
-            source: "events";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 {
-                    set_state(PART:"check", "pressed", 0.0);
-                    set_state(PART:"bg2", "visible", 0.0);
-                 }
-            }
-         }
-         program { name: "mouse,out";
-            signal: "mouse,out";
-            source: "events";
-            script {
-               if (get_int(check_state) == CHECK_STATE_VISIBLE)
-                 {
-                    set_state(PART:"check", "visible", 0.0);
-                    set_state(PART:"sequence_clip", "visible", 0.0);
-                    set_state(PART:"bg2", "visible", 0.0);
-                 }
-               else
-                 {
-                    set_state(PART:"check", "default", 0.0);
-                    set_state(PART:"sequence_clip", "default", 0.0);
-                    set_state(PART:"bg2", "default", 0.0);
-                 }
-            }
-         }
-         program { name: "check_on";
-            signal: "elm,state,check,on";
-            source: "elm";
-            script {
-               set_int(check_state, CHECK_STATE_VISIBLE);
-               if (get_int(check_visible) == CHECK_SHOW)
-                 {
-                    run_program(PROGRAM:"check_show_effect");
-                    run_program(PROGRAM:"check_draw_effect");
-                 }
-               else
-                 {
-                    set_state(PART:"check", "visible", 0.0);
-                    set_state(PART:"sequence_clip", "visible", 0.0);
-                 }
-               set_state(PART:"bg2", "visible", 0.0);
+   }
+
+   group { name: "elm/check/base/on&off";
+      images {
+         image: "00_button_on_handler.png" COMP;
+         image: "00_button_on_handler_dim.png" COMP;
+         image: "00_button_off_handler.png" COMP;
+         image: "00_button_off_handler_dim.png" COMP;
+         image: "00_button_on_off_bg.png" COMP;
+         image: "00_button_on_off_bg_dim.png" COMP;
+         image: "00_button_handler_focus.png" COMP;
+      }
+      script {
+         public is_rtl = 0;
+         public is_drag = 0;
+         public was_drag = 0;
+         public check_on = 0;
+      }
+      parts {
+         part { name: "bg";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
+               max: CHECK_ONOFF_BG_NORMAL_MIN_MAX_INC;
+               rel2.relative: 0.0 1.0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               visible: 0;
             }
          }
-         program { name: "check_off";
-            signal: "elm,state,check,off";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "check";
-            script {
-               if (get_int(check_state) == CHECK_STATE_VISIBLE)
-                 {
-                    set_int(check_state, CHECK_STATE_DEFAULT);
-                    set_state(PART:"check", "default", 0.0);
-                    set_state(PART:"sequence_clip", "default", 0.0);
-                 }
-               set_state(PART:"bg2", "default", 0.0);
+         part { name: "padding_left";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1{ relative: 0.0 0.0; to: "bg"; }
+               rel2{ relative: 0.0 1.0; to: "bg"; }
+               min: 0 0;
+               fixed: 1 1;
+               color: 0 0 0 0;
             }
          }
-         program { name: "check_show_effect";
-            action: STATE_SET "visible" 0.0;
-            transition: LINEAR 0.233;
-            target: "check";
-         }
-         program { name: "check_draw_effect";
-            action: STATE_SET "visible" 0.0;
-            transition: LINEAR 0.267;
-            target: "sequence_clip";
-         }
-         program { name: "text_show";
-            signal: "elm,state,text,visible";
-            source: "elm";
-            action: STATE_SET "visible" 0.0;
-            target: "elm.text";
-         }
-         program { name: "text_hide";
-            signal: "elm,state,text,hidden";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "elm.text";
-         }
-         program { name: "icon_show";
-            signal: "elm,state,icon,visible";
-            source: "elm";
-            action: STATE_SET "visible" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "icon_hide";
-            signal: "elm,state,icon,hidden";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "elm.swallow.content";
-         }
-         program { name: "disable";
-            signal: "elm,state,disabled";
-            source: "elm";
-            action: STATE_SET "disabled" 0.0;
-            target: "disabler";
-            target: "bg2";
-            after: "disable_text";
-         }
-         program { name: "disable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.text", "disabled_visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "disabled", 0.0);
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0);
-               else
-                 set_state(PART:"elm.swallow.content", "disabled", 0.0);
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 {
-                    set_state(PART:"check", "disabled_visible", 0.0);
-                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE);
-                 }
+         part { name: "padding_right";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "bg";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "bg";
+               }
+               min: 0 0;
+               fixed: 1 1;
+               color: 0 0 0 0;
             }
          }
-         program { name: "enable";
-            signal: "elm,state,enabled";
-            source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "disabler";
-            target: "bg2";
-            after: "enable_text";
+         part { name: "padding_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.to: "bg";
+               rel2 {
+                  relative: 1.0 0.0;
+                  to: "bg";
+               }
+               min: 0 0;
+               fixed: 1 1;
+               color: 0 0 0 0;
+            }
          }
-         program { name: "enable_text";
-            script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"elm.text", st, 30, vl);
-               if (!strcmp(st, "disabled_visible"))
-                 set_state(PART:"elm.text", "visible", 0.0);
-               else
-                 set_state(PART:"elm.text", "default", 0.0);
-               get_state(PART:"elm.swallow.content", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 set_state(PART:"elm.swallow.content", "visible", 0.0);
-               else
-                 set_state(PART:"elm.swallow.content", "default", 0.0);
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "disabled_visible"))
-                 {
-                    set_state(PART:"check", "visible", 0.0);
-                    set_state(PART:"sequence_clip", "visible", 0.0);
-                    set_int(check_state, CHECK_STATE_VISIBLE);
-                 }
-               else
-                 set_int(check_state, CHECK_STATE_DEFAULT);
+         part { name: "padding_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to: "bg";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "bg";
+               }
+               min: 0 0;
+               fixed: 0 1;
+               color: 0 0 0 0;
             }
          }
-      }
-   }
-
-/////////////////////////////////////////////////////////////////////////////
-#if 0
-   group { name: "elm/check/base/delete";
-      images {
-         image: "00_button_minus.png" COMP;
-         image: "00_button_minus_press.png" COMP;
-         image: "00_button_edit_Delete.png" COMP;
-         image: "00_button_edit_Delete_press.png" COMP;
-         image: "00_button_edit_dim.png" COMP;
-         image: "00_button_edit_focus.png" COMP;
-      }
-      script {
-         public button_state = 0; //0:enabled, 1: disabled
-      }
-      parts {
-         part { name: "bg1";
+         part { name: "bg_image";
+            mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
-               align: 1.0 0.5;
-               rel1.to: "bg2";
-               rel2.to: "bg2";
-               image {
-                  normal: "00_button_edit_Delete.png";
-                  border: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_BORDER_INC;
-                  border_scale: 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "bg";
+                  to_y: "padding_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "bg";
+                  to_y: "padding_bottom";
                }
+               image.normal: "00_button_on_off_bg.png";
             }
-            description { state: "clicked" 0.0;
+            description { state: "visible" 0.0;
                inherit: "default" 0.0;
-               image.normal: "00_button_edit_Delete_press.png";
+               image.normal: "00_button_on_off_bg.png";
             }
-            description { state: "intermediate" 0.0;
+            description { state: "pressed" 0.0;
                inherit: "default" 0.0;
-               visible: 0;
+               image.normal: "00_button_on_off_bg.png";
             }
-            description { state: "on" 0.0;
+            description { state: "visible_pressed" 0.0;
                inherit: "default" 0.0;
-               visible: 0;
+               image.normal: "00_button_on_off_bg.png";
             }
-            description { state: "disabled" 0.0;
+            description { state: "visible_disable" 0.0;
                inherit: "default" 0.0;
-               image.normal: "00_button_edit_dim.png";
+               image.normal: "00_button_on_off_bg_dim.png";
             }
-            description { state: "focused" 0.0;
+            description { state: "off_disable" 0.0;
                inherit: "default" 0.0;
-               image.normal: "00_button_edit_focus.png";
+               image.normal: "00_button_on_off_bg_dim.png";
             }
          }
-         part { name: "bg2";
+         part { name: "drag_container";
+            type: RECT;
             scale: 1;
+            mouse_events: 0;
             description { state: "default" 0.0;
-               align: 1.0 0.5;
-               min: CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC;
-               max: CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC;
-               rel1.relative: 1.0 0.0;
-               fixed: 1 0;
-               image.normal: "00_button_minus.png";
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left";
+                  to_y: "bg";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "padding_right";
+                  to_y: "bg";
+               }
+               color: 0 0 0 0;
             }
-            description { state: "clicked" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_button_minus_press.png";
+         }
+         part { name: "clipper";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "clipper_inner";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "bg_image";
+               rel2.to: "bg_image";
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "button";
+            scale: 1;
+            clip_to: "clipper";
+            mouse_events: 1;
+            dragable {
+               x: 1 1 0;
+               y: 0 0 0;
+               confine: "drag_container";
+            }
+            description { state: "default" 0.0;
+               min: CHECK_ONOFF_HANDLER_MIN_MAX_INC;
+               max: CHECK_ONOFF_HANDLER_MIN_MAX_INC;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               align: 0.0 0.5;
+               fixed: 1 1;
+               image.normal: "00_button_off_handler.png";
             }
-            description { state: "intermediate" 0.0;
+            description { state: "on" 0.0;
                inherit: "default" 0.0;
-               visible: 0;
+               image.normal: "00_button_on_handler.png";
             }
-            description { state: "on" 0.0;
+            description { state: "on_disabled" 0.0;
                inherit: "default" 0.0;
-               visible: 0;
+               image.normal: "00_button_on_handler_dim.png";
             }
-            description { state: "disabled" 0.0;
+            description { state: "off_disabled" 0.0;
                inherit: "default" 0.0;
-               image.normal: "00_button_minus.png";
+               image.normal: "00_button_off_handler_dim.png";
             }
          }
-         part { name: "clipper";
+         part { name: "button_events";
             type: RECT;
-            mouse_events: 0;
-            scale: 1;
-            description { state: "default" 0.0;
-               align: 1.0 0.5;
-               min: CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC;
-               max: CHECK_STYLE_DELETE_BUTTON_BG_IMAGE_MIN_MAX_WIDTH_INC;
-               color: 255 255 255 255;
+            dragable {
+               events: "button";
             }
-            description { state: "on" 0.0;
-               align: 1.0 0.5;
-               min: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               max: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               color: 255 255 255 255;
+            description { state: "default" 0.0;
+               rel1.to_x: "bg";
+               rel2.to_x: "bg";
+               color: 0 0 0 0;
             }
          }
-         part { name: "bg_expand";
-            mouse_events: 0;
+         part { name: "onrect";
+            type: RECT;
             scale: 1;
             clip_to: "clipper";
+            mouse_events: 0;
             description { state: "default" 0.0;
-               align: 0.0 0.5;
-               min: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               max: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               image {
-                  normal: "00_button_edit_Delete.png";
-                  border: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_BORDER_INC;
-                  border_scale: 1;
-               }
                rel1 {
-                  relative: 1 0; 
-                  to_x: "bg2"; 
+                  relative: -1.0 0.0;
+                  to: "button";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to: "button";
                }
-               rel2.to_x: "bg2";
-               fixed: 1 0;
-            }
-            description { state: "clicked" 0.0;
-               inherit: "default" 0.0;
                align: 1.0 0.5;
-               image.normal: "00_button_edit_Delete_press.png";
+               color: 0 0 0 0;
             }
-            description { state: "intermediate" 0.0;
-               inherit: "default" 0.0;
+         }
+         part { name: "offrect";
+            type: RECT;
+            scale: 1;
+            clip_to: "clipper";
+            mouse_events: 0;
+            description { state: "default" 0.0;
                rel1 {
-                  relative: 0;
-                  to_x: "bg2";
+                  relative: 1.0 0.0;
+                  to: "button";
                }
                rel2 {
-                  relative: 0 1;
-                  to_x: "bg2";
+                  relative: 2.0 1.0;
+                  to: "button";
                }
-            }
-            description { state: "on" 0.0;
-               inherit: "default" 0.0;
-               align: 1.0 0.5;
+               color: 0 0 0 0;
             }
          }
-         part { name: "check";
+         part { name: "elm.offtext";
             type: TEXT;
             mouse_events: 0;
             scale: 1;
+            clip_to: "clipper_inner";
             description { state: "default" 0.0;
-               visible: 0;
-               align: 1.0 0.5;
-               min: 0 0;
+               rel1.to: "offrect";
+               rel2.to: "offrect";
+               color: 255 255 255 255;
                text {
                   font: "Tizen:style=Medium";
-                  size: CHECK_STYLE_DELETE_BUTTON_TEXT_FONT_SIZE_INC;
-                  min: 0 0;
-                  text: "";
+                  size: 20;
+                  min: 0 1;
                   text_class: "tizen";
                }
             }
-            description { state: "visible" 0.0;
-               align: 1.0 0.5;
-               min: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               max: CHECK_STYLE_DELETE_BUTTON_BG_EXPAND_IMAGE_MIN_MAX_WIDTH_INC;
-               color: CHECK_DELETE_TEXT_DELETE_NORMAL_COLOR_INC;
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
+            }
+         }
+         part { name: "elm.ontext";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper_inner";
+            description { state: "default" 0.0;
+               rel1.to: "onrect";
+               rel2.to: "onrect";
+               color: 255 255 255 255;
                text {
                   font: "Tizen:style=Medium";
-                  size: CHECK_STYLE_DELETE_BUTTON_TEXT_FONT_SIZE_INC;
-                  min: 1 0;
-                  text: "Delete";
+                  size: 20;
+                  min: 0 1;
                   text_class: "tizen";
                }
             }
-            description { state: "visible_pressed" 0.0;
-               inherit: "visible" 0.0;
-               color: CHECK_DELETE_TEXT_DELETE_PRESS_COLOR_INC;
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 128 128 128 128;
             }
          }
          part { name: "elm.swallow.content";
             type: SWALLOW;
+            clip_to: "disclip";
             description { state: "default" 0.0;
                fixed: 1 0;
                visible: 0;
-               color: 255 255 255 255;
                align: 0.0 0.5;
                rel1 {
-                  to_x: "bg2";
+                  to_x: "bg";
                   relative: 1.0 0.0;
-                  offset: 1 1;
                }
                rel2 {
-                  to_x: "bg2";
+                  to_x: "bg";
                   relative: 1.0 1.0;
-                  offset: 2 -2;
                }
             }
             description { state: "visible" 0.0;
@@ -2131,11 +1409,9 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             }
             description { state: "disabled" 0.0;
                inherit: "default" 0.0;
-               color: 128 128 128 128;
             }
             description { state: "disabled_visible" 0.0;
                inherit: "default" 0.0;
-               color: 128 128 128 128;
                fixed: 1 1;
                visible: 1;
                aspect: 1.0 1.0;
@@ -2145,9 +1421,10 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             type: TEXTBLOCK;
             mouse_events: 0;
             scale: 1;
+            clip_to: "disclip";
             description { state: "default" 0.0;
                visible: 0;
-               fixed: 1 1;
+               fixed: 0 1;
                rel1 {
                   relative: 1.0 0.5;
                   offset: 1 1;
@@ -2157,7 +1434,6 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                   relative: 1.0 0.5;
                   offset: -2 -2;
                }
-               color: 255 255 255 255;
                align: 0.0 0.5;
                text {
                   style: "check_label_textblock_style";
@@ -2177,45 +1453,22 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                inherit: "default" 0.0;
                visible: 1;
                text.min: 1 1;
-               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC;
             }
          }
-         part { name: "events1";
-            type: RECT;
-            ignore_flags: ON_HOLD;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-               rel1.to: "bg2";
-               rel2.to_x: "elm.text";
-               align: 0.0 0.5;
-            }
-            description { state: "visible" 0.0;
-               color: 0 0 0 0;
-               rel1.to: "bg_expand";
-               rel2.to_x: "elm.text";
-               align: 0.0 0.5;
-            }
-         }
-         part { name: "events2";
+         part { name: "disclip";
             type: RECT;
-            repeat_events: 1;
+            mouse_events: 0;
             description { state: "default" 0.0;
-               color: 0 0 0 0;
-               rel1.to: "bg2";
-               rel2.to_x: "elm.text";
-               align: 0.0 0.5;
+               color: CHECK_DISCLIP_NORMAL_COLOR_INC;
             }
-            description { state: "visible" 0.0;
-               color: 0 0 0 0;
-               rel1.to: "bg_expand";
-               rel2.to_x: "elm.text";
-               align: 0.0 0.5;
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: CHECK_DISCLIP_DISABLED_COLOR_INC;
             }
          }
          part { name: "disabler";
             type: RECT;
             description { state: "default" 0.0;
-               rel2.to_x: "elm.text";
                color: 0 0 0 0;
                visible: 0;
             }
@@ -2226,154 +1479,134 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
          }
       }
       programs {
-         program { name: "click";
+         program {
             signal: "mouse,clicked,1";
-            source: "events1";
+            source: "button";
             script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "visible_pressed"))
-                 set_state(PART:"check", "visible", 0.0);
+               new Float:dx, Float:dy;
+               get_drag(PART:"button", dx, dy);
+               if (!get_int(was_drag)) {
+                  if (dx > 0.5)
+                    set_drag(PART:"button", 0.0, 0.0);
+                  else
+                    set_drag(PART:"button", 1.0, 0.0);
+                  if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
+                      (get_int(is_rtl) == 0) && (dx > 0.5)) {
+                     if (get_int(check_on)) {
+                       emit("elm,action,check,off", "");
+                       emit("elm,action,touch,sound", "");
+                     }
+                  }
+                  else {
+                     if (!get_int(check_on)) {
+                       emit("elm,action,check,on", "");
+                       emit("elm,action,touch,sound", "");
+                     }
+                  }
+               }
             }
-            after: "toggle";
-         }
-         program { name: "toggle";
-            action: SIGNAL_EMIT "elm,action,check,toggle" "";
-            after: "touch_sound";
          }
          program { name: "touch_sound";
+            signal: "elm,action,touch,sound";
+            source: "";
             action: PLAY_SAMPLE "touch_sound" 1.0;
          }
-         program { name: "unfocused";
-            signal: "elm,action,unfocus";
-            source: "elm";
+         program {
+            signal: "drag";
+            source: "button";
             script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"bg2", st, 30, vl);
-               if (!strcmp(st, "on"))
-                 emit("elm,action,check,toggle", "");
+               if (!get_int(is_drag)) emit("elm,action,check,drag,start", "");
+               set_int(is_drag, 1);
             }
          }
-         program { name: "click_down";
+         program {
             signal: "mouse,down,1";
-            source: "events2";
+            source: "button";
             script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "visible"))
-                 {
-                    set_state(PART:"bg_expand", "clicked", 0.0);
-                    set_state(PART:"check", "visible_pressed", 0.0);
-                 }
-               else 
-                 {
-                    set_state(PART:"bg2", "clicked", 0.0);
-                    set_state(PART:"bg1", "clicked", 0.0);
-                 }
+               set_int(was_drag, 0);
+               set_int(is_drag, 0);
             }
          }
-         program { name: "check_normal";
+         program { name: "drag_end";
             signal: "mouse,up,1";
-            source: "events2";
+            source: "button";
             script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "visible_pressed"))
-                 {
-                    set_state(PART:"bg_expand", "on", 0.0);
-                    set_state(PART:"check", "visible", 0.0);
-                 }
-               get_state(PART:"bg_expand", st, 30, vl);
-               if (!strcmp(st, "default"))
-                 {
-                    set_state(PART:"bg2", "default", 0.0);
-                    set_state(PART:"bg1", "default", 0.0);
-                 }
+               new Float:dx, Float:dy;
+               get_drag(PART:"button", dx, dy);
+               if (get_int(is_drag)) {
+                  if (dx > 0.5)
+                    set_drag(PART:"button", 1.0, 0.0);
+                  else
+                    set_drag(PART:"button", 0.0, 0.0);
+                  if (((get_int(is_rtl) == 1) && (dx <= 0.5)) ||
+                      (get_int(is_rtl) == 0) && (dx > 0.5)) {
+                     if (!get_int(check_on)) {
+                       emit("elm,action,check,on", "");
+                       emit("elm,action,touch,sound", "");
+                     }
+                  }
+                  else {
+                     if (get_int(check_on)) {
+                       emit("elm,action,check,off", "");
+                       emit("elm,action,touch,sound", "");
+                     }
+                  }
+                  set_int(was_drag, get_int(is_drag));
+                  set_int(is_drag, 0);
+                  emit("elm,action,check,drag,stop", "");
+               }
             }
          }
          program { name: "check_on";
             signal: "elm,state,check,on";
             source: "elm";
-            action: STATE_SET "on" 0.0;
-            target: "clipper";
-            after: "start_expand";
-         }
-         program { name: "start_expand";
-            action: STATE_SET "intermediate" 0.0;
-            target: "bg2";
-            target: "bg1";
-            target: "bg_expand";
-            after: "expand";
-         }
-         program { name: "expand";
-            action: STATE_SET "on" 0.0;
-            target: "bg_expand";
-            target: "bg2";
-            target: "bg1";
-            transition: ACCELERATE 0.1;
-            after: "check_visible";
-         }
-         program { name: "check_visible";
-            action: STATE_SET "visible" 0.0;
-            target: "check";
-            target: "events1";
-            target: "events2";
+            script {
+               new Float:drag;
+               if (get_int(is_rtl) == 0) {
+                  drag = 100.0;
+               }
+               else {
+                  drag = 0.0;
+               }
+               set_drag(PART:"button", drag, 0.0);
+               set_state(PART:"bg_image", "visible", 0.0);
+               set_state(PART:"button", "on", 0.0);
+               set_int(check_on, 1);
+            }
          }
          program { name: "check_off";
             signal: "elm,state,check,off";
             source: "elm";
-            action: STATE_SET "default" 0.0;
-            target: "check";
-            after: "contract";
-         }
-         program { name: "contract";
-            action: STATE_SET "intermediate" 0.0;
-            target: "bg_expand";
-            transition: ACCELERATE 0.1;
-            after: "normal_bg";
-         }
-         program { name: "normal_bg";
             script {
-               if (get_int(button_state) !=1)
-                 {
-                    set_state(PART:"bg2", "default", 0.0);
-                    set_state(PART:"bg1", "default", 0.0);
-                 }
-               else
-                 {
-                    set_state(PART:"bg2", "disabled", 0.0);
-                    set_state(PART:"bg1", "disabled", 0.0);
-                 }
+               new Float:drag;
+               if (get_int(is_rtl) == 0) {
+                  drag = 0.0;
+               }
+               else {
+                  drag = 100.0;
+               }
+               set_drag(PART:"button", drag, 0.0);
+               set_state(PART:"bg_image", "default", 0.0);
+               set_state(PART:"button", "default", 0.0);
+               set_int(check_on, 0);
             }
-            after: "bg_default";
-         }
-         program { name: "bg_default";
-            action: STATE_SET "default" 0.0;
-            target: "bg_expand";
-            target: "clipper";
-            target: "events1";
-            target: "events2";
          }
          program { name: "text_show";
             signal: "elm,state,text,visible";
             source: "elm";
-            action: STATE_SET "visible" 0.0;
+            action:  STATE_SET "visible" 0.0;
             target: "elm.text";
          }
          program { name: "text_hide";
             signal: "elm,state,text,hidden";
             source: "elm";
-            action: STATE_SET "default" 0.0;
+            action:  STATE_SET "default" 0.0;
             target: "elm.text";
          }
          program { name: "icon_show";
             signal: "elm,state,icon,visible";
             source: "elm";
-            action: STATE_SET "visible" 0.0;
+            action:  STATE_SET "visible" 0.0;
             target: "elm.swallow.content";
          }
          program { name: "icon_hide";
@@ -2386,9 +1619,11 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             signal: "elm,state,disabled";
             source: "elm";
             action: STATE_SET "disabled" 0.0;
+            target: "elm.offtext";
+            target: "elm.ontext";
+            target: "onrect";
+            target: "offrect";
             target: "disabler";
-            target: "bg2";
-            target: "bg1";
             after: "disable_text";
          }
          program { name: "disable_text";
@@ -2400,12 +1635,19 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                  set_state(PART:"elm.text", "disabled_visible", 0.0);
                else
                  set_state(PART:"elm.text", "disabled", 0.0);
+               get_state(PART:"bg_image", st, 30, vl);
+               if (!strcmp(st, "visible")) {
+                 set_state(PART:"bg_image", "visible_disable", 0.0);
+                 set_state(PART:"button", "on_disabled", 0.0);
+               } else {
+                 set_state(PART:"bg_image", "off_disable", 0.0);
+                 set_state(PART:"button", "off_disabled", 0.0);
+               }
                get_state(PART:"elm.swallow.content", st, 30, vl);
                if (!strcmp(st, "visible"))
                  set_state(PART:"elm.swallow.content", "disabled_visible", 0.0);
                else
                  set_state(PART:"elm.swallow.content", "disabled", 0.0);
-               set_int(button_state, 1);
             }
          }
          program { name: "enable";
@@ -2413,8 +1655,8 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             source: "elm";
             action: STATE_SET "default" 0.0;
             target: "disabler";
-            target: "bg2";
-            target: "bg1";
+            target: "onrect";
+            target: "offrect";
             after: "enable_text";
          }
          program { name: "enable_text";
@@ -2426,121 +1668,419 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                  set_state(PART:"elm.text", "visible", 0.0);
                else
                  set_state(PART:"elm.text", "default", 0.0);
+               get_state(PART:"bg_image", st, 30, vl);
+               if (!strcmp(st, "visible_disable"))
+                 set_state(PART:"bg_image", "visible", 0.0);
+               else
+                 set_state(PART:"bg_image", "default", 0.0);
                get_state(PART:"elm.swallow.content", st, 30, vl);
                if (!strcmp(st, "visible"))
                  set_state(PART:"elm.swallow.content", "visible", 0.0);
                else
                  set_state(PART:"elm.swallow.content", "default", 0.0);
-               set_int(button_state, 0);
+               set_state(PART:"button", "default", 0.0);
+            }
+         }
+         program { name: "to_rtl";
+            signal: "edje,state,rtl";
+            source: "edje";
+            script {
+               set_int(is_rtl, 1);
+            }
+         }
+         program { name: "to_ltr";
+            signal: "edje,state,ltr";
+            source: "edje";
+            script {
+               set_int(is_rtl, 0);
             }
          }
       }
    }
+///////////////////////////////////////////////////////////////////////////////////////
+
+#define CHECK_STYLE_FAVORITE(style_name, on_image, on_dim_image, off_image, off_dim_image, min_width, min_height) \
+   group { name: "elm/check/base/"style_name; \
+      images { \
+         image: on_image COMP; \
+         image: on_dim_image COMP; \
+         image: off_image COMP; \
+         image: off_dim_image COMP; \
+      } \
+      parts { \
+         part { name: "back_bg"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               rel2.relative: 0.0 1.0; \
+               align: 0 0.5; \
+               min: min_width min_height; \
+               fixed: 1 0; \
+            } \
+         } \
+         part { name: "bg"; \
+            type: RECT; \
+            clip_to: "disclip"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               rel1.to: "back_bg"; \
+               rel2.to: "back_bg"; \
+               min: min_width min_height; \
+               max: min_width min_height; \
+               fixed: 1 1; \
+            } \
+         } \
+         part { name: "check"; \
+            mouse_events: 0; \
+            clip_to: "disclip"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "bg"; \
+               rel2.to: "bg"; \
+               image.normal: off_image; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: on_image; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: off_dim_image; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: on_dim_image; \
+            } \
+         } \
+         part { name: "elm.swallow.content"; \
+            type: SWALLOW; \
+            clip_to: "disclip"; \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               visible: 0; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  to_x: "bg"; \
+                  relative: 1.0 0.0; \
+                  offset: 1 1; \
+               } \
+               rel2 { \
+                  to_x: "bg"; \
+                  relative: 1.0 1.0; \
+                  offset: 2 -2; \
+               } \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+               aspect_preference: VERTICAL; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+            } \
+         } \
+         part { name: "elm.text"; \
+            type: TEXTBLOCK; \
+            clip_to: "disclip"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 0 1; \
+               rel1 { \
+                  relative: 1.0 0.5; \
+                  offset: 1 1; \
+                  to_x: "elm.swallow.content"; \
+               } \
+               rel2 { \
+                  relative: 1.0 0.5; \
+                  offset: -2 -2; \
+               } \
+               align: 0.0 0.5; \
+               text { \
+                 style: "check_label_textblock_style"; \
+                 min: 0 0; \
+               } \
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "disclip"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: CHECK_DISCLIP_NORMAL_COLOR_INC; \
+            } \
+         } \
+         part { name: "events"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "click"; \
+            signal: "mouse,clicked,1"; \
+            source: "events"; \
+            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
+            after: "touch_sound"; \
+         } \
+         program { name: "touch_sound"; \
+            action: PLAY_SAMPLE "touch_sound" 1.0; \
+         } \
+         program { name: "check_on"; \
+            signal: "elm,state,check,on"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "check"; \
+         } \
+         program { name: "check_off"; \
+            signal: "elm,state,check,off"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "check"; \
+         } \
+         program { name: "text_show"; \
+            signal: "elm,state,text,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "text_hide"; \
+            signal: "elm,state,text,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "icon_show"; \
+            signal: "elm,state,icon,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "icon_hide"; \
+            signal: "elm,state,icon,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            after: "disable_text"; \
+         } \
+         program { name: "disable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.text", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "disabled", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"check", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"check", "disabled", 0.0); \
+            } \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            after: "enable_text"; \
+         } \
+         program { name: "enable_text"; \
+            script { \
+               new st[31]; \
+               new Float:vl; \
+               get_state(PART:"elm.text", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"elm.text", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.text", "default", 0.0); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "default", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 set_state(PART:"check", "visible", 0.0); \
+               else \
+                 set_state(PART:"check", "default", 0.0); \
+            } \
+         } \
+      } \
+   }
+////////////////////////////////////////////////////////////////////////////////
+CHECK_STYLE_FAVORITE("favorite", "00_icon_favorite_on_72x72.png", "00_icon_favorite_on_72x72_dim.png", "00_icon_favorite_off_72x72.png", "00_icon_favorite_off_72x72_dim.png", CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
+////////////////////////////////////////////////////////////////////////////////
+CHECK_STYLE_FAVORITE("favorite_small", "00_icon_favorite_on_45x45.png", "00_icon_favorite_on_45x45_dim.png", "00_icon_favorite_off_45x45.png", "00_icon_favorite_off_45x45_dim.png", CHECK_STYLE_FAVORITE_SMALL_DEFAULT_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_SMALL_DEFAULT_BG_IMAGE_MIN_HEIGHT_INC)
+////////////////////////////////////////////////////////////////////////////////
+CHECK_STYLE_FAVORITE("favorite/extended", "00_icon_favorite_on_72x72.png", "00_icon_favorite_on_72x72_dim.png", "00_icon_favorite_off_72x72.png", "00_icon_favorite_off_72x72_dim.png", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_WIDTH_INC, CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE_MIN_HEIGHT_INC)
+////////////////////////////////////////////////////////////////////////////////
 
-////////////////////////////////////////////////////////////////////////////////////
-   group { name: "elm/check/base/multicheck";
-      images {
-         image: "00_check_bg.png" COMP;
-         image: "00_check_bg_press.png" COMP;
-         image: "multicheck_0001.png" COMP;
-         image: "multicheck_0002.png" COMP;
-         image: "multicheck_0003.png" COMP;
-         image: "multicheck_0004.png" COMP;
-         image: "multicheck_0005.png" COMP;
-         image: "multicheck_0006.png" COMP;
-         image: "00_check_checking.png" COMP;
-      }
+   group { name: "elm/check/base/grid";
+      images.image: "00_check_bg.png" COMP;
+      images.image: "00_check_dim_bg.png" COMP;
+      images.image: "00_check_activated_dim.png" COMP;
+      images.image: "00_check_activated.png" COMP;
       script {
-         public check_state = 0; //0:default, 1: visible, 2: disabled_visible
+         public check_state = CHECK_STATE_DEFAULT;
+         public check_visible = CHECK_HIDE;
       }
       parts {
          part { name: "bg";
+            type: RECT;
             scale: 1;
-            clip_to: "disclip";
             description { state: "default" 0.0;
-               rel2.relative: 0.0 1.0;
-               align: 0.0 0.5;
-               min: 44 44;
-               max: 44 44;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
+               visible: 0;
+            }
+         }
+         part { name: "top_left_padding";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: GENGRID_ITEM_CHECK_TOP_RIGHT_PADDING_INC;
+               align: 0.0 0.0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to: "bg";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "bg";
+               }
+            }
+         }
+         part { name: "bg2";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENGRID_EDIT_MODE_CHECK_SIZE_INC;
+               align: 0.0 0.0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "top_left_padding";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "top_left_padding";
+               }
                image.normal: "00_check_bg.png";
-               fill.smooth : 0;
             }
-            description { state: "pressed" 0.0;
+            description { state: "visible" 0.0;
                inherit: "default" 0.0;
-               image.normal: "00_check_bg_press.png";
-               fill.smooth : 0;
             }
             description { state: "disabled" 0.0;
                inherit: "default" 0.0;
+               image.normal: "00_check_dim_bg.png";
             }
          }
          part { name: "check";
             mouse_events: 0;
-            clip_to: "disclip";
+            clip_to: "sequence_clip";
             scale: 1;
             description { state: "default" 0.0;
-               rel1.to: "bg";
-               rel2.to: "bg";
                visible: 0;
+               rel1.to: "bg2";
+               rel2.to: "bg2";
+               image.normal: "00_check_activated.png";
+               color: 255 255 255 0;
             }
-            description { state: "visible_1" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "multicheck_0001.png";
-            }
-            description { state: "visible_2" 0.0;
+            description { state: "visible" 0.0;
                inherit: "default" 0.0;
                visible: 1;
-               image.normal: "multicheck_0002.png";
+               color: 255 255 255 255;
             }
-            description { state: "visible_3" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "multicheck_0003.png";
+            description { state: "pressed" 0.0;
+               inherit: "visible" 0.0;
             }
-            description { state: "visible_4" 0.0;
+            description { state: "disabled_visible" 0.0;
                inherit: "default" 0.0;
                visible: 1;
-               image.normal: "multicheck_0004.png";
+               image.normal: "00_check_activated_dim.png";
             }
-            description { state: "visible_5" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "multicheck_0005.png";
+         }
+         part { name: "sequence_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "bg2";
+               rel2.to: "bg2";
+               rel2.relative: 0.0 1.0;
+               color: 255 255 255 255;
             }
             description { state: "visible" 0.0;
                inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "multicheck_0006.png";
-            }
-            description { state: "pressed" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               image.normal: "multicheck_0006.png";
-            }
-            description { state: "disabled_visible" 0.0;
-               inherit: "default" 0.0;
-               image.normal: "00_check_checking.png";
-               visible: 1;
+               rel2.relative: 1.0 1.0;
             }
          }
          part { name: "elm.swallow.content";
             type: SWALLOW;
-            clip_to: "disclip";
-            description { state: "default" 0.0;
+            description {
+               state: "default" 0.0;
                fixed: 1 0;
                visible: 0;
                color: 255 255 255 255;
                align: 0.0 0.5;
                rel1 {
-                  to_x: "bg";
+                  to_x: "bg2";
                   relative: 1.0 0.0;
                   offset: 1 1;
                }
                rel2 {
-                  to_x: "bg";
+                  to_x: "bg2";
                   relative: 1.0 1.0;
                   offset: 2 -2;
                }
@@ -2566,7 +2106,6 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
          }
          part { name: "elm.text";
             type: TEXTBLOCK;
-            clip_to: "disclip";
             mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
@@ -2581,6 +2120,7 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                   relative: 1.0 0.5;
                   offset: -2 -2;
                }
+               color: 255 255 255 255;
                align: 0.0 0.5;
                text {
                   style: "check_label_textblock_style";
@@ -2603,31 +2143,13 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC;
             }
          }
-         part { name: "events1";
+         part { name: "events";
             type: RECT;
             ignore_flags: ON_HOLD;
             description { state: "default" 0.0;
                color: 0 0 0 0;
             }
          }
-         part { name: "disclip";
-            type: RECT;
-            mouse_events: 0;
-            description { state: "default" 0.0;
-               color: 255 255 255 255;
-            }
-            description { state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: 255 255 255 102;
-            }
-         }
-         part { name: "events2";
-            type: RECT;
-            repeat_events: 1;
-            description { state: "default" 0.0;
-               color: 0 0 0 0;
-            }
-         }
          part { name: "disabler";
             type: RECT;
             description { state: "default" 0.0;
@@ -2641,104 +2163,77 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
          }
       }
       programs {
+         program { name: "show";
+            signal: "show";
+            script {
+               set_int(check_visible, CHECK_SHOW);
+            }
+         }
+         program { name: "hide";
+            signal: "hide";
+            script {
+               set_int(check_visible, CHECK_HIDE);
+            }
+         }
          program { name: "click";
             signal: "mouse,clicked,1";
-            source: "events1";
+            source: "events";
             action: SIGNAL_EMIT "elm,action,check,toggle" "";
-            after: "touch_sound";
-         }
-         program { name: "touch_sound";
-            action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: "bg_normal";
          }
          program { name: "bg_normal";
-            signal: "mouse,up,1";
-            source: "events2";
             script {
-               new st[31];
-               new Float:vl;
-               get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "pressed"))
-                 set_state(PART:"check", "visible", 0.0);
-               set_state(PART:"bg", "default", 0.0);
+               set_state(PART:"bg2", "default", 0.0);
             }
          }
          program { name: "pressed";
             signal: "mouse,down,1";
-            source: "events2";
+            source: "events";
             script {
                new st[31];
                new Float:vl;
                get_state(PART:"check", st, 30, vl);
-               if (!strcmp(st, "default"))
-                 set_state(PART:"check", "pressed", 0.0);
-               else
-                 set_state(PART:"check", "default", 0.0);
-               set_state(PART:"bg", "pressed", 0.0);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"check", "pressed", 0.0);
+                    set_state(PART:"bg2", "visible", 0.0);
+                 }
             }
          }
          program { name: "mouse,out";
             signal: "mouse,out";
-            source: "events2";
+            source: "events";
             script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible", 0.0);
+               if (get_int(check_state) == CHECK_STATE_VISIBLE)
+                 {
+                    set_state(PART:"check", "visible", 0.0);
+                    set_state(PART:"sequence_clip", "visible", 0.0);
+                    set_state(PART:"bg2", "visible", 0.0);
+                 }
                else
-                 set_state(PART:"check", "default", 0.0);
+                 {
+                    set_state(PART:"check", "default", 0.0);
+                    set_state(PART:"sequence_clip", "default", 0.0);
+                    set_state(PART:"bg2", "default", 0.0);
+                 }
             }
          }
          program { name: "check_on";
             signal: "elm,state,check,on";
             source: "elm";
             script {
-               set_int(check_state, 1);
-            }
-            after: "check_on_1";
-         }
-         program { name: "check_on_1";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible_1", 0.0);
-            }
-            after: "check_on_2";
-         }
-         program { name: "check_on_2";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible_2", 0.0);
-            }
-            after: "check_on_3";
-         }
-         program { name: "check_on_3";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible_3", 0.0);
-            }
-            after: "check_on_4";
-         }
-         program { name: "check_on_4";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible_4", 0.0);
-            }
-            after: "check_on_5";
-         }
-         program { name: "check_on_5";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible_5", 0.0);
-            }
-            after: "check_on_6";
-         }
-         program { name: "check_on_6";
-            in: 0.05 0.0;
-            script {
-               if (get_int(check_state) == 1)
-                 set_state(PART:"check", "visible", 0.0);
+               set_int(check_state, CHECK_STATE_VISIBLE);
+               if (get_int(check_visible) == CHECK_SHOW)
+                 {
+                    run_program(PROGRAM:"check_show_effect");
+                    run_program(PROGRAM:"check_draw_effect");
+                 }
+               else
+                 {
+                    set_state(PART:"check", "visible", 0.0);
+                    set_state(PART:"sequence_clip", "visible", 0.0);
+                 }
+               set_state(PART:"bg2", "visible", 0.0);
             }
          }
          program { name: "check_off";
@@ -2747,13 +2242,25 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             action: STATE_SET "default" 0.0;
             target: "check";
             script {
-               if (get_int(check_state) == 1)
+               if (get_int(check_state) == CHECK_STATE_VISIBLE)
                  {
-                    set_int(check_state, 0);
+                    set_int(check_state, CHECK_STATE_DEFAULT);
                     set_state(PART:"check", "default", 0.0);
+                    set_state(PART:"sequence_clip", "default", 0.0);
                  }
+               set_state(PART:"bg2", "default", 0.0);
             }
          }
+         program { name: "check_show_effect";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.233;
+            target: "check";
+         }
+         program { name: "check_draw_effect";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.267;
+            target: "sequence_clip";
+         }
          program { name: "text_show";
             signal: "elm,state,text,visible";
             source: "elm";
@@ -2783,8 +2290,7 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             source: "elm";
             action: STATE_SET "disabled" 0.0;
             target: "disabler";
-            target: "disclip";
-            target: "bg";
+            target: "bg2";
             after: "disable_text";
          }
          program { name: "disable_text";
@@ -2803,8 +2309,10 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                  set_state(PART:"elm.swallow.content", "disabled", 0.0);
                get_state(PART:"check", st, 30, vl);
                if (!strcmp(st, "visible"))
-                 set_state(PART:"check", "disabled_visible", 0.0);
-               set_int(check_state, 2);
+                 {
+                    set_state(PART:"check", "disabled_visible", 0.0);
+                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE);
+                 }
             }
          }
          program { name: "enable";
@@ -2812,8 +2320,7 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
             source: "elm";
             action: STATE_SET "default" 0.0;
             target: "disabler";
-            target: "disclip";
-            target: "bg";
+            target: "bg2";
             after: "enable_text";
          }
          program { name: "enable_text";
@@ -2834,15 +2341,15 @@ CHECK_STYLE_FAVORITE("favorite/extended", CHECK_STYLE_FAVORITE_EXTENDED_BG_IMAGE
                if (!strcmp(st, "disabled_visible"))
                  {
                     set_state(PART:"check", "visible", 0.0);
-                    set_int(check_state, 1);
+                    set_state(PART:"sequence_clip", "visible", 0.0);
+                    set_int(check_state, CHECK_STATE_VISIBLE);
                  }
                else
-                 set_int(check_state, 0);
+                 set_int(check_state, CHECK_STATE_DEFAULT);
             }
          }
       }
    }
-#endif
 
 #undef CHECK_STATE_DEFAULT
 #undef CHECK_STATE_VISIBLE