Tizen 2.1 base
[sdk/ide/native-sample.git] / samples / native / cpp / Sample / Tizen C++ / WifiDirectChat / WifiDirectChat / project / src / WifiDirectWpsModeForm.cpp
1 //\r
2 // Open Service Platform\r
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
4 //\r
5 // Licensed under the Flora License, Version 1.0 (the License);\r
6 // you may not use this file except in compliance with the License.\r
7 // You may obtain a copy of the License at\r
8 //\r
9 //     http://www.tizenopensource.org/license\r
10 //\r
11 // Unless required by applicable law or agreed to in writing, software\r
12 // distributed under the License is distributed on an AS IS BASIS,\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 // See the License for the specific language governing permissions and\r
15 // limitations under the License.\r
16 //\r
17 \r
18 #include "WifiDirectWpsModeForm.h"\r
19 #include "WifiDirectFormMgr.h"\r
20 #include "WifiDirectMainForm.h"\r
21 \r
22 using namespace Osp::Base;\r
23 using namespace Osp::Base::Collection;\r
24 using namespace Osp::Ui::Controls;\r
25 using namespace Osp::Graphics;\r
26 using namespace Osp::Ui;\r
27 using namespace Osp::Net::Wifi;\r
28 \r
29 WifiDirectSetWpsForm::WifiDirectSetWpsForm(IList* pArgs):\r
30                 __pCheckButtonPinDisplay(null),\r
31                 __pCheckButtonPinKeypad(null),\r
32                 __pCheckButtonPushButton(null)\r
33 {\r
34         String* pString = (String*) pArgs->GetAt(0);\r
35         Osp::Base::Integer::Decode(*pString, (int&)__wpsConfigurationMode);\r
36         pArgs->RemoveAt(0, true);\r
37 }\r
38 \r
39 WifiDirectSetWpsForm::~WifiDirectSetWpsForm(void)\r
40 {\r
41 }\r
42 \r
43 bool\r
44 WifiDirectSetWpsForm::Initialize(void)\r
45 {\r
46         Form::Construct(FORM_STYLE_NORMAL | FORM_STYLE_HEADER | FORM_STYLE_INDICATOR | FORM_STYLE_FOOTER);\r
47 \r
48         SetName(L"WifiDirectSetWpsForm");\r
49 \r
50         Header* pHeader = GetHeader();\r
51         if (pHeader)\r
52         {\r
53                 pHeader->SetStyle(HEADER_STYLE_TITLE);\r
54                 pHeader->SetTitleText(L"Preferred WPS");\r
55         }\r
56 \r
57         Footer* pFooter = GetFooter();\r
58         if (pFooter)\r
59         {\r
60                 pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT);\r
61 \r
62                 FooterItem footerItemDone;\r
63                 footerItemDone.Construct(ID_OPTION_DONE);\r
64                 footerItemDone.SetText("Done");\r
65                 pFooter->AddItem(footerItemDone);\r
66 \r
67                 pFooter->SetBackButton();\r
68                 pFooter->AddActionEventListener(*this);\r
69         }\r
70 \r
71         SetFormBackEventListener(this);\r
72 \r
73         return true;\r
74 }\r
75 \r
76 result\r
77 WifiDirectSetWpsForm::OnInitializing(void)\r
78 {\r
79         Rectangle clientRect = GetClientAreaBounds();\r
80         int checkButtonHeight = 100;\r
81         int currentHeight = (clientRect.height - (3 * checkButtonHeight)) / 2;\r
82         result r = E_SUCCESS;\r
83 \r
84         VerticalBoxLayout layout;\r
85         layout.Construct(VERTICAL_DIRECTION_DOWNWARD);\r
86 \r
87         ScrollPanel* pScrollPanel = new ScrollPanel();\r
88         pScrollPanel->Construct(layout, Rectangle(0, currentHeight, clientRect.width, 300));\r
89         AddControl(*pScrollPanel);\r
90 \r
91         __pCheckButtonPinDisplay = new CheckButton;\r
92         TryReturn(__pCheckButtonPinDisplay != null, E_FAILURE, "Not enough memory available");\r
93         __pCheckButtonPinDisplay->Construct(Rectangle(0, currentHeight, clientRect.width, checkButtonHeight),\r
94                         CHECK_BUTTON_STYLE_RADIO, BACKGROUND_STYLE_DEFAULT, false, L"PIN Display", GROUP_STYLE_NONE);\r
95         __pCheckButtonPinDisplay->AddActionEventListener(*this);\r
96         pScrollPanel->AddControl(*__pCheckButtonPinDisplay);\r
97 \r
98         currentHeight += checkButtonHeight;\r
99 \r
100         __pCheckButtonPinKeypad = new CheckButton;\r
101         TryReturn(__pCheckButtonPinKeypad != null, E_FAILURE, "Not enough memory available");\r
102         __pCheckButtonPinKeypad->Construct(Rectangle(0, currentHeight, clientRect.width, checkButtonHeight),\r
103                         CHECK_BUTTON_STYLE_RADIO, BACKGROUND_STYLE_DEFAULT, false, L"PIN Keypad", GROUP_STYLE_NONE);\r
104         __pCheckButtonPinKeypad->AddActionEventListener(*this);\r
105         pScrollPanel->AddControl(*__pCheckButtonPinKeypad);\r
106 \r
107         currentHeight += checkButtonHeight;\r
108 \r
109         __pCheckButtonPushButton = new CheckButton;\r
110         TryReturn(__pCheckButtonPushButton != null, E_FAILURE, "Not enough memory available");\r
111         __pCheckButtonPushButton->Construct(Rectangle(0, currentHeight, clientRect.width, checkButtonHeight),\r
112                         CHECK_BUTTON_STYLE_RADIO, BACKGROUND_STYLE_DEFAULT, false, L"Push Button Configuration", GROUP_STYLE_NONE);\r
113         __pCheckButtonPushButton->AddActionEventListener(*this);\r
114         pScrollPanel->AddControl(*__pCheckButtonPushButton);\r
115 \r
116         RadioGroup* pRadioGroup = new RadioGroup();\r
117         pRadioGroup->Construct();\r
118         pRadioGroup->Add(*__pCheckButtonPinDisplay);\r
119         pRadioGroup->Add(*__pCheckButtonPinKeypad);\r
120         pRadioGroup->Add(*__pCheckButtonPushButton);\r
121         AddControl(*pRadioGroup);\r
122 \r
123         if (__wpsConfigurationMode == WIFI_WPS_CONFIG_MODE_PIN_DISPLAY)\r
124                 pRadioGroup->SetSelectedItem(*__pCheckButtonPinDisplay);\r
125         else if (__wpsConfigurationMode == WIFI_WPS_CONFIG_MODE_PIN_KEYPAD)\r
126                 pRadioGroup->SetSelectedItem(*__pCheckButtonPinKeypad);\r
127         else if (__wpsConfigurationMode == WIFI_WPS_CONFIG_MODE_PBC)\r
128                 pRadioGroup->SetSelectedItem(*__pCheckButtonPushButton);\r
129 \r
130         Draw();\r
131 \r
132         return r;\r
133 }\r
134 \r
135 result\r
136 WifiDirectSetWpsForm::OnTerminating(void)\r
137 {\r
138         return E_SUCCESS;\r
139 }\r
140 \r
141 void\r
142 WifiDirectSetWpsForm::OnActionPerformed(const Osp::Ui::Control& source, int actionId)\r
143 {\r
144         switch(actionId)\r
145         {\r
146         case ID_OPTION_DONE:\r
147         {\r
148                 WifiDirectMainForm* pWifiDirectMainForm = static_cast<WifiDirectMainForm*> (Osp::App::Application::GetInstance()->GetAppFrame()->GetFrame()->GetControl("WifiDirectMainForm"));\r
149                 WifiDirectFormMgr* pWifiDirectFormMgr = static_cast<WifiDirectFormMgr*> (Osp::App::Application::GetInstance()->GetAppFrame()->GetFrame()->GetControl("WifiDirectFormMgr"));\r
150 \r
151                 if (__pCheckButtonPinDisplay->IsSelected())\r
152                         __wpsConfigurationMode = WIFI_WPS_CONFIG_MODE_PIN_DISPLAY;\r
153                 else if (__pCheckButtonPinKeypad->IsSelected())\r
154                         __wpsConfigurationMode = WIFI_WPS_CONFIG_MODE_PIN_KEYPAD;\r
155                 else if (__pCheckButtonPushButton->IsSelected())\r
156                         __wpsConfigurationMode = WIFI_WPS_CONFIG_MODE_PBC;\r
157 \r
158                 pWifiDirectMainForm->SetWpsConfigurationMode(__wpsConfigurationMode);\r
159 \r
160                 pWifiDirectFormMgr->SendUserEvent(WifiDirectFormMgr::REQUEST_MAIN_FORM, null);\r
161         }\r
162                 break;\r
163 \r
164         default:\r
165                 break;\r
166         }\r
167 }\r
168 \r
169 void\r
170 WifiDirectSetWpsForm::OnFormBackRequested(Osp::Ui::Controls::Form &source)\r
171 {\r
172         WifiDirectFormMgr* pWifiDirectFormMgr = static_cast<WifiDirectFormMgr*> (Osp::App::Application::GetInstance()->GetAppFrame()->GetFrame()->GetControl("WifiDirectFormMgr"));\r
173         pWifiDirectFormMgr->SendUserEvent(WifiDirectFormMgr::REQUEST_MAIN_FORM, null);\r
174 }\r