add long press on apps view & icon text resize 73/71173/1 submit/tizen/20160525.001143 submit/tizen/20160526.001945
authorYoungHun Cho <hoon.cho@samsung.com>
Tue, 24 May 2016 10:26:14 +0000 (19:26 +0900)
committerYoungHun Cho <hoon.cho@samsung.com>
Tue, 24 May 2016 10:26:14 +0000 (19:26 +0900)
Change-Id: I0fbab7476bef1f37a8365a4aef6d1e810a2f7a0e
Signed-off-by: YoungHun Cho <hoon.cho@samsung.com>
20 files changed:
.cproject
.sdk_delta.info
.sign/.manifest.tmp
.sign/author-signature.xml
.sign/signature1.xml
inc/apps_data.h
inc/apps_view.h
inc/conf.h
inc/edc_conf.h
inc/popup.h
res/edje/app_icon.edc
res/edje/apps_folder_icon.edc
src/add_widget_viewer/add_widget_viewer.c
src/apps_data.c
src/apps_view.c
src/cluster_data.c
src/cluster_page.c
src/cluster_view.c
src/menu.c
src/popup.c

index 518044c..072c9a0 100755 (executable)
--- a/.cproject
+++ b/.cproject
@@ -27,7 +27,7 @@
                                                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.481743771" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.2102599528" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                <option id="sbi.gnu.cpp.compiler.option.1070320025" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
-                                                                       <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm36.armel.core.app"/>
+                                                                       <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm36.i386.core.app"/>
                                                                </option>
                                                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.312288874" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                        <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
                                                                        <listOptionValue builtIn="false" value=" -fPIE"/>
                                                                        <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
-                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
                                                                <option id="gnu.cpp.compiler.option.include.paths.1857385470" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.247638963" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.982331969" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
                                                                <option id="sbi.gnu.c.compiler.option.1644890019" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
-                                                                       <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm36.armel.core.app"/>
+                                                                       <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm36.i386.core.app"/>
                                                                </option>
                                                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1483034184" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                        <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
                                                                        <listOptionValue builtIn="false" value=" -fPIE"/>
                                                                        <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
-                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
                                                                <option id="gnu.c.compiler.option.include.paths.1774757534" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1815664769" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                       <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1815664769" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
                                                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.88475890" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                        </tool>
                                                        <tool id="org.tizen.nativecore.tool.fnmapgen.304005350" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
index a4d9800..4d9edaa 100644 (file)
Binary files a/.sdk_delta.info and b/.sdk_delta.info differ
index ddb5d60..c6fc747 100644 (file)
@@ -1,18 +1,18 @@
-bin/homescreen-efl__DEL__tcjOCyj2e5XIByWhdkzRhfral3e6DLHgJYsUX3aYsH0=
-res/edje/add_widget_viewer.edj__DEL__kxOp0/9NM7zavtZCS/aRtK4J/kktpjndyqxWi/ctNCE=
-res/edje/app_icon.edj__DEL__hSuSQ3hQZXps9VqOx+iF5a8yxxuQYp1pX8X7o+zOiFY=
-res/edje/apps_chooser_btn.edj__DEL__LpSthYUiusXGKzPufc1Z+UrTWOcLQtBTkbFqj1P0Z/w=
-res/edje/apps_folder_icon.edj__DEL__nt1/iw823ktobTD7tCkH8qF3ECx+dJzZ4nhbFEzV9jY=
-res/edje/apps_folder_popup.edj__DEL__XwzpTRnEBagQ/fjveMIUJHywQjJJw9UiTHHANjYTL38=
-res/edje/apps_view.edj__DEL__LnTRhc7GKMlwBkLDmKWjbkAGAym388rXL5di6GR1SoI=
-res/edje/apps_view_bg.edj__DEL__en0euIjmeqdudjs19LBKC38zGl7+NWMHWAnof7DBcKA=
-res/edje/cluster_allpage.edj__DEL__uqDmQIugV+cL0AvTbyrB+Vx/rEpBthwIPPVP5xsuyGQ=
-res/edje/cluster_allpage_thumbnail.edj__DEL__Ejp60/SrY0CZmR5dThP9k+Q0+z1EL3ZW7zABqM2TVI0=
-res/edje/cluster_page.edj__DEL__FOWNwnM9qfTbXB3POm08kHT9/FUpGFRlu5RiVBSGV5c=
-res/edje/home.edj__DEL__Ej7R8hosaLip//gef8JFzUOv97yfsNfh5QUODTJS7ug=
-res/edje/home_btn.edj__DEL__whmDKsbXwSg4lQiqqXqwmOJgWvMMi1m9eN1B4uXngPY=
-res/edje/page_indicator_unit.edj__DEL__shG/CpjlVPg1oMMerjnmv23B0QJal0wm55XhQi3+cxs=
-res/edje/widget.edj__DEL__nvh3Lst1qzLtEA92yDXQFcUgsYwQXVHDEpNLw/pjiOg=
+bin/homescreen-efl__DEL__Vd1hS0VIBQcDiUBL4H5RUagaoFVyoSN7F7arwKRsgro=
+res/edje/add_widget_viewer.edj__DEL__yjuM2TzRJk0qmbbgZm8CEJjhKW12PFL3mvH8p6XI/7A=
+res/edje/app_icon.edj__DEL__Hu5w5HMPIF4AeyEkT5HTQrIMbubp4EZa4Mynq2AT8IE=
+res/edje/apps_chooser_btn.edj__DEL__Lhzbzd2xr9TwWBn9usNTpq7fvLUhr4RBU7ulLfGdjTs=
+res/edje/apps_folder_icon.edj__DEL__iJtRbyrDqIKGn2habGi0LO2ACBOYxgFqvEcuabJwFKM=
+res/edje/apps_folder_popup.edj__DEL__AZ7u3E4yosFt2q9UWKNHQmgxJxOUytwS2LYq2vFxTRw=
+res/edje/apps_view.edj__DEL__twdBdvt0OXctB/m9LMbw77xGPOYYhWlkMG2rkEdnIXU=
+res/edje/apps_view_bg.edj__DEL__Rr+4ieuJ/jwhde7+jjJ2HqctoSyD9BjUg/DrwAo3+PM=
+res/edje/cluster_allpage.edj__DEL__FnZKXPhbViostAA/bmMYIBj5iFfuHxvKlYcMERPKvdU=
+res/edje/cluster_allpage_thumbnail.edj__DEL__Hc/3Ns69OvMHmOAWnL3L0mkPpgslmrXa6LQFeOTQYEA=
+res/edje/cluster_page.edj__DEL__X0OYWeT8uBBTAh4BbXdwcU40sIW/ZnG4i7vgRzMbVKY=
+res/edje/home.edj__DEL__zSZTzpCMLnN2wgCL9diTlFqZYaAYqaK9AhjZFi4if7Q=
+res/edje/home_btn.edj__DEL__qgmfKXFjX19XzVySIRBBYD14DeWsEiipC7N2C36119c=
+res/edje/page_indicator_unit.edj__DEL__D4gzjCW5HGaBzlEFU5yGPR0zYiQhYJoyQ3z1f7akkq4=
+res/edje/widget.edj__DEL__pT8X3lZOd7zvW/vBOlSXv2HVh+OGH6pkMhFddtNSCxg=
 res/images/add_page_nor.png__DEL__hqnpwU7y0026fePoeHQUHiIsQkQkE6YMrEOLgWmi24s=
 res/images/add_page_press.png__DEL__FeY8xIiCwRls8AYZLRxOVUNJqWCB85HWNvWcSibOOhE=
 res/images/all_page_add.png__DEL__NaFgj2lXKUfBbZk4VmOeQamahPg7kXuwItRyeq8/bSY=
@@ -92,4 +92,4 @@ res/locale/zh_HK/LC_MESSAGES/homescreen-efl.mo__DEL__XbmoPGvpjZD09qMkipbn/N/GNg/
 res/locale/zh_TW/LC_MESSAGES/homescreen-efl.mo__DEL__oV3fIhDtXRMBjVuLETwBwYVDwiCHWvpDVpgtektLlM4=
 shared/res/homescreen-efl.png__DEL__1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=
 tizen-manifest.xml__DEL__HlwQmaFXgrNH4ygDj7kH+fT/9cUP7JE60jlK1v0pnlo=
-author-signature.xml__DEL__BKBfAcFwpjmzGULDek47sGh8FYZ5ibUrv4ESH9wSfjo=
+author-signature.xml__DEL__9onQ7m9DFFe/lzVwl+cU1zeOaIpptMVQNsvjbFX4DEE=
index 98471a5..a20dab7 100644 (file)
@@ -4,63 +4,63 @@
 <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
 <Reference URI="bin%2Fhomescreen-efl">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>tcjOCyj2e5XIByWhdkzRhfral3e6DLHgJYsUX3aYsH0=</DigestValue>
