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         if (flag == true)
501         {
502                 Bitmap* pButtonImage = GetLockedImageN();
503
504                 if (pButtonImage != null)
505                 {
506                 //      __pFaviconLabel->SetBackgroundBitmap(*pButtonImage);
507                 //      __pFaviconLabel->Invalidate(true);
508                         delete pButtonImage;
509                 }
510         }
511         else
512         {
513                 /*if (__pFaviconLabel != null)
514                 {
515                         __pFaviconLabel->SetBackgroundBitmap(*__pFavIcon);
516                         __pFaviconLabel->Invalidate(true);
517                 }*/
518         }
519 }
520
521 void Addressbar::SaveAddressbarEditText()
522 {
523         __editTextUrl = __pAddressbarUrlField->GetText();
524 }
525
526 void
527 Addressbar::UpdateFaviconBitmap(bool isPrivateOn)
528 {
529
530         String url =__pAddressbarUrlField->GetText();
531         String secureSiteText = "https://";
532         bool flag = false;
533         flag = url.StartsWith(secureSiteText,0);
534
535         /*if (isPrivateOn == true)
536         {
537                 __pUrlField->SetBounds(__pLabelPrivateOn->GetBounds().x + __pLabelPrivateOn->GetBounds().width,__pUrlField->GetBounds().y , __pAddressbarBg->GetBounds().width - __pLabelPrivateOn->GetBounds().width - __pRefreshBtn->GetBounds().width - __pSearchLabel->GetBounds().width,__pUrlField->GetBounds().height );
538                 __pLabelPrivateOn->SetShowState(true);
539
540         }
541         else
542         {
543                 __pUrlField->SetBounds(__pLabelPrivateOn->GetBounds().x ,__pUrlField->GetBounds().y , __pAddressbarBg->GetBounds().width - __pRefreshBtn->GetBounds().width - __pSearchLabel->GetBounds().width,__pUrlField->GetBounds().height );
544                 __pLabelPrivateOn->SetShowState(false);
545         }*/
546
547
548         if (flag == true)
549                 {
550                         Bitmap* pButtonImage = GetLockedImageN();
551
552                         if (pButtonImage != null)
553                         {
554                         //      __pFaviconLabel->SetBackgroundBitmap(*pButtonImage);
555                         //      __pFaviconLabel->Invalidate(true);
556                                 delete pButtonImage;
557                         }
558                 }
559                 else
560                 {
561                         /*if (__pFaviconLabel != null)
562                         {
563                                 __pFaviconLabel->SetBackgroundBitmap(*__pFavIcon);
564                                 __pFaviconLabel->Invalidate(true);
565                         }*/
566                 }
567
568
569         __pAddressbarBg->Invalidate(true);
570 }
571
572 void
573 Addressbar::SetForwardButtonEnabled(bool isEnabled)
574 {
575 //      __pGoForwardBtn->SetEnabled(isEnabled);
576 //      __pGoBackBtn->Invalidate(true);
577 }
578
579 void
580 Addressbar::SetBackButtonEnabled(bool isEnabled)
581 {
582 //      __pGoBackBtn->SetEnabled(isEnabled);
583 //      __pGoBackBtn->Invalidate(true);
584 }
585
586 void
587 Addressbar::SetAddressbarEventListener(IAddressbarEventListener* plistener)
588 {
589         __pListener = plistener;
590 }
591
592 void
593 Addressbar::UpdateProgress(int percentage)
594 {
595         __progressPercentage = percentage;
596         if (percentage == 0 || percentage == 100)
597         {
598                 __isLoadingData = false;
599                 if (percentage == 100)
600                 {
601                         __isLoadingCompleted = true;
602                         __progressPercentage = 0;
603                 }
604                 else
605                 {
606                         __isLoadingCompleted = false;
607                 }
608         }
609         else
610         {
611                 __isLoadingData = true;
612         }
613         UpdateProgressBitmap();
614 }
615
616 int
617 Addressbar::GetProgress(void)
618 {
619         return __progressPercentage;
620 }
621
622 void
623 Addressbar::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
624 {
625         AppLogDebug("Addressbar::OnActionPerformed action %d",actionId);
626
627         switch (actionId)
628         {
629         case IDA_REFRESH_BTN_CLICKED:
630                 __isLoadingCompleted = false;
631                 __isLoadingData = true;
632                 __progressPercentage = 0;
633                 __pAddressbarUrlField->HideKeypad();
634                 __displayUrl = __pAddressbarUrlField->GetText();
635
636                 /*if (__pListener != NULL)
637                 {
638                         __pListener->OnUrlSubmitted(*this);
639                 }*/
640
641                 UpdateProgressBitmap();
642                 break;
643
644         case IDA_STOP_BTN_CLICKED:
645                 __isLoadingCompleted = false;
646                 __isLoadingData = false;
647                 __progressPercentage = 0;
648                 __pAddressbarUrlField->HideKeypad();
649                 __displayUrl = __pAddressbarUrlField->GetText();
650
651                 if (__pListener != NULL)
652                 {
653                         __pListener->OnStopClicked(*this);
654                 }
655
656                 UpdateProgressBitmap();
657                 break;
658         case IDA_READER_BTN_CLICKED:
659                 __pAddressbarUrlField->HideKeypad();
660                 __displayUrl = __pAddressbarUrlField->GetText();
661
662                 if (__pListener != NULL)
663                 {
664                         __pListener->OnReaderClicked(*this);
665                 }
666
667                 break;
668
669         /*case IDA_GO_BACK:
670         {
671                 if (__pListener != NULL)
672                 {
673                         __pListener->OnBackClicked(*this);
674
675                 }
676         }
677         break;
678
679         case IDA_GO_FORWARD:
680         {
681                 if (__pListener != NULL )
682                         __pListener->OnForwardClicked(*this);
683         }
684         break;*/
685
686         case IDA_CANCEL:
687         {
688 //              __pListener->OnAddressCancelledClicked(*this);
689                 __pAddressbarUrlField->SetText(__displayUrl);
690                 __editTextUrl = L"";
691                 __pAddressbarUrlField->HideKeypad();
692                 //SetAddressbarMode(ADDRESSBAR_MODE_LOADING_COMPLETE);
693         }
694         break;
695
696         case IDA_CLEAR_URL:
697         {
698                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
699                 {
700                         //__displayUrl = __pUrlField->GetText();
701                         __pAddressbarUrlField->Clear();
702                         __pAddressbarUrlField->Invalidate(true);
703                 }
704         }
705         break;
706         default:
707                 break;
708         }
709 }
710
711 void
712 Addressbar::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
713 {
714         AppLog("Addressbar::OnKeypadActionPerformed keypadAction %d",keypadAction);
715         switch (keypadAction)
716         {
717         case KEYPAD_ACTION_GO:
718         case KEYPAD_ACTION_ENTER:
719         case KEYPAD_ACTION_SEND:
720         {
721                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
722                 {
723                         //SetAddressbarMode(ADDRESSBAR_MODE_LOADING);
724                         __displayUrl = __pAddressbarUrlField->GetText();
725
726                         __isLoadingCompleted = false;
727                         __isLoadingData = true;
728                         __progressPercentage = 0;
729                         __pAddressbarUrlField->HideKeypad();
730
731                         if (__pListener != NULL)
732                         {
733                                 __pListener->OnUrlSubmitted(*this);
734                         }
735
736                         //UpdateProgressBitmap();
737                 }
738         }
739         break;
740
741         default:
742                 break;
743         }
744 }
745
746 void
747 Addressbar::OnKeypadClosed(Tizen::Ui::Control& source)
748 {
749         SetShowState(false);
750         if(__pListener != null)
751         {
752                 __pListener->OnAddressBarKeypadClosed(*this);
753         }
754 }
755
756 void
757 Addressbar::OnKeypadOpened(Tizen::Ui::Control& source)
758 {
759         if(__pListener != null)
760         {
761                 __pListener->OnAddressBarKeypadOpened(*this);
762         }
763 }
764
765 void
766 Addressbar::OnKeypadWillOpen(Tizen::Ui::Control& source)
767 {
768         if(__pListener != null)
769         {
770                 __pListener->OnAddressBarKeypadWillOpen(*this);
771         }
772 }
773
774 void
775 Addressbar::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
776 {
777         AppLog("Coming here");
778         if(__pListener != null)
779                 {
780                         __pListener->OnAddressBarKeypadBoundsChanged(*this);
781                 }
782 }
783
784 void
785 Addressbar::OrientationChanged(void)
786 {
787         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
788         if (pBitmap != null)
789         {
790                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
791                 delete pBitmap;
792         }
793         Invalidate(true);
794 }
795
796 String
797 Addressbar::RemoveHttpTextFromDisplayURL(void)
798 {
799         bool isHttpText = __displayUrl.Contains(L"http://");
800         String updatedDisplayUrl;
801         updatedDisplayUrl.Clear();
802
803         if (isHttpText == true)
804         {
805                 __displayUrl.SubString(7,updatedDisplayUrl);
806         }
807         return updatedDisplayUrl;
808 }
809
810 Bitmap*
811 Addressbar::GetLockedImageN(void)
812 {
813         Bitmap* pIconImage = null;
814
815         AppResource* pAppResource = Application::GetInstance()->GetAppResource();
816         if (pAppResource)
817         {
818                 pIconImage = pAppResource->GetBitmapN(IDB_ICON_PRIVATE);
819         }
820
821         Bitmap* pLockImage = new (std::nothrow) Bitmap();
822
823         Canvas* pCanvas = new (std::nothrow) Canvas();
824         pCanvas->Construct(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
825         pCanvas->Clear();
826         pCanvas->DrawBitmap(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()),*__pFavIcon);
827         pCanvas->DrawBitmap(Rectangle(__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2,__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2),*pIconImage);
828         pLockImage->Construct(*pCanvas,Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
829
830         delete pCanvas;
831         return pLockImage;
832 }
833
834 void
835 Addressbar::OnFocusGained(const Control& source)
836 {
837         //SetAddressbarMode(ADDRESSBAR_MODE_EDIT);
838         //      SetAddressbarMode(__prevAddMode);
839         __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
840         if (__pListener != null)
841         {
842                 __pListener->OnAddressBarKeypadWillOpen(*this);
843                 __pListener->OnAddressBarKeypadOpened(*this);
844         }
845 }
846
847 void
848 Addressbar::OnTextValueChanged(const Control& source)
849 {
850         if(__pAddressbarUrlField != null)
851         {
852                 if(__pAddressbarUrlField->GetTextLength() == 0)
853                 {
854                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
855                 }
856                 else
857                 {
858                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
859                 }
860         }
861
862 }
863
864 void
865 Addressbar::SetAddressbarURLFocus()
866 {
867         __pAddressbarUrlField->SetFocus();
868 }
869
870 String
871 Addressbar::GetAddressbarURL()
872 {
873         return __pAddressbarUrlField->GetText();
874 }