Updated GUI of video library 92/236092/3 submit/tizen/20200617.070849
authoraman.jeph <aman.jeph@samsung.com>
Sun, 14 Jun 2020 12:48:47 +0000 (18:18 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Sun, 14 Jun 2020 14:52:40 +0000 (20:22 +0530)
Change-Id: Ifc62126d87f256f20dc19947f1ed7d0299e32db8
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
22 files changed:
include/view/mp-video-list-view-folder.h
include/view/mp-video-list-view-thumbnail.h
project_def.prop
res/edje/popup_progressbar.edc
res/edje/vp-common.edc [new file with mode: 0755]
res/edje/vp-ctxpopup-option.edc
res/edje/vp-custom-winset-style.edc
res/edje/vp-main-layout.edc
res/edje/vp-search-view-internal.edc
res/edje/vp-searchbar.edc [new file with mode: 0755]
res/edje/vp-videolist-custom-gengrid.edc [new file with mode: 0755]
res/images/app_main_bg.png [new file with mode: 0755]
res/images/icon_search_clear.png [new file with mode: 0755]
res/images/icon_video_search.png [new file with mode: 0755]
res/images/search_bar_bg.png [new file with mode: 0755]
res/images/search_icon_bg.png [new file with mode: 0755]
res/images/video_playback_tracker.png [new file with mode: 0755]
src/video-player.c
src/view/mp-video-list-view-folder.c
src/view/mp-video-list-view-main.c
src/view/mp-video-list-view-thumbnail.c
src/viewMgr/videos-view-mgr.c

index e3a895a173b282e14dc2fcf3a6facf7ecaaa8fb8..89ff6c52fec85a3c34f17128fd85d2f54ceb07e5 100755 (executable)
@@ -20,6 +20,8 @@
 #include "mp-video-list-view-common.h"
 #include "mp-video-type-define.h"
 
+void mp_folder_view_folder_list_set(void *pMainHandle, void *pMainViewWidget,
+                                       MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb);
 void mp_folder_view_destroy(void);
 void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
                                                                                void *pMainViewWidget,
index 8463aa3013a031034211d26ed48f160f9c17a0d3..b6b1e56337f67425194e99742f4c9f9c1504b3f3 100755 (executable)
@@ -20,6 +20,9 @@
 
 #include "mp-video-list-view-common.h"
 
+bool mp_thumbnail_view_list_content_set(void *pMainViewHandle, void *pMainViewWidget,
+                                       MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb);
+
 bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
                                                                                 void *pMainViewWidget,
                                                                                 MpListUpdateType eUpdateType,
index 3455f9e5fb3c5b46203c2581f6f4d8ea76915485..4c19932d65323fdf4a660287faf72eb0b8c2f1b6 100755 (executable)
@@ -59,7 +59,7 @@ USER_EDCS_FONT_DIRS_ABS =
 # EDC Flags
 USER_EXT_EDC_KEYS = EDC0 
 
-USER_EXT_EDC0_EDCS = res/edje/vp-custom-winset-style.edc playview/res/edje/pv-brightness-popup.edc playview/res/edje/pv-normal-top-control.edc res/edje/vp-main-listview-internal.edc playview/res/edje/pv-speed-popup.edc res/edje/vp-remove-list-internal.edc res/edje/vp-ctxpopup-option.edc res/edje/vp-device-list-internal.edc res/edje/vp-search-view-internal.edc playview/res/edje/pv-chapter-main-new.edc res/edje/vp-thumbnail-view.edc playview/res/edje/pv-trim-control.edc playview/res/edje/pv-volume.edc playview/res/edje/pv-progressbar.edc res/edje/vp-images.edc playview/res/edje/pv-normal-control.edc playview/res/edje/pv-tag-buddy.edc playview/res/edje/pv-gesture.edc playview/res/edje/pv-volume-popup.edc playview/res/edje/pv-multi-main.edc playview/res/edje/pv-minicontroller.edc playview/res/edje/pv-zoom-guide.edc res/edje/landscape_thumbnail.edc playview/res/edje/pv-subtitle-color-popup.edc playview/res/edje/pv-popup.edc res/shared/res/video.edc res/edje/panel.edc playview/res/edje/pv-sensor-popup.edc playview/res/edje/pv-bookmark-item.edc res/edje/vp-main-layout.edc playview/res/edje/pv-subtitle.edc res/edje/vp-motion-popup.edc res/edje/popup_progressbar.edc playview/res/edje/pv-custom-winset.edc res/edje/vp-main-listview-preview.edc res/edje/vp-naviframe.edc playview/res/edje/pv-resource.edc playview/res/edje/pv-bookmark.edc playview/res/edje/pv-trim-item.edc playview/res/edje/pv-normal-function.edc res/edje/vp-speedbox-popup.edc playview/res/edje/pv-trim-top-control.edc playview/res/edje/pv-normal-main.edc playview/res/edje/pv-tag-preview.edc playview/res/edje/pv-trim-main.edc res/edje/vp-genlist-no-item.edc playview/res/edje/pv-colorselector.edc playview/res/edje/pv-lockscreenmini.edc
+USER_EXT_EDC0_EDCS = res/edje/vp-searchbar.edc res/edje/vp-custom-winset-style.edc playview/res/edje/pv-brightness-popup.edc playview/res/edje/pv-normal-top-control.edc res/edje/vp-main-listview-internal.edc playview/res/edje/pv-speed-popup.edc res/edje/vp-remove-list-internal.edc res/edje/vp-ctxpopup-option.edc res/edje/vp-device-list-internal.edc res/edje/vp-search-view-internal.edc playview/res/edje/pv-chapter-main-new.edc res/edje/vp-thumbnail-view.edc playview/res/edje/pv-trim-control.edc playview/res/edje/pv-volume.edc playview/res/edje/pv-progressbar.edc res/edje/vp-images.edc playview/res/edje/pv-normal-control.edc playview/res/edje/pv-tag-buddy.edc playview/res/edje/pv-gesture.edc playview/res/edje/pv-volume-popup.edc playview/res/edje/pv-multi-main.edc playview/res/edje/pv-minicontroller.edc playview/res/edje/pv-zoom-guide.edc res/edje/landscape_thumbnail.edc playview/res/edje/pv-subtitle-color-popup.edc playview/res/edje/pv-popup.edc res/shared/res/video.edc res/edje/panel.edc playview/res/edje/pv-sensor-popup.edc playview/res/edje/pv-bookmark-item.edc res/edje/vp-main-layout.edc playview/res/edje/pv-subtitle.edc res/edje/vp-motion-popup.edc res/edje/popup_progressbar.edc playview/res/edje/pv-custom-winset.edc res/edje/vp-main-listview-preview.edc res/edje/vp-naviframe.edc playview/res/edje/pv-resource.edc playview/res/edje/pv-bookmark.edc playview/res/edje/pv-trim-item.edc playview/res/edje/pv-normal-function.edc res/edje/vp-speedbox-popup.edc playview/res/edje/pv-trim-top-control.edc playview/res/edje/pv-normal-main.edc playview/res/edje/pv-tag-preview.edc playview/res/edje/pv-trim-main.edc res/edje/vp-genlist-no-item.edc playview/res/edje/pv-colorselector.edc playview/res/edje/pv-lockscreenmini.edc
 USER_EXT_EDC0_EDCS_IMAGE_DIRS = edje/images playview/res/edje/images res/images 
 USER_EXT_EDC0_EDCS_IMAGE_DIRS_ABS = 
 USER_EXT_EDC0_EDCS_SOUND_DIRS = edje/sounds res/edje 
@@ -69,5 +69,5 @@ USER_EXT_EDC0_EDCS_FONT_DIRS_ABS =
 
 # Resource Filter
 USER_RES_INCLUDE = 
-USER_RES_EXCLUDE = res/**/*.edc res/images vp-main/res/edje/images
+USER_RES_EXCLUDE = res/**/*.edc vp-main/res/edje/images
 
index 69bc4323f3e0a05a328c65f7b667741a453e62c1..8a37248878cb57b07cccd87fd5eab7fea5859d4b 100755 (executable)
  * limitations under the License.
  */
 
-collections {
+#include "vp-common.edc"
 
+collections {
+base_scale: CURRENT_BASE_SCALE;
 group { name: "popup_center_progress_move_copy";
 #define DEMO_POPUP_PROGRESSVIEW_CONTENT_MIN 568 154
 #define DEMO_POPUP_PROGRESSVIEW_TITLE_MIN 568 60
diff --git a/res/edje/vp-common.edc b/res/edje/vp-common.edc
new file mode 100755 (executable)
index 0000000..6d5e5af
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define CURRENT_BASE_SCALE 1.8
index c955f5e6aa40c4eb913ec9df1dc7f24708bcc17b..5edeb6e6b8aa48b5364c7b81b0b121e563bcb1cc 100755 (executable)
 //
 ///////////////////////////////////////////////////////////////////////////////////////
 
+#include "vp-common.edc"
+
 #define FONT_ROM       "Tizen:style=Roman"
 #define FONT_MED       "Tizen:style=Medium"
 
 collections {
+base_scale: CURRENT_BASE_SCALE;
 group {
        name:"video/option/ctxpopup";
        parts {
index 592d77d6a83fe0f209a3d68163446e2f8769fe1f..af1cd5cb7401230cc8fafd2453d5679519d255c1 100755 (executable)
@@ -15,6 +15,7 @@
  */
 #include "image_res.edc"
 //#include "tizen-hd-inc.edc"
+#include "vp-common.edc"
 
 externals {
           external: "elm";
@@ -29,6 +30,7 @@ collections {
                        param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP";
                        }
                }
+       base_scale: CURRENT_BASE_SCALE;
        #include "vp-controlbar.edc"
        #include "vp-layout.edc"
        #include "vp-gengrid.edc"
@@ -44,5 +46,5 @@ collections {
        #include "vp-custom-genlist-miltiline.edc"
        #include "vp-numberinfo.edc"
        #include "vp-entry-popup.edc"
-       #include "vp-toolbar.edc"
+       #include "vp-videolist-custom-gengrid.edc"
 }
index 0a51e805de64120aba7e065e4bc9f5c72feea833..09f2363d336a44af33edd195f4d09329d0f5b516 100755 (executable)
 /* elm_layout -> fundamental template style      */
 /*************************************************/
 
+#include "vp-common.edc"
+
 collections {
+       base_scale: CURRENT_BASE_SCALE;
        group { name: "elm/layout/application/video/default";
                images {
                        image: VIDEO_STROE_DEFAULT_TOP_BG_IMAGE COMP;
index c0de815534618defa4099e4ff474ec654ef700cf..02dbecb905faaba71c8a159453606ea8859c7e42 100755 (executable)
 
 #include "image_res.edc"
 #include "vp_font.edc"
+#include "vp-common.edc"
 
 collections {
+       base_scale: CURRENT_BASE_SCALE;
        group {
                name: "search.view.internal";
 
diff --git a/res/edje/vp-searchbar.edc b/res/edje/vp-searchbar.edc
new file mode 100755 (executable)
index 0000000..5090594
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define SEARCH_BAR_WIDTH 428
+#define SEARCH_BAR_HEIGHT 48
+#define SEARCH_BAR_LEFT_MARGIN 296
+#define SEARCH_ICON_BG_WIDTH 64
+#define SEARCH_ICON_BG_HEIGHT 40
+#define SEARCH_ICON_SIZE 28 28
+#define MORE_ICON_SIZE 48 48
+#define CLEAR_ICON_SIZE 15 15
+#define SEARCH_BAR_MORE_PADDING 20 48
+#define SEARCH_BAR_EXPANDED_WIDTH 360
+#define SEARCH_BAR_INPUTFILED_SIZE 260 26
+#define ICON_SPACING 20 48
+
+
+images {
+       image: "search_icon_bg.png" COMP;
+       image: "search_bar_bg.png" COMP;
+       image: "icon_video_search.png" COMP;
+       image: "icon_search_clear.png" COMP;
+       image: "app_main_bg" COMP;
+}
+
+collections {
+       base_scale: 2.6;
+       group { name: "homepage/searchbar";
+               parts {
+                       part { name: "base";
+                               type: SPACER;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: SEARCH_BAR_WIDTH SEARCH_BAR_HEIGHT;
+                                       max: -1 SEARCH_BAR_HEIGHT;
+                               }
+                       }
+                       part { name: "margin.left";
+                               type: SPACER;
+                               scale: 1;
+                               mouse_events: 0;
+                               description { state: "default" 0.0;
+                                       min: SEARCH_BAR_LEFT_MARGIN SEARCH_BAR_HEIGHT;
+                                       max: -1 SEARCH_BAR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1.to: "base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.to: "base";
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       //color: 0 0 255 255;
+                               }
+                               description { state: "searchbar_show" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 SEARCH_BAR_HEIGHT;
+                                       max: 0 SEARCH_BAR_HEIGHT;
+                               }
+                       }
+                       part { name: "search.icon.base";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description { state: "default" 0.0;
+                                       min: SEARCH_ICON_BG_WIDTH SEARCH_ICON_BG_HEIGHT;
+                                       max: -1 SEARCH_ICON_BG_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to_x: "margin.left";
+                                               to_y: "base";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "margin.left";
+                                               to_y: "base";
+                                               relative: 1.0 1.0;
+                                       }
+                                       image.normal: search_icon_bg.png;
+                                       align: 0.0 0.5;
+                               }
+                               description { state: "searchbar_show" 0.0;
+                                       inherit: "default" 0.0;
+                                       image.normal: search_bar_bg.png;
+                                       min: SEARCH_BAR_EXPANDED_WIDTH SEARCH_ICON_BG_HEIGHT;
+                               }
+                       }
+                       part { name: "search.inputfiled.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 0;
+                                       max: 0 0;
+                                       rel.to: "search.icon.base";
+                                       align: 0.0 0.5;
+                                       visible: 0;
+                               }
+                               description { state: "show"  0.0;
+                                       inherit: "default" 0.0;
+                                       min: SEARCH_BAR_INPUTFILED_SIZE;
+                                       max: SEARCH_BAR_INPUTFILED_SIZE;
+                                       rel1 {
+                                               to_x: "search.icon";
+                                               to_y: "search.icon.base";
+                                               relative: 1.0 0.0;
+                                               offset: 12 0;
+                                       }
+                                       rel2 {
+                                               to_x: "clear.icon";
+                                               to_y: "search.icon.base";
+                                               relative: 0.0 1.0;
+                                               offset: -12 0;
+                                       }
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "search.icon";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description { state: "default" 0.0;
+                                       min: SEARCH_ICON_SIZE;
+                                       max: SEARCH_ICON_SIZE;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "search.icon.base";
+                                               relative: 0.0 0.0;
+                                               offset: 16 0;
+                                       }
+                                       rel2 {
+                                               to: "search.icon.base";
+                                               relative: 0.0 1.0;
+                                       }
+                                       image.normal: icon_video_search.png;
+                                       align: 0.0 0.5;
+                               }
+                       }
+                       part { name: "clear.icon";
+                               type: IMAGE;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: CLEAR_ICON_SIZE;
+                                       max: CLEAR_ICON_SIZE;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "search.icon.base";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "search.icon.base";
+                                               relative: 1.0 1.0;
+                                               offset: -16 0;
+                                       }
+                                       image.normal: icon_search_clear.png;
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                               description { state: "show_clear" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "padding.searchbar.more";
+                               type: SPACER;
+                               scale: 1;
+                               mouse_events: 0;
+                               description { state: "default" 0.0;
+                                       min: ICON_SPACING;
+                                       max: ICON_SPACING;
+                                       rel1 {
+                                               to_x: "search.icon.base";
+                                               to_y: "base";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "search.icon.base";
+                                               to_y: "base";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "more.icon.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: MORE_ICON_SIZE;
+                                       max: MORE_ICON_SIZE;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "padding.searchbar.more";
+                                               relative: 1 0;
+                                       }
+                                       rel2 {
+                                               to: "base";
+                                               relative: 1 1;
+                                       }
+                                       visible: 1;
+                               }
+                               description { state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:0;
+                               }
+                       }
+                       part { name: "search.icon.space.touch";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       rel1.to: "search.icon.base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.to: "search.icon.base";
+                                       rel2.relative: 1.0 1.0;
+                                       color: 0 0 0 0;
+                                       visible: 1;
+                               }
+                               description { state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+               }
+               programs {
+                       program{ name: "search_icon_touch";
+                               signal: "mouse,clicked,1";
+                               source: "search.icon.space.touch";
+                               after: "show_search_bar";
+                       }
+                       program { name: "show_search_bar";
+                               signal: "searchbar,show";
+                               source: "vp";
+                               action: STATE_SET "searchbar_show" 0.0;
+                               target: "margin.left";
+                               target: "search.icon.base";
+                               after: "show_inputfield";
+                       }
+                       program { name: "show_inputfield";
+                               signal: "searchbar,inputfiled,show";
+                               source: "vp";
+                               action: STATE_SET "show" 0.0;
+                               target: "search.inputfiled.swallow";
+                               after: "show_clear_button";
+                               after: "hide_touch_space";
+                       }
+                       program { name: "hide_touch_space";
+                               signal: "search,icon,touch,hide";
+                               source: "vp";
+                               action: STATE_SET "hide" 0.0;
+                               target: "search.icon.space.touch";
+                       }
+                       program { name: "show_clear_button";
+                               signal: "searchbar,clear_button,show";
+                               source: "vp";
+                               action: STATE_SET "show_clear" 0.0;
+                               target: "clear.icon";
+                       }
+                       program{ name: "clear_icon_touch";
+                               signal: "mouse,clicked,1";
+                               source: "clear.icon";
+                               action: STATE_SET "default" 0.0;
+                               target: "clear.icon";
+                               after: "searchbar_default_state";
+                       }
+                       program { name: "searchbar_default_state";
+                               signal: "searchbar,state,default";
+                               source: "vp";
+                               action: STATE_SET "default" 0.0;
+                               target: "search.inputfiled.swallow";
+                               target: "search.icon.base";
+                               target: "margin.left";
+                               target: "search.icon.space.touch";
+                       }
+                       program { name: "hide_clear_button";
+                               signal: "searchbar,clear_button,hide";
+                               source: "vp";
+                               action: STATE_SET "default" 0.0;
+                               target: "clear.icon";
+                       }
+               }
+       }
+}
+
diff --git a/res/edje/vp-videolist-custom-gengrid.edc b/res/edje/vp-videolist-custom-gengrid.edc
new file mode 100755 (executable)
index 0000000..c152cd5
--- /dev/null
@@ -0,0 +1,427 @@
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define GLIDE_EASE_OUT(duration) CUBIC_BEZIER (duration) 0.25 0.46 0.45 1.0
+#define GENGRID_PROGRAM_DEFAULT( TARGET ) \
+         program { "default"; \
+            signal: "elm,state,default"; \
+            source: "elm"; \
+            action: STATE_SET "default"; \
+            TARGET \
+         } \
+
+styles {
+       style { name: "grid_default_text";
+               base: "font=Tizen:weight=Regular:width=BreezeSans font_size=18 color=#000C2B align=center ellipsis=1.0";
+       }
+}
+
+images {
+       image: "video_playback_tracker.png" COMP;
+}
+
+color_classes {
+        color_class { "gengrid_item/default/icon_disabled";
+               color: 255 255 255 76;
+       }
+       color_class { "gengrid_item/default/icon";
+               color: 255 255 255 255;
+       }
+       color_class { "gengrid_item/default/effect";
+               color: 38 38 38 102;
+       }
+}
+
+group { "gengrid/layout"
+       parts {
+               spacer { "base"; nomouse; scale;
+                       desc { "default";
+                       }
+               }
+               spacer { "left.padding"; nomouse; scale;
+                       desc { "default";
+                               min: 32 0;
+                               max: 32 -1;
+                               align: 0.0 0.0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 0.0 1.0;
+                               }
+                       }
+               }
+               spacer { "right.padding"; nomouse; scale;
+                       desc { "default";
+                               min: 32 0;
+                               max: 32 -1;
+                               align: 1.0 0.0;
+                               rel1 {
+                                       to: "base";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "base";
+                                       relative: 1.0 1.0;
+                               }
+                       }
+               }
+               swallow { "elm.content.swallow"; scale;
+                       desc { "default";
+                               rel1.to: "left.padding";
+                               rel1.relative: 1.0 0.0;
+                               rel2.to: "right.padding";
+                               rel2.relative: 0.0 1.0;
+                       }
+               }
+       }
+}
+
+group { "elm/gengrid/item/videolist_event/default"
+       inherit_only: 1;
+
+       parts {
+               rect { "event"; nomouse; repeat; scale;
+                       desc { "default";
+                               rel.to: "base";
+                               color: 0 0 0 0;
+                       }
+                       desc { "disabled";
+                               inherit: "default";
+                               hid;
+                       }
+               }
+       }
+       programs {
+               /* Program for enabled event */
+               program { "enabled";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default";
+                       target: "event";
+                       after: "on_enabled";
+               }
+               /* Program for disabled event */
+               program { "disabled";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled";
+                       target: "event";
+                       after: "on_disabled";
+               }
+               program { "enable_event_pass";
+                       signal: "elm,event,pass,enabled";
+                       source: "elm";
+                       script {
+                               set_mouse_events(PART:"event", 0);
+                       }
+               }
+               program { "disable_event_pass";
+                       signal: "elm,event,pass,disabled";
+                       source:"elm";
+                       script {
+                               set_mouse_events(PART:"event", 1);
+                       }
+               }
+               program { "enable_event_repeat";
+                       signal: "elm,event,repeat,enabled";
+                       source: "elm";
+                       script {
+                               set_repeat_events(PART:"event", 1);
+                       }
+               }
+               program { "disable_event_repeat";
+                       signal: "elm,event,repeat,disabled";
+                       source:"elm";
+                       script {
+                               set_repeat_events(PART:"event", 0);
+                       }
+               }
+       }
+}
+
+group { "videolist/progressbar"
+       parts {
+               spacer { "base"; scale;
+                       desc { "default";
+                               //color: 255 0 0 255;
+                       }
+               }
+               spacer { "drag_bg";
+                       desc { "default";
+                               rel.to: "base";
+                       }
+               }
+               part { "elm.cur.progressbar";
+                       scale;
+                       dragable {
+                               confine: "drag_bg";
+                               x: 1 1 1;
+                               y: 0 0 0;
+                       }
+                       desc { "default";
+                               min: 0 4;
+                               fixed: 1 1;
+                               vis;
+                               rel.to: "drag_bg";
+                       }
+               }
+               image { "elm.progress"; nomouse; scale;
+                       desc { "default";
+                               image.normal: video_playback_tracker.png;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "drag_bg";
+                               }
+                               rel2 {
+                                       to_x: "elm.cur.progressbar";
+                                       to_y: "drag_bg";
+                                       offset: -1 -1;
+                               }
+                               vis;
+                       }
+               }
+       }
+}
+
+group { "elm/gengrid/item/videolist/default";
+       inherit: "elm/gengrid/item/videolist_event/default";
+       data.item: "contents" "elm.icon elm.progress";
+       data.item: "texts" "elm.text elm.sub.text";
+
+       parts {
+               spacer { "base"; scale;
+                       desc { "default";
+                       }
+               }
+               spacer { "left_padding"; nomouse; scale;
+                       desc { "default";
+                               min: 12 0;
+                               max: 12 0;
+                               align: 0.0 0.0;
+                               fixed: 1 0;
+                               rel1.to: "base";
+                               rel1.relative: 0.0 0.0;
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to: "base";
+                               }
+                       }
+               }
+               spacer { "right_padding"; nomouse; scale;
+                       desc { "default";
+                               min: 12 0;
+                               max: 12 0;
+                               align: 1.0 0.0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to: "base";
+                               }
+                               rel2.to: "base";
+                               rel2.relative: 1.0 1.0;
+                       }
+               }
+               spacer { "bottom_padding"; nomouse; scale;
+                       desc { "default";
+                               min: 0 40;
+                               max: -1 40;
+                               align: 0.0 1.0;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x: "left_padding";
+                                       to_y: "base";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "right_padding";
+                                       to_y: "base";
+                                       relative: 0.0 1.0;
+                               }
+                       }
+               }
+               spacer { "text_area"; nomouse; scale;
+                       desc { "default";
+                               min: 0 56;
+                               max: -1 56;
+                               align: 0.0 1.0;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "bottom_padding";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "bottom_padding";
+                                       relative: 1.0 0.0;
+                               }
+                       }
+               }
+               textblock { "elm.sub.text"; nomouse; scale;
+                       desc { "default";
+                               min: 0 22;
+                               max: -1 22;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to: "text_area";
+                               }
+                               rel2 {
+                                       to: "text_area";
+                                       relative: 1.0 1.0;
+                               }
+                               text {
+                                       style: "grid_default_text";
+                                       align: 0.5 0.5;
+                                       min: 0 0;
+                               }
+                       }
+               }
+               textblock { "elm.text"; nomouse; scale;
+                       desc { "default";
+                               min: 0 22;
+                               max: -1 22;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to: "elm.sub.text";
+                               }
+                               rel2 {
+                                       to: "elm.sub.text";
+                                       relative: 1.0 0.0;
+                               }
+                               text {
+                                       style: "grid_default_text";
+                                       align: 0.5 0.5;
+                                       min: 0 0;
+                               }
+                       }
+               }
+               spacer { "icon_area"; nomouse; scale;
+                       desc { "default";
+                               rel1 {
+                                       to: "left_padding";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "text_area";
+                                       relative: 1.0 0.0;
+                               }
+                       }
+               }
+               swallow { "elm.icon"; mouse; scale;
+                       desc { "default";
+                               rel1.to: "icon_area";
+                               rel1.relative: 0.0 0.0;
+                               rel2.to: "progress_area";
+                               rel2.relative: 1.0 0.0;
+                               color_class: "gengrid_item/default/icon";
+                       }
+                       desc { "disabled";
+                               inherit: "default";
+                               color_class: "gengrid_item/default/icon_disabled";
+                       }
+               }
+               spacer { "progress_area"; nomouse; scale;
+                       desc { "default";
+                               min: 0 4;
+                               max: -1 4;
+                               align: 0.0 1.0;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "icon_area";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "icon_area";
+                                       relative: 1.0 1.0;
+                               }
+                       }
+               }
+               swallow { "elm.progress"; nomouse; scale;
+                       desc { "default";
+                               rel.to: "progress_area";
+                       }
+               }
+               rect { "effect_cover"; nomouse; scale;
+                       desc { "default";
+                               rel.to: "elm.icon";
+                               color: 0 0 0 0;
+                               color_class: "gengrid_item/default/effect";
+                       }
+                       desc { "pressed";
+                               inherit: "default";
+                               color: 255 255 255 255;
+                       }
+               }
+               // event area
+               rect { "event";
+                       desc { "default";
+                               rel.to: "base";
+                       }
+                       desc { "disabled";
+                               inherit: "default";
+                               hid;
+                       }
+               }
+       }
+       programs {
+               program { "play_sound";
+                       signal: "elm,state,clicked";
+                       source: "elm";
+                       script {
+                       run_program(PROGRAM:"touch_sound");
+                       }
+               }
+               program { "touch_sound";
+                       action: RUN_PLUGIN "touch_sound";
+               }
+               program { "on_enabled";
+                       action: STATE_SET "default";
+                       target: "elm.icon";
+                       target: "effect_cover";
+               }
+               program { "on_disabled";
+                       action: STATE_SET "disabled";
+                       target: "elm.icon";
+               }
+               program { "selected";
+                       signal: "elm,state,selected";
+                       source: "elm";
+                       action: STATE_SET "pressed";
+                       target: "effect_cover";
+                       transition: GLIDE_EASE_OUT(0.25);
+               }
+               program { "unselected";
+                       signal: "elm,state,unselected";
+                       source: "elm";
+                       action: STATE_SET "default";
+                       target: "effect_cover";
+                       transition: GLIDE_EASE_OUT(0.25);
+               }
+               GENGRID_PROGRAM_DEFAULT(
+                       target: "elm.icon";
+                       target: "elm.progress";
+                       target: "effect_cover";
+                       target: "elm.text";
+                       target: "elm.sub.text";
+                       target: "event";
+               )
+       }
+}
diff --git a/res/images/app_main_bg.png b/res/images/app_main_bg.png
new file mode 100755 (executable)
index 0000000..8755213
Binary files /dev/null and b/res/images/app_main_bg.png differ
diff --git a/res/images/icon_search_clear.png b/res/images/icon_search_clear.png
new file mode 100755 (executable)
index 0000000..63faf82
Binary files /dev/null and b/res/images/icon_search_clear.png differ
diff --git a/res/images/icon_video_search.png b/res/images/icon_video_search.png
new file mode 100755 (executable)
index 0000000..9318e77
Binary files /dev/null and b/res/images/icon_video_search.png differ
diff --git a/res/images/search_bar_bg.png b/res/images/search_bar_bg.png
new file mode 100755 (executable)
index 0000000..71b2d97
Binary files /dev/null and b/res/images/search_bar_bg.png differ
diff --git a/res/images/search_icon_bg.png b/res/images/search_icon_bg.png
new file mode 100755 (executable)
index 0000000..e0910ae
Binary files /dev/null and b/res/images/search_icon_bg.png differ
diff --git a/res/images/video_playback_tracker.png b/res/images/video_playback_tracker.png
new file mode 100755 (executable)
index 0000000..2c58676
Binary files /dev/null and b/res/images/video_playback_tracker.png differ
index 40f25ded7eab06f3587981f90a773643004222e8..72a5e901c07ab18b0254e78a4966fa02d3db5e39 100755 (executable)
@@ -56,7 +56,7 @@ static void __app_color_theme_changed(void *pUserData)
 static void appCreateInternal()
 {
        VideoLogWarning("== APP CREATE INTERNAL ==");
-
+       elm_app_base_scale_set(1.8);
        mp_util_create_main_theme();
        mp_util_set_color_theme_changed_cb(__app_color_theme_changed);
 
index ca0e548ef5aeece97c20bf327e59bf04b43ee1f2..1fa9d684007df3e7dba2b3469d33d6572eaf044a 100755 (executable)
@@ -54,6 +54,7 @@ typedef struct {
 
        Evas_Object *pVideosGenlist;
        Evas_Object *pNocontentlayout;
+       Evas_Object *pCurrentLayout;
        Elm_Genlist_Item_Class *pFolderList_Itc;
        Elm_Genlist_Item_Class *pFolderListLandscape_Itc;
        Elm_Genlist_Item_Class *pGenGridItc;
@@ -98,9 +99,10 @@ void __mp_folder_view_create_no_content()
                                                                           pMainWidget->pListViewBaselayout,
                                                                           VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
                                                                           VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
-               elm_object_part_content_unset(g_pFolderView->
+               Evas_Object *old_content = elm_object_part_content_unset(g_pFolderView->
                                                                          pMainWidget->pListViewBaselayout,
                                                                          SWALLOW_LISTVIEW_CONTENT);
+               evas_object_hide(old_content);
                if (g_pFolderView->pVideosGenlist) {
                        evas_object_hide(g_pFolderView->pVideosGenlist);
                }
@@ -1134,6 +1136,32 @@ static void __mp_folder_view_rotate_cb(void *data, Evas_Object * obj,
        __mp_folder_view_append_grid_layout(g_pFolderView->pVideosGenlist);
 }
 
+
+
+/**
+ * @brief set the folder list on toolbar item select callback
+ * @param pMainViewHandle
+ * @param pMainViewWidget
+ * @param eUpdateType
+ * @param pUpdateVideoListUserCb
+ */
+void mp_folder_view_folder_list_set(void *pMainHandle, void *pMainViewWidget,
+                                       MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb)
+{
+       VideoLogDebug("IN");
+       if(g_pFolderView == NULL)
+       {
+               mp_folder_view_arrange_folder_list(pMainHandle, pMainViewWidget, eUpdateType, pUpdateVideoListUserCb);
+       } else {
+               Evas_Object *curr_content = elm_object_part_content_get(g_pFolderView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+               if(curr_content != g_pFolderView->pCurrentLayout)
+               {
+                       curr_content = elm_object_part_content_unset(g_pFolderView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+                       evas_object_hide(curr_content);
+                       elm_object_part_content_set(g_pFolderView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pFolderView->pCurrentLayout);
+               }
+       }
+}
 /**
  *
  * @param pMainViewHandle
@@ -1175,11 +1203,6 @@ void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
                                                                                          mp_util_get_main_window_handle
                                                                                          ());
 
-       elm_object_item_part_text_set(g_pFolderView->
-                                                                 pMainHandle->pNaviFrameItem,
-                                                                 "elm.text.title",
-                                                                 VIDEOS_TITLE_OPT_FOLDER);
-
        VideoLogInfo("");
 
        int nFolderListSize = 0;
@@ -1198,7 +1221,7 @@ void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
 
        if (nFolderListSize > 0) {
                if (g_pFolderView->pNocontentlayout) {
-                       elm_object_part_content_unset(g_pFolderView->pNocontentlayout,
+                       elm_object_part_content_unset(g_pFolderView->pMainWidget->pListViewBaselayout,
                                                                                  SWALLOW_LISTVIEW_CONTENT);
                        MP_DEL_OBJ(g_pFolderView->pNocontentlayout);
                }
@@ -1229,6 +1252,8 @@ void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
                        __mp_folder_view_add_genlist_cb(g_pFolderView->pVideosGenlist);
 #endif
                }
+               Evas_Object *old_content  = elm_object_part_content_unset(g_pFolderView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+               evas_object_hide(old_content);
                elm_object_part_content_set(g_pFolderView->
                                                                        pMainWidget->pListViewBaselayout,
                                                                        SWALLOW_LISTVIEW_CONTENT,
@@ -1239,8 +1264,10 @@ void mp_folder_view_arrange_folder_list(void *pMainViewHandle,
                                                                           "wm,rotation,changed",
                                                                           __mp_folder_view_rotate_cb, NULL);
                evas_object_show(g_pFolderView->pVideosGenlist);
+               g_pFolderView->pCurrentLayout = g_pFolderView->pVideosGenlist;
        } else {
                __mp_folder_view_create_no_content();
+               g_pFolderView->pCurrentLayout = g_pFolderView->pNocontentlayout;
        }
 
        mp_list_view_update_count_layout();
index 0dfc34e99305e9c7c476df313cabe8c26dc7d2f4..76a3fa03800870d9fd4a7c324fd3d26201fed640 100755 (executable)
 #include "mp-util-config.h"
 
 
+#define TOOLBAR_BUTTON_VIDEOS "Videos"
+#define TOOLBAR_BUTTOn_FOLDERS "Folders"
+
 static st_VideoListViewMainViewHandle *g_pMainViewHandle = NULL;
 static st_VideoListViewMainViewWidget *g_pMainViewWidget = NULL;
 
+typedef struct _toolbar_item_data
+{
+       Elm_Object_Item *videos_item;
+       Elm_Object_Item *folders_item;
+}toolbar_item_data;
+
+static toolbar_item_data  g_pToolbarItemData = {NULL, NULL};
+
+
+
 
 /*///////////////////////////////////////////////////*/
 /* Pre-define function for building.*/
@@ -1157,6 +1170,7 @@ Evas_Object *mp_list_view_create_base_layout(void *pParent)
        evas_object_size_hint_weight_set
                (g_pMainViewWidget->pListViewBaselayout, EVAS_HINT_EXPAND,
                 EVAS_HINT_EXPAND);
+       evas_object_size_hint_weight_set(g_pMainViewWidget->pListViewBaselayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(g_pMainViewWidget->pListViewBaselayout,
                                                                        EVAS_HINT_FILL, EVAS_HINT_FILL);
 
@@ -1186,6 +1200,63 @@ static void __mp_list_personal_view_display(void)
                                                           LIST_UPDATE_TYPE_ALL);
 }
 
+static void
+toolbar_videos_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       VideoLogInfo("Called");
+       mp_thumbnail_view_list_content_set(g_pMainViewHandle, g_pMainViewWidget,
+                                       LIST_UPDATE_TYPE_ALL, (void *)__mp_list_view_result_user_cb);
+}
+
+static void
+toolbar_folders_item_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       VideoLogInfo("Called");
+       mp_folder_view_folder_list_set(g_pMainViewHandle, g_pMainViewWidget,
+                                       LIST_UPDATE_TYPE_ALL, (void *)__mp_list_view_result_user_cb);
+}
+
+Evas_Object* mp_list_view_create_toolbar(Evas_Object* naviframe)
+{
+       Evas_Object *toolbar;
+
+       toolbar = elm_toolbar_add(naviframe);
+
+       elm_object_style_set(toolbar, "tabbar");
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+       elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+
+       g_pToolbarItemData.videos_item = elm_toolbar_item_append(toolbar, NULL, TOOLBAR_BUTTON_VIDEOS, toolbar_videos_item_cb, NULL);
+       g_pToolbarItemData.folders_item = elm_toolbar_item_append(toolbar, NULL, TOOLBAR_BUTTOn_FOLDERS, toolbar_folders_item_cb, NULL);
+
+       ///elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       return toolbar;
+}
+
+Evas_Object* mp_list_view_create_title_content(Evas_Object* naviframe)
+{
+       Evas_Object* layout = elm_layout_add(naviframe);
+       char path[1024] = {0, };
+       char *res_path = app_get_resource_path();
+       snprintf(path, 1024, "%s%s/%s", res_path, "edje", "vp-searchbar.edj");
+       elm_layout_file_set(layout, path, "homepage/searchbar");
+
+       Evas_Object* more_button = elm_button_add(layout);
+       elm_object_style_set(more_button, "naviframe/more");
+       elm_object_part_content_set(layout, "more.icon.swallow", more_button);
+
+       Evas_Object *entry = elm_entry_add(layout);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       eext_entry_selection_back_event_allow_set(entry, EINA_TRUE);
+       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_part_content_set(layout, "search.inputfiled.swallow", entry);
+
+       return layout;
+}
+
 /**
  *
  * @param pNaviFrameHandle
@@ -1219,16 +1290,21 @@ void mp_list_view_init_widget(void *pNaviFrameHandle)
        }
 
        g_pMainViewHandle->pNaviFrameItem =
-               elm_naviframe_item_push(g_pMainViewHandle->pNaviFrameHandle,
-                                                               VIDEOS_TITLE_VIDEO, NULL, NULL,
-                                                               g_pMainViewWidget->pListViewBaselayout,
-                                                               NULL);
+               elm_naviframe_item_push(g_pMainViewHandle->pNaviFrameHandle, NULL, NULL, NULL, 
+                               g_pMainViewWidget->pListViewBaselayout, NULL);
+
+       Evas_Object* toolbar = mp_list_view_create_toolbar(g_pMainViewHandle->pNaviFrameHandle);
+       elm_object_item_part_content_set(g_pMainViewHandle->pNaviFrameItem, "toolbar", toolbar);
+       elm_object_item_signal_emit(g_pMainViewHandle->pNaviFrameItem, "elm,state,toolbar,show", "elm");
+
+       Evas_Object* title_content = mp_list_view_create_title_content(g_pMainViewHandle->pNaviFrameHandle);
+       elm_object_item_part_content_set(g_pMainViewHandle->pNaviFrameItem, "title_content", title_content);
+       elm_object_item_signal_emit(g_pMainViewHandle->pNaviFrameItem, "elm,state,title_content,show", "elm");
 
        elm_naviframe_item_pop_cb_set(g_pMainViewHandle->pNaviFrameItem,
                                                                  mp_list_view_back_btn_cb,
                                                                  g_pMainViewHandle);
-       elm_naviframe_item_title_enabled_set(g_pMainViewHandle->pNaviFrameItem,
-                                                                                EINA_TRUE, EINA_FALSE);
+       //elm_naviframe_item_title_enabled_set(g_pMainViewHandle->pNaviFrameItem, EINA_FALSE, EINA_FALSE);
        evas_object_smart_callback_add(g_pMainViewHandle->pNaviFrameHandle,
                                                                   "transition,finished",
                                                                   mp_list_view_naviframe_transition_effect_cb,
@@ -1244,6 +1320,7 @@ void mp_list_view_init_widget(void *pNaviFrameHandle)
        if (g_pMainViewHandle->nListTabType == LIST_TAB_TYPE_PERSONAL) {
                __mp_list_personal_view_display();
        }
+       elm_toolbar_item_selected_set(g_pToolbarItemData.videos_item, EINA_TRUE);
 }
 
 /**
index fee0caff10d73875ed3359a562c4347d8b3a2d45..3eaab08d55010ae5e9137b1d4dd972fb9546baab 100755 (executable)
 /*the max update waiting time is VIDEO_WALL_UPDATE_TIMER*VIDEO_WALL_UPDATE_TIMER_COUNTER*/
 #define VIDEO_WALL_UPDATE_TIMER_COUNTER                6
 
+// Width is  ICON(280) + LEFT_PADDING(12)  RIGHT_PADDING(12)
+#define GENGRID_ITEM_WIDTH 304
+//Height is ICON(160) + TEXT_PART(56) + Bottom_PADDING(40)
+#define GENGRID_ITEM_HEIGHT 256
+
+typedef struct _stGengridItemData{
+       Elm_Object_Item *item;
+       Evas_Object *icon;
+       Evas_Object *progress_layout;
+       int videoIndex;
+}stGengridItemData;
+
 typedef struct {
        UpdateListItemsCbFunc fViewCbFunc;
        st_VideoListViewMainViewHandle *pMainHandle;
        st_VideoListViewMainViewWidget *pMainWidget;
 
-       Evas_Object *pVideosGenlist;
-
-       Eina_List *pVideoItemList;
+       Evas_Object *pCurrentLayout;
+       Evas_Object *pVideolistGengrid;
+       Evas_Object *pGengridContainer;
+       Elm_Gengrid_Item_Class *pVideolistGIC;
        Ecore_Idler *pPlayIdler;
-       Ecore_Timer *pStartWallTimer;
-       Ecore_Idler *pWallResolutionIdler;
        MpListUpdateType eUpdateType;
-
-       /*wall */
-       Eina_List *pWallHandleList;
        Evas_Object *pNocontentlayout;
-
-       Elm_Genlist_Item_Class *pGenGridItc;
-       Elm_Genlist_Item_Class *pGenGridZoomItc;
-       Elm_Genlist_Item_Class *pNoItemItc;
-       Elm_Gengrid_Item_Class *pGenGridItc_l;
-       Elm_Gengrid_Item_Class *pGenGridItc_r;
-
+       stGengridItemData *pSelectedItemData;
        bool bLandscape;
-       int nSelectedVideoItem;
-       int nUpdateTimerCounter;
-
        int zoom_level;
 } stThumbnailView;
 
-
 static stThumbnailView *g_pThumbnailView = NULL;
 
 
@@ -109,117 +107,11 @@ static void __mp_thumbnail_view_realize_genlist_item_cb(void *pUserData,
                                                                                                                Evas_Object *
                                                                                                                pObject,
                                                                                                                void *pEventInfo);
-static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *
-                                                                                                        pGengrid,
-                                                                                                        int nGenItemIndex);
-static Evas_Object *__mp_thumbnail_view_create_gengrid(Evas_Object *
-                                                                                                          parent, int nWidth,
-                                                                                                          int nHeight);
+static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *pGengrid);
 static void __mp_thumbnail_view_reset(MpListUpdateType eUpdateType);
-
-/**
- *
- * @return
- */
-static int mp_thumbnail_get_portrait_count()
-{
-       if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
-               return VP_GENLIST_THUMB_PORTRAIT_COUNT_ZOOM_IN;
-
-       return VP_GENLIST_THUMB_PORTRAIT_COUNT;
-}
-
-/**
- *
- * @return
- */
-static int mp_thumbnail_get_landscape_count()
-{
-       if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
-               return VP_GENLIST_THUMB_LANDSPACE_COUNT_ZOOM_IN;
-
-       return VP_GENLIST_THUMB_LANDSPACE_COUNT;
-}
-
-/**
- *
- * @param height
- * @param width
- */
-void mp_thumbnail_get_icon_dimensions(int *height, int *width)
-{
-       int winHeight = 0;
-       int winWidth = 0;
-       elm_win_screen_size_get(mp_util_get_main_window_handle(), NULL, NULL,
-                                                       &winWidth, &winHeight);
-
-       bool bLandscape = mp_rotate_ctrl_check_landspace();
-       if (bLandscape) {
-               *width = winHeight / mp_thumbnail_get_landscape_count();
-       } else {
-               *width = winWidth / mp_thumbnail_get_portrait_count();
-       }
-
-       if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX)
-               *height = VP_ALBUM_THUMB_ICON_HEIGHT_ZOOM_IN * MP_SCALE;
-       else
-               *height = VP_ALBUM_THUMB_ICON_HEIGHT * MP_SCALE;
-}
-
-/**
- *
- * @param nIndexGenlist
- */
-void mp_thumbnail_view_cancel_thumbnail_update(int nIndexGenlist)
-{
-       if (!g_pThumbnailView) {
-               VideoLogError("");
-               return;
-       }
-
-       bool bLandscape = mp_rotate_ctrl_check_landspace();
-       int nVideoItemIndex = 0;
-       int nItemCount = VP_GENLIST_THUMB_PORTRAIT_COUNT;
-
-       if (bLandscape) {
-               nItemCount = VP_GENLIST_THUMB_LANDSPACE_COUNT;
-       }
-
-       nVideoItemIndex = nIndexGenlist * nItemCount;
-       int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
-       VideoLogInfo("realize is %d--%d--%d", nItemCount, nVideoItemIndex,
-                                nVideoListSize);
-
-       int nIndex = 0;
-       for (; (nIndex < nItemCount) && (nVideoItemIndex < nVideoListSize);
-                nIndex++) {
-               nVideoItemIndex = nVideoItemIndex + nIndex;
-
-               mp_util_svc_cancel_thumbnail_update(nVideoItemIndex);
-       }
-
-}
-
-/**
- *
- * @param nVideoItemIndex
- * @return
- */
-int mp_thumbnail_view_thumbnail_to_genlist_index(int nVideoItemIndex)
-{
-       /*nVideoItemIndex = 0-->max */
-       if (nVideoItemIndex < 0) {
-               VideoLogDebug("invalid nVideoItemIndex");
-               return 0;
-       }
-       int nItemCount = mp_thumbnail_get_portrait_count();
-       int nGenlistIndex = 0;
-       if (g_pThumbnailView->bLandscape) {
-               nItemCount = mp_thumbnail_get_landscape_count();
-       }
-       nGenlistIndex = nVideoItemIndex / nItemCount;
-       return nGenlistIndex;
-}
+static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
+                                                       Evas_Object *pObject,
+                                                       void *pEventInfo);
 
 /**
  *
@@ -283,202 +175,16 @@ static Eina_Bool __mp_thumbnail_view_play_video_idler_cb(void *pUserData)
        return ECORE_CALLBACK_CANCEL;
 }
 
-/**
- *
- * @param pUserData
- * @param pObject
- * @param pPart
- * @return
- */
-static Evas_Object *__mp_thumbnail_view_get_icon_of_grid_cb(const void
-                                                                                                                       *pUserData,
-                                                                                                                       Evas_Object *
-                                                                                                                       pObject,
-                                                                                                                       const char
-                                                                                                                       *pPart)
-{
-       if (!g_pThumbnailView || !pObject) {
-               VideoLogError("g_pMainViewWidgetOfThumbnailList is NULL");
-               return NULL;
-       }
-
-       int nGenItemIndex = (int) pUserData;
-       int nHeight = 0;
-       int nWidth = 0;
-       mp_thumbnail_get_icon_dimensions(&nHeight, &nWidth);
-
-       Evas_Object *pGengrid =
-               __mp_thumbnail_view_create_gengrid(pObject, nWidth, nHeight);
-       __mp_thumbnail_view_append_gengrid_items(pGengrid, nGenItemIndex);
-
-       return pGengrid;
-}
-
-/**
- *
- * @param data
- * @param obj
- * @param event_info
- */
-static void __mp_thumbnail_view_video_item_del_cb(void *data,
-                                                                                                 Evas_Object * obj,
-                                                                                                 void *event_info)
-{
-       if (!g_pThumbnailView || !event_info
-               || !g_pThumbnailView->pVideoItemList) {
-               VideoLogError("g_pMainViewWidge is NULL");
-               return;
-       }
-       int nIndexGenlist = 0;
-       Elm_Object_Item *pCurrentItem = (Elm_Object_Item *) event_info;
-
-       Eina_List *pCurList = NULL;
-       Elm_Object_Item *pTmpVideoItem = NULL;
-       EINA_LIST_FOREACH(g_pThumbnailView->pVideoItemList, pCurList,
-                                         pTmpVideoItem) {
-               if (pCurrentItem == pTmpVideoItem) {
-                       nIndexGenlist = (int) elm_object_item_data_get(pCurrentItem);
-                       mp_thumbnail_view_cancel_thumbnail_update(nIndexGenlist);
-                       pTmpVideoItem = NULL;
-                       pCurList->data = NULL;
-                       break;
-               }
-       }
-}
-
 #ifdef ENABLE_LONGPRESS
 static void __mp_thumbnail_view_free_video_wall_item(char *pVideoItemId)
 {
-       if (!pVideoItemId || !g_pThumbnailView
-               || !g_pThumbnailView->pWallHandleList) {
+       if (!pVideoItemId || !g_pThumbnailView ) {
                VideoLogError("");
                return;
        }
 }
 #endif
 
-/**
- *
- * @param pGenlist
- * @return
- */
-static bool __mp_thumbnail_view_append_grid_layout(void *pGenlist)
-{
-       if (!pGenlist || !g_pThumbnailView) {
-               VideoLogError("error handle.");
-               return FALSE;
-       }
-       int nIndex = 0;
-       int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
-       if (nVideoListSize <= 0) {
-               VideoLogWarning("nVideoListSize = %d", nVideoListSize);
-               return FALSE;
-       }
-
-       MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
-       g_pThumbnailView->pGenGridItc = elm_genlist_item_class_new();
-
-       g_pThumbnailView->pGenGridItc->item_style = "video/1icon.thumbnail";
-       g_pThumbnailView->pGenGridItc->func.text_get = NULL;
-       g_pThumbnailView->pGenGridItc->func.content_get =
-               (void *) __mp_thumbnail_view_get_icon_of_grid_cb;
-       g_pThumbnailView->pGenGridItc->func.state_get = NULL;
-       g_pThumbnailView->pGenGridItc->func.del = NULL;
-       g_pThumbnailView->pGenGridItc->decorate_item_style = NULL;
-
-       MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
-       g_pThumbnailView->pGenGridZoomItc = elm_genlist_item_class_new();
-       g_pThumbnailView->pGenGridZoomItc->item_style =
-               "video/1icon.thumbnail.zoom";
-       g_pThumbnailView->pGenGridZoomItc->func.text_get = NULL;
-       g_pThumbnailView->pGenGridZoomItc->func.content_get =
-               (void *) __mp_thumbnail_view_get_icon_of_grid_cb;
-       g_pThumbnailView->pGenGridZoomItc->func.state_get = NULL;
-       g_pThumbnailView->pGenGridZoomItc->func.del = NULL;
-       g_pThumbnailView->pGenGridZoomItc->decorate_item_style = NULL;
-
-       int nGenlistRow = 0;
-       nGenlistRow =
-               mp_thumbnail_view_thumbnail_to_genlist_index(nVideoListSize - 1);
-       Elm_Object_Item *pTmpVideoGenlistItem = NULL;
-
-       if (g_pThumbnailView->zoom_level == VP_ZOOM_IN_MAX) {
-               for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
-                       pTmpVideoGenlistItem =
-                               elm_genlist_item_append(pGenlist,
-                                                                               g_pThumbnailView->pGenGridZoomItc,
-                                                                               (void *) nIndex, NULL,
-                                                                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
-
-                       g_pThumbnailView->pVideoItemList =
-                               eina_list_append(g_pThumbnailView->pVideoItemList,
-                                                                pTmpVideoGenlistItem);
-                       elm_object_item_del_cb_set(pTmpVideoGenlistItem,
-                                                                          __mp_thumbnail_view_video_item_del_cb);
-               }
-       } else {
-               for (nIndex = 0; nIndex <= nGenlistRow; nIndex++) {
-                       pTmpVideoGenlistItem =
-                               elm_genlist_item_append(pGenlist,
-                                                                               g_pThumbnailView->pGenGridItc,
-                                                                               (void *) nIndex, NULL,
-                                                                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
-
-                       g_pThumbnailView->pVideoItemList =
-                               eina_list_append(g_pThumbnailView->pVideoItemList,
-                                                                pTmpVideoGenlistItem);
-                       elm_object_item_del_cb_set(pTmpVideoGenlistItem,
-                                                                          __mp_thumbnail_view_video_item_del_cb);
-               }
-       }
-
-
-       MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
-       g_pThumbnailView->nUpdateTimerCounter = 0;
-
-       return TRUE;
-}
-
-/**
- *
- * @param pUserData
- * @param pObject
- * @param pPart
- * @return
- */
-Evas_Object *__mp_thumbnail_view_get_icon_of_no_item_cb(const void
-                                                                                                               *pUserData,
-                                                                                                               Evas_Object *
-                                                                                                               pObject,
-                                                                                                               const char *pPart)
-{
-       char edj_path[1024] = { 0 };
-
-       char *path = app_get_resource_path();
-       snprintf(edj_path, 1024, "%s%s/%s", path, "edje",
-                        VIDEO_PLAYER_NO_ITEM_EDJ);
-       free(path);
-       if (!strcmp(pPart, "elm.icon")) {
-               int width = NO_ITEM_GENLIST_WIDTH * elm_config_scale_get();
-               int height = NO_ITEM_GENLIST_HEIGHT * elm_config_scale_get();
-
-               Evas_Object *pNoItemLayout = NULL;
-               pNoItemLayout = elm_layout_add(pObject);
-               elm_layout_file_set(pNoItemLayout, edj_path,
-                                                       GENLIST_NOITEM_EDJ_GROUP);
-               evas_object_size_hint_min_set(pNoItemLayout, width, height);
-
-               elm_object_part_text_set(pNoItemLayout,
-                                                                SWALLOW_LISTVIEW_NO_ITEM_TEXT,
-                                                                VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC);
-               evas_object_show(pNoItemLayout);
-               return pNoItemLayout;
-       }
-
-       return NULL;
-}
-
-
 /*//////////////////////////////////////////////////*/
 /* External APIs*/
 /**
@@ -503,9 +209,9 @@ static void __mp_thumbnail_view_rotate_cb(void *data, Evas_Object * obj,
        } else {
                g_pThumbnailView->bLandscape = false;
        }
-       elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
-       __mp_thumbnail_view_append_grid_layout
-               (g_pThumbnailView->pVideosGenlist);
+       elm_gengrid_clear(g_pThumbnailView->pVideolistGengrid);
+       __mp_thumbnail_view_append_gengrid_items(g_pThumbnailView->pVideolistGengrid);
+
 }
 
 /**
@@ -520,9 +226,6 @@ int _grid_view_zoom_out(void *data, Evas_Object * view)
                (st_VideoListViewMainViewWidget *) data;
 
        g_pThumbnailView->zoom_level = ad->zoom_level;
-       elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
-       __mp_thumbnail_view_append_grid_layout
-               (g_pThumbnailView->pVideosGenlist);
 
        return 0;
 }
@@ -539,13 +242,86 @@ int _grid_view_zoom_in(void *data, Evas_Object * view)
                (st_VideoListViewMainViewWidget *) data;
 
        g_pThumbnailView->zoom_level = ad->zoom_level;
-       elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
-       __mp_thumbnail_view_append_grid_layout
-               (g_pThumbnailView->pVideosGenlist);
 
        return 0;
 }
 
+Evas_Object* _create_gengrid(Evas_Object *parent)
+{
+       if(parent == NULL)
+       {
+               VideoLogError("gengrid parent is invalid");
+               return NULL;
+       }
+       Evas_Object *gengrid = elm_gengrid_add(parent);
+       evas_object_size_hint_weight_set(gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_gengrid_item_size_set(gengrid, GENGRID_ITEM_WIDTH, GENGRID_ITEM_HEIGHT);
+#ifdef ENABLE_LONGPRESS
+       evas_object_smart_callback_add(gengrid, "longpressed",
+                                                __mp_thumbnail_view_gengrid_long_press_cb,
+                                                NULL);
+#endif
+       evas_object_smart_callback_add(gengrid, "realized",
+                                               __mp_thumbnail_view_gengrid_realize_cb,
+                                               NULL);
+
+       return gengrid;
+}
+
+Evas_Object* _create_gengrid_container_layout(Evas_Object *parent)
+{
+       if(parent == NULL)
+       {
+               VideoLogError("parent layout is invalid");
+               return NULL;
+       }
+       char edj_path[1024] = { 0 };
+       char *path = app_get_resource_path();
+       snprintf(edj_path, 1024, "%s%s/%s", path, "edje", VIDEO_CUSTOM_THEME);
+       free(path);
+
+       Evas_Object* layout = elm_layout_add(parent);
+       elm_layout_file_set(layout, edj_path, "gengrid/layout");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if(layout == NULL)
+       {
+               VideoLogError("Failed to create gengrid contaienr layout");
+               return NULL;
+       }
+
+       Evas_Object* gengrid = _create_gengrid(layout);
+       if( gengrid )
+       {
+               elm_object_part_content_set(layout, "elm.content.swallow", gengrid);
+               g_pThumbnailView->pVideolistGengrid = gengrid;
+       }
+       return layout;
+}
+
+
+bool mp_thumbnail_view_list_content_set(void *pMainViewHandle, void *pMainViewWidget,
+                                       MpListUpdateType eUpdateType, UpdateListItemsCbFunc pUpdateVideoListUserCb)
+{
+       VideoLogDebug("");
+       if(g_pThumbnailView == NULL)
+       {
+               return mp_thumbnail_view_arrange_list_item(pMainViewHandle, pMainViewWidget, eUpdateType, pUpdateVideoListUserCb);
+       } else {
+               Evas_Object *curr_content = elm_object_part_content_get(g_pThumbnailView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+               if(curr_content != g_pThumbnailView->pCurrentLayout)
+               {
+                       curr_content = elm_object_part_content_unset(g_pThumbnailView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+                       evas_object_hide(curr_content);
+                       elm_object_part_content_set(g_pThumbnailView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT, g_pThumbnailView->pCurrentLayout);
+                       return TRUE;
+               }
+       }
+       return FALSE;
+}
+
 /**
  *
  * @param pMainViewHandle
@@ -560,6 +336,7 @@ bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
                                                                                 UpdateListItemsCbFunc
                                                                                 pUpdateVideoListUserCb)
 {
+       srand((unsigned int)time(NULL));
        VideoLogInfo("");
 
        if (!pMainViewHandle || !pMainViewWidget || !pUpdateVideoListUserCb) {
@@ -587,14 +364,11 @@ bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
        g_pThumbnailView->pMainWidget = pMainViewWidget;
        g_pThumbnailView->eUpdateType = eUpdateType;
        g_pThumbnailView->zoom_level = VP_ZOOM_IN_DEFAULT;
-       g_pThumbnailView->bLandscape =
-               mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
-                                                                                         mp_util_get_main_window_handle
-                                                                                         ());
+       g_pThumbnailView->bLandscape = mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)mp_util_get_main_window_handle());
 
-       st_VideoListViewMainViewHandle *pMainHandle =
-               g_pThumbnailView->pMainHandle;
-       g_pThumbnailView->pVideosGenlist = pMainHandle->pVideosGenlist;
+       st_VideoListViewMainViewHandle *pMainHandle = g_pThumbnailView->pMainHandle;
+       // To do what is this used for ?
+       //g_pThumbnailView->pVideosGenlist = pMainHandle->pVideosGenlist;
 
        int nVideoListSize = 0;
 
@@ -613,73 +387,53 @@ bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
                mp_ft_ctrl_destroy();
        }
 
-
-       if (!g_pThumbnailView->pVideosGenlist) {
-               g_pThumbnailView->pVideosGenlist =
-                       elm_genlist_add(g_pThumbnailView->
-                                                       pMainWidget->pListViewBaselayout);
-               elm_scroller_bounce_set(g_pThumbnailView->pVideosGenlist,
-                                                               EINA_FALSE, EINA_TRUE);
-               evas_object_size_hint_weight_set(g_pThumbnailView->pVideosGenlist,
-                                                                                EVAS_HINT_EXPAND,
-                                                                                EVAS_HINT_EXPAND);
-               evas_object_size_hint_align_set(g_pThumbnailView->pVideosGenlist,
-                                                                               EVAS_HINT_FILL, EVAS_HINT_FILL);
-               elm_genlist_mode_set(g_pThumbnailView->pVideosGenlist,
-                                                        ELM_LIST_COMPRESS);
-               elm_scroller_single_direction_set(g_pThumbnailView->pVideosGenlist,
-                                                                                 ELM_SCROLLER_SINGLE_DIRECTION_HARD);
-               evas_object_show(g_pThumbnailView->
-                                                pMainWidget->pListViewBaselayout);
-       }
-
-       elm_object_part_content_set(g_pThumbnailView->
-                                                               pMainWidget->pListViewBaselayout,
-                                                               SWALLOW_LISTVIEW_CONTENT,
-                                                               g_pThumbnailView->pVideosGenlist);
        if (nVideoListSize > 0) {
-               if (g_pThumbnailView->pNocontentlayout) {
-                       elm_object_part_content_unset
-                               (g_pThumbnailView->pNocontentlayout,
-                                SWALLOW_LISTVIEW_CONTENT);
+               Evas_Object *old_content = elm_object_part_content_unset(g_pThumbnailView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+               if (g_pThumbnailView->pNocontentlayout && old_content == g_pThumbnailView->pNocontentlayout ) {
                        MP_DEL_OBJ(g_pThumbnailView->pNocontentlayout);
+               } else {
+                       evas_object_hide(old_content);
+               }
+               if(g_pThumbnailView->pGengridContainer == NULL)
+               {
+                       g_pThumbnailView->pGengridContainer = _create_gengrid_container_layout(g_pThumbnailView->pMainWidget->pListViewBaselayout);
                }
-               _vp_pinch_add_event(g_pThumbnailView->pMainWidget,
-                                                       g_pThumbnailView->
-                                                       pMainWidget->pListViewBaselayout);
-               __mp_thumbnail_view_append_grid_layout
-                       (g_pThumbnailView->pVideosGenlist);
+               _vp_pinch_add_event(g_pThumbnailView->pMainWidget, g_pThumbnailView->pMainWidget->pListViewBaselayout);
+
+               __mp_thumbnail_view_append_gengrid_items(g_pThumbnailView->pVideolistGengrid);
+               // Keep track of the current layout to set content
+               g_pThumbnailView->pCurrentLayout = g_pThumbnailView->pGengridContainer;
 
        } else {
-               g_pThumbnailView->pNocontentlayout =
-                       mp_create_nocontent_layout(g_pThumbnailView->
-                                                                          pMainWidget->pListViewBaselayout,
-                                                                          VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
-                                                                          VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
-               elm_object_part_content_unset(g_pThumbnailView->
-                                                                         pMainWidget->pListViewBaselayout,
-                                                                         SWALLOW_LISTVIEW_CONTENT);
-               if (g_pThumbnailView->pVideosGenlist) {
-                       evas_object_hide(g_pThumbnailView->pVideosGenlist);
+               if(g_pThumbnailView->pNocontentlayout == NULL)
+               {
+                       g_pThumbnailView->pNocontentlayout =
+                               mp_create_nocontent_layout(g_pThumbnailView->pMainWidget->pListViewBaselayout,
+                                                                       VIDEOS_NOCONTENT_MSG_NO_VIDEOS_IDS,
+                                                                       VIDEOS_NOCONTENT_MSG_NO_VIDEOS_DESC_IDS);
+               }
+               elm_object_part_content_unset(g_pThumbnailView->pMainWidget->pListViewBaselayout, SWALLOW_LISTVIEW_CONTENT);
+               if (g_pThumbnailView->pGengridContainer) {
+                       evas_object_hide(g_pThumbnailView->pGengridContainer);
                }
-               evas_object_show(g_pThumbnailView->
-                                                pMainWidget->pListViewBaselayout);
-               elm_object_part_content_set(g_pThumbnailView->
-                                                                       pMainWidget->pListViewBaselayout,
+               evas_object_show(g_pThumbnailView->pMainWidget->pListViewBaselayout);
+               elm_object_part_content_set(g_pThumbnailView->pMainWidget->pListViewBaselayout,
                                                                        SWALLOW_LISTVIEW_CONTENT,
                                                                        g_pThumbnailView->pNocontentlayout);
+               // Keep track of the current layout to set content
+               g_pThumbnailView->pCurrentLayout = g_pThumbnailView->pNocontentlayout;
        }
 
        evas_object_smart_callback_add((Evas_Object *)
                                                                   mp_util_get_main_window_handle(),
                                                                   "wm,rotation,changed",
                                                                   __mp_thumbnail_view_rotate_cb, NULL);
-       mp_list_common_set_callabcks(g_pThumbnailView->pMainHandle,
-                                                                __mp_thumbnail_view_language_changed_genlist_cb,
-                                                                __mp_thumbnail_view_realize_genlist_item_cb,
-                                                                NULL, NULL);
+       // mp_list_common_set_callabcks(g_pThumbnailView->pMainHandle,
+                                                                // __mp_thumbnail_view_language_changed_genlist_cb,
+                                                                // __mp_thumbnail_view_realize_genlist_item_cb,
+                                                                // NULL, NULL);
 
-       evas_object_show(g_pThumbnailView->pVideosGenlist);
+       evas_object_show(g_pThumbnailView->pGengridContainer);
 
        return TRUE;
 }
@@ -690,22 +444,21 @@ bool mp_thumbnail_view_arrange_list_item(void *pMainViewHandle,
  */
 int mp_thumbnail_view_get_selected_video_item_index(void)
 {
-       if (!g_pThumbnailView) {
+       if (!g_pThumbnailView && (g_pThumbnailView->pSelectedItemData)) {
                VideoLogError("");
                return 0;
        }
+       int index = g_pThumbnailView->pSelectedItemData->videoIndex;
+       VideoLogInfo("Selected item video index : %d", index);
 
-       VideoLogInfo("g_pThumbnailView->nSelectedVideoItem : %d",
-                                g_pThumbnailView->nSelectedVideoItem);
-
-       return g_pThumbnailView->nSelectedVideoItem;
+       return index;
 }
 
 /**
  *
  * @param nVideoItemIndex
  */
-static void __mp_thumbnail_view_update_video_items(int nVideoItemIndex)
+static void __mp_thumbnail_view_update_video_items(Elm_Object_Item *item, int nVideoItemIndex)
 {
        if (!g_pThumbnailView) {
                VideoLogError("g_pMainViewHandleOfThumbnailList are not existed.");
@@ -713,54 +466,7 @@ static void __mp_thumbnail_view_update_video_items(int nVideoItemIndex)
        }
 
        mp_util_svc_update_thumbnail_info(nVideoItemIndex);
-}
-
-/**
- *
- * @param nVideoItemIndex
- */
-void mp_thumbnail_view_update_genlist_item(int nVideoItemIndex)
-{
-
-       if (!g_pThumbnailView || !g_pThumbnailView->pVideosGenlist) {
-               VideoSecureLogError("invalid handle.");
-               return;
-       }
-
-       if (!g_pThumbnailView->pVideoItemList) {
-               VideoSecureLogError
-                       ("g_pThumbnailView->pVideosGenlist is not existed.");
-               return;
-       }
-
-       int nGenistIndex =
-               mp_thumbnail_view_thumbnail_to_genlist_index(nVideoItemIndex);
-       Elm_Object_Item *pTmpVideoGenlistItem =
-               (Elm_Object_Item *) eina_list_nth(g_pThumbnailView->pVideoItemList,
-                                                                                 nGenistIndex);
-       if (pTmpVideoGenlistItem) {
-               VideoLogWarning("Update index: %d", nVideoItemIndex);
-               Evas_Object *gengrid =
-                       elm_object_item_part_content_get(pTmpVideoGenlistItem,
-                                                                                        "elm.icon");
-               if (gengrid) {
-                       int nCount =
-                               (mp_rotate_ctrl_check_landspace() ?
-                                VP_GENLIST_THUMB_LANDSPACE_COUNT :
-                                VP_GENLIST_THUMB_PORTRAIT_COUNT);
-                       int nIndex = nVideoItemIndex % nCount;
-                       Elm_Object_Item *updateItem =
-                               elm_gengrid_first_item_get(gengrid);
-                       while (nIndex > 0 && updateItem) {
-                               updateItem = elm_gengrid_item_next_get(updateItem);
-                               --nIndex;
-                       }
-
-                       VideoLogWarning("updateItem: %p", updateItem);
-                       if (updateItem)
-                               elm_gengrid_item_update(updateItem);
-               }
-       }
+       elm_gengrid_item_update(item);
 }
 
 #ifdef ENABLE_LONGPRESS
@@ -1018,8 +724,8 @@ static bool __mp_thumbnail_view_normal_is_top_view(void)
  */
 static void __mp_thumbnail_view_update_cb(int nError, const char *szPath,
                                                                                  void *pUserData)
-{
-       int nVideoItemIndex = (int) pUserData;
+{      stGengridItemData *item_data = pUserData;
+       int nVideoItemIndex = item_data->videoIndex;
 
        VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
 
@@ -1028,11 +734,6 @@ static void __mp_thumbnail_view_update_cb(int nError, const char *szPath,
                return;
        }
 
-       if (!g_pThumbnailView) {
-               VideoLogError("g_pMainViewWidgetOfThumbnailView is not existed.");
-               return;
-       }
-
        if (!__mp_thumbnail_view_normal_is_top_view()) {
                VideoLogError("Main list view is not top view.");
                return;
@@ -1046,15 +747,7 @@ static void __mp_thumbnail_view_update_cb(int nError, const char *szPath,
                return;
        }
 
-       __mp_thumbnail_view_update_video_items(nVideoItemIndex);
-
-
-       if (g_pThumbnailView->pVideosGenlist) {
-               mp_thumbnail_view_update_genlist_item(nVideoItemIndex);
-       } else {
-               VideoLogError
-                       ("[ERR] No exist g_pMainViewWidgetOfNormalList->pVideolistItemList.");
-       }
+       __mp_thumbnail_view_update_video_items(item_data->item, nVideoItemIndex);
 }
 
 /**
@@ -1072,24 +765,6 @@ static void __mp_thumbnail_view_update_empty_cb(int nError,
        VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
 }
 
-/**
- *
- * @param pUserData
- * @param pObject
- * @param pEventInfo
- */
-static void __mp_thumbnail_view_realize_genlist_item_cb(void *pUserData,
-                                                                                                               Evas_Object *
-                                                                                                               pObject,
-                                                                                                               void *pEventInfo)
-{
-       if (!pEventInfo || !g_pThumbnailView) {
-               VideoLogError
-                       ("invalid pEveninfo 0r g_pMainViewWidgetOfThumbnailList");
-               return;
-       }
-}
-
 /**
  *
  * @param pUserData
@@ -1107,7 +782,6 @@ static void __mp_thumbnail_view_language_changed_genlist_cb(void
                VideoLogError("pObject is NULL");
                return;
        }
-       elm_genlist_realized_items_update(pObject);
 }
 
 /**
@@ -1138,9 +812,9 @@ static void __mp_thumbnail_view_gengrid_long_press_cb(void *pUserData,
                VideoLogError("pEventInfo is not existed.");
                return;
        }
+       stGengridItemData *item_data = elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
+       int nVideoItemIndex = item_data->videoIndex;
 
-       int nVideoItemIndex =
-               (int) elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
        VideoLogInfo("Select nVideoItemIndex: %d", nVideoItemIndex);
        if (nVideoItemIndex < 0
                || nVideoItemIndex >=
@@ -1169,12 +843,13 @@ static void __mp_thumbnail_view_gengrid_long_press_cb(void *pUserData,
        mp_option_ctrl_show(g_pThumbnailView->pMainHandle->pNaviFrameHandle,
                                                (const char *) title, nVideoItemIndex,
                                                pRegisteCbFunc, __mp_thumbnail_view_result_pop_up,
-                                               g_pThumbnailView->pVideosGenlist,
+                                               /* is it the correct user data here*/
+                                               g_pThumbnailView->pVideolistGengrid,
                                                MP_LIST_OPTION_CLOUD_DOWNLOAD_ITEM);
        if (mp_option_ctrl_get_handle()) {
-               evas_object_data_set(g_pThumbnailView->pVideosGenlist, "popup",
+               evas_object_data_set(g_pThumbnailView->pVideolistGengrid, "popup",
                                                         mp_option_ctrl_get_handle());
-               elm_object_scroll_freeze_push(g_pThumbnailView->pVideosGenlist);
+               elm_object_scroll_freeze_push(g_pThumbnailView->pVideolistGengrid);
        }
        MP_FREE_STRING(pRegisteCbFunc);
        MP_FREE_STRING(title);
@@ -1188,8 +863,8 @@ static void __mp_thumbnail_view_gengrid_long_press_cb(void *pUserData,
  * @param pEventInfo
  */
 static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
-                                                                                                  Evas_Object * pObject,
-                                                                                                  void *pEventInfo)
+                                                       Evas_Object * pObject,
+                                                       void *pEventInfo)
 {
 
        if (!pEventInfo) {
@@ -1198,9 +873,8 @@ static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
        }
 
        vp_share_view_update_share_panel();
-
-       int nVideoItemIndex =
-               (int) elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
+       stGengridItemData *item_data = elm_object_item_data_get((Elm_Object_Item *) pEventInfo);
+       int nVideoItemIndex = item_data->videoIndex;
        VideoLogInfo("Select nVideoItemIndex: %d", nVideoItemIndex);
        if (nVideoItemIndex < 0
                || nVideoItemIndex >=
@@ -1217,15 +891,12 @@ static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
        if (!pThumbIconUri) {
                if (nVideoItemIndex < nVideoListSize - 1) {
                        mp_util_svc_register_thumbnail_update_func(nVideoItemIndex,
-                                                                                                          __mp_thumbnail_view_update_empty_cb,
-                                                                                                          (void *)
-                                                                                                          nVideoItemIndex);
+                                                                       __mp_thumbnail_view_update_empty_cb,
+                                                                       (void *)item_data);
                } else {
                        mp_util_svc_register_thumbnail_update_func(nVideoItemIndex,
-                                                                                                          (void *)
-                                                                                                          __mp_thumbnail_view_update_cb,
-                                                                                                          (void *)
-                                                                                                          nVideoItemIndex);
+                                                                       (void *)__mp_thumbnail_view_update_cb,
+                                                                       (void *)item_data);
                }
        } else {
                free(pThumbIconUri);
@@ -1233,35 +904,6 @@ static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData,
        }
 }
 
-/**
- *
- * @param parent
- * @param nWidth
- * @param nHeight
- * @return
- */
-static Evas_Object *__mp_thumbnail_view_create_gengrid(Evas_Object *
-                                                                                                          parent, int nWidth,
-                                                                                                          int nHeight)
-{
-       Evas_Object *pGengrid =
-               mp_util_create_gengrid(parent, nWidth, nHeight, EINA_TRUE);
-       if (!pGengrid) {
-               VideoLogError("pVideoGrid is not existed.");
-               return NULL;
-       }
-#ifdef ENABLE_LONGPRESS
-       evas_object_smart_callback_add(pGengrid, "longpressed",
-                                                                  __mp_thumbnail_view_gengrid_long_press_cb,
-                                                                  NULL);
-#endif
-       evas_object_smart_callback_add(pGengrid, "realized",
-                                                                  __mp_thumbnail_view_gengrid_realize_cb,
-                                                                  NULL);
-
-       return pGengrid;
-}
-
 /**
  *
  * @param pUserData
@@ -1276,7 +918,8 @@ static char *__mp_thumbnail_view_get_label_of_grid_item_cb(const void
                                                                                                                   const char
                                                                                                                   *pPart)
 {
-       int nVideoItemIndex = (int) pUserData;
+       const stGengridItemData *item_data =  pUserData;
+       int nVideoItemIndex = item_data->videoIndex;
 
        if (!strcmp(pPart, "elm.text")) {
                char *szTitle;
@@ -1289,11 +932,9 @@ static char *__mp_thumbnail_view_get_label_of_grid_item_cb(const void
                }
 
                return szTitleUtf8;
-       } else if (!strcmp(pPart, "elm.text.2")) {
+       } else if (!strcmp(pPart, "elm.sub.text")) {
                return mp_util_svc_get_duration_str_time(nVideoItemIndex);
-       } else {
        }
-
        return NULL;
 }
 
@@ -1304,79 +945,44 @@ static char *__mp_thumbnail_view_get_label_of_grid_item_cb(const void
  * @param pPart
  * @return
  */
-static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(const void
-                                                                                                                *pUserData,
-                                                                                                                Evas_Object *
-                                                                                                                pObject,
-                                                                                                                const char
-                                                                                                                *pPart)
+static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(const void *pUserData,
+                                                               Evas_Object *pObject,
+                                                               const char *pPart)
 {
-       int nVideoItemIndex = (int) pUserData;
-       char edj_path[1024] = { 0 };
+       stGengridItemData *item_data = (void*)pUserData;
+       int nVideoItemIndex = item_data->videoIndex;
 
+       char edj_path[1024] = { 0 };
        char *path = app_get_resource_path();
-       snprintf(edj_path, 1024, "%s%s/%s", path, "edje",
-                        VIDEO_PLAYER_IMAGE_NAME_EDJ);
+       snprintf(edj_path, 1024, "%s%s/%s", path, "edje", VIDEO_CUSTOM_THEME);
        free(path);
-       if (!strcmp(pPart, "elm.swallow.icon")) {
-               char *pThumbIconUri =
-                       mp_util_svc_get_video_thumbnail(nVideoItemIndex);
-               Evas_Object *thumb = NULL;
-               int nWidth = 0;
-               int nHeight = 0;
-
-               thumb = elm_image_add(pObject);
-               elm_image_preload_disabled_set(thumb, EINA_FALSE);
-               elm_image_smooth_set(thumb, EINA_FALSE);
-               elm_image_prescale_set(thumb, 50 * MP_SCALE);
-               elm_image_file_set(thumb, pThumbIconUri, NULL);
-               elm_image_object_size_get(thumb, &nWidth, &nHeight);
-               if (nWidth > nHeight) {
-                       elm_image_aspect_fixed_set(thumb, EINA_FALSE);
-               }
-               if (thumb)
-                       evas_object_show(thumb);
-               MP_FREE_STRING(pThumbIconUri);
-               return thumb;
-       } else if (!strcmp(pPart, "elm.progressbar.icon")) {
-                       return NULL;
-
-       } else if (!strcmp(pPart, "elm.lock.icon")) {
-               char *pVideoFile = mp_util_svc_get_video_url(nVideoItemIndex);
-               bool bRet = mp_util_check_video_personal_status((const char *)
-                                                                                                               pVideoFile);
-               MP_FREE_STRING(pVideoFile);
-               if (bRet) {
-                       Evas_Object *pLockIcon = elm_image_add(pObject);
-                       elm_image_file_set(pLockIcon, edj_path,
-                                                          VIDEO_LIST_VIEW_ICON_PERSONAL_LOCK);
-                       evas_object_size_hint_align_set(pLockIcon, EVAS_HINT_FILL,
-                                                                                       EVAS_HINT_FILL);
-                       evas_object_size_hint_weight_set(pLockIcon, EVAS_HINT_EXPAND,
-                                                                                        EVAS_HINT_EXPAND);
-                       evas_object_show(pLockIcon);
-                       return pLockIcon;
-               } else {
-                       return NULL;
-               }
-       } else if (!strcmp(pPart, "elm.dropbox.icon")) {
-               bool bRet = mp_util_svc_is_cloud_storage(nVideoItemIndex);
-               if (bRet) {
-                       Evas_Object *pDropboxIcon = elm_image_add(pObject);
-                       elm_image_file_set(pDropboxIcon, edj_path,
-                                                          VIDEO_LIST_VIEW_ICON_DROPBOX);
-                       evas_object_size_hint_align_set(pDropboxIcon, EVAS_HINT_FILL,
-                                                                                       EVAS_HINT_FILL);
-                       evas_object_size_hint_weight_set(pDropboxIcon,
-                                                                                        EVAS_HINT_EXPAND,
-                                                                                        EVAS_HINT_EXPAND);
-                       evas_object_show(pDropboxIcon);
-                       return pDropboxIcon;
-               } else {
-                       return NULL;
-               }
-       }
 
+       if (!strcmp(pPart, "elm.icon")) {
+               char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex);
+               Evas_Object *img = elm_image_add(pObject);
+               elm_image_file_set(img, pThumbIconUri, NULL);
+               elm_image_aspect_fixed_set(img, EINA_FALSE);
+               elm_image_preload_disabled_set(img, EINA_FALSE);
+               evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               item_data->icon = img;
+
+               return img;
+       }
+       else if(!strcmp(pPart, "elm.progress"))
+       {
+               Evas_Object *progessbar = elm_layout_add(pObject);
+               Eina_Bool ret = elm_layout_file_set(progessbar, edj_path, "videolist/progressbar");
+               VideoLogInfo("layout file set %s %s",(ret? "Successful": "Failed"), pPart);
+               evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(progessbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               double value = (((double) rand() ) / RAND_MAX );
+               edje_object_part_drag_value_set(elm_layout_edje_get(progessbar), "elm.cur.progressbar", value, 0.0);
+
+               item_data->progress_layout = progessbar;
+               return progessbar;
+       }
        return NULL;
 }
 
@@ -1399,7 +1005,7 @@ static void __mp_thumbnail_view_select_grid_item_cb(void *pUserData,
                VideoLogInfo("[ERR]No have pUserData");
                return;
        }
-       Evas_Object *pPopup = evas_object_data_get(g_pThumbnailView->pVideosGenlist, "popup");  /* Get popup */
+       Evas_Object *pPopup = evas_object_data_get(g_pThumbnailView->pVideolistGengrid, "popup");       /* Get popup */
        if (pPopup) {
                VideoLogInfo("long press is called");
                return;                                 /* If popup exists, do nothing */
@@ -1416,7 +1022,8 @@ static void __mp_thumbnail_view_select_grid_item_cb(void *pUserData,
                return;
        }
 
-       int nVideoItemIndex = (int) pUserData;
+       stGengridItemData *item_data = pUserData;
+       int nVideoItemIndex = item_data->videoIndex;
        int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
 
        VideoLogDebug("nVideoItemIndex = %d--%d", nVideoItemIndex,
@@ -1428,8 +1035,7 @@ static void __mp_thumbnail_view_select_grid_item_cb(void *pUserData,
        }
 
        VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
-
-       g_pThumbnailView->nSelectedVideoItem = nVideoItemIndex;
+       g_pThumbnailView->pSelectedItemData = item_data;
 
        MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
        g_pThumbnailView->pPlayIdler =
@@ -1444,14 +1050,17 @@ static void __mp_thumbnail_view_select_grid_item_cb(void *pUserData,
  * @param event_info
  */
 static void __mp_thumbnail_view_grid_item_del_cb(void *pUserdata,
-                                                                                                Evas_Object * obj,
-                                                                                                void *event_info)
+                                                       Evas_Object * obj,
+                                                       void *event_info)
 {
-       if (!g_pThumbnailView || !event_info
-               || !g_pThumbnailView->pVideoItemList) {
+       if (!g_pThumbnailView || !event_info) {
                VideoLogError("g_pMainViewWidge is NULL");
                return;
        }
+       stGengridItemData *item_data = pUserdata;
+       Elm_Object_Item *item = event_info;
+       elm_object_item_data_set(item, NULL);
+       free(item_data);
 }
 
 /**
@@ -1459,77 +1068,39 @@ static void __mp_thumbnail_view_grid_item_del_cb(void *pUserdata,
  * @param pGengrid
  * @param nGenItemIndex
  */
-static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *
-                                                                                                        pGengrid,
-                                                                                                        int nGenItemIndex)
+static void __mp_thumbnail_view_append_gengrid_items(Evas_Object *pGengrid)
 {
        if (!g_pThumbnailView) {
                VideoLogError("");
                return;
        }
 
-       MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
-       g_pThumbnailView->pGenGridItc_l = elm_gengrid_item_class_new();
-
-       g_pThumbnailView->pGenGridItc_l->item_style = "video/album_grid";
-       g_pThumbnailView->pGenGridItc_l->func.text_get =
-               (void *) __mp_thumbnail_view_get_label_of_grid_item_cb;
-       g_pThumbnailView->pGenGridItc_l->func.content_get =
-               (void *) __mp_thumbnail_view_get_grid_icon_cb;
-       g_pThumbnailView->pGenGridItc_l->func.state_get = NULL;
-       g_pThumbnailView->pGenGridItc_l->func.del = NULL;
-
+       if(g_pThumbnailView->pVideolistGIC == NULL)
+       {
+               g_pThumbnailView->pVideolistGIC = elm_gengrid_item_class_new();
+               g_pThumbnailView->pVideolistGIC->item_style = "videolist";
+               g_pThumbnailView->pVideolistGIC->func.text_get =
+                       (void *) __mp_thumbnail_view_get_label_of_grid_item_cb;
+               g_pThumbnailView->pVideolistGIC->func.content_get =
+                       (void *) __mp_thumbnail_view_get_grid_icon_cb;
+               g_pThumbnailView->pVideolistGIC->func.state_get = NULL;
+               g_pThumbnailView->pVideolistGIC->func.del = NULL;
+       }
 
-       int nCount =
-               (mp_rotate_ctrl_check_landspace() ?
-                mp_thumbnail_get_landscape_count() :
-                mp_thumbnail_get_portrait_count());
-       int nIndex = nGenItemIndex * nCount;
-       int nMaxIndex = nIndex + nCount;
        int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type();
        Elm_Object_Item *gridItem = NULL;
-       for (; (nIndex < nMaxIndex) && (nIndex < nVideoListSize); nIndex++) {
-               gridItem =
-                       elm_gengrid_item_append(pGengrid,
-                                                                       g_pThumbnailView->pGenGridItc_l,
-                                                                       (void *) nIndex,
-                                                                       __mp_thumbnail_view_select_grid_item_cb,
-                                                                       (void *) nIndex);
-               elm_gengrid_item_select_mode_set(gridItem,
-                                                                                ELM_OBJECT_SELECT_MODE_ALWAYS);
-               elm_object_item_del_cb_set(gridItem,
-                                                                  __mp_thumbnail_view_grid_item_del_cb);
-               elm_object_item_data_set(gridItem, (void *) nIndex);
-       }
-}
-
-/**
- *
- */
-static void __mp_thumbnail_view_free_genlist_item_list(void)
-{
-       if (!g_pThumbnailView) {
-               VideoLogError("");
-               return;
-       }
-
-       if (g_pThumbnailView->pVideoItemList) {
-               Elm_Object_Item *pTmpVideoGenlistItem = NULL;
-               EINA_LIST_FREE(g_pThumbnailView->pVideoItemList,
-                                          pTmpVideoGenlistItem) {
-                       if (pTmpVideoGenlistItem) {
-                               int nIndex =
-                                       (int) elm_object_item_data_get(pTmpVideoGenlistItem);
-                               mp_thumbnail_view_cancel_thumbnail_update(nIndex);
-                               elm_object_item_del(pTmpVideoGenlistItem);
-                       }
-
-                       pTmpVideoGenlistItem = NULL;
-               }
-
-               g_pThumbnailView->pVideoItemList = NULL;
+       int nIndex = 0;
+       for (nIndex = 0; nIndex < nVideoListSize; nIndex++) {
+               stGengridItemData *item_data = calloc(1, sizeof(stGengridItemData));
+               item_data->videoIndex = nIndex;
+               item_data->item = elm_gengrid_item_append(pGengrid,
+                                                               g_pThumbnailView->pVideolistGIC,
+                                                               (void *) item_data,
+                                                               __mp_thumbnail_view_select_grid_item_cb,
+                                                               (void *) item_data);
+               elm_gengrid_item_select_mode_set(gridItem, ELM_OBJECT_SELECT_MODE_ALWAYS);
+               elm_object_item_del_cb_set(gridItem, __mp_thumbnail_view_grid_item_del_cb);
        }
-
 }
 
 /**
@@ -1540,21 +1111,17 @@ void mp_thumbnail_view_destroy(void)
        VideoLogInfo("");
 
        if (g_pThumbnailView) {
-               __mp_thumbnail_view_free_genlist_item_list();
+               elm_gengrid_clear(g_pThumbnailView->pVideolistGengrid);
 
-               MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
-               MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
                MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
-               MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
-               MP_DEL_IDLER(g_pThumbnailView->pWallResolutionIdler);
-               MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
-               MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_r);
-               MP_DEL_OBJ(g_pThumbnailView->pVideosGenlist);
+               MP_DEL_OBJ(g_pThumbnailView->pVideolistGengrid);
+               MP_DEL_GRID_ITC(g_pThumbnailView->pVideolistGIC);
+               MP_DEL_OBJ(g_pThumbnailView->pGengridContainer);
+               g_pThumbnailView->pCurrentLayout = NULL;
 
                free(g_pThumbnailView);
                g_pThumbnailView = NULL;
-               evas_object_smart_callback_del((Evas_Object *)
-                                                                          mp_util_get_main_window_handle(),
+               evas_object_smart_callback_del((Evas_Object *)mp_util_get_main_window_handle(),
                                                                           "wm,rotation,changed",
                                                                           __mp_thumbnail_view_rotate_cb);
        }
@@ -1567,31 +1134,19 @@ void mp_thumbnail_view_destroy(void)
 static void __mp_thumbnail_view_reset(MpListUpdateType eUpdateType)
 {
        if (g_pThumbnailView) {
-               __mp_thumbnail_view_free_genlist_item_list();
+               elm_gengrid_clear(g_pThumbnailView->pVideolistGengrid);
 
-               MP_DEL_ITC(g_pThumbnailView->pGenGridItc);
-               MP_DEL_ITC(g_pThumbnailView->pGenGridZoomItc);
                MP_DEL_IDLER(g_pThumbnailView->pPlayIdler);
-               MP_DEL_TIMER(g_pThumbnailView->pStartWallTimer);
-               MP_DEL_IDLER(g_pThumbnailView->pWallResolutionIdler);
-
-               MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_l);
-               MP_DEL_GRID_ITC(g_pThumbnailView->pGenGridItc_r);
 
                g_pThumbnailView->fViewCbFunc = NULL;
                g_pThumbnailView->pMainHandle = NULL;
                g_pThumbnailView->pMainWidget = NULL;
-               g_pThumbnailView->nSelectedVideoItem = 0;
-               g_pThumbnailView->nUpdateTimerCounter = 0;
-               g_pThumbnailView->pVideosGenlist = NULL;
+               g_pThumbnailView->pSelectedItemData = NULL;
+               g_pThumbnailView->pCurrentLayout = NULL;
                g_pThumbnailView->eUpdateType = LIST_UPDATE_TYPE_NONE;
-               if (g_pThumbnailView->pVideosGenlist) {
-                       elm_genlist_clear(g_pThumbnailView->pVideosGenlist);
-               }
-               evas_object_smart_callback_del((Evas_Object *)
-                                                                          mp_util_get_main_window_handle(),
-                                                                          "wm,rotation,changed",
-                                                                          __mp_thumbnail_view_rotate_cb);
+               evas_object_smart_callback_del((Evas_Object *)mp_util_get_main_window_handle(),
+                                                               "wm,rotation,changed",
+                                                               __mp_thumbnail_view_rotate_cb);
        }
 
 }
@@ -1601,41 +1156,18 @@ static void __mp_thumbnail_view_reset(MpListUpdateType eUpdateType)
  */
 void mp_thumbnail_view_update_played_item(void)
 {
-       if (!g_pThumbnailView || (g_pThumbnailView->nSelectedVideoItem < 0)) {
+       if (!g_pThumbnailView || (g_pThumbnailView->pSelectedItemData == NULL)) {
                VideoLogInfo("No item to update.");
                return;
        }
-       VideoLogInfo("%d", g_pThumbnailView->nSelectedVideoItem);
+       VideoLogInfo("%d", g_pThumbnailView->pSelectedItemData->videoIndex);
 
-       if (g_pThumbnailView->pVideosGenlist) {
-               int nGenItemIndex = g_pThumbnailView->nSelectedVideoItem;
+       if (g_pThumbnailView->pVideolistGengrid) {
+               int nGenItemIndex = g_pThumbnailView->pSelectedItemData->videoIndex;
 
-               int nGenlistIndex = nGenItemIndex;
-               g_pThumbnailView->bLandscape =
-                       mp_rotate_ctrl_check_landspace_by_win((Evas_Object *)
-                                                                                                 mp_util_get_main_window_handle
-                                                                                                 ());
-               if (g_pThumbnailView->bLandscape) {
-                       nGenlistIndex =
-                               nGenlistIndex / mp_thumbnail_get_landscape_count();
-               } else {
-                       nGenlistIndex =
-                               nGenlistIndex / mp_thumbnail_get_portrait_count();
-               }
-               Elm_Object_Item *pTmpVideoGenlistItem = NULL;
-               pTmpVideoGenlistItem =
-                       elm_genlist_nth_item_get((const Evas_Object *)
-                                                                        g_pThumbnailView->pVideosGenlist,
-                                                                        nGenlistIndex);
-               mp_util_svc_update_thumbnail_info
-                       (g_pThumbnailView->nSelectedVideoItem);
-
-               Evas_Object *pGengrid =
-                       elm_object_item_part_content_get(pTmpVideoGenlistItem,
-                                                                                        "elm.icon");
-               Elm_Object_Item *pTmpVideoGengridItem = NULL;
-               pTmpVideoGengridItem = elm_gengrid_selected_item_get(pGengrid);
-               elm_gengrid_item_update(pTmpVideoGengridItem);
+               mp_util_svc_update_thumbnail_info(nGenItemIndex);
+
+               elm_gengrid_item_update(g_pThumbnailView->pSelectedItemData->item);
        }
 }
 
@@ -1644,21 +1176,13 @@ void mp_thumbnail_view_update_played_item(void)
  */
 void mp_thumbnail_view_update_video_list(void)
 {
-       if (!g_pThumbnailView || !g_pThumbnailView->pVideosGenlist) {
+       if (!g_pThumbnailView || !g_pThumbnailView->pVideolistGengrid) {
                VideoLogWarning
-                       ("[ERR] pVideosGenlist or g_pMainViewWidget are NULL.");
+                       ("[ERR] pVideolistGengrid or g_pMainViewWidget are NULL.");
                return;
        }
 
        VideoLogInfo("");
 
-       Elm_Object_Item *pNextGenlistItem = NULL;
-       Elm_Object_Item *pCurrGenlistItem =
-               elm_genlist_first_item_get(g_pThumbnailView->pVideosGenlist);
-
-       while (pCurrGenlistItem) {
-               elm_genlist_item_update(pCurrGenlistItem);
-               pNextGenlistItem = elm_genlist_item_next_get(pCurrGenlistItem);
-               pCurrGenlistItem = pNextGenlistItem;
-       }
+       elm_gengrid_realized_items_update(g_pThumbnailView->pVideolistGengrid);
 }
index 3d0848ffecc862efaf620dde03640fe6e10ce05f..9bc717db88951e8632d5478878436120db3f3244 100755 (executable)
@@ -140,10 +140,13 @@ static Evas_Object *__mp_mgr_create_bg(Evas_Object * pWin)
        /* default BG */
        Evas_Object *bg = NULL;
 
+       char path[1024] = {0, };
+       char *res_path = app_get_resource_path();
+       snprintf(path, 1024, "%s%s\%s", res_path, "images", "app_main_bg.png");
+       VideoLogInfo("Main BG Path: %s", path);
+
        bg = elm_bg_add(pWin);
-       Eina_Bool ret = elm_bg_file_set(bg,
-                                                                       "/usr/apps/org.tizen.videos/res/images/core_theme_bg_01.png",
-                                                                       NULL);
+       Eina_Bool ret = elm_bg_file_set(bg, path, NULL);
        if (ret != true) {
                VideoLogInfo("failed to set layout bg");
        }