+<DigestValue>Vd1hS0VIBQcDiUBL4H5RUagaoFVyoSN7F7arwKRsgro=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fadd_widget_viewer.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>kxOp0/9NM7zavtZCS/aRtK4J/kktpjndyqxWi/ctNCE=</DigestValue>
+<DigestValue>yjuM2TzRJk0qmbbgZm8CEJjhKW12PFL3mvH8p6XI/7A=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapp_icon.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>hSuSQ3hQZXps9VqOx+iF5a8yxxuQYp1pX8X7o+zOiFY=</DigestValue>
+<DigestValue>Hu5w5HMPIF4AeyEkT5HTQrIMbubp4EZa4Mynq2AT8IE=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_chooser_btn.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>LpSthYUiusXGKzPufc1Z+UrTWOcLQtBTkbFqj1P0Z/w=</DigestValue>
+<DigestValue>Lhzbzd2xr9TwWBn9usNTpq7fvLUhr4RBU7ulLfGdjTs=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_folder_icon.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>nt1/iw823ktobTD7tCkH8qF3ECx+dJzZ4nhbFEzV9jY=</DigestValue>
+<DigestValue>iJtRbyrDqIKGn2habGi0LO2ACBOYxgFqvEcuabJwFKM=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_folder_popup.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>XwzpTRnEBagQ/fjveMIUJHywQjJJw9UiTHHANjYTL38=</DigestValue>
+<DigestValue>AZ7u3E4yosFt2q9UWKNHQmgxJxOUytwS2LYq2vFxTRw=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_view.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>LnTRhc7GKMlwBkLDmKWjbkAGAym388rXL5di6GR1SoI=</DigestValue>
+<DigestValue>twdBdvt0OXctB/m9LMbw77xGPOYYhWlkMG2rkEdnIXU=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_view_bg.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>en0euIjmeqdudjs19LBKC38zGl7+NWMHWAnof7DBcKA=</DigestValue>
+<DigestValue>Rr+4ieuJ/jwhde7+jjJ2HqctoSyD9BjUg/DrwAo3+PM=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_allpage.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>uqDmQIugV+cL0AvTbyrB+Vx/rEpBthwIPPVP5xsuyGQ=</DigestValue>
+<DigestValue>FnZKXPhbViostAA/bmMYIBj5iFfuHxvKlYcMERPKvdU=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_allpage_thumbnail.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>Ejp60/SrY0CZmR5dThP9k+Q0+z1EL3ZW7zABqM2TVI0=</DigestValue>
+<DigestValue>Hc/3Ns69OvMHmOAWnL3L0mkPpgslmrXa6LQFeOTQYEA=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_page.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>FOWNwnM9qfTbXB3POm08kHT9/FUpGFRlu5RiVBSGV5c=</DigestValue>
+<DigestValue>X0OYWeT8uBBTAh4BbXdwcU40sIW/ZnG4i7vgRzMbVKY=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fhome.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>Ej7R8hosaLip//gef8JFzUOv97yfsNfh5QUODTJS7ug=</DigestValue>
+<DigestValue>zSZTzpCMLnN2wgCL9diTlFqZYaAYqaK9AhjZFi4if7Q=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fhome_btn.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>whmDKsbXwSg4lQiqqXqwmOJgWvMMi1m9eN1B4uXngPY=</DigestValue>
+<DigestValue>qgmfKXFjX19XzVySIRBBYD14DeWsEiipC7N2C36119c=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fpage_indicator_unit.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>shG/CpjlVPg1oMMerjnmv23B0QJal0wm55XhQi3+cxs=</DigestValue>
+<DigestValue>D4gzjCW5HGaBzlEFU5yGPR0zYiQhYJoyQ3z1f7akkq4=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fwidget.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>nvh3Lst1qzLtEA92yDXQFcUgsYwQXVHDEpNLw/pjiOg=</DigestValue>
+<DigestValue>pT8X3lZOd7zvW/vBOlSXv2HVh+OGH6pkMhFddtNSCxg=</DigestValue>
 </Reference>
 <Reference URI="res%2Fimages%2Fadd_page_nor.png">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
 </Reference>
 </SignedInfo>
 <SignatureValue>
-oNvYebPYvFMXen19lm09UqtjdBmJsFmatcN1t0R7r4C3Zoy15EfWyRdtTCMcjh5ORKmeWS9QiU25
-eZB6wNEiEojllrpZ+fZY+AZzqjoD2O7w6lwSaji5c/dLhTsdv7A8zjfFwSlDAHq20G5FPb9tSBlx
-OH8/rOsLOBkhVdDn3EY=
+ej0LVboKd3qzvknzqbvv9cIkb9d0MmBsMcdKyx3ypLeObafdOEdZ9USZFZhF3plO7IcWrpIi4bSw
+9coC1+3laPfvhm3QCAxzg1hOXlkxqX9uiX9znwQ4B98Zm/3etDWkiDXKN7rE+60rt+iXFDjV/yNB
+8OSK9WDZLGTpG1y2nGA=
 </SignatureValue>
 <KeyInfo>
 <X509Data>
index 6958ced..4e3089c 100644 (file)
@@ -4,67 +4,67 @@
 <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
 <Reference URI="author-signature.xml">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>BKBfAcFwpjmzGULDek47sGh8FYZ5ibUrv4ESH9wSfjo=</DigestValue>
+<DigestValue>9onQ7m9DFFe/lzVwl+cU1zeOaIpptMVQNsvjbFX4DEE=</DigestValue>
 </Reference>
 <Reference URI="bin%2Fhomescreen-efl">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>tcjOCyj2e5XIByWhdkzRhfral3e6DLHgJYsUX3aYsH0=</DigestValue>
+<DigestValue>Vd1hS0VIBQcDiUBL4H5RUagaoFVyoSN7F7arwKRsgro=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fadd_widget_viewer.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>kxOp0/9NM7zavtZCS/aRtK4J/kktpjndyqxWi/ctNCE=</DigestValue>
+<DigestValue>yjuM2TzRJk0qmbbgZm8CEJjhKW12PFL3mvH8p6XI/7A=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapp_icon.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>hSuSQ3hQZXps9VqOx+iF5a8yxxuQYp1pX8X7o+zOiFY=</DigestValue>
+<DigestValue>Hu5w5HMPIF4AeyEkT5HTQrIMbubp4EZa4Mynq2AT8IE=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_chooser_btn.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>LpSthYUiusXGKzPufc1Z+UrTWOcLQtBTkbFqj1P0Z/w=</DigestValue>
+<DigestValue>Lhzbzd2xr9TwWBn9usNTpq7fvLUhr4RBU7ulLfGdjTs=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_folder_icon.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>nt1/iw823ktobTD7tCkH8qF3ECx+dJzZ4nhbFEzV9jY=</DigestValue>
+<DigestValue>iJtRbyrDqIKGn2habGi0LO2ACBOYxgFqvEcuabJwFKM=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_folder_popup.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>XwzpTRnEBagQ/fjveMIUJHywQjJJw9UiTHHANjYTL38=</DigestValue>
+<DigestValue>AZ7u3E4yosFt2q9UWKNHQmgxJxOUytwS2LYq2vFxTRw=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_view.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>LnTRhc7GKMlwBkLDmKWjbkAGAym388rXL5di6GR1SoI=</DigestValue>
+<DigestValue>twdBdvt0OXctB/m9LMbw77xGPOYYhWlkMG2rkEdnIXU=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fapps_view_bg.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>en0euIjmeqdudjs19LBKC38zGl7+NWMHWAnof7DBcKA=</DigestValue>
+<DigestValue>Rr+4ieuJ/jwhde7+jjJ2HqctoSyD9BjUg/DrwAo3+PM=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_allpage.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>uqDmQIugV+cL0AvTbyrB+Vx/rEpBthwIPPVP5xsuyGQ=</DigestValue>
+<DigestValue>FnZKXPhbViostAA/bmMYIBj5iFfuHxvKlYcMERPKvdU=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_allpage_thumbnail.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>Ejp60/SrY0CZmR5dThP9k+Q0+z1EL3ZW7zABqM2TVI0=</DigestValue>
+<DigestValue>Hc/3Ns69OvMHmOAWnL3L0mkPpgslmrXa6LQFeOTQYEA=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fcluster_page.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>FOWNwnM9qfTbXB3POm08kHT9/FUpGFRlu5RiVBSGV5c=</DigestValue>
+<DigestValue>X0OYWeT8uBBTAh4BbXdwcU40sIW/ZnG4i7vgRzMbVKY=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fhome.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>Ej7R8hosaLip//gef8JFzUOv97yfsNfh5QUODTJS7ug=</DigestValue>
+<DigestValue>zSZTzpCMLnN2wgCL9diTlFqZYaAYqaK9AhjZFi4if7Q=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fhome_btn.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>whmDKsbXwSg4lQiqqXqwmOJgWvMMi1m9eN1B4uXngPY=</DigestValue>
+<DigestValue>qgmfKXFjX19XzVySIRBBYD14DeWsEiipC7N2C36119c=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fpage_indicator_unit.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>shG/CpjlVPg1oMMerjnmv23B0QJal0wm55XhQi3+cxs=</DigestValue>
+<DigestValue>D4gzjCW5HGaBzlEFU5yGPR0zYiQhYJoyQ3z1f7akkq4=</DigestValue>
 </Reference>
 <Reference URI="res%2Fedje%2Fwidget.edj">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>nvh3Lst1qzLtEA92yDXQFcUgsYwQXVHDEpNLw/pjiOg=</DigestValue>
+<DigestValue>pT8X3lZOd7zvW/vBOlSXv2HVh+OGH6pkMhFddtNSCxg=</DigestValue>
 </Reference>
 <Reference URI="res%2Fimages%2Fadd_page_nor.png">
 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
 </Reference>
 </SignedInfo>
 <SignatureValue>
-pQOECgPlMm32WGY6kZ0k4UDIm+jCpctDPw2N6N1uMT9m7xTJLEGcMut+D6JKST4zJo5q03tQqFFY
-g8i/Qhktgvz6s/aSrjdYku5SxKBfNtn1xfb0h/nEXNScjluoYMQzX6KvFLYViZnAcNDWVV5b6Ws2
-eCsG1z/uF+05ltLVDlk=
+fqT3GSjVLa7SUeQfefVSSo9jr+pK8VAGB40cxK1Bo6LL99FKjfLs6M0S58d0Z6B7bZoYzqpNSSuE
+vygfaC0/fABW00NpxXOKE2JreYHkLtHoVCm/XCX0v4oyHjyIvtoX/j0PblBhkhLkAruf63oKWcti
+tVyj3xXPmMNjeG2XJn8=
 </SignatureValue>
 <KeyInfo>
 <X509Data>
index fb79e75..fb63dc5 100755 (executable)
@@ -60,5 +60,6 @@ void apps_data_delete_folder(app_data_t *folder_item);
 void apps_data_update_folder(app_data_t *folder_item);
 void apps_data_delete_item(app_data_t *item);
 void apps_data_delete_list(Eina_List *list);
+app_data_t *apps_data_find_item_by_index(int index);
 
 #endif /* __APPS_DATA_H__ */
