boiler plate : flora site fixed
[apps/osp/Internet.git] / src / IntEditHomePageForm.cpp
1 //
2
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.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
8 //
9 //     http://floralicense.org/license/
10 //
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.
16 //
17
18 //!Internet EditHomePageForm class
19 /*@file:  EditHomePageForm.h
20  *@brief: Allow user to set any page as Home page.
21  *
22  */
23
24 #include <FAppUiApp.h>
25 #include <FUi.h>
26
27 #include "IntBookmarkData.h"
28 #include "IntCommonLib.h"
29 #include "IntEditHomePageForm.h"
30 #include "IntMultipleWindowPresentationModel.h"
31 #include "IntSceneRegister.h"
32 #include "IntSettingPresentationModel.h"
33
34
35 using namespace Tizen::App;
36 using namespace Tizen::Base;
37 using namespace Tizen::Base::Collection;
38 using namespace Tizen::Base::Utility;
39 using namespace Tizen::Graphics;
40 using namespace Tizen::Ui;
41 using namespace Tizen::Ui::Controls;
42 using namespace Tizen::Ui::Scenes;
43
44 const int EditHomePageForm::IDA_BUTTON_DONE = 101;
45 const int EditHomePageForm::IDA_BUTTON_CANCEL = 102;
46
47 EditHomePageForm::EditHomePageForm(void)
48 :__pUrlEditField(null)
49 , __pMsgBox(null)
50 , __modalMsgBoxResult(0)
51 {
52
53 }
54
55 EditHomePageForm::~EditHomePageForm(void)
56 {
57
58 }
59
60 bool
61 EditHomePageForm::Initialize(void)
62 {
63         Construct(L"IDL_EDIT_HOME_PAGE");
64         SetOrientation(ORIENTATION_AUTOMATIC);
65         return true;
66 }
67
68 result
69 EditHomePageForm::OnInitializing(void)
70 {
71         result r = E_SUCCESS;
72         SetFormBackEventListener(this);
73         SceneManager* pSceneManager = SceneManager::GetInstance();
74         AppAssert(pSceneManager);
75         pSceneManager->AddSceneEventListener(IDSCN_EDIT_HOMEPAGE_VIEW, *this);
76
77         GetHeader()->AddActionEventListener(*this);
78
79         __pUrlEditField = static_cast<EditField*>(GetControl(L"IDC_EDITFIELD"));
80         if (__pUrlEditField != null)
81         {
82                 __pUrlEditField->AddTextEventListener(*this);
83                 __pUrlEditField->SetOverlayKeypadCommandButtonVisible(false);
84         }
85         return r;
86 }
87
88 result
89 EditHomePageForm::OnTerminating(void)
90 {
91         result r = E_SUCCESS;
92         return r;
93 }
94
95 void
96 EditHomePageForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
97 {
98         if (__pUrlEditField != null)
99         {
100                 String favURL = SettingPresentationModel::GetInstance()->GetFavoriteUrl();
101                 AppLogDebug("EditHomePageForm::OnSceneActivatedN favURL %ls",favURL.GetPointer());
102                 __pUrlEditField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteUrl());
103                 __pUrlEditField->SetFocus();
104                 __pUrlEditField->SetCursorPosition(__pUrlEditField->GetTextLength());
105                 __pUrlEditField->ShowKeypad();
106                 __pUrlEditField->Invalidate(true);
107         }
108
109         Invalidate(true);
110
111         return;
112 }
113
114 void
115 EditHomePageForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
116 {
117
118 }
119
120 void
121 EditHomePageForm::OnFormBackRequested(Form& source)
122 {
123
124 }
125
126 void
127 EditHomePageForm::OnActionPerformed(const Control& source, int actionId)
128 {
129         ArrayList* pArgList = null;
130         pArgList = new(std::nothrow) ArrayList();
131         switch(actionId)
132         {
133         case IDA_BUTTON_DONE:
134         {
135                 pArgList->Add(*new(std::nothrow) String(CommonUtil::GetString(L"IDS_BR_SK_DONE")));
136                 String urlText = __pUrlEditField->GetText();
137                 urlText.Trim();
138                 AppLogDebug("set url text is %ls",urlText.GetPointer());
139
140                 bool ret = false;
141                 bool flag = false;
142                 String firstPattern(L"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
143                 String secondPattern(L"^[A-Za-z0-9\.\+-:#@%/;$~?]+\\.[A-Za-z0-9\+-=:#@%/;$~()_?\\\.&]{2,}$");   // URL of type  abc.com (i.e without protocol in front of it)
144                 RegularExpression firstRegex;
145                 RegularExpression secondRegex;
146
147                 firstRegex.Construct(firstPattern, REGEX_CASELESS);
148                 secondRegex.Construct(secondPattern, REGEX_CASELESS);
149
150                 Uri uri;
151                 uri.SetUri(urlText);
152                 urlText = uri.GetEncodedString();
153
154                 // Match
155                 ret = firstRegex.Match(urlText, false); // This returns true value
156                 flag = secondRegex.Match(urlText, false);  // Checks whether URL typed is of type  abc.com (i.e without protocol in front of it)
157
158
159                 if (ret == true)
160                 {
161                         //valid Url
162                         SettingPresentationModel::GetInstance()->SetHomepage(urlText);
163                         SettingPresentationModel::GetInstance()->SetFavoriteValue(urlText);
164                         result r = SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(), pArgList);
165                         TryCatch(!IsFailed(r), "EditHomePageForm::OnActionPerformed Failed to GoBackward %s",GetErrorMessage(r));
166                 }
167                 else
168                 {
169                         if (flag == true)
170                         {
171                                 String validUrl;
172                                 validUrl = L"http://";
173                                 validUrl.Append(urlText);
174                                 // save Url
175                                 SettingPresentationModel::GetInstance()->SetHomepage(validUrl);
176                                 SettingPresentationModel::GetInstance()->SetFavoriteValue(validUrl);
177                                 result r = SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(), pArgList);
178                                 TryCatch(!IsFailed(r), "EditHomePageForm::OnActionPerformed Failed to GoBackward %s",GetErrorMessage(r));
179                         }
180                         else
181                         {
182                                 // show pop up , not a valid URL
183                                 String msg = CommonUtil::GetString(L"IDS_BR_POP_INVALIDADDRESS");
184                                 CreateMessage(msg);
185                         }
186                 }
187
188                 break;
189         }
190         case IDA_BUTTON_CANCEL:
191         {
192                 pArgList->Add(*new(std::nothrow) String(CommonUtil::GetString(L"IDS_BR_SK_CANCEL")));
193                 result r = SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(), pArgList);
194                 TryCatch(!IsFailed(r), "EditHomePageForm::OnActionPerformed Failed to GoBackward %s",GetErrorMessage(r));
195                 break;
196         }
197         default:
198                 break;
199         }
200
201         CATCH:
202         pArgList->RemoveAll(true);
203         delete pArgList;
204         return;
205 }
206
207 void
208 EditHomePageForm::OnTextValueChanged(const Control& source)
209 {
210         String title ;
211         Header* pHeader = GetHeader();
212
213         if (pHeader == NULL)
214         {
215                 return;
216         }
217
218         if (__pUrlEditField == NULL)
219         {
220                 return;
221         }
222
223         title = __pUrlEditField->GetText();
224         title.Trim();
225
226         // To disable done button when folder title edit-field is empty
227         if (__pUrlEditField && title.IsEmpty() == true)
228         {
229                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, false);
230         }
231         else
232         {
233                 pHeader->SetButtonEnabled(BUTTON_POSITION_LEFT, true);
234         }
235         pHeader->Invalidate(true);
236         return;
237 }
238
239 void
240 EditHomePageForm::OnTextValueChangeCanceled(const Control& source)
241 {
242         return;
243 }
244
245 void
246 EditHomePageForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus)
247 {
248         return;
249 }
250
251 void
252 EditHomePageForm::CreateMessage(String& message)
253 {
254
255         if (__pMsgBox != null)
256         {
257                 delete __pMsgBox;
258                 __pMsgBox = null;
259                 __modalMsgBoxResult = 0;
260         }
261
262         __pMsgBox = new(std::nothrow) MessageBox;
263         if (__pMsgBox != null)
264         {
265                 __pMsgBox->Construct(L"", message, MSGBOX_STYLE_OK, 3000);
266         }
267
268         if (__pMsgBox != null)
269         {
270                 __pMsgBox->ShowAndWait(__modalMsgBoxResult);
271                 if (__modalMsgBoxResult == MSGBOX_RESULT_OK)
272                 {
273                         if (__pMsgBox != null)
274                         {
275                                 delete __pMsgBox;
276                                 __pMsgBox = null;
277                         }
278                 }
279                 __modalMsgBoxResult = 0;
280         }
281
282         return;
283 }