#include "common.h"
-namespace gallery { namespace { namespace impl {
-
- enum {
- MORE_OPTION_ID_SAVE
- };
-}}}
-
namespace gallery {
using ucl::NaviItem;
ViewerPage::~ViewerPage()
{
- if (m_more) {
- m_more->setOpened(false);
- }
}
Result ViewerPage::doPrepare(const int imageLoadSize,
const bool isImageLoadSizeFull, NaviItem &item)
{
const int mediaFlags = m_media->getFlags();
- const bool canSave = (mediaFlags & MediaItem::FLAG_SAVE);
const bool hasThumb = (mediaFlags & MediaItem::FLAG_THUMBNAIL);
const bool useThumb = (hasThumb && (imageLoadSize < 0));
const bool forceLoad = (!useThumb && isImageLoadSizeFull);
LOG_RETURN(RES_FAIL, "ImageViewer::build() failed!");
}
- ElmWidget *rootWidget = m_imageViewer.get();
-
- if (canSave) {
- m_content = PageContent::Builder().
- setFlags(PageContent::FLAG_MORE_OPTIONS).
- build(getNaviframe());
- if (!m_content) {
- LOG_RETURN(RES_FAIL, "PageContent::build() failed!");
- }
- setDeactivatorSink(m_content);
-
- rootWidget = m_content.get();
- m_content->set(*m_imageViewer);
-
- m_more = MoreOptionsPresenter::Builder().
- setParentWidget(m_content).
- addOption({impl::MORE_OPTION_ID_SAVE,
- STR_SAVE_TO_GEAR, nullptr,
- getImageTheme(ICON_MORE_OPT_SAVE)}).
- build(*this);
- if (!m_more) {
- LOG_RETURN(RES_FAIL, "MoreOptionsPresenter::build() failed!");
- }
-
- m_content->set(m_more->getWidget(),
- PageContent::Part::MORE_OPTIONS);
-
- m_more->setListener(asWeakThis<
- MoreOptionsPresenter::IListener>(this));
- }
-
if (useThumb) {
FAIL_RETURN(m_media->getThumbnailPath(WEAK_DELEGATE(
ViewerPage::onThumbnail, asWeak(*this))),
const auto topItem = getNaviframe().getTopItem();
if (topItem) {
item = getNaviframe().insertAfter(topItem,
- *rootWidget, NAVIFRAME_NO_CLIP);
+ *m_imageViewer, NAVIFRAME_NO_CLIP);
} else {
- item = getNaviframe().push(*rootWidget, NAVIFRAME_NO_CLIP);
+ item = getNaviframe().push(*m_imageViewer, NAVIFRAME_NO_CLIP);
}
if (!item) {
LOG_RETURN(RES_FAIL, "Naviframe::push() failed!");
m_imageViewer->zoomOut();
}
}
-
- void ViewerPage::onMoreOptionClicked(MoreOptionsPresenter &sender,
- const MoreOptionsPresenter::Option &option)
- {
- sender.setOpened(false);
-
- if (m_job) {
- LOG_RETURN_VOID(RES_ILLEGAL_STATE, "m_job is not NULL");
- }
-
- m_job = MediaItem::SaverBuilder().
- setItem(m_media).
- build(WEAK_DELEGATE(ViewerPage::onJobComplete, asWeak(*this)));
- if (!m_job) {
- LOG_RETURN_VOID(RES_FAIL,
- "MediaItem::SaverBuilder::build() failed!");
- }
-
- m_processing = ProcessingPresenter::Builder().
- setProcessingText(STR_SAVING).
- build(*m_content);
- }
-
- void ViewerPage::onJobComplete()
- {
- if (m_processing) {
- if (isGood(m_job->getResult())) {
- m_processing->complete(STR_SAVED,
- ProcessingPresenter::IconType::CHECK);
- } else {
- m_processing->complete(STR_FAILED);
- }
- m_processing.reset();
- }
-
- m_job.reset();
- }
}
#include "gallery/model/MediaItem.h"
-#include "gallery/view/PageContent.h"
#include "gallery/view/ImageViewer.h"
#include "gallery/view/TouchParser.h"
#include "gallery/presenters/base/Page.h"
-#include "gallery/presenters/misc/MoreOptionsPresenter.h"
-#include "gallery/presenters/misc/ProcessingPresenter.h"
-
namespace gallery {
UCL_DECLARE_REF_ALIASES(ViewerPage);
- class ViewerPage final : public Page,
- private MoreOptionsPresenter::IListener {
+ class ViewerPage final : public Page {
public:
class Builder final {
public:
void onZoomEnd(ucl::Widget &widget, void *eventInfo);
void onDoubleTap(int x, int y);
- void onJobComplete();
-
// Page //
virtual void onBackKey() final override;
- // MoreOptionsPresenter::IListener //
-
- virtual void onMoreOptionClicked(MoreOptionsPresenter &sender,
- const MoreOptionsPresenter::Option &option) final override;
-
private:
const MediaItemSRef m_media;
const bool m_exitOnZoomOut;
ImageViewerSRef m_imageViewer;
TouchParserSRef m_touchParser;
IJobSRef m_job;
- PageContentSRef m_content;
- MoreOptionsPresenterSRef m_more;
- ProcessingPresenterSRef m_processing;
};
}