for (int i = 0; i < length; ++i) {
m_items.emplace_back(makeShared<Item>(imageGrid, m_layout));
- m_layout.setContent(
- EdjePart(impl::SLOT_PART_FMT.format(i)),
+ const auto partName = impl::SLOT_PART_FMT.format(i);
+ m_layout.setContent(EdjePart(partName.c_str()),
m_items.back()->getWidget());
}
}
if (!m_items[itemOffset]->setSelected(selected)) {
return;
}
- const auto aSignal = EdjeSignal(selected ?
+ const auto signalName = (selected ?
impl::SIGNAL_SELECT_ITEM_FMT.format(itemOffset) :
impl::SIGNAL_UNSELECT_ITEM_FMT.format(itemOffset));
- m_layout.emitSignal(aSignal);
+ m_layout.emitSignal(EdjeSignal(signalName.c_str()));
}
private:
m_eventsLock(0),
m_animator(nullptr),
+ m_scrollLockIndex(0),
m_isInSelectMode(selectModeStartup),
m_isRotaryActive(false)
{
return RES_FAIL;
}
+ m_scrollLockIndex = (m_scrollOffset / m_slotSize);
+
m_isInSelectMode = enabled;
elm_object_scroll_freeze_push(*m_scroller);
EVAS_CALLBACK_RESIZE, EO_CALLBACK_PRIORITY_AFTER,
CALLBACK_A(ImageGrid::onBoxResize), this);
- elm_object_signal_callback_add(
- m_slots[m_beginSlotIndex & 1]->getLayout(),
+ auto &slotlayout = m_slots[m_beginSlotIndex & 1]->getLayout();
+
+ slotlayout.addEventHandler(WidgetEvent::CHANGED_SIZE_HINTS,
+ WEAK_DELEGATE(ImageGrid::onSlotResize, asWeak(*this)));
+
+ elm_object_signal_callback_add(slotlayout,
impl::SIGNAL_TRANSITION_FINISHED.name, "",
CALLBACK_A(ImageGrid::onTransitonFinished), this);
evas_object_event_callback_del_full(m_box, EVAS_CALLBACK_RESIZE,
CALLBACK_A(ImageGrid::onBoxResize), this);
- elm_object_signal_callback_del(
- m_slots[m_beginSlotIndex & 1]->getLayout(),
+ auto &slotlayout = m_slots[m_beginSlotIndex & 1]->getLayout();
+
+ slotlayout.delEventHandler(WidgetEvent::CHANGED_SIZE_HINTS,
+ WEAK_DELEGATE(ImageGrid::onSlotResize, asWeak(*this)));
+
+ elm_object_signal_callback_del(slotlayout,
"gallery,transition,finished", "",
CALLBACK_A(ImageGrid::onTransitonFinished));
}
}
}
- void ImageGrid::onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo)
+ void ImageGrid::onSlotResize(Widget &widget, void *eventInfo)
{
- const int scrollLockIndex = (m_scrollOffset / m_slotSize);
-
if (updateSlotSize()) {
-
- m_scrollOffset = (scrollLockIndex * m_slotSize);
- if (m_info.isHorizontal) {
- elm_scroller_region_show(*m_scroller,
- m_scrollOffset, 0, m_scrollerSize, 1);
- } else {
- elm_scroller_region_show(*m_scroller,
- 0, m_scrollOffset, 1, m_scrollerSize);
- }
-
updatePadSizes();
updateScrollBias();
updateRectMins();
}
}
+ void ImageGrid::onBoxResize(Evas *e, Evas_Object *obj, void *eventInfo)
+ {
+ m_scrollOffset = (m_scrollLockIndex * m_slotSize);
+ if (m_info.isHorizontal) {
+ elm_scroller_region_show(*m_scroller,
+ m_scrollOffset, 0, m_scrollerSize, 1);
+ } else {
+ elm_scroller_region_show(*m_scroller,
+ 0, m_scrollOffset, 1, m_scrollerSize);
+ }
+ }
+
void ImageGrid::update()
{
Unrealizer(*this);