TizenRefApp-8459 [Gallery] Implement launch select mode from ThumbnailPage 60/127760/2
authorIgor Nazarov <i.nazarov@samsung.com>
Fri, 28 Apr 2017 17:18:29 +0000 (20:18 +0300)
committerIgor Nazarov <i.nazarov@samsung.com>
Fri, 28 Apr 2017 17:32:53 +0000 (20:32 +0300)
- Implemented launch of select mode from ThumbnailPage;
- Fixed bug in ImageGrid when start in select mode after long press.

Change-Id: Ib354d8c67a8f5ebaad690cf8cb01894cf0d8b872

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

index 925cc9e4f00a7ec84a603d25eab7e97d18bc0b75..cbf889e9aed636e453d5606af246ba5736ea92cc 100644 (file)
@@ -48,6 +48,8 @@ namespace gallery {
 
                void reload();
 
+               int getSafeItemIndex(int itemIndex) const;
+
                void onAlbumChanged();
                bool onEachMedia(MediaItemSRef &&media);
 
index 5eb1e58c7111a2dfecf0214c1a89c5b84a648c4e..5a25a595462627f84f82e3379443d497f14f70ac 100644 (file)
@@ -276,6 +276,8 @@ namespace gallery {
 
        Result PreviewPage::prepare()
        {
+               ILOG("m_selectModeStartup: %d", m_selectModeStartup);
+
                m_content = PageContent::Builder().
                                setFlags(PageContent::FLAG_BOTTOM_BUTTON |
                                                PageContent::FLAG_SELECT_BUTTON |
@@ -372,7 +374,9 @@ namespace gallery {
 
        void PreviewPage::onAlbumChanged()
        {
-               if (!isEmpty(m_album)) {
+               if (m_selectModeStartup) {
+                       requestExit();
+               } else if (!isEmpty(m_album)) {
                        reload();
                }
        }
@@ -417,7 +421,7 @@ namespace gallery {
 
        void PreviewPage::onBackKey()
        {
-               if (m_isInSelectMode) {
+               if (m_isInSelectMode && !m_selectModeStartup) {
                        switchToNormalMode();
                        return;
                }
index 2b4c456994888a156eef89ed1ff5232ffd2d6aa1..20af9fbe2bdef6801aa2bd89ae3f138dfb452e96 100644 (file)
@@ -234,13 +234,26 @@ namespace gallery {
        void ThumbnailPage::onItemEvent(const int itemIndex,
                        const int event, const int x, const int y)
        {
-               if (!isActive() || (event != ImageGrid::ITEM_EVENT_CLICK)) {
+               if (!isActive()) {
+                       return;
+               }
+
+               bool selectModeStartup = false;
+
+               switch (event) {
+               case ImageGrid::ITEM_EVENT_CLICK:
+                       break;
+               case ImageGrid::ITEM_EVENT_TAP_AND_HOLD:
+                       selectModeStartup = true;
+                       break;
+               default:
                        return;
                }
 
                m_page = PreviewPage::Builder().
                                setNaviframe(asShared(getNaviframe())).
                                setAlbum(m_album).
+                               setSelectModeStartup(selectModeStartup).
                                setStartItemIndex(itemIndex).
                                build(DELEGATE(ThumbnailPage::onPageExitRequest, this));
        }
@@ -249,9 +262,21 @@ namespace gallery {
        {
                if (const PreviewPageSRef previewPage =
                                dynamicRefCast<PreviewPage>(m_page)) {
-                       m_imageGrid->scrollToItem(previewPage->getCurrentItemIndex());
+                       m_imageGrid->scrollToItem(getSafeItemIndex(
+                                       previewPage->getCurrentItemIndex()));
                }
                m_page.reset();
                popTo();
        }
+
+       int ThumbnailPage::getSafeItemIndex(const int itemIndex) const
+       {
+               if (itemIndex < 0) {
+                       return 0;
+               }
+               if (itemIndex >= static_cast<int>(m_mediaItems.size())) {
+                       return (m_mediaItems.size() - 1);
+               }
+               return itemIndex;
+       }
 }
index b60d5b9d95c094d094f4bdb1b929e0e1e65b5e35..f1c0df4cdc48bf799e482641aa4e54051b11942b 100644 (file)
@@ -435,6 +435,8 @@ namespace gallery {
                                        ELOG("setTheme() failed!");
                                } else if (imageGrid.m_isInSelectMode) {
                                        m_layout.emit(impl::SIGNAL_FORCE_SELECT_MODE);
+                                       edje_object_message_signal_process(
+                                                       elm_layout_edje_get(m_layout));
                                }
                        }
                        fill(m_layout);
@@ -1025,8 +1027,6 @@ namespace gallery {
 
                        if (m_slotSize == 0) {
                                UCL_ASSERT(!isOdd, "Must be even!");
-                               edje_object_message_signal_process(
-                                               elm_layout_edje_get(slot->getLayout()));
                                slot->getLayout().calculate();
                                setSlotSize(slot->getSize());
                        }