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