TizenRefApp-8526 [Gallery] Remove unnecessary item realize on PreviewPage 18/130218/2
authorIgor Nazarov <i.nazarov@samsung.com>
Fri, 19 May 2017 12:20:46 +0000 (15:20 +0300)
committerIgor Nazarov <i.nazarov@samsung.com>
Fri, 19 May 2017 13:36:53 +0000 (16:36 +0300)
opening

Change-Id: I6766922cd05ed38b1fd5be8d2160258dda6e1fb7

inc/presenters/PreviewPage.h
inc/view/ImageGrid.h
src/presenters/PreviewPage.cpp
src/view/ImageGrid.cpp
src/view/ImageViewer.cpp

index 286fa80d4cb26357cc28a396d605dab2823f36cf..c07f089d3f058c7d56b8692b8d1984affea2925d 100644 (file)
@@ -59,7 +59,7 @@ namespace gallery {
                                bool selectModeStartup);
                virtual ~PreviewPage();
 
-               ucl::Result prepare();
+               ucl::Result prepare(int startItemIndex);
                void showItem(int itemIndex);
                void selectItem(int itemIndex);
                int getSafeItemIndex(int itemIndex) const;
index e07c6018c2d3dc71b536e1cc4cdd36718cf1f472..8fac6c334334f9f7703d34a8b00ad8bd109fd634 100644 (file)
@@ -118,6 +118,8 @@ namespace gallery {
                template <class SHOW_FUNC>
                ucl::Result showItem(int itemIndex, SHOW_FUNC &&showFunc);
 
+               void forceBoxSizeCalculate();
+
                void addUnrealizeLock();
                void removeUnrealizeLock();
 
index 9a8faca4f73e2968e6d07a0ad18e0631c99bdebc..e58c949996985218925dcfd16a3aa85361a47d57 100644 (file)
@@ -111,11 +111,9 @@ namespace gallery {
                auto result = makeShared<PreviewPage>(
                                m_navi, onExitRequest, m_album, m_selectModeStartup);
 
-               FAIL_RETURN_VALUE(result->prepare(), {}, "result->prepare() failed!");
+               FAIL_RETURN_VALUE(result->prepare(m_startItemIndex), {},
+                               "result->prepare() failed!");
 
-               if (m_startItemIndex > 0) {
-                       result->showItem(m_startItemIndex);
-               }
                if (m_selectModeStartup && m_autoSelectStartItem) {
                        result->selectItem(m_startItemIndex);
                }
@@ -281,7 +279,7 @@ namespace gallery {
                return getSafeItemIndex(m_imageGrid->getScrolledToItemIndex());
        }
 
-       Result PreviewPage::prepare()
+       Result PreviewPage::prepare(const int startItemIndex)
        {
                m_content = PageContent::Builder().
                                setFlags(PageContent::FLAG_BOTTOM_BUTTON |
@@ -300,6 +298,7 @@ namespace gallery {
                if (!m_imageGrid) {
                        LOG_RETURN(RES_FAIL, "ImageGrid::build() failed!");
                }
+               ImageGrid::Unrealizer u(*m_imageGrid);
 
                m_content->set(*m_imageGrid);
 
@@ -344,6 +343,9 @@ namespace gallery {
                if (m_selectModeStartup) {
                        switchToSelectMode();
                }
+               if (startItemIndex > 0) {
+                       showItem(startItemIndex);
+               }
 
                return RES_OK;
        }
index 6b2989b0156bbae69ff935b4d0f75ce325d456e0..2cbcb7f92715ad2d225d17bf3877f18fe3c8500c 100644 (file)
@@ -936,6 +936,7 @@ namespace gallery {
                if (m_animator) {
                        LOG_RETURN(RES_ILLEGAL_STATE, "Transition is in progress.");
                }
+               forceBoxSizeCalculate();
                return showItem(itemIndex, elm_scroller_region_show);
        }
 
@@ -963,6 +964,16 @@ namespace gallery {
                        });
        }
 
+       void ImageGrid::forceBoxSizeCalculate()
+       {
+               for (int i = 0; i < m_slotCount; ++i) {
+                       if (((m_beginSlotIndex + i) & 1) == 0) {
+                               m_slots[i]->getLayout().calculate();
+                       }
+               }
+               m_box.calculate();
+       }
+
        void ImageGrid::activateRotary()
        {
                m_isRotaryActive = true;
index 5d2c51dc79e898d1057771d2f314a30277c19a6b..17abcc2ea6bf2c9775413cdc7d16a3de9ca27c08 100644 (file)
@@ -208,7 +208,7 @@ namespace gallery {
                m_grid.setMin(m_gridW, m_gridH);
                m_grid.setMax(m_gridW, m_gridH);
 
-               evas_object_smart_calculate(m_layout);
+               m_layout.calculate();
        }
 
        void ImageViewer::updateScrollOffset()