class BasePopup
: public View {
+ friend class PopupManager;
+
public:
BasePopup(Evas_Object *popup);
virtual ~BasePopup();
- void destroy();
+ void destroy(bool anim = true);
void setDismissByOutsideTapFlag(bool value);
bool getDismissByOutsideTapFlag() const;
protected:
static Evas_Object *getWindow();
+ virtual void dismiss();
private:
bool m_OutsideTapDismiss;
Popup();
virtual ~Popup();
+
void show(bool deferred = true);
void setTitle(const TText &title);
void setTimeOut(double timeout = defaultTimeOut);
protected:
Evas_Object *addButton(const char *part, PopupButtonCb buttonCb, void *userData);
Evas_Object *addButton(const TText &text, const char *iconName, const char *part, PopupButtonCb buttonCb, void *userData);
-
+ void dismiss() override;
private:
Evas_Object *createIcon(Evas_Object *) const;
static void on_button_clicked(void *data, Evas_Object *obj, void *event_info);
static void on_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
static void on_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+ static void on_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
private:
Ecore_Idler *m_pShowIdler;
*/
Window &getWindow() const;
- void pop(void *id = nullptr);
- void pop(BasePopup *popup);
+ void pop(void *id = nullptr, bool anim = true);
+ void pop(BasePopup *popup, bool anim = true);
void push(BasePopup &popup, void *id = nullptr);
BasePopup *getTop() const;
private:
void onHwBackButtonClicked(Evas_Object *obj, void *eventInfo);
- void destroyPopup();
+ void destroyPopup(bool anim);
private:
BasePopup *m_pPopup;
void addSmartCb(const char *event, Evas_Smart_Cb func, const void *data);
void addSignalCb(const char *emission, const char *source, Edje_Signal_Cb func, void *data);
void addHwButtonEvent(Eext_Callback_Type cbType, Eext_Event_Cb cb, void *data);
+ void HwButtonEvent(Eext_Callback_Type cbType, Eext_Event_Cb cb, void *data);
static void addHwButtonEvent(Evas_Object *obj, Eext_Callback_Type cbType, Eext_Event_Cb cb, void *data);
static void addEventCb(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data);
{
}
-void BasePopup::destroy()
+void BasePopup::destroy(bool anim)
{
- App::getInst().getPopupManager().pop(this);
+ App::getInst().getPopupManager().pop(this, anim);
+}
+
+void BasePopup::dismiss()
+{
+ View::destroy();
}
Evas_Object *BasePopup::getWindow()
{
addSmartCb("block,clicked", on_popup_block_clicked_cb, this);
addSmartCb("timeout", on_timeout_cb, this);
+ addSmartCb("dismissed", on_dismissed_cb, this);
elm_popup_orient_set(getEo(), ELM_POPUP_ORIENT_CENTER);
expand();
}
setText(title, titlePart);
}
+void Popup::dismiss()
+{
+ elm_popup_dismiss(getEo());
+}
+
void Popup::show(bool deferred)
{
if (!deferred) {
void Popup::on_timeout_cb(void *data, Evas_Object *obj, void *event_info)
{
+ MSG_LOG("");
auto *popup = static_cast<Popup*>(data);
popup->destroy();
}
+void Popup::on_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MSG_LOG("");
+ auto *popup = static_cast<Popup*>(data);
+ popup->View::destroy();
+}
+
void Popup::defaultButtonCb(Popup &popup, void *userData)
{
popup.destroy();
{
}
-void PopupManager::pop(void *id)
+void PopupManager::pop(void *id, bool anim)
{
if (!id || (id == m_pPopupId))
- destroyPopup();
+ destroyPopup(anim);
}
-void PopupManager::pop(BasePopup *popup)
+void PopupManager::pop(BasePopup *popup, bool anim)
{
if (!popup || (popup == m_pPopup))
- destroyPopup();
+ destroyPopup(anim);
}
-void PopupManager::destroyPopup()
+void PopupManager::destroyPopup(bool anim)
{
if (m_pPopup) {
- m_pPopup->View::destroy();
+ anim ? m_pPopup->dismiss() : m_pPopup->destroy();
m_pPopup = nullptr;
}
m_pPopupId = nullptr;
void PopupManager::onHwBackButtonClicked(Evas_Object *obj, void *eventInfo)
{
- if (m_pPopup && m_pPopup->getDismissByBackButtonFlag())
+ MSG_LOG("");
+ if (m_pPopup &&
+ m_pPopup->getEo() == obj &&
+ m_pPopup->getDismissByBackButtonFlag())
pop();
}
{
setStyle("toast/circle");
setTimeOut(timeout);
+ elm_popup_orient_set(getEo(), ELM_POPUP_ORIENT_BOTTOM);
+ evas_object_size_hint_weight_set(getEo(), EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
}
ToastPopup::~ToastPopup()
void setNormalMode();
void showSelectPopup();
+ void showDelPopup();
void hideSelectPopup();
void navigateToConvFrame(ThreadId id);
void navigateToComposeFrame();
#include "Popup.h"
#include "SelectCtxPopup.h"
#include "StandardPopup.h"
-#include "ToastPopup.h"
#include "IconTextPopup.h"
#include "MsgThreadFrame.h"
#include "Callback.h"
m_pSelectPopup->destroy();
}
+void MsgThreadFrame::showDelPopup()
+{
+ auto *popup = new IconTextPopup;
+ popup->setIcon(IconTextPopup::CheckIcon);
+ popup->setText(msgt("WDS_ALM_TPOP_DELETED_ABB"));
+ popup->setTimeOut();
+ popup->show();
+}
+
void MsgThreadFrame::navigateToConvFrame(ThreadId id)
{
auto *frame = new ConvFrame(getParent());
void MsgThreadFrame::onDelButtonClicked(Evas_Object *obj, void *event)
{
MSG_LOG("");
- if (m_pThreadList->deleteCheckedItems()) {
- auto *popup = new IconTextPopup;
- popup->setIcon(IconTextPopup::CheckIcon);
- popup->setText(msgt("WDS_ALM_TPOP_DELETED_ABB"));
- popup->setTimeOut();
- popup->show();
- }
+ if (m_pThreadList->deleteCheckedItems())
+ showDelPopup();
setNormalMode();
}