Fixed Nabi issue N_SE-40542,N_SE-39949,N_SE-40229
[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.1 (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::Graphics;
32 using namespace Tizen::System;
33 using namespace Tizen::Ui;
34 using namespace Tizen::Ui::Controls;
35
36 static const wchar_t* IDB_SEARCH_INPUT_FIELD_BG = L"I01_toolbar_input_field.9.png";
37 static const wchar_t* IDB_TITLE_PROGRESS_BAR_BG = L"I01_title_progress_bar_bg.png";
38 static const wchar_t* IDB_TITLE_PROGRESS_BAR = L"I01_title_progress_bar.png";
39 static const wchar_t* IDB_ICON_PRIVATE = L"I01_icon_private.png";
40
41 //Action IDs
42
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         __pClearBtn = null;
60         __pFavIcon = FaviconManager::GetInstance()->GetDefaultFaviconN();
61         __pFaviconLabel = null;
62         __pLabelPrivateOn = null;
63         __pListener = null;
64         __pPrivateIconLabel = null;
65         __pProgressbarLabel = null;
66         __pPrivateIconLabel = null ;
67         __pClearBtn = null ;
68         __pSearchLabel = null;
69         __pAddressbarUrlField = null;
70         __pToolBarLabel = null;
71         __pAddressbarURLLabel = null;
72         __pAddressBackBtn = null;
73         __isClipboardOpen = false;
74         __isKeyboardConnected = false;
75         __isKeyPadOpened = false;
76 }
77
78 Addressbar::~Addressbar(void)
79 {
80         if (__pFavIcon != null)
81         {
82                 delete __pFavIcon;
83                 __pFavIcon = null;
84         }
85 }
86
87 result
88 Addressbar::OnTerminating(void)
89 {
90         DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_USB_CLIENT, *this);
91 }
92
93 result
94 Addressbar::Initialize(const Rectangle& rect)
95 {
96         result r = E_SUCCESS;
97
98         AppLogDebug("Addressbar::Initialize entered");
99         //Construct the base first
100         r = Construct(L"IDL_ADDRESSBAR");
101
102         //Add background label
103         Label* pBgLabel = static_cast<Label*> (GetControl(L"IDC_BG_LABEL",true));
104         if (pBgLabel == NULL)
105         {
106                 AppLogDebug("Control not found returning E_INVALID_KEY");
107                 return E_INVALID_KEY;
108         }
109
110         //Add inner panel for border
111         __pBgPanel = static_cast<Panel*> (GetControl(L"IDC_BG_PANEL",true));
112         if (__pBgPanel == NULL)
113         {
114                 AppLogDebug("Control not found returning E_INVALID_KEY");
115                 return E_INVALID_KEY;
116         }
117
118         __pAddressbarBg = static_cast<Label*> (GetControl(L"IDC_ADDRESSBAR_BG_LABEL",true));
119         if (__pAddressbarBg == NULL)
120         {
121                 AppLogDebug("Control not found returning E_INVALID_KEY");
122                 return E_INVALID_KEY;
123         }
124         __pBgPanel->SetBackgroundColor(CUSTOM_COLOR_TRANSPARENT);
125         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
126         if (pBitmap != null)
127         {
128                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
129                 delete pBitmap;
130         }
131
132         __pClearBtn = static_cast<Button*> (GetControl(L"IDC_CLEAR_BUTTON",true));
133         if (__pClearBtn == NULL)
134         {
135                 AppLogDebug("Control not found returning E_INVALID_KEY");
136                 return E_INVALID_KEY;
137         }
138         __pClearBtn->SetActionId(IDA_CLEAR_URL);
139         __pClearBtn->AddActionEventListener(*this);
140         __pClearBtn->SetShowState(true);
141
142         //Add the editfield for url
143         __pAddressbarUrlField =  static_cast<EditField*> (GetControl(L"IDC_URL_EDITFIELD",true));
144         if (__pAddressbarUrlField == NULL)
145         {
146                 AppLogDebug("Control not found returning E_INVALID_KEY");
147                 return E_INVALID_KEY;
148         }
149
150         __pAddressbarUrlField->SetOverlayKeypadCommandButtonVisible(false);
151         __pAddressbarUrlField->SetKeypadAction(KEYPAD_ACTION_GO);
152         __pAddressbarUrlField->AddFocusEventListener(*this);
153         __pAddressbarUrlField->AddTextEventListener(*this);
154         if(__pAddressbarUrlField->GetTextLength() == 0)
155         {
156                 __pAddressbarUrlField->SetKeypadActionEnabled(false);
157         }
158         else
159         {
160                 __pAddressbarUrlField->SetKeypadActionEnabled(true);
161         }
162
163         __pToolBarLabel = static_cast<Label*> (GetControl(L"IDC_TOOLBAR_LABEL",true));
164         if (__pToolBarLabel == NULL)
165         {
166                 AppLogDebug("Control not found returning E_INVALID_KEY");
167                 return E_INVALID_KEY;
168         }
169         __pToolBarLabel->SetShowState(true);
170
171         __pAddressbarURLLabel = static_cast<Label*> (GetControl(L"IDC_URL_LABEL",true));
172         if (__pAddressbarURLLabel == NULL)
173         {
174                 AppLogDebug("__pURLLabel Control not found returning E_INVALID_KEY");
175                 return E_INVALID_KEY;
176         }
177         __pAddressbarURLLabel->SetShowState(true);
178
179         __pAddressBackBtn = static_cast<Button*> (GetControl(L"IDC_ADDRESS_BACK_BUTTON",true));
180         if (__pAddressBackBtn == NULL)
181         {
182                 AppLogDebug("__pAddressBackBtn Control not found returning E_INVALID_KEY");
183                 return E_INVALID_KEY;
184         }
185         __pAddressBackBtn->SetActionId(IDA_CANCEL);
186         __pAddressBackBtn->AddActionEventListener(*this);
187         __pAddressBackBtn->SetShowState(true);
188         //IDC_ADDRESS_BACK_BUTTON
189
190         // Added to get the favorite url if not set then address bar is about blank
191
192         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
193         {
194                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
195         }
196         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
197         {
198                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
199         }
200         else
201         {
202                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
203                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
204         }
205         __pAddressbarUrlField->AddKeypadEventListener(*this);
206
207         r = DeviceManager::AddDeviceEventListener(DEVICE_TYPE_USB_CLIENT,*this);
208         AppLog("1234:: DeviceManager::AddDeviceEventListener result %s",GetErrorMessage(r));
209         AppLogDebug("Addressbar::Initialize exit");
210         return r;
211 }
212
213 void
214 Addressbar::UpdateProgressBitmap(void)
215 {
216         result r = E_SUCCESS;
217         if (__pProgressbarLabel == null)
218                 return;
219         int w = __pProgressbarLabel->GetWidth();
220         int h = __pProgressbarLabel->GetHeight();
221         Canvas canvas;
222         int progressWidth = 0;
223         Bitmap* pRetBitmap = null;
224
225         if (__progressPercentage == 0 || __progressPercentage == 100)
226         {
227                 __pProgressbarLabel->SetShowState(false);
228                 __pProgressbarLabel->Invalidate(false);
229                 return;
230         }
231         else
232         {
233                 __pProgressbarLabel->SetShowState(true);
234                 __pProgressbarLabel->Invalidate(false);
235         }
236
237         r = canvas.Construct(Rectangle(0, 0, w, h));
238
239         if (r != E_SUCCESS)
240         {
241                 AppLogException("Canvas construction failed with %s", GetErrorMessage(r));
242                 return;
243         }
244
245         canvas.Clear();
246         Bitmap *pBgBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR_BG);
247
248         if (pBgBmp != null)
249         {
250                 pBgBmp->Scale(Dimension(w, h));
251                 canvas.DrawBitmap(Point(0,0), *pBgBmp);
252                 delete pBgBmp;
253         }
254
255         progressWidth = (double) (w) * __progressPercentage / 100;
256         AppLogDebug("progressWidth: %d", progressWidth);
257         Bitmap *pProgressBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR);
258
259         if (pProgressBmp != null)
260         {
261                 pProgressBmp->Scale(Dimension(progressWidth, h));
262                 canvas.DrawBitmap(Point(0,0), *pProgressBmp);
263                 delete pProgressBmp;
264         }
265
266         pRetBitmap = new (std::nothrow) Bitmap();
267
268         if (pRetBitmap == null)
269         {
270                 AppLogException("Bitmap creation failed with %s", GetErrorMessage(r));
271                 return;
272         }
273
274         pRetBitmap->Construct(canvas, canvas.GetBounds());
275
276         if (__pProgressbarLabel != null && pRetBitmap != null)
277         {
278                 __pProgressbarLabel->SetBackgroundBitmap(*pRetBitmap);
279                 __pProgressbarLabel->Invalidate(false);
280         }
281
282
283         if (pRetBitmap != null)
284         {
285                 delete pRetBitmap;
286                 pRetBitmap = null;
287         }
288         return;
289 }
290
291 void
292 Addressbar::ResetGuideText(void)
293 {
294         AppLog("Addressbar::ResetGuideText called");
295
296         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
297         {
298                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
299         }
300         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
301         {
302                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
303         }
304         else
305         {
306                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
307                 __pAddressbarUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
308         }
309         __pAddressbarUrlField->Invalidate(true);
310 }
311
312 void
313 Addressbar::SetUrl(const String& url)
314 {
315         __displayUrl = url;
316         String updatedDisplayUrl;
317         updatedDisplayUrl.Clear();
318
319         if (__pAddressbarUrlField != NULL)
320         {
321                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
322                 if (removedHttpUrl.IsEmpty() == false)
323                 {
324                         __pAddressbarUrlField->SetText(removedHttpUrl);
325                 }
326                 else
327                 {
328                         __pAddressbarUrlField->SetText(__displayUrl);
329                 }
330
331                 __pAddressbarUrlField->Invalidate(false);
332                 __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
333         }
334 }
335
336 String
337 Addressbar::GetUrl(void)
338 {
339         return __displayUrl;
340 }
341
342 void
343 Addressbar::SetFaviconBitmap(const Tizen::Graphics::Bitmap& favicon)
344 {
345
346         String url =__pAddressbarUrlField->GetText();
347         String secureSiteText = "https://";
348         bool flag = false;
349         flag = url.StartsWith(secureSiteText,0);
350
351         if (__pFavIcon != null)
352         {
353                 delete __pFavIcon;
354         }
355
356         __pFavIcon = new(std::nothrow) Bitmap();
357         __pFavIcon->Construct(favicon,Rectangle(0,0,favicon.GetWidth(),favicon.GetHeight()));
358 }
359
360 void Addressbar::SaveAddressbarEditText()
361 {
362 //      __editTextUrl = __pAddressbarUrlField->GetText();
363 }
364
365 void
366 Addressbar::UpdateFaviconBitmap(bool isPrivateOn)
367 {
368
369         String url =__pAddressbarUrlField->GetText();
370         String secureSiteText = "https://";
371         bool flag = false;
372         flag = url.StartsWith(secureSiteText,0);
373
374         __pAddressbarBg->Invalidate(true);
375 }
376
377 void
378 Addressbar::SetForwardButtonEnabled(bool isEnabled)
379 {
380 }
381
382 void
383 Addressbar::SetBackButtonEnabled(bool isEnabled)
384 {
385 }
386
387 void
388 Addressbar::SetAddressbarEventListener(IAddressbarEventListener* plistener)
389 {
390         __pListener = plistener;
391 }
392
393 void
394 Addressbar::UpdateProgress(int percentage)
395 {
396         __progressPercentage = percentage;
397         if (percentage == 0 || percentage == 100)
398         {
399                 __isLoadingData = false;
400                 if (percentage == 100)
401                 {
402                         __isLoadingCompleted = true;
403                         __progressPercentage = 0;
404                 }
405                 else
406                 {
407                         __isLoadingCompleted = false;
408                 }
409         }
410         else
411         {
412                 __isLoadingData = true;
413         }
414         UpdateProgressBitmap();
415 }
416
417 int
418 Addressbar::GetProgress(void)
419 {
420         return __progressPercentage;
421 }
422
423 void
424 Addressbar::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
425 {
426         AppLogDebug("Addressbar::OnActionPerformed action %d",actionId);
427
428         switch (actionId)
429         {
430         case IDA_CANCEL:
431         {
432 //              __pAddressbarUrlField->HideKeypad();
433                 __pListener->OnAddressCancelledClicked(*this);
434                 //SetAddressbarMode(ADDRESSBAR_MODE_LOADING_COMPLETE);
435         }
436         break;
437
438         case IDA_CLEAR_URL:
439         {
440                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
441                 {
442                         //__displayUrl = __pUrlField->GetText();
443                         __pAddressbarUrlField->Clear();
444                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
445                         __pAddressbarUrlField->Invalidate(true);
446                 }
447         }
448         break;
449         default:
450                 break;
451         }
452 }
453
454 void
455 Addressbar::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
456 {
457         AppLog("XYZ::Addressbar::OnKeypadActionPerformed keypadAction %d",keypadAction);
458         switch (keypadAction)
459         {
460         case KEYPAD_ACTION_GO:
461         case KEYPAD_ACTION_ENTER:
462         case KEYPAD_ACTION_SEND:
463         {
464                 if (__pAddressbarUrlField->GetText().IsEmpty() == false)
465                 {
466                         //SetAddressbarMode(ADDRESSBAR_MODE_LOADING);
467                         __displayUrl = __pAddressbarUrlField->GetText();
468
469                         __isLoadingCompleted = false;
470                         __isLoadingData = true;
471                         __progressPercentage = 0;
472                         __pAddressbarUrlField->HideKeypad();
473
474                         if (__pListener != NULL)
475                         {
476                                 __pListener->OnUrlSubmitted(*this);
477                         }
478
479                         //UpdateProgressBitmap();
480                 }
481         }
482         break;
483
484         default:
485                 break;
486         }
487 }
488
489 void
490 Addressbar::OnKeypadClosed(Tizen::Ui::Control& source)
491 {
492         AppLog("XYZ::Addressbar::OnKeypadClosed");
493
494         __isKeyPadOpened = false;
495
496         if (__isKeyboardConnected == true)
497         {
498                 return;
499         }
500         if (__isClipboardOpen == true)
501         {
502                 __isClipboardOpen = false;
503                 __pListener->OnClipboardClosed(*this);
504                 return;
505         }
506
507
508 //      if(__pAddressbarUrlField)
509 //      {
510 //              String removedHttpUrl = RemoveHttpTextFromDisplayURL();
511 //              if (removedHttpUrl.IsEmpty() == false)
512 //              {
513 //                      __pAddressbarUrlField->SetText(removedHttpUrl);
514 //              }
515 //              else
516 //              {
517 //                      __pAddressbarUrlField->SetText(__displayUrl);
518 //              }
519 //      }
520 //      __editTextUrl = L"";
521         if(__pListener != null)
522         {
523                 __pListener->OnAddressBarKeypadClosed(*this,true);
524         }
525 }
526
527 void
528 Addressbar::OnKeypadOpened(Tizen::Ui::Control& source)
529 {
530         AppLog("XYZ::Addressbar::OnKeypadOpened");
531         AppLog("Addressbar::OnKeypadOpened %d",Clipboard::GetInstance()->IsPopupVisible());
532
533         __isKeyPadOpened = true;
534
535         __isClipboardOpen = Clipboard::GetInstance()->IsPopupVisible();
536
537         if(__pListener != null)
538         {
539                 __pListener->OnAddressBarKeypadOpened(*this);
540         }
541 }
542
543 void
544 Addressbar::OnKeypadWillOpen(Tizen::Ui::Control& source)
545 {
546         AppLog("XYZ::Addressbar::OnKeypadWillOpen");
547
548 }
549
550 void
551 Addressbar::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
552 {
553         AppLog("Coming here");
554         if(__pListener != null)
555                 {
556                         __pListener->OnAddressBarKeypadBoundsChanged(*this);
557                 }
558 }
559
560 void
561 Addressbar::OrientationChanged( int& width)
562 {
563        int gap = 10;
564         __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(), width - __pAddressBackBtn->GetWidth() - gap -__pBgPanel->GetX() ,__pBgPanel->GetHeight());
565         __pAddressBackBtn->SetBounds(width - __pAddressBackBtn->GetWidth() - 6,__pAddressBackBtn->GetY(),__pAddressBackBtn->GetWidth(),__pAddressBackBtn->GetHeight());
566         __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth() ,__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight());
567
568         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight());
569         if (pBitmap != null)
570         {
571                 __pAddressbarBg->SetBackgroundBitmap(*pBitmap);
572                 delete pBitmap;
573         }
574
575         Invalidate(true);
576 }
577
578 String
579 Addressbar::RemoveHttpTextFromDisplayURL(void)
580 {
581         bool isHttpText = __displayUrl.Contains(L"http://");
582         String updatedDisplayUrl;
583         updatedDisplayUrl.Clear();
584
585         if (isHttpText == true)
586         {
587                 __displayUrl.SubString(7,updatedDisplayUrl);
588         }
589         return updatedDisplayUrl;
590 }
591
592 Bitmap*
593 Addressbar::GetLockedImageN(void)
594 {
595         Bitmap* pIconImage = null;
596
597         AppResource* pAppResource = Application::GetInstance()->GetAppResource();
598         if (pAppResource)
599         {
600                 pIconImage = pAppResource->GetBitmapN(IDB_ICON_PRIVATE);
601         }
602
603         Bitmap* pLockImage = new (std::nothrow) Bitmap();
604
605         Canvas* pCanvas = new (std::nothrow) Canvas();
606         pCanvas->Construct(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
607         pCanvas->Clear();
608         if(__pFavIcon != null)
609         {
610                 pCanvas->DrawBitmap(Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()),*__pFavIcon);
611         }
612         if(pIconImage != null)
613         {
614                 pCanvas->DrawBitmap(Rectangle(__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2,__pFaviconLabel->GetWidth()/2,__pFaviconLabel->GetHeight()/2),*pIconImage);
615         }
616         pLockImage->Construct(*pCanvas,Rectangle(0,0,__pFaviconLabel->GetWidth(),__pFaviconLabel->GetHeight()));
617
618         delete pCanvas;
619         return pLockImage;
620 }
621
622 void
623 Addressbar::OnFocusGained(const Control& source)
624 {
625         AppLog("XYZ::Addressbar::OnFocusGained");
626         if(__pAddressbarUrlField != null)
627         {
628                 __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength());
629                 if(__pAddressbarUrlField->GetTextLength() == 0)
630                 {
631                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
632                 }
633                 else
634                 {
635                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
636                 }
637         }
638         if (__pListener != null)
639         {
640                 __pListener->OnAddressBarFocusGained(*this);
641         }
642 }
643
644 void
645 Addressbar::OnFocusLost(const Tizen::Ui::Control& source)
646 {
647         AppLog("XYZ::Addressbar::OnFocusLost");
648         if(__pAddressbarUrlField)
649         {
650                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
651                 if (removedHttpUrl.IsEmpty() == false)
652                 {
653                         __pAddressbarUrlField->SetText(removedHttpUrl);
654                 }
655                 else
656                 {
657                         __pAddressbarUrlField->SetText(__displayUrl);
658                 }
659         }
660 //      __editTextUrl = L"";
661         if(__pListener != null)
662         {
663                 __pListener->OnAddressBarFocusLost(*this, __isKeyPadOpened);
664         }
665 }
666
667 void
668 Addressbar::OnTextValueChanged(const Control& source)
669 {
670         if(__pAddressbarUrlField != null)
671         {
672                 if(__pAddressbarUrlField->GetTextLength() == 0)
673                 {
674                         __pAddressbarUrlField->SetKeypadActionEnabled(false);
675                 }
676                 else
677                 {
678                         __pAddressbarUrlField->SetKeypadActionEnabled(true);
679                 }
680         }
681 }
682
683 void
684 Addressbar::OnDeviceStateChanged(DeviceType deviceType, const String &state)
685 {
686         AppLog("1234:: Addressbar::OnDeviceStateChanged %ls %d",state.GetPointer(),(int)deviceType);
687         if(deviceType == DEVICE_TYPE_KEYBOARD && state.Equals(L"Closed",true) == 0)
688         {
689                 __isKeyboardConnected = true;
690         }
691 }
692 void
693 Addressbar::SetAddressbarURLFocus()
694 {
695         __pAddressbarUrlField->SetFocus();
696 }
697
698 String
699 Addressbar::GetAddressbarURL()
700 {
701         return __pAddressbarUrlField->GetText();
702 }