index ae708eb..97aebf1 100755 (executable)
@@ -33,8 +33,10 @@ void apps_view_folder_reroder(void);
 void apps_view_update_folder_icon(app_data_t *item);
 
 Evas_Object* apps_view_create_icon(app_data_t *item);
+void apps_view_delete_icon(app_data_t *item);
 void apps_view_unset_all(void);
 bool apps_view_icon_set(app_data_t *item);
+void apps_view_icon_unset(app_data_t *item);
 void apps_view_icon_add(app_data_t *item);
 
 void apps_view_hw_menu_key(void);
index 2e3a2b7..3b403af 100755 (executable)
@@ -19,7 +19,7 @@
 
 #define FRAMES_PER_SECOND 1.0/60.0
 
-#define PATH_MAX_LEN 2048
+#define STR_MAX 2048
 #define INIT_VALUE -987654321
 
 #define EDJE_DIR "edje"
@@ -47,6 +47,16 @@ extern int __conf_get_window_w();
 
 #define APPS_VIEW_ICON_IMAGE ((118) * (__conf_get_resolution_scale_w()))
 
+#define APPS_VIEW_ICON_TEXT_SIZE_NORMAL ((28) * (__conf_get_resolution_scale_h()))
+#define APPS_VIEW_ICON_TEXT_SIZE_EDIT ((25) * (__conf_get_resolution_scale_h()))
+#define APPS_VIEW_ICON_TEXT_COLOR_WHITE "FFFFFF"
+#define APPS_VIEW_ICON_TEXT_COLOR_BLACK "000000"
+
+#define APPS_VIEW_EDIT_LEFT_SCROLL_REGION ((72) * (__conf_get_resolution_scale_w()))
+#define APPS_VIEW_EDIT_RIGHT_SCROLL_REGION (APPS_VIEW_W - APPS_VIEW_EDIT_LEFT_SCROLL_REGION)
+
+#define APPS_VIEW_EDIT_MOVE_GAP 2500
+
 #define CLUSTER_VIEW_W ((720) * (__conf_get_resolution_scale_w()))
 #define CLUSTER_VIEW_H ((1150) * (__conf_get_resolution_scale_h()))
 #define CLUSTER_W CLUSTER_VIEW_W
index 2c00eb3..3883b4e 100755 (executable)
 #define SIGNAL_ICON_ENABLE "icon_enable"
 #define SIGNAL_BADGE_SHOW "badge_show"
 #define SIGNAL_BADGE_HIDE "badge_hide"
-
-#define SIGNAL_ICON_CLICKED "icon_clicked"
+#define SIGNAL_ICON_NAME_SHOW "icon_name_show"
+#define SIGNAL_ICON_NAME_HIDE "icon_name_hide"
 
 #define GROUP_FOLDER_ICON_LY "folder_ly"
 #define SIGNAL_FRAME_POSSIBLE_SHOW "frame_possible_show"
 #define SIGNAL_FRAME_IMPOSSIBLE_SHOW "frame_impossible_show"
+#define SIGNAL_FRAME_POSSIBLE_HIDE "frame_posible_hide"
 
 #define APPS_ICON_UNINSTALL_BUTTON "uninstall_btn"
 #define SIGNAL_UNINSTALL_BUTTON_SHOW_ANI "uninstall_btn_show_ani"
index 1b37328..e91a62a 100755 (executable)
@@ -28,4 +28,6 @@ void popup_show(popup_t type, int btn_count, Evas_Smart_Cb btn_func[3], void *fu
 void popup_hide(void);
 bool popup_is_show(void);
 
+void toast_show(char* str);
+
 #endif /* __POPUP_H__ */
index dec6804..c1e12e9 100755 (executable)
@@ -30,11 +30,11 @@ images {
 styles {
     style{
         name: "icon_label";
-        base: "font=Samsung Condensed:style=Regular align=center color=#FFFFFFFF font_size=12 wrap=mixed";
+        base: "font=Tizen:style=Regular align=center color=#FFFFFFFF style=shadow,bottom shadow_color=#000000FF font_size=26 ellipsis=1.0 wrap=mixed";
     }
     style{
         name: "icon_label_edit";
-        base: "font=Samsung Condensed:style=Regular align=center color=#FFFFFFFF font_size=10 wrap=mixed";
+        base: "font=Tizen:style=Regular align=center color=#FFFFFFFF style=shadow,bottom shadow_color=#000000FF font_size=23 ellipsis=1.0 wrap=mixed";
     }
 }
 collections {
@@ -113,10 +113,9 @@ collections {
                 type: TEXTBLOCK;
                 mouse_events: 1;
                 repeat_events: 1;
-                scale: 1;
                 description {
                     state: "default" 0.0;
-                    rel1{relative: 0.04 0.63; to: SIZE_SETTER;}
+                    rel1{relative: 0.04 0.6; to: SIZE_SETTER;}
                     rel2{relative: 0.95 0.98; to: SIZE_SETTER;}
                     color: 255 255 255 255;
                     text {
@@ -125,30 +124,14 @@ collections {
                     }
                 }
                 description {
-                    state: "edit" 0.0;
-                    inherit: "default" 0.0;
-                    rel1{relative: 0.04 0.61 ; to: SIZE_SETTER;}
-                    rel2{relative: 0.95 0.90; to: SIZE_SETTER;}
-                    text {
-                        style: "icon_label_edit";
-                    }
-                }
-                description {
-                    state: "black_text" 0.0;
+                    state: "disable" 0.0;
                     inherit: "default" 0.0;
-                    color: 0 0 0 255;
-                }
-                description {
-                    state: "black_edit" 0.0;
-                    inherit: "black_text" 0.0;
-                    text {
-                        style: "icon_label_edit";
-                    }
+                    color: 0 0 0 50;
                 }
                 description {
-                    state: "disable" 0.0;
+                    state: "hide" 0.0;
                     inherit: "default" 0.0;
-                    color: 0 0 0 50;
+                    visible: 0;
                 }
             }//APPS_ICON_NAME
             part
@@ -365,49 +348,6 @@ collections {
                 transition: LINEAR 0.1;
             }
             program {
-                name: "icon_clicked_program";
-                signal :"mouse,clicked,1";
-                source: APPS_ICON_CONTENT_TOUCH;
-                action: SIGNAL_EMIT SIGNAL_ICON_CLICKED SIGNAL_SOURCE;
-            }
-            program {
-                name: "set_black_text";
-                signal: SIGNAL_SET_BLACK_TEXT;
-                source: SIGNAL_SOURCE;
-                action: STATE_SET "black_text" 0.0;
-                target: APPS_ICON_NAME;
-            }
-            program {
-                name: "bg_edit_mode_on_ani";
-                signal: SIGNAL_EDIT_MODE_ON_ANI;
-                source: SIGNAL_SOURCE;
-                action: STATE_SET "edit" 0.0;
-                target: APPS_ICON_NAME;
-                transition: DECELERATE ANIMATION_RESIZE_TIME;
-            }
-            program {
-                name: "bg_edit_mode_on";
-                signal: SIGNAL_EDIT_MODE_ON;
-                source: SIGNAL_SOURCE;
-                action: STATE_SET "edit" 0.0;
-                target: APPS_ICON_NAME;
-            }
-            program {
-                name: "bg_edit_mode_off_ani";
-                signal: SIGNAL_EDIT_MODE_OFF_ANI;
-                source: SIGNAL_SOURCE;
-                action: STATE_SET "default" 0.0;
-                target: APPS_ICON_NAME;
-                transition: DECELERATE ANIMATION_RESIZE_TIME;
-            }
-            program {
-                name: "bg_edit_mode_off";
-                signal: SIGNAL_EDIT_MODE_OFF;
-                source: SIGNAL_SOURCE;
-                action: STATE_SET "default" 0.0;
-                target: APPS_ICON_NAME;
-            }
-            program {
                 name: "uninstall_button_show_ani";
                 signal: SIGNAL_UNINSTALL_BUTTON_SHOW_ANI;
                 source: SIGNAL_SOURCE;
@@ -538,6 +478,20 @@ collections {
                 target: APPS_ICON_NAME;
                 target: "app_icon_disable";
             }
+            program {
+                name: "icon_picked";
+                signal: SIGNAL_ICON_NAME_HIDE;
+                source: SIGNAL_SOURCE;
+                action: STATE_SET "hide" 0.0;
+                target: APPS_ICON_NAME;
+            }
+            program {
+                name: "icon_drop";
+                signal: SIGNAL_ICON_NAME_SHOW;
+                source: SIGNAL_SOURCE;
+                action: STATE_SET "default" 0.0;
+                target: APPS_ICON_NAME;
+            }
         }
     }
 }
\ No newline at end of file
index 71dbf4d..8b92b74 100755 (executable)
@@ -331,6 +331,13 @@ collections {
                 action: STATE_SET "frame_impossible" 0.0;
                 target: "folder_icon_image_possible";
             }
+            program {
+                name: "hide,bg,possible";
+                signal: SIGNAL_FRAME_POSSIBLE_HIDE;
+                source: SIGNAL_SOURCE;
+                action: STATE_SET "default" 0.0;
+                target: "folder_icon_image_possible";
+            }
         }
     }
 }
