boiler plate : flora site fixed
[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::ResetGuideText(void)
309 {
310         AppLog("Addressbar::ResetGuideText called");
311
312         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
313         {
314                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
315         }
316         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
317         {
318                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
319         }
320         else
321         {
322                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
323                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
324         }
325         __pAddressbarUrlField->Invalidate(true);
326 }
327
328 void
329 Addressbar::SetUrl(const String& url)
330 {
331         __displayUrl = url;
332         String updatedDisplayUrl;
333         updatedDisplayUrl.Clear();
334
335         if (__pAddressbarUrlField != NULL)
336         {
337                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
338                 if (removedHttpUrl.IsEmpty() == false)
339                 {
340                         __pAddressbarUrlField->SetText(removedHttpUrl);
341                 }
342                 else
343                 {
344                         __pAddressbarUrlField->SetText(__displayUrl);
345                 }
346
347                 __pAddressbarUrlField->Invalidate(false);
348                 __pAddressbarUrlField->SetCursorPosition(0);
349         }
350 }
351
352 String
353 Addressbar::GetUrl(void)
354 {
355         return __displayUrl;
356 }
357
358 /*AddressBarMode
359 Addressbar::GetAddressbarMode(void)
360 {
361         return __currentAddMode;
362 }*/
363
364 /*void
365 Addressbar::SetAddressbarMode(AddressBarMode addMode)
366 {
367         AppLogDebug("AddressBar::setAddressbarMode to %d",addMode);
368
369         __currentAddMode = addMode;
370
371         switch(addMode)
372         {
373         case ADDRESSBAR_MODE_INVALID:
374         {
375                 // do nothing
376         }
377         break;
378         case ADDRESSBAR_MODE_READER:
379         {
380         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
381         //      __pSearchLabel->SetShowState(false);
382         //      __pFaviconLabel->SetShowState(true);
383         //      __pCancelBtn->SetShowState(false);
384         //      __pRefreshBtn->SetShowState(false);
385                 __pStopBtn->SetShowState(false);
386         //      __pReaderBtn->SetShowState(true);
387         //      __pReaderBtn->Invalidate(true);
388         //      __pGoForwardBtn->SetShowState(true);
389         //      __pGoBackBtn->SetShowState(true);
390                 __pClearBtn->SetShowState(false);
391         }
392         break;
393         case ADDRESSBAR_MODE_LOADING:
394         {
395         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
396         //      __pSearchLabel->SetShowState(false);
397         //      __pFaviconLabel->SetShowState(true);
398         //      __pCancelBtn->SetShowState(false);
399         //      __pRefreshBtn->SetShowState(false);
400                 __pStopBtn->SetShowState(true);
401         //      __pReaderBtn->SetShowState(false);
402         //      __pGoForwardBtn->SetShowState(true);
403         //      __pGoBackBtn->SetShowState(true);
404                 __pClearBtn->SetShowState(false);
405         }
406         break;
407
408         case ADDRESSBAR_MODE_LOADING_COMPLETE:
409         {
410         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y);
411         //      __pCancelBtn->SetShowState(false);
412
413                 if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == false)
414                 {
415                 //      __pSearchLabel->SetShowState(false);
416                 //      __pFaviconLabel->SetShowState(true);
417                 }
418                 else
419                 {
420                 //      __pSearchLabel->SetShowState(true);
421                 //      __pFaviconLabel->SetShowState(false);
422                 }
423
424                 if (__pAddressbarUrlField != NULL)
425                 {
426                         __pAddressbarUrlField->SetText(__displayUrl);
427                         __pAddressbarUrlField->HideKeypad();
428                 }
429
430         //      __pRefreshBtn->SetShowState(true);
431                 __pStopBtn->SetShowState(false);
432         //      __pReaderBtn->SetShowState(false);
433         //      __pGoForwardBtn->SetShowState(true);
434         //      __pGoBackBtn->SetShowState(true);
435                 __pClearBtn->SetShowState(false);
436         }
437         break;
438         case ADDRESSBAR_MODE_EDIT:
439         {
440                 Form *pForm = static_cast<Form*>(GetParent());
441                 if (pForm!= null && (pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT ||pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE ))
442                 {
443                 //      __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pBgPanel->GetHeight());
444                 //      __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pAddressbarBg->GetHeight());
445                         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
446                 }
447                 else
448                 {
449                 //      __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pBgPanel->GetHeight());
450                 //      __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast<Form*>(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pAddressbarBg->GetHeight());
451                         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
452                 }
453
454         //      __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x,__pBgPanel->GetPosition().y);
455         //      __pCancelBtn->SetShowState(true);
456         //      __pRefreshBtn->SetShowState(false);
457                 __pStopBtn->SetShowState(false);
458         //      __pReaderBtn->SetShowState(false);
459         //      __pGoForwardBtn->SetShowState(false);
460         //      __pGoBackBtn->SetShowState(false);
461                 __pClearBtn->SetShowState(true);
462
463
464 //              __pCancelBtn->SetBounds(__pBgPanel->GetWidth(), __pCancelBtn->GetY(), GetWidth() - 48 - __pBgPanel->GetWidth(), __pCancelBtn->GetHeight());
465
466                 if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == true)
467                 {
468                 //      __pSearchLabel->SetShowState(true);
469                 //      __pFaviconLabel->SetShowState(false);
470                 }
471                 else
472                 {
473                 //      __pSearchLabel->SetShowState(false);
474                 //      __pFaviconLabel->SetShowState(true);
475                 }
476                 if (__pAddressbarUrlField != NULL)
477                 {
478                         __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
479                 }
480
481         }
482         break;
483         }
484
485         if (__pAddressbarBg->GetWidth() != __pBgPanel->GetWidth())
486         {
487                 __pAddressbarBg->SetBounds(Rectangle(0, 0, __pBgPanel->GetWidth(), __pBgPanel->GetHeight()));
488                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_search_input_field_bg.9.png", __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
489                 if (pBitmap != null)
490                 {
491                         __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
492                         delete pBitmap;
493                 }
494         }
495
496         Invalidate(true);
497
498         if (__pListener != null)
499         {
500                 __pListener->OnAddressBarModeChanged(*this);
501         }
502 }*/
503
504 void
505 Addressbar::SetFaviconBitmap(const Tizen::Graphics::Bitmap& favicon)
506 {
507
508         String url =__pAddressbarUrlField->GetText();
509         String secureSiteText = "https://";
510         bool flag = false;
511         flag = url.StartsWith(secureSiteText,0);
512
513         if (__pFavIcon != null)
514         {
515                 delete __pFavIcon;
516         }
517
518         __pFavIcon = new(std::nothrow) Bitmap();
519         __pFavIcon->Construct(favicon,Rectangle(0,0,favicon.GetWidth(),favicon.GetHeight()));
520 }
521
522 void Addressbar::SaveAddressbarEditText()
523 {
524         __editTextUrl = __pAddressbarUrlField->GetText();
525 }
526
527 void
528 Addressbar::UpdateFaviconBitmap(bool isPrivateOn)
529 {
530
531         String url =__pAddressbarUrlField->GetText();
532         String secureSiteText = "https://";
533         bool flag = false;
534         flag = url.StartsWith(secureSiteText,0);
535
536         __pAddressbarBg->Invalidate(true);
537 }
538
539 void
540 Addressbar::SetForwardButtonEnabled(bool isEnabled)
541 {
542 //      __pGoForwardBtn->SetEnabled(isEnabled);
543 //      __pGoBackBtn->Invalidate(true);
544 }
545
546 void
547 Addressbar::SetBackButtonEnabled(bool isEnabled)
548 {
549 //      __pGoBackBtn->SetEnabled(isEnabled);
550 //      __pGoBackBtn->Invalidate(true);
551 }
552
553 void
554 Addressbar::SetAddressbarEventListener(IAddressbarEventListener* plistener)
555 {
556         __pListener = plistener;
557 }
558
559 void
560 Addressbar::UpdateProgress(int percentage)
561 {
562         __progressPercentage = percentage;
563         if (percentage == 0 || percentage == 100)
564         {
565                 __isLoadingData = false;
566                 if (percentage == 100)
567                 {
568                         __isLoadingCompleted = true;
569                         __progressPercentage = 0;
570                 }
571                 else
572                 {
573                         __isLoadingCompleted = false;
574                 }
575         }
576         else
577         {
578                 __isLoadingData = true;
579         }
580         UpdateProgressBitmap();
581 }
582
583 int
584 Addressbar::GetProgress(void)
585 {
586         return __progressPercentage;
587 }
588
589 void
590 Addressbar::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
591 {
592         AppLogDebug("Addressbar::OnActionPerformed action %d",actionId);
593
594         switch (actionId)
595         {
596         case IDA_REFRESH_BTN_CLICKED:
597                 __isLoadingCompleted = false;
598                 __isLoadingData = true;
599                 __progressPercentage = 0;
600                 __pAddressbarUrlField->HideKeypad();
601                 __displayUrl = __pAddressbarUrlField->GetText();
602
603                 /*if (__pListener != NULL)
604                 {
605                         __pListener->OnUrlSubmitted(*this);
606                 }*/
607
608                 UpdateProgressBitmap();
609                 break;
610
611         case IDA_STOP_BTN_CLICKED:
612                 __isLoadingCompleted = false;
613                 __isLoadingData = false;
614                 __progressPercentage = 0;
615                 __pAddressbarUrlField->HideKeypad();
616                 __displayUrl = __pAddressbarUrlField->GetText();
617
618                 if (__pListener != NULL)
619                 {
620                         __pListener->OnStopClicked(*this);
621                 }
622
623                 UpdateProgressBitmap();
624                 break;
625         case IDA_READER_BTN_CLICKED:
626                 __pAddressbarUrlField->HideKeypad();
627                 __displayUrl = __pAddressbarUrlField->GetText();
628
629                 if (__pListener != NULL)
630                 {
631                         __pListener->OnReaderClicked(*this);
632                 }
633
634                 break;
635
636         /*case IDA_GO_BACK:
637         {
638                 if (__pListener != NULL)
639                 {
640                         __pListener->OnBackClicked(*this);
641
642                 }
643         }
644         break;
645
646         case IDA_GO_FORWARD:
647         {
648                 if (__pListener != NULL )
649                         __pListener->OnForwardClicked(*this);
650         }
651         break;*/
652
653         case IDA_CANCEL:
654         {
655
656                 __pAddressbarUrlField->SetText(__displayUrl);
657                 __editTextUrl = L"";
658                 __pAddressbarUrlField->HideKeypad();
659                 __pListener->OnAddressCancelledClicked(*this);
660                 //SetAddressbarMode(ADDRESSBAR_MODE_LOADING_COMPLETE);
661         }
662         break;
663
664         case IDA_CLEAR_URL:
665         {
666                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
667                 {
668                         //__displayUrl = __pUrlField->GetText();
669                         __pAddressbarUrlField->Clear();
670                         __pAddressbarUrlField->Invalidate(true);
671                 }
672         }
673         break;
674         default:
675                 break;
676         }
677 }
678
679 void
680 Addressbar::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
681 {
682         AppLog("Addressbar::OnKeypadActionPerformed keypadAction %d",keypadAction);
683         switch (keypadAction)
684         {
685         case KEYPAD_ACTION_GO:
686         case KEYPAD_ACTION_ENTER:
687         case KEYPAD_ACTION_SEND:
688         {
689                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
690                 {
691                         //SetAddressbarMode(ADDRESSBAR_MODE_LOADING);
692                         __displayUrl = __pAddressbarUrlField->GetText();
693
694                         __isLoadingCompleted = false;
695                         __isLoadingData = true;
696                         __progressPercentage = 0;
697                         __pAddressbarUrlField->HideKeypad();
698
699                         if (__pListener != NULL)
700                         {
701                                 __pListener->OnUrlSubmitted(*this);
702                         }
703
704                         //UpdateProgressBitmap();
705                 }
706         }
707         break;
708
709         default:
710                 break;
711         }
712 }
713
714 void
715 Addressbar::OnKeypadClosed(Tizen::Ui::Control& source)
716 {
717         SetShowState(false);
718         if(__pListener != null)
719         {
720                 __pListener->OnAddressBarKeypadClosed(*this);
721         }
722 }
723
724 void
725 Addressbar::OnKeypadOpened(Tizen::Ui::Control& source)
726 {
727         if(__pListener != null)
728         {
729                 __pListener->OnAddressBarKeypadOpened(*this);
730         }
731 }
732
733 void
734 Addressbar::OnKeypadWillOpen(Tizen::Ui::Control& source)
735 {
736         if(__pListener != null)
737         {
738                 __pListener->OnAddressBarKeypadWillOpen(*this);
739         }
740 }
741
742 void
743 Addressbar::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
744 {
745         AppLog("Coming here");
746         if(__pListener != null)
747                 {
748                         __pListener->OnAddressBarKeypadBoundsChanged(*this);
749                 }
750 }
751
752 void
753 Addressbar::OrientationChanged( int& width)
754 {
755        int gap = 10;
756         __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(), width - __pAddressBackBtn->GetWidth() - gap -__pBgPanel->GetX() ,__pBgPanel->GetHeight());
757         __pAddressBackBtn->SetBounds(width - __pAddressBackBtn->GetWidth() - 6,__pAddressBackBtn->GetY(),__pAddressBackBtn->GetWidth(),__pAddressBackBtn->GetHeight());
758         __pStopBtn->SetBounds(__pBgPanel->GetWidth() - __pStopBtn->GetWidth(),__pStopBtn->GetY(),__pStopBtn->GetWidth(),__pStopBtn->GetHeight());
759         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth() ,__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
760 //      __pAddressbarUrlField->SetBounds(__pToolBarLabel->GetWidth(),__pAddressbarUrlField->GetY(),__pBgPanel->GetWidth() - __pStopBtn->GetWidth()- __pToolBarLabel->GetWidth() ,__pAddressbarUrlField->GetHeight());
761
762         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
763         if (pBitmap != null)
764         {
765                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
766                 delete pBitmap;
767         }
768         Invalidate(true);
769 }
770
771 String
772 Addressbar::RemoveHttpTextFromDisplayURL(void)
773 {
774         bool isHttpText = __displayUrl.Contains(L"http://");
775         String updatedDisplayUrl;
776         updatedDisplayUrl.Clear();
777
778         if (isHttpText == true)
779         {
780                 __displayUrl.SubString(7,updatedDisplayUrl);
781         }
782         return updatedDisplayUrl;
783 }
784
785 Bitmap*
786 Addressbar::GetLockedImageN(void)
787 {
788         Bitmap* pIconImage = null;
789
790         AppResource* pAppResource = Application::GetInstance()->GetAppResource();
791         if (pAppResource)
792         {
793                 pIconImage = pAppResource->GetBitmapN(IDB_ICON_PRIVATE);
794         }
795
796         Bitmap* pLockImage = new (std::nothrow) Bitmap();
797
798         Canvas* pCanvas = new (std::nothrow) Canvas();
799         pCanvas->Construct(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
800         pCanvas->Clear();
801         if(__pFavIcon != null)
802         {
803                 pCanvas->DrawBitmap(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()),*__pFavIcon);
804         }
805         if(pIconImage != null)
806         {
807                 pCanvas->DrawBitmap(Rectangle(__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2,__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2),*pIconImage);
808         }
809         pLockImage->Construct(*pCanvas,Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
810
811         delete pCanvas;
812         return pLockImage;
813 }
814
815 void
816 Addressbar::OnFocusGained(const Control& source)
817 {
818         //SetAddressbarMode(ADDRESSBAR_MODE_EDIT);
819         //      SetAddressbarMode(__prevAddMode);
820
821         if(__pAddressbarUrlField != null)
822         {
823                 __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
824                 if(__pAddressbarUrlField->GetTextLength() == 0)
825                 {
826                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
827                 }
828                 else
829                 {
830                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
831                 }
832         }
833         if (__pListener != null)
834         {
835                 __pListener->OnAddressBarKeypadWillOpen(*this);
836                 __pListener->OnAddressBarKeypadOpened(*this);
837         }
838 }
839
840 void
841 Addressbar::OnFocusLost(const Tizen::Ui::Control& source)
842 {
843         AppLog("Addressbar::OnFocusLost");
844 }
845
846 void
847 Addressbar::OnTextValueChanged(const Control& source)
848 {
849         if(__pAddressbarUrlField != null)
850         {
851                 if(__pAddressbarUrlField->GetTextLength() == 0)
852                 {
853                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
854                 }
855                 else
856                 {
857                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
858                 }
859         }
860 }
861
862 void
863 Addressbar::SetAddressbarURLFocus()
864 {
865         __pAddressbarUrlField->SetFocus();
866 }
867
868 String
869 Addressbar::GetAddressbarURL()
870 {
871         return __pAddressbarUrlField->GetText();
872 }