2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FWebCtrl_AuthConfirmPopup.cpp
20 * @brief The file contains the definition of _AuthConfirmPopup class.
22 #include <FBaseColArrayList.h>
23 #include <FBaseSysLog.h>
24 #include <FGrpDimension.h>
25 #include <FGrpRectangle.h>
26 #include <FSysVibrator.h>
27 #include <FUiCtrlButton.h>
28 #include <FUiCtrlEditField.h>
29 #include <FUiCtrlLabel.h>
30 #include <FUiCtrlPanel.h>
31 #include <FUiKeyEventInfo.h>
32 #include <FUiLayout.h>
33 #include <FUiVerticalBoxLayout.h>
34 #include <FWebCtrlAuthenticationChallenge.h>
35 #include <FSys_SystemResource.h>
36 #include <FSys_VibratorImpl.h>
37 #include <FUi_ControlManager.h>
38 #include <FUi_ResourceManager.h>
39 #include "FWebCtrl_AuthConfirmPopup.h"
40 #include "FWebCtrl_WebImpl.h"
43 using namespace Tizen::Base;
44 using namespace Tizen::Base::Collection;
45 using namespace Tizen::Graphics;
46 using namespace Tizen::System;
47 using namespace Tizen::Ui;
48 using namespace Tizen::Ui::Controls;
51 namespace Tizen { namespace Web { namespace Controls
55 static const int EDIT_TEXT_SIZE = 35;
58 _AuthConfirmPopup::_AuthConfirmPopup(void)
59 : __pIdEditField(null)
60 , __pPwdEditField(null)
61 , __pAuthHandler(null)
66 _AuthConfirmPopup::~_AuthConfirmPopup(void)
71 // Authentication popup
73 _AuthConfirmPopup::Construct(const String& host, const String& realm, AuthenticationChallenge* pAuth)
75 SysTryReturnResult(NID_WEB_CTRL, pAuth != null, E_INVALID_ARG, "invalid argument(s) is used. The AuthenticationChallenge is null.");
77 __pAuthHandler = pAuth;
79 _SystemResource* pSysResource = _SystemResource::GetInstance();
80 SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
83 _WebPopupData* pPopupData = _WebPopup::GetPopupData();
84 SysTryReturn(NID_WEB_CTRL, pPopupData, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
86 Rectangle rect(0, 0, 0, 0);
87 rect.width = pPopupData->popupDim.width;
88 rect.height = (2*pPopupData->spacePad) + (pPopupData->editDim.height*2) + pPopupData->btnDim.height + (2*pPopupData->labelDim.height);
89 r = _WebPopup::Construct(true, Dimension(rect.width, rect.height));
90 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
92 SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_DESTINATIONS_AUTHENTICATION_REQUIRED"));
95 rect.height = 2*pPopupData->labelDim.height;
97 std::unique_ptr<Label> pLabel(new (std::nothrow) Label());
98 SysTryReturnResult(NID_WEB_CTRL, pLabel.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
100 String hostRealm(host);
101 hostRealm.Append(L": \n ");
102 hostRealm.Append(realm);
103 hostRealm.Append(L"\"");
104 r = pLabel->Construct(rect, hostRealm);
105 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
107 pLabel->SetTextConfig(pPopupData->labelFontSize, LABEL_TEXT_STYLE_NORMAL);
109 r = AddControl(*pLabel);
110 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
112 Label* pHostLabel = pLabel.release();
117 rect.height = pPopupData->editDim.height;
118 rect.width = pPopupData->labelDim.width;
120 std::unique_ptr<EditField> pIdEditField(new (std::nothrow) EditField());
121 SysTryReturnResult(NID_WEB_CTRL, pIdEditField.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
123 r = pIdEditField->Construct(rect, EDIT_FIELD_STYLE_NORMAL);
124 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
126 pIdEditField->SetGuideText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_AUTHUSERNAME"));
127 pIdEditField->SetGuideTextColor(Color::GetColor(COLOR_ID_GREY));
128 pIdEditField->SetTextSize(EDIT_TEXT_SIZE);;
130 r = AddControl(*pIdEditField);
131 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
133 __pIdEditField = pIdEditField.release();
135 std::unique_ptr<EditField> pPwdEditField(new (std::nothrow) EditField());
136 SysTryReturnResult(NID_WEB_CTRL, pPwdEditField.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
138 r = pPwdEditField->Construct(rect, EDIT_FIELD_STYLE_PASSWORD);
139 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
141 pPwdEditField->SetGuideText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_AUTHPASSWORD"));
142 pPwdEditField->SetGuideTextColor(Color::GetColor(COLOR_ID_GREY));
143 pPwdEditField->SetTextSize(EDIT_TEXT_SIZE);;
145 r = AddControl(*pPwdEditField);
146 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
148 __pPwdEditField = pPwdEditField.release();
149 __pIdEditField->SetFocus();
151 Panel* pButtonPanel = CreateAndAddPanel();
152 SysTryReturn(NID_WEB_CTRL, pButtonPanel, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
156 r = idList.Construct();
157 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
158 idList.Add(*(new Integer(ID_BUTTON_AUTH_PROCESS)));
159 idList.Add(*(new Integer(ID_BUTTON_AUTH_CANCEL)));
162 r = titleList.Construct();
163 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
164 titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_COM_BUTTON_LOGIN"))));
165 titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_COM_SK_CANCEL"))));
167 r = CreateAndAddButtons(idList, titleList, pButtonPanel);
168 SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
170 std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(GetLayoutN()));
171 SysTryReturn(NID_WEB_CTRL, pLayout.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
173 pLayout->SetHorizontalAlignment(*pHostLabel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
174 pLayout->SetHorizontalAlignment(*__pIdEditField, LAYOUT_HORIZONTAL_ALIGN_CENTER);
175 pLayout->SetHorizontalAlignment(*__pPwdEditField, LAYOUT_HORIZONTAL_ALIGN_CENTER);
176 pLayout->SetHorizontalAlignment(*pButtonPanel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
178 pLayout->SetSpacing(*__pPwdEditField, pPopupData->spacePad);
179 pLayout->SetSpacing(*pButtonPanel, pPopupData->spacePad);
181 SetPropagatedKeyEventListener(this);
188 _AuthConfirmPopup::OnActionPerformed(const Control& source, int actionId)
190 result r = E_SUCCESS;
194 case ID_BUTTON_AUTH_PROCESS:
195 __pAuthHandler->Process(__pIdEditField->GetText(), __pPwdEditField->GetText());
198 case ID_BUTTON_AUTH_CANCEL:
199 __pAuthHandler->Cancel();
207 SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
211 _AuthConfirmPopup::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
217 _AuthConfirmPopup::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
219 result r = E_SUCCESS;
220 if ((keyEventInfo.GetKeyCode() == KEY_ESC || keyEventInfo.GetKeyCode() == KEY_BACK) && source.GetShowState() == true)
222 __pAuthHandler->Cancel();
226 SysLogException(NID_WEB_CTRL, r, "[%s] Propagating.", GetErrorMessage(r));
234 _AuthConfirmPopup::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
240 _AuthConfirmPopup::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
246 _AuthConfirmPopup::TranslateKeyEventInfo(Control& source, KeyEventInfo& keyEventInfo)
252 }}} // Tizen::Web::Controls