index bb97188..7d301fb 100755 (executable)
@@ -156,7 +156,7 @@ static Evas_Object *__add_widget_viewer_create_conformant(void)
 static Evas_Object *__add_widget_viewer_create_layout()
 {
     Evas_Object *layout;
-    char edj_path[PATH_MAX_LEN] = {0, };
+    char edj_path[STR_MAX] = {0, };
 
     if (!add_widget_viewer_s.conformant) {
         return NULL;
index dd916e4..23fefb0 100755 (executable)
@@ -33,7 +33,7 @@ void __apps_data_print(Eina_List *list);
 static int __apps_data_sort_cb(const void *a , const void *b);
 static void __apps_data_item_free(app_data_t *item);
 app_data_t *__apps_data_find_item(int db_id);
-static int __apps_data_shortcur_request_cb(const char *pkgname,
+static int __apps_data_shortcut_request_cb(const char *pkgname,
         const char *name, int type, const char *content_info, const char *icon,
         int pid, double period, int allow_duplicate, void *data);
 
@@ -64,6 +64,7 @@ void apps_data_init(void)
     EINA_LIST_FOREACH(db_list, db_find_list, db_item) {
         if (!db_item->temp) {
             apps_db_delete_by_pkg_str(db_item->pkg_str);
+            apps_view_delete_icon(db_item);
             __apps_data_item_free(db_item);
         }
     }
@@ -88,7 +89,7 @@ void apps_data_init(void)
     }
     __apps_data_print(apps_data_s.data_list);
 
-    int ret = shortcut_set_request_cb(__apps_data_shortcur_request_cb, NULL);
+    int ret = shortcut_set_request_cb(__apps_data_shortcut_request_cb, NULL);
     if (ret != SHORTCUT_ERROR_NONE)
         LOGE("Failed to add shortcut request cb: 0x%X\n", ret);
 }
@@ -224,6 +225,7 @@ void apps_data_delete_folder(app_data_t *folder_item)
     apps_db_delete(folder_item);
     apps_data_sort();
     apps_view_reroder();
+    apps_view_delete_icon(folder_item);
     __apps_data_item_free(folder_item);
 }
 
@@ -234,7 +236,7 @@ void apps_data_update_folder(app_data_t *folder_item)
     apps_view_reroder();
 }
 
-static int __apps_data_shortcur_request_cb(const char *package_name,
+static int __apps_data_shortcut_request_cb(const char *package_name,
         const char *name, int type, const char *content_info, const char *icon,
         int pid, double period, int allow_duplicate, void *data)
 {
@@ -291,6 +293,7 @@ void apps_data_delete_item(app_data_t *item)
         if (parent)
             apps_view_update_folder_icon(parent);
     }
+    apps_view_delete_icon(item);
     __apps_data_item_free(item);
 }
 
@@ -313,11 +316,22 @@ void apps_data_delete_list(Eina_List *list)
             if (parent)
                 apps_view_update_folder_icon(parent);
         }
-
+        apps_view_delete_icon(item);
         __apps_data_item_free(item);
     }
 }
 
+app_data_t *apps_data_find_item_by_index(int index)
+{
+    app_data_t *item = NULL;
+    Eina_List *find_list;
+    EINA_LIST_FOREACH(apps_data_s.data_list, find_list, item) {
+        if (item->position == index && item->parent_db_id == APPS_ROOT)
+            return item;
+    }
+    return NULL;
+}
+
 app_data_t *__apps_data_find_item(int db_id)
 {
     app_data_t *item = NULL;
@@ -331,10 +345,6 @@ app_data_t *__apps_data_find_item(int db_id)
 
 static void __apps_data_item_free(app_data_t *item)
 {
-    if (item && item->app_layout)
-        evas_object_del(item->app_layout);
-    if (item && item->folder_layout)
-        evas_object_del(item->folder_layout);
     if (item && item->label_str)
         free(item->label_str);
     if (item && item->icon_path_str)
index 25d5a27..4dd348e 100755 (executable)
@@ -16,7 +16,6 @@
 
 #include <package_manager.h>
 #include <badge.h>
-#include <efl_extension.h>
 #include <feedback.h>
 
 #include "apps_view.h"
@@ -28,8 +27,9 @@
 #include "apps_data.h"
 #include "apps_db.h"
 #include "menu.h"
+#include "mouse.h"
+#include "popup.h"
 
-#define FOLDER_STR_LEN 256
 #define MAX_BADGE_COUNT_STR_LEN 5
 #define MAX_BADGE_DISPLAY_COUNT 999
 
@@ -40,6 +40,7 @@ static struct {
     Evas_Object *chooser_btn;
     Evas_Object *folder_popup_ly;
     Evas_Object *folder_title_entry;
+    app_data_t *picked_item;
     int width;
     int height;
     page_indicator_t *indicator;
@@ -51,8 +52,11 @@ static struct {
     Eina_List *selected_items;
     app_data_t *dest_folder;
     app_data_t *opened_folder;
+    app_data_t *candidate_folder;
     int selected_item_count;
     Ecore_Animator *animator;
+    Ecore_Timer *edit_mode_scroll_timer;
+    bool is_srolling;
 } apps_view_s = {
     .scroller = NULL,
     .bg = NULL,
@@ -60,6 +64,7 @@ static struct {
     .chooser_btn = NULL,
     .folder_popup_ly = NULL,
     .folder_title_entry = NULL,
+    .picked_item = NULL,
     .width = 0,
     .height = 0,
     .indicator = NULL,
@@ -72,12 +77,30 @@ static struct {
     .selected_item_count = 0,
     .dest_folder = NULL,
     .opened_folder = NULL,
-    .animator = NULL
+    .candidate_folder = NULL,
+    .animator = NULL,
+    .edit_mode_scroll_timer = NULL,
+    .is_srolling = false,
 };
 
 static int apps_menu_list[2] = {
-        MENU_APPS_EDIT,
-        MENU_APPS_CREATE_FOLDER
+    MENU_APPS_EDIT,
+    MENU_APPS_CREATE_FOLDER
+};
+
+static mouse_info_t apps_mouse_info = {
+    .pressed = false,
+    .long_pressed = false,
+    .down_x = 0,
+    .down_y = 0,
+    .move_x = 0,
+    .move_y = 0,
+    .up_x = 0,
+    .up_y = 0,
+    .long_press_timer = NULL,
+    .offset_x = 0,
+    .offset_y = 0,
+    .pressed_obj = NULL,
 };
 
 static Eina_Hash *apps_menu_table = NULL;
@@ -86,7 +109,7 @@ static void __apps_view_create_base_gui(Evas_Object *win);
 static Evas_Object * __apps_view_add_page(void);
 static void __apps_view_remove_page(void);
 static void __apps_view_fill_apps(void);
-static void __apps_view_icon_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __apps_view_icon_clicked_cb(app_data_t *item);
 static void __apps_view_icon_uninstall_btn_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void __apps_view_icon_check_changed_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void __apps_view_create_chooser(void);
@@ -106,9 +129,25 @@ static void __apps_view_badge_update_cb(unsigned int action, const char *app_id,
 static void __apps_view_badge_update_icon(app_data_t *item);
 static void __apps_view_badge_update_count(app_data_t *item);
 static void __apps_view_plus_icon_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void __apps_view_create_toast_popup(char *str);
-static void __apps_view_toast_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
-static void __apps_view_toast_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void __apps_view_scroller_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __apps_view_scroller_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __apps_view_scroller_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static Eina_Bool __apps_view_scroller_long_press_time_cb(void *data);
+
+static void __apps_view_icon_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __apps_view_icon_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void __apps_view_icon_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static Eina_Bool __apps_view_icon_long_press_time_cb(void *data);
+static void __apps_view_edit_pick_up_icon(void *data);
+static void __apps_view_edit_drag_icon(void *data);
+static void __apps_view_edit_drop_icon(void *data);
+static Eina_Bool __apps_view_scroll_timer_cb(void *data);
+
+static void __apps_view_scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void __apps_view_scroll_to_page(int page_idx, bool animation);
+static int __apps_view_get_index(int page_index, int x, int y);
+static void __apps_view__set_icon_label_style(app_data_t *item, view_state_t state);
 
 Evas_Object *apps_view_create(Evas_Object *win)
 {
@@ -132,6 +171,10 @@ Evas_Object *apps_view_create(Evas_Object *win)
 
 void apps_view_app_terminate(void)
 {
+    evas_object_event_callback_del(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_DOWN, __apps_view_scroller_down_cb);
+    evas_object_event_callback_del(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_MOVE, __apps_view_scroller_move_cb);
+    evas_object_event_callback_del(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_UP, __apps_view_scroller_up_cb);
+
     eina_hash_free(apps_menu_table);
 }
 
@@ -302,12 +345,13 @@ Evas_Object* apps_view_create_icon(app_data_t *item)
         apps_view_update_folder_icon(item);
         elm_object_part_content_set(icon_layout, APPS_ICON_CONTENT, folder_layout);
 
+        __apps_view__set_icon_label_style(item, apps_view_s.view_state);
         if (apps_view_s.view_state == VIEW_STATE_EDIT) {
-            elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON_ANI, SIGNAL_SOURCE);
             elm_object_signal_emit(item->app_layout, SIGNAL_UNINSTALL_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
-        } else if (apps_view_s.view_state == VIEW_STATE_CHOOSER) {
-            elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON_ANI, SIGNAL_SOURCE);
         }
+        evas_object_event_callback_add(folder_layout, EVAS_CALLBACK_MOUSE_DOWN, __apps_view_icon_down_cb, item);
+        evas_object_event_callback_add(folder_layout, EVAS_CALLBACK_MOUSE_MOVE, __apps_view_icon_move_cb, item);
+        evas_object_event_callback_add(folder_layout, EVAS_CALLBACK_MOUSE_UP, __apps_view_icon_up_cb, item);
     } else {
         if (ecore_file_can_read(item->icon_path_str)) {
             LOGD("Create Image: %s", item->icon_path_str);
@@ -327,30 +371,25 @@ Evas_Object* apps_view_create_icon(app_data_t *item)
             elm_object_part_content_set(icon_layout, APPS_ICON_CONTENT, icon_image);
         }
 
-        if (item->parent_db_id != APPS_ROOT)
-            elm_object_signal_emit(item->app_layout, SIGNAL_SET_BLACK_TEXT, SIGNAL_SOURCE);
-
+        __apps_view__set_icon_label_style(item, apps_view_s.view_state);
         if (apps_view_s.view_state == VIEW_STATE_EDIT) {
-            if (item->parent_db_id == APPS_ROOT)
-                elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON, SIGNAL_SOURCE);
-
             if (item->is_removable)
                 elm_object_signal_emit(item->app_layout, SIGNAL_UNINSTALL_BUTTON_SHOW, SIGNAL_SOURCE);
         } else if (apps_view_s.view_state == VIEW_STATE_CHOOSER) {
-            if (item->parent_db_id == APPS_ROOT)
-                elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON, SIGNAL_SOURCE);
-
             elm_object_signal_emit(item->app_layout, SIGNAL_CHOOSER_MODE_ON, SIGNAL_SOURCE);
         }
+
         __apps_view_badge_update_icon(item);
         evas_object_show(icon_image);
+
+        evas_object_event_callback_add(icon_image, EVAS_CALLBACK_MOUSE_DOWN, __apps_view_icon_down_cb, item);
+        evas_object_event_callback_add(icon_image, EVAS_CALLBACK_MOUSE_MOVE, __apps_view_icon_move_cb, item);
+        evas_object_event_callback_add(icon_image, EVAS_CALLBACK_MOUSE_UP, __apps_view_icon_up_cb, item);
     }
-    elm_object_signal_callback_add(icon_layout, SIGNAL_ICON_CLICKED, SIGNAL_SOURCE, __apps_view_icon_clicked_cb, (void *)item);
+
     elm_object_signal_callback_add(icon_layout, SIGNAL_UNINSTALL_BUTTON_CLICKED, SIGNAL_SOURCE, __apps_view_icon_uninstall_btn_clicked_cb, (void *)item);
     elm_object_signal_callback_add(icon_layout, SIGNAL_CHANGED_CHECK_BOX, SIGNAL_SOURCE, __apps_view_icon_check_changed_cb,  (void *)item);
 
-    elm_object_part_text_set(icon_layout, APPS_ICON_NAME, item->label_str);
-
     evas_object_show(icon_layout);
 
     LOGD("icon [%s] create", item->pkg_str);
@@ -358,10 +397,31 @@ Evas_Object* apps_view_create_icon(app_data_t *item)
     return icon_layout;
 }
 
+void apps_view_delete_icon(app_data_t *item)
+{
+    if (item == NULL)
+        return ;
+
+    if (item->app_layout) {
+        Evas_Object *icon_image = elm_object_part_content_get(item->app_layout, APPS_ICON_CONTENT);
+        evas_object_event_callback_del(icon_image, EVAS_CALLBACK_MOUSE_DOWN, __apps_view_icon_down_cb);
+        evas_object_event_callback_del(icon_image, EVAS_CALLBACK_MOUSE_MOVE, __apps_view_icon_move_cb);
+        evas_object_event_callback_del(icon_image, EVAS_CALLBACK_MOUSE_UP, __apps_view_icon_up_cb);
+
+        evas_object_del(item->app_layout);
+        item->app_layout = NULL;
+    }
+
+    if (item->folder_layout) {
+        evas_object_del(item->folder_layout);
+        item->folder_layout = NULL;
+    }
+}
+
 void apps_view_unset_all(void)
 {
     int i, j;
-    char icon_container[FOLDER_STR_LEN];
+    char icon_container[STR_MAX];
     Eina_List *find_list = NULL;
     Evas_Object * page;
 
@@ -374,12 +434,39 @@ void apps_view_unset_all(void)
     }
 }
 
+void apps_view_icon_unset(app_data_t *item)
+{
+    Evas_Object *page = NULL;
+    int page_index;
+    int col, row;
+    char icon_container[STR_MAX];
+
+    if (item->parent_db_id == APPS_ROOT) {
+        page_index = item->position / (APPS_VIEW_COL*APPS_VIEW_ROW);
+        col = (item->position / APPS_VIEW_COL)%APPS_VIEW_ROW;
+        row = item->position % APPS_VIEW_COL;
+
+        page = eina_list_nth(apps_view_s.page_list, page_index);
+
+        sprintf(icon_container, "icon_%d_%d", col, row);
+        elm_object_part_content_unset(page, icon_container);
+    } else if(apps_view_s.opened_folder && item->parent_db_id == apps_view_s.opened_folder->db_id) {
+        col = (item->position / APPS_FOLDER_COL)%APPS_FOLDER_ROW;
+        row = item->position % APPS_FOLDER_COL;
+
+        sprintf(icon_container, "icon_%d_%d", col, row);
+        if (elm_object_part_content_get(apps_view_s.folder_popup_ly, icon_container) != NULL) {
+            elm_object_part_content_unset(apps_view_s.folder_popup_ly, icon_container);
+        }
+    }
+}
+
 bool apps_view_icon_set(app_data_t *item)
 {
     Evas_Object *page = NULL;
     int page_index;
     int col, row;
-    char icon_container[FOLDER_STR_LEN];
+    char icon_container[STR_MAX];
 
     if (item == NULL)
         return false;
@@ -456,6 +543,12 @@ static void __apps_view_create_base_gui(Evas_Object *win)
     elm_scroller_page_size_set(apps_view_s.scroller, APPS_VIEW_W, APPS_VIEW_H);
     evas_object_resize(apps_view_s.scroller, APPS_VIEW_W , APPS_VIEW_H);
 
+    evas_object_event_callback_add(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_DOWN, __apps_view_scroller_down_cb, NULL);
+    evas_object_event_callback_add(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_MOVE, __apps_view_scroller_move_cb, NULL);
+    evas_object_event_callback_add(apps_view_s.scroller, EVAS_CALLBACK_MOUSE_UP, __apps_view_scroller_up_cb, NULL);
+
+    evas_object_smart_callback_add(apps_view_s.scroller, "scroll,anim,stop", __apps_view_scroll_anim_stop_cb, NULL);
+
     apps_view_s.box = elm_box_add(apps_view_s.scroller);
     elm_box_horizontal_set(apps_view_s.box, EINA_TRUE);
     elm_box_align_set(apps_view_s.box, 0.5, 0.5);
@@ -546,9 +639,8 @@ static void __apps_view_folder_fill_apps(void)
     apps_view_folder_reroder();
 }
 
-static void __apps_view_icon_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+static void __apps_view_icon_clicked_cb(app_data_t *item)
 {
-    app_data_t *item  = (app_data_t *)data;
     app_control_h app_control_handle = NULL;
     feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
 
@@ -623,6 +715,7 @@ static void __apps_view_icon_uninstall_btn_clicked_cb(void *data, Evas_Object *o
         }
     }
 }
