Refactoring MainUI 63/46563/12
authorMarcin Lapinski <m.lapinski@samsung.com>
Fri, 21 Aug 2015 13:33:02 +0000 (15:33 +0200)
committerJanusz Majnert <j.majnert@samsung.com>
Wed, 26 Aug 2015 13:49:29 +0000 (06:49 -0700)
[Issue#]    https://bugs.tizen.org/jira/browse/TT-72
[Problem]   MainUI needs refactoring.
[Cause]     N/A
[Sollution] Following actions were taken:
            -Split humongous show functions into several smaller.
            -Removed unused functions.
            -Logically split most visited and bookmark view.
            -Replace redundant class members with local variables.
            -Renamed functions and variables to make names more adequate.
[Verify]    1. Browser builds
            2. Refactor does not change behaviour of browser.

Change-Id: I44a5c958ad4e7b0c694434a4cfdb45702c871ec7

services/MainUI/MainUI.cpp
services/MainUI/MainUI.h
services/MainUI/edc/MainUI.edc
services/SimpleUI/SimpleUI.cpp

index a7ab4a7206e0ac851a932d4d2ac141b0a67f77d5..6d86e66828c071c2d2dc06047a4914ff56c14877 100644 (file)
@@ -59,178 +59,240 @@ struct ItemData{
 MainUI::MainUI()
     : m_parent(nullptr)
     , m_layout(nullptr)
-    , m_layoutTop(nullptr)
-    , m_gengrid(nullptr)
+    , m_bookmarksButton(nullptr)
+    , m_mostVisitedButton(nullptr)
+    , m_bookmarksView(nullptr)
+    , m_mostVisitedView(nullptr)
+    , m_bookmarkGengrid(nullptr)
     , m_genListLeft(nullptr)
     , m_genListCenter(nullptr)
     , m_genListRight(nullptr)
-    , m_layoutBottom(nullptr)
     , m_big_item_class(nullptr)
     , m_small_item_class(nullptr)
     , m_bookmark_item_class(nullptr)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     edjFilePath = EDJE_DIR;
     edjFilePath.append("MainUI/MainUI.edj");
+    elm_theme_extension_add(nullptr, edjFilePath.c_str());
+    MainUI::createItemClasses();
 }
 
 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";
+        m_bookmark_item_class->func.text_get = _grid_bookmark_text_get;
+        m_bookmark_item_class->func.content_get =  _grid_bookmark_content_get;
+        m_bookmark_item_class->func.state_get = nullptr;
+        m_bookmark_item_class->func.del = nullptr;
+    }
 }
 
 void MainUI::show(Evas_Object* parent)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    elm_theme_extension_add(nullptr, edjFilePath.c_str());
