void reload();
+ int getSafeItemIndex(int itemIndex) const;
+
void onAlbumChanged();
bool onEachMedia(MediaItemSRef &&media);
Result PreviewPage::prepare()
{
+ ILOG("m_selectModeStartup: %d", m_selectModeStartup);
+
m_content = PageContent::Builder().
setFlags(PageContent::FLAG_BOTTOM_BUTTON |
PageContent::FLAG_SELECT_BUTTON |
void PreviewPage::onAlbumChanged()
{
- if (!isEmpty(m_album)) {
+ if (m_selectModeStartup) {
+ requestExit();
+ } else if (!isEmpty(m_album)) {
reload();
}
}
void PreviewPage::onBackKey()
{
- if (m_isInSelectMode) {
+ if (m_isInSelectMode && !m_selectModeStartup) {
switchToNormalMode();
return;
}
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));
}
{
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;
+ }
}
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);
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());
}