+
 static void __apps_view_icon_check_changed_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
     app_data_t *item  = (app_data_t *)data;
@@ -641,7 +734,7 @@ static void __apps_view_icon_check_changed_cb(void *data, Evas_Object *obj, cons
             LOGD("checked item : %d > HOME_FOLDER_MAX_ITEM(9)", item_count);
             char str[1024];
             sprintf(str, _("IDS_HS_TPOP_MAXIMUM_NUMBER_OF_APPLICATIONS_IN_FOLDER_HPD_REACHED"), APPS_FOLDER_MAX_ITEM);
-            __apps_view_create_toast_popup(str);
+            toast_show(str);
         } else {
             LOGD("%s - check", item->label_str);
             elm_object_signal_emit(item->app_layout, SIGNAL_CHECK_CHECK_BOX, SIGNAL_SOURCE);
@@ -717,12 +810,19 @@ void apps_view_set_state(view_state_t state)
         app_data_t *item = NULL;
         EINA_LIST_FOREACH(data_list, find_list, item) {
             if (item->app_layout) {
-                elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON_ANI, SIGNAL_SOURCE);
-                if (item->is_removable)
+                elm_object_signal_emit(item->app_layout, SIGNAL_CHOOSER_MODE_OFF, SIGNAL_SOURCE);
+
+                if (item != apps_view_s.picked_item)
+                    __apps_view__set_icon_label_style(item, VIEW_STATE_EDIT);
+                if (item->is_removable && item != apps_view_s.picked_item)
                     elm_object_signal_emit(item->app_layout, SIGNAL_UNINSTALL_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
                 elm_object_signal_emit(item->app_layout, SIGNAL_CHOOSER_MODE_OFF, SIGNAL_SOURCE);
             }
         }
+        if (apps_view_s.dest_folder)
+            elm_object_signal_emit(apps_view_s.dest_folder->app_layout, SIGNAL_ICON_ENABLE, SIGNAL_SOURCE);
+        elm_object_signal_emit(apps_view_s.chooser_btn, SIGNAL_CHOOSER_BUTTON_HIDE, SIGNAL_SOURCE);
+
     } else if (state == VIEW_STATE_CHOOSER) {
         homescreen_efl_btn_hide(HOMESCREEN_VIEW_APPS);
         elm_win_indicator_mode_set(homescreen_efl_get_win(), ELM_WIN_INDICATOR_HIDE);
@@ -745,9 +845,10 @@ void apps_view_set_state(view_state_t state)
         app_data_t *item = NULL;
         EINA_LIST_FOREACH(data_list, find_list, item) {
             if (item->app_layout) {
-                elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_ON_ANI, SIGNAL_SOURCE);
+                __apps_view__set_icon_label_style(item, VIEW_STATE_CHOOSER);
                 if (!item->is_folder)
                     elm_object_signal_emit(item->app_layout, SIGNAL_CHOOSER_MODE_ON, SIGNAL_SOURCE);
+                elm_object_signal_emit(item->app_layout, SIGNAL_UNINSTALL_BUTTON_HIDE_ANI, SIGNAL_SOURCE);
             }
         }
         elm_object_signal_emit(apps_view_s.chooser_btn, SIGNAL_CHOOSER_BUTTON_SHOW, SIGNAL_SOURCE);
