Fixed Nabi Issues
[apps/osp/Internet.git] / src / IntMainForm.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 MainForm class
18 /*@file:        MainForm.cpp
19  *@brief:       The %MainForm provides the common functionalities for the Main View of the Browser including the addressbar,
20  *                      loading,handling events etc.
21  */
22
23 #include <FApp.h>
24 #include <FGraphics.h>
25 #include <FMedia.h>
26 #include <FUi.h>
27 #include <FContent.h>
28
29 #include "IntBookmarkData.h"
30 #include "IntBookmarkPresentationModel.h"
31 #include "IntCommonLib.h"
32 #include "IntFaviconManager.h"
33 #include "IntMainForm.h"
34 #include "IntNotificationPanel.h"
35 #include "IntSceneRegister.h"
36 #include "IntSettingPresentationModel.h"
37
38 using namespace Tizen::App;
39 using namespace Tizen::Base;
40 using namespace Tizen::Base::Collection;
41 using namespace Tizen::Base::Runtime;
42 using namespace Tizen::Base::Utility;
43 using namespace Tizen::Graphics;
44 using namespace Tizen::Io;
45 using namespace Tizen::Locales;
46 using namespace Tizen::Media;
47 using namespace Tizen::Ui;
48 using namespace Tizen::Ui::Controls;
49 using namespace Tizen::Content;
50 using namespace Tizen::Ui::Scenes;
51 using namespace Tizen::System;
52 using namespace Tizen::Web;
53 using namespace Tizen::Web::Controls;
54
55 static const wchar_t* IDB_SEARCH_INPUT_FIELD_BG = L"I01_toolbar_input_field.9.png";
56 static const wchar_t* IDB_FINDWORD_INPUT_FIELD_BG = L"I01_toolbar_input_field_findword.9.png";
57 static const wchar_t* IDB_BTN_BACK = L"I01_icon_Back.png";
58 static const wchar_t* IDB_BTN_BACK_PRESS = L"I01_icon_Back_press.png";
59 static const wchar_t* IDB_CONTRLBAR_ICON_BOOKMARK = L"I01_search_list_icon_favorite.png";
60 static const wchar_t* IDB_CONTRLBAR_ICON_BOOKMARK_PRESS = L"I01_search_list_icon_favorite_press.png";
61 static const wchar_t* IDB_CONTRLBAR_ICON_MORE = L"I01_icon_more.png";
62 static const wchar_t* IDB_CONTRLBAR_ICON_MORE_PRESS = L"I01_icon_more_press.png";
63 static const wchar_t* IDB_CONTRLBAR_ICON_NEW_WINDOW = L"I01_icon_plus.png";
64 static const wchar_t* IDB_CONTRLBAR_ICON_NEW_WINDOW_PRESS = L"I01_icon_plus_press.png";
65 static const wchar_t* IDB_CONTROLBAR_ICON_CREATE_DISABLE = L"I01_controlbar_icon_create_disable.png";
66 static const wchar_t* IDB_BUTTON_ON = L"00_button_on.png";
67 static const wchar_t* IDB_BUTTON_OFF = L"00_button_off.png";
68 static const wchar_t* IDB_ICON_BOOKMARK_OFF_TEMP = L"I01_icon_bookmark_off_temp.png";
69 static const wchar_t* IDB_ICON_BOOKMARK_ON_TEMP = L"I01_icon_bookmark_on_temp.png";
70 static const wchar_t* IDS_TIZEN_SERVICE = L"tizen-service";
71 static const wchar_t* IDS_APPID = L"AppID";
72 static const wchar_t* IDB_TITLE_PROGRESS_BAR_BG = L"I01_title_progress_bar_bg.png";
73 static const wchar_t* IDB_TITLE_PROGRESS_BAR = L"I01_title_progress_bar.png";
74
75 const int IDA_BACKBTN_CLICKED = 101;
76 const int IDA_BOOKMARKBTN_CLICKED = 102;
77 const int IDA_MOREBTN_CLICKED = 103;
78 const int IDA_MULTIWINDOWBTN_CLICKED = 104;
79 const int IDA_NEWWINDOWBTN_CLICKED = 105;
80 const int IDA_FORWARD_CLICKED = 106;
81 const int IDA_ADDTOBOOKMARK_CLICKED = 107;
82 const int IDA_SHARE_CLICKED = 108;
83 const int IDA_FINDONPAGE_CLICKED = 109;
84 const int IDA_PRIVATEON_CLICKED = 110;
85 const int IDA_SETTINGS_CLICKED = 111;
86 const int IDA_READER_CLOSE_CLICKED = 112;
87 const int IDA_SMALLFONT_BTN_CLICKED = 113;
88 const int IDA_LARGEFONT_BTN_CLICKED = 114;
89 const int IDA_BRIGHTNESS_BTN_CLICKED = 115;
90 const int IDA_HISTORY_CLICKED = 116;
91 const int IDA_ADD_TO_BOOKMARKBTN_CLICKED = 117;
92 const int IDA_ADD_TO_HOME_CLICKED = 118;
93 const int IDA_SAVED_PAGES_CLICKED = 119;
94 const int IDA_DESKTOP_VIEW_CLICKED = 120;
95 const int IDA_SAVE_CLICKED = 121;
96
97 const int IDA_FINDWORD_SEARCH_CLICKED = 201;
98 const int IDA_FINDWORD_NEXT_CLICKED = 202;
99 const int IDA_FINDWORD_PREV_CLICKED = 203;
100 const int IDA_FINDWORD_CLEAR_CLICKED = 204;
101 const int IDA_FINDWORD_CANCEL_CLICKED = 205;
102
103 const int IDA_COPY_IMAGE_CLICKED = 206;
104 const int IDA_VIEW_IMAGE_CLICKED = 207;
105 const int IDA_SAVE_IMAGE_CLICKED = 208;
106 const int IDA_SHARE_IMAGE_CLICKED = 209;
107
108 const int IDA_COPY_TEXT_CLICKED = 210;
109 const int IDA_PASTE_TEXT_CLICKED = 211;
110 const int IDA_FIND_TEXT__CLICKED = 212;
111 const int IDA_SHARE_TEXT_CLICKED = 213;
112
113 const int IDA_GO_BACK = 214;
114 const int IDA_GO_FORWARD = 215;
115 const int IDA_REFRESH_BTN_CLICKED = 216;
116 const int IDA_STOP_BTN_CLICKED = 217;
117 const int IDA_CLEAR_URL = 218;
118
119 const int IDA_HYPERLINK_OPEN_CLICKED = 219;
120 const int IDA_HYPERLINK_COPY_LINK_CLICKED = 220;
121 const int IDA_HYPERLINK_SAVE_IMAGE_CLICKED = 222;
122 const int IDA_HYPERLINK_SHARE_IMAGE_CLICKED = 223;
123
124 const int DEFAULT_PROGRESS_PERCENTAGE = 10;
125
126 const int MainForm::IDA_FORMAT_BITMAP = 500;
127 const int MainForm::IDA_FORMAT_DELETE_BITMAP = 501;
128 const int MainForm::IDA_FORMAT_TITLE_STRING = 502;
129 const int MainForm::IDA_FORMAT_URL_STRING = 503;
130 const int MainForm::IDA_CONTEXT_ITEM_DELETE = 504;
131
132 static const int WIDTH_CONTEXT_MENU_BUTTON_PORTRAIT = 336;
133 static const int WIDTH_CONTEXT_MENU_BUTTON_LANDSCAPE = 800;
134 static const int HEIGHT_CONTEXT_MENU_BUTTON = 72;
135
136 MainForm::MainForm(void)
137 {
138         __isLongPressedDone = false;
139         __pAddressbar = null;
140         //      __pMostVisitedSitesPanel = null;
141         __pMostVisitedListView = null;
142         __pFooterPanel = null;
143         __pHitElementResult = null;
144         __pWindowInfo = null;
145         __pWebViewer = null;
146         __pImageMenu = null;
147         __pMenu = null;
148         __pFindWordControl = null;
149
150         __pFindWordBgLabel = null;
151         __pFindWordEditField = null;
152         __pFindWordClear = null;
153         __pFindWordCountLabel = null;
154         __pFindWordNext = null;
155         __pFindWordPrev = null;
156         __previousZoomLevel = 1.0;
157         __pSaveImage = null;
158         __currentAddMode = ADDRESSBAR_MODE_LOADING_COMPLETE;
159         __displayUrl = L"";
160         __editTextUrl = L"";
161         __currentSearchStr = L"";
162         __currentSelectedStr = L"";
163         __maxOccurrances = 0;
164         __currentWordIndex = 0;
165         __distanceMoved = 0;
166         __isLoaded = false;
167         __inputEventToBeSupressed = false;
168         __isLoadingData = false;
169         __isLoadingCompleted = false;
170         __progressPercentage = 0;
171         __touchPoint1 = Point(-1,-1);
172         __touchPoint2 = Point(-1,-1);
173         __pWebReader = null;
174         //      __pReaderPopup = null;
175         __pReaderData = null;
176         __pPopUp = null;
177         __pReaderCloseBtn = null;
178         //__pNewWindowButton = null;
179         __pMoreButton = null;
180         __pMultiWindowButton = null;
181         __pArticleReaderPanel = null;
182         __pBlankPanel = null;
183         __pArticleReaderLabel = null;
184         __webControlHeight = 0;
185         __prevAddressBarMode = ADDRESSBAR_MODE_INVALID;
186         __curAddressBarMode = ADDRESSBAR_MODE_INVALID;
187         __pMostVisitedSites = null;
188         __pFooterUrlField = null;
189         __pGoBackBtn = null;
190         __pGoForwardBtn = null;
191         __pRefreshBtn = null;
192         __pProgressbarLabel = null;
193         __pFooterLabel = null;
194         __pStopBtn = null;
195         __pClearBtn = null;
196         __isWebKeypadOpened = false;
197 }
198
199 MainForm::~MainForm(void)
200 {
201         SettingPresentationModel::GetInstance()->RemoveSettingsEventListener(*this);
202
203         if(__pAddressbar)
204         {
205                 __pAddressbar->SetAddressbarEventListener(null);
206         }
207         if (__pReaderData != null)
208         {
209                 delete __pReaderData;
210                 __pReaderData = null;
211         }
212
213         if (__pPopUp != null)
214         {
215                 delete __pPopUp;
216                 __pPopUp = null;
217         }
218
219         if (__pHitElementResult != null)
220         {
221                 delete __pHitElementResult;
222                 __pHitElementResult = null;
223         }
224
225         String* pSelectedScene = NULL;
226         Object* pValue = NULL;
227         MultipleWindowPresentationModel::GetInstance()->GetValue(SELECTED_SCENE_ID, &pValue);
228         pSelectedScene = (String*) pValue;
229
230         /*if (pSelectedScene != null)
231         {
232                 delete pSelectedScene;
233         }
234         MultiWindowPresentationModel::SetValue(SELECTED_SCENE_ID, null);*/
235 }
236
237 bool
238 MainForm::Initialize(void)
239 {
240         Construct(L"IDL_FORM");
241         return true;
242 }
243
244 result
245 MainForm::OnInitializing(void)
246 {
247         AppLog("get client area width = %d",GetClientAreaBounds().width);
248         AppLog("get client area height = %d",GetClientAreaBounds().height);
249         const int WIDTH_CONTEXT_MENU_BUTTON = 336;
250         const int HEIGHT_CONTEXT_MENU_BUTTON = 72;
251
252         Panel* pFooterPanel = null;
253
254         __pSaveImage = new Image();
255         __pSaveImage->Construct();
256
257         // Setup back event listener
258         SettingPresentationModel::GetInstance()->AddSettingsEventListener(*this);
259         SceneManager::GetInstance()->AddSceneEventListener(IDSCN_MAIN_VIEW, *this);
260         AddOrientationEventListener(*this);
261         AppLogDebug(" MainForm::OnInitializing ended");
262         if (__pMostVisitedSites == null)
263         {
264                 __pMostVisitedSites = new(std::nothrow) ArrayList();
265                 __pMostVisitedSites->Construct();
266         }
267         HistoryPresentationModel::GetInstance()->GetMostVisitedSites(*__pMostVisitedSites);
268
269         __pItemContext= new(std::nothrow) ListContextItem();
270         __pItemContext->Construct();
271         Bitmap* pBitmapNormal = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete.9.png", WIDTH_CONTEXT_MENU_BUTTON,HEIGHT_CONTEXT_MENU_BUTTON);
272         Bitmap* pBitmapPressed = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete_press.9.png", WIDTH_CONTEXT_MENU_BUTTON, HEIGHT_CONTEXT_MENU_BUTTON);
273
274         if (pBitmapNormal != null && pBitmapPressed != null)
275         {
276                 __pItemContext->AddElement(IDA_CONTEXT_ITEM_DELETE, CommonUtil::GetString(L"IDS_BR_SK_DELETE_ABB"), *pBitmapNormal, *pBitmapPressed, pBitmapPressed);
277         }
278
279         if (pBitmapNormal != null)
280         {
281                 delete pBitmapNormal;
282         }
283
284         if (pBitmapPressed != null)
285         {
286                 delete pBitmapPressed;
287         }
288
289         __pItemContextLandscape= new(std::nothrow) ListContextItem();
290         __pItemContextLandscape->Construct();
291         pBitmapNormal = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete.9.png", WIDTH_CONTEXT_MENU_BUTTON_LANDSCAPE,HEIGHT_CONTEXT_MENU_BUTTON);
292         pBitmapPressed = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete_press.9.png", WIDTH_CONTEXT_MENU_BUTTON_LANDSCAPE, HEIGHT_CONTEXT_MENU_BUTTON);
293
294         if (pBitmapNormal != null && pBitmapPressed != null)
295         {
296                 __pItemContextLandscape->AddElement(IDA_CONTEXT_ITEM_DELETE, CommonUtil::GetString(L"IDS_BR_SK_DELETE_ABB"), *pBitmapNormal, *pBitmapPressed, pBitmapPressed);
297         }
298
299         if (pBitmapNormal != null)
300         {
301                 delete pBitmapNormal;
302         }
303
304         if (pBitmapPressed != null)
305         {
306                 delete pBitmapPressed;
307         }
308
309         return E_SUCCESS;
310 }
311
312 result
313 MainForm::InitAddressbar(void)
314 {
315         AppLogDebug("MainForm::InitAddressbar entered");
316
317         result r = E_SUCCESS;
318
319         if (__pAddressbar != null)
320         {
321                 return E_SUCCESS;
322         }
323         __pAddressbar = new(std::nothrow) Addressbar();
324         AppLog("MainForm::InitAddressbar GetClientAreaBounds().width %d",GetClientAreaBounds().width);
325         r = __pAddressbar->Initialize(Tizen::Graphics::Rectangle(0, 0, GetClientAreaBounds().width, 82));
326         if (r != E_SUCCESS)
327         {
328                 AppLogDebug("Addressbar init failed with %s", GetErrorMessage(r));
329                 return r;
330         }
331         __pAddressbar->SetAddressbarEventListener(this);
332         AddControl(*__pAddressbar);
333         __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
334         SetControlAlwaysOnTop(*__pAddressbar, true);
335         __adressPanelPosition = __pAddressbar->GetPosition();
336
337         AppLogDebug("MainForm::InitAddressbar exit");
338
339         return E_SUCCESS;
340 }
341
342 result
343 MainForm::CreateReaderPanel(void)
344 {
345         AppLogDebug("CreateReaderPanel() width %d",GetClientAreaBounds().width);
346         result r = E_FAILURE;
347         WebSetting settings;
348         Button *pSmallFontBtn = null;
349         Button *pLargeFontBtn = null;
350
351         __pBlankPanel = new (std::nothrow) Panel();
352         __pBlankPanel->Construct(L"IDL_BLANK_PANEL");
353
354         __pArticleReaderPanel = new (std::nothrow) Panel();
355         __pArticleReaderPanel->Construct(L"IDL_ARTICLE_READER");
356
357         __pReaderCloseBtn =  static_cast<Button*>(__pArticleReaderPanel->GetControl(L"IDC_CLOSE_READER",true));
358         if (__pReaderCloseBtn)
359         {
360                 AppLogDebug("CreateReaderPanel() 6");
361                 __pReaderCloseBtn->AddActionEventListener(*this);
362                 __pReaderCloseBtn->SetActionId(IDA_READER_CLOSE_CLICKED);
363         }
364
365         __pWebReader = new (std::nothrow) Web();
366         __pWebReader->Construct(Rectangle(2,2, __pArticleReaderPanel->GetWidth()-2,__pArticleReaderPanel->GetHeight() - 96 -2));
367
368         settings.SetInputStyle(INPUT_STYLE_OVERLAY);
369         settings.SetFontSize(SettingPresentationModel::GetInstance()->GetReaderFontSize());
370
371         r = __pWebReader->SetSetting(settings);
372         if (IsFailed(r))
373                 AppLogDebug("Web setting add failed with %s", GetErrorMessage(r));
374
375
376         __pArticleReaderLabel = new Label();
377         __pArticleReaderLabel->Construct(Rectangle(__pArticleReaderPanel->GetX(),__pArticleReaderPanel->GetY(),__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight()),L"");
378
379         __pBlankPanel->AddControl(*__pArticleReaderLabel);
380         __pBlankPanel->AddControl(*__pArticleReaderPanel);
381         AddControl(*__pBlankPanel);
382
383         __pBlankPanel->SetBounds(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height);
384         __pArticleReaderPanel->SetBounds((GetClientAreaBounds().width - __pArticleReaderPanel->GetWidth())/2,(GetClientAreaBounds().height - __pArticleReaderPanel->GetHeight())/2, __pArticleReaderPanel->GetWidth(), __pArticleReaderPanel->GetHeight());
385         __pArticleReaderLabel->SetBounds(__pArticleReaderPanel->GetX(),__pArticleReaderPanel->GetY(),__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
386
387         __pArticleReaderPanel->AddControl(*__pWebReader);
388         __pWebReader->SetBounds(Rectangle(2,2, __pArticleReaderPanel->GetWidth()-2,__pArticleReaderPanel->GetHeight() - 96 -2));
389         Bitmap* pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
390         Bitmap* pSrcBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bottom_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
391
392         if (pBitmap != null && pSrcBitmap != null)
393         {
394                 pBitmap->Merge(Point(0,__pArticleReaderPanel->GetHeight() - 96),*pSrcBitmap,Rectangle(0,0,pSrcBitmap->GetWidth(),pSrcBitmap->GetHeight()));
395         }
396         __pArticleReaderLabel->SetBackgroundBitmap(*pBitmap);
397
398         pSmallFontBtn =  static_cast<Button*>(__pArticleReaderPanel->GetControl(L"IDC_SMALL_FONT",true));
399         if (pSmallFontBtn)
400         {
401                 pSmallFontBtn->AddActionEventListener(*this);
402                 pSmallFontBtn->SetActionId(IDA_SMALLFONT_BTN_CLICKED);
403         }
404
405         pLargeFontBtn =  static_cast<Button*>(__pArticleReaderPanel->GetControl(L"IDC_LARGE_FONT",true));
406         if (pLargeFontBtn)
407         {
408                 pLargeFontBtn->AddActionEventListener(*this);
409                 pLargeFontBtn->SetActionId(IDA_LARGEFONT_BTN_CLICKED);
410         }
411
412
413         if (pBitmap != null)
414         {
415                 delete pBitmap;
416                 pBitmap = null;
417         }
418         if (pSrcBitmap != null)
419         {
420                 delete pSrcBitmap;
421                 pSrcBitmap = null;
422         }
423
424         SetControlAlwaysOnTop(*__pBlankPanel, true);
425         //__pBlankPanel->SetControlAlwaysAtBottom(*__pArticleReaderPanel, true);
426         Invalidate(true);
427
428         return E_SUCCESS;
429 }
430
431 result
432 MainForm::InitWebControl()
433 {
434         AppLogDebug("MainForm::InitWebControl enter");
435         result r = E_SUCCESS;
436         AppLogDebug("InitWebControl");
437
438         if (__pAddressbar == null || __pFooterPanel == null)
439                 return E_FAILURE;
440
441         const int Y_WEBCONTROL_POSITION = 0;
442         __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight();
443         if (__pMostVisitedListView)
444         {
445                 __pMostVisitedListView->SetShowState(false);
446         }
447         if (__pWebViewer != null)
448         {
449                 AppLogDebug("Already initialized");
450                 return E_SUCCESS;
451         }
452         __pWebViewer = new(std::nothrow) Web();
453         if(__pWebViewer == NULL)
454         {
455                 AppLogDebug("Initialization failed");
456                 return E_FAILURE;
457         }
458         r = __pWebViewer->Construct(Rectangle(0, Y_WEBCONTROL_POSITION, GetClientAreaBounds().width,__webControlHeight));
459
460         if (IsFailed(r))
461         {
462                 AppLogDebug("Web construct failed with %s", GetErrorMessage(r));
463                 delete __pWebViewer;
464                 __pWebViewer = null;
465                 return r;
466         }
467         else
468         {
469                 r = AddControl(*__pWebViewer);
470
471                 if (IsFailed(r))
472                 {
473                         delete __pWebViewer;
474                         __pWebViewer = null;
475                         AppLogDebug("Web addcontrol failed with %s", GetErrorMessage(r));
476                         return r;
477                 }
478                 __webControlPosition = __pWebViewer->GetPosition();
479                 r = __pWebViewer->SetSetting(SettingPresentationModel::GetInstance()->GetWebSettings());
480                 if (IsFailed(r))
481                 {
482                         AppLogDebug("Web setting add failed with %s", GetErrorMessage(r));
483                         return r;
484                 }
485
486                 __pWebViewer->SetLoadingListener(this);
487                 __pWebViewer->SetWebUiEventListener(this);
488                 __pWebViewer->SetWebKeypadEventListener(this);
489                 __pWebViewer->SetFocus();
490                 __pWebViewer->AddTouchEventListener(*this);
491
492                 __pWebViewer->SetCookieEnabled(SettingPresentationModel::GetInstance()->IsCookiesEnabled());
493                 __pWebViewer->SetTextSearchListener(this);
494         }
495
496         AppLogDebug("MainForm :before return");
497         Invalidate(true);
498         AppLogDebug("MainForm::InitWebControl Exit");
499
500         return r;
501 }
502
503 void
504 MainForm::OnFocusGained(const Control& source)
505 {
506         AppLog("MainForm::OnFocusGained");
507 }
508
509 void
510 MainForm::OnFocusLost(const Control& source)
511 {
512         AppLog("MainForm::OnFocusLost");
513 }
514
515 void
516 MainForm::SetJavascriptEnabled()
517 {
518         WebSetting settings = __pWebViewer->GetSetting();
519         settings.SetJavascriptEnabled(SettingPresentationModel::GetInstance()->IsRunJavascriptEnabled());
520         __pWebViewer->SetSetting(settings);
521 }
522
523 void
524 MainForm::SetImageLoadEnabled()
525 {
526         WebSetting settings = __pWebViewer->GetSetting();
527         settings.SetAutoImageLoadEnabled(SettingPresentationModel::GetInstance()->IsDisplayImagesEnabled());
528         __pWebViewer->SetSetting(settings);
529 }
530
531 result
532 MainForm::InitFooter(void)
533 {
534         AppLogDebug("MainForm::InitFooter entered");
535         Button* pBackButton = null;
536         Button* pBookmarkButton = null;
537         Button* pMultiWindowButton = null;
538         Bitmap *pIconBitmap = null;
539         Bitmap *pBGBitmap = null;
540         Label *pBGLabel = null;
541
542         if (__pFooterPanel == null)
543         {
544                 __pFooterPanel = static_cast< Panel* >(GetControl(L"IDC_FOOTER_PANEL", true));
545         }
546
547         if (__pFooterPanel == null)
548         {
549                 return E_FAILURE;
550         }
551
552         SetControlAlwaysOnTop(*__pFooterPanel, true);
553
554         __pFooterLabel = static_cast< Label* >(GetControl(L"IDC_FOOTER_LABEL", true));
555         if ( __pFooterLabel == NULL )
556         {
557                 return E_FAILURE;
558         }
559         //__pFooterPanel->SetBackgroundColor(CUSTOM_COLOR_TRANSPARENT);
560         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pFooterLabel->GetWidth(), __pFooterLabel->GetHeight());
561         if (pBitmap != null)
562         {
563                 __pFooterLabel->SetBackgroundBitmap(*pBitmap);
564                 delete pBitmap;
565         }
566
567         __pMultiWindowButton = static_cast< Button* >(GetControl(L"IDC_MULTIWINDOW_BUTTON", true));
568
569         if ( __pMultiWindowButton == NULL )
570         {
571                 return E_FAILURE;
572         }
573
574         __pMoreButton = static_cast<Button*>(GetControl(L"IDC_MORE_BUTTON",true));
575
576         if ( __pMoreButton == NULL )
577         {
578                 return E_FAILURE;
579         }
580
581         if (__pMultiWindowButton != null)
582         {
583                 Bitmap* pBitmap = null;
584                 Bitmap* pPressedBitmap = null;
585                 String imagePath = "I01_toolbar_icon_windows_manager_0";
586                 String pressedImagePath = "I01_toolbar_icon_windows_manager_0";
587                 int totalCount = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList()->GetCount();
588                 imagePath.Append(totalCount);
589                 imagePath.Append(".png");
590
591                 pressedImagePath.Append(totalCount);
592                 pressedImagePath.Append("_press.png");
593
594                 pBitmap = AppResource::GetInstance()->GetBitmapN(imagePath);
595                 pPressedBitmap = AppResource::GetInstance()->GetBitmapN(pressedImagePath);
596                 if ( pBitmap == null )
597                 {
598                         return E_FAILURE;
599                 }
600
601                 Point startPoint = Point((__pMultiWindowButton->GetWidth() - pBitmap->GetWidth())/2,(__pMultiWindowButton->GetHeight() - pBitmap->GetHeight())/2);
602                 if (pBitmap != null)
603                 {
604                         __pMultiWindowButton->SetNormalBitmap(startPoint, *pBitmap);
605                         __pMultiWindowButton->SetPressedBitmap(startPoint, *pPressedBitmap);
606
607                         delete pBitmap;
608                 }
609
610                 __pMultiWindowButton->AddActionEventListener(*this);
611                 __pMultiWindowButton->SetActionId(IDA_MULTIWINDOWBTN_CLICKED);
612         }
613
614         if (__pMoreButton)
615         {
616                 Bitmap* pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_CONTRLBAR_ICON_MORE);
617                 Bitmap* pPressedBitmap = AppResource::GetInstance()->GetBitmapN(IDB_CONTRLBAR_ICON_MORE_PRESS);
618                 if (pBitmap != null)
619                 {
620                         Point startPoint((__pMoreButton->GetWidth() - pBitmap->GetWidth())/2,(__pMoreButton->GetHeight() - pBitmap->GetHeight())/2 );
621                         __pMoreButton->SetNormalBitmap(startPoint, *pBitmap);
622                         __pMoreButton->SetPressedBitmap(startPoint, *pPressedBitmap);
623
624                         delete pBitmap;
625                 }
626                 __pMoreButton->AddActionEventListener(*this);
627                 __pMoreButton->SetActionId(IDA_MOREBTN_CLICKED);
628         }
629
630         //Add the editfield for url
631         __pFooterUrlField =  static_cast<EditField*> (GetControl(L"IDC_URL_EDIT_FIELD",true));
632         if (__pFooterUrlField == NULL)
633         {
634                 return E_INVALID_KEY;
635         }
636
637         __pFooterUrlField->SetOverlayKeypadCommandButtonVisible(false);
638         __pFooterUrlField->SetKeypadAction(KEYPAD_ACTION_GO);
639         //__pFooterUrlField->AddFocusEventListener(*this);
640         __pFooterUrlField->AddKeypadEventListener(*this);
641         //__pFooterUrlField->AddFocusEventListener(*this);
642         __pFooterUrlField->SetPropagatedTouchEventListener(this);
643
644         if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
645         {
646                 __pFooterUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
647         }
648         else if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) == 0)
649         {
650                 __pFooterUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_ABOUT_C_BLANK"));
651         }
652         else
653         {
654                 //__pUrlField->SetText(SettingPresentationModel::GetInstance()->GetFavoriteURL());
655                 __pFooterUrlField->SetGuideText(CommonUtil::GetString(L"IDS_BR_BODY_SEARCH_OR_ENTER_URL"));
656         }
657
658
659         //Add the go Back Button
660         __pGoBackBtn = static_cast<Button*> (GetControl(L"IDC_PAGEBACK_BUTTON",true));
661         if (__pGoBackBtn == NULL)
662         {
663                 AppLogDebug("__pGoBackBtn Control not found returning E_INVALID_KEY");
664                 return E_INVALID_KEY;
665         }
666         __pGoBackBtn->SetActionId(IDA_GO_BACK);
667         __pGoBackBtn->AddActionEventListener(*this);
668
669         //Add the go forward Button
670         __pGoForwardBtn = static_cast<Button*> (GetControl(L"IDC_PAGEFORWARD_BUTTON",true));
671         if (__pGoForwardBtn == NULL)
672         {
673                 AppLogDebug("Control not found returning E_INVALID_KEY");
674                 return E_INVALID_KEY;
675         }
676         __pGoForwardBtn->SetActionId(IDA_GO_FORWARD);
677         __pGoForwardBtn->AddActionEventListener(*this);
678         __pGoForwardBtn->SetEnabled(false);
679
680         __pRefreshBtn = static_cast<Button*> (GetControl(L"IDC_REFRESH_BUTTON",true));
681         if (__pRefreshBtn == NULL)
682         {
683                 AppLogDebug("Control not found returning E_INVALID_KEY");
684                 return E_INVALID_KEY;
685         }
686
687         __pRefreshBtn->SetActionId(IDA_REFRESH_BTN_CLICKED);
688         __pRefreshBtn->AddActionEventListener(*this);
689         __pRefreshBtn->SetShowState(true);
690
691         //Add the backround label for displaying progressbar
692         __pProgressbarLabel = static_cast<Label*> (GetControl(L"IDC_PROGRESS_BAR_LABEL",true));
693         if (__pProgressbarLabel == NULL)
694         {
695                 AppLogDebug("__pProgressbarLabel Control not found returning E_INVALID_KEY");
696                 return E_INVALID_KEY;
697         }
698         __pProgressbarLabel->SetShowState(false);
699
700         __pStopBtn = static_cast<Button*> (GetControl(L"IDC_STOP_BUTTON",true));
701         if (__pStopBtn == NULL)
702         {
703                 AppLogDebug("Control not found returning E_INVALID_KEY");
704                 return E_INVALID_KEY;
705         }
706         __pStopBtn->SetActionId(IDA_STOP_BTN_CLICKED);
707         __pStopBtn->AddActionEventListener(*this);
708         __pStopBtn->SetShowState(false);
709
710         __pClearBtn = static_cast<Button*> (GetControl(L"IDC_CLEAR_BUTTON",true));
711         if (__pClearBtn == NULL)
712         {
713                 AppLogDebug("Control not found returning E_INVALID_KEY");
714                 return E_INVALID_KEY;
715         }
716         __pClearBtn->SetActionId(IDA_CLEAR_URL);
717         __pClearBtn->AddActionEventListener(*this);
718         __pClearBtn->SetShowState(false);
719
720         //      __pFooterPanel->Invalidate(true);
721         AppLogDebug("MainForm::InitFooter exit");
722         return E_SUCCESS;
723 }
724
725
726 result
727 MainForm::InitContextMenu(Point& p)
728 {
729         result r = E_SUCCESS;
730         bool isPrivateBrowsing = false;
731         Bitmap* pBitmap = null;
732
733         if (__pMenu != null)
734         {
735                 __pMenu->SetAnchorPosition(p);
736                 __pMenu->Invalidate(true);
737                 return r;
738         }
739
740         __pMenu = new(std::nothrow) ContextMenu();
741         r = __pMenu->Construct(p, CONTEXT_MENU_STYLE_LIST);
742         TryCatch(!IsFailed(r),,"Contextmenu creation failed with%s",GetErrorMessage(r));
743
744         isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
745
746
747         if (isPrivateBrowsing == true)
748         {
749                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_ON);
750         }
751         else
752         {
753                 pBitmap  = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_OFF);
754         }
755
756         r = __pMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_BOOKMARK"), IDA_BOOKMARKBTN_CLICKED);
757
758         if ( pBitmap != NULL)
759         {
760                 __pMenu->AddItem(CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"), IDA_PRIVATEON_CLICKED,*pBitmap);
761                 delete pBitmap;
762         }
763         r = __pMenu->AddItem(CommonUtil::GetString(L"IDS_BR_TAB_HISTORY"), IDA_HISTORY_CLICKED);
764         r = __pMenu->AddItem(CommonUtil::GetString(L"IDS_COM_OPT_BRIGHTNESS"), IDA_BRIGHTNESS_BTN_CLICKED);
765         r = __pMenu->AddItem(CommonUtil::GetString(L"IDS_COM_BODY_SETTINGS"), IDA_SETTINGS_CLICKED);
766
767
768         __pMenu->SetMaxVisibleItemsCount(6);
769         __pMenu->SetShowState(false);
770         __pMenu->AddActionEventListener(*this);
771         SetControlAlwaysOnTop(*__pMenu, true);
772
773         CATCH:
774         return r;
775 }
776
777 result MainForm::InitImageContextMenu(Tizen::Graphics::Point p)
778 {
779         result r = E_SUCCESS;
780         ContextMenuAnchorDirection direction = CONTEXT_MENU_ANCHOR_DIRECTION_AUTO;
781
782         AppLog("MainForm::InitImageContextMenu clicked on image");
783         if (__pImageMenu != null)
784         {
785                 delete __pImageMenu;
786                 __pImageMenu = null;
787         }
788
789 //      p.y = p.y + __pAddressbar->GetHeight() + 12;
790 //      AppLog("vinaypy %d",p.y);
791 //      if(p.y < 100)
792 //      {
793 //              direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD;
794 //      }
795 //      else
796 //      {
797 //              direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD;
798 //      }
799         __pImageMenu = new (std::nothrow) ContextMenu();
800         r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_LIST, direction);
801         TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r));
802
803         r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_COPY_IMAGE"),IDA_COPY_IMAGE_CLICKED);
804         r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_VIEW_IMAGE"),IDA_VIEW_IMAGE_CLICKED);
805         r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SAVE_IMAGE"),IDA_SAVE_IMAGE_CLICKED);
806         r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_DLNA_BODY_SHARE_IMAGE_ABB"),IDA_SHARE_IMAGE_CLICKED);
807         __pImageMenu->SetMaxVisibleItemsCount(4);
808         __pImageMenu->AddActionEventListener(*this);
809         SetControlAlwaysOnTop(*__pImageMenu, true);
810
811         CATCH: return r;
812 }
813
814 result
815 MainForm::InitImageLinkContextMenu(Tizen::Graphics::Point p)
816 {
817         result r = E_SUCCESS;
818         ContextMenuAnchorDirection direction = CONTEXT_MENU_ANCHOR_DIRECTION_AUTO;
819
820         AppLog("MainForm::InitImageContextMenu clicked on image");
821         if (__pImageMenu != null)
822         {
823                 delete __pImageMenu;
824                 __pImageMenu = null;
825         }
826
827         p.y = p.y + __pAddressbar->GetHeight() + 12;
828         if (p.y < 100)
829         {
830                 direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD;
831         }
832         else
833         {
834                 direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD;
835         }
836         __pImageMenu = new (std::nothrow) ContextMenu();
837         r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_LIST, direction);
838         TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r));
839
840         r = __pImageMenu->AddItem("Open in new window"/*CommonUtil::GetString(L"IDS_BR_OPT_COPY_IMAGE")*/,IDA_HYPERLINK_OPEN_CLICKED);
841         r = __pImageMenu->AddItem("Copy link URL"/*CommonUtil::GetString(L"IDS_DLNA_BODY_SHARE_IMAGE_ABB")*/,IDA_HYPERLINK_COPY_LINK_CLICKED);
842         //r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SAVE_IMAGE"),IDA_HYPERLINK_SAVE_IMAGE_CLICKED);
843         r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SHARE"),IDA_HYPERLINK_SHARE_IMAGE_CLICKED);
844
845         __pImageMenu->SetMaxVisibleItemsCount(3);
846         __pImageMenu->AddActionEventListener(*this);
847         SetControlAlwaysOnTop(*__pImageMenu, true);
848
849         CATCH: return r;
850
851 }
852
853 result MainForm::InitSelectTextContextMenu(Tizen::Graphics::Point p, bool pasteOption, bool onlyPasteOption = false)
854 {
855         result r = E_SUCCESS;
856         ContextMenuAnchorDirection direction = CONTEXT_MENU_ANCHOR_DIRECTION_AUTO;
857         if(onlyPasteOption == true)
858                 return E_SUCCESS;
859
860         AppLog("MainForm::InitSelectTextContextMenu clicked on text");
861         if (__pImageMenu != null)
862         {
863                 delete __pImageMenu;
864                 __pImageMenu = null;
865         }
866         p.y = p.y + __pAddressbar->GetHeight() + 12;
867         if(p.y < 100)
868         {
869                 direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD;
870         }
871         else
872         {
873                 direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD;
874         }
875         __pImageMenu = new (std::nothrow) ContextMenu();
876         r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_GRID, direction);
877         TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r));
878
879         if(onlyPasteOption == false)
880         {
881                 r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_COM_OPT_COPY"),IDA_COPY_TEXT_CLICKED);
882         }
883         if (pasteOption || onlyPasteOption)
884         {
885                 r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_COM_BODY_PASTE"),IDA_PASTE_TEXT_CLICKED);
886         }
887         if(onlyPasteOption == false)
888         {
889                 r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_FIND_ON_PAGE_ABB"),IDA_FIND_TEXT__CLICKED);
890                 r = __pImageMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SHARE"),IDA_SHARE_TEXT_CLICKED);
891         }
892
893         __pImageMenu->SetMaxVisibleItemsCount(3);
894         __pImageMenu->AddActionEventListener(*this);
895         SetControlAlwaysOnTop(*__pImageMenu, true);
896
897         CATCH: return r;
898
899 }
900
901 result
902 MainForm::InitFindWordPanel(void)
903 {
904         result r = E_SUCCESS;
905         Bitmap *pIconBitmap = null;
906
907         if (__pFindWordControl != null)
908         {
909                 AppLogDebug("Findword panel already initialized");
910                 if (__pFindWordBgLabel != null)
911                 {
912                         Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_FINDWORD_INPUT_FIELD_BG, __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight());
913                         if (pBitmap != null)
914                         {
915                                 __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap);
916                                 delete pBitmap;
917                         }
918                 }
919                 return r;
920         }
921
922         __pFindWordControl = new (std::nothrow) Panel();
923         r = __pFindWordControl->Construct(L"IDL_FIND_ON_PAGE");
924         if (IsFailed(r))
925         {
926                 AppLogException("There is some problem in the xml file. Please check.");
927                 return E_FAILURE;
928         }
929         AddControl(*__pFindWordControl);
930         __pFindWordControl->SetBounds(0,0, __pFindWordControl->GetWidth(), __pFindWordControl->GetHeight());
931         SetControlAlwaysOnTop(*__pFindWordControl,true);
932         __pFindWordControl->SetShowState(false);
933         __pFindWordControl->Invalidate(false);
934
935         __pFindWordBgLabel = static_cast<Label*>(__pFindWordControl->GetControl(L"IDC_LABEL1", true));
936         if (__pFindWordBgLabel != null)
937         {
938                 Panel* pPanel1 = static_cast<Panel*>(__pFindWordControl->GetControl(L"IDC_PANEL1", true));
939                 Rectangle pRect = pPanel1->GetBounds();
940                 pRect.x = pRect.y = 0;
941                 __pFindWordBgLabel->SetBounds(pRect);
942                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_search_input_field_bg.9.png", __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight());
943                 if (pBitmap != null)
944                 {
945                         AppLogDebug("InitFindWordPanel: Coming here");
946                         __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap);
947                         delete pBitmap;
948                 }
949                 else
950                 {
951                         AppLogDebug("InitFindWordPanel: shouldn't Come here");
952                 }
953         }
954
955         Button* pfindWordCancel = null;
956         pfindWordCancel = static_cast<Button*>(__pFindWordControl->GetControl(L"IDC_FIND_CANCEL", true));
957         if (pfindWordCancel == null)
958         {
959                 AppLogException("There is some problem in the xml file. Please check.");
960                 return E_FAILURE;
961         }
962         pfindWordCancel->SetActionId(IDA_FINDWORD_CANCEL_CLICKED);
963         pfindWordCancel->AddActionEventListener(*this);
964
965         __pFindWordClear = static_cast<Button*>(__pFindWordControl->GetControl(L"IDC_FIND_CLEAR", true));
966         if (__pFindWordClear == null)
967         {
968                 AppLogException("There is some problem in the xml file. Please check.");
969                 return E_FAILURE;
970         }
971
972         __pFindWordClear->SetActionId(IDA_FINDWORD_CLEAR_CLICKED);
973         __pFindWordClear->AddActionEventListener(*this);
974
975         __pFindWordNext = static_cast<Button*>(__pFindWordControl->GetControl(L"IDC_FIND_NEXT", true));
976         if (__pFindWordNext == null)
977         {
978                 AppLogException("There is some problem in the xml file. Please check.");
979                 return E_FAILURE;
980         }
981
982         __pFindWordNext->SetActionId(IDA_FINDWORD_NEXT_CLICKED);
983         __pFindWordNext->AddActionEventListener(*this);
984
985         __pFindWordPrev = static_cast<Button*>(__pFindWordControl->GetControl(L"IDC_FIND_PREV", true));
986         if (__pFindWordPrev == null)
987         {
988                 AppLogException("There is some problem in the xml file. Please check.");
989                 return E_FAILURE;
990         }
991
992         __pFindWordPrev->SetActionId(IDA_FINDWORD_PREV_CLICKED);
993         __pFindWordPrev->AddActionEventListener(*this);
994
995         __pFindWordNext->SetEnabled(false);
996         __pFindWordPrev->SetEnabled(false);
997
998         __pFindWordCountLabel = static_cast<Label*>(__pFindWordControl->GetControl(L"IDC_FIND_COUNT_LABEL", true));
999         if (__pFindWordCountLabel == null)
1000         {
1001                 AppLogException("There is some problem in the xml file. Please check.");
1002                 return E_FAILURE;
1003         }
1004
1005         __pFindWordEditField = static_cast<EditField*>(__pFindWordControl->GetControl(L"IDC_FIND_WORD_EDITFIELD", true));
1006         if (__pFindWordEditField == null)
1007         {
1008                 AppLogException("There is some problem in the xml file. Please check.");
1009                 return E_FAILURE;
1010         }
1011         __pFindWordEditField->AddTextEventListener(*this);
1012         __pFindWordEditField->AddKeypadEventListener(*this);
1013         __pFindWordEditField->SetOverlayKeypadCommandButtonVisible(false);
1014
1015         return r;
1016 }
1017
1018 ListItemBase*
1019 MainForm::CreateItem (int index, int itemWidth)
1020 {
1021         Rectangle listImageRect;
1022         Rectangle pagetTitleRect;
1023         Rectangle pageURLRect;
1024         Rectangle deleteImageRect;
1025         String pageTitle(L"");
1026         String pageURL(L"");
1027         result r = E_SUCCESS;
1028         Bitmap* pListIconImage = null;
1029
1030
1031         History* pHistory = static_cast < History* >(__pMostVisitedSites->GetAt(index));
1032         if(pHistory == null)
1033         {
1034                 return null;
1035         }
1036         AppResource* pAppResource = Application::GetInstance()->GetAppResource();
1037         if ( pAppResource == NULL )
1038         {
1039                 return null;
1040         }
1041         ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
1042
1043         CustomItem* pItem = new(std::nothrow) CustomItem();
1044         pageTitle = pHistory->GetHistoryTitle();
1045         pageURL = pHistory->GetHistoryUrl();
1046
1047         if (pageURL.GetLength() == 0)
1048         {
1049                 String nourl;
1050                 pAppResource->GetString(L"IDS_BR_BODY_ABOUT_C_BLANK", nourl);
1051                 pageURL = L"<"+ nourl +">";
1052
1053         }
1054
1055         Rectangle screenBounds = GetBounds();
1056         if (pItem != null)
1057         {
1058                 r = pItem->Construct(Dimension(itemWidth, 128), style);
1059         }
1060         if (IsFailed(r))
1061         {
1062                 delete pItem;
1063                 return NULL;
1064         }
1065
1066
1067         Bitmap* pBitmap = pHistory->GetFavIconBitmap();
1068
1069         if ( pBitmap != NULL)
1070         {
1071                 pListIconImage = new Bitmap();
1072                 pListIconImage->Construct(*pBitmap,Rectangle(0,0,pBitmap->GetWidth(),pBitmap->GetHeight()));
1073                 delete pBitmap;
1074         }
1075
1076         if(pListIconImage == null)
1077         {
1078                 pListIconImage = pAppResource->GetBitmapN(L"I01_icon_default_favicon.png");
1079         }
1080
1081         if ( pListIconImage != NULL)
1082         {
1083                 listImageRect.SetBounds(screenBounds.x + 16, screenBounds.y + 28,72, 72);
1084                 pagetTitleRect.SetBounds(listImageRect.x + 72 + 16,10, screenBounds.width - 2 * pListIconImage->GetWidth() - 120, 60);
1085                 pageURLRect.SetBounds(pagetTitleRect.x, pagetTitleRect.y + pagetTitleRect.height, screenBounds.width - 2 * pListIconImage->GetWidth() - 120, 48);
1086
1087
1088                 if (pItem != null && pListIconImage != NULL)
1089                 {
1090                         pItem->AddElement(listImageRect, IDA_FORMAT_BITMAP, *pListIconImage, null, null);
1091                 }
1092         }
1093
1094         if (pageTitle.CompareTo(L"") != 0)
1095         {
1096                 if (pItem != null)
1097                 {
1098                         pItem->AddElement(pagetTitleRect, IDA_FORMAT_TITLE_STRING, pageTitle, 44, CUSTOM_COLOR_TRANSPARENT, CUSTOM_COLOR_TRANSPARENT, CUSTOM_COLOR_TRANSPARENT, true);
1099                 }
1100         }
1101
1102         if (pageURL.CompareTo(L"") != 0)
1103         {
1104                 if (pItem != null)
1105                 {
1106                         pItem->AddElement(pageURLRect, IDA_FORMAT_URL_STRING, pageURL, 32, CUSTOM_COLOR_GREY, CUSTOM_COLOR_GREY, CUSTOM_COLOR_GREY, true);
1107                 }
1108         }
1109
1110
1111         if(GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE)
1112         {
1113                 if ( __pItemContext!= NULL)
1114                 {
1115                         if (pItem != null)
1116                         {
1117                                 pItem->SetContextItem(__pItemContext);
1118                         }
1119                 }
1120         }
1121         else
1122         {
1123                 if ( __pItemContextLandscape!= NULL)
1124                 {
1125                         if (pItem != null)
1126                         {
1127                                 pItem->SetContextItem(__pItemContextLandscape);
1128                         }
1129                 }
1130         }
1131         if( pListIconImage != NULL)
1132         {
1133                 delete pListIconImage;
1134                 pListIconImage = null;
1135         }
1136
1137         return pItem;
1138 }
1139
1140 bool
1141 MainForm::DeleteItem (int index, Tizen::Ui::Controls::ListItemBase *pItem, int itemWidth)
1142 {
1143         delete pItem;
1144         return true;
1145 }
1146
1147 int
1148 MainForm::GetItemCount (void)
1149 {
1150         if(__pMostVisitedSites != null)
1151         {
1152                 __pMostVisitedSites->RemoveAll(true);
1153         }
1154         HistoryPresentationModel::GetInstance()->GetMostVisitedSites(*__pMostVisitedSites);
1155         if(__pMostVisitedSites != null)
1156         {
1157                 return __pMostVisitedSites->GetCount();
1158         }
1159         else
1160                 return 0;
1161 }
1162
1163 void
1164 MainForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
1165 {
1166         History* pHistory = static_cast < History* >(__pMostVisitedSites->GetAt(index));
1167         String url = pHistory->GetHistoryUrl();
1168         HistoryPresentationModel::GetInstance()->DeleteHistory(url);
1169         __pMostVisitedListView->UpdateList();
1170 }
1171
1172 void
1173 MainForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
1174 {
1175         History* pHistory = static_cast < History* >(__pMostVisitedSites->GetAt(index));
1176         String url = pHistory->GetHistoryUrl();
1177         if (url != null)
1178         {
1179                 LoadUrl(url);
1180         }
1181 }
1182
1183 void
1184 MainForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
1185 {
1186
1187 }
1188
1189 result
1190 MainForm::OnTerminating(void)
1191 {
1192         result r = E_SUCCESS;
1193         if(__pItemContext)
1194         {
1195                 delete __pItemContext;
1196         }
1197         if(__pItemContextLandscape)
1198         {
1199                 delete __pItemContextLandscape;
1200         }
1201         return r;
1202 }
1203
1204 void
1205 MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
1206 {
1207         result r = E_SUCCESS;
1208
1209         AppLogDebug("Clicked : %d", actionId);
1210         switch (actionId)
1211         {
1212 //      case IDA_BACKBTN_CLICKED:
1213 //      {
1214 //              if (__pWebViewer && __pWebViewer->CanGoBack())
1215 //              {
1216 //                      __pWebViewer->GoBack();
1217 //              }
1218 //              else
1219 //              {
1220 //                      UiApp* pApp = null;
1221 //                      pApp = UiApp::GetInstance();
1222 //                      if (pApp != null)
1223 //                      {
1224 //                              r = pApp->Terminate();
1225 //                              if (IsFailed(r))
1226 //                              {
1227 //                                      AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1228 //                                      return;
1229 //                              }
1230 //                      }
1231 //              }
1232 //      }
1233 //      break;
1234
1235         case IDA_BACKBTN_CLICKED:
1236                 {
1237                         if (__pWebViewer && __pWebViewer->CanGoBack())
1238                         {
1239                                 __pWebViewer->GoBack();
1240                         }
1241                         else if(__pWindowInfo->isJavascriptInitiated == false)
1242                         {
1243                                 UiApp* pApp = null;
1244                                 pApp = UiApp::GetInstance();
1245                                 if (pApp != null)
1246                                 {
1247                                         r = pApp->Terminate();
1248                                         if (IsFailed(r))
1249                                         {
1250                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1251                                                 return;
1252                                         }
1253                                 }
1254                         }
1255                         else
1256                         {
1257                                 UiApp* pApp = null;
1258                                 WindowInfo* pWindowInfo = null;
1259                                 int totalCount = 0;
1260                                 SceneManager* pSceneManager = SceneManager::GetInstance();
1261                                 if (pSceneManager == null)
1262                                 {
1263                                         return;
1264                                 }
1265                                 ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList();
1266                                 if (pAllWindowList == NULL)
1267                                 {
1268                                         pApp = UiApp::GetInstance();
1269                                         if (pApp != null)
1270                                         {
1271                                                 r = pApp->Terminate();
1272                                                 if (IsFailed(r))
1273                                                 {
1274                                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1275                                                         return;
1276                                                 }
1277                                         }
1278                                 }
1279                                 if (pAllWindowList != null)
1280                                 {
1281                                         totalCount = pAllWindowList->GetCount();
1282                                 }
1283                                 for (int count = 0; count < totalCount; count++)
1284                                 {
1285                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count));
1286                                         if (pWindowInfo == null)
1287                                         {
1288                                                 pApp = UiApp::GetInstance();
1289                                                 if (pApp != null)
1290                                                 {
1291                                                         r = pApp->Terminate();
1292                                                         if (IsFailed(r))
1293                                                         {
1294                                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1295                                                                 return;
1296                                                         }
1297                                                 }
1298                                         }
1299                                         if (pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID && pWindowInfo->isJavascriptInitiated == true)
1300                                         {
1301                                                 r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID);
1302                                                 if (IsFailed(r))
1303                                                 {
1304                                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1305                                                         return;
1306                                                 }
1307                                                 r = pAllWindowList->RemoveAt(count, true);
1308                                                 __pWindowInfo = null;
1309                                                 if (IsFailed(r))
1310                                                 {
1311                                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1312                                                         return;
1313                                                 }
1314                                                 if(count > 0)
1315                                                 {
1316                                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1));
1317                                                 }
1318                                                 else
1319                                                 {
1320                                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1));
1321                                                 }
1322                                                 if (pWindowInfo == null)
1323                                                 {
1324                                                         pApp = UiApp::GetInstance();
1325                                                         if (pApp != null)
1326                                                         {
1327                                                                 r = pApp->Terminate();
1328                                                                 return;
1329                                                         }
1330                                                 }
1331                                                 else
1332                                                 {
1333                                                         r = pSceneManager->GoBackward(BackwardSceneTransition(pWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE));
1334                                                         if (IsFailed(r))
1335                                                         {
1336                                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
1337                                                                 return;
1338                                                         }
1339                                                 }
1340                                                 break;
1341                                         }
1342
1343                                 }
1344
1345                         }
1346                 }
1347                 break;
1348
1349         case IDA_FORWARD_CLICKED:
1350                 if (__pWebViewer == null)
1351                         return;
1352
1353                 if (__pWebViewer->CanGoForward())
1354                 {
1355                         __pWebViewer->GoForward();
1356                 }
1357                 __pMenu->SetShowState(false);
1358                 __pMenu->Invalidate(false);
1359                 break;
1360
1361         case IDA_FINDONPAGE_CLICKED:
1362         {
1363                 AppLogDebug("MainForm::OnActionPerformed findword clicked");
1364                 __currentSearchStr.Clear();
1365
1366                 InitFindWordPanel();
1367                 __pMenu->SetShowState(false);
1368                 __pMenu->Invalidate(false);
1369
1370                 __pFindWordEditField->SetFocus();
1371                 /*
1372                 if (__pWebViewer != null)
1373                 {
1374                         // releasing the set block
1375                         __pWebViewer->ReleaseBlock();
1376                 }
1377                 */
1378                 ShowFindWordPanel(true);
1379         }
1380         break;
1381         case IDA_PRIVATEON_CLICKED:
1382         {
1383                 result r = E_SUCCESS;
1384                 int itemIndex = 0;
1385                 bool isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
1386                 Bitmap* pBitmap = null;
1387                 if (isPrivateBrowsing == true)
1388                 {
1389                         pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_OFF);
1390                         if (IsFailed(r))
1391                         {
1392                                 AppLogException("Contextmenu additem:Find on page failed with %s", GetErrorMessage(r));
1393                                 return ;
1394                         }
1395
1396                         if (__pWebViewer != NULL)
1397                         {
1398                                 __pWebViewer->SetPrivateBrowsingEnabled(false);
1399                         }
1400
1401                         SettingPresentationModel::GetInstance()->SetPrivateOn(false);
1402
1403                         if (__pAddressbar != null)
1404                         {
1405                                 __pAddressbar->UpdateFaviconBitmap(false);
1406                         }
1407
1408                 }
1409                 else
1410                 {
1411                         pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_ON);
1412                         if (IsFailed(r))
1413                         {
1414                                 AppLogException("Contextmenu additem:Find on page failed with %s", GetErrorMessage(r));
1415                                 return ;
1416                         }
1417
1418                         if (__pWebViewer != NULL)
1419                         {
1420                                 __pWebViewer->SetPrivateBrowsingEnabled(true);
1421                         }
1422
1423                         SettingPresentationModel::GetInstance()->SetPrivateOn(true);
1424
1425                         if (__pAddressbar != null)
1426                         {
1427                                 __pAddressbar->UpdateFaviconBitmap(true);
1428                         }
1429                 }
1430
1431
1432                 itemIndex = __pMenu->GetItemIndexFromActionId(IDA_PRIVATEON_CLICKED);
1433                 r = __pMenu->SetItemAt(itemIndex,CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"),IDA_PRIVATEON_CLICKED,*pBitmap);
1434                 AppLog("Result:: %s for index = %d", GetErrorMessage(r),itemIndex);
1435                 __pMenu->Invalidate(true);
1436
1437                 if ( pBitmap != NULL )
1438                 {
1439                         delete pBitmap;
1440                 }
1441
1442         }
1443         break;
1444         case IDA_SETTINGS_CLICKED:
1445         {
1446
1447                 ArrayList* pArgList = new(std::nothrow) ArrayList();
1448                 if (pArgList)
1449                 {
1450                         pArgList->Construct();
1451                         pArgList->Add(*__pWindowInfo);
1452                         SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_SETTINGS), pArgList);
1453                 }
1454                 __pMenu->SetShowState(false);
1455                 __pMenu->Invalidate(false);
1456                 if (pArgList != null)
1457                 {
1458                         delete pArgList;
1459                         pArgList = null;
1460                 }
1461
1462         }
1463         break;
1464
1465         case IDA_ADDTOBOOKMARK_CLICKED:
1466         {
1467
1468                 if (__pWindowInfo != NULL && __pWindowInfo->pageUrl != NULL)
1469                 {
1470                         int bookmarkCount=0;
1471                         bool exist = false;
1472                         String url=L"";
1473                         url=__pWindowInfo->pageUrl;
1474                         result r = E_SUCCESS;
1475                         Bitmap* pBitmap = null;
1476                         r=BookmarkPresentationModel::GetInstance()->DoesBookmarkExist(url,exist);
1477
1478                         if (IsFailed(r))
1479                         {
1480                                 return;
1481                         }
1482                         if ( exist == true)
1483                         {
1484                                 String message = CommonUtil::GetString(L"IDS_BR_POP_BOOKMARK_REMOVED");
1485                                 BookmarkPresentationModel::GetInstance()->DeleteBookmark(url);
1486                                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_OFF_TEMP);
1487
1488                                 NotificationPanel* pNotification = new (std::nothrow) NotificationPanel(*this);
1489                                 if (pNotification != null)
1490                                 {
1491                                         pNotification->SetText(message);
1492                                         pNotification->SetPositionDiff(__pFooterPanel->GetHeight());
1493                                         pNotification->ShowNotification();
1494                                 }
1495                         }
1496                         else
1497                         {
1498                                 String title=__pWindowInfo->pageTitle;
1499                                 String message = CommonUtil::GetString(L"IDS_BR_POP_BOOKMARK_ADDED");
1500                                 BookmarkData* pBookmark=new (std::nothrow) BookmarkData();
1501
1502                                 pBookmark->SetBookmarkTitle(title);
1503                                 pBookmark->SetUrl(url);
1504                                 if (__pWebViewer != null && __pWebViewer->GetFaviconN() != null)
1505                                 {
1506                                         pBookmark->SetFavIconBitmap(*(__pWebViewer->GetFaviconN()));
1507                                 }
1508                                 String id = FaviconManager::GetInstance()->SaveFavicon(*__pWindowInfo->pFavicon, __pWindowInfo->faviconUrl);
1509                                 pBookmark->SetFaviconId(id);
1510                                 //r = BookmarkPresentationModel::GetInstance()->SaveBookmark(*pBookmark);
1511                                 r = BookmarkPresentationModel::GetInstance()->SaveTempBookmark(*pBookmark);
1512                                 delete pBookmark;
1513
1514                                 NotificationPanel* pNotification = new (std::nothrow) NotificationPanel(*this);
1515                                 if (pNotification != null)
1516                                 {
1517                                         pNotification->SetText(message);
1518                                         pNotification->SetPositionDiff(__pFooterPanel->GetHeight());
1519                                         pNotification->ShowNotification();
1520                                         pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_ON_TEMP);
1521                                 }
1522                         }
1523                         if (pBitmap != null)
1524                         {
1525                                 r = __pMenu->SetItemAt(0,L"Add to Bookmarks"/*CommonUtil::GetString(L"IDS_BR_OPT_BOOKMARK")*/, IDA_ADDTOBOOKMARK_CLICKED,*pBitmap);
1526                                 delete pBitmap;
1527                         }
1528                 }
1529                 __pMenu->Invalidate(true);
1530
1531         }
1532         break;
1533         case IDA_SHARE_CLICKED:
1534         {
1535                 if(__pPopUp != null)
1536                 {
1537                         delete __pPopUp;
1538                         __pPopUp = null;
1539                 }
1540                 __pPopUp = new(std::nothrow) SharePopup();
1541                 __pPopUp->Initialize();
1542                 if (__pWindowInfo != null)
1543                 {
1544                         ShareInfo* pShareInfo = new(std::nothrow) ShareInfo();
1545                         pShareInfo->SetPageTitle(__pWindowInfo->pageTitle);
1546                         pShareInfo->SetPageUrl(__pWindowInfo->pageUrl);
1547                         pShareInfo->SetImageAttached(false);
1548                         __pPopUp->RemoveAllShareInfo();
1549                         __pPopUp->AddShareInfo(pShareInfo);
1550                 }
1551                 __pPopUp->SetShowState(true);
1552                 __pPopUp->Show();
1553         }
1554         break;
1555         case IDA_BOOKMARKBTN_CLICKED:
1556         {
1557                 AppLogDebug("ONACTION_PERFORMED:IDA_BOOKMARKBTN_CLICKED");
1558                 SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_BOOKMARK_VIEW, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
1559         }
1560         break;
1561         case IDA_ADD_TO_BOOKMARKBTN_CLICKED:
1562         {
1563
1564         }
1565         break;
1566         case IDA_MOREBTN_CLICKED:
1567         {
1568                 AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED 1");
1569                 Point p = Point(__pMoreButton->GetX() + __pMoreButton->GetWidth() / 2, GetClientAreaBounds().y + GetClientAreaBounds().height - __pMoreButton->GetHeight());
1570                 AppLog("Anchot pos: %d %d", p.x, p.y);
1571                 InitContextMenu(p);
1572                 if (__pWindowInfo != NULL && __pWindowInfo->pageUrl != NULL && __pWebViewer->GetShowState() == true)
1573                 {
1574                         AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED 2");
1575                         int bookmarkCount=0;
1576                         bool exist = false;
1577                         String url=L"";
1578                         url=__pWindowInfo->pageUrl;
1579                         result r = E_SUCCESS;
1580                         Bitmap* pBitmap = null;
1581
1582                         r=BookmarkPresentationModel::GetInstance()->DoesBookmarkExist(url,exist);
1583                         if (IsFailed(r))
1584                         {
1585                                 AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED failed");
1586                                 return;
1587                         }
1588                         if ( exist == true)
1589                         {
1590                                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_ON_TEMP);
1591                         }
1592                         else
1593                         {
1594                                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_BOOKMARK_OFF_TEMP);
1595                         }
1596                         AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED 3");
1597
1598                         if (__pMenu->GetItemCount() == 8)
1599                         {
1600                                 r = __pMenu->SetItemAt(1,L"Add to Bookmarks"/*CommonUtil::GetString(L"IDS_BR_OPT_BOOKMARK")*/, IDA_ADDTOBOOKMARK_CLICKED,*pBitmap);
1601                         }
1602                         else
1603                         {
1604                                 r = __pMenu->InsertItemAt(1,L"Add to Bookmarks"/*CommonUtil::GetString(L"IDS_BR_OPT_BOOKMARK")*/, IDA_ADDTOBOOKMARK_CLICKED,*pBitmap);
1605                         }
1606
1607                         if (IsFailed(r))
1608                         {
1609                                 AppLogException("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED Add to Bookmark failed with %s", GetErrorMessage(r));
1610                                 delete pBitmap;
1611                                 return ;
1612                         }
1613                         AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED 4");
1614                         if (__pMenu->GetItemCount() != 8)
1615                         {
1616                                 __pMenu->InsertItemAt(1,L"Add to Bookmarks"/*CommonUtil::GetString(L"IDS_BR_OPT_SHARE")*/, IDA_ADDTOBOOKMARK_CLICKED);
1617
1618 //                              __pMenu->InsertItemAt(2,L"Add to Home"/*CommonUtil::GetString(L"IDS_BR_OPT_SHARE")*/, IDA_ADD_TO_HOME_CLICKED);
1619                                 __pMenu->InsertItemAt(2,CommonUtil::GetString(L"IDS_BR_OPT_SHARE"), IDA_SHARE_CLICKED);
1620                                 __pMenu->InsertItemAt(3,CommonUtil::GetString(L"IDS_BR_OPT_FIND_ON_PAGE_ABB"), IDA_FINDONPAGE_CLICKED);
1621                                 __pMenu->SetMaxVisibleItemsCount(6);
1622                         }
1623                         if( GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE)
1624                         {
1625                                 AppLog(" Orientation landscape");
1626                                 __pMenu->SetMaxVisibleItemsCount(5);
1627                         }
1628                         else
1629                         {
1630                                 AppLog(" Orientation potrait");
1631                                 __pMenu->SetMaxVisibleItemsCount(6);
1632                         }
1633
1634                         AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED 5");
1635                         delete pBitmap;
1636                 }
1637                 AppLogDebug("ONACTION_PERFORMED:IDA_MOREBTN_CLICKED end");
1638                 __pMenu->SetShowState(true);
1639                 __pMenu->Invalidate(true);
1640                 __pMenu->Show();
1641         }
1642         break;
1643         case IDA_HISTORY_CLICKED:
1644         {
1645                 AppLogDebug("ONACTION_PERFORMED:IDA_HISTORYBTN_CLICKED");
1646                 SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_HISTORY_LIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
1647         }
1648         break;
1649         case IDA_SAVED_PAGES_CLICKED:
1650         {
1651
1652         }
1653         break;
1654         case IDA_DESKTOP_VIEW_CLICKED:
1655         {
1656
1657         }
1658         break;
1659         case IDA_SAVE_CLICKED:
1660         {
1661
1662         }
1663         break;
1664         case IDA_MULTIWINDOWBTN_CLICKED:
1665         {
1666                 result r = SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_MULTIPLE_WINDOW, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
1667                 AppLog("IDA_MULTIWINDOWBTN_CLICKED result %s",GetErrorMessage(r));
1668         }
1669         break;
1670
1671         case IDA_NEWWINDOWBTN_CLICKED:
1672         {
1673                 WindowInfo* pNewWindowInfo = MultipleWindowPresentationModel::GetInstance()->CreateNewMainViewScene();
1674
1675                 if (pNewWindowInfo == null)
1676                 {
1677                         return;
1678                 }
1679                 result r = E_SUCCESS;
1680                 SceneManager* pSceneManager = SceneManager::GetInstance();
1681
1682                 if (pSceneManager == NULL)
1683                 {
1684                         return;
1685                 }
1686                 ArrayList* pArgList = new(std::nothrow) ArrayList();
1687                 if (pArgList == NULL)
1688                 {
1689                         return;
1690                 }
1691                 r = pArgList->Construct();
1692                 if (r == E_SUCCESS)
1693                 {
1694                         pArgList->Add(*pNewWindowInfo);
1695                         r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID, SCENE_TRANSITION_ANIMATION_TYPE_NONE),pArgList);
1696                 } 
1697                 delete pArgList;
1698                 pArgList = null;
1699                 if (IsFailed(r))
1700                 {
1701                         AppLogDebug("MainForm::OnActionPerformed Failed to GoBackward %s",GetErrorMessage(r));
1702                         return;
1703                 }
1704         }
1705         break;
1706         case IDA_SMALLFONT_BTN_CLICKED:
1707         {
1708                 WebSetting setting = __pWebReader->GetSetting();
1709                 setting.SetFontSize(15);
1710                 __pWebReader->SetSetting(setting);
1711         }
1712         break;
1713         case IDA_LARGEFONT_BTN_CLICKED:
1714         {
1715                 WebSetting setting = __pWebReader->GetSetting();
1716                 setting.SetFontSize(25);
1717                 __pWebReader->SetSetting(setting);
1718         }
1719         break;
1720         case IDA_READER_CLOSE_CLICKED:
1721         {
1722                 if (__pArticleReaderPanel != null && __pBlankPanel != null)
1723                 {
1724                         //__pArticleReaderPanel->SetShowState(false);
1725                         //__pArticleReaderPanel->Show();
1726                         RemoveControl(*__pBlankPanel);
1727                         //RemoveControl(*__pArticleReaderPanel);
1728                         __pArticleReaderPanel = null;
1729                         __pBlankPanel = null;
1730                         __pArticleReaderLabel = null;
1731                 }
1732                 //if (__pAddressbar)
1733                 //      __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
1734                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
1735         }
1736         break;
1737         case IDA_FINDWORD_CANCEL_CLICKED:
1738         {
1739                 __currentSearchStr = L"";
1740                 __currentWordIndex = 0;
1741                 __maxOccurrances = 0;
1742                 __pFindWordEditField->SetText(L"");
1743                 __pFindWordNext->SetEnabled(false);
1744                 __pFindWordPrev->SetEnabled(false);
1745                 __pFindWordCountLabel->SetText(L"0/0");
1746                 __pWebViewer->SearchText(L"aaaabbbbcccc",true);
1747                 ShowFindWordPanel(false);
1748         }
1749         break;
1750         case IDA_FINDWORD_SEARCH_CLICKED:
1751         {
1752                 __currentSearchStr = __pFindWordEditField->GetText();
1753                 if (__currentSearchStr.GetLength() > 0)
1754                 {
1755                         StartWordSearch();
1756                 }
1757                 else
1758                 {
1759                         AppLogDebug("Enter something");
1760                 }
1761         }
1762         break;
1763         case IDA_FINDWORD_CLEAR_CLICKED:
1764         {
1765                 __pFindWordCountLabel->SetText(L"0/0");
1766                 __pFindWordEditField->SetText(L"");
1767                 __currentSearchStr = L"aaaaaabbbbbbccccccc";
1768                 StartWordSearch();
1769                 __currentSearchStr = L"";
1770                 __pFindWordNext->SetEnabled(false);
1771                 __pFindWordPrev->SetEnabled(false);
1772                 __pFindWordControl->Invalidate(true);
1773         }
1774         break;
1775         case IDA_FINDWORD_NEXT_CLICKED:
1776         {
1777                 FindNextWord(true);
1778         }
1779         break;
1780         case IDA_FINDWORD_PREV_CLICKED:
1781         {
1782                 FindNextWord(false);
1783         }
1784         break;
1785         case IDA_BRIGHTNESS_BTN_CLICKED:
1786         {
1787                 AppLogDebug("IDA_BRIGHTNESS_BTN_CLICKED");
1788                 SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_BRIGHTNESS, SCENE_TRANSITION_ANIMATION_TYPE_NONE));
1789         }
1790         break;
1791         case IDA_COPY_IMAGE_CLICKED:
1792         {
1793                 AppLogDebug("IDA_COPY_IMAGE_CLICKED");
1794                 AppLogDebug("IDA_COPY_IMAGE_CLICKED");
1795                 ClipboardItem item;
1796                 const Bitmap* pBitmap = null;
1797                 if (__pHitElementResult != null)
1798                 {
1799                         pBitmap = __pHitElementResult->GetImage();
1800                 }
1801
1802                 String resourcePath = App::GetInstance()->GetAppResourcePath();
1803                 item.Construct(CLIPBOARD_DATA_TYPE_IMAGE , *pBitmap);
1804
1805                 // copying the item to clipboard
1806                 Clipboard* pClipboard = Clipboard::GetInstance();
1807                 if (pClipboard != null)
1808                 {
1809                         pClipboard->CopyItem(item);
1810                 }
1811         }
1812         break;
1813         case IDA_VIEW_IMAGE_CLICKED:
1814         {
1815                 AppLogDebug("IDA_VIEW_IMAGE_CLICKED");
1816                 WindowInfo* pNewWindowInfo = null;
1817                 if (__pHitElementResult != null)
1818                 {
1819                         String srcUrl = __pHitElementResult->GetAttributeValue(L"src");
1820                         AppLog("MainForm::OnTouchLongPressed srcUrl is %ls",srcUrl.GetPointer());
1821                         LoadUrl(srcUrl);
1822
1823                 }
1824         }
1825         break;
1826         case IDA_SAVE_IMAGE_CLICKED:
1827         {
1828                 AppLogDebug("IDA_SAVE_IMAGE_CLICKED");
1829                 const Bitmap* pSaveBitmap = null;
1830                 String imageName = GetImagePath();
1831                 AppLog("Content manager image name %ls",imageName.GetPointer());
1832                 String imagePath;
1833                 imagePath.Clear();
1834                 imagePath.Append(imageName);
1835                 imagePath.Format(100, L"%ls/Downloads/%ls.jpg",Tizen::System::Environment::GetMediaPath().GetPointer(),  imageName.GetPointer());
1836                 AppLog("Content manager image path %ls",imagePath.GetPointer());
1837                 if (__pHitElementResult != null)
1838                 {
1839                         pSaveBitmap = __pHitElementResult->GetImage();
1840                 }
1841                 ByteBuffer* pBuffer = __pSaveImage->EncodeToBufferN(*pSaveBitmap, IMG_FORMAT_JPG);
1842
1843                 if(pBuffer)
1844                 {
1845                         UpdateImageContent(pBuffer, imageName);
1846                         delete pBuffer;
1847                         NotificationPanel *pNotification = new NotificationPanel(*this);
1848                         String msg;
1849                         AppResource::GetInstance()->GetString("IDS_COM_SK_SAVE", msg);
1850                         msg.Append(imagePath);
1851                         if (pNotification != null)
1852                         {
1853                                 pNotification->SetText(msg);
1854                                 pNotification->SetPositionDiff(__pFooterPanel->GetHeight());
1855                                 pNotification->ShowNotification();
1856                         }
1857                 }
1858                 else
1859                 {
1860                         int __modalMsgBoxResult;
1861                         MessageBox* pMsgBox = new MessageBox();
1862                         pMsgBox->Construct(CommonUtil::GetString(L"IDS_COM_FAILED_TO_SAVE_IMAGE"),CommonUtil::GetString(L"IDS_COM_FAILED_TO_SAVE_IMAGE"),MSGBOX_STYLE_OK,3000);
1863                         pMsgBox->ShowAndWait(__modalMsgBoxResult);
1864                         delete pMsgBox;
1865                         pMsgBox = null;
1866                         __modalMsgBoxResult = 0;
1867                 }
1868         }
1869         break;
1870         case IDA_SHARE_IMAGE_CLICKED:
1871         {
1872                 AppLogDebug("IDA_SHARE_IMAGE_CLICKED");
1873                 if (__pPopUp != null)
1874                 {
1875                         delete __pPopUp;
1876                         __pPopUp = null;
1877                 }
1878                 __pPopUp = new(std::nothrow) SharePopup();
1879                 __pPopUp->Initialize();
1880                 if (__pHitElementResult != null)
1881                 {
1882                         const Bitmap* pSaveBitmap = null;
1883                         String imageName = GetImagePath();
1884                         AppLog("Content manager image name %ls",imageName.GetPointer());
1885                         String imagePath;
1886                         imagePath.Clear();
1887                         imagePath.Append(imageName);
1888                         imagePath.Format(100, L"%lsDownloads/%ls.jpg",Tizen::System::Environment::GetMediaPath().GetPointer(),  imageName.GetPointer());
1889                         AppLog("Content manager image path %ls",imagePath.GetPointer());
1890                         if (__pHitElementResult != null)
1891                         {
1892                                 pSaveBitmap = __pHitElementResult->GetImage();
1893                         }
1894                         __pSaveImage->EncodeToFile(*pSaveBitmap, IMG_FORMAT_JPG, imagePath, true);
1895
1896                         String srcUrl = __pHitElementResult->GetAttributeValue(L"src");
1897                         AppLog("MainForm::OnTouchLongPressed srcUrl is %ls",srcUrl.GetPointer());
1898
1899                         ShareInfo* pShareInfo = new(std::nothrow) ShareInfo();
1900                         pShareInfo->SetPageTitle(L"");
1901                         pShareInfo->SetPageUrl(srcUrl);
1902                         pShareInfo->SetImageAttached(true);
1903                         pShareInfo->SetImagePath(imagePath);
1904                         __pPopUp->RemoveAllShareInfo();
1905                         __pPopUp->AddShareInfo(pShareInfo);
1906                         __pPopUp->SetShowState(true);
1907                         __pPopUp->Show();
1908                 }
1909         }
1910         break;
1911         case IDA_HYPERLINK_OPEN_CLICKED:
1912         {
1913                 AppLogDebug("IDA_VIEW_IMAGE_CLICKED");
1914                 WindowInfo* pNewWindowInfo = null;
1915                 if (__pHitElementResult != null)
1916                 {
1917                         String srcUrl = __pHitElementResult->GetUrl();
1918                         AppLog("MainForm::OnTouchLongPressed srcUrl is %ls",srcUrl.GetPointer());
1919                         LoadUrl(srcUrl);
1920                 }
1921         }
1922         break;
1923         case IDA_HYPERLINK_SHARE_IMAGE_CLICKED:
1924         {
1925                 if (__pHitElementResult == null)
1926                 {
1927                         return;
1928                 }
1929
1930                 if(__pPopUp != null)
1931                 {
1932                         delete __pPopUp;
1933                         __pPopUp = null;
1934                 }
1935                 __pPopUp = new(std::nothrow) SharePopup();
1936                 __pPopUp->Initialize();
1937
1938                 ShareInfo* pShareInfo = new(std::nothrow) ShareInfo();
1939                 pShareInfo->SetPageUrl(__pHitElementResult->GetUrl());
1940                 pShareInfo->SetImageAttached(false);
1941                 __pPopUp->RemoveAllShareInfo();
1942                 __pPopUp->AddShareInfo(pShareInfo);
1943
1944                 __pPopUp->SetShowState(true);
1945                 __pPopUp->Show();
1946         }
1947         break;
1948         case IDA_HYPERLINK_COPY_LINK_CLICKED:
1949         {
1950                 ClipboardItem item;
1951                 String url;
1952                 if (__pHitElementResult != null)
1953                 {
1954                         url = __pHitElementResult->GetUrl();
1955                 }
1956
1957                 String resourcePath = App::GetInstance()->GetAppResourcePath();
1958                 item.Construct(CLIPBOARD_DATA_TYPE_TEXT , url);
1959
1960                 // copying the item to clipboard
1961                 Clipboard* pClipboard = Clipboard::GetInstance();
1962                 if (pClipboard != null)
1963                 {
1964                         pClipboard->CopyItem(item);
1965                 }
1966         }
1967         break;
1968         case IDA_FIND_TEXT__CLICKED:
1969         {
1970                 AppLogDebug("MainForm::OnActionPerformed find word clicked");
1971                 __currentSearchStr.Clear();
1972                 __currentSearchStr.Append(__currentSelectedStr);
1973                 InitFindWordPanel();
1974                 __pFindWordEditField->SetText(__currentSearchStr);
1975                 if(__pMenu != null)
1976                 {
1977                         __pMenu->SetShowState(false);
1978                         __pMenu->Invalidate(false);
1979                 }
1980
1981                 __adressPanelPosition.y = 0;
1982
1983                 if (__pAddressbar != null && __pWebViewer != NULL)
1984                 {
1985                         __webControlPosition.y = __pAddressbar->GetHeight() - 12;
1986                         //__pAddressbar->SetBounds(0,__adressPanelPosition.y,GetClientAreaBounds().width,__pAddressbar->GetHeight());
1987                         //__pAddressbar->Invalidate(true);
1988                         __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight() - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12);
1989
1990                         if (__pFooterPanel->GetShowState() == false)
1991                                 __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width, GetClientAreaBounds().height - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12)));
1992                         else
1993                                 __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width, __webControlHeight));
1994                         //                      __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width,__webControlHeight));
1995                         __pWebViewer->Invalidate(true);
1996                 }
1997
1998                 ShowFindWordPanel(true);
1999                 __pFindWordEditField->SetFocus();
2000                 if (__currentSearchStr.GetLength() > 0)
2001                 {
2002                         StartWordSearch();
2003                 }
2004                 else
2005                 {
2006                         AppLogDebug("Enter something");
2007                 }
2008
2009                 if (__pWebViewer != null)
2010                 {
2011                         // releasing the set block
2012                         __pWebViewer->ReleaseBlock();
2013                 }
2014
2015         }
2016         break;
2017         case IDA_SHARE_TEXT_CLICKED:
2018         {
2019                 AppLogDebug("IDA_SHARE_TEXT_CLICKED");
2020                 if(__pPopUp != null)
2021                 {
2022                         delete __pPopUp;
2023                         __pPopUp = null;
2024                 }
2025                 __pPopUp = new(std::nothrow) SharePopup();
2026                 __pPopUp->Initialize();
2027                 if (__pHitElementResult != null)
2028                 {
2029                         ShareInfo* pShareInfo = new(std::nothrow) ShareInfo();
2030                         pShareInfo->SetPageTitle(L"");
2031                         pShareInfo->SetPageUrl(__currentSelectedStr);
2032                         pShareInfo->SetImageAttached(false);
2033                         __pPopUp->RemoveAllShareInfo();
2034                         __pPopUp->AddShareInfo(pShareInfo);
2035                         __pPopUp->SetShowState(true);
2036                         __pPopUp->Show();
2037                 }
2038         }
2039         break;
2040         case IDA_COPY_TEXT_CLICKED:
2041         {
2042                 __pWebViewer->ReleaseBlock();
2043                 // need to implement
2044                 //__currentSelectedStr
2045                 // Sets data to a clip board item
2046                 ClipboardItem item;
2047                 String resourcePath = App::GetInstance()->GetAppResourcePath();
2048                 item.Construct(CLIPBOARD_DATA_TYPE_TEXT, __currentSelectedStr);
2049
2050                 // copying the item to clipboard
2051                 Clipboard* pClipboard = Clipboard::GetInstance();
2052                 if (pClipboard != null)
2053                 {
2054                         pClipboard->CopyItem(item);
2055                 }
2056         }
2057         break;
2058         case IDA_PASTE_TEXT_CLICKED:
2059         {
2060                 Clipboard* pClipboard = Clipboard::GetInstance();
2061
2062                 if(pClipboard == null)
2063                 {
2064                         return;
2065                 }
2066                 // Retrieves a latest item
2067                 ClipboardItem* pItem = pClipboard->RetrieveLatestItemN(CLIPBOARD_DATA_TYPE_TEXT | CLIPBOARD_DATA_TYPE_HTML);
2068
2069                 if(pItem == null)
2070                 {
2071                         return;
2072                 }
2073                 //Gets data from the clipboard item
2074                 String* pString = dynamic_cast<String*>(pItem->GetData());
2075
2076                 if (pString != null)
2077                 {
2078                         String idElement = __pHitElementResult->GetAttributeValue(L"id");
2079                         String nameElement = __pHitElementResult->GetAttributeValue(L"name");
2080                         AppLog("MainForm::IDA_PASTE_TEXT_CLICKED id is %ls",idElement.GetPointer());
2081                         String script = L"function insertAtCursor(myField, myValue) {   if (document.selection) {               myField.focus();                sel = document.selection.createRange();                 sel.text = myValue;     }               else if (myField.selectionStart || myField.selectionStart == '0'){              var startPos = myField.selectionStart;          var endPos = myField.selectionEnd;              myField.value = myField.value.substring(0, startPos)+ myValue + myField.value.substring(endPos, myField.value.length);          } else {                        myField.value += myValue;               }       } ";
2082                         if(idElement.GetLength() != 0)
2083                         {
2084                                 script.Append("insertAtCursor(");
2085                                 script.Append(idElement);
2086                                 script.Append(",");
2087                                 script.Append("\"");
2088                                 script.Append(*pString);
2089                                 script.Append("\");");
2090                         }
2091                         else if (nameElement.GetLength() != 0)
2092                         {
2093                                 script.Append("insertAtCursor(document.getElementsByName('");
2094                                 script.Append(nameElement);
2095                                 script.Append("')[0],");
2096                                 script.Append("\"");
2097                                 script.Append(*pString);
2098                                 script.Append("\");");
2099                         }
2100                         AppLog("MainForm::OnTouchLongPressed script is %ls",script.GetPointer());
2101                         String* pStr = __pWebViewer->EvaluateJavascriptN(script);
2102                         delete pStr;
2103                 }
2104                 delete pItem;
2105         }
2106         break;
2107         case IDA_GO_BACK:
2108         {
2109                 OnBackClicked();
2110         }
2111         break;
2112         case IDA_GO_FORWARD:
2113         {
2114                 OnForwardClicked();
2115         }
2116         break;
2117         case IDA_REFRESH_BTN_CLICKED:
2118         {
2119                 __isLoadingCompleted = false;
2120                 __isLoadingData = true;
2121                 __progressPercentage = 0;
2122                 __displayUrl = __pFooterUrlField->GetText();
2123
2124                 String url = __pFooterUrlField->GetText();
2125                 AppLog("MainForm::OnUrlSubmitted url is %ls", url.GetPointer());
2126                 LoadUrl(url);
2127
2128                 //OnUrlSubmitted();
2129                 UpdateProgressBitmap();
2130         }
2131         break;
2132         case IDA_STOP_BTN_CLICKED:
2133         {
2134                 __isLoadingCompleted = false;
2135                 __isLoadingData = false;
2136                 __progressPercentage = 0;
2137                 __pFooterUrlField->HideKeypad();
2138                 __displayUrl = __pFooterUrlField->GetText();
2139
2140                 if (__pWebViewer)
2141                 {
2142                         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2143                         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2144                         __pWebViewer->StopLoading();
2145                         RequestRedraw(true);
2146                 }
2147
2148                 UpdateProgressBitmap();
2149         }
2150         break;
2151         case IDA_CLEAR_URL:
2152         {
2153                 if (__pFooterUrlField->GetText().IsEmpty() == false)
2154                 {
2155                         //__displayUrl = __pUrlField->GetText();
2156                         __pFooterUrlField->Clear();
2157                 }
2158         }
2159         break;
2160         default:
2161                 break;
2162         }
2163 }
2164
2165 void
2166 MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
2167 {
2168
2169         UiApp* pApp = UiApp::GetInstance();
2170         if (pApp == null)
2171         {
2172                 return;
2173         }
2174         pApp->Terminate();
2175 }
2176
2177 void
2178 MainForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
2179                 const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
2180 {
2181         String* pSelectedScene = NULL;
2182         Object* pValue = NULL;
2183         String* pUrl = null;
2184         MultipleWindowPresentationModel::GetInstance()->GetValue(SELECTED_SCENE_ID, &pValue);
2185         pSelectedScene = (String*) pValue;
2186
2187         if (pSelectedScene != null)
2188         {
2189                 delete pSelectedScene;
2190         }
2191         MultipleWindowPresentationModel::GetInstance()->SetValue(SELECTED_SCENE_ID, null);
2192         String* selectedSceneID = new(std::nothrow) String(currentSceneId);
2193         AppLogDebug("current scene id is %ls", currentSceneId.GetPointer());
2194         AppLogDebug("selected scene id is %ls", currentSceneId.GetPointer());
2195
2196         // setting the current scene ID
2197         MultipleWindowPresentationModel::GetInstance()->SetCurrentSceneID(currentSceneId);
2198
2199         MultipleWindowPresentationModel::GetInstance()->SetValue(SELECTED_SCENE_ID, (Object*) selectedSceneID);
2200
2201         if(pArgs != null && pArgs->GetCount() > 0 && pArgs->GetCount() == 2)
2202         {
2203                 __pWindowInfo = dynamic_cast< WindowInfo* >(pArgs->GetAt(0));
2204                 if(__pWindowInfo == null)
2205                         return;
2206                 //              if(__pWindowInfo == null)
2207                 {
2208                         pUrl = dynamic_cast< String* >(pArgs->GetAt(1));
2209                 }
2210         }
2211         else if ( pArgs != null && pArgs->GetCount() == 1)
2212         {
2213                 __pWindowInfo = dynamic_cast< WindowInfo* >(pArgs->GetAt(0));
2214         }
2215
2216         InitFooter();
2217         InitAddressbar();
2218
2219         // hiding the address bar
2220         //      __pAddressbar->SetBounds(__pAddressbar->GetX(), __pAddressbar->GetY() - __pAddressbar->GetHeight(), __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
2221         __pAddressbar->SetShowState(false);
2222         if(__pWebViewer != null)
2223         {
2224                 __pWebViewer->Resume();
2225         }
2226
2227         if(pUrl != null && pUrl->GetLength() > 0)
2228         {
2229                 LoadUrl(*pUrl);
2230         }
2231         else if(__pWindowInfo != null)
2232         {
2233                 if(__pWindowInfo->pageUrl.GetLength() > 0 && previousSceneId != IDSCN_MULTIPLE_WINDOW && previousSceneId != IDSCN_MULTIPLE_WINDOW_GRID && previousSceneId != IDSCN_BOOKMARK_VIEW && previousSceneId != IDSCN_SETTINGS && previousSceneId != IDSCN_MAIN_VIEW)
2234                 {
2235                         LoadUrl(__pWindowInfo->pageUrl);
2236                 }
2237                 else if (__pWindowInfo->isJavascriptInitiated == true)
2238                 {
2239                         AppLog("Called");
2240                         InitWebControl();
2241                         __pWindowInfo->pCurrentWeb = __pWebViewer;
2242                 }
2243         }
2244
2245         String homePage = SettingPresentationModel::GetInstance()->GetHomepage();
2246         AppLog("Homepage Value in Onsceneactivated is %ls",homePage.GetPointer());
2247         if(homePage.CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
2248         {
2249                 InitMostVisitedSitesView(GetOrientationStatus());
2250         }
2251
2252         if (__pAddressbar != null && pArgs != null && (previousSceneId == IDSCN_BOOKMARK_VIEW || previousSceneId == IDSCN_HISTORY_LIST))
2253         {
2254                 String* pBookmarkUrl = dynamic_cast< String* >(pArgs->GetAt(0));
2255
2256                 if (pBookmarkUrl == null)
2257                         return;
2258                 AppLogDebug("bookmarkUrl = %ls",pBookmarkUrl->GetPointer());
2259                 //__pAddressbar->SetUrl(*pBookmarkUrl);
2260                 SetUrl(*pBookmarkUrl);
2261
2262                 if (__pWebViewer != null && homePage.CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) != 0)
2263                         __pWebViewer->LoadUrl(*pBookmarkUrl);
2264                 delete pBookmarkUrl;
2265         }
2266
2267         bool isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
2268         Bitmap* pBitmap = null;
2269         if (isPrivateBrowsing == true)
2270         {
2271                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_ON);
2272
2273                 if (__pWebViewer != null)
2274                 {
2275                         __pWebViewer->SetPrivateBrowsingEnabled(true);
2276                 }
2277
2278                 if (__pAddressbar != null)
2279                 {
2280                         //      __pAddressbar->UpdateFaviconBitmap(true);
2281                 }
2282
2283         }
2284         else
2285         {
2286                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_OFF);
2287
2288                 if (__pWebViewer != null)
2289                 {
2290                         __pWebViewer->SetPrivateBrowsingEnabled(false);
2291                 }
2292
2293                 if (__pAddressbar != null)
2294                 {
2295                         //      __pAddressbar->UpdateFaviconBitmap(false);
2296                 }
2297         }
2298
2299         if (__pMenu != null && __pMenu->GetItemCount() == 3)
2300         {
2301                 __pMenu->SetItemAt(0,CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"),IDA_PRIVATEON_CLICKED,*pBitmap);
2302         }
2303         else if (__pMenu != null )
2304         {
2305                 __pMenu->SetItemAt(3,CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"),IDA_PRIVATEON_CLICKED,*pBitmap);
2306         }
2307
2308         if (pBitmap != null)
2309         {
2310                 delete pBitmap;
2311         }
2312
2313         AppLog("ABC: OnSceneActivatedN started exit");
2314
2315 }
2316
2317 void
2318 MainForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
2319                 const Tizen::Ui::Scenes::SceneId& nextSceneId)
2320 {
2321         Canvas* pWebCanvas = null;
2322         if (__pWebViewer != null)
2323         {
2324                 pWebCanvas = __pWebViewer->GetCanvasN();
2325                 __pWebViewer->Pause();
2326
2327         }
2328         if (pWebCanvas == null)
2329         {
2330                 return;
2331         }
2332         if (__pWindowInfo != null)
2333         {
2334                 if (__pWindowInfo->pWebCanvasBitmap != null)
2335                 {
2336                         delete __pWindowInfo->pWebCanvasBitmap;
2337                 }
2338                 __pWindowInfo->pWebCanvasBitmap = new(std::nothrow) Bitmap();
2339                 result r = __pWindowInfo->pWebCanvasBitmap->Construct(*pWebCanvas,Rectangle(0,0,pWebCanvas->GetBounds().width,pWebCanvas->GetBounds().height));
2340                 AppLog("Bitmap Construction result %s",GetErrorMessage(r));
2341         }
2342         Bitmap* pBitmap = GetCapturedBitmapN();
2343         AppLog("Coming here");
2344         Canvas* pCanvas = new(std::nothrow) Canvas();
2345         pCanvas->Construct(GetClientAreaBounds());
2346         if(pBitmap != null)
2347         {
2348                 pCanvas->DrawBitmap(Point(0,0),*pBitmap);
2349                 delete pBitmap;
2350         }
2351         if(__pWebViewer != null && __pWindowInfo != null)
2352                 pCanvas->DrawBitmap(__pWebViewer->GetPosition(),*__pWindowInfo->pWebCanvasBitmap);
2353
2354         WindowInfo::pFormCanvasBitmap = new(std::nothrow) Bitmap();
2355         WindowInfo::pFormCanvasBitmap->Construct(*pCanvas,Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight()));
2356         delete pCanvas;
2357         AppLog("Coming here");
2358 }
2359
2360 bool
2361 MainForm::OnHttpAuthenticationRequestedN(const Tizen::Base::String& host,
2362                 const Tizen::Base::String& realm,
2363                 const Tizen::Web::Controls::AuthenticationChallenge& authentication)
2364 {
2365         return false;
2366 }
2367
2368 void
2369 MainForm::OnHttpAuthenticationCanceled(void)
2370 {
2371 }
2372
2373 void
2374 MainForm::OnLoadingStarted(void)
2375 {
2376         AppLogDebug("MainForm::OnLoadingStarted entered");
2377         __isLoaded = true;
2378         if(__pAddressbar == NULL || __pWebViewer == null)
2379         {
2380                 return;
2381         }
2382         String url = __pWebViewer->GetUrl();
2383         if(url.Contains(IDS_TIZEN_SERVICE))
2384         {
2385                 String appId;
2386                 String delim(L":;");
2387
2388                 // Creates a StringTokenizer instance
2389                 StringTokenizer strTok(url, delim);
2390
2391                 int count = strTok.GetTokenCount();     // count == 4
2392
2393                 HashMap *pMap = new HashMap();
2394                 pMap->Construct();
2395                 String token;
2396                 String key;
2397                 String value;
2398                 while (strTok.HasMoreTokens())
2399                 {
2400                         AppLog("Token: %ls", token.GetPointer());
2401                         strTok.GetNextToken(token);         // Tizen, StringTokenizer, Sample, code
2402                         if(token.Contains(IDS_APPID))
2403                         {
2404                                 token.SubString(6, appId);
2405                                 AppLog("AppID:%ls", appId.GetPointer());
2406                         }
2407                         else if(token.Contains("="))
2408                         {
2409                                 String *pKey = new String();
2410                                 String *pValue = new String();
2411                                 int index = -1;
2412                                 token.IndexOf("=", 0, index);
2413                                 if(index != -1)
2414                                 {
2415                                         token.SubString(0, index, *pKey);
2416                                         token.SubString(index + 1, *pValue);
2417                                         pMap->Add(pKey, pValue);
2418                                 }
2419                         }
2420                 }
2421                 if(appId != "")
2422                 {
2423                         AppControl *pAppControl = null;
2424                         String operationId = L"http://tizen.org/appcontrol/operation/main";
2425                         pAppControl = dynamic_cast<AppControl*>(AppManager::FindAppControlN(appId, operationId));
2426                         if(pAppControl)
2427                         {
2428                                 AppLog("Starting AppControl");
2429                                 result r = pAppControl->Start(null, null, pMap, null);
2430                                 AppLog("Result of Start %s", GetErrorMessage(r));
2431                         }
2432                         else
2433                         {
2434                                 AppLogException("AppControl not found");
2435                         }
2436                         return;
2437                 }
2438         }
2439         Bitmap* pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN();
2440         if(pBitmap != null)
2441         {
2442                 __pAddressbar->SetFaviconBitmap(*pBitmap);
2443         }
2444         delete pBitmap;
2445         if (__adressPanelPosition.y < (0 - __pAddressbar->GetHeight() + 12))
2446         {
2447                 // updating the address bar position with respect to web control
2448                 __adressPanelPosition.y = 0 - __pAddressbar->GetHeight() + 12; //-12 is for the progress label
2449                 __distanceMoved = 0;
2450                 MoveUiControls();
2451         }
2452
2453         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2454         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2455         if (__pWebViewer != null)
2456         {
2457                 AppLog("MainForm::OnLoadingStarted __pWebViewer->GetUrl() %ls",__pWebViewer->GetUrl().GetPointer());
2458                 //__pAddressbar->SetUrl(__pWebViewer->GetUrl());
2459                 SetUrl(__pWebViewer->GetUrl());
2460                 if (__pWindowInfo != NULL)
2461                 {
2462                         __pWindowInfo->pageUrl = __pWebViewer->GetUrl();
2463                 }
2464                 __pAddressbar->Invalidate(true);
2465         }
2466
2467 }
2468
2469 void
2470 MainForm::OnLoadingCanceled(void)
2471 {
2472
2473 }
2474
2475
2476 void
2477 MainForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
2478 {
2479         AppLog("MainForm::OnKeypadWillOpen");
2480         if (__pAddressbar != null)
2481         {
2482                 OnAddressBarKeypadWillOpen(*__pAddressbar);
2483         }
2484
2485 }
2486
2487 void
2488 MainForm::OnKeypadOpened(Tizen::Ui::Control& source)
2489 {
2490         if(__pAddressbar != null)
2491         {
2492                 OnAddressBarKeypadOpened(*__pAddressbar);
2493         }
2494 }
2495
2496
2497 void
2498 MainForm::OnKeypadClosed(Tizen::Ui::Control& source)
2499 {
2500
2501
2502         if (__pAddressbar != null)
2503         {
2504                 OnAddressBarKeypadClosed(*__pAddressbar);
2505         }
2506 }
2507
2508 void
2509 MainForm::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
2510 {
2511         AppLog("KeypadBoundsChanged");
2512         RelayoutControls(false);
2513 }
2514
2515 void
2516 MainForm::OnLoadingErrorOccurred(LoadingErrorType error,
2517                 const Tizen::Base::String& reason)
2518 {
2519         AppLogDebug("Error: %d, %ls", error, reason.GetPointer());
2520 }
2521
2522 void
2523 MainForm::OnLoadingCompleted(void)
2524 {
2525         AppLog("MainForm::OnLoadingCompleted start");
2526         DateTime date;
2527         result r = E_SUCCESS;
2528
2529         if (__pWebViewer == null)
2530         {
2531                 return;
2532         }
2533
2534         if (__pAddressbar == null)
2535         {
2536                 return;
2537         }
2538         if (__pWebViewer->CanGoForward())
2539         {
2540                 //__pAddressbar->SetForwardButtonEnabled(true);
2541                 SetForwardButtonEnabled(true);
2542         }
2543         else
2544         {
2545                 //__pAddressbar->SetForwardButtonEnabled(false);
2546                 SetForwardButtonEnabled(false);
2547         }
2548
2549         /*if (__pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_EDIT)
2550         {
2551                 __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2552
2553                 //__pAddressbar->UpdateProgress(0);
2554                 UpdateProgress(0);
2555         }*/
2556
2557         if(GetAddressbarMode() != ADDRESSBAR_MODE_EDIT)
2558         {
2559                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2560                 UpdateProgress(0);
2561         }
2562
2563         AppLog("PrivateBrowsing %d",__pWebViewer->IsPrivateBrowsingEnabled());
2564         bool isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
2565         if (isPrivateBrowsing == false)
2566         {
2567                 History* pHistory = new(std::nothrow) History;
2568
2569                 HistoryPresentationModel::GetCurrentDateTime(date);
2570                 if(__pWindowInfo)
2571                 {
2572                         pHistory->SetHistoryTitle(__pWindowInfo->pageTitle);
2573                         AppLogDebug("MainForm::OnLoadingCompleted pagetitle = %ls", __pWindowInfo->pageTitle.GetPointer());
2574
2575                         pHistory->SetHistoryUrl(__pWindowInfo->pageUrl);
2576                         AppLogDebug("MainForm::OnLoadingCompleted pageUrl = %ls", __pWindowInfo->pageUrl.GetPointer());
2577                 }
2578                 pHistory->SetVisitedTime(date);
2579                 /*String id = "";
2580                 if(__pWindowInfo)
2581                         id = FaviconManager::GetInstance()->SaveFavicon(*__pWindowInfo->pFavicon, __pWindowInfo->faviconUrl);
2582                 pHistory->SetFaviconId(id);*/
2583
2584                 if (__pWebViewer != null)
2585                 {
2586                         AppLog("MainForm::OnLoadingCompleted setting the fav icon 0");
2587
2588                         Bitmap* pTempBitmap = __pWebViewer->GetFaviconN();
2589                         if (pTempBitmap != null)
2590                         {
2591                                 AppLog("MainForm::OnLoadingCompleted setting the fav icon 1");
2592                                 pHistory->SetFavIconBitmap(*pTempBitmap);
2593                         }
2594
2595                         AppLog("MainForm::OnLoadingCompleted setting the fav icon 2");
2596                 }
2597
2598                 Canvas* pCanvas = __pWebViewer->GetCanvasN();
2599                 Bitmap* pBitmap = new(std::nothrow) Bitmap();
2600                 if ( pCanvas != null &&  pCanvas != null && pBitmap != null)
2601                 {
2602                         pBitmap->Construct(*pCanvas, pCanvas->GetBounds());
2603                         pBitmap->Scale(Dimension(pBitmap->GetWidth()/4, pBitmap->GetHeight()/4));
2604                         pHistory->SetThumbnail(pBitmap);
2605                 }
2606                 Bitmap *pFavIcon = __pWebViewer->GetFaviconN();
2607                 if(pFavIcon)
2608                 {
2609                         pHistory->SetFavIconBitmap(*pFavIcon);
2610                         delete pFavIcon;
2611                 }
2612
2613                 HistoryPresentationModel::GetInstance()->SaveTempHistory(*pHistory);
2614                 delete pHistory;
2615         }
2616         else
2617         {
2618                 return;
2619         }
2620         if (__pWindowInfo && __pWindowInfo->faviconUrl == "")
2621         {
2622                 // temperary fixed (webpage can be not loaded)
2623                 UpdateFavicon();
2624         }
2625         AppLog("MainForm::OnLoadingCompleted done");
2626 }
2627
2628 void
2629 MainForm::OnEstimatedProgress(int progress)
2630 {
2631         AppLogDebug("MainForm::OnEstimatedProgress entered");
2632         if (progress < DEFAULT_PROGRESS_PERCENTAGE)
2633                 progress = DEFAULT_PROGRESS_PERCENTAGE;
2634         //if(__pAddressbar)
2635         //      __pAddressbar->UpdateProgress(progress);
2636         UpdateProgress(progress);
2637 }
2638
2639 void MainForm::OnFaviconReceived(const Tizen::Graphics::Bitmap& favicon)
2640 {
2641         AppLog("MainForm::OnFaviconReceived");
2642         Bitmap* pFavIconBitmap = __pWebViewer->GetFaviconN();
2643
2644         if (pFavIconBitmap != null)
2645         {
2646                 pFavIconBitmap->GetWidth();
2647                 pFavIconBitmap->GetHeight();
2648         }
2649 }
2650
2651 void
2652 MainForm::OnUrlValueChanged(Addressbar&)
2653 {
2654         Invalidate(true);
2655 }
2656
2657 void
2658 MainForm::OnUrlSubmitted(Addressbar& addBar)
2659 {
2660         AppLog("MainForm::OnUrlSubmitted");
2661         String url = addBar.GetUrl();
2662         AppLog("MainForm::OnUrlSubmitted url is %ls", url.GetPointer());
2663
2664 //      __pFooterPanel->SetShowState(true);
2665         if(__pFooterUrlField)
2666                 __pFooterUrlField->SetCursorPosition(__pFooterUrlField->GetTextLength());
2667         OnAddressCancelledClicked(*__pAddressbar);
2668 //      __pAddressbar->SetShowState(false);
2669 //      RelayoutControls(false);
2670         LoadUrl(url);
2671 }
2672
2673 void
2674 MainForm::LoadUrl(String& url)
2675 {
2676         url.Trim();
2677         String encodedUrl;
2678 //      UrlEncoder::Encode(url, L"UTF-8", encodedUrl);
2679         AppLogDebug("MainForm::LoadUrl enter");
2680
2681         if (__pWebViewer != null)
2682         {
2683                 __pWebViewer->SetShowState(true);
2684                 __pWebViewer->Invalidate(true);
2685         }
2686
2687         if (url.CompareTo(L"") == 0)
2688         {
2689                 return;
2690         }
2691         if(__pFooterPanel != null)
2692         {
2693                 __pFooterPanel->SetShowState(true);
2694                 __pFooterPanel->Invalidate(true);
2695         }
2696         InitWebControl();
2697
2698         bool ret = false;
2699         bool flag = false;
2700
2701         String firstPattern(L"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
2702         String secondPattern(L"^[A-Za-z0-9\.\+-:#@%/;$~?]+\\.[A-Za-z0-9!\+-=:#@%/;$~()_?\\\.&]{2,}$");   // URL of type  abc.com (i.e without protocol in front of it)
2703
2704         RegularExpression firstRegex;
2705         RegularExpression secondRegex;
2706
2707         firstRegex.Construct(firstPattern, REGEX_CASELESS);
2708         secondRegex.Construct(secondPattern, REGEX_CASELESS);
2709
2710         // Match
2711         ret = firstRegex.Match(url, false); // This returns true value
2712         flag = secondRegex.Match(url, false);  // Checks whether URL typed is of type  abc.com (i.e without protocol in front of it)
2713
2714         if (ret == true && __pWebViewer != null)
2715         {
2716                 __pWebViewer->LoadUrl(url);
2717         }
2718         else if(__pWebViewer != null)
2719         {
2720                 String tempUrl = L"http://";
2721                 tempUrl.Append(url);
2722
2723                 if (flag == true)
2724                 {
2725                         __pWebViewer->LoadUrl(tempUrl);
2726                 }
2727                 else
2728                 {
2729                                 UrlEncoder::Encode(url, L"UTF-8", encodedUrl);
2730                         __pWebViewer->LoadUrl(SettingPresentationModel::GetInstance()->GetSearchUrl(encodedUrl));
2731                 }
2732         }
2733         if (__pAddressbar != null)
2734         {
2735                 //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2736                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2737         }
2738
2739         AppLogDebug("MainForm::LoadUrl exit");
2740
2741         return;
2742
2743 }
2744
2745 void
2746 MainForm::OnStopClicked(Addressbar& addBar)
2747 {
2748         AppLogDebug("MainForm::OnStopClicked called");
2749         if (__pWebViewer)
2750         {
2751                 //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2752                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2753                 __pWebViewer->StopLoading();
2754                 RequestRedraw(true);
2755         }
2756 }
2757
2758 void
2759 MainForm::OnReaderClicked(const Addressbar& addBar)
2760 {
2761         int bodyWidth = ((double)(GetClientAreaBounds().width))*0.73;
2762
2763         CreateReaderPanel();
2764         AppLogDebug("MainScene::OnReaderClicked entered");
2765
2766
2767         /*if (__pArticleReaderPanel)
2768         {
2769                 AppLogDebug("showstate true for reader panel");
2770                 __pArticleReaderPanel->SetShowState(true);
2771                 __pArticleReaderPanel->Show();
2772         }*/
2773         int xPos = __pArticleReaderPanel->GetX();
2774         int yPos = __pArticleReaderPanel->GetY();
2775         AppLog("OnReaderClicked() xPos = %d",xPos);
2776         AppLog("OnReaderClicked() yPos = %d",yPos);
2777
2778         if (__pReaderData == null)
2779         {
2780                 return;
2781         }
2782
2783         String loadData = L"<html>\
2784                                         <head>\
2785                                         <meta name='viewport' content='width=device-width*0.73,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no'>\
2786                                         <style>\
2787                                         h1\
2788                                         {\
2789                                         font-weight:bold;\
2790                                         background-color: transparent;\
2791                                         }\
2792                                         div\
2793                                         {\
2794                                         display: block;\
2795                                         }\
2796                                         p\
2797                                         {\
2798                                         display: block; \
2799                                         }\
2800                                         img\
2801                                         {\
2802                                         margin-left:auto;\
2803                                         margin-right:auto;\
2804                                         }\
2805                                         \
2806                                         \
2807                                         </style>\
2808                                         </head>\
2809                                         <body style='width:'";
2810         loadData.Append(bodyWidth);
2811         loadData.Append(L"px'>");
2812         AppLogDebug("data->GetLength %d",__pReaderData->GetLength());
2813         loadData.Append(*__pReaderData);
2814         loadData.Append(L"</body></html>");
2815
2816         ByteBuffer buf ;
2817         buf.Construct(loadData.GetLength());
2818         AppLogDebug("data->GetLength %d",loadData.GetLength());
2819         for (int z=0;z<loadData.GetLength();z++)
2820         {
2821                 mchar b;
2822                 loadData.GetCharAt(z,b);
2823                 buf.SetByte((byte)b);
2824         }
2825
2826         buf.Flip();
2827         if (__pWebReader != null)
2828         {
2829                 __pWebReader->LoadData(L"",buf,L"text/html");
2830                 AppLogDebug("LoadData result %s",GetErrorMessage(GetLastResult()));
2831         }
2832         else
2833         {
2834                 AppLogDebug("cannot LoadData __pWebReader is null");
2835         }
2836
2837 }
2838
2839 void
2840 MainForm::OnBackClicked(/*const Addressbar& addBar*/)
2841 {
2842 //      AppLog("MainForm::OnBackClicked");
2843         result r = E_FAILURE;
2844
2845         if (__pWebViewer && __pWebViewer->CanGoBack())
2846         {
2847                 __pWebViewer->GoBack();
2848         }
2849         else if(__pWindowInfo->isJavascriptInitiated == false)
2850         {
2851                 UiApp* pApp = null;
2852                 pApp = UiApp::GetInstance();
2853                 if (pApp != null)
2854                 {
2855                         r = pApp->Terminate();
2856                         if (IsFailed(r))
2857                         {
2858                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2859                                 return;
2860                         }
2861                 }
2862         }
2863         else
2864         {
2865                 UiApp* pApp = null;
2866                 WindowInfo* pWindowInfo = null;
2867                 int totalCount = 0;
2868                 SceneManager* pSceneManager = SceneManager::GetInstance();
2869                 if (pSceneManager == null)
2870                 {
2871                         return;
2872                 }
2873                 ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList();
2874                 if (pAllWindowList == NULL)
2875                 {
2876                         pApp = UiApp::GetInstance();
2877                         if (pApp != null)
2878                         {
2879                                 r = pApp->Terminate();
2880                                 if (IsFailed(r))
2881                                 {
2882                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2883                                         return;
2884                                 }
2885                         }
2886                 }
2887                 if (pAllWindowList != null)
2888                 {
2889                         totalCount = pAllWindowList->GetCount();
2890                 }
2891                 for (int count = 0; count < totalCount; count++)
2892                 {
2893                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count));
2894                         if (pWindowInfo == null)
2895                         {
2896                                 pApp = UiApp::GetInstance();
2897                                 if (pApp != null)
2898                                 {
2899                                         r = pApp->Terminate();
2900                                         if (IsFailed(r))
2901                                         {
2902                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2903                                                 return;
2904                                         }
2905                                 }
2906                         }
2907                         if (pSceneManager != null && pWindowInfo != null && pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID && pWindowInfo->isJavascriptInitiated == true)
2908                         {
2909                                 r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID);
2910                                 if (IsFailed(r))
2911                                 {
2912                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2913                                         return;
2914                                 }
2915                                 r = pAllWindowList->RemoveAt(count, true);
2916                                 __pWindowInfo = null;
2917                                 if (IsFailed(r))
2918                                 {
2919                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2920                                         return;
2921                                 }
2922                                 if(count > 0)
2923                                 {
2924                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1));
2925                                 }
2926                                 else
2927                                 {
2928                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1));
2929                                 }
2930                                 if (pWindowInfo == null)
2931                                 {
2932                                         pApp = UiApp::GetInstance();
2933                                         if (pApp != null)
2934                                         {
2935                                                 r = pApp->Terminate();
2936                                                 return;
2937                                         }
2938                                 }
2939                                 else
2940                                 {
2941                                         r = pSceneManager->GoBackward(BackwardSceneTransition(pWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE));
2942                                         if (IsFailed(r))
2943                                         {
2944                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2945                                                 return;
2946                                         }
2947                                 }
2948                                 break;
2949                         }
2950
2951                 }
2952
2953         }
2954
2955 }
2956
2957 void
2958 MainForm::OnForwardClicked(/*const Addressbar& addBar*/)
2959 {
2960         AppLog("MainForm::OnForwardClicked");
2961         if (__pWebViewer == null)
2962                 return;
2963
2964         if (__pWebViewer->CanGoForward())
2965         {
2966                 __pWebViewer->GoForward();
2967         }
2968 }
2969
2970 void
2971 MainForm::OnAddressCancelledClicked(const Addressbar& addBar)
2972 {
2973         result r = E_SUCCESS;
2974
2975         __pFooterPanel->SetShowState(true);
2976         __pFooterUrlField->SetFocusable(true);
2977
2978         if(__pWebViewer)
2979                 __pWebViewer->SetFocus();
2980         else if(__pMostVisitedListView)
2981                 __pMostVisitedListView->SetFocus();
2982         else if(__pMultiWindowButton)
2983                 __pMultiWindowButton->SetFocus();
2984         __pMoreButton->SetFocus();
2985
2986         __pAddressbar->SetShowState(false);
2987
2988         RelayoutControls(false);
2989
2990 }
2991
2992 void
2993 MainForm::OnAddressBarModeChanged(/*const Addressbar& addBar*/)
2994 {
2995         __prevAddressBarMode = __curAddressBarMode;
2996
2997         if (__pAddressbar != null)
2998         {
2999                 __curAddressBarMode = GetAddressbarMode();
3000         }
3001
3002         if (__curAddressBarMode == ADDRESSBAR_MODE_EDIT)
3003         {
3004                 __adressPanelPosition.y = 0;
3005                 if (__pAddressbar != null)
3006                 {
3007                         __webControlPosition.y = __pAddressbar->GetHeight() - 12;
3008                         __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
3009                         __pAddressbar->Invalidate(true);
3010                 }
3011                 if (__pWebViewer != null)
3012                 {
3013                         __pWebViewer->StopLoading();
3014                 }
3015         }
3016         else if(__curAddressBarMode == ADDRESSBAR_MODE_LOADING)
3017         {
3018                 __adressPanelPosition.y = 0;
3019                 if (__pAddressbar != null)
3020                 {
3021                         __webControlPosition.y = 0;
3022                         __pAddressbar->SetBounds(Rectangle(0, __pAddressbar->GetY() - __pAddressbar->GetHeight(), GetClientAreaBounds().width, __pAddressbar->GetHeight()));
3023                         __pAddressbar->Invalidate(true);
3024                 }
3025         }
3026 }
3027
3028 void
3029 MainForm::OnClipboardClosed(const Addressbar& addBar)
3030 {
3031         RelayoutControls(false);
3032 }
3033
3034 void
3035 MainForm::OnAddressBarKeypadClosed(const Addressbar& addBar, bool footerState)
3036 {
3037         if(__pAddressbar)
3038                 __pAddressbar->SetShowState(false);
3039         if(__pFooterPanel)
3040                 __pFooterPanel->SetShowState(true);
3041         if(__pWebViewer)
3042                 __pWebViewer->SetFocus();
3043         if(__pFooterUrlField)
3044         {
3045                 __pFooterUrlField->SetFocusable(true);
3046         }
3047         RelayoutControls(false);
3048 }
3049
3050 void
3051 MainForm::OnAddressBarKeypadOpened(const Addressbar& addBar)
3052 {
3053         if (__pFindWordControl && __pFindWordControl->GetShowState() == true)
3054         {
3055                 __pAddressbar->SetShowState(false);
3056         }
3057         else
3058         {
3059                 if (__pAddressbar != null && __pAddressbar->GetShowState() == false)
3060                 {
3061                         __pAddressbar->SetShowState(true);
3062                         __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
3063                         __pAddressbar->SetAddressbarURLFocus();
3064                 }
3065         }
3066
3067         RelayoutControls(false);
3068 }
3069
3070 void
3071 MainForm::OnAddressBarKeypadWillOpen(const Addressbar& addBar)
3072 {
3073         __pFooterPanel->SetShowState(false);
3074 }
3075
3076 void
3077 MainForm::OnAddressBarKeypadBoundsChanged(const Addressbar& addBar)
3078 {
3079         AppLog("KeypadBoundsChanged");
3080         RelayoutControls(false);
3081 }
3082
3083 void
3084 MainForm::OnPageTitleReceived(const Tizen::Base::String& title)
3085 {
3086         if (__pWindowInfo)
3087         {
3088                 __pWindowInfo->pageTitle = title;
3089                 if (__pWebViewer != null)
3090                 {
3091                         __pWindowInfo->pageUrl = __pWebViewer->GetUrl();
3092                 }
3093         }
3094         if (__pAddressbar != null && __pWebViewer != null)
3095         {
3096                 SetUrl(__pWebViewer->GetUrl());
3097                 __pAddressbar->Invalidate(true);
3098         }
3099 }
3100
3101 void
3102 MainForm::UpdateFavicon(void)
3103 {
3104         bool urlImageType = false;
3105         String *tempPath = __pWebViewer->EvaluateJavascriptN(L"var getFavicon = function() {      var favicon = '/favicon.ico';      var nodeList = document.getElementsByTagName('link');    if(nodeList) {  for (var i = 0; i < nodeList.length; i++)      {          if ((nodeList[i].getAttribute('rel') == 'icon')||(nodeList[i].getAttribute('rel') == 'shortcut icon'))         {              favicon = nodeList[i].getAttribute('href');          }      } }     return favicon;          };  getFavicon();");
3106         Bitmap* pBitmap = null;
3107
3108         if (tempPath && tempPath->GetLength() > 0 && tempPath->CompareTo(L"undefined") != 0)
3109         {
3110                 if (__pWindowInfo != null)
3111                 {
3112                         Uri url;
3113                         url.SetUri(*tempPath);
3114                         if (url.GetHost().GetLength() == 0)
3115                         {
3116                                 Uri webUrl;
3117                                 webUrl.SetUri(__pWebViewer->GetUrl());
3118                                 result r = url.SetHost(webUrl.GetHost());
3119                                 if(IsFailed(r))
3120                                 {
3121                                         delete tempPath;
3122                                         return;
3123                                 }
3124                         }
3125                         if (url.GetScheme().GetLength() == 0)
3126                         {
3127                                 Uri webUrl;
3128                                 webUrl.SetUri(__pWebViewer->GetUrl());
3129                                 url.SetScheme(webUrl.GetScheme());
3130                         }
3131                         __pWindowInfo->faviconUrl = url.ToString();
3132
3133                         pBitmap = __pWebViewer->GetFaviconN();
3134
3135                         if (pBitmap != null)
3136                         {
3137                                 if (__pWindowInfo->pFavicon != NULL)
3138                                 {
3139                                         __pWindowInfo->pFavicon = null;
3140                                 }
3141                                 __pWindowInfo->pFavicon = new(std::nothrow) Bitmap();
3142                                 __pWindowInfo->pFavicon->Construct(*pBitmap,Rectangle(0,0,pBitmap->GetWidth(),pBitmap->GetHeight()));
3143
3144                                 __pAddressbar->SetFaviconBitmap(*__pWindowInfo->pFavicon);
3145
3146                                 FaviconManager::GetInstance()->SaveFavicon(*__pWindowInfo->pFavicon, __pWindowInfo->faviconUrl);
3147                         }
3148                         else if(__pWindowInfo->pFavicon != null)
3149                         {
3150                                 __pAddressbar->SetFaviconBitmap(*__pWindowInfo->pFavicon);
3151                         }
3152                         else
3153                         {
3154                                 Bitmap *pDefaultBmp = FaviconManager::GetInstance()->GetDefaultFaviconN();
3155                                 if(pDefaultBmp != null)
3156                                 {
3157                                         __pAddressbar->SetFaviconBitmap(*pDefaultBmp);
3158                                 }
3159                         }
3160                 }
3161                 delete tempPath;
3162         }
3163         else
3164         {
3165                 delete tempPath;
3166                 AppLogDebug("Error occured: %s", GetErrorMessage(GetLastResult()));
3167         }
3168
3169 }
3170
3171
3172 bool
3173 MainForm::OnLoadingRequested(const Tizen::Base::String& url,
3174                 Tizen::Web::Controls::WebNavigationType type)
3175 {
3176         // when load new page if find word panel is open its show state is false
3177         ShowFindWordPanel(false);
3178
3179         __pFooterPanel->Invalidate(true);
3180
3181         Uri uriInfo;
3182         uriInfo.SetUri(url);
3183
3184         if(url.Contains(IDS_TIZEN_SERVICE))
3185         {
3186                 String appId;
3187                 String delim(L":;,");
3188
3189                 // Creates a StringTokenizer instance
3190                 StringTokenizer strTok(url, delim);
3191
3192                 int count = strTok.GetTokenCount();     // count == 4
3193
3194                 HashMap *pMap = new HashMap();
3195                 pMap->Construct();
3196
3197                 String token;
3198                 String key;
3199                 String value;
3200                 while (strTok.HasMoreTokens())
3201                 {
3202                         AppLog("Token: %ls", token.GetPointer());
3203                         strTok.GetNextToken(token);         // Tizen, StringTokenizer, Sample, code
3204                         if(token.Contains(IDS_APPID))
3205                         {
3206                                 token.SubString(6, appId);
3207                                 AppLog("AppID:%ls", appId.GetPointer());
3208                         }
3209                         else if(token.Contains("="))
3210                         {
3211                                 String *pKey = new String();
3212                                 String *pValue = new String();
3213                                 int index = -1;
3214                                 token.IndexOf("=", 0, index);
3215                                 if(index != -1)
3216                                 {
3217                                         token.SubString(0, index, *pKey);
3218                                         token.SubString(index + 1, *pValue);
3219                                         pMap->Add(pKey, pValue);
3220                                 }
3221                         }
3222                 }
3223                 if(appId != "")
3224                 {
3225                         AppControl *pAppControl = null;
3226                         String operationId = L"http://tizen.org/appcontrol/operation/main";
3227                         pAppControl = dynamic_cast<AppControl*>(AppManager::FindAppControlN(appId, operationId));
3228                         if(pAppControl)
3229                         {
3230                                 result r = pAppControl->Start(null, null, pMap, null);
3231                         }
3232                         else
3233                         {
3234                                 AppLogException("AppControl not found");
3235                         }
3236                         return true;
3237                 }
3238         }
3239
3240         if ( __pAddressbar != null && __pAddressbar->GetShowState() == true)
3241         {
3242                 __pAddressbar->SetShowState(false);
3243                 OnAddressCancelledClicked(*__pAddressbar);
3244                 __pAddressbar->Invalidate(true);
3245         }
3246         return false;
3247 }
3248
3249 DecisionPolicy
3250 MainForm::OnWebDataReceived(const Tizen::Base::String& mime,
3251                 const Tizen::Net::Http::HttpHeader& httpHeader)
3252 {
3253         return Tizen::Web::Controls::WEB_DECISION_CONTINUE;
3254 }
3255
3256
3257 void
3258 MainForm::OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint)
3259 {
3260         AppLog("MainForm::OnWebPageBlockSelected");
3261         if (__pHitElementResult != null)
3262         {
3263                 delete __pHitElementResult;
3264                 __pHitElementResult = null;
3265         }
3266
3267         if (__pWebViewer != null)
3268         {
3269                 AppLog("MainForm::OnWebPageBlockSelected web not null");
3270                 __pHitElementResult = __pWebViewer->GetElementByPointN(endPoint);
3271         }
3272
3273         if (__pHitElementResult == null)
3274         {
3275                 return;
3276         }
3277
3278         if (__pHitElementResult->HasImage() != true)
3279         {
3280                 String tagName = __pHitElementResult->GetTagName();
3281                 String type = __pHitElementResult->GetAttributeValue("type");
3282
3283                 __currentSelectedStr.Clear();
3284                 AppLog("__currentSelectedStr after clear %ls",__currentSelectedStr.GetPointer());
3285                 __currentSelectedStr = __pWebViewer->GetTextFromBlock();
3286                 AppLog("__currentSelectedStr after GetTextFromBlock %ls",__currentSelectedStr.GetPointer());
3287
3288                 if (((tagName.CompareTo(L"INPUT") == 0)  || tagName.CompareTo(L"TEXTAREA") == 0) && __isLongPressedDone == true)
3289                 {
3290                         AppLog("MainForm::OnWebPageBlockSelected show paste option");
3291
3292                         InitSelectTextContextMenu(endPoint,true);
3293                         __pImageMenu->SetShowState(true);
3294                         __pImageMenu->Show();
3295                         __pImageMenu->Invalidate(true);
3296                 }
3297                 else if(__isLongPressedDone == true)
3298                 {
3299                         AppLog("MainForm::OnWebPageBlockSelected no paste option");
3300
3301                         if(__pHitElementResult->GetUrl().GetLength() > 0)
3302                         {
3303                                 __currentSelectedStr.Clear();
3304                                 __currentSelectedStr = __pHitElementResult->GetUrl();
3305                         }
3306                         InitSelectTextContextMenu(endPoint,false);
3307                         __pImageMenu->SetShowState(true);
3308                         __pImageMenu->Show();
3309                         __pImageMenu->Invalidate(true);
3310                 }
3311
3312                 AppLog("MainForm::OnWebPageBlockSelected block text is %ls",__currentSelectedStr.GetPointer());
3313                 AppLog("MainForm::OnWebPageBlockSelected tag name is %ls",tagName.GetPointer());
3314                 AppLog("MainForm::OnWebPageBlockSelected type name is %ls",type.GetPointer());
3315         }
3316
3317 }
3318
3319 void
3320 MainForm::OnWebPageShowRequested(Tizen::Web::Controls::Web& source)
3321 {
3322
3323 }
3324
3325 Web*
3326 MainForm::OnWebWindowCreateRequested(void)
3327 {
3328         WindowInfo* pNewWindowInfo = MultipleWindowPresentationModel::GetInstance()->CreateNewMainViewScene();
3329
3330         if (pNewWindowInfo == null)
3331         {
3332                 return null;
3333         }
3334         result r = E_SUCCESS;
3335         SceneManager* pSceneManager = SceneManager::GetInstance();
3336         if (pSceneManager == NULL)
3337         {
3338                 return null;
3339         }
3340         ArrayList* pArgList = new(std::nothrow) ArrayList();
3341         if (pArgList == NULL)
3342         {
3343                 return null;
3344         }
3345         r = pArgList->Construct();
3346         if (r == E_SUCCESS)
3347         {
3348                 pNewWindowInfo->isJavascriptInitiated = true;
3349                 pArgList->Add(*pNewWindowInfo);
3350                 r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID, SCENE_TRANSITION_ANIMATION_TYPE_NONE),pArgList);
3351                 delete pArgList;
3352                 if (IsFailed(r))
3353                 {
3354                         AppLogDebug("EditHistoryListForm::OnFormBackRequested Failed to GoBackward %s",GetErrorMessage(r));
3355                         return null;
3356                 }
3357         } else {
3358                 delete pArgList;
3359         }
3360
3361         return pNewWindowInfo->pCurrentWeb;
3362 }
3363
3364 void
3365 MainForm::RelayoutControls(bool showAddressbar)
3366 {
3367         __webControlPosition.y = 0;
3368         __webControlHeight = GetClientAreaBounds().height;
3369         AppLog("Client area height: %d", __webControlHeight);
3370
3371         AppLog("Client area height: %d", __webControlHeight);
3372         if(__pAddressbar != null && __pAddressbar->GetShowState() == true)
3373         {
3374                 __webControlPosition.y += __pAddressbar->GetHeight();
3375                 __webControlHeight -= __pAddressbar->GetHeight();
3376                 __pAddressbar->SetBounds(0, 0, __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
3377         }
3378         else if(__pFindWordControl != null && __pFindWordControl->GetShowState() == true)
3379         {
3380                 __webControlPosition.y += __pFindWordControl->GetHeight();
3381                 __webControlHeight -= __pFindWordControl->GetHeight();
3382                 __pFindWordControl->SetBounds(0, 0, GetClientAreaBounds().width, __pFindWordControl->GetHeight());
3383         }
3384
3385         if(__pFooterPanel != null && __pFooterPanel->GetShowState() == true)
3386         {
3387                 __webControlHeight -= __pFooterPanel->GetHeight();
3388                 __pFooterPanel->SetBounds(0, __webControlPosition.y + __webControlHeight, GetClientAreaBounds().width, __pFooterPanel->GetHeight());
3389         }
3390         if (__pWebViewer != null && __pWebViewer->GetShowState() == true)
3391         {
3392                 __pWebViewer->SetBounds(0, __webControlPosition.y, GetClientAreaBounds().width, __webControlHeight);
3393                 __pWebViewer->Invalidate(false);
3394         }
3395         if(__pMostVisitedListView != null && __pAddressbar != null && __pFooterPanel != null)
3396         {
3397                 __pMostVisitedListView->SetBounds(Tizen::Graphics::Rectangle(0,__webControlPosition.y , GetClientAreaBounds().width, __webControlHeight));
3398         }
3399
3400         Invalidate(true);
3401 }
3402
3403 void
3404 MainForm::ShowFindWordPanel(bool show , bool isTouchPressed)
3405 {
3406         if (__pFindWordControl == null)
3407         {
3408                 return;
3409         }
3410         if (show == true)
3411         {
3412                 InitFindWordPanel();
3413 //              __pFindWordEditField->SetText(__currentSearchStr);
3414                 //__pFindWordCountLabel->SetText(L"");
3415 //              __pFindWordCountLabel->SetText(L"0/0");
3416                 __pFindWordControl->SetShowState(true);
3417         }
3418         else
3419         {
3420                 if(__pFindWordControl != null)
3421                 {
3422                         __pFindWordControl->SetShowState(false);
3423                 }
3424         }
3425
3426         AppLog("MainForm::ShowFindWordPanel %d",show);
3427         if (show && !isTouchPressed)
3428         {
3429                 if (__pFindWordEditField)
3430                 {
3431                         __pFindWordEditField->SetFocus();
3432                         __pFindWordEditField->ShowKeypad();
3433                 }
3434         }
3435         else
3436         {
3437                 if (__pFindWordEditField)
3438                         __pFindWordEditField->HideKeypad();
3439         }
3440
3441         RelayoutControls(false);
3442 }
3443
3444 void
3445 MainForm::StartWordSearch()
3446 {
3447         //Get the count of occurances of the word in the current page
3448         __maxOccurrances = 0;
3449         __currentWordIndex = 0;
3450
3451         __pFindWordPrev->SetEnabled(false);
3452         String *pCountStr = null;
3453         __pWebViewer->SearchTextAllAsync(__currentSearchStr, false);
3454         /*__pWebViewer->EvaluateJavascriptN(L"document.body.textContent.match(/"  + __currentSearchStr + "/gi).length;");
3455         if (pCountStr != null)
3456         {
3457                 Integer::Parse(*pCountStr, 10, __maxOccurrances);
3458                 delete pCountStr;
3459         }
3460
3461         AppLogDebug("'%ls' is found %d times", __currentSearchStr.GetPointer(), __maxOccurrances);
3462          */
3463
3464 }
3465
3466 void MainForm::OnTextFound(int totalCount, int currentOrdinal)
3467 {
3468         AppLog("MainForm::OnTextFound totalCount %d",totalCount);
3469         AppLog("MainForm::OnTextFound currentOrdinal %d",currentOrdinal);
3470
3471         if(totalCount == -1 || totalCount == 0)
3472         {
3473                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),64,__pFindWordCountLabel->GetHeight());
3474                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),214+80,__pFindWordEditField->GetHeight());
3475 //              return;
3476         }
3477         else if(totalCount > 100)
3478         {
3479                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
3480                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
3481         }
3482         else
3483         {
3484                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
3485                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
3486         }
3487
3488         __maxOccurrances = totalCount;
3489         __currentWordIndex = currentOrdinal;
3490
3491         //Reset the UI controls as per the maxOccurrance value
3492         if (totalCount <= 0)
3493         {
3494                 AppLog("Word not found");
3495                 //Show error notification to user
3496                 __pFindWordNext->SetEnabled(false);
3497                 __pFindWordCountLabel->SetText(L"0/0");
3498                 __pFindWordNext->Invalidate(false);
3499                 __pFindWordPrev->Invalidate(false);
3500                 __pFindWordCountLabel->Invalidate(false);
3501                 return;
3502         }
3503
3504         if (totalCount == 1)
3505         {
3506                 __pFindWordNext->SetEnabled(false);
3507         }
3508         else
3509         {
3510                 __pFindWordNext->SetEnabled(true);
3511         }
3512
3513         String countStr = L"";
3514         countStr.Append(__currentWordIndex);
3515         countStr.Append(L"/");
3516         countStr.Append(__maxOccurrances);
3517         __pFindWordCountLabel->SetText(countStr);
3518         //      __pFindWordCountLabel->SetShowState(true);
3519         __pFindWordCountLabel->Invalidate(false);
3520
3521         //FindNextWord(true);
3522         //Update the controls
3523         __pFindWordNext->Invalidate(false);
3524         __pFindWordPrev->Invalidate(false);
3525         __pFindWordCountLabel->Invalidate(false);
3526 }
3527
3528 void
3529 MainForm::FindNextWord(bool next)
3530 {
3531         if (next == true)
3532         {
3533                 if (__pWebViewer->SearchText(__currentSearchStr, true) == true)
3534                 {
3535                         if(__currentWordIndex < __maxOccurrances)
3536                         {
3537                                 __currentWordIndex++;
3538                         }
3539                 }
3540         }
3541         else
3542         {
3543                 if (__pWebViewer->SearchText(__currentSearchStr, false) == true)
3544                 {
3545                         if(__currentWordIndex > 1)
3546                         {
3547                                 __currentWordIndex--;
3548                         }
3549                 }
3550         }
3551
3552         String countStr = L"";
3553         countStr.Append(__currentWordIndex);
3554         countStr.Append(L"/");
3555         countStr.Append(__maxOccurrances);
3556         __pFindWordCountLabel->SetText(countStr);
3557         //      __pFindWordCountLabel->SetShowState(true);
3558         __pFindWordCountLabel->Invalidate(false);
3559         if (__currentWordIndex >= __maxOccurrances)
3560         {
3561                 __pFindWordNext->SetEnabled(false);
3562         }
3563         else
3564         {
3565                 __pFindWordNext->SetEnabled(true);
3566         }
3567         if (__currentWordIndex <= 1)
3568         {
3569                 __pFindWordPrev->SetEnabled(false);
3570         }
3571         else
3572         {
3573                 __pFindWordPrev->SetEnabled(true);
3574         }
3575         __pFindWordPrev->Invalidate(false);
3576         __pFindWordNext->Invalidate(false);
3577         __pFindWordCountLabel->Invalidate(false);
3578         __pFindWordControl->Invalidate(true);
3579 }
3580 void
3581 MainForm::OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source)
3582 {
3583         AppLog("MainForm::OnWebKeypadWillOpen");
3584         __isWebKeypadOpened = true;
3585         //      OnAddressBarKeypadOpened(*__pAddressbar);
3586 }
3587
3588 void
3589 MainForm::OnWebKeypadOpened(Tizen::Web::Controls::Web& source)
3590 {
3591
3592         if(__pFindWordControl && __pFindWordControl->GetShowState() == true)
3593         {
3594                 __currentSearchStr = L"";
3595                 __currentWordIndex = 0;
3596                 __maxOccurrances = 0;
3597                 __pFindWordEditField->SetText(L"");
3598                 __pFindWordNext->SetEnabled(false);
3599                 __pFindWordPrev->SetEnabled(false);
3600                 __pFindWordCountLabel->SetText(L"0/0");
3601                 __pWebViewer->SearchText(L"aaaabbbbcccc",true);
3602                 __pFindWordControl->SetShowState(false);
3603                 if (__pFindWordEditField)
3604                         __pFindWordEditField->HideKeypad();
3605         }
3606
3607
3608         if (__pWebViewer != null && __pFooterPanel != null)
3609         {
3610                 AppLog("MainForm::OnOrientationChanged GetClientAreaBounds().height %d ", GetClientAreaBounds().height);
3611                 if(__pAddressbar != null)
3612                 {
3613                         __pAddressbar->SetShowState(false);
3614                 }
3615                 if(__pFindWordControl != null)
3616                 {
3617                         __pFindWordControl->SetShowState(false);
3618                 }
3619                 __pFooterPanel->SetShowState(false);
3620                 __pWebViewer->SetBounds(Rectangle(0, 0,GetClientAreaBounds().width, GetClientAreaBounds().height));
3621         }
3622         Invalidate(true);
3623 }
3624
3625 void
3626 MainForm::OnWebKeypadClosed(Tizen::Web::Controls::Web& source)
3627 {
3628         __pFooterPanel->SetShowState(true);
3629         OnAddressBarKeypadClosed(*__pAddressbar);
3630         __isWebKeypadOpened = false;
3631 }
3632
3633 void
3634 MainForm::OnTouchDoublePressed(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
3635 {
3636         Control* temp = const_cast< Control* >(&source);
3637         Header* pHeader = dynamic_cast< Header* >(temp);
3638         if (pHeader != null)
3639         {
3640                 //Header double - clicked
3641                 AppLog("Header double clicked");
3642         }
3643         if(__pFindWordControl)
3644         {
3645                 AppLog("MainForm::OnTouchPressed %d",__pFindWordControl->GetShowState());
3646                 ShowFindWordPanel(__pFindWordControl->GetShowState(), true);
3647         }
3648
3649
3650         AppLog("MainScene::OnTouchDoublePressed");
3651         bool isReaderEnabled = SettingPresentationModel::GetInstance()->IsRunReaderEnabled();
3652         if (isReaderEnabled == true)
3653         {
3654                 if (__pReaderData)
3655                 {
3656                         delete __pReaderData;
3657                         __pReaderData = null;
3658                 }
3659                 String filePath = Tizen::App::UiApp::GetInstance()->GetAppRootPath();
3660                 filePath.Append(L"data/reader.js");
3661                 File file;
3662                 char buffer[10];
3663                 char buffer2[5];
3664                 int i;
3665                 int readCnt;
3666                 result r = E_SUCCESS;
3667                 FileAttributes attr;
3668
3669                 File::GetAttributes(filePath,attr);
3670                 // Creates file
3671                 r = file.Construct(filePath, L"r+");
3672                 if (IsFailed(r))
3673                 {
3674                         AppLogDebug("File construct failed with %s", GetErrorMessage(r));
3675                         return;
3676                 }
3677                 char* pScript = new(std::nothrow) char[attr.GetFileSize()+1];
3678                 if(pScript == null)
3679                 {
3680                         AppLogDebug("Memory allocation for file failed %s", GetErrorMessage(r));
3681                         return;
3682                 }
3683                 file.Read(pScript,attr.GetFileSize());
3684
3685                 AppLogDebug("scipt length %d",strlen(pScript));
3686                 String strScript = L"";
3687                 strScript.Append(pScript);
3688                 __pReaderData = __pWebViewer->EvaluateJavascriptN(strScript);
3689                 if (!__pReaderData)
3690                 {
3691                         AppLog("MainScene::data is null Error :%s",GetErrorMessage(GetLastResult()));
3692                         return;
3693                 }
3694                 AppLogDebug("evaluateJavascript result %s , __pReaderData %ls",GetErrorMessage(GetLastResult()),__pReaderData->GetPointer());
3695                 if (__pReaderData->CompareTo(L"undefined") != 0 && __pReaderData->CompareTo(L"") != 0)
3696                 {
3697                         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER);
3698                         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER);
3699                 }
3700                 delete[] pScript;
3701         }
3702 }
3703
3704 void MainForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3705 {
3706         AppLog("MainForm::OnTouchLongPressed");
3707
3708         if (__pHitElementResult != null)
3709         {
3710                 delete __pHitElementResult;
3711                 __pHitElementResult = null;
3712         }
3713
3714         if (__pWebViewer != null)
3715         {
3716                 AppLog("MainForm::OnTouchLongPressed web not null");
3717                 __pHitElementResult = __pWebViewer->GetElementByPointN(currentPosition);
3718         }
3719
3720         if (__pHitElementResult == null)
3721         {
3722                 return;
3723         }
3724
3725         if (__pHitElementResult->HasImage() == true)
3726         {
3727                 InitImageContextMenu(currentPosition);
3728                 __pImageMenu->SetShowState(true);
3729                 __pImageMenu->Show();
3730                 __pImageMenu->Invalidate(true);
3731         }
3732         else if(__pHitElementResult->HasUrl() == true)
3733         {
3734                 String tempURl = __pHitElementResult->GetUrl();
3735                 AppLog("tempURl is %ls", tempURl.GetPointer());
3736                 const Bitmap* pBitmap = __pHitElementResult->GetImage();
3737                 if (pBitmap != null)
3738                 {
3739                         AppLog("not null");
3740                 }
3741                 else
3742                 {
3743                         AppLog(null);
3744                 }
3745                 InitImageLinkContextMenu(currentPosition);
3746                 __pImageMenu->SetShowState(true);
3747                 __pImageMenu->Show();
3748                 __pImageMenu->Invalidate(true);
3749         }
3750         else
3751         {
3752                 String tagName = __pHitElementResult->GetTagName();
3753                 String type = __pHitElementResult->GetAttributeValue("type");
3754                 String value = __pHitElementResult->GetAttributeValue(L"value");
3755                 String innerHtml = __pHitElementResult->GetAttributeValue(L"innerHTML");
3756
3757                 __currentSelectedStr.Clear();
3758                 __currentSelectedStr = __pWebViewer->GetTextFromBlock();
3759
3760                 AppLog("tag name is %ls", tagName.GetPointer());
3761                 AppLog("type is %ls", type.GetPointer());
3762                 AppLog("innerHtml is %ls", innerHtml.GetPointer());
3763
3764                 if (((tagName.CompareTo(L"INPUT") == 0)  || tagName.CompareTo(L"TEXTAREA") == 0) &&  value.GetLength() == 0 && innerHtml.GetLength() == 0 && __isWebKeypadOpened == true)
3765                 {
3766                         AppLog("MainForm::OnWebPageBlockSelected show paste option");
3767
3768                         InitSelectTextContextMenu(currentPosition,true, true);
3769                         if(__pImageMenu)
3770                         {
3771                                 __pImageMenu->SetShowState(true);
3772                                 __pImageMenu->Show();
3773                                 __pImageMenu->Invalidate(true);
3774                         }
3775                 }
3776                 __isLongPressedDone = true;
3777                 __pWebViewer->SetBlockSelectionPosition(currentPosition);
3778
3779         }
3780         __inputEventToBeSupressed = true;
3781 }
3782
3783 void
3784 MainForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3785 {
3786         AppLog("MainForm::OnTouchReleased");
3787
3788         HitElementResult* pHitElement = __pWebViewer->GetElementByPointN(currentPosition);
3789         if(pHitElement != null && pHitElement->HasUrl() == true && __inputEventToBeSupressed == true)
3790         {
3791                 __pWebViewer->ConsumeInputEvent();
3792         }
3793         if(pHitElement != null)
3794         {
3795                 delete pHitElement;
3796         }
3797         __inputEventToBeSupressed = false;
3798 }
3799
3800 bool
3801 MainForm::OnTouchPressed(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3802 {
3803
3804         return true;
3805 }
3806
3807 bool
3808 MainForm::OnTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3809 {
3810         if(__pFindWordControl && __pFindWordControl->GetShowState() == true)
3811         {
3812                 __currentSearchStr = L"";
3813                 __currentWordIndex = 0;
3814                 __maxOccurrances = 0;
3815                 __pFindWordEditField->SetText(L"");
3816                 __pFindWordNext->SetEnabled(false);
3817                 __pFindWordPrev->SetEnabled(false);
3818                 __pFindWordCountLabel->SetText(L"0/0");
3819                 __pWebViewer->SearchText(L"aaaabbbbcccc",true);
3820                 __pFindWordControl->SetShowState(false);
3821                 __pFindWordEditField->HideKeypad();
3822         }
3823         if(__pAddressbar->GetShowState() == false)
3824         {
3825                 __pAddressbar->SetShowState(true);
3826                 __pAddressbar->SetAddressbarURLFocus();
3827                 __pFooterUrlField->SetFocusable(false);
3828                 __pFooterPanel->SetShowState(false);
3829         }
3830
3831         return true;
3832 }
3833
3834 bool
3835 MainForm::OnTouchMoved(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3836 {
3837         return true;
3838 }
3839
3840 bool
3841 MainForm::OnTouchCanceled(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3842 {
3843         return true;
3844 }
3845
3846 bool
3847 MainForm::OnPreviewTouchPressed(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3848 {
3849         return true;
3850 }
3851
3852 bool
3853 MainForm::OnPreviewTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3854 {
3855         return true;
3856 }
3857
3858 bool
3859 MainForm::OnPreviewTouchMoved(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3860 {
3861         return true;
3862 }
3863
3864 void
3865 MainForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
3866 {
3867         AppLog("MainForm::OnOrientationChanged GetClientAreaBounds %d, %d",GetClientAreaBounds().width,GetClientAreaBounds().height);
3868         int widthContextItem = 0;
3869         if(__pFindWordControl != null)
3870                 ShowFindWordPanel(__pFindWordControl->GetShowState(), false);
3871         if ( __pFooterLabel != null)
3872         {
3873                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pFooterLabel->GetWidth(), __pFooterLabel->GetHeight());
3874                 if(pBitmap != null)
3875                 {
3876                         __pFooterLabel->SetBackgroundBitmap(*pBitmap);
3877                         delete pBitmap;
3878                 }
3879         }
3880
3881         if (__pFindWordBgLabel != null)
3882         {
3883                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_FINDWORD_INPUT_FIELD_BG, __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight());
3884                 if (pBitmap != null)
3885                 {
3886                         __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap);
3887                         delete pBitmap;
3888                 }
3889         }
3890
3891         if(__pMenu != null)
3892                 __pMenu->SetShowState(false);
3893         if( GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
3894         {
3895                 widthContextItem = WIDTH_CONTEXT_MENU_BUTTON_LANDSCAPE;
3896         }
3897         else
3898         {
3899                 widthContextItem = WIDTH_CONTEXT_MENU_BUTTON_PORTRAIT;
3900         }
3901
3902         if (__pFooterPanel)
3903         {
3904                 AppLog("__pFooterPanel->GetShowState() is true");
3905                 InitFooter();
3906                 __pFooterPanel->SetBounds(0, GetClientAreaBounds().height - __pFooterPanel->GetHeight(), __pFooterPanel->GetWidth(), __pFooterPanel->GetHeight());
3907                 __pFooterPanel->Invalidate(true);
3908         }
3909         InitAddressbar();
3910
3911         if(__pMoreButton && __pMenu)
3912         {
3913                 Point p = Point(__pMoreButton->GetX() + __pMoreButton->GetWidth() / 2, GetBounds().height - __pMoreButton->GetHeight());
3914                 __pMenu->SetAnchorPosition(p);
3915                 __pMenu->Invalidate(true);
3916         }
3917
3918         String homePage = SettingPresentationModel::GetInstance()->GetHomepage();
3919         if (homePage.CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
3920         {
3921                 InitMostVisitedSitesView(orientationStatus);
3922         }
3923
3924         RelayoutControls(false);
3925         if (__pArticleReaderPanel != null)
3926         {
3927                 if (__pArticleReaderPanel->GetShowState() == true)
3928                 {
3929                         __pArticleReaderPanel->SetBounds((GetClientAreaBounds().width - __pArticleReaderPanel->GetWidth())/2,(GetClientAreaBounds().height - __pArticleReaderPanel->GetHeight())/2, __pArticleReaderPanel->GetWidth(), __pArticleReaderPanel->GetHeight());
3930
3931                         if (__pBlankPanel != null)
3932                                 __pBlankPanel->SetBounds(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height);
3933
3934                         if (__pWebReader != null)
3935                         {
3936                                 __pWebReader->SetBounds(Rectangle(2,2, __pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight() - 96));
3937                         }
3938                         Bitmap* pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
3939                         Bitmap* pSrcBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bottom_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
3940
3941                         if ( pBitmap != null && pSrcBitmap != null)
3942                         {
3943                                 AppLog("CreateReaderPanel ninepatchbitmap found");
3944                                 pBitmap->Merge(Point(0,__pArticleReaderPanel->GetHeight() - 96),*pSrcBitmap,Rectangle(0,0,pSrcBitmap->GetWidth(),pSrcBitmap->GetHeight()));
3945                         }
3946
3947                         __pArticleReaderLabel->SetBounds(Rectangle(__pArticleReaderPanel->GetX(),__pArticleReaderPanel->GetY(),__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight()));
3948                         __pArticleReaderLabel->SetBackgroundBitmap(*pBitmap);
3949                         if (pBitmap != null)
3950                         {
3951                                 delete pBitmap;
3952                                 pBitmap = null;
3953                         }
3954                         if (pSrcBitmap != null)
3955                         {
3956                                 delete pSrcBitmap;
3957                                 pSrcBitmap = null;
3958                         }
3959                 }
3960         }
3961         Invalidate(true);
3962         
3963     if (__pAddressbar != null)
3964         {
3965                 int width = GetClientAreaBounds().width;
3966                 __pAddressbar->OrientationChanged(width);
3967         }
3968 }
3969
3970 void
3971 MainForm::OnSettingsChange(int settingvalue)
3972 {
3973         AppLogDebug("MainForm::OnSettingsChange entered");
3974
3975         if(settingvalue == (int)REGISTRY_SETTING_HOMEPAGE)
3976         {
3977                 __pAddressbar->ResetGuideText();
3978         }
3979         if (__pWebViewer == null)
3980         {
3981                 AppLogDebug("Webviewer is not initialized yet.");
3982                 return;
3983         }
3984
3985         if (settingvalue == (int) REGISTRY_SETTING_DEFAULT_VIEW)
3986         {
3987                 WebSetting settings = __pWebViewer->GetSetting();
3988                 if (SettingPresentationModel::GetInstance()->GetDefaultView().CompareTo(CommonUtil::GetString(L"IDS_BR_BODY_FIT_TO_WIDTH")) == 0)
3989                 {
3990                         settings.SetAutoFittingEnabled(true);
3991                 }
3992                 else if (SettingPresentationModel::GetInstance()->GetDefaultView().CompareTo(CommonUtil::GetString(L"IDS_BR_BODY_READABLE")) == 0)
3993                 {
3994                         settings.SetAutoFittingEnabled(false);
3995                 }
3996                 __pWebViewer->SetSetting(settings);
3997         }
3998         else if (settingvalue == (int) REGISTRY_SETTING_RUN_JAVASCRIPT)
3999         {
4000                 WebSetting settings = __pWebViewer->GetSetting();
4001                 settings.SetJavascriptEnabled(SettingPresentationModel::GetInstance()->IsRunJavascriptEnabled());
4002                 __pWebViewer->SetSetting(settings);
4003         }
4004         else if (settingvalue == (int) REGISTRY_SETTING_DISPLAY_IMAGES)
4005         {
4006                 WebSetting settings = __pWebViewer->GetSetting();
4007                 settings.SetAutoImageLoadEnabled(SettingPresentationModel::GetInstance()->IsDisplayImagesEnabled());
4008                 __pWebViewer->SetSetting(settings);
4009         }
4010         else if (settingvalue == (int) REGISTRY_SETTING_BLOCK_POPUP)
4011         {
4012                 WebSetting settings = __pWebViewer->GetSetting();
4013                 settings.SetJavaScriptPopupEnabled(SettingPresentationModel::GetInstance()->IsBlockPopUp());
4014                 __pWebViewer->SetSetting(settings);
4015         }
4016         else if (settingvalue == (int) REGISTRY_SETTING_ACCEPT_COOKIES)
4017         {
4018                 if (__pWebViewer)
4019                 {
4020                         __pWebViewer->SetCookieEnabled(SettingPresentationModel::GetInstance()->IsCookiesEnabled());
4021                 }
4022         }
4023
4024         else if (settingvalue == (int) REGISTRY_SETTING_SHOW_SECURITY_WARNINGS)
4025         {
4026                 WebSetting settings = __pWebViewer->GetSetting();
4027                 if (SettingPresentationModel::GetInstance()->IsSecurityWarningsEnabled() == true)
4028                 {
4029                         settings.SetCertificateErrorHandlingMode(WEB_CERTIFICATE_ERROR_HANDLING_MODE_USER_CONFIRM);
4030                 }
4031                 else
4032                 {
4033                         settings.SetCertificateErrorHandlingMode(WEB_CERTIFICATE_ERROR_HANDLING_MODE_CONTINUE);
4034                 }
4035                 __pWebViewer->SetSetting(settings);
4036         }
4037         else if (settingvalue == (int) REGISTRY_SETTING_READER_FONT_SIZE)
4038         {
4039                 if (__pWebReader)
4040                 {
4041                         AppLogDebug("IntMainForm fontsize Changed to %d",SettingPresentationModel::GetInstance()->GetReaderFontSize());
4042                         WebSetting settings = __pWebReader->GetSetting();
4043                         settings.SetFontSize(SettingPresentationModel::GetInstance()->GetReaderFontSize());
4044                         __pWebReader->SetSetting(settings);
4045                 }
4046         }
4047 }
4048
4049 void
4050 MainForm::OnSettingsReset()
4051 {
4052         if (__pWebViewer)
4053         {
4054                 __pWebViewer->SetCookieEnabled(SettingPresentationModel::GetInstance()->IsCookiesEnabled());
4055                 __pWebViewer->SetSetting(SettingPresentationModel::GetInstance()->GetWebSettings());
4056         }
4057 }
4058
4059 void
4060 MainForm::OnClearCache()
4061 {
4062         result r = E_SUCCESS;
4063
4064         if (__pWebViewer != NULL)
4065         {
4066                 r = __pWebViewer->ClearCache();
4067                 if (r == E_SUCCESS)
4068                 {
4069                         AppLogDebug("Cache cleared success");
4070                 }
4071                 else
4072                 {
4073                         AppLogDebug("Cache cleared fail");
4074                 }
4075         }
4076 }
4077
4078 void
4079 MainForm::OnClearCookie()
4080 {
4081         result r = E_SUCCESS;
4082
4083         if (__pWebViewer != NULL)
4084         {
4085                 __pWebViewer->ClearCookie();
4086         }
4087         if (r == E_SUCCESS)
4088         {
4089                 AppLogDebug("Cookie cleared success");
4090         }
4091         else
4092         {
4093                 AppLogDebug("Cache cleared fail");
4094         }
4095 }
4096
4097 void
4098 MainForm::OnClearFormData()
4099 {
4100         result r = E_SUCCESS;
4101
4102         if (__pWebViewer != NULL)
4103         {
4104                 __pWebViewer->ClearFormData();
4105         }
4106         if (r == E_SUCCESS)
4107         {
4108                 AppLogDebug("Cookie cleared success");
4109         }
4110         else
4111         {
4112                 AppLogDebug("Cache cleared fail");
4113         }
4114 }
4115
4116 void
4117 MainForm::OnClearPasswords()
4118 {
4119         result r = E_SUCCESS;
4120
4121         if (__pWebViewer != NULL)
4122         {
4123                 __pWebViewer->ClearLoginFormData();
4124         }
4125         if (r == E_SUCCESS)
4126         {
4127                 AppLogDebug("Cookie cleared success");
4128         }
4129         else
4130         {
4131                 AppLogDebug("Cache cleared fail");
4132         }
4133 }
4134
4135
4136 double
4137 MainForm::findDistance(int x1,int y1,int x2, int y2)
4138 {
4139         int deltaX = Math::Abs(x2 - x1);
4140         int deltaY = Math::Abs(y2 - y1);
4141         double num = deltaX*deltaX + deltaY*deltaY;
4142
4143         if (num >= 0)
4144         {
4145                 double x = num;
4146                 int i;
4147                 for (i = 0; i < 20; i++)
4148                 {
4149                         x = (((x*x)+ num)/(2*x));
4150                 }
4151                 return num;
4152         }
4153         else
4154         {
4155                 return 0.0;
4156         }
4157 }
4158
4159 void
4160 MainForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
4161 {
4162         if(__pFindWordControl)
4163         {
4164                 AppLog("MainForm::OnTouchPressed %d",__pFindWordControl->GetShowState());
4165                 ShowFindWordPanel(__pFindWordControl->GetShowState(), true);
4166         }
4167         __isLongPressedDone = false;
4168
4169         Touch touch;
4170         IList* pList = null;
4171         pList = touch.GetTouchInfoListN(source);
4172
4173         if (pList != null)
4174         {
4175                 int count = pList->GetCount();
4176                 if (count == 1)
4177                 {
4178                         TouchInfo* pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(0));
4179                         __touchPoint1 = pTouchInfo->position;
4180
4181                         /*if (__pAddressbar != null)
4182                         {
4183                                 if (__pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_LOADING_COMPLETE && __pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_LOADING)
4184                                 {
4185                                         if (__pAddressbar->GetAddressbarMode() == ADDRESSBAR_MODE_EDIT)
4186                                         {
4187                                                 __pAddressbar->SaveAddressbarEditText();
4188                                         }
4189                                         __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
4190                                 }
4191
4192                                 __pAddressbar->Invalidate(true);
4193                         }*/
4194                         if (GetAddressbarMode() != ADDRESSBAR_MODE_LOADING_COMPLETE && GetAddressbarMode() != ADDRESSBAR_MODE_LOADING)
4195                         {
4196                                 if (GetAddressbarMode() == ADDRESSBAR_MODE_EDIT)
4197                                 {
4198                                         //__pAddressbar->SaveAddressbarEditText();
4199                                 }
4200                                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
4201                         }
4202                 }
4203                 else if (count == 2)
4204                 {
4205                         AppLogDebug("MainForm::OnTouchPressed count is two");
4206                         TouchInfo* pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(0));
4207                         __touchPoint1 = pTouchInfo->position;
4208
4209                         pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(1));
4210                         __touchPoint2 = pTouchInfo->position;
4211                 }
4212         }
4213         if( pList != NULL)
4214
4215         {
4216                 pList->RemoveAll(true);
4217                 delete pList;
4218         }
4219         return;
4220 }
4221
4222 void
4223 MainForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
4224 {
4225         __currentWordIndex = 0;
4226         __isLongPressedDone = false;
4227
4228 }
4229
4230 void
4231 MainForm::MoveUiControls()
4232 {
4233 }
4234
4235 void
4236 MainForm::OnTextValueChanged (const Tizen::Ui::Control &source)
4237 {
4238         if(&source == dynamic_cast<Control*>(__pFooterUrlField) && __pFooterUrlField != null)
4239         {
4240                 if(__pFooterUrlField->GetTextLength() == 0)
4241                 {
4242                         __pFooterUrlField->SetKeypadActionEnabled(false);
4243                 }
4244                 else
4245                 {
4246                         __pFooterUrlField->SetKeypadActionEnabled(true);
4247                 }
4248         }
4249         if (__pFindWordEditField != null)
4250         {
4251                 __currentSearchStr = __pFindWordEditField->GetText();
4252                 __pFindWordNext->SetEnabled(false);
4253                 __pFindWordPrev->SetEnabled(false);
4254                 __pFindWordNext->Invalidate(true);
4255                 __pFindWordPrev->Invalidate(true);
4256                 __pFindWordCountLabel->SetText(L"0/0");
4257                 __pFindWordCountLabel->Invalidate(true);
4258         }
4259         AppLog("__currentSearchStr %ls",__currentSearchStr.GetPointer());
4260         if (__currentSearchStr.GetLength() > 0)
4261         {
4262                 StartWordSearch();
4263         }
4264         else
4265         {
4266                 __currentSearchStr = L"aaaaaaaabbbbbbbccccccc";
4267                 StartWordSearch();
4268                 __currentSearchStr = L"";
4269                 AppLogDebug("Enter something");
4270         }
4271 }
4272
4273 result
4274 MainForm::InitMostVisitedSitesPanel(Tizen::Ui::OrientationStatus orientationStatus)
4275 {
4276         return E_SUCCESS;
4277
4278 }
4279
4280 result
4281 MainForm::InitMostVisitedSitesView(Tizen::Ui::OrientationStatus orientationStatus)
4282 {
4283         if(__pWebViewer != null)
4284                 return E_SUCCESS;
4285
4286         AppLog("MainForm::InitMostVisitedSitesView");
4287         result r = E_SUCCESS;
4288
4289
4290         if (__pWebViewer != null && __pMostVisitedListView != null)
4291         {
4292                 return E_SUCCESS;
4293         }
4294
4295         if (__pMostVisitedListView != null)
4296         {
4297                 RemoveControl(*__pMostVisitedListView);
4298         }
4299         if(__pMostVisitedSites != null)
4300         {
4301                 __pMostVisitedSites->RemoveAll(true);
4302         }
4303
4304         HistoryPresentationModel::GetInstance()->GetMostVisitedSites(*__pMostVisitedSites);
4305
4306         __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight();
4307         __pMostVisitedListView = new(std::nothrow) ListView();
4308
4309         int height = GetClientAreaBounds().height;
4310
4311         if(__pFooterPanel->GetShowState() == true)
4312         {
4313                 height = height - __pFooterPanel->GetHeight();
4314         }
4315         if(__pAddressbar->GetShowState() == true)
4316         {
4317                 height -= __pAddressbar->GetHeight();
4318         }
4319
4320         r = __pMostVisitedListView->Construct(Tizen::Graphics::Rectangle(0,0 , GetClientAreaBounds().width, height),true,false);
4321
4322         if (r != E_SUCCESS)
4323         {
4324                 delete __pMostVisitedListView;
4325                 AppLogDebug("Addressbar init failed with %s", GetErrorMessage(r));
4326                 return r;
4327         }
4328         __pMostVisitedListView->SetItemProvider(*this);
4329         __pMostVisitedListView->AddListViewItemEventListener(*this);
4330         __pMostVisitedListView->SetTextOfEmptyList(CommonUtil::GetString(L"IDS_BR_BODY_NO_RECENTLY_VISITED_SITES"));
4331         AddControl(*__pMostVisitedListView);
4332         __pMostVisitedListView->UpdateList();
4333
4334         return E_SUCCESS;
4335
4336 }
4337
4338 String
4339 MainForm::GetImagePath(void)
4340 {
4341
4342         String str;
4343         String formattedTime;
4344         DateTime currentTime;
4345         LocaleManager localManager;
4346         SystemTime::GetCurrentTime(TIME_MODE_WALL, currentTime);
4347
4348         localManager.Construct();
4349         Locale locale = localManager.GetSystemLocale();
4350         //Locale locale(LANGUAGE_ENG, COUNTRY_US);
4351
4352         // Get date formatter
4353         DateTimeFormatter* pTimeFormatter = DateTimeFormatter::CreateDateTimeFormatterN(locale, DATE_TIME_STYLE_DEFAULT);
4354
4355         if (pTimeFormatter)
4356         {
4357                 pTimeFormatter->Format(currentTime, formattedTime);
4358         }
4359
4360         AppLog("current time stamp is %ls", formattedTime.GetPointer());
4361         String delim(L" :");
4362         StringTokenizer strTok(formattedTime, delim);
4363         String token;
4364         String imageName;
4365         String str1("GMT+00");
4366         while (strTok.HasMoreTokens())
4367         {
4368                 strTok.GetNextToken(token); // Osp, StringTokenizer, Sample, code
4369                 if(token.Equals(str1))
4370                         break;
4371                 AppLog("token is %ls", token.GetPointer());
4372                 imageName.Append(token);
4373         }
4374         return imageName;
4375
4376 }
4377
4378 void MainForm::UpdateImageContent(ByteBuffer* aBuffer, String imageName)
4379 {
4380         result r = E_FAILURE;
4381         AppLog("Content manager 1");
4382         ContentId contentId;
4383         ContentManager contentManager;
4384         r = contentManager.Construct();
4385         if(IsFailed(r))
4386         {
4387                 AppLog("Content manager update content result %s" ,GetErrorMessage(r));
4388                 return;
4389         }
4390         Tizen::Base::String contentPath = Tizen::System::Environment::GetMediaPath() + L"Downloads/";
4391         contentPath.Append(imageName);
4392         contentPath.Append(".jpg");
4393         contentId = contentManager.CreateContent(*aBuffer, contentPath);
4394         AppLog("Content manager update content result %s" ,GetErrorMessage(GetLastResult()));
4395 }
4396
4397 void
4398 MainForm::SetForwardButtonEnabled(bool isEnabled)
4399 {
4400         __pGoForwardBtn->SetEnabled(isEnabled);
4401         __pGoBackBtn->Invalidate(true);
4402 }
4403
4404 void
4405 MainForm::SetBackButtonEnabled(bool isEnabled)
4406 {
4407         __pGoBackBtn->SetEnabled(isEnabled);
4408         __pGoBackBtn->Invalidate(true);
4409 }
4410
4411 void
4412 MainForm::UpdateProgress(int percentage)
4413 {
4414         __progressPercentage = percentage;
4415         if (percentage == 0 || percentage == 100)
4416         {
4417                 __isLoadingData = false;
4418                 if (percentage == 100)
4419                 {
4420                         __isLoadingCompleted = true;
4421                         __progressPercentage = 0;
4422                 }
4423                 else
4424                 {
4425                         __isLoadingCompleted = false;
4426                 }
4427         }
4428         else
4429         {
4430                 __isLoadingData = true;
4431         }
4432         UpdateProgressBitmap();
4433 }
4434
4435 int
4436 MainForm::GetProgress(void)
4437 {
4438         return __progressPercentage;
4439 }
4440
4441 void
4442 MainForm::UpdateProgressBitmap(void)
4443 {
4444         result r = E_SUCCESS;
4445         if (__pProgressbarLabel == null)
4446                 return;
4447         int w = __pProgressbarLabel->GetWidth();
4448         int h = __pProgressbarLabel->GetHeight();
4449         Canvas canvas;
4450         int progressWidth = 0;
4451         Bitmap* pRetBitmap = null;
4452
4453         if (__progressPercentage == 0 || __progressPercentage == 100)
4454         {
4455                 __pProgressbarLabel->SetShowState(false);
4456                 __pProgressbarLabel->Invalidate(false);
4457                 return;
4458         }
4459         else
4460         {
4461                 __pProgressbarLabel->SetShowState(true);
4462                 __pProgressbarLabel->Invalidate(false);
4463         }
4464
4465         r = canvas.Construct(Rectangle(0, 0, w, h));
4466
4467         if (r != E_SUCCESS)
4468         {
4469                 AppLogException("Canvas construction failed with %s", GetErrorMessage(r));
4470                 return;
4471         }
4472
4473         canvas.Clear();
4474         Bitmap *pBgBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR_BG);
4475
4476         if (pBgBmp != null)
4477         {
4478                 pBgBmp->Scale(Dimension(w, h));
4479                 canvas.DrawBitmap(Point(0,0), *pBgBmp);
4480                 delete pBgBmp;
4481         }
4482
4483         progressWidth = (double) (w) * __progressPercentage / 100;
4484         AppLogDebug("progressWidth: %d", progressWidth);
4485         Bitmap *pProgressBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR);
4486
4487         if (pProgressBmp != null)
4488         {
4489                 pProgressBmp->Scale(Dimension(progressWidth, h));
4490                 canvas.DrawBitmap(Point(0,0), *pProgressBmp);
4491                 delete pProgressBmp;
4492         }
4493
4494         pRetBitmap = new (std::nothrow) Bitmap();
4495
4496         if (pRetBitmap == null)
4497         {
4498                 AppLogException("Bitmap creation failed with %s", GetErrorMessage(r));
4499                 return;
4500         }
4501
4502         pRetBitmap->Construct(canvas, canvas.GetBounds());
4503
4504         if (__pProgressbarLabel != null && pRetBitmap != null)
4505         {
4506                 __pProgressbarLabel->SetBackgroundBitmap(*pRetBitmap);
4507                 __pProgressbarLabel->Invalidate(false);
4508         }
4509
4510         if (pRetBitmap != null)
4511         {
4512                 delete pRetBitmap;
4513                 pRetBitmap = null;
4514         }
4515         return;
4516 }
4517
4518 void MainForm::SetAddressbarMode(AddressBarMode addMode)
4519 {
4520         AppLogDebug("AddressBar::setAddressbarMode to %d",addMode);
4521
4522         __currentAddMode = addMode;
4523
4524         switch(addMode)
4525         {
4526         case ADDRESSBAR_MODE_INVALID:
4527         {
4528                 // do nothing
4529         }
4530         break;
4531         case ADDRESSBAR_MODE_READER:
4532         {
4533                 __pStopBtn->SetShowState(false);
4534                 __pClearBtn->SetShowState(false);
4535         }
4536         break;
4537         case ADDRESSBAR_MODE_LOADING:
4538         {
4539                 __pRefreshBtn->SetShowState(false);
4540                 __pStopBtn->SetShowState(true);
4541                 __pClearBtn->SetShowState(false);
4542         }
4543         break;
4544         case ADDRESSBAR_MODE_LOADING_COMPLETE:
4545         {
4546 //              SetUrl(__pAddressbar->GetUrl());
4547
4548                 __pRefreshBtn->SetShowState(true);
4549                 __pStopBtn->SetShowState(false);
4550                 __pClearBtn->SetShowState(false);
4551         }
4552         break;
4553         case ADDRESSBAR_MODE_EDIT:
4554         {
4555                 __pRefreshBtn->SetShowState(false);
4556                 __pStopBtn->SetShowState(false);
4557                 __pClearBtn->SetShowState(true);
4558         }
4559         break;
4560         }
4561
4562         Invalidate(true);
4563
4564         OnAddressBarModeChanged();
4565 }
4566
4567 AddressBarMode MainForm::GetAddressbarMode(void)
4568 {
4569         return __currentAddMode;
4570 }
4571
4572 void MainForm::SetUrl(const String& url)
4573 {
4574         __displayUrl = url;
4575
4576         if (__pFooterUrlField != NULL)
4577         {
4578                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
4579                 if (removedHttpUrl.IsEmpty() == false)
4580                 {
4581                         __pFooterUrlField->SetText(removedHttpUrl);
4582                         __pAddressbar->SetUrl(__displayUrl);
4583                 }
4584                 else
4585                 {
4586                         __pFooterUrlField->SetText(__displayUrl);
4587                         __pAddressbar->SetUrl(__displayUrl);
4588                 }
4589                 if(__pFooterUrlField)
4590                         __pFooterUrlField->SetCursorPosition(__pFooterUrlField->GetTextLength());
4591                 __pFooterUrlField->Invalidate(false);
4592                 __pAddressbar->Invalidate(true);
4593 //              __pFooterUrlField->SetCursorPosition(0);
4594         }
4595 }
4596
4597 String
4598 MainForm::RemoveHttpTextFromDisplayURL(void)
4599 {
4600         bool isHttpText = __displayUrl.Contains(L"http://");
4601         String updatedDisplayUrl;
4602         updatedDisplayUrl.Clear();
4603
4604         if (isHttpText == true)
4605         {
4606                 __displayUrl.SubString(7,updatedDisplayUrl);
4607         }
4608         return updatedDisplayUrl;
4609 }