Fixed Nabi Issues
[apps/osp/Internet.git] / src / IntAddressbar.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 //!Internet
18 /*@file:    IntAddressbar
19  *@brief:       This class defines common behaviour of Addressbar control.
20  *
21  */
22 #include "IntAddressbar.h"
23 #include "IntCommonLib.h"
24 #include "IntTypes.h"
25 #include "IntMultipleWindowPresentationModel.h"
26 #include "IntSettingPresentationModel.h"
27 #include "IntMultipleWindowPresentationModel.h"
28
29 using namespace Tizen::App;
30 using namespace Tizen::Base;
31 using namespace Tizen::Ui;
32 using namespace Tizen::Ui::Controls;
33 using namespace Tizen::Graphics;
34
35 static const wchar_t* IDB_SEARCH_INPUT_FIELD_BG = L"I01_toolbar_input_field.9.png";
36 static const wchar_t* IDB_TITLE_PROGRESS_BAR_BG = L"I01_title_progress_bar_bg.png";
37 static const wchar_t* IDB_TITLE_PROGRESS_BAR = L"I01_title_progress_bar.png";
38 static const wchar_t* IDB_ICON_PRIVATE = L"I01_icon_private.png";
39
40 //Action IDs
41 const int Addressbar::IDA_REFRESH_BTN_CLICKED = 101;
42 const int Addressbar::IDA_READER_BTN_CLICKED = 102;
43 const int Addressbar::IDA_STOP_BTN_CLICKED = 103;
44 const int Addressbar::IDA_GO_BACK = 104;
45 const int Addressbar::IDA_GO_FORWARD = 105;
46 const int Addressbar::IDA_CANCEL = 106;
47 const int Addressbar::IDA_CLEAR_URL = 107;
48
49 Addressbar::Addressbar(void)
50 {
51         //__currentAddMode = ADDRESSBAR_MODE_LOADING_COMPLETE;
52         __displayUrl = L"";
53         __editTextUrl = L"";
54         __isLoadingData = false;
55         __isLoadingCompleted = false;
56         __progressPercentage = 0;
57         __pAddressbarBg = null;
58         __pBgPanel = null;
59         //__pCancelBtn = null;
60         __pClearBtn = null;
61         __pFavIcon = FaviconManager::GetInstance()->GetDefaultFaviconN();
62         __pFaviconLabel = null;
63         //__pGoBackBtn = null;
64         //__pGoForwardBtn = null;
65         __pLabelPrivateOn = null;
66         __pListener = null;
67         __pPrivateIconLabel = null;
68         __pProgressbarLabel = null;
69         __pPrivateIconLabel = null ;
70         //__pReaderBtn = null;
71         //__pRefreshBtn = null;
72         __pStopBtn = null;
73         __pClearBtn = null ;
74         __pSearchLabel = null;
75         __pAddressbarUrlField = null;
76         __pToolBarLabel = null;
77         __pAddressbarURLLabel = null;
78         __pAddressBackBtn = null;
79         __isClipboardOpen = false;
80 }
81
82 Addressbar::~Addressbar(void)
83 {
84         if (__pFavIcon != null)
85         {
86                 delete __pFavIcon;
87                 __pFavIcon = null;
88         }
89 }
90
91 result
92 Addressbar::Initialize(const Rectangle& rect)
93 {
94         result r = E_SUCCESS;
95
96         AppLogDebug("Addressbar::Initialize entered");
97         //Construct the base first
98         r = Construct(L"IDL_ADDRESSBAR");
99
100         //Add background label
101         Label* pBgLabel = static_cast<Label*> (GetControl(L"IDC_BG_LABEL",true));
102         if (pBgLabel == NULL)
103         {
104                 AppLogDebug("Control not found returning E_INVALID_KEY");
105                 return E_INVALID_KEY;
106         }
107
108         //Add inner panel for border
109         __pBgPanel = static_cast<Panel*> (GetControl(L"IDC_BG_PANEL",true));
110         if (__pBgPanel == NULL)
111         {
112                 AppLogDebug("Control not found returning E_INVALID_KEY");
113                 return E_INVALID_KEY;
114         }
115
116         __pAddressbarBg = static_cast<Label*> (GetControl(L"IDC_ADDRESSBAR_BG_LABEL",true));
117         if (__pAddressbarBg == NULL)
118         {
119                 AppLogDebug("Control not found returning E_INVALID_KEY");
120                 return E_INVALID_KEY;
121         }
122         __pBgPanel->SetBackgroundColor(CUSTOM_COLOR_TRANSPARENT);
123         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
124         if (pBitmap != null)
125         {
126                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
127                 delete pBitmap;
128         }
129
130         //Add the backround label for displaying progressbar
131         /*__pProgressbarLabel = static_cast<Label*> (GetControl(L"IDC_PROGRESS_BAR_LABEL",true));
132         if (__pProgressbarLabel == NULL)
133         {
134                 AppLogDebug("Control not found returning E_INVALID_KEY");
135                 return E_INVALID_KEY;
136         }
137         __pProgressbarLabel->SetShowState(false);*/
138
139         //Add the stop button
140         __pStopBtn = static_cast<Button*> (GetControl(L"IDC_STOP_BUTTON",true));
141         if (__pStopBtn == NULL)
142         {
143                 AppLogDebug("Control not found returning E_INVALID_KEY");
144                 return E_INVALID_KEY;
145         }
146         __pStopBtn->SetActionId(IDA_STOP_BTN_CLICKED);
147         __pStopBtn->AddActionEventListener(*this);
148         __pStopBtn->SetShowState(false);
149
150
151         __pClearBtn = static_cast<Button*> (GetControl(L"IDC_CLEAR_BUTTON",true));
152         if (__pClearBtn == NULL)
153         {
154                 AppLogDebug("Control not found returning E_INVALID_KEY");
155                 return E_INVALID_KEY;
156         }
157         __pClearBtn->SetActionId(IDA_CLEAR_URL);
158         __pClearBtn->AddActionEventListener(*this);
159         __pClearBtn->SetShowState(true);
160
161         //Add the editfield for url
162         __pAddressbarUrlField =  static_cast<EditField*> (GetControl(L"IDC_URL_EDITFIELD",true));
163         if (__pAddressbarUrlField == NULL)
164         {
165                 AppLogDebug("Control not found returning E_INVALID_KEY");
166                 return E_INVALID_KEY;
167         }
168
169         __pAddressbarUrlField->SetOverlayKeypadCommandButtonVisible(false);
170         __pAddressbarUrlField->SetKeypadAction(KEYPAD_ACTION_GO);
171         __pAddressbarUrlField->AddFocusEventListener(*this);
172         __pAddressbarUrlField->AddTextEventListener(*this);
173         if(__pAddressbarUrlField->GetTextLength() == 0)
174         {
175                 __pAddressbarUrlField->SetKeypadActionEnabled(false);
176         }
177         else
178         {
179                 __pAddressbarUrlField->SetKeypadActionEnabled(true);
180         }
181
182         __pToolBarLabel = static_cast<Label*> (GetControl(L"IDC_TOOLBAR_LABEL",true));
183         if (__pToolBarLabel == NULL)
184         {
185                 AppLogDebug("Control not found returning E_INVALID_KEY");
186                 return E_INVALID_KEY;
187         }
188         __pToolBarLabel->SetShowState(true);
189
190         __pAddressbarURLLabel = static_cast<Label*> (GetControl(L"IDC_URL_LABEL",true));
191         if (__pAddressbarURLLabel == NULL)
192         {
193                 AppLogDebug("__pURLLabel Control not found returning E_INVALID_KEY");
194                 return E_INVALID_KEY;
195         }
196         __pAddressbarURLLabel->SetShowState(true);
197
198         __pAddressBackBtn = static_cast<Button*> (GetControl(L"IDC_ADDRESS_BACK_BUTTON",true));
199         if (__pAddressBackBtn == NULL)
200         {
201                 AppLogDebug("__pAddressBackBtn Control not found returning E_INVALID_KEY");
202                 return E_INVALID_KEY;
203         }
204         __pAddressBackBtn->SetActionId(IDA_CANCEL);
205         __pAddressBackBtn->AddActionEventListener(*this);
206         __pAddressBackBtn->SetShowState(true);
207         //IDC_ADDRESS_BACK_BUTTON
208
209         // Added to get the favorite url if not set then address bar is about blank
210
211         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
212         {
213                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
214         }
215         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
216         {
217                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
218         }
219         else
220         {
221                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
222                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
223         }
224         __pAddressbarUrlField->AddKeypadEventListener(*this);
225
226         AppLogDebug("Addressbar::Initialize exit");
227         return r;
228 }
229
230 void
231 Addressbar::UpdateProgressBitmap(void)
232 {
233         result r = E_SUCCESS;
234         if (__pProgressbarLabel == null)
235                 return;
236         int w = __pProgressbarLabel->GetWidth();
237         int h = __pProgressbarLabel->GetHeight();
238         Canvas canvas;
239         int progressWidth = 0;
240         Bitmap* pRetBitmap = null;
241
242         if (__progressPercentage == 0 || __progressPercentage == 100)
243         {
244                 __pProgressbarLabel->SetShowState(false);
245                 __pProgressbarLabel->Invalidate(false);
246                 return;
247         }
248         else
249         {
250                 __pProgressbarLabel->SetShowState(true);
251                 __pProgressbarLabel->Invalidate(false);
252         }
253
254         r = canvas.Construct(Rectangle(0, 0, w, h));
255
256         if (r != E_SUCCESS)
257         {
258                 AppLogException("Canvas construction failed with %s", GetErrorMessage(r));
259                 return;
260         }
261
262         canvas.Clear();
263         Bitmap *pBgBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR_BG);
264
265         if (pBgBmp != null)
266         {
267                 pBgBmp->Scale(Dimension(w, h));
268                 canvas.DrawBitmap(Point(0,0), *pBgBmp);
269                 delete pBgBmp;
270         }
271
272         progressWidth = (double) (w) * __progressPercentage / 100;
273         AppLogDebug("progressWidth: %d", progressWidth);
274         Bitmap *pProgressBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR);
275
276         if (pProgressBmp != null)
277         {
278                 pProgressBmp->Scale(Dimension(progressWidth, h));
279                 canvas.DrawBitmap(Point(0,0), *pProgressBmp);
280                 delete pProgressBmp;
281         }
282
283         pRetBitmap = new (std::nothrow) Bitmap();
284
285         if (pRetBitmap == null)
286         {
287                 AppLogException("Bitmap creation failed with %s", GetErrorMessage(r));
288                 return;
289         }
290
291         pRetBitmap->Construct(canvas, canvas.GetBounds());
292
293         if (__pProgressbarLabel != null && pRetBitmap != null)
294         {
295                 __pProgressbarLabel->SetBackgroundBitmap(*pRetBitmap);
296                 __pProgressbarLabel->Invalidate(false);
297         }
298
299
300         if (pRetBitmap != null)
301         {
302                 delete pRetBitmap;
303                 pRetBitmap = null;
304         }
305         return;
306 }
307
308 void
309 Addressbar::ResetGuideText(void)
310 {
311         AppLog("Addressbar::ResetGuideText called");
312
313         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
314         {
315                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
316         }
317         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
318         {
319                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
320         }
321         else
322         {
323                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
324                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
325         }
326         __pAddressbarUrlField->Invalidate(true);
327 }
328
329 void
330 Addressbar::SetUrl(const String& url)
331 {
332         __displayUrl = url;
333         String updatedDisplayUrl;
334         updatedDisplayUrl.Clear();
335
336         if (__pAddressbarUrlField != NULL)
337         {
338                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
339                 if (removedHttpUrl.IsEmpty() == false)
340                 {
341                         __pAddressbarUrlField->SetText(removedHttpUrl);
342                 }
343                 else
344                 {
345                         __pAddressbarUrlField->SetText(__displayUrl);
346                 }
347
348                 __pAddressbarUrlField->Invalidate(false);
349                 __pAddressbarUrlField->SetCursorPosition(0);
350         }
351 }
352
353 String
354 Addressbar::GetUrl(void)
355 {
356         return __displayUrl;
357 }
358
359 /*AddressBarMode
360 Addressbar::GetAddressbarMode(void)
361 {
362         return __currentAddMode;
363 }*/
364
365 /*void
366 Addressbar::SetAddressbarMode(AddressBarMode addMode)
367 {
368         AppLogDebug("AddressBar::setAddressbarMode to %d",addMode);
369
370         __currentAddMode = addMode;
371
372         switch(addMode)
373         {
374         case ADDRESSBAR_MODE_INVALID:
375         {
376                 // do nothing
377         }
378         break;
379         case ADDRESSBAR_MODE_READER:
380         {
381         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
382         //      __pSearchLabel->SetShowState(false);
383         //      __pFaviconLabel->SetShowState(true);
384         //      __pCancelBtn->SetShowState(false);
385         //      __pRefreshBtn->SetShowState(false);
386                 __pStopBtn->SetShowState(false);
387         //      __pReaderBtn->SetShowState(true);
388         //      __pReaderBtn->Invalidate(true);
389         //      __pGoForwardBtn->SetShowState(true);
390         //      __pGoBackBtn->SetShowState(true);
391                 __pClearBtn->SetShowState(false);
392         }
393         break;
394         case ADDRESSBAR_MODE_LOADING:
395         {
396         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
397         //      __pSearchLabel->SetShowState(false);
398         //      __pFaviconLabel->SetShowState(true);
399         //      __pCancelBtn->SetShowState(false);
400         //      __pRefreshBtn->SetShowState(false);
401                 __pStopBtn->SetShowState(true);
402         //      __pReaderBtn->SetShowState(false);
403         //      __pGoForwardBtn->SetShowState(true);
404         //      __pGoBackBtn->SetShowState(true);
405                 __pClearBtn->SetShowState(false);
406         }
407         break;
408
409         case ADDRESSBAR_MODE_LOADING_COMPLETE:
410         {
411         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
412         //      __pCancelBtn->SetShowState(false);
413
414                 if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == false)
415                 {
416                 //      __pSearchLabel->SetShowState(false);
417                 //      __pFaviconLabel->SetShowState(true);
418                 }
419                 else
420                 {
421                 //      __pSearchLabel->SetShowState(true);
422                 //      __pFaviconLabel->SetShowState(false);
423                 }
424
425                 if (__pAddressbarUrlField != NULL)
426                 {
427                         __pAddressbarUrlField->SetText(__displayUrl);
428                         __pAddressbarUrlField->HideKeypad();
429                 }
430
431         //      __pRefreshBtn->SetShowState(true);
432                 __pStopBtn->SetShowState(false);
433         //      __pReaderBtn->SetShowState(false);
434         //      __pGoForwardBtn->SetShowState(true);
435         //      __pGoBackBtn->SetShowState(true);
436                 __pClearBtn->SetShowState(false);
437         }
438         break;
439         case ADDRESSBAR_MODE_EDIT:
440         {
441                 Form *pForm = static_cast<Form*>(GetParent());
442                 if (pForm!= null && (pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT ||pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE ))
443                 {
444                 //      __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pBgPanel->GetHeight());
445                 //      __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pAddressbarBg->GetHeight());
446                         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
447                 }
448                 else
449                 {
450                 //      __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pBgPanel->GetHeight());
451                 //      __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pAddressbarBg->GetHeight());
452                         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
453                 }
454
455         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x,__pBgPanel->GetPosition().y);
456         //      __pCancelBtn->SetShowState(true);
457         //      __pRefreshBtn->SetShowState(false);
458                 __pStopBtn->SetShowState(false);
459         //      __pReaderBtn->SetShowState(false);
460         //      __pGoForwardBtn->SetShowState(false);
461         //      __pGoBackBtn->SetShowState(false);
462                 __pClearBtn->SetShowState(true);
463
464
465 //              __pCancelBtn->SetBounds(__pBgPanel->GetWidth(), __pCancelBtn->GetY(), GetWidth() - 48 - __pBgPanel->GetWidth(), __pCancelBtn->GetHeight());
466
467                 if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == true)
468                 {
469                 //      __pSearchLabel->SetShowState(true);
470                 //      __pFaviconLabel->SetShowState(false);
471                 }
472                 else
473                 {
474                 //      __pSearchLabel->SetShowState(false);
475                 //      __pFaviconLabel->SetShowState(true);
476                 }
477                 if (__pAddressbarUrlField != NULL)
478                 {
479                         __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
480                 }
481
482         }
483         break;
484         }
485
486         if (__pAddressbarBg->GetWidth() != __pBgPanel->GetWidth())
487         {
488                 __pAddressbarBg->SetBounds(Rectangle(0, 0, __pBgPanel->GetWidth(), __pBgPanel->GetHeight()));
489                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_search_input_field_bg.9.png", __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
490                 if (pBitmap != null)
491                 {
492                         __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
493                         delete pBitmap;
494                 }
495         }
496
497         Invalidate(true);
498
499         if (__pListener != null)
500         {
501                 __pListener->OnAddressBarModeChanged(*this);
502         }
503 }*/
504
505 void
506 Addressbar::SetFaviconBitmap(const Tizen::Graphics::Bitmap& favicon)
507 {
508
509         String url =__pAddressbarUrlField->GetText();
510         String secureSiteText = "https://";
511         bool flag = false;
512         flag = url.StartsWith(secureSiteText,0);
513
514         if (__pFavIcon != null)
515         {
516                 delete __pFavIcon;
517         }
518
519         __pFavIcon = new(std::nothrow) Bitmap();
520         __pFavIcon->Construct(favicon,Rectangle(0,0,favicon.GetWidth(),favicon.GetHeight()));
521 }
522
523 void Addressbar::SaveAddressbarEditText()
524 {
525         __editTextUrl = __pAddressbarUrlField->GetText();
526 }
527
528 void
529 Addressbar::UpdateFaviconBitmap(bool isPrivateOn)
530 {
531
532         String url =__pAddressbarUrlField->GetText();
533         String secureSiteText = "https://";
534         bool flag = false;
535         flag = url.StartsWith(secureSiteText,0);
536
537         __pAddressbarBg->Invalidate(true);
538 }
539
540 void
541 Addressbar::SetForwardButtonEnabled(bool isEnabled)
542 {
543 //      __pGoForwardBtn->SetEnabled(isEnabled);
544 //      __pGoBackBtn->Invalidate(true);
545 }
546
547 void
548 Addressbar::SetBackButtonEnabled(bool isEnabled)
549 {
550 //      __pGoBackBtn->SetEnabled(isEnabled);
551 //      __pGoBackBtn->Invalidate(true);
552 }
553
554 void
555 Addressbar::SetAddressbarEventListener(IAddressbarEventListener* plistener)
556 {
557         __pListener = plistener;
558 }
559
560 void
561 Addressbar::UpdateProgress(int percentage)
562 {
563         __progressPercentage = percentage;
564         if (percentage == 0 || percentage == 100)
565         {
566                 __isLoadingData = false;
567                 if (percentage == 100)
568                 {
569                         __isLoadingCompleted = true;
570                         __progressPercentage = 0;
571                 }
572                 else
573                 {
574                         __isLoadingCompleted = false;
575                 }
576         }
577         else
578         {
579                 __isLoadingData = true;
580         }
581         UpdateProgressBitmap();
582 }
583
584 int
585 Addressbar::GetProgress(void)
586 {
587         return __progressPercentage;
588 }
589
590 void
591 Addressbar::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
592 {
593         AppLogDebug("Addressbar::OnActionPerformed action %d",actionId);
594
595         switch (actionId)
596         {
597         case IDA_REFRESH_BTN_CLICKED:
598                 __isLoadingCompleted = false;
599                 __isLoadingData = true;
600                 __progressPercentage = 0;
601                 __pAddressbarUrlField->HideKeypad();
602                 __displayUrl = __pAddressbarUrlField->GetText();
603
604                 /*if (__pListener != NULL)
605                 {
606                         __pListener->OnUrlSubmitted(*this);
607                 }*/
608
609                 UpdateProgressBitmap();
610                 break;
611
612         case IDA_STOP_BTN_CLICKED:
613                 __isLoadingCompleted = false;
614                 __isLoadingData = false;
615                 __progressPercentage = 0;
616                 __pAddressbarUrlField->HideKeypad();
617                 __displayUrl = __pAddressbarUrlField->GetText();
618
619                 if (__pListener != NULL)
620                 {
621                         __pListener->OnStopClicked(*this);
622                 }
623
624                 UpdateProgressBitmap();
625                 break;
626         case IDA_READER_BTN_CLICKED:
627                 __pAddressbarUrlField->HideKeypad();
628                 __displayUrl = __pAddressbarUrlField->GetText();
629
630                 if (__pListener != NULL)
631                 {
632                         __pListener->OnReaderClicked(*this);
633                 }
634
635                 break;
636
637         /*case IDA_GO_BACK:
638         {
639                 if (__pListener != NULL)
640                 {
641                         __pListener->OnBackClicked(*this);
642
643                 }
644         }
645         break;
646
647         case IDA_GO_FORWARD:
648         {
649                 if (__pListener != NULL )
650                         __pListener->OnForwardClicked(*this);
651         }
652         break;*/
653
654         case IDA_CANCEL:
655         {
656                 __pAddressbarUrlField->HideKeypad();
657                 __pListener->OnAddressCancelledClicked(*this);
658                 //SetAddressbarMode(ADDRESSBAR_MODE_LOADING_COMPLETE);
659         }
660         break;
661
662         case IDA_CLEAR_URL:
663         {
664                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
665                 {
666                         //__displayUrl = __pUrlField->GetText();
667                         __pAddressbarUrlField->Clear();
668                         __pAddressbarUrlField->Invalidate(true);
669                 }
670         }
671         break;
672         default:
673                 break;
674         }
675 }
676
677 void
678 Addressbar::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
679 {
680         AppLog("Addressbar::OnKeypadActionPerformed keypadAction %d",keypadAction);
681         switch (keypadAction)
682         {
683         case KEYPAD_ACTION_GO:
684         case KEYPAD_ACTION_ENTER:
685         case KEYPAD_ACTION_SEND:
686         {
687                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
688                 {
689                         //SetAddressbarMode(ADDRESSBAR_MODE_LOADING);
690                         __displayUrl = __pAddressbarUrlField->GetText();
691
692                         __isLoadingCompleted = false;
693                         __isLoadingData = true;
694                         __progressPercentage = 0;
695                         __pAddressbarUrlField->HideKeypad();
696
697                         if (__pListener != NULL)
698                         {
699                                 __pListener->OnUrlSubmitted(*this);
700                         }
701
702                         //UpdateProgressBitmap();
703                 }
704         }
705         break;
706
707         default:
708                 break;
709         }
710 }
711
712 void
713 Addressbar::OnKeypadClosed(Tizen::Ui::Control& source)
714 {
715         if (__isClipboardOpen == true)
716         {
717                 __isClipboardOpen = false;
718                 __pListener->OnClipboardClosed(*this);
719                 return;
720         }
721         __pAddressbarUrlField->SetText(__displayUrl);
722         __editTextUrl = L"";
723         SetShowState(false);
724         if(__pListener != null)
725         {
726                 __pListener->OnAddressBarKeypadClosed(*this);
727         }
728 }
729
730 void
731 Addressbar::OnKeypadOpened(Tizen::Ui::Control& source)
732 {
733         AppLog("Addressbar::OnKeypadClosed %d",Clipboard::GetInstance()->IsPopupVisible());
734         __isClipboardOpen = Clipboard::GetInstance()->IsPopupVisible();
735         if(__pListener != null)
736         {
737                 __pListener->OnAddressBarKeypadOpened(*this);
738         }
739 }
740
741 void
742 Addressbar::OnKeypadWillOpen(Tizen::Ui::Control& source)
743 {
744         if(__pListener != null)
745         {
746                 __pListener->OnAddressBarKeypadWillOpen(*this);
747         }
748 }
749
750 void
751 Addressbar::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
752 {
753         AppLog("Coming here");
754         if(__pListener != null)
755                 {
756                         __pListener->OnAddressBarKeypadBoundsChanged(*this);
757                 }
758 }
759
760 void
761 Addressbar::OrientationChanged( int& width)
762 {
763        int gap = 10;
764         __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(), width - __pAddressBackBtn->GetWidth() - gap -__pBgPanel->GetX() ,__pBgPanel->GetHeight());
765         __pAddressBackBtn->SetBounds(width - __pAddressBackBtn->GetWidth() - 6,__pAddressBackBtn->GetY(),__pAddressBackBtn->GetWidth(),__pAddressBackBtn->GetHeight());
766         __pStopBtn->SetBounds(__pBgPanel->GetWidth() - __pStopBtn->GetWidth(),__pStopBtn->GetY(),__pStopBtn->GetWidth(),__pStopBtn->GetHeight());
767         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth() ,__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
768 //      __pAddressbarUrlField->SetBounds(__pToolBarLabel->GetWidth(),__pAddressbarUrlField->GetY(),__pBgPanel->GetWidth() - __pStopBtn->GetWidth()- __pToolBarLabel->GetWidth() ,__pAddressbarUrlField->GetHeight());
769
770         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
771         if (pBitmap != null)
772         {
773                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
774                 delete pBitmap;
775         }
776         Invalidate(true);
777 }
778
779 String
780 Addressbar::RemoveHttpTextFromDisplayURL(void)
781 {
782         bool isHttpText = __displayUrl.Contains(L"http://");
783         String updatedDisplayUrl;
784         updatedDisplayUrl.Clear();
785
786         if (isHttpText == true)
787         {
788                 __displayUrl.SubString(7,updatedDisplayUrl);
789         }
790         return updatedDisplayUrl;
791 }
792
793 Bitmap*
794 Addressbar::GetLockedImageN(void)
795 {
796         Bitmap* pIconImage = null;
797
798         AppResource* pAppResource = Application::GetInstance()->GetAppResource();
799         if (pAppResource)
800         {
801                 pIconImage = pAppResource->GetBitmapN(IDB_ICON_PRIVATE);
802         }
803
804         Bitmap* pLockImage = new (std::nothrow) Bitmap();
805
806         Canvas* pCanvas = new (std::nothrow) Canvas();
807         pCanvas->Construct(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
808         pCanvas->Clear();
809         if(__pFavIcon != null)
810         {
811                 pCanvas->DrawBitmap(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()),*__pFavIcon);
812         }
813         if(pIconImage != null)
814         {
815                 pCanvas->DrawBitmap(Rectangle(__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2,__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2),*pIconImage);
816         }
817         pLockImage->Construct(*pCanvas,Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
818
819         delete pCanvas;
820         return pLockImage;
821 }
822
823 void
824 Addressbar::OnFocusGained(const Control& source)
825 {
826         //SetAddressbarMode(ADDRESSBAR_MODE_EDIT);
827         //      SetAddressbarMode(__prevAddMode);
828
829         if(__pAddressbarUrlField != null)
830         {
831                 __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
832                 if(__pAddressbarUrlField->GetTextLength() == 0)
833                 {
834                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
835                 }
836                 else
837                 {
838                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
839                 }
840         }
841         if (__pListener != null)
842         {
843                 __pListener->OnAddressBarKeypadWillOpen(*this);
844                 __pListener->OnAddressBarKeypadOpened(*this);
845         }
846 }
847
848 void
849 Addressbar::OnFocusLost(const Tizen::Ui::Control& source)
850 {
851         AppLog("Addressbar::OnFocusLost");
852 }
853
854 void
855 Addressbar::OnTextValueChanged(const Control& source)
856 {
857         if(__pAddressbarUrlField != null)
858         {
859                 if(__pAddressbarUrlField->GetTextLength() == 0)
860                 {
861                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
862                 }
863                 else
864                 {
865                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
866                 }
867         }
868 }
869
870 void
871 Addressbar::SetAddressbarURLFocus()
872 {
873         __pAddressbarUrlField->SetFocus();
874 }
875
876 String
877 Addressbar::GetAddressbarURL()
878 {
879         return __pAddressbarUrlField->GetText();
880 }