for(IAppListener *l : m_Listeners)
l->onAppPause();
updateActiveNotifPolicy();
+ getPopupManager().onPause();
}
void App::resume()
void setContent(const TText &text);
Evas_Object *getContent() const;
void setHeight(int height);
- void setAutoDismissBlockClickedFlag(bool value);
+ void setDismissByOutsideTapFlag(bool value);
+ void setDismissByMoreMenuKeyFlag(bool value);
+ bool getDismissByMoreMenuKeyFlag() const;
+ void setDismissByPauseAppFlag(bool value);
+ bool getDismissByPauseAppFlag() const;
Evas_Object *addButton(const TText &text, int buttonId, PopupButtonCb buttonCb = defaultButtonCb, void *userData = nullptr);
void setTitle(const std::string &title);
void setTitle(const TText &title);
Evas_Object *m_pBox;
Evas_Object *m_pContent;
int m_CurrentButtonIndex;
- bool m_BlockClickedDismiss;
+ bool m_OutsideTapDismiss;
+ bool m_MoreKeyDismiss;
+ bool m_PauseAppDismiss;
PopupManager *m_pManager;
};
}
, private IListViewListener
{
public:
- PopupList(Evas_Object *parent);
- PopupList(PopupManager &parent);
+ enum PopupListType
+ {
+ ListPopup, /**< Popup with title >*/
+ MoreMenuPopup /**< Popup without title, hides by more button and pause events >*/
+ };
+ public:
+ PopupList(Evas_Object *parent, PopupListType type = ListPopup);
+ PopupList(PopupManager &parent, PopupListType type= ListPopup);
virtual ~PopupList();
/**
private:
virtual void onListItemSelected(ListItem &listItem);
- void create();
+ void create(PopupListType type);
Evas_Object *createList(Evas_Object *parent);
private:
/**
* @brief Creates popup-list.
+ * @param[in] type Type of list popup. Refer to PopupListType
* @return created popup-list.
*/
- PopupList &getPopupList();
+ PopupList &getPopupList(PopupList::PopupListType type = PopupList::ListPopup);
/**
* @brief Creates popup.
*/
void resetCtxPopup();
+ /**
+ * @brief Process pause event
+ */
+ void onPause();
+
private:
void onHwBackButtonPopupClicked(Evas_Object *obj, void *eventInfo);
void onHwBackButtonCtxPopupClicked(Evas_Object *obj, void *eventInfo);
+ void onHwMoreButtonPopupListClicked(Evas_Object *obj, void *eventInfo);
private:
Popup *m_pPopup;
elm_object_style_set(getEo(), "more/default");
elm_ctxpopup_horizontal_set(getEo(), EINA_FALSE);
- elm_ctxpopup_auto_hide_disabled_set(getEo(), EINA_TRUE);
+ elm_ctxpopup_auto_hide_disabled_set(getEo(), EINA_FALSE);
evas_object_smart_callback_add(getEo(), "dismissed", on_dismissed_cb, this);
setDirectionPriority(ELM_CTXPOPUP_DIRECTION_UP,
: m_pBox(nullptr)
, m_pContent(nullptr)
, m_CurrentButtonIndex(1)
- , m_BlockClickedDismiss(false)
+ , m_OutsideTapDismiss(false)
+ , m_MoreKeyDismiss(false)
+ , m_PauseAppDismiss(false)
, m_pManager(nullptr)
{
create(parent);
}
Popup::Popup(PopupManager &parent)
- : m_pBox(nullptr)
- , m_pContent(nullptr)
- , m_CurrentButtonIndex(1)
- , m_BlockClickedDismiss(false)
- , m_pManager(&parent)
+ : Popup(parent.getWindow())
{
- create(parent.getWindow());
+ m_pManager = &parent;
}
Popup::~Popup()
evas_object_size_hint_min_set(m_pBox, 0, height);
}
-void Popup::setAutoDismissBlockClickedFlag(bool value)
+void Popup::setDismissByOutsideTapFlag(bool value)
+{
+ m_OutsideTapDismiss = value;
+}
+
+void Popup::setDismissByMoreMenuKeyFlag(bool value)
+{
+ m_MoreKeyDismiss = value;
+}
+
+bool Popup::getDismissByMoreMenuKeyFlag() const
+{
+ return m_MoreKeyDismiss;
+}
+
+void Popup::setDismissByPauseAppFlag(bool value)
+{
+ m_PauseAppDismiss = value;
+}
+
+bool Popup::getDismissByPauseAppFlag() const
{
- m_BlockClickedDismiss = value;
+ return m_PauseAppDismiss;
}
Evas_Object *Popup::addButton(const TText &text, int buttonId, PopupButtonCb buttonCb, void *userData)
void Popup::on_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
{
auto *popup = static_cast<Popup*>(data);
- if(popup->m_BlockClickedDismiss)
+ if(popup->m_OutsideTapDismiss)
popup->destroy();
}
using namespace Msg;
-PopupList::PopupList(Evas_Object *parent)
+PopupList::PopupList(Evas_Object *parent, PopupListType type)
: Popup(parent)
, m_pList(nullptr)
{
- create();
+ create(type);
}
-PopupList::PopupList(PopupManager &parent)
+PopupList::PopupList(PopupManager &parent, PopupListType type)
: Popup(parent)
, m_pList(nullptr)
{
- create();
+ create(type);
}
PopupList::~PopupList()
m_pList->appendItem(*new PopupAttachmentListItem(*this, text, path, cb, userData));
}
-void PopupList::create()
+void PopupList::create(PopupListType type)
{
elm_object_style_set(getEo(), "theme_bg");
Evas_Object *list = createList(getHostEvasObject());
Popup::setContent(list);
+
+ //set popup's behavior
+ setDismissByOutsideTapFlag(true);
+ if (type == MoreMenuPopup)
+ {
+ setDismissByMoreMenuKeyFlag(true);
+ setDismissByPauseAppFlag(true);
+ }
}
Evas_Object *PopupList::createList(Evas_Object *parent)
, m_pCtxPopup(nullptr)
, m_Window(window)
{
-
}
Window &PopupManager::getWindow() const
return *m_pPopup;
}
-PopupList &PopupManager::getPopupList()
+PopupList &PopupManager::getPopupList(PopupList::PopupListType type)
{
reset();
- m_pPopup = new PopupList(*this);
+ m_pPopup = new PopupList(*this, type);
eext_object_event_callback_add(*m_pPopup, EEXT_CALLBACK_BACK, SMART_CALLBACK(PopupManager, onHwBackButtonPopupClicked), this);
+ eext_object_event_callback_add(*m_pPopup, EEXT_CALLBACK_MORE, SMART_CALLBACK(PopupManager, onHwMoreButtonPopupListClicked), this);
return *static_cast<PopupList*>(m_pPopup);
}
resetPopup();
}
+void PopupManager::onHwMoreButtonPopupListClicked(Evas_Object *obj, void *eventInfo)
+{
+ if (m_pPopup->getDismissByMoreMenuKeyFlag())
+ resetPopup();
+}
+
void PopupManager::onHwBackButtonCtxPopupClicked(Evas_Object *obj, void *eventInfo)
{
resetCtxPopup();
}
+void PopupManager::onPause()
+{
+ if (m_pPopup && m_pPopup->getDismissByPauseAppFlag())
+ resetPopup();
+ resetCtxPopup();
+}
+
{
PopupList &popupList = m_App.getPopupManager().getPopupList();
popupList.setTitle(title);
- popupList.setAutoDismissBlockClickedFlag(true);
return popupList;
}
content.append(FileUtils::getFileName(file));
}
popup.setContent(content);
- popup.setAutoDismissBlockClickedFlag(true);
popup.show();
m_TooLargePopupShow = true;
}
int maxCount = m_App.getMsgEngine().getSettings().getAttachmentsMaxCount();
std::string content(msgArgs("IDS_MSGF_BODY_MAXIMUM_NUMBER_OF_ATTACHMENTS_HP1SS_EXCEEDED_ONLY_FIRST_P2SS_WILL_BE_ADDED", std::to_string(maxCount).c_str(), std::to_string(willBeAttached).c_str()));
popup.setContent(content);
- popup.setAutoDismissBlockClickedFlag(true);
popup.show();
m_TooMuchAttachedPopupShow = true;
}
int maxCount = m_App.getMsgEngine().getSettings().getAttachmentsMaxCount();
std::string content(msgArgs("IDS_MSGF_POP_MAXIMUM_NUMBER_OF_ATTACHMENTS_HPS_EXCEEDED", std::to_string(maxCount).c_str()));
popup.setContent(content);
- popup.setAutoDismissBlockClickedFlag(true);
popup.show();
m_TooMuchAttachedPopupShow = true;
}
std::string content(msgArgs("IDS_MSG_TPOP_CANT_ADD_MORE_THAN_P1SS_P2SS_OF_ATTACHMENTS_RESIZING_ATTACHMENTS_ING",
std::to_string(maxSize / 1024).c_str(), msg("IDS_MSGF_BODY_MSGSIZE_KB").get()));
popup.setContent(content);
- popup.setAutoDismissBlockClickedFlag(true);
popup.show();
m_ResizingPopupShow = true;
}
{
PopupList &popup = getApp().getPopupManager().getPopupList();
popup.setTitle(title);
- popup.setAutoDismissBlockClickedFlag(true);
return popup;
}
std::string text = msgArgs("IDS_MSG_POP_THE_SECURITY_POLICY_PREVENTS_SENDING_MESSAGES_TO_THE_FOLLOWING_RECIPIENTS_C_NPS", addresses.c_str());
auto &popupMngr = getApp().getPopupManager();
Popup &popup = popupMngr.getPopup();
- popup.setAutoDismissBlockClickedFlag(true);
popup.addButton(msgt("IDS_MSG_BUTTON_OK_ABB"), Popup::OkButtonId);
popup.setContent(text);
popup.show();
void Conversation::showMainPopup()
{
- PopupList &popup = getApp().getPopupManager().getPopupList();
+ PopupList &popup = getApp().getPopupManager().getPopupList(PopupList::MoreMenuPopup);
popup.appendItem(msg("IDS_MSG_OPT_DELETE"), POPUPLIST_ITEM_PRESSED_CB(Conversation, onDeleteItemPressed), this);
popup.appendItem(msg("IDS_MSG_TMBODY_ADD_OR_REMOVE_RECIPIENTS"), POPUPLIST_ITEM_PRESSED_CB(Conversation, onAddRecipientsItemPressed), this);
popup.show();
void MsgThread::showMainPopup()
{
- PopupList &popup = getApp().getPopupManager().getPopupList();
+ PopupList &popup = getApp().getPopupManager().getPopupList(PopupList::MoreMenuPopup);
if (!m_pThreadList->isEmpty())
{
popup.appendItem(msg("IDS_MSG_OPT_DELETE"), POPUPLIST_ITEM_PRESSED_CB(MsgThread, onDeleteItemPressed), this);
{
if(!m_pList->isEmpty())
{
- PopupList &listPopup = getApp().getPopupManager().getPopupList();
+ PopupList &listPopup = getApp().getPopupManager().getPopupList(PopupList::MoreMenuPopup);
listPopup.appendItem(msg("IDS_MSG_OPT_COPY_TO_DEVICE_ABB"), POPUPLIST_ITEM_PRESSED_CB(MsgOnSimCard, onCopyToDeviceItemPressed), this);
listPopup.appendItem(msg("IDS_MSG_OPT_DELETE"), POPUPLIST_ITEM_PRESSED_CB(MsgOnSimCard, onDeleteItemPressed), this);
listPopup.show();
{
PopupList &popup = getApp().getPopupManager().getPopupList();
popup.setTitle(address);
- popup.setAutoDismissBlockClickedFlag(true);
if(MsgUtils::isValidNumber(address))
popup.appendItem(msg("IDS_MSG_OPT_MAKE_VOICE_CALL"), POPUPLIST_ITEM_PRESSED_CB(Viewer, onMakeVoiceItemPressed), this);
popup.appendItem(msg("IDS_MSG_OPT_CREATE_CONTACT_ABB"), POPUPLIST_ITEM_PRESSED_CB(Viewer, onCreateContactItemPressed), this);
{
m_pSmilPlayer->stop();
- PopupList &popup = getApp().getPopupManager().getPopupList();
- popup.setAutoDismissBlockClickedFlag(true);
+ PopupList &popup = getApp().getPopupManager().getPopupList(PopupList::MoreMenuPopup);
popup.appendItem(msg("IDS_MSG_OPT_DELETE"), POPUPLIST_ITEM_PRESSED_CB(Viewer, onDeleteItemPressed), this);
if(!m_Msg->getText().empty())
{
item.getParent().destroy();
Popup &popup = getApp().getPopupManager().getPopup();
- popup.setAutoDismissBlockClickedFlag(true);
popup.addButton(msgt("IDS_MSG_BUTTON_CANCEL_ABB"), Popup::CancelButtonId, POPUP_BUTTON_CB(Viewer, onCancelButtonClicked), this);
popup.addButton(msgt("IDS_MSG_BUTTON_DELETE_ABB4"), Popup::OkButtonId, POPUP_BUTTON_CB(Viewer, onDeleteButtonClicked), this);
popup.setTitle(msgt("IDS_MSG_HEADER_DELETE"));