Refactoring - removed genlist from Quick Access tiles. 93/48093/5
authorMaciej Skrzypkowski <m.skrzypkows@samsung.com>
Mon, 14 Sep 2015 10:25:36 +0000 (12:25 +0200)
committerMaciej Skrzypkowski <m.skrzypkows@samsung.com>
Mon, 14 Sep 2015 10:25:36 +0000 (12:25 +0200)
[Issue]    N/A
[Problem]  Genlist were unneeded for tiles.
[Cause]    N/A
[Solution] Removed genlist, added aditional swallows for tiles.

Change-Id: I9a561d2973c9db0b70f413792dfdab4a2e7c24ab
Signed-off-by: Maciej Skrzypkowski <m.skrzypkows@samsung.com>
services/MainUI/DetailPopup.cpp
services/MainUI/MainUI.cpp
services/MainUI/MainUI.h
services/MainUI/edc/MainUI.edc

index 9d2f1ea835a05a404b795972fadd389798ab43f1..a058691ffe213c9042df0e13c5f1536aea7e899f 100644 (file)
@@ -101,6 +101,7 @@ void DetailPopup::hide()
     evas_object_smart_callback_del(m_historyList, "pressed", _history_url_click);
     elm_genlist_clear(m_historyList);
     evas_object_hide(m_layout);
+    evas_object_del(m_layout);
 }
 
 void DetailPopup::_bg_click(void* data, Evas_Object*, const char*, const char*)
