Added possibility to append View to Navigator without navigating to it. 17/76617/1
authorEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 24 Jun 2016 08:38:37 +0000 (11:38 +0300)
committerEugene Kurzberg <i.kurtsberg@samsung.com>
Fri, 24 Jun 2016 11:55:06 +0000 (14:55 +0300)
Change-Id: I76fbe5e46840a7e8f4e45f6e89f3685b2f532c02
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
contacts-app/src/OperationDefaultController.cpp
lib-apps-common/inc/Ui/Navigator.h
lib-apps-common/src/Ui/Navigator.cpp

index cc305f1..f600cb6 100644 (file)
@@ -52,7 +52,7 @@ void OperationDefaultController::onCreate()
        m_Tabs[TabContacts] = new Contacts::List::ListView();
 
        for (auto &&tab : m_Tabs) {
-               m_Navigator->navigateTo(tab);
+               m_Navigator->appendView(tab);
        }
 }
 
index b0c9f22..4e14818 100644 (file)
@@ -49,6 +49,14 @@ namespace Ui
                size_t getPageCount() const;
 
                /**
+                * @brief Add view to navigator.
+                * @details Adding a view may also result in navigating to it
+                *          if it's a first view or this is a #StackNavigator.
+                * @param[in]   view    View to add
+                */
+               void appendView(View *view);
+
+               /**
                 * @brief Navigate to existing or new View.
                 * @param[in]   view    View to navigate to
                 */
index b6443f5..ab3ea48 100644 (file)
@@ -39,6 +39,27 @@ size_t Navigator::getPageCount() const
        return m_PageCount;
 }
 
+void Navigator::appendView(View *view)
+{
+       if (!view) {
+               return;
+       }
+
+       Navigator *stackNavi = m_StackNavi;
+       Navigator *tabNavi = m_TabNavi;
+       if (getType() == StackNavigator) {
+               stackNavi = this;
+       } else {
+               tabNavi = this;
+       }
+
+       NavigatorPage *page = attachView(view);
+       page->onNavigatorAttached(this, view);
+       view->onNavigatorAttached(stackNavi, tabNavi, page);
+
+       ++m_PageCount;
+}
+
 void Navigator::navigateTo(View *view)
 {
        if (!view) {
@@ -50,21 +71,9 @@ void Navigator::navigateTo(View *view)
                return;
        }
 
-       NavigatorType navigatorType = NavigatorType(getType());
-       if (view->getNavigator(navigatorType) != this) {
-               Navigator *stackNavi = m_StackNavi;
-               Navigator *tabNavi = m_TabNavi;
-               if (navigatorType == StackNavigator) {
-                       stackNavi = this;
-               } else {
-                       tabNavi = this;
-               }
-
-               page = attachView(view);
-               page->onNavigatorAttached(this, view);
-               view->onNavigatorAttached(stackNavi, tabNavi, page);
-
-               ++m_PageCount;
+       if (view->getNavigator(NavigatorType(getType())) != this) {
+               appendView(view);
+               page = view->getPage();
        }
 
        navigateToPage(page);