tizen 2.4 release
[framework/web/wrt-plugins-common.git] / src / wrt-popup / wrt / popup-bin / YesNoCheckPopup.cpp
1 /*
2  * File:   YesNoCheckPopup.cpp
3  * Author: pciezkowski
4  *
5  * Created on December 12, 2012, 9:23 AM
6  */
7
8 #include "YesNoCheckPopup.h"
9 #include <memory>
10 #include <string.h>
11 #include "popup_manager.h"
12 #include "PopupSerializer.h"
13
14 namespace Wrt {
15 namespace Popup {
16
17 YesNoCheckPopup::YesNoCheckPopup():
18         m_parent(NULL)
19 {}
20
21 YesNoCheckPopup::~YesNoCheckPopup()
22 {}
23
24 void YesNoCheckPopup::show(DPL::BinaryQueueAutoPtr data, WrtPopup* parent)
25 {
26     LogDebug("Entered");
27     m_parent = parent;
28     Renderer::CtrlPopupPtr popup = createPopup(data);
29     ListenForAnswer(popup);
30
31     Renderer::ShowPopupEventShort event(popup,
32                                         MakeAnswerCallback(
33                                             this,
34                                             &YesNoCheckPopup::responseCallback));
35
36     CONTROLLER_POST_EVENT(Renderer::PopupController,
37                           event);
38
39     LogDebug("Exited");
40     return;
41 }
42
43 Renderer::CtrlPopupPtr YesNoCheckPopup::createPopup(
44     DPL::BinaryQueueAutoPtr data)
45 {
46     std::string title = PopupSerializer::getStringArg(*data);
47     std::string message = PopupSerializer::getStringArg(*data);
48     std::string checkboxLabel = PopupSerializer::getStringArg(*data);
49     Assert(data->Empty());
50     LogDebug("title: " << title << " message: " << message << " checkbox: " <<
51              checkboxLabel);
52     Renderer::CtrlPopupPtr popup =
53         Renderer::PopupControllerSingleton::Instance().CreatePopup();
54
55     popup->SetTitle(title);
56     popup->Append(new Renderer::PopupObject::Label(message));
57     popup->Append(new Renderer::PopupObject::Check(checkboxLabel));
58     popup->Append(new Renderer::PopupObject::Button(YES_LABEL, POPUP_YES_VALUE));
59     popup->Append(new Renderer::PopupObject::Button(NO_LABEL, POPUP_NO_VALUE));
60     return popup;
61 }
62
63 void YesNoCheckPopup::responseCallback(
64     const Renderer::AnswerCallbackData &answer)
65 {
66     LogDebug("Entered");
67     bool result = (POPUP_YES_VALUE == answer.buttonAnswer);
68     DPL::BinaryQueue retValue;
69     PopupSerializer::appendArg(true, retValue);
70     PopupSerializer::appendArg(result, retValue);
71     LogDebug("Check state: " << answer.chackState);
72     PopupSerializer::appendArg(answer.chackState, retValue);
73     m_parent->response(retValue);
74 }
75 } // Popup
76 } // Wrt