@@ -772,7 +873,7 @@ void apps_view_set_state(view_state_t state)
         app_data_t *item = NULL;
         EINA_LIST_FOREACH(data_list, find_list, item) {
             if (item->app_layout) {
-                elm_object_signal_emit(item->app_layout, SIGNAL_EDIT_MODE_OFF_ANI, SIGNAL_SOURCE);
+                __apps_view__set_icon_label_style(item, VIEW_STATE_NORMAL);
                 elm_object_signal_emit(item->app_layout, SIGNAL_UNINSTALL_BUTTON_HIDE_ANI, SIGNAL_SOURCE);
                 elm_object_signal_emit(item->app_layout, SIGNAL_CHOOSER_MODE_OFF, SIGNAL_SOURCE);
             }
@@ -795,7 +896,7 @@ void apps_view_update_folder_icon(app_data_t* item)
     Eina_List *folder_list = NULL;
     Eina_List *find_list;
     app_data_t *temp_item;
-    char folder_item_count_string[FOLDER_STR_LEN];
+    char folder_item_count_string[STR_MAX];
     Evas_Object *icon_image = NULL;
 
     int item_count = 0;
@@ -916,7 +1017,8 @@ static Eina_Bool __apps_view_hide_folder_anim(void *data, double pos)
 
 static void __apps_view_close_folder_popup(app_data_t *item)
 {
-    apps_view_s.animator = ecore_animator_timeline_add(HOME_FOLDR_ANIMATION_TIME, __apps_view_hide_folder_anim, NULL);
+    if (apps_view_s.animator == NULL)
+        apps_view_s.animator = ecore_animator_timeline_add(HOME_FOLDR_ANIMATION_TIME, __apps_view_hide_folder_anim, NULL);
 }
 
 static void __apps_view_close_folder_popup_done(void)
@@ -942,6 +1044,7 @@ static void __apps_view_close_folder_popup_done(void)
     apps_view_s.folder_title_entry = NULL;
     apps_view_s.folder_popup_ly = NULL;
     apps_view_s.opened_folder = NULL;
+    apps_view_s.animator = NULL;
 }
 
 static void __apps_view_hide_folder_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
@@ -1002,7 +1105,7 @@ static void __apps_view_chooser_right_btn_clicked(void *data, Evas_Object *obj,
 
 static void __apps_view_update_chooser_text(int item_count)
 {
-    char text[FOLDER_STR_LEN];
+    char text[STR_MAX];
     if (apps_view_s.selected_item_count + item_count > 0) {
         sprintf(text, _("IDS_MEMO_HEADER_PD_SELECTED_ABB2"), apps_view_s.selected_item_count + item_count);
     } else
@@ -1064,7 +1167,7 @@ static void __apps_view_badge_update_count(app_data_t *item)
 
 static void __apps_view_badge_update_icon(app_data_t *item)
 {
-    char number_str[FOLDER_STR_LEN];
+    char number_str[STR_MAX];
     if (item->badge_count == 0) {
         elm_object_signal_emit(item->app_layout, SIGNAL_BADGE_HIDE, SIGNAL_SOURCE);
         return;
@@ -1095,28 +1198,396 @@ static void __apps_view_plus_icon_clicked(void *data, Evas_Object *obj, const ch
     eina_list_free(folder_list);
 }
 
-static void __apps_view_create_toast_popup(char *str)
+static void __apps_view_scroller_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+    Evas_Event_Mouse_Down* ev = event_info;
+
+    if (apps_view_s.view_state != VIEW_STATE_NORMAL)
+        return ;
+
+    LOGD("DOWN: (%d,%d)", ev->output.x, ev->output.y);
+
+    apps_mouse_info.pressed = true;
+    apps_mouse_info.pressed_obj = obj;
+
+    apps_mouse_info.down_x = apps_mouse_info.move_x = ev->output.x;
+    apps_mouse_info.down_y = apps_mouse_info.move_y = ev->output.y;
+
+    if (apps_mouse_info.long_press_timer) {
+        ecore_timer_del(apps_mouse_info.long_press_timer);
+        apps_mouse_info.long_press_timer = NULL;
+    }
+
+    apps_mouse_info.long_press_timer = ecore_timer_add(LONG_PRESS_TIME,
+            __apps_view_scroller_long_press_time_cb, obj);
+}
+
+static void __apps_view_scroller_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+    Evas_Event_Mouse_Up* ev = event_info;
+
+    if (!apps_mouse_info.pressed || apps_mouse_info.pressed_obj != obj)
+        return ;
+
+    LOGD("UP: (%d,%d)", ev->output.x, ev->output.y);
+
+    apps_mouse_info.pressed = false;
+
+    if (apps_mouse_info.long_press_timer) {
+        ecore_timer_del(apps_mouse_info.long_press_timer);
+        apps_mouse_info.long_press_timer = NULL;
+    }
+
+    apps_mouse_info.up_x = ev->output.x;
+    apps_mouse_info.up_y = ev->output.y;
+
+    apps_mouse_info.long_pressed = false;
+}
+
+static void __apps_view_scroller_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+    Evas_Event_Mouse_Move* ev = event_info;
+
+    if (!apps_mouse_info.pressed || apps_mouse_info.pressed_obj != obj)
+        return ;
+
+    LOGD("MOVE: (%d,%d)", ev->cur.output.x, ev->cur.output.y);
+
+    apps_mouse_info.move_x = ev->cur.output.x;
+    apps_mouse_info.move_y = ev->cur.output.y;
+
+    if (!apps_mouse_info.long_pressed) {
+        int distance = (apps_mouse_info.move_x - apps_mouse_info.down_x) * (apps_mouse_info.move_x - apps_mouse_info.down_x);
+        distance += (apps_mouse_info.move_y - apps_mouse_info.down_y) * (apps_mouse_info.move_y - apps_mouse_info.down_y);
+
+        if (distance > MOUSE_MOVE_MIN_DISTANCE) {
+            if (apps_mouse_info.long_press_timer) {
+                ecore_timer_del(apps_mouse_info.long_press_timer);
+                apps_mouse_info.long_press_timer = NULL;
+            }
+            return ;
+        }
+    }
+}
+
+static Eina_Bool __apps_view_scroller_long_press_time_cb(void *data)
+{
+    if (!apps_mouse_info.pressed || apps_mouse_info.pressed_obj != data)
+        return ECORE_CALLBACK_CANCEL;
+
+    apps_mouse_info.long_pressed = true;
+
+    apps_view_set_state(VIEW_STATE_EDIT);
+
+    return ECORE_CALLBACK_CANCEL;
+}
+
+static void __apps_view_icon_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+    Evas_Event_Mouse_Down* ev = event_info;
+    LOGD("DOWN: (%d,%d)", ev->output.x, ev->output.y);
+
+    apps_mouse_info.pressed = true;
+    apps_mouse_info.pressed_obj = obj;
+
+    apps_mouse_info.down_x = apps_mouse_info.move_x = ev->output.x;
+    apps_mouse_info.down_y = apps_mouse_info.move_y = ev->output.y;
+
+    if (apps_mouse_info.long_press_timer) {
+        ecore_timer_del(apps_mouse_info.long_press_timer);
+        apps_mouse_info.long_press_timer = NULL;
+    }
+
+    apps_mouse_info.long_press_timer = ecore_timer_add(LONG_PRESS_TIME,
+            __apps_view_icon_long_press_time_cb, data);
+}
+
+static void __apps_view_icon_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-    Evas_Object *popup;
+    Evas_Event_Mouse_Up* ev = event_info;
+    LOGD("UP: (%d,%d)", ev->output.x, ev->output.y);
+
+    if (!apps_mouse_info.pressed)
+        return ;
+
+    apps_mouse_info.pressed = false;
+    apps_mouse_info.pressed_obj = NULL;
+
+    if (apps_mouse_info.long_press_timer) {
+        ecore_timer_del(apps_mouse_info.long_press_timer);
+        apps_mouse_info.long_press_timer = NULL;
+    }
+
+    apps_mouse_info.up_x = ev->output.x;
+    apps_mouse_info.up_y = ev->output.y;
+
+    if (!apps_mouse_info.long_pressed) {
+        int distance = (apps_mouse_info.move_x - apps_mouse_info.down_x) * (apps_mouse_info.move_x - apps_mouse_info.down_x);
+        distance += (apps_mouse_info.move_y - apps_mouse_info.down_y) * (apps_mouse_info.move_y - apps_mouse_info.down_y);
+
+        if (distance <= MOUSE_MOVE_MIN_DISTANCE) {
+            __apps_view_icon_clicked_cb((app_data_t *)data);
+        }
+        return ;
+    }
 
-    popup = elm_popup_add(homescreen_efl_get_win());
-    elm_object_style_set(popup, "toast");
-    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    elm_object_text_set(popup, str);
-    elm_popup_timeout_set(popup, 2.0);
-    eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
-    evas_object_smart_callback_add(popup, "block,clicked", __apps_view_toast_popup_block_clicked_cb, NULL);
-    evas_object_smart_callback_add(popup, "timeout", __apps_view_toast_popup_timeout_cb, NULL);
+    apps_mouse_info.long_pressed = false;
 
-    evas_object_show(popup);
+    elm_scroller_movement_block_set(apps_view_s.scroller, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
 
+    if (apps_view_s.picked_item) {
+        __apps_view_edit_drop_icon(data);
+        apps_view_s.picked_item = NULL;
+    }
 }
 
-static void __apps_view_toast_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+static void __apps_view_icon_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
-    evas_object_del(obj);
+    Evas_Event_Mouse_Move* ev = event_info;
+    LOGD("MOVE: (%d,%d)", ev->cur.output.x, ev->cur.output.y);
+
+    if (!apps_mouse_info.pressed)
+        return ;
+
+    apps_mouse_info.move_x = ev->cur.output.x;
+    apps_mouse_info.move_y = ev->cur.output.y;
+
+    if (!apps_mouse_info.long_pressed) {
+        int distance = (apps_mouse_info.move_x - apps_mouse_info.down_x) * (apps_mouse_info.move_x - apps_mouse_info.down_x);
+        distance += (apps_mouse_info.move_y - apps_mouse_info.down_y) * (apps_mouse_info.move_y - apps_mouse_info.down_y);
+
+        if (distance > MOUSE_MOVE_MIN_DISTANCE) {
+            if (apps_mouse_info.long_press_timer) {
+                ecore_timer_del(apps_mouse_info.long_press_timer);
+                apps_mouse_info.long_press_timer = NULL;
+            }
+            return ;
+        }
+    }
+
+    if (apps_view_s.picked_item) {
+        __apps_view_edit_drag_icon(data);
+    }
 }
