Notify logic of popup response from popupper 27/140327/3
authorZofia Abramowska <z.abramowska@samsung.com>
Mon, 24 Jul 2017 12:13:57 +0000 (14:13 +0200)
committerZofia Abramowska <z.abramowska@samsung.com>
Mon, 24 Jul 2017 15:56:33 +0000 (15:56 +0000)
Change-Id: Idf46c6b9f1a761bfdf7af25dcce06f9a13d0f7e0

src/notification-daemon/ui/Answerable.h
src/notification-daemon/ui/Popupper.cpp
src/notification-daemon/ui/Popupper.h

index 114fa2c..e43bef4 100644 (file)
@@ -34,20 +34,17 @@ public:
         ALLOW,
         DENY
     };
-    typedef std::function<void(NResponseType)> AnswerHandler;
 
-    IAnswerable(AnswerHandler handler) : m_handler(handler) {}
-    virtual void process(enum Button) const = 0;
+    IAnswerable() {}
+    virtual NResponseType getAnswer(enum Button) const = 0;
     virtual ~IAnswerable() {}
-protected:
-    AnswerHandler m_handler;
 };
 
 class AnswerablePopupCheck : public IAnswerable {
 public:
-    AnswerablePopupCheck(PopupCheck *popup, AnswerHandler handler)
-        : IAnswerable(handler), m_popup(popup) {}
-    virtual void process(enum Button button) const {
+    AnswerablePopupCheck(PopupCheck *popup)
+        : m_popup(popup) {}
+    virtual NResponseType getAnswer(enum Button button) const {
         NResponseType answer;
         switch (button) {
         case IAnswerable::Button::ALLOW:
@@ -65,7 +62,7 @@ public:
         default:
             answer = NResponseType::Error;
         }
-        m_handler( answer);
+        return answer;
     }
 private:
     PopupCheck *m_popup;
index 97f9e34..bde4a20 100644 (file)
@@ -81,17 +81,21 @@ void Popupper::popupClose()
     evas_object_hide(m_win);
 }
 
+void Popupper::buttonAnswer(IAnswerable::Button button) {
+    NResponseType answer = m_answerablePtr->getAnswer(button);
+    m_popupResponseHandler(answer);
+}
 
 void Popupper::allowPressedCb(void *data, Evas_Object *, void *)
 {
-    IAnswerable *answerable = static_cast<IAnswerable *>(data);
-    answerable->process(IAnswerable::Button::ALLOW);
+    Popupper *popupper = static_cast<Popupper*>(data);
+    popupper->buttonAnswer(IAnswerable::Button::ALLOW);
 }
 
 void Popupper::denyPressedCb(void *data, Evas_Object *, void *)
 {
-    IAnswerable *answerable = static_cast<IAnswerable *>(data);
-    answerable->process(IAnswerable::Button::DENY);
+    Popupper *popupper = static_cast<Popupper*>(data);
+    popupper->buttonAnswer(IAnswerable::Button::DENY);
 }
 
 Eina_Bool Popupper::hwKeyClickedCb(void *data, int type, void *event)
@@ -172,11 +176,11 @@ void Popupper::popupCheck(const std::string &pkgLabel, const std::string &priv)
         return;
     }
 
-    m_answerablePtr.reset(new AnswerablePopupCheck(popup, m_popupResponseHandler));
+    m_answerablePtr.reset(new AnswerablePopupCheck(popup));
     evas_object_smart_callback_add(popup->getAllowButton(), "clicked", &Popupper::allowPressedCb,
-                                   m_answerablePtr.get());
+                                   this);
     evas_object_smart_callback_add(popup->getDenyButton(), "clicked", &Popupper::denyPressedCb,
-                                   m_answerablePtr.get());
+                                   this);
 
     m_elementPtr.reset(popup);
     show();
index c818a0d..067b746 100644 (file)
@@ -60,6 +60,7 @@ private:
     static void denyPressedCb(void *data, Evas_Object *, void *);
     static Eina_Bool hwKeyClickedCb(void *data, int type, void *event);
 
+    void buttonAnswer(IAnswerable::Button button);
     void show();
 
     PopupHandler m_popupResponseHandler;