#include "view/IImageGridListener.h"
+#include "AtspiHighlightHelper.h"
#include "IMoreOptionsListener.h"
#include "ISelectModeListener.h"
bool onAlertEvent(AlertDialog &dialog, int event);
void onJobComplete();
+ Elm_Interface_Atspi_Accessible *onAtspiHighlight(
+ ucl::Widget &widget, Elm_Atspi_Relation_Type flowRelation);
+
// Presenter //
virtual void onActivateBy(const DeactivatorInfo &info) final override;
virtual void onItemEvent(int itemIndex,
int event, int x, int y) final override;
virtual void onTransitionFinished() final override;
+ virtual Elm_Interface_Atspi_Accessible *onAccessObjectRequest(
+ bool isFlowsTo) final override;
// IMoreOptionsListener //
ImageGridSRef m_imageGrid;
std::vector<ItemUPtr> m_items;
IJobSRef m_job;
+
PageContentSRef m_content;
MoreOptionsPresenterSRef m_more;
SelectModePresenterSRef m_smp;
AlertDialogWRef m_alert;
ProcessingPresenterSRef m_processing;
+ AtspiHighlightHelperSRef m_atspiHelper;
+
PageWRef m_page;
int m_selectCount;
bool m_isInSelectMode;
}),
"Page::prepare() failed!");
+ m_atspiHelper = AtspiHighlightHelper::newInstance(getWindow());
+ if (!m_atspiHelper) {
+ LOG_RETURN(RES_FAIL, "AtspiHighlightHelper::newInstance() failed!");
+ }
+
m_imageGrid->setItemCount(m_items.size());
m_album->addChangeHandler(WEAK_DELEGATE(
m_more->setListener(asWeakThis<IMoreOptionsListener>(this));
m_smp->setListener(asWeakThis<ISelectModeListener>(this));
+ m_atspiHelper->setEventHandler(WEAK_DELEGATE(
+ PreviewPage::onAtspiHighlight, asWeak(*this)));
+ m_atspiHelper->registerWidget(m_smp->getSelectButton());
+ m_atspiHelper->registerWidget(m_smp->getBottomButton());
+
if (m_selectModeStartup) {
switchToSelectMode();
}
impl::PAGE_SCROLL_IN_FRICTION);
elm_config_scroll_bring_in_scroll_friction_set(
impl::BRING_IN_SCROLL_FRICTION);
+ }
+ if (!info.isBroadcast) {
m_more->activateBy(info.deactivator);
+ if (m_atspiHelper) {
+ m_atspiHelper->activateBy(info.deactivator);
+ }
}
m_smp->activateBy(info.deactivator);
void PreviewPage::onDeactivateBy(const DeactivatorInfo &info)
{
- if (info.deactivator == &getNaviframe()) {
+ if (!info.isBroadcast) {
m_more->deactivateBy(info.deactivator);
+ m_atspiHelper->deactivateBy(info.deactivator);
}
m_smp->deactivateBy(info.deactivator);
activateBy(m_imageGrid.get());
}
+ Elm_Interface_Atspi_Accessible *PreviewPage::onAccessObjectRequest(
+ bool isFlowsTo)
+ {
+ if (m_isInSelectMode) {
+ return (isFlowsTo ?
+ m_smp->getBottomButton() :
+ m_smp->getSelectButton());
+ }
+ return nullptr;
+ }
+
+ Elm_Interface_Atspi_Accessible *PreviewPage::onAtspiHighlight(
+ Widget &widget, Elm_Atspi_Relation_Type flowRelation)
+ {
+ if (widget == m_smp->getSelectButton()) {
+ if (flowRelation == ELM_ATSPI_RELATION_FLOWS_TO) {
+ return m_imageGrid->getAccessObject(true);
+ }
+ } else if (widget == m_smp->getBottomButton()) {
+ if (flowRelation == ELM_ATSPI_RELATION_FLOWS_FROM) {
+ return m_imageGrid->getAccessObject(false);
+ }
+ } else if (widget == getWindow()) {
+ return (m_isInSelectMode ?
+ m_smp->getSelectButton() :
+ m_imageGrid->getAccessObject(true));
+ } else {
+ LOG_RETURN_VALUE(RES_FAIL, nullptr, "Unknown object!");
+ }
+ return widget.getEo();
+ }
+
void PreviewPage::onMoreOptionClicked(MoreOptionsPresenter &sender,
const MoreOption &option)
{