-static void __apps_view_toast_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+
+static Eina_Bool __apps_view_icon_long_press_time_cb(void *data)
+{
+    app_data_t *item = (app_data_t *)data;
+    if (!apps_mouse_info.pressed)
+        return ECORE_CALLBACK_CANCEL;
+
+    apps_mouse_info.long_pressed = true;
+
+    elm_scroller_movement_block_set(apps_view_s.scroller, ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+
+    if (!item->is_folder) {
+        __apps_view_edit_pick_up_icon(data);
+    }
+
+    if (apps_view_s.view_state == VIEW_STATE_NORMAL)
+        apps_view_set_state(VIEW_STATE_EDIT);
+
+    return ECORE_CALLBACK_CANCEL;
+}
+
+static void __apps_view_edit_pick_up_icon(void *data)
+{
+    int cx = -1, cy = -1;
+    int gx = -1, gy = -1, gw = 0, gh = 0;
+    Evas *e = NULL;
+    apps_view_s.picked_item = (app_data_t *)data;
+
+    Evas_Object *icon_layout = apps_view_s.picked_item->app_layout;
+
+    e = evas_object_evas_get(icon_layout);
+
+    evas_pointer_canvas_xy_get(e, &cx, &cy);
+    evas_object_geometry_get(icon_layout, &gx, &gy, &gw, &gh);
+    LOGD("cx, cy (%d, %d )", cx, cy);
+    LOGD("gx, gy, gw, gh (%d, %d, %d, %d)", gx, gy, gw, gh);
+
+    apps_mouse_info.offset_x = cx - gx;
+    apps_mouse_info.offset_y = cy - gy;
+
+    apps_view_icon_unset(apps_view_s.picked_item);
+
+    elm_object_signal_emit(icon_layout, SIGNAL_UNINSTALL_BUTTON_HIDE_ANI, SIGNAL_SOURCE);
+    elm_object_signal_emit(icon_layout, SIGNAL_ICON_NAME_HIDE, SIGNAL_SOURCE);
+
+    evas_object_move(icon_layout, apps_mouse_info.move_x - apps_mouse_info.offset_x,
+            apps_mouse_info.move_y - apps_mouse_info.offset_y);
+}
+
+static void __apps_view_edit_drag_icon(void *data)
+{
+    int page_x, page_y;
+    int bg_x, bg_y, bg_w, bg_h;
+    int widget_x, widget_y;
+
+    if (!apps_view_s.picked_item)
+        return ;
+
+    Evas_Object *app_layout = apps_view_s.picked_item->app_layout;
+    evas_object_move(app_layout, apps_mouse_info.move_x - apps_mouse_info.offset_x,
+                apps_mouse_info.move_y - apps_mouse_info.offset_y);
+
+    if (apps_view_s.folder_popup_ly) {
+        int gx, gy, gw, gh;
+        edje_object_part_geometry_get(elm_layout_edje_get(apps_view_s.folder_popup_ly), APPS_FOLDER_BG, &gx, &gy, &gw, &gh);
+
+        if (apps_mouse_info.move_x < gx || apps_mouse_info.move_x > gx + gw ||
+                apps_mouse_info.move_y < gy || apps_mouse_info.move_y > gy + gh) {
+            if (apps_view_s.animator == NULL) {
+                app_data_t *opened_folder = apps_view_s.opened_folder;
+                __apps_view_close_folder_popup(apps_view_s.opened_folder);
+                apps_view_s.picked_item->parent_db_id = APPS_ROOT;
+                apps_db_update(apps_view_s.picked_item);
+                apps_data_sort();
+                apps_view_update_folder_icon(opened_folder);
+            }
+        }
+    } else if (apps_mouse_info.move_x > APPS_VIEW_EDIT_RIGHT_SCROLL_REGION) {
+        LOGD("Move to next page");
+        if (!apps_view_s.edit_mode_scroll_timer)
+            apps_view_s.edit_mode_scroll_timer = ecore_timer_add(HOME_EDIT_SCROLL_MOVE_TIME, __apps_view_scroll_timer_cb, NULL);
+
+    } else if (apps_mouse_info.move_x < APPS_VIEW_EDIT_LEFT_SCROLL_REGION) {
+        LOGD("Move to prev page");
+        if (!apps_view_s.edit_mode_scroll_timer)
+            apps_view_s.edit_mode_scroll_timer = ecore_timer_add(HOME_EDIT_SCROLL_MOVE_TIME, __apps_view_scroll_timer_cb, NULL);
+    } else {
+        if (apps_view_s.edit_mode_scroll_timer) {
+            ecore_timer_del(apps_view_s.edit_mode_scroll_timer);
+            apps_view_s.edit_mode_scroll_timer = NULL;
+        }
+
+        if (apps_view_s.picked_item->parent_db_id == APPS_ROOT) {
+            int index = __apps_view_get_index(apps_view_s.current_page, apps_mouse_info.move_x - apps_mouse_info.offset_x,
+                    apps_mouse_info.move_y - apps_mouse_info.offset_y);
+            LOGD("ttt index = %d", index);
+            if(apps_view_s.candidate_folder == NULL ||
+                    apps_view_s.candidate_folder->position != index) {
+                if (apps_view_s.candidate_folder)
+                    elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_HIDE, SIGNAL_SOURCE);
+                apps_view_s.candidate_folder = apps_data_find_item_by_index(index);
+                if (apps_view_s.candidate_folder && !apps_view_s.candidate_folder->is_folder) {
+                    apps_view_s.candidate_folder = NULL;
+                }
+            }
+            if (apps_view_s.candidate_folder) {
+                LOGD("ttt this is folder");
+                elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_SHOW, SIGNAL_SOURCE);
+            }
+        }
+    }
+}
+
+static void __apps_view_edit_drop_icon(void *data)
+{
+    app_data_t *item = (app_data_t *)data;
+    Evas_Object *app_layout = apps_view_s.picked_item->app_layout;
+
+    if (apps_view_s.edit_mode_scroll_timer) {
+        ecore_timer_del(apps_view_s.edit_mode_scroll_timer);
+        apps_view_s.edit_mode_scroll_timer = NULL;
+    }
+
+    if (item->is_removable)
+        elm_object_signal_emit(app_layout, SIGNAL_UNINSTALL_BUTTON_SHOW_ANI, SIGNAL_SOURCE);
+
+    elm_object_signal_emit(app_layout, SIGNAL_ICON_NAME_SHOW, SIGNAL_SOURCE);
+
+    __apps_view__set_icon_label_style(item, VIEW_STATE_EDIT);
+
+    if (apps_view_s.candidate_folder) {
+        Eina_List *folder_list = NULL;
+        int folder_item_count =0;
+        apps_data_get_folder_item_list(&folder_list, apps_view_s.candidate_folder);
+        folder_item_count = eina_list_count(folder_list);
+        if (folder_item_count >= APPS_FOLDER_MAX_ITEM) {
+            char str[1024];
+            sprintf(str, _("IDS_HS_TPOP_MAXIMUM_NUMBER_OF_APPLICATIONS_IN_FOLDER_HPD_REACHED"), APPS_FOLDER_MAX_ITEM);
+            toast_show(str);
+            apps_view_icon_set(item);
+            return ;
+        } else {
+            item->parent_db_id = apps_view_s.candidate_folder->db_id;
+            apps_db_update(apps_view_s.picked_item);
+            apps_view_update_folder_icon(apps_view_s.candidate_folder);
+            elm_object_signal_emit(apps_view_s.candidate_folder->folder_layout, SIGNAL_FRAME_POSSIBLE_HIDE, SIGNAL_SOURCE);
+            if (item->app_layout) {
+                evas_object_del(item->app_layout);
+                item->app_layout = NULL;
+            }
+            apps_view_s.candidate_folder = NULL;
+        }
+    }
+    apps_data_sort();
+    apps_view_reroder();
+}
+
+static Eina_Bool __apps_view_scroll_timer_cb(void *data)
+{
+    int next_page_idx = 0;
+    if (apps_mouse_info.move_x > APPS_VIEW_EDIT_RIGHT_SCROLL_REGION) {
+        next_page_idx = apps_view_s.current_page + 1;
+    } else if (apps_mouse_info.move_x < APPS_VIEW_EDIT_LEFT_SCROLL_REGION) {
+        next_page_idx = apps_view_s.current_page - 1;
+    } else {
+        return ECORE_CALLBACK_CANCEL;
+    }
+    __apps_view_scroll_to_page(next_page_idx, true);
+    return ECORE_CALLBACK_RENEW;
+}
+
+static void __apps_view_scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    apps_view_s.is_srolling = false;
+    elm_scroller_current_page_get(obj, &apps_view_s.current_page, NULL);
+    apps_view_s.current_page = apps_view_s.current_page % apps_view_s.page_count;
+    LOGD("current page %d", apps_view_s.current_page);
+}
+
+static void __apps_view_scroll_to_page(int page_idx, bool animation)
+{
+    if (animation) {
+        apps_view_s.is_srolling = true;
+        elm_scroller_page_bring_in(apps_view_s.scroller, page_idx, 0);
+    } else {
+        page_indicator_set_current_page(apps_view_s.indicator, page_idx);
+        elm_scroller_page_show(apps_view_s.scroller, page_idx, 0);
+    }
+}
+
+static int __apps_view_get_index(int page_index, int x, int y)
+{
+    int row, col;
+    int sx = APPS_VIEW_W * 0.04;
+    int sy = APPS_VIEW_PADDING_TOP + APPS_VIEW_H * 0.05;
+    int w = (APPS_VIEW_W * 0.9) / APPS_VIEW_COL;
+    int h = (APPS_VIEW_H * 0.9) / APPS_VIEW_ROW;
+
+    for (row = 0; row < APPS_VIEW_ROW; row++) {
+        for(col = 0; col < APPS_VIEW_COL; col++) {
+            int ny = sy + (row * h);
+            int nx = sx + (col * w);
+
+            int d = (ny - y) * (ny - y) + (nx - x) * (nx - x);
+            if (d < APPS_VIEW_EDIT_MOVE_GAP) {
+                return ((APPS_VIEW_COL * APPS_VIEW_ROW) * page_index) + (row * APPS_VIEW_COL) + col;
+            }
+        }
+    }
+
+    return INIT_VALUE;
+}
+
+static void __apps_view__set_icon_label_style(app_data_t *item, view_state_t state)
 {
-    evas_object_del(obj);
+    char style_string[STR_MAX] = {0, };
+    char *text_color = item->parent_db_id == APPS_ROOT ? APPS_VIEW_ICON_TEXT_COLOR_WHITE : APPS_VIEW_ICON_TEXT_COLOR_BLACK;
+    char *text_shadow_color = item->parent_db_id == APPS_ROOT ? "000000FF" : "FFFFFFFF";
+    int font_size = (state == VIEW_STATE_NORMAL || item->parent_db_id != APPS_ROOT) ? APPS_VIEW_ICON_TEXT_SIZE_NORMAL : APPS_VIEW_ICON_TEXT_SIZE_EDIT;
+    snprintf(style_string, sizeof(style_string), "<font_size=%d><color=#%s><shadow_color=#%s>%s</shadow_color></color></font_size>", font_size, text_color, text_shadow_color,item->label_str);
+    elm_object_part_text_set(item->app_layout, APPS_ICON_NAME, style_string);
 }
