Prevent 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                 // need to implement
2043                 //__currentSelectedStr
2044                 // Sets data to a clip board item
2045                 ClipboardItem item;
2046                 String resourcePath = App::GetInstance()->GetAppResourcePath();
2047                 item.Construct(CLIPBOARD_DATA_TYPE_TEXT, __currentSelectedStr);
2048
2049                 // copying the item to clipboard
2050                 Clipboard* pClipboard = Clipboard::GetInstance();
2051                 if (pClipboard != null)
2052                 {
2053                         pClipboard->CopyItem(item);
2054                 }
2055         }
2056         break;
2057         case IDA_PASTE_TEXT_CLICKED:
2058         {
2059                 Clipboard* pClipboard = Clipboard::GetInstance();
2060
2061                 if(pClipboard == null)
2062                 {
2063                         return;
2064                 }
2065                 // Retrieves a latest item
2066                 ClipboardItem* pItem = pClipboard->RetrieveLatestItemN(CLIPBOARD_DATA_TYPE_TEXT | CLIPBOARD_DATA_TYPE_HTML);
2067
2068                 if(pItem == null)
2069                 {
2070                         return;
2071                 }
2072                 //Gets data from the clipboard item
2073                 String* pString = dynamic_cast<String*>(pItem->GetData());
2074
2075                 if (pString != null)
2076                 {
2077                         String idElement = __pHitElementResult->GetAttributeValue(L"id");
2078                         String nameElement = __pHitElementResult->GetAttributeValue(L"name");
2079                         AppLog("MainForm::IDA_PASTE_TEXT_CLICKED id is %ls",idElement.GetPointer());
2080                         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;               }       } ";
2081                         if(idElement.GetLength() != 0)
2082                         {
2083                                 script.Append("insertAtCursor(");
2084                                 script.Append(idElement);
2085                                 script.Append(",");
2086                                 script.Append("\"");
2087                                 script.Append(*pString);
2088                                 script.Append("\");");
2089                         }
2090                         else if (nameElement.GetLength() != 0)
2091                         {
2092                                 script.Append("insertAtCursor(document.getElementsByName('");
2093                                 script.Append(nameElement);
2094                                 script.Append("')[0],");
2095                                 script.Append("\"");
2096                                 script.Append(*pString);
2097                                 script.Append("\");");
2098                         }
2099                         AppLog("MainForm::OnTouchLongPressed script is %ls",script.GetPointer());
2100                         String* pStr = __pWebViewer->EvaluateJavascriptN(script);
2101                         delete pStr;
2102                 }
2103                 delete pItem;
2104         }
2105         break;
2106         case IDA_GO_BACK:
2107         {
2108                 OnBackClicked();
2109         }
2110         break;
2111         case IDA_GO_FORWARD:
2112         {
2113                 OnForwardClicked();
2114         }
2115         break;
2116         case IDA_REFRESH_BTN_CLICKED:
2117         {
2118                 __isLoadingCompleted = false;
2119                 __isLoadingData = true;
2120                 __progressPercentage = 0;
2121                 __displayUrl = __pFooterUrlField->GetText();
2122
2123                 String url = __pFooterUrlField->GetText();
2124                 AppLog("MainForm::OnUrlSubmitted url is %ls", url.GetPointer());
2125                 LoadUrl(url);
2126
2127                 //OnUrlSubmitted();
2128                 UpdateProgressBitmap();
2129         }
2130         break;
2131         case IDA_STOP_BTN_CLICKED:
2132         {
2133                 __isLoadingCompleted = false;
2134                 __isLoadingData = false;
2135                 __progressPercentage = 0;
2136                 __pFooterUrlField->HideKeypad();
2137                 __displayUrl = __pFooterUrlField->GetText();
2138
2139                 if (__pWebViewer)
2140                 {
2141                         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2142                         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2143                         __pWebViewer->StopLoading();
2144                         RequestRedraw(true);
2145                 }
2146
2147                 UpdateProgressBitmap();
2148         }
2149         break;
2150         case IDA_CLEAR_URL:
2151         {
2152                 if (__pFooterUrlField->GetText().IsEmpty() == false)
2153                 {
2154                         //__displayUrl = __pUrlField->GetText();
2155                         __pFooterUrlField->Clear();
2156                 }
2157         }
2158         break;
2159         default:
2160                 break;
2161         }
2162 }
2163
2164 void
2165 MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
2166 {
2167
2168         UiApp* pApp = UiApp::GetInstance();
2169         if (pApp == null)
2170         {
2171                 return;
2172         }
2173         pApp->Terminate();
2174 }
2175
2176 void
2177 MainForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
2178                 const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
2179 {
2180         String* pSelectedScene = NULL;
2181         Object* pValue = NULL;
2182         String* pUrl = null;
2183         MultipleWindowPresentationModel::GetInstance()->GetValue(SELECTED_SCENE_ID, &pValue);
2184         pSelectedScene = (String*) pValue;
2185
2186         if (pSelectedScene != null)
2187         {
2188                 delete pSelectedScene;
2189         }
2190         MultipleWindowPresentationModel::GetInstance()->SetValue(SELECTED_SCENE_ID, null);
2191         String* selectedSceneID = new(std::nothrow) String(currentSceneId);
2192         AppLogDebug("current scene id is %ls", currentSceneId.GetPointer());
2193         AppLogDebug("selected scene id is %ls", currentSceneId.GetPointer());
2194
2195         // setting the current scene ID
2196         MultipleWindowPresentationModel::GetInstance()->SetCurrentSceneID(currentSceneId);
2197
2198         MultipleWindowPresentationModel::GetInstance()->SetValue(SELECTED_SCENE_ID, (Object*) selectedSceneID);
2199
2200         if(pArgs != null && pArgs->GetCount() > 0 && pArgs->GetCount() == 2)
2201         {
2202                 __pWindowInfo = dynamic_cast< WindowInfo* >(pArgs->GetAt(0));
2203                 if(__pWindowInfo == null)
2204                         return;
2205                 //              if(__pWindowInfo == null)
2206                 {
2207                         pUrl = dynamic_cast< String* >(pArgs->GetAt(1));
2208                 }
2209         }
2210         else if ( pArgs != null && pArgs->GetCount() == 1)
2211         {
2212                 __pWindowInfo = dynamic_cast< WindowInfo* >(pArgs->GetAt(0));
2213         }
2214
2215         InitFooter();
2216         InitAddressbar();
2217
2218         // hiding the address bar
2219         //      __pAddressbar->SetBounds(__pAddressbar->GetX(), __pAddressbar->GetY() - __pAddressbar->GetHeight(), __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
2220         __pAddressbar->SetShowState(false);
2221         if(__pWebViewer != null)
2222         {
2223                 __pWebViewer->Resume();
2224         }
2225
2226         if(pUrl != null && pUrl->GetLength() > 0)
2227         {
2228                 LoadUrl(*pUrl);
2229         }
2230         else if(__pWindowInfo != null)
2231         {
2232                 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)
2233                 {
2234                         LoadUrl(__pWindowInfo->pageUrl);
2235                 }
2236                 else if (__pWindowInfo->isJavascriptInitiated == true)
2237                 {
2238                         AppLog("Called");
2239                         InitWebControl();
2240                         __pWindowInfo->pCurrentWeb = __pWebViewer;
2241                 }
2242         }
2243
2244         String homePage = SettingPresentationModel::GetInstance()->GetHomepage();
2245         AppLog("Homepage Value in Onsceneactivated is %ls",homePage.GetPointer());
2246         if(homePage.CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
2247         {
2248                 InitMostVisitedSitesView(GetOrientationStatus());
2249         }
2250
2251         if (__pAddressbar != null && pArgs != null && (previousSceneId == IDSCN_BOOKMARK_VIEW || previousSceneId == IDSCN_HISTORY_LIST))
2252         {
2253                 String* pBookmarkUrl = dynamic_cast< String* >(pArgs->GetAt(0));
2254
2255                 if (pBookmarkUrl == null)
2256                         return;
2257                 AppLogDebug("bookmarkUrl = %ls",pBookmarkUrl->GetPointer());
2258                 //__pAddressbar->SetUrl(*pBookmarkUrl);
2259                 SetUrl(*pBookmarkUrl);
2260
2261                 if (__pWebViewer != null && homePage.CompareTo((L"IDS_BR_BODY_BLANK_PAGE")) != 0)
2262                         __pWebViewer->LoadUrl(*pBookmarkUrl);
2263                 delete pBookmarkUrl;
2264         }
2265
2266         bool isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
2267         Bitmap* pBitmap = null;
2268         if (isPrivateBrowsing == true)
2269         {
2270                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_ON);
2271
2272                 if (__pWebViewer != null)
2273                 {
2274                         __pWebViewer->SetPrivateBrowsingEnabled(true);
2275                 }
2276
2277                 if (__pAddressbar != null)
2278                 {
2279                         //      __pAddressbar->UpdateFaviconBitmap(true);
2280                 }
2281
2282         }
2283         else
2284         {
2285                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_BUTTON_OFF);
2286
2287                 if (__pWebViewer != null)
2288                 {
2289                         __pWebViewer->SetPrivateBrowsingEnabled(false);
2290                 }
2291
2292                 if (__pAddressbar != null)
2293                 {
2294                         //      __pAddressbar->UpdateFaviconBitmap(false);
2295                 }
2296         }
2297
2298         if (__pMenu != null && __pMenu->GetItemCount() == 3)
2299         {
2300                 __pMenu->SetItemAt(0,CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"),IDA_PRIVATEON_CLICKED,*pBitmap);
2301         }
2302         else if (__pMenu != null )
2303         {
2304                 __pMenu->SetItemAt(3,CommonUtil::GetString(L"IDS_BR_BODY_PRIVACY"),IDA_PRIVATEON_CLICKED,*pBitmap);
2305         }
2306
2307         if (pBitmap != null)
2308         {
2309                 delete pBitmap;
2310         }
2311
2312         AppLog("ABC: OnSceneActivatedN started exit");
2313
2314 }
2315
2316 void
2317 MainForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
2318                 const Tizen::Ui::Scenes::SceneId& nextSceneId)
2319 {
2320         Canvas* pWebCanvas = null;
2321         if (__pWebViewer != null)
2322         {
2323                 pWebCanvas = __pWebViewer->GetCanvasN();
2324                 __pWebViewer->Pause();
2325
2326         }
2327         if (pWebCanvas == null)
2328         {
2329                 return;
2330         }
2331         if (__pWindowInfo != null)
2332         {
2333                 if (__pWindowInfo->pWebCanvasBitmap != null)
2334                 {
2335                         delete __pWindowInfo->pWebCanvasBitmap;
2336                 }
2337                 __pWindowInfo->pWebCanvasBitmap = new(std::nothrow) Bitmap();
2338                 result r = __pWindowInfo->pWebCanvasBitmap->Construct(*pWebCanvas,Rectangle(0,0,pWebCanvas->GetBounds().width,pWebCanvas->GetBounds().height));
2339                 AppLog("Bitmap Construction result %s",GetErrorMessage(r));
2340         }
2341         Bitmap* pBitmap = GetCapturedBitmapN();
2342         AppLog("Coming here");
2343         Canvas* pCanvas = new(std::nothrow) Canvas();
2344         pCanvas->Construct(GetClientAreaBounds());
2345         if(pBitmap != null)
2346         {
2347                 pCanvas->DrawBitmap(Point(0,0),*pBitmap);
2348                 delete pBitmap;
2349         }
2350         if(__pWebViewer != null && __pWindowInfo != null)
2351                 pCanvas->DrawBitmap(__pWebViewer->GetPosition(),*__pWindowInfo->pWebCanvasBitmap);
2352
2353         WindowInfo::pFormCanvasBitmap = new(std::nothrow) Bitmap();
2354         WindowInfo::pFormCanvasBitmap->Construct(*pCanvas,Rectangle(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight()));
2355         delete pCanvas;
2356         AppLog("Coming here");
2357 }
2358
2359 bool
2360 MainForm::OnHttpAuthenticationRequestedN(const Tizen::Base::String& host,
2361                 const Tizen::Base::String& realm,
2362                 const Tizen::Web::Controls::AuthenticationChallenge& authentication)
2363 {
2364         return false;
2365 }
2366
2367 void
2368 MainForm::OnHttpAuthenticationCanceled(void)
2369 {
2370 }
2371
2372 void
2373 MainForm::OnLoadingStarted(void)
2374 {
2375         AppLogDebug("MainForm::OnLoadingStarted entered");
2376         __isLoaded = true;
2377         if(__pAddressbar == NULL || __pWebViewer == null)
2378         {
2379                 return;
2380         }
2381         String url = __pWebViewer->GetUrl();
2382         if(url.Contains(IDS_TIZEN_SERVICE))
2383         {
2384                 String appId;
2385                 String delim(L":;");
2386
2387                 // Creates a StringTokenizer instance
2388                 StringTokenizer strTok(url, delim);
2389
2390                 int count = strTok.GetTokenCount();     // count == 4
2391
2392                 HashMap *pMap = new HashMap();
2393                 pMap->Construct();
2394                 String token;
2395                 String key;
2396                 String value;
2397                 while (strTok.HasMoreTokens())
2398                 {
2399                         AppLog("Token: %ls", token.GetPointer());
2400                         strTok.GetNextToken(token);         // Tizen, StringTokenizer, Sample, code
2401                         if(token.Contains(IDS_APPID))
2402                         {
2403                                 token.SubString(6, appId);
2404                                 AppLog("AppID:%ls", appId.GetPointer());
2405                         }
2406                         else if(token.Contains("="))
2407                         {
2408                                 String *pKey = new String();
2409                                 String *pValue = new String();
2410                                 int index = -1;
2411                                 token.IndexOf("=", 0, index);
2412                                 if(index != -1)
2413                                 {
2414                                         token.SubString(0, index, *pKey);
2415                                         token.SubString(index + 1, *pValue);
2416                                         pMap->Add(pKey, pValue);
2417                                 }
2418                         }
2419                 }
2420                 if(appId != "")
2421                 {
2422                         AppControl *pAppControl = null;
2423                         String operationId = L"http://tizen.org/appcontrol/operation/main";
2424                         pAppControl = dynamic_cast<AppControl*>(AppManager::FindAppControlN(appId, operationId));
2425                         if(pAppControl)
2426                         {
2427                                 AppLog("Starting AppControl");
2428                                 result r = pAppControl->Start(null, null, pMap, null);
2429                                 AppLog("Result of Start %s", GetErrorMessage(r));
2430                         }
2431                         else
2432                         {
2433                                 AppLogException("AppControl not found");
2434                         }
2435                         return;
2436                 }
2437         }
2438         Bitmap* pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN();
2439         if(pBitmap != null)
2440         {
2441                 __pAddressbar->SetFaviconBitmap(*pBitmap);
2442         }
2443         delete pBitmap;
2444         if (__adressPanelPosition.y < (0 - __pAddressbar->GetHeight() + 12))
2445         {
2446                 // updating the address bar position with respect to web control
2447                 __adressPanelPosition.y = 0 - __pAddressbar->GetHeight() + 12; //-12 is for the progress label
2448                 __distanceMoved = 0;
2449                 MoveUiControls();
2450         }
2451
2452         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2453         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2454         if (__pWebViewer != null)
2455         {
2456                 AppLog("MainForm::OnLoadingStarted __pWebViewer->GetUrl() %ls",__pWebViewer->GetUrl().GetPointer());
2457                 //__pAddressbar->SetUrl(__pWebViewer->GetUrl());
2458                 SetUrl(__pWebViewer->GetUrl());
2459                 if (__pWindowInfo != NULL)
2460                 {
2461                         __pWindowInfo->pageUrl = __pWebViewer->GetUrl();
2462                 }
2463                 __pAddressbar->Invalidate(true);
2464         }
2465
2466 }
2467
2468 void
2469 MainForm::OnLoadingCanceled(void)
2470 {
2471
2472 }
2473
2474
2475 void
2476 MainForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
2477 {
2478         AppLog("MainForm::OnKeypadWillOpen");
2479         if (__pAddressbar != null)
2480         {
2481                 OnAddressBarKeypadWillOpen(*__pAddressbar);
2482         }
2483
2484 }
2485
2486 void
2487 MainForm::OnKeypadOpened(Tizen::Ui::Control& source)
2488 {
2489         if(__pAddressbar != null)
2490         {
2491                 OnAddressBarKeypadOpened(*__pAddressbar);
2492         }
2493 }
2494
2495
2496 void
2497 MainForm::OnKeypadClosed(Tizen::Ui::Control& source)
2498 {
2499
2500
2501         if (__pAddressbar != null)
2502         {
2503                 OnAddressBarKeypadClosed(*__pAddressbar);
2504         }
2505 }
2506
2507 void
2508 MainForm::OnKeypadBoundsChanged(Tizen::Ui::Control &source)
2509 {
2510         AppLog("KeypadBoundsChanged");
2511         RelayoutControls(false);
2512 }
2513
2514 void
2515 MainForm::OnLoadingErrorOccurred(LoadingErrorType error,
2516                 const Tizen::Base::String& reason)
2517 {
2518         AppLogDebug("Error: %d, %ls", error, reason.GetPointer());
2519 }
2520
2521 void
2522 MainForm::OnLoadingCompleted(void)
2523 {
2524         AppLog("MainForm::OnLoadingCompleted start");
2525         DateTime date;
2526         result r = E_SUCCESS;
2527
2528         if (__pWebViewer == null)
2529         {
2530                 return;
2531         }
2532
2533         if (__pAddressbar == null)
2534         {
2535                 return;
2536         }
2537         if (__pWebViewer->CanGoForward())
2538         {
2539                 //__pAddressbar->SetForwardButtonEnabled(true);
2540                 SetForwardButtonEnabled(true);
2541         }
2542         else
2543         {
2544                 //__pAddressbar->SetForwardButtonEnabled(false);
2545                 SetForwardButtonEnabled(false);
2546         }
2547
2548         /*if (__pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_EDIT)
2549         {
2550                 __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2551
2552                 //__pAddressbar->UpdateProgress(0);
2553                 UpdateProgress(0);
2554         }*/
2555
2556         if(GetAddressbarMode() != ADDRESSBAR_MODE_EDIT)
2557         {
2558                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2559                 UpdateProgress(0);
2560         }
2561
2562         AppLog("PrivateBrowsing %d",__pWebViewer->IsPrivateBrowsingEnabled());
2563         bool isPrivateBrowsing = SettingPresentationModel::GetInstance()->GetPrivateOn();
2564         if (isPrivateBrowsing == false)
2565         {
2566                 History* pHistory = new(std::nothrow) History;
2567
2568                 HistoryPresentationModel::GetCurrentDateTime(date);
2569                 if(__pWindowInfo)
2570                 {
2571                         pHistory->SetHistoryTitle(__pWindowInfo->pageTitle);
2572                         AppLogDebug("MainForm::OnLoadingCompleted pagetitle = %ls", __pWindowInfo->pageTitle.GetPointer());
2573
2574                         pHistory->SetHistoryUrl(__pWindowInfo->pageUrl);
2575                         AppLogDebug("MainForm::OnLoadingCompleted pageUrl = %ls", __pWindowInfo->pageUrl.GetPointer());
2576                 }
2577                 pHistory->SetVisitedTime(date);
2578                 /*String id = "";
2579                 if(__pWindowInfo)
2580                         id = FaviconManager::GetInstance()->SaveFavicon(*__pWindowInfo->pFavicon, __pWindowInfo->faviconUrl);
2581                 pHistory->SetFaviconId(id);*/
2582
2583                 if (__pWebViewer != null)
2584                 {
2585                         AppLog("MainForm::OnLoadingCompleted setting the fav icon 0");
2586
2587                         Bitmap* pTempBitmap = __pWebViewer->GetFaviconN();
2588                         if (pTempBitmap != null)
2589                         {
2590                                 AppLog("MainForm::OnLoadingCompleted setting the fav icon 1");
2591                                 pHistory->SetFavIconBitmap(*pTempBitmap);
2592                         }
2593
2594                         AppLog("MainForm::OnLoadingCompleted setting the fav icon 2");
2595                 }
2596
2597                 Canvas* pCanvas = __pWebViewer->GetCanvasN();
2598                 Bitmap* pBitmap = new(std::nothrow) Bitmap();
2599                 if ( pCanvas != null &&  pCanvas != null && pBitmap != null)
2600                 {
2601                         pBitmap->Construct(*pCanvas, pCanvas->GetBounds());
2602                         pBitmap->Scale(Dimension(pBitmap->GetWidth()/4, pBitmap->GetHeight()/4));
2603                         pHistory->SetThumbnail(pBitmap);
2604                 }
2605                 Bitmap *pFavIcon = __pWebViewer->GetFaviconN();
2606                 if(pFavIcon)
2607                 {
2608                         pHistory->SetFavIconBitmap(*pFavIcon);
2609                         delete pFavIcon;
2610                 }
2611
2612                 HistoryPresentationModel::GetInstance()->SaveTempHistory(*pHistory);
2613                 delete pHistory;
2614         }
2615         else
2616         {
2617                 return;
2618         }
2619         if (__pWindowInfo && __pWindowInfo->faviconUrl == "")
2620         {
2621                 // temperary fixed (webpage can be not loaded)
2622                 UpdateFavicon();
2623         }
2624         AppLog("MainForm::OnLoadingCompleted done");
2625 }
2626
2627 void
2628 MainForm::OnEstimatedProgress(int progress)
2629 {
2630         AppLogDebug("MainForm::OnEstimatedProgress entered");
2631         if (progress < DEFAULT_PROGRESS_PERCENTAGE)
2632                 progress = DEFAULT_PROGRESS_PERCENTAGE;
2633         //if(__pAddressbar)
2634         //      __pAddressbar->UpdateProgress(progress);
2635         UpdateProgress(progress);
2636 }
2637
2638 void MainForm::OnFaviconReceived(const Tizen::Graphics::Bitmap& favicon)
2639 {
2640         AppLog("MainForm::OnFaviconReceived");
2641         Bitmap* pFavIconBitmap = __pWebViewer->GetFaviconN();
2642
2643         if (pFavIconBitmap != null)
2644         {
2645                 pFavIconBitmap->GetWidth();
2646                 pFavIconBitmap->GetHeight();
2647         }
2648 }
2649
2650 void
2651 MainForm::OnUrlValueChanged(Addressbar&)
2652 {
2653         Invalidate(true);
2654 }
2655
2656 void
2657 MainForm::OnUrlSubmitted(Addressbar& addBar)
2658 {
2659         AppLog("MainForm::OnUrlSubmitted");
2660         String url = addBar.GetUrl();
2661         AppLog("MainForm::OnUrlSubmitted url is %ls", url.GetPointer());
2662
2663 //      __pFooterPanel->SetShowState(true);
2664         if(__pFooterUrlField)
2665                 __pFooterUrlField->SetCursorPosition(__pFooterUrlField->GetTextLength());
2666         OnAddressCancelledClicked(*__pAddressbar);
2667 //      __pAddressbar->SetShowState(false);
2668 //      RelayoutControls(false);
2669         LoadUrl(url);
2670 }
2671
2672 void
2673 MainForm::LoadUrl(String& url)
2674 {
2675         url.Trim();
2676         String encodedUrl;
2677 //      UrlEncoder::Encode(url, L"UTF-8", encodedUrl);
2678         AppLogDebug("MainForm::LoadUrl enter");
2679
2680         if (__pWebViewer != null)
2681         {
2682                 __pWebViewer->SetShowState(true);
2683                 __pWebViewer->Invalidate(true);
2684         }
2685
2686         if (url.CompareTo(L"") == 0)
2687         {
2688                 return;
2689         }
2690         if(__pFooterPanel != null)
2691         {
2692                 __pFooterPanel->SetShowState(true);
2693                 __pFooterPanel->Invalidate(true);
2694         }
2695         InitWebControl();
2696
2697         bool ret = false;
2698         bool flag = false;
2699
2700         String firstPattern(L"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
2701         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)
2702
2703         RegularExpression firstRegex;
2704         RegularExpression secondRegex;
2705
2706         firstRegex.Construct(firstPattern, REGEX_CASELESS);
2707         secondRegex.Construct(secondPattern, REGEX_CASELESS);
2708
2709         // Match
2710         ret = firstRegex.Match(url, false); // This returns true value
2711         flag = secondRegex.Match(url, false);  // Checks whether URL typed is of type  abc.com (i.e without protocol in front of it)
2712
2713         if (ret == true && __pWebViewer != null)
2714         {
2715                 __pWebViewer->LoadUrl(url);
2716         }
2717         else if(__pWebViewer != null)
2718         {
2719                 String tempUrl = L"http://";
2720                 tempUrl.Append(url);
2721
2722                 if (flag == true)
2723                 {
2724                         __pWebViewer->LoadUrl(tempUrl);
2725                 }
2726                 else
2727                 {
2728                                 UrlEncoder::Encode(url, L"UTF-8", encodedUrl);
2729                         __pWebViewer->LoadUrl(SettingPresentationModel::GetInstance()->GetSearchUrl(encodedUrl));
2730                 }
2731         }
2732         if (__pAddressbar != null)
2733         {
2734                 //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2735                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING);
2736         }
2737
2738         AppLogDebug("MainForm::LoadUrl exit");
2739
2740         return;
2741
2742 }
2743
2744 void
2745 MainForm::OnStopClicked(Addressbar& addBar)
2746 {
2747         AppLogDebug("MainForm::OnStopClicked called");
2748         if (__pWebViewer)
2749         {
2750                 //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2751                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
2752                 __pWebViewer->StopLoading();
2753                 RequestRedraw(true);
2754         }
2755 }
2756
2757 void
2758 MainForm::OnReaderClicked(const Addressbar& addBar)
2759 {
2760         int bodyWidth = ((double)(GetClientAreaBounds().width))*0.73;
2761
2762         CreateReaderPanel();
2763         AppLogDebug("MainScene::OnReaderClicked entered");
2764
2765
2766         /*if (__pArticleReaderPanel)
2767         {
2768                 AppLogDebug("showstate true for reader panel");
2769                 __pArticleReaderPanel->SetShowState(true);
2770                 __pArticleReaderPanel->Show();
2771         }*/
2772         int xPos = __pArticleReaderPanel->GetX();
2773         int yPos = __pArticleReaderPanel->GetY();
2774         AppLog("OnReaderClicked() xPos = %d",xPos);
2775         AppLog("OnReaderClicked() yPos = %d",yPos);
2776
2777         if (__pReaderData == null)
2778         {
2779                 return;
2780         }
2781
2782         String loadData = L"<html>\
2783                                         <head>\
2784                                         <meta name='viewport' content='width=device-width*0.73,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no'>\
2785                                         <style>\
2786                                         h1\
2787                                         {\
2788                                         font-weight:bold;\
2789                                         background-color: transparent;\
2790                                         }\
2791                                         div\
2792                                         {\
2793                                         display: block;\
2794                                         }\
2795                                         p\
2796                                         {\
2797                                         display: block; \
2798                                         }\
2799                                         img\
2800                                         {\
2801                                         margin-left:auto;\
2802                                         margin-right:auto;\
2803                                         }\
2804                                         \
2805                                         \
2806                                         </style>\
2807                                         </head>\
2808                                         <body style='width:'";
2809         loadData.Append(bodyWidth);
2810         loadData.Append(L"px'>");
2811         AppLogDebug("data->GetLength %d",__pReaderData->GetLength());
2812         loadData.Append(*__pReaderData);
2813         loadData.Append(L"</body></html>");
2814
2815         ByteBuffer buf ;
2816         buf.Construct(loadData.GetLength());
2817         AppLogDebug("data->GetLength %d",loadData.GetLength());
2818         for (int z=0;z<loadData.GetLength();z++)
2819         {
2820                 mchar b;
2821                 loadData.GetCharAt(z,b);
2822                 buf.SetByte((byte)b);
2823         }
2824
2825         buf.Flip();
2826         if (__pWebReader != null)
2827         {
2828                 __pWebReader->LoadData(L"",buf,L"text/html");
2829                 AppLogDebug("LoadData result %s",GetErrorMessage(GetLastResult()));
2830         }
2831         else
2832         {
2833                 AppLogDebug("cannot LoadData __pWebReader is null");
2834         }
2835
2836 }
2837
2838 void
2839 MainForm::OnBackClicked(/*const Addressbar& addBar*/)
2840 {
2841 //      AppLog("MainForm::OnBackClicked");
2842         result r = E_FAILURE;
2843
2844         if (__pWebViewer && __pWebViewer->CanGoBack())
2845         {
2846                 __pWebViewer->GoBack();
2847         }
2848         else if(__pWindowInfo->isJavascriptInitiated == false)
2849         {
2850                 UiApp* pApp = null;
2851                 pApp = UiApp::GetInstance();
2852                 if (pApp != null)
2853                 {
2854                         r = pApp->Terminate();
2855                         if (IsFailed(r))
2856                         {
2857                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2858                                 return;
2859                         }
2860                 }
2861         }
2862         else
2863         {
2864                 UiApp* pApp = null;
2865                 WindowInfo* pWindowInfo = null;
2866                 int totalCount = 0;
2867                 SceneManager* pSceneManager = SceneManager::GetInstance();
2868                 if (pSceneManager == null)
2869                 {
2870                         return;
2871                 }
2872                 ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList();
2873                 if (pAllWindowList == NULL)
2874                 {
2875                         pApp = UiApp::GetInstance();
2876                         if (pApp != null)
2877                         {
2878                                 r = pApp->Terminate();
2879                                 if (IsFailed(r))
2880                                 {
2881                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2882                                         return;
2883                                 }
2884                         }
2885                 }
2886                 if (pAllWindowList != null)
2887                 {
2888                         totalCount = pAllWindowList->GetCount();
2889                 }
2890                 for (int count = 0; count < totalCount; count++)
2891                 {
2892                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count));
2893                         if (pWindowInfo == null)
2894                         {
2895                                 pApp = UiApp::GetInstance();
2896                                 if (pApp != null)
2897                                 {
2898                                         r = pApp->Terminate();
2899                                         if (IsFailed(r))
2900                                         {
2901                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2902                                                 return;
2903                                         }
2904                                 }
2905                         }
2906                         if (pSceneManager != null && pWindowInfo != null && pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID && pWindowInfo->isJavascriptInitiated == true)
2907                         {
2908                                 r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID);
2909                                 if (IsFailed(r))
2910                                 {
2911                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2912                                         return;
2913                                 }
2914                                 r = pAllWindowList->RemoveAt(count, true);
2915                                 __pWindowInfo = null;
2916                                 if (IsFailed(r))
2917                                 {
2918                                         AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2919                                         return;
2920                                 }
2921                                 if(count > 0)
2922                                 {
2923                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1));
2924                                 }
2925                                 else
2926                                 {
2927                                         pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1));
2928                                 }
2929                                 if (pWindowInfo == null)
2930                                 {
2931                                         pApp = UiApp::GetInstance();
2932                                         if (pApp != null)
2933                                         {
2934                                                 r = pApp->Terminate();
2935                                                 return;
2936                                         }
2937                                 }
2938                                 else
2939                                 {
2940                                         r = pSceneManager->GoBackward(BackwardSceneTransition(pWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE));
2941                                         if (IsFailed(r))
2942                                         {
2943                                                 AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r));
2944                                                 return;
2945                                         }
2946                                 }
2947                                 break;
2948                         }
2949
2950                 }
2951
2952         }
2953
2954 }
2955
2956 void
2957 MainForm::OnForwardClicked(/*const Addressbar& addBar*/)
2958 {
2959         AppLog("MainForm::OnForwardClicked");
2960         if (__pWebViewer == null)
2961                 return;
2962
2963         if (__pWebViewer->CanGoForward())
2964         {
2965                 __pWebViewer->GoForward();
2966         }
2967 }
2968
2969 void
2970 MainForm::OnAddressCancelledClicked(const Addressbar& addBar)
2971 {
2972         result r = E_SUCCESS;
2973
2974         __pFooterPanel->SetShowState(true);
2975         __pFooterUrlField->SetFocusable(true);
2976
2977         if(__pWebViewer)
2978                 __pWebViewer->SetFocus();
2979         else if(__pMostVisitedListView)
2980                 __pMostVisitedListView->SetFocus();
2981         else if(__pMultiWindowButton)
2982                 __pMultiWindowButton->SetFocus();
2983         __pMoreButton->SetFocus();
2984
2985         __pAddressbar->SetShowState(false);
2986
2987         RelayoutControls(false);
2988
2989 }
2990
2991 void
2992 MainForm::OnAddressBarModeChanged(/*const Addressbar& addBar*/)
2993 {
2994         __prevAddressBarMode = __curAddressBarMode;
2995
2996         if (__pAddressbar != null)
2997         {
2998                 __curAddressBarMode = GetAddressbarMode();
2999         }
3000
3001         if (__curAddressBarMode == ADDRESSBAR_MODE_EDIT)
3002         {
3003                 __adressPanelPosition.y = 0;
3004                 if (__pAddressbar != null)
3005                 {
3006                         __webControlPosition.y = __pAddressbar->GetHeight() - 12;
3007                         __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
3008                         __pAddressbar->Invalidate(true);
3009                 }
3010                 if (__pWebViewer != null)
3011                 {
3012                         __pWebViewer->StopLoading();
3013                 }
3014         }
3015         else if(__curAddressBarMode == ADDRESSBAR_MODE_LOADING)
3016         {
3017                 __adressPanelPosition.y = 0;
3018                 if (__pAddressbar != null)
3019                 {
3020                         __webControlPosition.y = 0;
3021                         __pAddressbar->SetBounds(Rectangle(0, __pAddressbar->GetY() - __pAddressbar->GetHeight(), GetClientAreaBounds().width, __pAddressbar->GetHeight()));
3022                         __pAddressbar->Invalidate(true);
3023                 }
3024         }
3025 }
3026
3027 void
3028 MainForm::OnClipboardClosed(const Addressbar& addBar)
3029 {
3030         RelayoutControls(false);
3031 }
3032
3033 void
3034 MainForm::OnAddressBarKeypadClosed(const Addressbar& addBar, bool footerState)
3035 {
3036         if(__pAddressbar)
3037                 __pAddressbar->SetShowState(false);
3038         if(__pFooterPanel)
3039                 __pFooterPanel->SetShowState(true);
3040         if(__pWebViewer)
3041                 __pWebViewer->SetFocus();
3042         if(__pFooterUrlField)
3043         {
3044                 __pFooterUrlField->SetFocusable(true);
3045         }
3046         RelayoutControls(false);
3047 }
3048
3049 void
3050 MainForm::OnAddressBarKeypadOpened(const Addressbar& addBar)
3051 {
3052         if (__pFindWordControl && __pFindWordControl->GetShowState() == true)
3053         {
3054                 __pAddressbar->SetShowState(false);
3055         }
3056         else
3057         {
3058                 if (__pAddressbar != null && __pAddressbar->GetShowState() == false)
3059                 {
3060                         __pAddressbar->SetShowState(true);
3061                         __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight()));
3062                         __pAddressbar->SetAddressbarURLFocus();
3063                 }
3064         }
3065
3066         RelayoutControls(false);
3067 }
3068
3069 void
3070 MainForm::OnAddressBarKeypadWillOpen(const Addressbar& addBar)
3071 {
3072         __pFooterPanel->SetShowState(false);
3073 }
3074
3075 void
3076 MainForm::OnAddressBarKeypadBoundsChanged(const Addressbar& addBar)
3077 {
3078         AppLog("KeypadBoundsChanged");
3079         RelayoutControls(false);
3080 }
3081
3082 void
3083 MainForm::OnPageTitleReceived(const Tizen::Base::String& title)
3084 {
3085         if (__pWindowInfo)
3086         {
3087                 __pWindowInfo->pageTitle = title;
3088                 if (__pWebViewer != null)
3089                 {
3090                         __pWindowInfo->pageUrl = __pWebViewer->GetUrl();
3091                 }
3092         }
3093         if (__pAddressbar != null && __pWebViewer != null)
3094         {
3095                 SetUrl(__pWebViewer->GetUrl());
3096                 __pAddressbar->Invalidate(true);
3097         }
3098 }
3099
3100 void
3101 MainForm::UpdateFavicon(void)
3102 {
3103         bool urlImageType = false;
3104         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();");
3105         Bitmap* pBitmap = null;
3106
3107         if (tempPath && tempPath->GetLength() > 0 && tempPath->CompareTo(L"undefined") != 0)
3108         {
3109                 if (__pWindowInfo != null)
3110                 {
3111                         Uri url;
3112                         url.SetUri(*tempPath);
3113                         if (url.GetHost().GetLength() == 0)
3114                         {
3115                                 Uri webUrl;
3116                                 webUrl.SetUri(__pWebViewer->GetUrl());
3117                                 result r = url.SetHost(webUrl.GetHost());
3118                                 if(IsFailed(r))
3119                                 {
3120                                         delete tempPath;
3121                                         return;
3122                                 }
3123                         }
3124                         if (url.GetScheme().GetLength() == 0)
3125                         {
3126                                 Uri webUrl;
3127                                 webUrl.SetUri(__pWebViewer->GetUrl());
3128                                 url.SetScheme(webUrl.GetScheme());
3129                         }
3130                         __pWindowInfo->faviconUrl = url.ToString();
3131
3132                         pBitmap = __pWebViewer->GetFaviconN();
3133
3134                         if (pBitmap != null)
3135                         {
3136                                 if (__pWindowInfo->pFavicon != NULL)
3137                                 {
3138                                         __pWindowInfo->pFavicon = null;
3139                                 }
3140                                 __pWindowInfo->pFavicon = new(std::nothrow) Bitmap();
3141                                 __pWindowInfo->pFavicon->Construct(*pBitmap,Rectangle(0,0,pBitmap->GetWidth(),pBitmap->GetHeight()));
3142
3143                                 __pAddressbar->SetFaviconBitmap(*__pWindowInfo->pFavicon);
3144
3145                                 FaviconManager::GetInstance()->SaveFavicon(*__pWindowInfo->pFavicon, __pWindowInfo->faviconUrl);
3146                         }
3147                         else if(__pWindowInfo->pFavicon != null)
3148                         {
3149                                 __pAddressbar->SetFaviconBitmap(*__pWindowInfo->pFavicon);
3150                         }
3151                         else
3152                         {
3153                                 Bitmap *pDefaultBmp = FaviconManager::GetInstance()->GetDefaultFaviconN();
3154                                 if(pDefaultBmp != null)
3155                                 {
3156                                         __pAddressbar->SetFaviconBitmap(*pDefaultBmp);
3157                                 }
3158                         }
3159                 }
3160                 delete tempPath;
3161         }
3162         else
3163         {
3164                 delete tempPath;
3165                 AppLogDebug("Error occured: %s", GetErrorMessage(GetLastResult()));
3166         }
3167
3168 }
3169
3170
3171 bool
3172 MainForm::OnLoadingRequested(const Tizen::Base::String& url,
3173                 Tizen::Web::Controls::WebNavigationType type)
3174 {
3175         // when load new page if find word panel is open its show state is false
3176         ShowFindWordPanel(false);
3177
3178         __pFooterPanel->Invalidate(true);
3179
3180         Uri uriInfo;
3181         uriInfo.SetUri(url);
3182
3183         if(url.Contains(IDS_TIZEN_SERVICE))
3184         {
3185                 String appId;
3186                 String delim(L":;,");
3187
3188                 // Creates a StringTokenizer instance
3189                 StringTokenizer strTok(url, delim);
3190
3191                 int count = strTok.GetTokenCount();     // count == 4
3192
3193                 HashMap *pMap = new HashMap();
3194                 pMap->Construct();
3195
3196                 String token;
3197                 String key;
3198                 String value;
3199                 while (strTok.HasMoreTokens())
3200                 {
3201                         AppLog("Token: %ls", token.GetPointer());
3202                         strTok.GetNextToken(token);         // Tizen, StringTokenizer, Sample, code
3203                         if(token.Contains(IDS_APPID))
3204                         {
3205                                 token.SubString(6, appId);
3206                                 AppLog("AppID:%ls", appId.GetPointer());
3207                         }
3208                         else if(token.Contains("="))
3209                         {
3210                                 String *pKey = new String();
3211                                 String *pValue = new String();
3212                                 int index = -1;
3213                                 token.IndexOf("=", 0, index);
3214                                 if(index != -1)
3215                                 {
3216                                         token.SubString(0, index, *pKey);
3217                                         token.SubString(index + 1, *pValue);
3218                                         pMap->Add(pKey, pValue);
3219                                 }
3220                         }
3221                 }
3222                 if(appId != "")
3223                 {
3224                         AppControl *pAppControl = null;
3225                         String operationId = L"http://tizen.org/appcontrol/operation/main";
3226                         pAppControl = dynamic_cast<AppControl*>(AppManager::FindAppControlN(appId, operationId));
3227                         if(pAppControl)
3228                         {
3229                                 result r = pAppControl->Start(null, null, pMap, null);
3230                         }
3231                         else
3232                         {
3233                                 AppLogException("AppControl not found");
3234                         }
3235                         return true;
3236                 }
3237         }
3238
3239         if ( __pAddressbar != null && __pAddressbar->GetShowState() == true)
3240         {
3241                 __pAddressbar->SetShowState(false);
3242                 OnAddressCancelledClicked(*__pAddressbar);
3243                 __pAddressbar->Invalidate(true);
3244         }
3245         return false;
3246 }
3247
3248 DecisionPolicy
3249 MainForm::OnWebDataReceived(const Tizen::Base::String& mime,
3250                 const Tizen::Net::Http::HttpHeader& httpHeader)
3251 {
3252         return Tizen::Web::Controls::WEB_DECISION_CONTINUE;
3253 }
3254
3255
3256 void
3257 MainForm::OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint)
3258 {
3259         AppLog("MainForm::OnWebPageBlockSelected");
3260         if (__pHitElementResult != null)
3261         {
3262                 delete __pHitElementResult;
3263                 __pHitElementResult = null;
3264         }
3265
3266         if (__pWebViewer != null)
3267         {
3268                 AppLog("MainForm::OnWebPageBlockSelected web not null");
3269                 __pHitElementResult = __pWebViewer->GetElementByPointN(endPoint);
3270         }
3271
3272         if (__pHitElementResult == null)
3273         {
3274                 return;
3275         }
3276
3277         if (__pHitElementResult->HasImage() != true)
3278         {
3279                 String tagName = __pHitElementResult->GetTagName();
3280                 String type = __pHitElementResult->GetAttributeValue("type");
3281
3282                 __currentSelectedStr.Clear();
3283                 AppLog("__currentSelectedStr after clear %ls",__currentSelectedStr.GetPointer());
3284                 __currentSelectedStr = __pWebViewer->GetTextFromBlock();
3285                 AppLog("__currentSelectedStr after GetTextFromBlock %ls",__currentSelectedStr.GetPointer());
3286
3287                 if (((tagName.CompareTo(L"INPUT") == 0)  || tagName.CompareTo(L"TEXTAREA") == 0) && __isLongPressedDone == true)
3288                 {
3289                         AppLog("MainForm::OnWebPageBlockSelected show paste option");
3290
3291                         InitSelectTextContextMenu(endPoint,true);
3292                         __pImageMenu->SetShowState(true);
3293                         __pImageMenu->Show();
3294                         __pImageMenu->Invalidate(true);
3295                 }
3296                 else if(__isLongPressedDone == true)
3297                 {
3298                         AppLog("MainForm::OnWebPageBlockSelected no paste option");
3299
3300                         if(__pHitElementResult->GetUrl().GetLength() > 0)
3301                         {
3302                                 __currentSelectedStr.Clear();
3303                                 __currentSelectedStr = __pHitElementResult->GetUrl();
3304                         }
3305                         InitSelectTextContextMenu(endPoint,false);
3306                         __pImageMenu->SetShowState(true);
3307                         __pImageMenu->Show();
3308                         __pImageMenu->Invalidate(true);
3309                 }
3310
3311                 AppLog("MainForm::OnWebPageBlockSelected block text is %ls",__currentSelectedStr.GetPointer());
3312                 AppLog("MainForm::OnWebPageBlockSelected tag name is %ls",tagName.GetPointer());
3313                 AppLog("MainForm::OnWebPageBlockSelected type name is %ls",type.GetPointer());
3314         }
3315
3316 }
3317
3318 void
3319 MainForm::OnWebPageShowRequested(Tizen::Web::Controls::Web& source)
3320 {
3321
3322 }
3323
3324 Web*
3325 MainForm::OnWebWindowCreateRequested(void)
3326 {
3327         WindowInfo* pNewWindowInfo = MultipleWindowPresentationModel::GetInstance()->CreateNewMainViewScene();
3328
3329         if (pNewWindowInfo == null)
3330         {
3331                 return null;
3332         }
3333         result r = E_SUCCESS;
3334         SceneManager* pSceneManager = SceneManager::GetInstance();
3335         if (pSceneManager == NULL)
3336         {
3337                 return null;
3338         }
3339         ArrayList* pArgList = new(std::nothrow) ArrayList();
3340         if (pArgList == NULL)
3341         {
3342                 return null;
3343         }
3344         r = pArgList->Construct();
3345         if (r == E_SUCCESS)
3346         {
3347                 pNewWindowInfo->isJavascriptInitiated = true;
3348                 pArgList->Add(*pNewWindowInfo);
3349                 r = pSceneManager->GoForward(ForwardSceneTransition(pNewWindowInfo->sceneID, SCENE_TRANSITION_ANIMATION_TYPE_NONE),pArgList);
3350                 delete pArgList;
3351                 if (IsFailed(r))
3352                 {
3353                         AppLogDebug("EditHistoryListForm::OnFormBackRequested Failed to GoBackward %s",GetErrorMessage(r));
3354                         return null;
3355                 }
3356         } else {
3357                 delete pArgList;
3358         }
3359
3360         return pNewWindowInfo->pCurrentWeb;
3361 }
3362
3363 void
3364 MainForm::RelayoutControls(bool showAddressbar)
3365 {
3366         __webControlPosition.y = 0;
3367         __webControlHeight = GetClientAreaBounds().height;
3368         AppLog("Client area height: %d", __webControlHeight);
3369
3370         AppLog("Client area height: %d", __webControlHeight);
3371         if(__pAddressbar != null && __pAddressbar->GetShowState() == true)
3372         {
3373                 __webControlPosition.y += __pAddressbar->GetHeight();
3374                 __webControlHeight -= __pAddressbar->GetHeight();
3375                 __pAddressbar->SetBounds(0, 0, __pAddressbar->GetWidth(), __pAddressbar->GetHeight());
3376         }
3377         else if(__pFindWordControl != null && __pFindWordControl->GetShowState() == true)
3378         {
3379                 __webControlPosition.y += __pFindWordControl->GetHeight();
3380                 __webControlHeight -= __pFindWordControl->GetHeight();
3381                 __pFindWordControl->SetBounds(0, 0, GetClientAreaBounds().width, __pFindWordControl->GetHeight());
3382         }
3383
3384         if(__pFooterPanel != null && __pFooterPanel->GetShowState() == true)
3385         {
3386                 __webControlHeight -= __pFooterPanel->GetHeight();
3387                 __pFooterPanel->SetBounds(0, __webControlPosition.y + __webControlHeight, GetClientAreaBounds().width, __pFooterPanel->GetHeight());
3388         }
3389         if (__pWebViewer != null && __pWebViewer->GetShowState() == true)
3390         {
3391                 __pWebViewer->SetBounds(0, __webControlPosition.y, GetClientAreaBounds().width, __webControlHeight);
3392                 __pWebViewer->Invalidate(false);
3393         }
3394         if(__pMostVisitedListView != null && __pAddressbar != null && __pFooterPanel != null)
3395         {
3396                 __pMostVisitedListView->SetBounds(Tizen::Graphics::Rectangle(0,__webControlPosition.y , GetClientAreaBounds().width, __webControlHeight));
3397         }
3398
3399         Invalidate(true);
3400 }
3401
3402 void
3403 MainForm::ShowFindWordPanel(bool show , bool isTouchPressed)
3404 {
3405         if (__pFindWordControl == null)
3406         {
3407                 return;
3408         }
3409         if (show == true)
3410         {
3411                 InitFindWordPanel();
3412 //              __pFindWordEditField->SetText(__currentSearchStr);
3413                 //__pFindWordCountLabel->SetText(L"");
3414 //              __pFindWordCountLabel->SetText(L"0/0");
3415                 __pFindWordControl->SetShowState(true);
3416         }
3417         else
3418         {
3419                 if(__pFindWordControl != null)
3420                 {
3421                         __pFindWordControl->SetShowState(false);
3422                 }
3423         }
3424
3425         AppLog("MainForm::ShowFindWordPanel %d",show);
3426         if (show && !isTouchPressed)
3427         {
3428                 if (__pFindWordEditField)
3429                 {
3430                         __pFindWordEditField->SetFocus();
3431                         __pFindWordEditField->ShowKeypad();
3432                 }
3433         }
3434         else
3435         {
3436                 if (__pFindWordEditField)
3437                         __pFindWordEditField->HideKeypad();
3438         }
3439
3440         RelayoutControls(false);
3441 }
3442
3443 void
3444 MainForm::StartWordSearch()
3445 {
3446         //Get the count of occurances of the word in the current page
3447         __maxOccurrances = 0;
3448         __currentWordIndex = 0;
3449
3450         __pFindWordPrev->SetEnabled(false);
3451         String *pCountStr = null;
3452         __pWebViewer->SearchTextAllAsync(__currentSearchStr, false);
3453         /*__pWebViewer->EvaluateJavascriptN(L"document.body.textContent.match(/"  + __currentSearchStr + "/gi).length;");
3454         if (pCountStr != null)
3455         {
3456                 Integer::Parse(*pCountStr, 10, __maxOccurrances);
3457                 delete pCountStr;
3458         }
3459
3460         AppLogDebug("'%ls' is found %d times", __currentSearchStr.GetPointer(), __maxOccurrances);
3461          */
3462
3463 }
3464
3465 void MainForm::OnTextFound(int totalCount, int currentOrdinal)
3466 {
3467         AppLog("MainForm::OnTextFound totalCount %d",totalCount);
3468         AppLog("MainForm::OnTextFound currentOrdinal %d",currentOrdinal);
3469
3470         if(totalCount == -1 || totalCount == 0)
3471         {
3472                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),64,__pFindWordCountLabel->GetHeight());
3473                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),214+80,__pFindWordEditField->GetHeight());
3474 //              return;
3475         }
3476         else if(totalCount > 100)
3477         {
3478                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
3479                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
3480         }
3481         else
3482         {
3483                 __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight());
3484                 __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight());
3485         }
3486
3487         __maxOccurrances = totalCount;
3488         __currentWordIndex = currentOrdinal;
3489
3490         //Reset the UI controls as per the maxOccurrance value
3491         if (totalCount <= 0)
3492         {
3493                 AppLog("Word not found");
3494                 //Show error notification to user
3495                 __pFindWordNext->SetEnabled(false);
3496                 __pFindWordCountLabel->SetText(L"0/0");
3497                 __pFindWordNext->Invalidate(false);
3498                 __pFindWordPrev->Invalidate(false);
3499                 __pFindWordCountLabel->Invalidate(false);
3500                 return;
3501         }
3502
3503         if (totalCount == 1)
3504         {
3505                 __pFindWordNext->SetEnabled(false);
3506         }
3507         else
3508         {
3509                 __pFindWordNext->SetEnabled(true);
3510         }
3511
3512         String countStr = L"";
3513         countStr.Append(__currentWordIndex);
3514         countStr.Append(L"/");
3515         countStr.Append(__maxOccurrances);
3516         __pFindWordCountLabel->SetText(countStr);
3517         //      __pFindWordCountLabel->SetShowState(true);
3518         __pFindWordCountLabel->Invalidate(false);
3519
3520         //FindNextWord(true);
3521         //Update the controls
3522         __pFindWordNext->Invalidate(false);
3523         __pFindWordPrev->Invalidate(false);
3524         __pFindWordCountLabel->Invalidate(false);
3525 }
3526
3527 void
3528 MainForm::FindNextWord(bool next)
3529 {
3530         if (next == true)
3531         {
3532                 if (__pWebViewer->SearchText(__currentSearchStr, true) == true)
3533                 {
3534                         if(__currentWordIndex < __maxOccurrances)
3535                         {
3536                                 __currentWordIndex++;
3537                         }
3538                 }
3539         }
3540         else
3541         {
3542                 if (__pWebViewer->SearchText(__currentSearchStr, false) == true)
3543                 {
3544                         if(__currentWordIndex > 1)
3545                         {
3546                                 __currentWordIndex--;
3547                         }
3548                 }
3549         }
3550
3551         String countStr = L"";
3552         countStr.Append(__currentWordIndex);
3553         countStr.Append(L"/");
3554         countStr.Append(__maxOccurrances);
3555         __pFindWordCountLabel->SetText(countStr);
3556         //      __pFindWordCountLabel->SetShowState(true);
3557         __pFindWordCountLabel->Invalidate(false);
3558         if (__currentWordIndex >= __maxOccurrances)
3559         {
3560                 __pFindWordNext->SetEnabled(false);
3561         }
3562         else
3563         {
3564                 __pFindWordNext->SetEnabled(true);
3565         }
3566         if (__currentWordIndex <= 1)
3567         {
3568                 __pFindWordPrev->SetEnabled(false);
3569         }
3570         else
3571         {
3572                 __pFindWordPrev->SetEnabled(true);
3573         }
3574         __pFindWordPrev->Invalidate(false);
3575         __pFindWordNext->Invalidate(false);
3576         __pFindWordCountLabel->Invalidate(false);
3577         __pFindWordControl->Invalidate(true);
3578 }
3579 void
3580 MainForm::OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source)
3581 {
3582         AppLog("MainForm::OnWebKeypadWillOpen");
3583         __isWebKeypadOpened = true;
3584         //      OnAddressBarKeypadOpened(*__pAddressbar);
3585 }
3586
3587 void
3588 MainForm::OnWebKeypadOpened(Tizen::Web::Controls::Web& source)
3589 {
3590
3591         if(__pFindWordControl && __pFindWordControl->GetShowState() == true)
3592         {
3593                 __currentSearchStr = L"";
3594                 __currentWordIndex = 0;
3595                 __maxOccurrances = 0;
3596                 __pFindWordEditField->SetText(L"");
3597                 __pFindWordNext->SetEnabled(false);
3598                 __pFindWordPrev->SetEnabled(false);
3599                 __pFindWordCountLabel->SetText(L"0/0");
3600                 __pWebViewer->SearchText(L"aaaabbbbcccc",true);
3601                 __pFindWordControl->SetShowState(false);
3602                 if (__pFindWordEditField)
3603                         __pFindWordEditField->HideKeypad();
3604         }
3605
3606
3607         if (__pWebViewer != null && __pFooterPanel != null)
3608         {
3609                 AppLog("MainForm::OnOrientationChanged GetClientAreaBounds().height %d ", GetClientAreaBounds().height);
3610                 if(__pAddressbar != null)
3611                 {
3612                         __pAddressbar->SetShowState(false);
3613                 }
3614                 if(__pFindWordControl != null)
3615                 {
3616                         __pFindWordControl->SetShowState(false);
3617                 }
3618                 __pFooterPanel->SetShowState(false);
3619                 __pWebViewer->SetBounds(Rectangle(0, 0,GetClientAreaBounds().width, GetClientAreaBounds().height));
3620         }
3621         Invalidate(true);
3622 }
3623
3624 void
3625 MainForm::OnWebKeypadClosed(Tizen::Web::Controls::Web& source)
3626 {
3627         __pFooterPanel->SetShowState(true);
3628         OnAddressBarKeypadClosed(*__pAddressbar);
3629         __isWebKeypadOpened = false;
3630 }
3631
3632 void
3633 MainForm::OnTouchDoublePressed(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo)
3634 {
3635         Control* temp = const_cast< Control* >(&source);
3636         Header* pHeader = dynamic_cast< Header* >(temp);
3637         if (pHeader != null)
3638         {
3639                 //Header double - clicked
3640                 AppLog("Header double clicked");
3641         }
3642         if(__pFindWordControl)
3643         {
3644                 AppLog("MainForm::OnTouchPressed %d",__pFindWordControl->GetShowState());
3645                 ShowFindWordPanel(__pFindWordControl->GetShowState(), true);
3646         }
3647
3648
3649         AppLog("MainScene::OnTouchDoublePressed");
3650         bool isReaderEnabled = SettingPresentationModel::GetInstance()->IsRunReaderEnabled();
3651         if (isReaderEnabled == true)
3652         {
3653                 if (__pReaderData)
3654                 {
3655                         delete __pReaderData;
3656                         __pReaderData = null;
3657                 }
3658                 String filePath = Tizen::App::UiApp::GetInstance()->GetAppRootPath();
3659                 filePath.Append(L"data/reader.js");
3660                 File file;
3661                 char buffer[10];
3662                 char buffer2[5];
3663                 int i;
3664                 int readCnt;
3665                 result r = E_SUCCESS;
3666                 FileAttributes attr;
3667
3668                 File::GetAttributes(filePath,attr);
3669                 // Creates file
3670                 r = file.Construct(filePath, L"r+");
3671                 if (IsFailed(r))
3672                 {
3673                         AppLogDebug("File construct failed with %s", GetErrorMessage(r));
3674                         return;
3675                 }
3676                 char* pScript = new(std::nothrow) char[attr.GetFileSize()+1];
3677                 if(pScript == null)
3678                 {
3679                         AppLogDebug("Memory allocation for file failed %s", GetErrorMessage(r));
3680                         return;
3681                 }
3682                 file.Read(pScript,attr.GetFileSize());
3683
3684                 AppLogDebug("scipt length %d",strlen(pScript));
3685                 String strScript = L"";
3686                 strScript.Append(pScript);
3687                 __pReaderData = __pWebViewer->EvaluateJavascriptN(strScript);
3688                 if (!__pReaderData)
3689                 {
3690                         AppLog("MainScene::data is null Error :%s",GetErrorMessage(GetLastResult()));
3691                         return;
3692                 }
3693                 AppLogDebug("evaluateJavascript result %s , __pReaderData %ls",GetErrorMessage(GetLastResult()),__pReaderData->GetPointer());
3694                 if (__pReaderData->CompareTo(L"undefined") != 0 && __pReaderData->CompareTo(L"") != 0)
3695                 {
3696                         //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER);
3697                         SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER);
3698                 }
3699                 delete[] pScript;
3700         }
3701 }
3702
3703 void MainForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3704 {
3705         AppLog("MainForm::OnTouchLongPressed");
3706
3707         if (__pHitElementResult != null)
3708         {
3709                 delete __pHitElementResult;
3710                 __pHitElementResult = null;
3711         }
3712
3713         if (__pWebViewer != null)
3714         {
3715                 AppLog("MainForm::OnTouchLongPressed web not null");
3716                 __pHitElementResult = __pWebViewer->GetElementByPointN(currentPosition);
3717         }
3718
3719         if (__pHitElementResult == null)
3720         {
3721                 return;
3722         }
3723
3724         if (__pHitElementResult->HasImage() == true)
3725         {
3726                 InitImageContextMenu(currentPosition);
3727                 __pImageMenu->SetShowState(true);
3728                 __pImageMenu->Show();
3729                 __pImageMenu->Invalidate(true);
3730         }
3731         else if(__pHitElementResult->HasUrl() == true)
3732         {
3733                 String tempURl = __pHitElementResult->GetUrl();
3734                 AppLog("tempURl is %ls", tempURl.GetPointer());
3735                 const Bitmap* pBitmap = __pHitElementResult->GetImage();
3736                 if (pBitmap != null)
3737                 {
3738                         AppLog("not null");
3739                 }
3740                 else
3741                 {
3742                         AppLog(null);
3743                 }
3744                 InitImageLinkContextMenu(currentPosition);
3745                 __pImageMenu->SetShowState(true);
3746                 __pImageMenu->Show();
3747                 __pImageMenu->Invalidate(true);
3748         }
3749         else
3750         {
3751                 String tagName = __pHitElementResult->GetTagName();
3752                 String type = __pHitElementResult->GetAttributeValue("type");
3753                 String value = __pHitElementResult->GetAttributeValue(L"value");
3754                 String innerHtml = __pHitElementResult->GetAttributeValue(L"innerHTML");
3755
3756                 __currentSelectedStr.Clear();
3757                 __currentSelectedStr = __pWebViewer->GetTextFromBlock();
3758
3759                 AppLog("tag name is %ls", tagName.GetPointer());
3760                 AppLog("type is %ls", type.GetPointer());
3761                 AppLog("innerHtml is %ls", innerHtml.GetPointer());
3762
3763                 if (((tagName.CompareTo(L"INPUT") == 0)  || tagName.CompareTo(L"TEXTAREA") == 0) &&  value.GetLength() == 0 && innerHtml.GetLength() == 0 && __isWebKeypadOpened == true)
3764                 {
3765                         AppLog("MainForm::OnWebPageBlockSelected show paste option");
3766
3767                         InitSelectTextContextMenu(currentPosition,true, true);
3768                         __pImageMenu->SetShowState(true);
3769                         __pImageMenu->Show();
3770                         __pImageMenu->Invalidate(true);
3771                 }
3772                 __isLongPressedDone = true;
3773                 __pWebViewer->SetBlockSelectionPosition(currentPosition);
3774
3775         }
3776         __inputEventToBeSupressed = true;
3777 }
3778
3779 void
3780 MainForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
3781 {
3782         AppLog("MainForm::OnTouchReleased");
3783
3784         HitElementResult* pHitElement = __pWebViewer->GetElementByPointN(currentPosition);
3785         if(pHitElement != null && pHitElement->HasUrl() == true && __inputEventToBeSupressed == true)
3786         {
3787                 __pWebViewer->ConsumeInputEvent();
3788         }
3789         if(pHitElement != null)
3790         {
3791                 delete pHitElement;
3792         }
3793         __inputEventToBeSupressed = false;
3794 }
3795
3796 bool
3797 MainForm::OnTouchPressed(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3798 {
3799
3800         return true;
3801 }
3802
3803 bool
3804 MainForm::OnTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3805 {
3806         if(__pFindWordControl && __pFindWordControl->GetShowState() == true)
3807         {
3808                 __currentSearchStr = L"";
3809                 __currentWordIndex = 0;
3810                 __maxOccurrances = 0;
3811                 __pFindWordEditField->SetText(L"");
3812                 __pFindWordNext->SetEnabled(false);
3813                 __pFindWordPrev->SetEnabled(false);
3814                 __pFindWordCountLabel->SetText(L"0/0");
3815                 __pWebViewer->SearchText(L"aaaabbbbcccc",true);
3816                 __pFindWordControl->SetShowState(false);
3817                 __pFindWordEditField->HideKeypad();
3818         }
3819         if(__pAddressbar->GetShowState() == false)
3820         {
3821                 __pAddressbar->SetShowState(true);
3822                 __pAddressbar->SetAddressbarURLFocus();
3823                 __pFooterUrlField->SetFocusable(false);
3824                 __pFooterPanel->SetShowState(false);
3825         }
3826
3827         return true;
3828 }
3829
3830 bool
3831 MainForm::OnTouchMoved(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3832 {
3833         return true;
3834 }
3835
3836 bool
3837 MainForm::OnTouchCanceled(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3838 {
3839         return true;
3840 }
3841
3842 bool
3843 MainForm::OnPreviewTouchPressed(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3844 {
3845         return true;
3846 }
3847
3848 bool
3849 MainForm::OnPreviewTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3850 {
3851         return true;
3852 }
3853
3854 bool
3855 MainForm::OnPreviewTouchMoved(Tizen::Ui::Control& source, const Tizen::Ui::TouchEventInfo& touchEventInfo)
3856 {
3857         return true;
3858 }
3859
3860 void
3861 MainForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
3862 {
3863         AppLog("MainForm::OnOrientationChanged GetClientAreaBounds %d, %d",GetClientAreaBounds().width,GetClientAreaBounds().height);
3864         int widthContextItem = 0;
3865         if(__pFindWordControl != null)
3866                 ShowFindWordPanel(__pFindWordControl->GetShowState(), false);
3867         if ( __pFooterLabel != null)
3868         {
3869                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pFooterLabel->GetWidth(), __pFooterLabel->GetHeight());
3870                 if(pBitmap != null)
3871                 {
3872                         __pFooterLabel->SetBackgroundBitmap(*pBitmap);
3873                         delete pBitmap;
3874                 }
3875         }
3876
3877         if (__pFindWordBgLabel != null)
3878         {
3879                 Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_FINDWORD_INPUT_FIELD_BG, __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight());
3880                 if (pBitmap != null)
3881                 {
3882                         __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap);
3883                         delete pBitmap;
3884                 }
3885         }
3886
3887         if(__pMenu != null)
3888                 __pMenu->SetShowState(false);
3889         if( GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
3890         {
3891                 widthContextItem = WIDTH_CONTEXT_MENU_BUTTON_LANDSCAPE;
3892         }
3893         else
3894         {
3895                 widthContextItem = WIDTH_CONTEXT_MENU_BUTTON_PORTRAIT;
3896         }
3897
3898         if (__pFooterPanel)
3899         {
3900                 AppLog("__pFooterPanel->GetShowState() is true");
3901                 InitFooter();
3902                 __pFooterPanel->SetBounds(0, GetClientAreaBounds().height - __pFooterPanel->GetHeight(), __pFooterPanel->GetWidth(), __pFooterPanel->GetHeight());
3903                 __pFooterPanel->Invalidate(true);
3904         }
3905         InitAddressbar();
3906
3907         if(__pMoreButton && __pMenu)
3908         {
3909                 Point p = Point(__pMoreButton->GetX() + __pMoreButton->GetWidth() / 2, GetBounds().height - __pMoreButton->GetHeight());
3910                 __pMenu->SetAnchorPosition(p);
3911                 __pMenu->Invalidate(true);
3912         }
3913
3914         String homePage = SettingPresentationModel::GetInstance()->GetHomepage();
3915         if (homePage.CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0)
3916         {
3917                 InitMostVisitedSitesView(orientationStatus);
3918         }
3919
3920         RelayoutControls(false);
3921         if (__pArticleReaderPanel != null)
3922         {
3923                 if (__pArticleReaderPanel->GetShowState() == true)
3924                 {
3925                         __pArticleReaderPanel->SetBounds((GetClientAreaBounds().width - __pArticleReaderPanel->GetWidth())/2,(GetClientAreaBounds().height - __pArticleReaderPanel->GetHeight())/2, __pArticleReaderPanel->GetWidth(), __pArticleReaderPanel->GetHeight());
3926
3927                         if (__pBlankPanel != null)
3928                                 __pBlankPanel->SetBounds(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height);
3929
3930                         if (__pWebReader != null)
3931                         {
3932                                 __pWebReader->SetBounds(Rectangle(2,2, __pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight() - 96));
3933                         }
3934                         Bitmap* pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
3935                         Bitmap* pSrcBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_popup_bottom_bg.9.png",__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight());
3936
3937                         if ( pBitmap != null && pSrcBitmap != null)
3938                         {
3939                                 AppLog("CreateReaderPanel ninepatchbitmap found");
3940                                 pBitmap->Merge(Point(0,__pArticleReaderPanel->GetHeight() - 96),*pSrcBitmap,Rectangle(0,0,pSrcBitmap->GetWidth(),pSrcBitmap->GetHeight()));
3941                         }
3942
3943                         __pArticleReaderLabel->SetBounds(Rectangle(__pArticleReaderPanel->GetX(),__pArticleReaderPanel->GetY(),__pArticleReaderPanel->GetWidth(),__pArticleReaderPanel->GetHeight()));
3944                         __pArticleReaderLabel->SetBackgroundBitmap(*pBitmap);
3945                         if (pBitmap != null)
3946                         {
3947                                 delete pBitmap;
3948                                 pBitmap = null;
3949                         }
3950                         if (pSrcBitmap != null)
3951                         {
3952                                 delete pSrcBitmap;
3953                                 pSrcBitmap = null;
3954                         }
3955                 }
3956         }
3957         Invalidate(true);
3958         
3959     if (__pAddressbar != null)
3960         {
3961                 int width = GetClientAreaBounds().width;
3962                 __pAddressbar->OrientationChanged(width);
3963         }
3964 }
3965
3966 void
3967 MainForm::OnSettingsChange(int settingvalue)
3968 {
3969         AppLogDebug("MainForm::OnSettingsChange entered");
3970
3971         if(settingvalue == (int)REGISTRY_SETTING_HOMEPAGE)
3972         {
3973                 __pAddressbar->ResetGuideText();
3974         }
3975         if (__pWebViewer == null)
3976         {
3977                 AppLogDebug("Webviewer is not initialized yet.");
3978                 return;
3979         }
3980
3981         if (settingvalue == (int) REGISTRY_SETTING_DEFAULT_VIEW)
3982         {
3983                 WebSetting settings = __pWebViewer->GetSetting();
3984                 if (SettingPresentationModel::GetInstance()->GetDefaultView().CompareTo(CommonUtil::GetString(L"IDS_BR_BODY_FIT_TO_WIDTH")) == 0)
3985                 {
3986                         settings.SetAutoFittingEnabled(true);
3987                 }
3988                 else if (SettingPresentationModel::GetInstance()->GetDefaultView().CompareTo(CommonUtil::GetString(L"IDS_BR_BODY_READABLE")) == 0)
3989                 {
3990                         settings.SetAutoFittingEnabled(false);
3991                 }
3992                 __pWebViewer->SetSetting(settings);
3993         }
3994         else if (settingvalue == (int) REGISTRY_SETTING_RUN_JAVASCRIPT)
3995         {
3996                 WebSetting settings = __pWebViewer->GetSetting();
3997                 settings.SetJavascriptEnabled(SettingPresentationModel::GetInstance()->IsRunJavascriptEnabled());
3998                 __pWebViewer->SetSetting(settings);
3999         }
4000         else if (settingvalue == (int) REGISTRY_SETTING_DISPLAY_IMAGES)
4001         {
4002                 WebSetting settings = __pWebViewer->GetSetting();
4003                 settings.SetAutoImageLoadEnabled(SettingPresentationModel::GetInstance()->IsDisplayImagesEnabled());
4004                 __pWebViewer->SetSetting(settings);
4005         }
4006         else if (settingvalue == (int) REGISTRY_SETTING_BLOCK_POPUP)
4007         {
4008                 WebSetting settings = __pWebViewer->GetSetting();
4009                 settings.SetJavaScriptPopupEnabled(SettingPresentationModel::GetInstance()->IsBlockPopUp());
4010                 __pWebViewer->SetSetting(settings);
4011         }
4012         else if (settingvalue == (int) REGISTRY_SETTING_ACCEPT_COOKIES)
4013         {
4014                 if (__pWebViewer)
4015                 {
4016                         __pWebViewer->SetCookieEnabled(SettingPresentationModel::GetInstance()->IsCookiesEnabled());
4017                 }
4018         }
4019
4020         else if (settingvalue == (int) REGISTRY_SETTING_SHOW_SECURITY_WARNINGS)
4021         {
4022                 WebSetting settings = __pWebViewer->GetSetting();
4023                 if (SettingPresentationModel::GetInstance()->IsSecurityWarningsEnabled() == true)
4024                 {
4025                         settings.SetCertificateErrorHandlingMode(WEB_CERTIFICATE_ERROR_HANDLING_MODE_USER_CONFIRM);
4026                 }
4027                 else
4028                 {
4029                         settings.SetCertificateErrorHandlingMode(WEB_CERTIFICATE_ERROR_HANDLING_MODE_CONTINUE);
4030                 }
4031                 __pWebViewer->SetSetting(settings);
4032         }
4033         else if (settingvalue == (int) REGISTRY_SETTING_READER_FONT_SIZE)
4034         {
4035                 if (__pWebReader)
4036                 {
4037                         AppLogDebug("IntMainForm fontsize Changed to %d",SettingPresentationModel::GetInstance()->GetReaderFontSize());
4038                         WebSetting settings = __pWebReader->GetSetting();
4039                         settings.SetFontSize(SettingPresentationModel::GetInstance()->GetReaderFontSize());
4040                         __pWebReader->SetSetting(settings);
4041                 }
4042         }
4043 }
4044
4045 void
4046 MainForm::OnSettingsReset()
4047 {
4048         if (__pWebViewer)
4049         {
4050                 __pWebViewer->SetCookieEnabled(SettingPresentationModel::GetInstance()->IsCookiesEnabled());
4051                 __pWebViewer->SetSetting(SettingPresentationModel::GetInstance()->GetWebSettings());
4052         }
4053 }
4054
4055 void
4056 MainForm::OnClearCache()
4057 {
4058         result r = E_SUCCESS;
4059
4060         if (__pWebViewer != NULL)
4061         {
4062                 r = __pWebViewer->ClearCache();
4063                 if (r == E_SUCCESS)
4064                 {
4065                         AppLogDebug("Cache cleared success");
4066                 }
4067                 else
4068                 {
4069                         AppLogDebug("Cache cleared fail");
4070                 }
4071         }
4072 }
4073
4074 void
4075 MainForm::OnClearCookie()
4076 {
4077         result r = E_SUCCESS;
4078
4079         if (__pWebViewer != NULL)
4080         {
4081                 __pWebViewer->ClearCookie();
4082         }
4083         if (r == E_SUCCESS)
4084         {
4085                 AppLogDebug("Cookie cleared success");
4086         }
4087         else
4088         {
4089                 AppLogDebug("Cache cleared fail");
4090         }
4091 }
4092
4093 void
4094 MainForm::OnClearFormData()
4095 {
4096         result r = E_SUCCESS;
4097
4098         if (__pWebViewer != NULL)
4099         {
4100                 __pWebViewer->ClearFormData();
4101         }
4102         if (r == E_SUCCESS)
4103         {
4104                 AppLogDebug("Cookie cleared success");
4105         }
4106         else
4107         {
4108                 AppLogDebug("Cache cleared fail");
4109         }
4110 }
4111
4112 void
4113 MainForm::OnClearPasswords()
4114 {
4115         result r = E_SUCCESS;
4116
4117         if (__pWebViewer != NULL)
4118         {
4119                 __pWebViewer->ClearLoginFormData();
4120         }
4121         if (r == E_SUCCESS)
4122         {
4123                 AppLogDebug("Cookie cleared success");
4124         }
4125         else
4126         {
4127                 AppLogDebug("Cache cleared fail");
4128         }
4129 }
4130
4131
4132 double
4133 MainForm::findDistance(int x1,int y1,int x2, int y2)
4134 {
4135         int deltaX = Math::Abs(x2 - x1);
4136         int deltaY = Math::Abs(y2 - y1);
4137         double num = deltaX*deltaX + deltaY*deltaY;
4138
4139         if (num >= 0)
4140         {
4141                 double x = num;
4142                 int i;
4143                 for (i = 0; i < 20; i++)
4144                 {
4145                         x = (((x*x)+ num)/(2*x));
4146                 }
4147                 return num;
4148         }
4149         else
4150         {
4151                 return 0.0;
4152         }
4153 }
4154
4155 void
4156 MainForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
4157 {
4158         if(__pFindWordControl)
4159         {
4160                 AppLog("MainForm::OnTouchPressed %d",__pFindWordControl->GetShowState());
4161                 ShowFindWordPanel(__pFindWordControl->GetShowState(), true);
4162         }
4163         __isLongPressedDone = false;
4164
4165         Touch touch;
4166         IList* pList = null;
4167         pList = touch.GetTouchInfoListN(source);
4168
4169         if (pList != null)
4170         {
4171                 int count = pList->GetCount();
4172                 if (count == 1)
4173                 {
4174                         TouchInfo* pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(0));
4175                         __touchPoint1 = pTouchInfo->position;
4176
4177                         /*if (__pAddressbar != null)
4178                         {
4179                                 if (__pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_LOADING_COMPLETE && __pAddressbar->GetAddressbarMode() != ADDRESSBAR_MODE_LOADING)
4180                                 {
4181                                         if (__pAddressbar->GetAddressbarMode() == ADDRESSBAR_MODE_EDIT)
4182                                         {
4183                                                 __pAddressbar->SaveAddressbarEditText();
4184                                         }
4185                                         __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
4186                                 }
4187
4188                                 __pAddressbar->Invalidate(true);
4189                         }*/
4190                         if (GetAddressbarMode() != ADDRESSBAR_MODE_LOADING_COMPLETE && GetAddressbarMode() != ADDRESSBAR_MODE_LOADING)
4191                         {
4192                                 if (GetAddressbarMode() == ADDRESSBAR_MODE_EDIT)
4193                                 {
4194                                         //__pAddressbar->SaveAddressbarEditText();
4195                                 }
4196                                 SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE);
4197                         }
4198                 }
4199                 else if (count == 2)
4200                 {
4201                         AppLogDebug("MainForm::OnTouchPressed count is two");
4202                         TouchInfo* pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(0));
4203                         __touchPoint1 = pTouchInfo->position;
4204
4205                         pTouchInfo = static_cast<TouchInfo*>(pList->GetAt(1));
4206                         __touchPoint2 = pTouchInfo->position;
4207                 }
4208         }
4209         if( pList != NULL)
4210
4211         {
4212                 pList->RemoveAll(true);
4213                 delete pList;
4214         }
4215         return;
4216 }
4217
4218 void
4219 MainForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
4220 {
4221         __currentWordIndex = 0;
4222         __isLongPressedDone = false;
4223
4224 }
4225
4226 void
4227 MainForm::MoveUiControls()
4228 {
4229 }
4230
4231 void
4232 MainForm::OnTextValueChanged (const Tizen::Ui::Control &source)
4233 {
4234         if(&source == dynamic_cast<Control*>(__pFooterUrlField) && __pFooterUrlField != null)
4235         {
4236                 if(__pFooterUrlField->GetTextLength() == 0)
4237                 {
4238                         __pFooterUrlField->SetKeypadActionEnabled(false);
4239                 }
4240                 else
4241                 {
4242                         __pFooterUrlField->SetKeypadActionEnabled(true);
4243                 }
4244         }
4245         if (__pFindWordEditField != null)
4246         {
4247                 __currentSearchStr = __pFindWordEditField->GetText();
4248                 __pFindWordNext->SetEnabled(false);
4249                 __pFindWordPrev->SetEnabled(false);
4250                 __pFindWordNext->Invalidate(true);
4251                 __pFindWordPrev->Invalidate(true);
4252                 __pFindWordCountLabel->SetText(L"0/0");
4253                 __pFindWordCountLabel->Invalidate(true);
4254         }
4255         AppLog("__currentSearchStr %ls",__currentSearchStr.GetPointer());
4256         if (__currentSearchStr.GetLength() > 0)
4257         {
4258                 StartWordSearch();
4259         }
4260         else
4261         {
4262                 __currentSearchStr = L"aaaaaaaabbbbbbbccccccc";
4263                 StartWordSearch();
4264                 __currentSearchStr = L"";
4265                 AppLogDebug("Enter something");
4266         }
4267 }
4268
4269 result
4270 MainForm::InitMostVisitedSitesPanel(Tizen::Ui::OrientationStatus orientationStatus)
4271 {
4272         return E_SUCCESS;
4273
4274 }
4275
4276 result
4277 MainForm::InitMostVisitedSitesView(Tizen::Ui::OrientationStatus orientationStatus)
4278 {
4279         if(__pWebViewer != null)
4280                 return E_SUCCESS;
4281
4282         AppLog("MainForm::InitMostVisitedSitesView");
4283         result r = E_SUCCESS;
4284
4285
4286         if (__pWebViewer != null && __pMostVisitedListView != null)
4287         {
4288                 return E_SUCCESS;
4289         }
4290
4291         if (__pMostVisitedListView != null)
4292         {
4293                 RemoveControl(*__pMostVisitedListView);
4294         }
4295         if(__pMostVisitedSites != null)
4296         {
4297                 __pMostVisitedSites->RemoveAll(true);
4298         }
4299
4300         HistoryPresentationModel::GetInstance()->GetMostVisitedSites(*__pMostVisitedSites);
4301
4302         __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight();
4303         __pMostVisitedListView = new(std::nothrow) ListView();
4304
4305         int height = GetClientAreaBounds().height;
4306
4307         if(__pFooterPanel->GetShowState() == true)
4308         {
4309                 height = height - __pFooterPanel->GetHeight();
4310         }
4311         if(__pAddressbar->GetShowState() == true)
4312         {
4313                 height -= __pAddressbar->GetHeight();
4314         }
4315
4316         r = __pMostVisitedListView->Construct(Tizen::Graphics::Rectangle(0,0 , GetClientAreaBounds().width, height),true,false);
4317
4318         if (r != E_SUCCESS)
4319         {
4320                 delete __pMostVisitedListView;
4321                 AppLogDebug("Addressbar init failed with %s", GetErrorMessage(r));
4322                 return r;
4323         }
4324         __pMostVisitedListView->SetItemProvider(*this);
4325         __pMostVisitedListView->AddListViewItemEventListener(*this);
4326         __pMostVisitedListView->SetTextOfEmptyList(CommonUtil::GetString(L"IDS_BR_BODY_NO_RECENTLY_VISITED_SITES"));
4327         AddControl(*__pMostVisitedListView);
4328         __pMostVisitedListView->UpdateList();
4329
4330         return E_SUCCESS;
4331
4332 }
4333
4334 String
4335 MainForm::GetImagePath(void)
4336 {
4337
4338         String str;
4339         String formattedTime;
4340         DateTime currentTime;
4341         LocaleManager localManager;
4342         SystemTime::GetCurrentTime(TIME_MODE_WALL, currentTime);
4343
4344         localManager.Construct();
4345         Locale locale = localManager.GetSystemLocale();
4346         //Locale locale(LANGUAGE_ENG, COUNTRY_US);
4347
4348         // Get date formatter
4349         DateTimeFormatter* pTimeFormatter = DateTimeFormatter::CreateDateTimeFormatterN(locale, DATE_TIME_STYLE_DEFAULT);
4350
4351         if (pTimeFormatter)
4352         {
4353                 pTimeFormatter->Format(currentTime, formattedTime);
4354         }
4355
4356         AppLog("current time stamp is %ls", formattedTime.GetPointer());
4357         String delim(L" :");
4358         StringTokenizer strTok(formattedTime, delim);
4359         String token;
4360         String imageName;
4361         String str1("GMT+00");
4362         while (strTok.HasMoreTokens())
4363         {
4364                 strTok.GetNextToken(token); // Osp, StringTokenizer, Sample, code
4365                 if(token.Equals(str1))
4366                         break;
4367                 AppLog("token is %ls", token.GetPointer());
4368                 imageName.Append(token);
4369         }
4370         return imageName;
4371
4372 }
4373
4374 void MainForm::UpdateImageContent(ByteBuffer* aBuffer, String imageName)
4375 {
4376         result r = E_FAILURE;
4377         AppLog("Content manager 1");
4378         ContentId contentId;
4379         ContentManager contentManager;
4380         r = contentManager.Construct();
4381         if(IsFailed(r))
4382         {
4383                 AppLog("Content manager update content result %s" ,GetErrorMessage(r));
4384                 return;
4385         }
4386         Tizen::Base::String contentPath = Tizen::System::Environment::GetMediaPath() + L"Downloads/";
4387         contentPath.Append(imageName);
4388         contentPath.Append(".jpg");
4389         contentId = contentManager.CreateContent(*aBuffer, contentPath);
4390         AppLog("Content manager update content result %s" ,GetErrorMessage(GetLastResult()));
4391 }
4392
4393 void
4394 MainForm::SetForwardButtonEnabled(bool isEnabled)
4395 {
4396         __pGoForwardBtn->SetEnabled(isEnabled);
4397         __pGoBackBtn->Invalidate(true);
4398 }
4399
4400 void
4401 MainForm::SetBackButtonEnabled(bool isEnabled)
4402 {
4403         __pGoBackBtn->SetEnabled(isEnabled);
4404         __pGoBackBtn->Invalidate(true);
4405 }
4406
4407 void
4408 MainForm::UpdateProgress(int percentage)
4409 {
4410         __progressPercentage = percentage;
4411         if (percentage == 0 || percentage == 100)
4412         {
4413                 __isLoadingData = false;
4414                 if (percentage == 100)
4415                 {
4416                         __isLoadingCompleted = true;
4417                         __progressPercentage = 0;
4418                 }
4419                 else
4420                 {
4421                         __isLoadingCompleted = false;
4422                 }
4423         }
4424         else
4425         {
4426                 __isLoadingData = true;
4427         }
4428         UpdateProgressBitmap();
4429 }
4430
4431 int
4432 MainForm::GetProgress(void)
4433 {
4434         return __progressPercentage;
4435 }
4436
4437 void
4438 MainForm::UpdateProgressBitmap(void)
4439 {
4440         result r = E_SUCCESS;
4441         if (__pProgressbarLabel == null)
4442                 return;
4443         int w = __pProgressbarLabel->GetWidth();
4444         int h = __pProgressbarLabel->GetHeight();
4445         Canvas canvas;
4446         int progressWidth = 0;
4447         Bitmap* pRetBitmap = null;
4448
4449         if (__progressPercentage == 0 || __progressPercentage == 100)
4450         {
4451                 __pProgressbarLabel->SetShowState(false);
4452                 __pProgressbarLabel->Invalidate(false);
4453                 return;
4454         }
4455         else
4456         {
4457                 __pProgressbarLabel->SetShowState(true);
4458                 __pProgressbarLabel->Invalidate(false);
4459         }
4460
4461         r = canvas.Construct(Rectangle(0, 0, w, h));
4462
4463         if (r != E_SUCCESS)
4464         {
4465                 AppLogException("Canvas construction failed with %s", GetErrorMessage(r));
4466                 return;
4467         }
4468
4469         canvas.Clear();
4470         Bitmap *pBgBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR_BG);
4471
4472         if (pBgBmp != null)
4473         {
4474                 pBgBmp->Scale(Dimension(w, h));
4475                 canvas.DrawBitmap(Point(0,0), *pBgBmp);
4476                 delete pBgBmp;
4477         }
4478
4479         progressWidth = (double) (w) * __progressPercentage / 100;
4480         AppLogDebug("progressWidth: %d", progressWidth);
4481         Bitmap *pProgressBmp = AppResource::GetInstance()->GetBitmapN(IDB_TITLE_PROGRESS_BAR);
4482
4483         if (pProgressBmp != null)
4484         {
4485                 pProgressBmp->Scale(Dimension(progressWidth, h));
4486                 canvas.DrawBitmap(Point(0,0), *pProgressBmp);
4487                 delete pProgressBmp;
4488         }
4489
4490         pRetBitmap = new (std::nothrow) Bitmap();
4491
4492         if (pRetBitmap == null)
4493         {
4494                 AppLogException("Bitmap creation failed with %s", GetErrorMessage(r));
4495                 return;
4496         }
4497
4498         pRetBitmap->Construct(canvas, canvas.GetBounds());
4499
4500         if (__pProgressbarLabel != null && pRetBitmap != null)
4501         {
4502                 __pProgressbarLabel->SetBackgroundBitmap(*pRetBitmap);
4503                 __pProgressbarLabel->Invalidate(false);
4504         }
4505
4506         if (pRetBitmap != null)
4507         {
4508                 delete pRetBitmap;
4509                 pRetBitmap = null;
4510         }
4511         return;
4512 }
4513
4514 void MainForm::SetAddressbarMode(AddressBarMode addMode)
4515 {
4516         AppLogDebug("AddressBar::setAddressbarMode to %d",addMode);
4517
4518         __currentAddMode = addMode;
4519
4520         switch(addMode)
4521         {
4522         case ADDRESSBAR_MODE_INVALID:
4523         {
4524                 // do nothing
4525         }
4526         break;
4527         case ADDRESSBAR_MODE_READER:
4528         {
4529                 __pStopBtn->SetShowState(false);
4530                 __pClearBtn->SetShowState(false);
4531         }
4532         break;
4533         case ADDRESSBAR_MODE_LOADING:
4534         {
4535                 __pRefreshBtn->SetShowState(false);
4536                 __pStopBtn->SetShowState(true);
4537                 __pClearBtn->SetShowState(false);
4538         }
4539         break;
4540         case ADDRESSBAR_MODE_LOADING_COMPLETE:
4541         {
4542 //              SetUrl(__pAddressbar->GetUrl());
4543
4544                 __pRefreshBtn->SetShowState(true);
4545                 __pStopBtn->SetShowState(false);
4546                 __pClearBtn->SetShowState(false);
4547         }
4548         break;
4549         case ADDRESSBAR_MODE_EDIT:
4550         {
4551                 __pRefreshBtn->SetShowState(false);
4552                 __pStopBtn->SetShowState(false);
4553                 __pClearBtn->SetShowState(true);
4554         }
4555         break;
4556         }
4557
4558         Invalidate(true);
4559
4560         OnAddressBarModeChanged();
4561 }
4562
4563 AddressBarMode MainForm::GetAddressbarMode(void)
4564 {
4565         return __currentAddMode;
4566 }
4567
4568 void MainForm::SetUrl(const String& url)
4569 {
4570         __displayUrl = url;
4571
4572         if (__pFooterUrlField != NULL)
4573         {
4574                 String removedHttpUrl = RemoveHttpTextFromDisplayURL();
4575                 if (removedHttpUrl.IsEmpty() == false)
4576                 {
4577                         __pFooterUrlField->SetText(removedHttpUrl);
4578                         __pAddressbar->SetUrl(__displayUrl);
4579                 }
4580                 else
4581                 {
4582                         __pFooterUrlField->SetText(__displayUrl);
4583                         __pAddressbar->SetUrl(__displayUrl);
4584                 }
4585                 if(__pFooterUrlField)
4586                         __pFooterUrlField->SetCursorPosition(__pFooterUrlField->GetTextLength());
4587                 __pFooterUrlField->Invalidate(false);
4588                 __pAddressbar->Invalidate(true);
4589 //              __pFooterUrlField->SetCursorPosition(0);
4590         }
4591 }
4592
4593 String
4594 MainForm::RemoveHttpTextFromDisplayURL(void)
4595 {
4596         bool isHttpText = __displayUrl.Contains(L"http://");
4597         String updatedDisplayUrl;
4598         updatedDisplayUrl.Clear();
4599
4600         if (isHttpText == true)
4601         {
4602                 __displayUrl.SubString(7,updatedDisplayUrl);
4603         }
4604         return updatedDisplayUrl;
4605 }