-    m_layout = elm_layout_add(parent);
-    elm_layout_file_set(m_layout, edjFilePath.c_str(), "mv_bookmarks");
-    evas_object_size_hint_weight_set(m_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    evas_object_size_hint_align_set(m_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    //FIXME: this may be source of memory leak this object is not deleted anywhere
+    m_layout = createQuickAccessLayout(parent);
     evas_object_show(m_layout);
-    m_parent = m_layout;
-
-    m_genListLeft = elm_genlist_add(m_layout);
-    elm_object_part_content_set(m_layout, "elm.swallow.left", m_genListLeft);
-    elm_genlist_homogeneous_set(m_genListLeft, EINA_FALSE);
-    elm_genlist_multi_select_set(m_genListLeft, EINA_FALSE);
-    elm_genlist_select_mode_set(m_genListLeft, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(m_genListLeft, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(m_genListLeft, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    m_genListCenter = elm_genlist_add(m_layout);
-    elm_object_part_content_set(m_layout, "elm.swallow.center", m_genListCenter);
-    elm_genlist_homogeneous_set(m_genListCenter, EINA_FALSE);
-    elm_genlist_multi_select_set(m_genListCenter, EINA_FALSE);
-    elm_genlist_select_mode_set(m_genListCenter, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(m_genListCenter, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(m_genListCenter, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    m_genListRight = elm_genlist_add(m_layout);
-    elm_object_part_content_set(m_layout, "elm.swallow.right", m_genListRight);
-    elm_genlist_homogeneous_set(m_genListRight, EINA_FALSE);
-    elm_genlist_multi_select_set(m_genListRight, EINA_FALSE);
-    elm_genlist_select_mode_set(m_genListRight, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_genlist_mode_set(m_genListRight, ELM_LIST_LIMIT);
-    evas_object_size_hint_weight_set(m_genListRight, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-      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;
-        }
+    m_parent = parent;
+}
 
-    /*evas_object_smart_callback_add(m_genList, "item,focused", focusItem, this);
-    evas_object_smart_callback_add(m_genList, "item,unfocused", unFocusItem, nullptr);*/
+Evas_Object* MainUI::createQuickAccessLayout(Evas_Object* parent)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
 
+    Evas_Object* layout = elm_layout_add(parent);
+    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);
 
-    m_gengrid = elm_gengrid_add(m_layout);
-    //elm_object_part_content_set(m_layout, "elm.swallow.grid", m_gengrid);
+    m_mostVisitedView = createMostVisitedView(layout);
+    m_bookmarksView   = createBookmarksView  (layout);
 
-    evas_object_smart_callback_add(m_gengrid, "item,focused", focusItem, nullptr);
-    evas_object_smart_callback_add(m_gengrid, "item,unfocused", unFocusItem, nullptr);
-    evas_object_smart_callback_add(m_gengrid, "activated", _itemSelected, this);
+    evas_object_show(m_mostVisitedView);
+    //TODO: uncoment this after cleaning up the mess in whole app window.
+    //evas_object_show(m_bookmarksView);
+    showHistory();
 
-       if (!m_bookmark_item_class) {
-            m_bookmark_item_class = elm_gengrid_item_class_new();
-            m_bookmark_item_class->item_style = "grid_item";
-            m_bookmark_item_class->func.text_get = _grid_bookmark_text_get;
-            m_bookmark_item_class->func.content_get =  _grid_bookmark_content_get;
-            m_bookmark_item_class->func.state_get = nullptr;
-            m_bookmark_item_class->func.del = nullptr;
-        }
+    return layout;
+}
 
-    M_ASSERT(m_parent);
-    elm_theme_extension_add(nullptr, edjFilePath.c_str());
-    elm_gengrid_align_set(m_gengrid, 0, 0);
-    elm_gengrid_select_mode_set(m_gengrid, ELM_OBJECT_SELECT_MODE_ALWAYS);
-    elm_gengrid_multi_select_set(m_gengrid, EINA_FALSE);
-    elm_gengrid_horizontal_set(m_gengrid, EINA_FALSE);
-    //elm_gengrid_highlight_mode_set(m_gengrid, EINA_TRUE);
-    elm_scroller_policy_set(m_gengrid, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
-    elm_scroller_page_size_set(m_gengrid, 0, 327);
-    evas_object_size_hint_weight_set(m_gengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    evas_object_size_hint_align_set(m_gengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
-    elm_gengrid_item_size_set(m_gengrid, 364 * efl_scale, 320 * efl_scale);
+Evas_Object* MainUI::createMostVisitedView (Evas_Object * parent)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    Evas_Object* mostVisitedLayout = elm_layout_add(parent);
+    elm_layout_file_set(mostVisitedLayout, edjFilePath.c_str(), "mv_bookmarks");
+    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;
 
-    showTopButtons();
-    showBottomButton();
+    Evas_Object* topButtons = createTopButtons(mostVisitedLayout);
+    elm_object_part_content_set(mostVisitedLayout, "elm.swallow.layoutTop", topButtons);
+
+    return mostVisitedLayout;
 }
 
+Evas_Object* MainUI::createBookmarksView (Evas_Object * parent)
+{
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    Evas_Object *bookmarkViewLayout = elm_layout_add(parent);
+    elm_layout_file_set(bookmarkViewLayout, edjFilePath.c_str(), "mv_bookmarks");
+    evas_object_size_hint_weight_set(bookmarkViewLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(bookmarkViewLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+    Evas_Object *bookmarkGengrid = elm_gengrid_add(bookmarkViewLayout);
+
+    elm_gengrid_align_set(bookmarkGengrid, 0, 0);
+    elm_gengrid_select_mode_set(bookmarkGengrid, ELM_OBJECT_SELECT_MODE_ALWAYS);
+    elm_gengrid_multi_select_set(bookmarkGengrid, EINA_FALSE);
+    elm_gengrid_horizontal_set(bookmarkGengrid, EINA_FALSE);
+
+    elm_scroller_policy_set(bookmarkGengrid, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+    elm_scroller_page_size_set(bookmarkGengrid, 0, 327);
+    evas_object_size_hint_weight_set(bookmarkGengrid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(bookmarkGengrid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_gengrid_item_size_set(bookmarkGengrid, 364 * efl_scale, 320 * efl_scale);
+    evas_object_show(bookmarkGengrid);
+
+    elm_object_part_content_set(bookmarkViewLayout, "elm.swallow.grid", bookmarkGengrid);
+    m_bookmarkGengrid = bookmarkGengrid;
+
+    Evas_Object* topButtons = createTopButtons(bookmarkViewLayout);
+    elm_object_part_content_set(bookmarkViewLayout, "elm.swallow.layoutTop", topButtons);
+
+    Evas_Object* bottomButton = createBottomButton(bookmarkViewLayout);
+    elm_object_part_content_set(bookmarkViewLayout, "elm.swallow.layoutBottom", bottomButton);
 
-void MainUI::showTopButtons()
+    return bookmarkViewLayout;
+}
+
+Evas_Object* MainUI::createTopButtons (Evas_Object *parent)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
 
-    m_layoutTop = elm_layout_add(m_layout);
+    Evas_Object *layoutTop = elm_layout_add(parent);
+    elm_layout_file_set(layoutTop, edjFilePath.c_str(), "top_button_item");
+    evas_object_size_hint_weight_set(layoutTop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(layoutTop, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_show(layoutTop);
 
-    elm_layout_file_set(m_layoutTop, edjFilePath.c_str(), "top_button_item");
-    evas_object_size_hint_weight_set(m_layoutTop, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    evas_object_size_hint_align_set(m_layoutTop, EVAS_HINT_FILL, EVAS_HINT_FILL);
-    evas_object_show(m_layoutTop);
+    Evas_Object *mostVisitedButton = elm_button_add(layoutTop);
+    elm_object_style_set(mostVisitedButton, "invisible_button");
+    evas_object_smart_callback_add(mostVisitedButton, "clicked", _mostVisited_clicked, this);
+    evas_object_show(mostVisitedButton);
+    elm_layout_content_set(layoutTop, "mostvisited_click", mostVisitedButton);
 
-    Evas_Object *mvButton = elm_button_add(m_layoutTop);
-    elm_object_style_set(mvButton, "invisible_button");
-    evas_object_smart_callback_add(mvButton, "clicked", _mostVisited_clicked, this);
-    elm_layout_content_set(m_layoutTop, "mostvisited_click", mvButton);
+    m_mostVisitedButton = mostVisitedButton;
 
-    Evas_Object *bmButton = elm_button_add(m_layoutTop);
-    elm_object_style_set(bmButton, "invisible_button");
-    evas_object_smart_callback_add(bmButton, "clicked", _bookmark_clicked, this);
-    elm_layout_content_set(m_layoutTop, "bookmark_click", bmButton);
+    Evas_Object *bookmarksButton = elm_button_add(layoutTop);
+    elm_object_style_set(bookmarksButton, "invisible_button");
+    evas_object_smart_callback_add(bookmarksButton, "clicked", _bookmark_clicked, this);
+    evas_object_show(bookmarksButton);
+    elm_layout_content_set(layoutTop, "bookmark_click", bookmarksButton);
 
-    elm_object_part_content_set(m_layout, "elm.swallow.genlistTop", m_layoutTop);
+    m_bookmarksButton = bookmarksButton;
+
+    return layoutTop;
 }
 
-void MainUI::showBottomButton()
+Evas_Object* MainUI::createBottomButton(Evas_Object *parent)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    elm_theme_extension_add(nullptr, edjFilePath.c_str());
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
 
-    m_layoutBottom = elm_layout_add(m_layout);
-    evas_object_size_hint_weight_set(m_layoutBottom, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    evas_object_size_hint_align_set(m_layoutBottom, EVAS_HINT_FILL, EVAS_HINT_FILL);
-    elm_layout_file_set(m_layoutBottom, edjFilePath.c_str(), "bottom_button_item");
-    //elm_object_part_content_set(m_layout, "elm.swallow.layoutBottom", m_layoutBottom);
+    Evas_Object *layoutBottom = elm_layout_add(parent);
+    elm_layout_file_set(layoutBottom, edjFilePath.c_str(), "bottom_button_item");
 
-    Evas_Object * bookmark_manager_button = elm_button_add(m_layoutBottom);
+    evas_object_size_hint_weight_set(layoutBottom, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(layoutBottom, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    evas_object_show(layoutBottom);
+
+    Evas_Object * bookmark_manager_button = elm_button_add(layoutBottom);
     elm_object_style_set(bookmark_manager_button, "invisible_button");
-    elm_object_part_content_set(m_layoutBottom, "bookmarkmanager_click", bookmark_manager_button);
     evas_object_smart_callback_add(bookmark_manager_button, "clicked", _bookmark_manager_clicked, this);
+    evas_object_show(bookmark_manager_button);
+
+    elm_object_part_content_set(layoutBottom, "bookmarkmanager_click", bookmark_manager_button);
+
+    return layoutBottom;
 }
 
 void MainUI::_mostVisited_clicked(void * data, Evas_Object * /* obj */, void * event_info)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI* mainUI = reinterpret_cast<MainUI *>(data);
-    if (elm_object_part_content_get(mainUI->m_layout, "elm.swallow.left"))  // check if most visited view is already set
-        return;
     mainUI->mostVisitedClicked(std::string());
 }
 
 void MainUI::_bookmark_clicked(void * data, Evas_Object * /* obj */, void * event_info)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI* mainUI = reinterpret_cast<MainUI *>(data);
-    if (elm_object_part_content_get(mainUI->m_layout, "elm.swallow.grid"))  // check if bookmark view is already set
-        return;
     mainUI->bookmarkClicked(std::string());
 }
 
 void MainUI::_bookmark_manager_clicked(void * data, Evas_Object * /* obj */, void * event_info)
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     MainUI*  mainUI = static_cast<MainUI *>(data);
     mainUI->bookmarkManagerClicked(std::string());
 }
@@ -271,6 +333,8 @@ void MainUI::addHistoryItems(std::vector<std::shared_ptr<tizen_browser::services
             break;
         addHistoryItem(*it);
     }
+    if (i>0)
+        setEmptyView(false);
 }
 
 void MainUI::addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkItem> bi)
@@ -279,13 +343,11 @@ void MainUI::addBookmarkItem(std::shared_ptr<tizen_browser::services::BookmarkIt
     BookmarkItemData *itemData = new BookmarkItemData();
     itemData->item = bi;
         itemData->mainUI = std::shared_ptr<tizen_browser::base_ui::MainUI>(this);
-        Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_gengrid, m_bookmark_item_class, itemData, nullptr, this);
+        Elm_Object_Item* bookmarkView = elm_gengrid_item_append(m_bookmarkGengrid, m_bookmark_item_class, itemData, nullptr, this);
     m_map_bookmark_views.insert(std::pair<std::string,Elm_Object_Item*>(bi->getAddress(),bookmarkView));
 
     // unselect by default
     elm_gengrid_item_selected_set(bookmarkView, EINA_FALSE);
-
-    setEmptyView(false);
 }
 
 void MainUI::addBookmarkItems(std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > items)
@@ -391,75 +453,86 @@ void MainUI::_thumbSelected(void * data, Evas_Object * /* obj */, void * /* even
 
 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();
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.left"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.right"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.center"));
 }
 
-void MainUI::showHistoryGenlist()
+void MainUI::showHistory()
 {
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.grid"));
-    elm_object_part_content_unset(m_layout, "elm.swallow.grid");
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.layoutBottom"));
-    elm_object_part_content_unset(m_layout, "elm.swallow.layoutBottom");
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    if (elm_layout_content_get(m_layout, "elm.swallow.content") == m_mostVisitedView)
+        return;
+
+    //TODO: remove these "evas_object_hide" and "evas_object_show" after cleaning up the mess in whole app window.
+    elm_layout_content_unset(m_layout, "elm.swallow.content");
+    evas_object_hide(m_bookmarksView);
+    elm_layout_content_set(m_layout, "elm.swallow.content", m_mostVisitedView);
+    evas_object_show(m_mostVisitedView);
+
+    elm_object_focus_set(m_mostVisitedButton, true);
 
     if (m_map_history_views.empty()) {
         setEmptyView(true);
         return;
     }
     setEmptyView(false);
-    elm_object_part_content_set(m_layout, "elm.swallow.left", m_genListLeft);
-    elm_object_part_content_set(m_layout, "elm.swallow.right", m_genListRight);
-    elm_object_part_content_set(m_layout, "elm.swallow.center", m_genListCenter);
 }
 
 void MainUI::clearBookmarkGengrid()
 {
-    elm_gengrid_clear(m_gengrid);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    elm_gengrid_clear(m_bookmarkGengrid);
     m_map_bookmark_views.clear();
-    evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.grid"));
 }
 
-void MainUI::showBookmarkGengrid()
+void MainUI::showBookmarks()
 {
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.left"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.right"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.center"));
-    elm_object_part_content_unset(m_layout, "elm.swallow.left");
-    elm_object_part_content_unset(m_layout, "elm.swallow.right");
-    elm_object_part_content_unset(m_layout, "elm.swallow.center");
-    elm_object_part_content_set(m_layout, "elm.swallow.grid", m_gengrid);
-    elm_object_part_content_set(m_layout, "elm.swallow.layoutBottom", m_layoutBottom);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    if (elm_layout_content_get(m_layout, "elm.swallow.content") == m_bookmarksView)
+        return;
+
+    //TODO: remove these "evas_object_hide" and "evas_object_show" after cleaning up the mess in whole app window.
+    elm_layout_content_unset(m_layout, "elm.swallow.content");
+    evas_object_hide(m_mostVisitedView);
+    elm_layout_content_set(m_layout, "elm.swallow.content", m_bookmarksView);
+    evas_object_show(m_bookmarksView);
+
+    elm_object_focus_set(m_bookmarksButton, true);
 }
 
 void MainUI::hide()
 {
-   BROWSER_LOGD("MainUI Hide");
-   evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.genlistTop"));
-   evas_object_hide(elm_layout_content_get(m_layout, "elm.swallow.genlistBottom"));
-   evas_object_hide(m_layout);
-   clearItems();
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
+
+    //TODO: remove these "evas_object_hide" after cleaning up the mess in whole app window.
+    evas_object_hide(m_layout);
+    evas_object_hide(m_mostVisitedView);
+    evas_object_hide(m_bookmarksView);
+    clearItems();
 }
 
 void MainUI::clearItems()
 {
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     clearHistoryGenlist();
     clearBookmarkGengrid();
 }
 
 void MainUI::showNoHistoryLabel()
 {
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.left"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.right"));
-    evas_object_hide(elm_object_part_content_get(m_layout, "elm.swallow.center"));
+    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_layout, "elm.text.empty", "No visited site");
-    elm_layout_signal_emit(m_layout, "empty,view", "mainui");
+    elm_layout_text_set(m_mostVisitedView, "elm.text.empty", "No visited site");
+    elm_layout_signal_emit(m_mostVisitedView, "empty,view", "mainui");
 }
 
 void MainUI::setEmptyView(bool empty)
@@ -468,29 +541,9 @@ void MainUI::setEmptyView(bool empty)
     if(empty) {
         showNoHistoryLabel();
     } else {
-        elm_layout_signal_emit(m_layout, "not,empty,view", "mainui");
+        elm_layout_signal_emit(m_mostVisitedView, "not,empty,view", "mainui");
     }
 }
 
-void MainUI::focusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info)
-{
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    Elm_Object_Item *item = reinterpret_cast<Elm_Object_Item*>(event_info);
-    elm_object_item_signal_emit( item, "mouse,in", "over2");
-
-    // selected manually
-    elm_gengrid_item_selected_set(item, EINA_TRUE);
-}
-
-void MainUI::unFocusItem(void* /*data*/, Evas_Object* /*obj*/, void* event_info)
-{
-    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
-    Elm_Object_Item *item = reinterpret_cast<Elm_Object_Item*>(event_info);
-    elm_object_item_signal_emit( item, "mouse,out", "over2");
-
-    // unselected manually
-    elm_gengrid_item_selected_set(item, EINA_FALSE);
-}
-
 }
 }
index a5cefb585f4c530e6826ab18bde6e606c0cf1e9f..35a3794b0f67f5a7c99e36aa9fc6a5886cc6d798 100644 (file)
@@ -30,6 +30,8 @@
 namespace tizen_browser{
 namespace base_ui{
 
+//TODO: This class name is not revelant to what this class actually does.
+//Rename this class and file to "QuickAccessUI".
 class BROWSER_EXPORT MainUI
         : public tizen_browser::interfaces::AbstractUIComponent
         , public tizen_browser::core::AbstractService
@@ -42,10 +44,8 @@ public:
     virtual std::string getName();
     void clearHistoryGenlist();
     void clearBookmarkGengrid();
-    void showHistoryGenlist();
-    void showBookmarkGengrid();
-    void showTopButtons();
-    void showBottomButton();
+    void showHistory();
+    void showBookmarks();
     void clearItems();
 
     void addHistoryItem(std::shared_ptr<tizen_browser::services::HistoryItem>);
@@ -59,6 +59,14 @@ public:
     boost::signals2::signal<void (const std::string & )> bookmarkManagerClicked;
 private:
 
+    void createItemClasses();
+
+    Evas_Object* createQuickAccessLayout(Evas_Object *parent);
+    Evas_Object* createMostVisitedView(Evas_Object *parent);
+    Evas_Object* createBookmarksView(Evas_Object *parent);
+    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);
@@ -75,23 +83,24 @@ private:
 private:
     Evas_Object *m_parent;
     Evas_Object *m_layout;
-    Evas_Object *m_layoutTop;
-    Evas_Object *m_layoutBottom;
-    Evas_Object *m_gengrid;
+    Evas_Object *m_bookmarksView;
+    Evas_Object *m_mostVisitedView;
+    Evas_Object *m_bookmarksButton;
+    Evas_Object *m_mostVisitedButton;
+    Evas_Object *m_bookmarkGengrid;
     Evas_Object *m_genListLeft;
     Evas_Object *m_genListCenter;
     Evas_Object *m_genListRight;
+
     Elm_Gengrid_Item_Class * m_big_item_class;
     Elm_Gengrid_Item_Class * m_small_item_class;
     Elm_Gengrid_Item_Class * m_bookmark_item_class;
+
     std::multimap<std::string,Elm_Object_Item*> m_map_history_views;
     std::map<std::string,Elm_Object_Item*> m_map_bookmark_views;
     bool m_gengridSetup;
     std::string edjFilePath;
     void showNoHistoryLabel();
-
-    static void focusItem(void* data, Evas_Object* obj, void* event_info);
-    static void unFocusItem(void* data, Evas_Object* obj, void* event_info);
 };
 
 }
index 129d26635682231a3fbb8850f4929a7428584d70..de779569eb6c5e3ab721745e7ff1dfd16b64af64 100644 (file)
@@ -133,7 +133,7 @@ group { name: "mv_bookmarks";
         }
 
         parts {
-           part { name: "genlistTop_bg";
+           part { name: "layoutTop_bg";
                 type: RECT;
                 mouse_events: 0;
                 description { state: "default" 0.0;
@@ -160,7 +160,7 @@ group { name: "mv_bookmarks";
                     align: 0.0 0.0;
                     fixed: 0 0;
                     rel1 {
-                        to: "genlistTop_bg";
+                        to: "layoutTop_bg";
                         relative: 0 1;
                     }
                     rel2{
@@ -280,7 +280,7 @@ group { name: "mv_bookmarks";
                 }
             }
 
-                part { name: "elm.swallow.genlistTop";
+                part { name: "elm.swallow.layoutTop";
                 type: SWALLOW;
                 description { state: "default" 0.0;
                                        min: 1920 181;
@@ -288,7 +288,7 @@ group { name: "mv_bookmarks";
                    align: 0.0 0.0;
                     fixed: 0 0;
                     rel1 {
-                                                relative: 0 0; to: "genlistTop_bg";
+                        relative: 0 0; to: "layoutTop_bg";
                     }
                     rel2 {
                         relative: 1 1;
@@ -308,7 +308,7 @@ group { name: "mv_bookmarks";
                     min: 1920 14;
                     max: 1920 14;
                     image.normal: "web_shadow.png";
-                    rel1 { relative: 0.0 0.0; to: "elm.swallow.genlistTop"; }
+                    rel1 { relative: 0.0 0.0; to: "elm.swallow.layoutTop"; }
                     rel2 { relative: 1.0 1.0; }
                 }
              }
index 965cc3e1bc6799bf0a74ff5e3c14fcd33b88de8d..f5f18f23d1b845b23c956c5543d6736f36c6aa9e 100644 (file)
@@ -612,7 +612,7 @@ void SimpleUI::onClearHistoryClicked(const std::string&)
     BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
     m_historyService->clearAllHistory();
     m_mainUI->clearHistoryGenlist();
-    m_mainUI->showHistoryGenlist();
+    m_mainUI->showHistory();
 }
 
 void SimpleUI::onMostVisitedClicked(const std::string&)
@@ -621,7 +621,7 @@ void SimpleUI::onMostVisitedClicked(const std::string&)
    m_mainUI->clearHistoryGenlist();
    m_mainUI->clearBookmarkGengrid();
    m_mainUI->addHistoryItems(getHistory());
-   m_mainUI->showHistoryGenlist();
+   m_mainUI->showHistory();
 }
 
 void SimpleUI::onBookmarkButtonClicked(const std::string&)
@@ -630,7 +630,7 @@ void SimpleUI::onBookmarkButtonClicked(const std::string&)
    m_mainUI->clearBookmarkGengrid();
    m_mainUI->clearHistoryGenlist();
    m_mainUI->addBookmarkItems(getBookmarks());
-   m_mainUI->showBookmarkGengrid();
+   m_mainUI->showBookmarks();
 }
 
 void SimpleUI::onBookmarkManagerButtonClicked(const std::string&)
@@ -1066,11 +1066,11 @@ void SimpleUI::hideWebView()
 
 void SimpleUI::hideMainUI()
 {
-       BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
     if(m_mainUI)
-       m_mainUI->hide();
-       m_mainUI = nullptr;
-       m_isHomePageActive = false;
+        m_mainUI->hide();
+    m_mainUI = nullptr;
+    m_isHomePageActive = false;
 }
 
 void SimpleUI::showMainUI()
@@ -1083,8 +1083,7 @@ void SimpleUI::showMainUI()
     hideWebView();
     m_mainUI->show(m_window.get());
     m_mainUI->addHistoryItems(getHistory());
-    m_mainUI->showHistoryGenlist();
-
+    m_mainUI->addBookmarkItems(getBookmarks());
     m_isHomePageActive = true;
 }