index 73f48af..ed714e8 100755 (executable)
@@ -78,6 +78,7 @@ void cluster_data_insert_widget(const char* pkg_name, const char* content_info,
     new_item->allow_duplicate = 1;
 
     if (!cluster_view_add_widget(new_item, true)) {
+        cluster_view_delete_widget(new_item);
         __cluster_data_item_free(new_item);
         return ;
     }
@@ -143,8 +144,6 @@ static void __cluster_data_insert_default_data(void)
 
 static void __cluster_data_item_free(widget_data_t *item)
 {
-    if (item && item->widget_layout)
-        evas_object_del(item->widget_layout);
     if (item && item->pkg_name)
         free(item->pkg_name);
     if (item && item->content_info)
index f216dae..265f519 100755 (executable)
@@ -211,6 +211,7 @@ void cluster_page_drag_widget(cluster_page_t *page, widget_size_type_e type, int
         evas_object_size_hint_weight_set(page->highlight, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
         evas_object_color_set(page->highlight, 255 , 255, 255, 100);
     }
+
     if (cluster_page_check_empty_space(page, type, pos_x, pos_y, NULL, NULL)) {
         if (pos_x != page->highlight_pos_x || pos_y != page->highlight_pos_y) {
             int w, h;
index 1f94d65..d456b0e 100755 (executable)
@@ -64,25 +64,25 @@ static struct {
 };
 
 static int cluster_menu_list[4] = {
-        MENU_CLUSTER_EDIT,
-        MENU_CLUSTER_ADD_WIDGET,
-        MENU_CLUSTER_CHANGE_WALLPAPER,
-        MENU_CLUSTER_ALL_PAGES
+    MENU_CLUSTER_EDIT,
+    MENU_CLUSTER_ADD_WIDGET,
+    MENU_CLUSTER_CHANGE_WALLPAPER,
+    MENU_CLUSTER_ALL_PAGES
 };
 
 static mouse_info_t cluster_mouse_info = {
-        .pressed = false,
-        .long_pressed = false,
-        .down_x = 0,
-        .down_y = 0,
-        .move_x = 0,
-        .move_y = 0,
-        .up_x = 0,
-        .up_y = 0,
-        .long_press_timer = NULL,
-        .offset_x = 0,
-        .offset_y = 0,
-        .pressed_obj = NULL,
+    .pressed = false,
+    .long_pressed = false,
+    .down_x = 0,
+    .down_y = 0,
+    .move_x = 0,
+    .move_y = 0,
+    .up_x = 0,
+    .up_y = 0,
+    .long_press_timer = NULL,
+    .offset_x = 0,
+    .offset_y = 0,
+    .pressed_obj = NULL,
 };
 
 static Eina_Hash *cluster_menu_table = NULL;
@@ -163,7 +163,6 @@ Evas_Object *cluster_view_create(Evas_Object *win)
 
 void cluster_view_app_terminate(void)
 {
-
     evas_object_event_callback_del(cluster_view_s.scroller, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_scroller_down_cb);
     evas_object_event_callback_del(cluster_view_s.scroller, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_scroller_move_cb);
     evas_object_event_callback_del(cluster_view_s.scroller, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_scroller_up_cb);
@@ -502,18 +501,23 @@ bool cluster_view_add_widget(widget_data_t *item, bool scroll)
 
 void cluster_view_delete_widget(widget_data_t *item)
 {
+    if (item == NULL)
+        return ;
+
     cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, item->page_idx);
     if (page)
         cluster_page_unset(page, item);
     else
         LOGE("Page is NULL");
 
-    evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_widget_down_cb);
-    evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_widget_move_cb);
-    evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_widget_up_cb);
+    if (item->widget_layout) {
+        evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_DOWN, __clsuter_view_widget_down_cb);
+        evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_MOVE, __clsuter_view_widget_move_cb);
+        evas_object_event_callback_del(item->widget_layout, EVAS_CALLBACK_MOUSE_UP, __clsuter_view_widget_up_cb);
 
-    evas_object_del(item->widget_layout);
-    item->widget_layout = NULL;
+        evas_object_del(item->widget_layout);
+        item->widget_layout = NULL;
+    }
 }
 
 static void __cluster_view_scroll_to_home(void)
@@ -1183,8 +1187,6 @@ static void __cluster_view_edit_drag_widget(void *data)
     evas_object_move(widget_layout, cluster_mouse_info.move_x - cluster_mouse_info.offset_x,
             cluster_mouse_info.move_y - cluster_mouse_info.offset_y);
 
-    LOGD("drag %d %d", cluster_mouse_info.move_x - cluster_mouse_info.offset_x, cluster_mouse_info.move_y - cluster_mouse_info.offset_y);
-
     cluster_page_t *page = (cluster_page_t *)eina_list_nth(cluster_view_s.page_list, cluster_view_s.current_page);
     evas_object_geometry_get(page->page_layout, &page_x, &page_y, NULL, NULL);
     edje_object_part_geometry_get(elm_layout_edje_get(page->page_layout), CLUSTER_BG, &bg_x, &bg_y, &bg_w, &bg_h);
index 1d29b23..973a5c2 100755 (executable)
@@ -27,7 +27,7 @@ static struct {
 };
 
 /* menu_item_t */
-static const char menu_text[MENU_MAX][PATH_MAX_LEN] = {
+static const char menu_text[MENU_MAX][STR_MAX] = {
         "IDS_HS_OPT_EDIT",
         "IDS_HS_HEADER_ADD_WIDGET",
         "IDS_HS_OPT_CHANGE_WALLPAPER_ABB",
index aa5e398..502230f 100755 (executable)
@@ -16,6 +16,7 @@
 
 #include <app.h>
 #include <Elementary.h>
+#include <efl_extension.h>
 
 #include "homescreen-efl.h"
 #include "popup.h"
@@ -34,17 +35,17 @@ static struct {
  * 0 : POPUP_CLUSTER_PAGE_FULL
  * 1 : POPUP_CLUSTER_DELETE_PAGE
  */
-static const char popup_title_text[POPUP_MAX][PATH_MAX_LEN] = {
+static const char popup_title_text[POPUP_MAX][STR_MAX] = {
         "IDS_HS_HEADER_UNABLE_TO_ADD_WIDGET_ABB",
         "IDS_HS_HEADER_DELETE_PAGE_ABB2",
 };
 
-static const char popup_text[POPUP_MAX][PATH_MAX_LEN] = {
+static const char popup_text[POPUP_MAX][STR_MAX] = {
         "IDS_HS_POP_UNABLE_TO_ADD_THIS_HOME_BOX_TO_THE_HOME_SCREEN_THERE_IS_NOT_ENOUGH_SPACE_ON_THE_HOME_SCREEN_MSG",
         "IDS_HS_POP_THIS_PAGE_AND_ALL_THE_ITEMS_IT_CONTAINS_WILL_BE_DELETED",
 };
 
-static const char popup_button_text[POPUP_MAX][3][PATH_MAX_LEN] = {
+static const char popup_button_text[POPUP_MAX][3][STR_MAX] = {
         { "IDS_CAM_SK_OK", "", "" },
         { "IDS_HS_OPT_DELETE", "IDS_CAM_SK_CANCEL", "" }
 };
@@ -52,6 +53,9 @@ static const char popup_button_text[POPUP_MAX][3][PATH_MAX_LEN] = {
 static void __popup_default_cb(void *data, Evas_Object *obj, void *event_info);
 static void __popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
 
+static void __toast_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+static void __toast_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
 void popup_show(popup_t type, int btn_count, Evas_Smart_Cb btn_func[3], void *func_data[3])
 {
     if (popup_info.is_visible) {
@@ -113,3 +117,28 @@ static void __popup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
         popup_info.popup = NULL;
     }
 }
+
+void toast_show(char* str)
+{
+    Evas_Object *popup;
+
+    popup = elm_popup_add(homescreen_efl_get_win());
+    elm_object_style_set(popup, "toast");
+    evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    elm_object_text_set(popup, str);
+    elm_popup_timeout_set(popup, 2.0);
+    eext_object_event_callback_add(popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
+    evas_object_smart_callback_add(popup, "block,clicked", __toast_block_clicked_cb, NULL);
+    evas_object_smart_callback_add(popup, "timeout", __toast_timeout_cb, NULL);
+
+    evas_object_show(popup);
+}
+
+static void __toast_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    evas_object_del(obj);
+}
+static void __toast_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+    evas_object_del(obj);
+}