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