index 1367a87eefce60817541af70dcfe9575ba67838b..afddf7c7159049982f8b0d2430a6a48e5a7112a6 100644 (file)
 namespace tizen_browser{
 namespace base_ui{
 
-const int SMALL_TILES_ROWS = 2;
-const int MAX_TILES_NUMBER = 5;
+EXPORT_SERVICE(MainUI, "org.tizen.browser.mainui")
+
+const int MainUI::MAX_TILES_NUMBER = 5;
 const int MainUI::MAX_THUMBNAIL_WIDTH = 840;
 const int MainUI::MAX_THUMBNAIL_HEIGHT = 648;
-
-EXPORT_SERVICE(MainUI, "org.tizen.browser.mainui")
+const int MainUI::BIG_TILE_INDEX = 0;
+const std::vector<std::string> MainUI::TILES_NAMES = {
+    "elm.swallow.big",
+    "elm.swallow.small_first",
+    "elm.swallow.small_second",
+    "elm.swallow.small_third",
+    "elm.swallow.small_fourth"
+};
 
 typedef struct _HistoryItemData
 {
@@ -53,16 +60,11 @@ typedef struct _BookmarkItemData
 MainUI::MainUI()
     : m_parent(nullptr)
     , m_layout(nullptr)
-    , m_bookmarksButton(nullptr)
-    , m_mostVisitedButton(nullptr)
     , m_bookmarksView(nullptr)
     , m_mostVisitedView(nullptr)
+    , m_bookmarksButton(nullptr)
+    , m_mostVisitedButton(nullptr)
     , m_bookmarkGengrid(nullptr)
-    , m_genListLeft(nullptr)
-    , m_genListCenter(nullptr)
-    , m_genListRight(nullptr)
-    , m_big_item_class(nullptr)
-    , m_small_item_class(nullptr)
     , m_bookmark_item_class(nullptr)
     , m_detailPopup(this)
 {
@@ -76,32 +78,12 @@ MainUI::MainUI()
 MainUI::~MainUI()
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
-    elm_genlist_item_class_free(m_big_item_class);
-    elm_genlist_item_class_free(m_small_item_class);
     elm_gengrid_item_class_free(m_bookmark_item_class);
 }
 
 void MainUI::createItemClasses()
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
-    if (!m_big_item_class) {
-       m_big_item_class = elm_genlist_item_class_new();
-       m_big_item_class->item_style = "big_grid_item";
-       m_big_item_class->func.text_get = _grid_text_get;
-       m_big_item_class->func.content_get =  _grid_content_get;
-       m_big_item_class->func.state_get = nullptr;
-       m_big_item_class->func.del = nullptr;
-    }
-
-    if (!m_small_item_class) {
-        m_small_item_class = elm_genlist_item_class_new();
-        m_small_item_class->item_style = "small_grid_item";
-        m_small_item_class->func.text_get = _grid_text_get;
-        m_small_item_class->func.content_get =  _grid_content_get;
-        m_small_item_class->func.state_get = nullptr;
-        m_small_item_class->func.del = nullptr;
-    }
-
     if (!m_bookmark_item_class) {
         m_bookmark_item_class = elm_gengrid_item_class_new();
         m_bookmark_item_class->item_style = "grid_item";
@@ -150,37 +132,6 @@ Evas_Object* MainUI::createMostVisitedView (Evas_Object * parent)
     evas_object_size_hint_weight_set(mostVisitedLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
     evas_object_size_hint_align_set (mostVisitedLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
-    Evas_Object* genListLeft = elm_genlist_add(mostVisitedLayout);
-
-    elm_genlist_homogeneous_set(genListLeft, EINA_FALSE);
-    elm_genlist_multi_select_set(genListLeft, EINA_FALSE);
-    elm_genlist_select_mode_set(genListLeft, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(genListLeft, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(genListLeft, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    elm_object_part_content_set(mostVisitedLayout, "elm.swallow.left", genListLeft);
-    m_genListLeft = genListLeft;
-
-    Evas_Object* genListCenter = elm_genlist_add(mostVisitedLayout);
-    elm_genlist_homogeneous_set(genListCenter, EINA_FALSE);
-    elm_genlist_multi_select_set(genListCenter, EINA_FALSE);
-    elm_genlist_select_mode_set(genListCenter, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(genListCenter, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(genListCenter, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    elm_object_part_content_set(mostVisitedLayout, "elm.swallow.center", genListCenter);
-    m_genListCenter = genListCenter;
-
-    Evas_Object* genListRight = elm_genlist_add(mostVisitedLayout);
-    elm_genlist_homogeneous_set(genListRight, EINA_FALSE);
-    elm_genlist_multi_select_set(genListRight, EINA_FALSE);
-    elm_genlist_select_mode_set(genListRight, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(genListRight, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(genListRight, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    elm_object_part_content_set(mostVisitedLayout, "elm.swallow.right", genListRight);
-    m_genListRight=genListRight;
-
     Evas_Object* topButtons = createTopButtons(mostVisitedLayout);
     elm_object_part_content_set(mostVisitedLayout, "elm.swallow.layoutTop", topButtons);
 
@@ -272,21 +223,21 @@ Evas_Object* MainUI::createBottomButton(Evas_Object *parent)
     return layoutBottom;
 }
 
-void MainUI::_mostVisited_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+void MainUI::_mostVisited_clicked(void * data, Evas_Object *, void *)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI* mainUI = reinterpret_cast<MainUI *>(data);
     mainUI->mostVisitedClicked(std::string());
 }
 
-void MainUI::_bookmark_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+void MainUI::_bookmark_clicked(void * data, Evas_Object *, void *)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI* mainUI = reinterpret_cast<MainUI *>(data);
     mainUI->bookmarkClicked(std::string());
 }
 
-void MainUI::_bookmark_manager_clicked(void * data, Evas_Object * /* obj */, void * event_info)
+void MainUI::_bookmark_manager_clicked(void * data, Evas_Object *, void *)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI*  mainUI = static_cast<MainUI *>(data);
@@ -296,33 +247,38 @@ void MainUI::_bookmark_manager_clicked(void * data, Evas_Object * /* obj */, voi
 void MainUI::addHistoryItem(std::shared_ptr<services::HistoryItem> hi)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
-    if (m_map_history_views.size() >= MAX_TILES_NUMBER)
-        return;
+    M_ASSERT(m_historyItems.size() < MAX_TILES_NUMBER);
 
+    int tileNumber = m_historyItems.size();
     HistoryItemData *itemData = new HistoryItemData();
     itemData->item = hi;
     itemData->mainUI = std::shared_ptr<MainUI>(this);
-    Elm_Object_Item* historyView = nullptr;
-
-    if (m_map_history_views.empty())
-    {
-        BROWSER_LOGD("%s:%d %s  m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
-        historyView = elm_genlist_item_append(m_genListLeft, m_big_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
-    } else if (m_map_history_views.size() <= SMALL_TILES_ROWS) {
-        BROWSER_LOGD("%s:%d %s  m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
-        historyView = elm_genlist_item_append(m_genListCenter, m_small_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
-    } else {
-        BROWSER_LOGD("%s:%d %s  m_map_history_views.size %d", __FILE__, __LINE__, __func__, m_map_history_views.size());
-        historyView = elm_genlist_item_append(m_genListRight, m_small_item_class, itemData, nullptr, ELM_GENLIST_ITEM_NONE, nullptr, this);
-    }
 
-    m_map_history_views.insert(std::pair<std::string,Elm_Object_Item*>(hi->getUrl(),historyView));
+    Evas_Object* tile = elm_layout_add(m_mostVisitedView);
+    if (tileNumber == BIG_TILE_INDEX)
+        elm_layout_file_set(tile, edjFilePath.c_str(), "big_tile");
+    else
+        elm_layout_file_set(tile, edjFilePath.c_str(), "small_tile");
+    evas_object_size_hint_weight_set(tile, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set (tile, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_show(tile);
+    elm_object_part_content_set(m_mostVisitedView, TILES_NAMES[tileNumber].c_str(), tile);
+    m_tiles.push_back(tile);
+
+    elm_layout_text_set(tile, "page_title", hi->getTitle().c_str());
+    elm_layout_text_set(tile, "page_url", hi->getUrl().c_str());
+    Evas_Object * thumb = tizen_browser::tools::EflTools::getEvasImage(hi->getThumbnail(), m_parent);
+    elm_object_part_content_set(tile, "elm.thumbnail", thumb);
+    edje_object_signal_callback_add(elm_layout_edje_get(tile), "mouse,clicked,1", "over", _thumbClicked, itemData);
+
+    m_historyItems.push_back(hi);
 }
 
 void MainUI::addHistoryItems(std::shared_ptr<services::HistoryItemVector> items)
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     int i = 0;
+    m_historyItems.clear();
     for (auto it = items->begin(); it != items->end(); ++it) {
         i++;
         if (i > MAX_TILES_NUMBER)
@@ -354,17 +310,6 @@ void MainUI::addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::service
          }
 }
 
-char* MainUI::_grid_text_get(void *data, Evas_Object *, const char *part)
-{
-    HistoryItemData *itemData = reinterpret_cast<HistoryItemData*>(data);
-    if (!strcmp(part, "page_title")) {
-        return strdup(itemData->item->getTitle().c_str());
-    }
-    if (!strcmp(part, "page_url")) {
-        return tools::clearURL(itemData->item->getUrl());
-    }
-    return strdup("");
-}
 
 char* MainUI::_grid_bookmark_text_get(void *data, Evas_Object *, const char *part)
 {
@@ -378,29 +323,6 @@ char* MainUI::_grid_bookmark_text_get(void *data, Evas_Object *, const char *par
         return strdup("");
 }
 
-Evas_Object * MainUI::_grid_content_get(void *data, Evas_Object *obj, const char *part)
-{
-    BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part);
-    HistoryItemData *itemData = reinterpret_cast<HistoryItemData*>(data);
-
-    if (!strcmp(part, "elm.thumbnail")) {
-       if (itemData->item->getThumbnail()) {
-                Evas_Object * thumb = tizen_browser::tools::EflTools::getEvasImage(itemData->item->getThumbnail(), itemData->mainUI->m_parent);
-                return thumb;
-        }
-        else {
-                return nullptr;
-        }
-    }
-    else if (!strcmp(part, "elm.thumbButton")) {
-               Evas_Object *thumbButton = elm_button_add(obj);
-               elm_object_style_set(thumbButton, "thumbButton");
-               evas_object_smart_callback_add(thumbButton, "clicked", _thumbSelected, data);
-               return thumbButton;
-    }
-    return nullptr;
-}
-
 Evas_Object * MainUI::_grid_bookmark_content_get(void *data, Evas_Object *obj, const char *part)
 {
     BROWSER_LOGD("%s:%d %s part=%s", __FILE__, __LINE__, __func__, part);
@@ -424,8 +346,16 @@ Evas_Object * MainUI::_grid_bookmark_content_get(void *data, Evas_Object *obj, c
     return nullptr;
 }
 
-void MainUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* event_info */)
+void MainUI::_thumbSelected(void * data, Evas_Object * , void *)
 {
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+    HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
+    itemData->mainUI->mostVisitedTileClicked(itemData->item, DetailPopup::HISTORY_ITEMS_NO);
+}
+
+void MainUI::_thumbClicked(void* data, Evas_Object *, const char *, const char *)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     HistoryItemData * itemData = reinterpret_cast<HistoryItemData *>(data);
     itemData->mainUI->mostVisitedTileClicked(itemData->item, DetailPopup::HISTORY_ITEMS_NO);
 }
@@ -434,10 +364,10 @@ void MainUI::clearHistoryGenlist()
 {
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
 
-    elm_genlist_clear(m_genListRight);
-    elm_genlist_clear(m_genListLeft);
-    elm_genlist_clear(m_genListCenter);
-    m_map_history_views.clear();
+    for (auto it = m_tiles.begin(); it != m_tiles.end(); ++it)
+        edje_object_signal_callback_del(elm_layout_edje_get(*it), "mouse,clicked,1", "over", _thumbClicked);
+
+    m_historyItems.clear();
 }
 
 void MainUI::showHistory()
@@ -455,7 +385,7 @@ void MainUI::showHistory()
 
     elm_object_focus_set(m_mostVisitedButton, true);
 
-    if (m_map_history_views.empty()) {
+    if (m_historyItems.empty()) {
         setEmptyView(true);
         return;
     }
@@ -511,10 +441,6 @@ void MainUI::openDetailPopup(std::shared_ptr<services::HistoryItem> currItem, st
 
 void MainUI::showNoHistoryLabel()
 {
-    evas_object_hide(elm_object_part_content_get(m_mostVisitedView, "elm.swallow.left"));
-    evas_object_hide(elm_object_part_content_get(m_mostVisitedView, "elm.swallow.right"));
-    evas_object_hide(elm_object_part_content_get(m_mostVisitedView, "elm.swallow.center"));
-
     elm_layout_text_set(m_mostVisitedView, "elm.text.empty", "No visited site");
     elm_layout_signal_emit(m_mostVisitedView, "empty,view", "mainui");
 }
index 9814981a6921f0c5fe3733b9207458a0b93c10ad..79946741cf682b34c077d1f93fe61094cd697823 100644 (file)
@@ -75,14 +75,10 @@ private:
     Evas_Object* createBottomButton(Evas_Object *parent);
     Evas_Object* createTopButtons(Evas_Object *parent);
 
-    static char* _grid_text_get(void *data, Evas_Object *obj, const char *part);
-    static Evas_Object * _grid_content_get(void *data, Evas_Object *obj, const char *part);
     static char* _grid_bookmark_text_get(void *data, Evas_Object *obj, const char *part);
     static Evas_Object * _grid_bookmark_content_get(void *data, Evas_Object *obj, const char *part);
-    static void _itemSelected(void * data, Evas_Object * obj, void * event_info);
-    static void _item_deleted(void *data, Evas_Object *obj);
     static void _thumbSelected(void * data, Evas_Object * obj, void * event_info);
-    static void _deleteBookmark(void *data, Evas_Object *obj, void *event_info);
+    static void _thumbClicked(void *data, Evas_Object *obj, const char *emission, const char *source);
     void setEmptyView(bool empty);
     void showNoHistoryLabel();
 
@@ -97,20 +93,19 @@ private:
     Evas_Object *m_bookmarksButton;
     Evas_Object *m_mostVisitedButton;
     Evas_Object *m_bookmarkGengrid;
-    Evas_Object *m_genListLeft;
-    Evas_Object *m_genListCenter;
-    Evas_Object *m_genListRight;
+    std::vector<Evas_Object *> m_tiles;
 
-    Elm_Gengrid_Item_Class * m_big_item_class;
-    Elm_Gengrid_Item_Class * m_small_item_class;
     Elm_Gengrid_Item_Class * m_bookmark_item_class;
-
     DetailPopup m_detailPopup;
-    std::multimap<std::string,Elm_Object_Item*> m_map_history_views;
+    services::HistoryItemVector m_historyItems;
     std::map<std::string,Elm_Object_Item*> m_map_bookmark_views;
     bool m_gengridSetup;
     std::string edjFilePath;
     bool m_desktopMode;
+
+    static const int MAX_TILES_NUMBER;
+    static const int BIG_TILE_INDEX;
+    static const std::vector<std::string> TILES_NAMES;
 };
 
 }
index 030e8dd4e480f17882d608b56f1edc10ad9bddc0..0625a907df468740cfa501ddcd14b89e8bf3233e 100644 (file)
@@ -20,43 +20,33 @@ collections {
 #define ITEM_WIDTH 374
 #define PARENT_ITEM_HEIGHT 36
 
-    group{
-        name: "elm/button/base/invisible_button";
-        parts{
-            part{
-                name: "button";
-                type: RECT;
-                scale: 1;
-                description { state: "default" 0.0;
-                    visible: 1;
-                    fixed: 1 1;
-                    color: 0 0 0 0;
-                }
-            }
-            part{
-                name: "over";
-                type: RECT;
-                scale: 1;
-                description { state: "default" 0.0;
-                    visible: 1;
-                    fixed: 1 1;
-                    rel1 { relative: 0.0 0.0;to: "button";}
-                    rel2 { relative: 1.0 1.0;to: "button";}
-                    color: 0 0 0 0;
-                }
+group{
+    name: "elm/button/base/invisible_button";
+    parts{
+        part{
+            name: "button";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                fixed: 1 1;
+                color: 0 0 0 0;
             }
         }
-        programs{
-            program {
-                name: "mouse_click";
-                signal: "mouse,clicked,1";
-                source: "over";
-                script {
-                    emit("elm,action,click", "");
-                }
+        part{
+            name: "over";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                fixed: 1 1;
+                rel1 { relative: 0.0 0.0;to: "button";}
+                rel2 { relative: 1.0 1.0;to: "button";}
+                color: 0 0 0 0;
             }
         }
     }
+}
 
 group { name: "elm/button/base/thumbButton";
                images {
@@ -90,243 +80,314 @@ group { name: "mv_bookmarks";
     data {
         item: "focus_highlight" "off";
     }
-       images {
-               image: "web_shadow.png" COMP;
-       }
-       color_classes{
-            color_class{
-                name: "defaultBgColor";
-                color: 18 22 34 255;
-            }
-            color_class{
-                name: "focusBgColor";
-                color: 0 119 246 255;
+    images {
+        image: "web_shadow.png" COMP;
+    }
+    color_classes{
+        color_class{
+            name: "defaultBgColor";
+            color: 18 22 34 255;
+        }
+        color_class{
+            name: "focusBgColor";
+            color: 0 119 246 255;
+        }
+        color_class{
+            name: "imageHighlight";
+            color: 255 255 255 102;
+        }
+        color_class{
+            name: "focusbtBgColor";
+            color: 22 120 224 255;
+        }
+        color_class{
+            name: "titleTextColor";
+            color: 74 74 74 255;
+        }
+        color_class{
+            name: "focusTextColor";
+            color: 255 255 255 255;
+        }
+        color_class{
+            name: "highlightTextColor";
+            color: 255 255 255 51;
+        }
+        color_class{
+            name: "urlTextColor";
+            color: 116 116 116 204;
+        }
+        color_class{
+            name: "transparent";
+            color: 0 0 0 0;
+        }
+    }
+
+    parts {
+        part { name: "layoutTop_bg";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+                color: 255 255 255 255;
+                min: 0 181;
+                max: -1 181;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+                    relative: 0 0; offset: 0 104;
+                }
+                rel2{
+                    relative: 1 1;
+                }
             }
-            color_class{
-                name: "imageHighlight";
-                color: 255 255 255 102;
+        }
+        part { name: "gengrid_bg";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+                color: 255 255 255 255;
+                min: 1920 626;
+                max: -1 626;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+                    to: "layoutTop_bg";
+                    relative: 0 1;
+                }
+                rel2{
+                    relative: 1 1;
+                }
             }
-            color_class{
-                name: "focusbtBgColor";
-                color: 22 120 224 255;
+        }
+        part { name: "layoutBottom_bg";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+                                    color: 255 255 255 255;
+                min: 1920 181;
+                        max: 1920 181;
+        align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+                                            relative: 0 1; to: "gengrid_bg";
+                }
+                rel2{
+                                            relative: 1 1;
+                }
             }
-            color_class{
-                name: "titleTextColor";
-                color: 74 74 74 255;
+        }
+
+        part { name: "elm.swallow.grid";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 1920 614;
+                max: 1920 614;
+        align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+        relative: 0 0; to: "gengrid_bg"; offset: 63 0;
+                }
+                rel2 {
+                    relative: 1 1;
+                    offset: 0 0;
+                }
             }
-            color_class{
-                name: "focusTextColor";
-                color: 255 255 255 255;
+        }
+
+        part { name: "center_rect";
+            type: RECT;
+            description { state: "default" 0.0;
+                min: 1592 614;
+                max: 1592 614;
+                visible: 0;
+                align: 0.5 0.0;
+                rel1 {
+                    to: "gengrid_bg";
+                    relative: 0 0;
+                }
+                rel2 {
+                    to: "gengrid_bg";
+                    relative: 1 1;
+                }
             }
-            color_class{
-                name: "highlightTextColor";
-                color: 255 255 255 51;
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 1;
+                color: 229 229 229 255;
             }
-            color_class{
-                name: "urlTextColor";
-                color: 116 116 116 204;
+        }
+
+        part { name: "elm.swallow.big";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 784 614;
+                max: 784 614;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                visible: 1;
+                rel1 {
+                    relative: 0 0; to: "center_rect";
+                }
+                rel2 {
+                    relative: 1 1;
+                    offset: 0 0;
+                }
             }
-            color_class{
-                name: "transparent";
-                color: 0 0 0 0;
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 0;
             }
         }
 
-        parts {
-           part { name: "layoutTop_bg";
-                type: RECT;
-                mouse_events: 0;
-                description { state: "default" 0.0;
-                    color: 255 255 255 255;
-                    min: 0 181;
-                    max: -1 181;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        relative: 0 0; offset: 0 104;
-                    }
-                    rel2{
-                        relative: 1 1;
-                    }
+        part { name: "elm.swallow.small_first";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 378 294;
+                max: 378 294;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                visible: 1;
+                rel1 {
+                    to: "center_rect";
+                    relative: 0 0;
+                    offset: 810 0;
                 }
-            }
-            part { name: "gengrid_bg";
-                type: RECT;
-                mouse_events: 0;
-                description { state: "default" 0.0;
-                    color: 255 255 255 255;
-                    min: 1920 626;
-                    max: -1 626;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        to: "layoutTop_bg";
-                        relative: 0 1;
-                    }
-                    rel2{
-                        relative: 1 1;
-                    }
+                rel2{
+                    to: "center_rect";
+                    relative: 1 1;
+                    offset: 0 0;
                 }
             }
-            part { name: "layoutBottom_bg";
-                type: RECT;
-                mouse_events: 0;
-                description { state: "default" 0.0;
-                                        color: 255 255 255 255;
-                                       min: 1920 181;
-                                   max: 1920 181;
-                   align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                                                relative: 0 1; to: "gengrid_bg";
-                    }
-                    rel2{
-                                                relative: 1 1;
-                    }
-                }
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 0;
             }
+        }
 
-            part { name: "elm.swallow.grid";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                                       min: 1920 614;
-                    max: 1920 614;
-                   align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                       relative: 0 0; to: "gengrid_bg"; offset: 63 0;
-                    }
-                    rel2 {
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
+        part { name: "elm.swallow.small_second";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 378 294;
+                max: 378 294;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                visible: 1;
+                rel1 {
+                    to: "center_rect";
+                    relative: 0 0;
+                    offset: 810 320;
+                }
+                rel2{
+                    to: "center_rect";
+                    relative: 1 1;
+                    offset: 0 0;
                 }
             }
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 0;
+            }
+        }
 
-            part { name: "center_rect";
-                type: RECT;
-                description { state: "default" 0.0;
-                    min: 1592 614;
-                    max: 1592 614;
-                    visible: 0;
-                    align: 0.5 0.0;
-                    rel1 {
-                        to: "gengrid_bg";
-                        relative: 0 0;
-                    }
-                    rel2 {
-                        to: "gengrid_bg";
-                        relative: 1 1;
-                    }
+        part { name: "elm.swallow.small_third";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 378 294;
+                max: 378 294;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                visible: 1;
+                rel1 {
+                    to: "center_rect";
+                    relative: 0 0;
+                    offset: 1214 0;
                 }
-                description { state: "empty" 0.0;
-                    inherit: "default" 0.0;
-                    visible: 1;
-                    color: 229 229 229 255;
+                rel2 {
+                    to: "center_rect";
+                    relative: 1 1;
+                    offset: 0 0;
                 }
             }
-            part { name: "elm.swallow.left";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                    min: 784 614;
-                    max: 784 614;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        relative: 0 0; to: "center_rect";
-                    }
-                    rel2 {
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
-                }
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 0;
             }
-            part { name: "elm.swallow.center";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                    min: 378 614;
-                    max: 378 614;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        to: "center_rect";
-                        relative: 0 0;
-                        offset: 810 0;
-                    }
-                    rel2{
-                        to: "center_rect";
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
+        }
+
+        part { name: "elm.swallow.small_fourth";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 378 294;
+                max: 378 294;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                visible: 1;
+                rel1 {
+                    to: "center_rect";
+                    relative: 0 0;
+                    offset: 1214 320;
                 }
-            }
-            part { name: "elm.swallow.right";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                    min: 378 614;
-                    max: 378 614;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        to: "center_rect";
-                        relative: 0 0;
-                        offset: 1214 0;
-                    }
-                    rel2 {
-                        to: "center_rect";
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
+                rel2 {
+                    to: "center_rect";
+                    relative: 1 1;
+                    offset: 0 0;
                 }
             }
+            description { state: "empty" 0.0;
+                inherit: "default" 0.0;
+                visible: 0;
+            }
+        }
 
-                part { name: "elm.swallow.layoutTop";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                                       min: 1920 181;
-                    max: 1920 181;
-                   align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                        relative: 0 0; to: "layoutTop_bg";
-                    }
-                    rel2 {
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
+        part { name: "elm.swallow.layoutTop";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            min: 1920 181;
+                max: 1920 181;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+                    relative: 0 0; to: "layoutTop_bg";
+                }
+                rel2 {
+                    relative: 1 1;
+                    offset: 0 0;
                 }
             }
-           part { name: "uri_bar_shadow";
-                type: IMAGE;
-                scale: 1;
-                repeat_events: 1;
-                description {
-                    state: "default" 0.0;
-                    visible: 1;
-                    align: 0.0 0.0;
-                    fixed: 0 0;
-                    min: 1920 14;
-                    max: 1920 14;
-                    image.normal: "web_shadow.png";
-                    rel1 { relative: 0.0 0.0; to: "elm.swallow.layoutTop"; }
-                    rel2 { relative: 1.0 1.0; }
+        }
+
+        part { name: "uri_bar_shadow";
+            type: IMAGE;
+            scale: 1;
+            repeat_events: 1;
+            description {
+                state: "default" 0.0;
+                visible: 1;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                min: 1920 14;
+                max: 1920 14;
+                image.normal: "web_shadow.png";
+                rel1 { relative: 0.0 0.0; to: "elm.swallow.layoutTop"; }
+                rel2 { relative: 1.0 1.0; }
+            }
+        }
+
+        part { name: "elm.swallow.layoutBottom";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+                min: 1920 181;
+                max: 1920 181;
+                align: 0.0 0.0;
+                fixed: 0 0;
+                rel1 {
+                    to: "layoutBottom_bg";
+                    relative: 0 0;
                 }
-             }
-           part { name: "elm.swallow.layoutBottom";
-                type: SWALLOW;
-                description { state: "default" 0.0;
-                                       min: 1920 181;
-                    max: 1920 181;
-                   align: 0.0 0.0;
-                    fixed: 0 0;
-                    rel1 {
-                                                relative: 0 0; to: "layoutBottom_bg";
-                    }
-                    rel2 {
-                        relative: 1 1;
-                        offset: 0 0;
-                    }
+                rel2 {
+                    relative: 1 1;
+                    offset: 0 0;
                 }
+            }
         }
 
         part { name: "elm.text.empty";
@@ -362,6 +423,11 @@ group { name: "mv_bookmarks";
             signal: "empty,view";
             source: "mainui";
             action:  STATE_SET "empty" 0.0;
+            target: "elm.swallow.big";
+            target: "elm.swallow.small_first";
+            target: "elm.swallow.small_second";
+            target: "elm.swallow.small_third";
+            target: "elm.swallow.small_fourth";
             target: "elm.text.empty";
             target: "center_rect";
         }
@@ -371,13 +437,18 @@ group { name: "mv_bookmarks";
             action:  STATE_SET "default" 0.0;
             target: "elm.text.empty";
             target: "center_rect";
+            target: "elm.swallow.big";
+            target: "elm.swallow.small_first";
+            target: "elm.swallow.small_second";
+            target: "elm.swallow.small_third";
+            target: "elm.swallow.small_fourth";
         }
     }
 }
 
-group { name: "elm/genlist/item/big_grid_item/default";
+group { name: "big_tile";
     data.item: "texts" "page_title page_url";
-    data.item: "contents" "elm.thumbnail elm.thumbButton";
+    data.item: "contents" "elm.thumbnail";
     min: 600 614;
     max: 600 614;
     images {
@@ -531,14 +602,6 @@ group { name: "elm/genlist/item/big_grid_item/default";
                     align: 0 0.5;
                 }
             }
-            description { state: "focus" 0.0;
-                inherit: "default" 0.0;
-                color_class: focusTextColor;
-            }
-            description { state: "highlight" 0.0;
-                inherit: "default" 0.0;
-                //color_class: highlightTextColor;
-            }
         }
 
         part { name: "page_url";
@@ -564,25 +627,9 @@ group { name: "elm/genlist/item/big_grid_item/default";
                     align: 0 0.5;
                 }
             }
-            description { state: "focus" 0.0;
-                inherit: "default" 0.0;
-                color_class: focusTextColor;
-            }
-            description { state: "highlight" 0.0;
-                inherit: "default" 0.0;
-                //color_class: highlightTextColor;
-            }
         }
 
-        part { name: "elm.thumbButton";
-            type: SWALLOW;
-            description { state: "default" 0.0;
-                rel1.to: "bg";
-                rel2.to: "bg";
-            }
-        }
-
-        part { name: "over2";
+        part { name: "over";
             type: RECT;
             mouse_events: 1;
             repeat_events: 1;
@@ -592,22 +639,12 @@ group { name: "elm/genlist/item/big_grid_item/default";
                 rel2.to: "background";
             }
         }
-        part { name: "over3";
-            type: RECT;
-            mouse_events: 1;
-            repeat_events: 1;
-            description { state: "default" 0.0;
-                color: 0 0 0 0;
-                rel1.to: "background";
-                rel2.to: "background";
-            }
-        }
     }
 
     programs{
         program { name: "mouse_in";
             signal: "mouse,in";
-            source: "over2";
+            source: "over";
             action:  STATE_SET "selected" 0.0;
             target:  "background";
             target: "border_top";
@@ -616,7 +653,7 @@ group { name: "elm/genlist/item/big_grid_item/default";
         }
         program { name: "mouse_out";
             signal: "mouse,out";
-            source: "over2";
+            source: "over";
             action:  STATE_SET "default" 0.0;
             target:  "background";
             target: "border_top";
@@ -626,9 +663,9 @@ group { name: "elm/genlist/item/big_grid_item/default";
     }
 }
 
-group { name: "elm/genlist/item/small_grid_item/default";
+group { name: "small_tile";
     data.item: "texts" "page_title page_url";
-    data.item: "contents" "elm.thumbnail elm.thumbButton";
+    data.item: "contents" "elm.thumbnail";
     images {
         image: "web_frame_selected.png" COMP;
         image: "ico_bg_round_shape_37x37.png" COMP;
@@ -839,15 +876,7 @@ group { name: "elm/genlist/item/small_grid_item/default";
             }
         }
 
-        part { name: "elm.thumbButton";
-            type: SWALLOW;
-            description { state: "default" 0.0;
-                rel1.to: "bg";
-                rel2.to: "bg";
-            }
-        }
-
-        part { name: "over2";
+        part { name: "over";
             type: RECT;
             mouse_events: 1;
             repeat_events: 1;
@@ -857,23 +886,12 @@ group { name: "elm/genlist/item/small_grid_item/default";
                 rel2.to: "background";
             }
         }
-
-        part { name: "over3";
-            type: RECT;
-            mouse_events: 1;
-            repeat_events: 1;
-            description { state: "default" 0.0;
-                color: 0 0 0 0;
-                rel1.to: "background";
-                rel2.to: "background";
-            }
-        }
     }
 
     programs {
         program { name: "mouse_in";
             signal: "mouse,in";
-            source: "over2";
+            source: "over";
             action: STATE_SET "selected" 0.0;
             target: "background";
             target: "border_top";
@@ -882,7 +900,7 @@ group { name: "elm/genlist/item/small_grid_item/default";
         }
         program { name: "mouse_out";
             signal: "mouse,out";
-            source: "over2";
+            source: "over";
             action: STATE_SET "default" 0.0;
             target: "background";
             target: "border_top";
@@ -1053,7 +1071,7 @@ group { name: "elm/gengrid/item/grid_item/default";
                        }
                }
 
-               part { name: "over2";
+               part { name: "over";
                        type: RECT;
                        mouse_events: 1;
                        repeat_events: 1;
@@ -1063,22 +1081,12 @@ group { name: "elm/gengrid/item/grid_item/default";
                                rel2.to: "background";
                        }
                }
-               part { name: "over3";
-                       type: RECT;
-                       mouse_events: 1;
-                       repeat_events: 1;
-                       description { state: "default" 0.0;
-                               color: 0 0 0 0;
-                               rel1.to: "background";
-                               rel2.to: "background";
-                       }
-               }
        }
 
        programs{
                program { name: "mouse_in";
                        signal: "mouse,in";
-                       source: "over2";
+                       source: "over";
                        action:  STATE_SET "selected" 0.0;
                        target:  "background";
                        target: "focus_highlight";
@@ -1086,7 +1094,7 @@ group { name: "elm/gengrid/item/grid_item/default";
                }
                program { name: "mouse_out";
                        signal: "mouse,out";
-                       source: "over2";
+                       source: "over";
                        action:  STATE_SET "default" 0.0;
                        target:  "background";
                        target: "focus_highlight";