Tizen 2.0 Release
[apps/osp/Internet.git] / src / IntBookmarkListForm.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 //!Internet
18 /*@file:    IntBookmarkListForm
19  *@brief:       This class defines BookmarkListForm
20  *
21  */
22
23 #include <FApp.h>
24 #include "IntBookmarkData.h"
25 #include "IntBookmarkListForm.h"
26 #include "IntBookmarkPresentationModel.h"
27 #include "IntCommonLib.h"
28 #include "IntConfirmationPopup.h"
29 #include "IntFaviconManager.h"
30 #include "IntMultipleWindowPresentationModel.h"
31 #include "IntSceneRegister.h"
32 #include "IntTypes.h"
33
34
35 using namespace Tizen::App;
36 using namespace Tizen::Base;
37 using namespace Tizen::Base::Collection;
38 using namespace Tizen::Base::Runtime;
39 using namespace Tizen::Graphics;
40 using namespace Tizen::Ui;
41 using namespace Tizen::Ui::Controls;
42 using namespace Tizen::Ui::Scenes;
43
44 const wchar_t* DEFAULT_VALUE_PARENTID = L"-1";
45 static const wchar_t* IDB_TAB_ICON_BOOKMARK = L"I01_tab_icon_bookmarks.png";
46 static const wchar_t* IDB_TAB_ICON_HISTORY = L"I01_tab_icon_history.png";
47 static const wchar_t* IDB_NO_CONTENT_BOOKMARK = L"I01_Nocontents_Bookmarks.png";
48 static const wchar_t* IDB_ICON_FOLDER_OPEN = L"I01_icon_folder_open.png";
49
50 const int BookmarkListForm::IDA_TABBAR_ITEM_1 = 101;
51 const int BookmarkListForm::IDA_TABBAR_ITEM_2 = 102;
52 const int BookmarkListForm::IDA_FOOTER_ITEM1 = 103;
53 const int BookmarkListForm::IDA_FOOTER_ITEM2 = 104;
54 const int BookmarkListForm::IDA_FOOTER_ITEM_ADDBOOKMARK = 105;
55 const int BookmarkListForm::IDA_FORMAT_FOLDER = 106;
56 const int BookmarkListForm::IDA_FORMAT_SITE = 107;
57 const int BookmarkListForm::IDA_CONTEXT_ITEM_FOLDER_EDIT = 108;
58 const int BookmarkListForm::IDA_CONTEXT_ITEM_FOLDER_DELETE = 109;
59 const int BookmarkListForm::IDA_CONTEXT_ITEM_EDIT = 110;
60 const int BookmarkListForm::IDA_CONTEXT_ITEM_SHARE = 111;
61 const int BookmarkListForm::IDA_CONTEXT_ITEM_DELETE = 112;
62 const int BookmarkListForm::IDA_FORMAT_ICON = 113;
63 const int BookmarkListForm::IDA_FORMAT_URL = 114;
64
65 //const int BookmarkListForm::IDA_CONFIRMATION_NO = 1000;
66 //const int BookmarkListForm::IDA_CONFIRMATION_YES = 1001;
67
68 BookmarkListForm::BookmarkListForm(void)
69 {
70         __pItemContextFolder = null ;
71         __pItemContextSite = null ;
72         __pListview = null;
73         __pData = null;
74         __pSearchListView = null;
75         __pSearchBar = null;
76         __searchBookmark = false;
77         __parentID = DEFAULT_VALUE_PARENTID;
78         __noBookmarks = true;
79         __selectedindex = 0;
80 }
81
82 BookmarkListForm::~BookmarkListForm(void)
83 {
84
85         if (__pData != null)
86         {
87                 __pData->RemoveAll(true);
88                 delete __pData;
89                 __pData = NULL;
90         }
91
92         if (__pItemContextFolder != null)
93         {
94                 delete __pItemContextFolder;
95         }
96
97         if (__pItemContextSite != null)
98         {
99                 delete __pItemContextSite;
100         }
101 }
102
103 result
104 BookmarkListForm::OnTerminating(void)
105 {
106         result r = E_SUCCESS;
107
108         if (__pData != null)
109         {
110                 __pData->RemoveAll(true);
111                 delete __pData;
112                 __pData = NULL;
113         }
114
115         return r;
116 }
117
118
119 bool
120 BookmarkListForm::Initialize(void)
121 {
122         Construct(L"IDL_BOOKMARK_LIST");
123         return true;
124 }
125
126 result
127 BookmarkListForm::OnInitializing(void)
128 {
129         result r = E_SUCCESS;
130         HeaderItem bookmark;
131         HeaderItem history;
132         Bitmap *pBitmapNormal = null;
133         Bitmap *pBitmapPressed = null;
134         Header *pHeader = GetHeader();
135         Bitmap *pIconBitmap = null;
136         AppResource* pAppResource = UiApp::GetInstance()->GetAppResource();
137         int bookmarkCount = 0;
138         const int WIDTH_CONTEXT_MENU_TWO_BUTTON = 336;
139         const int WIDTH_CONTEXT_MENU_THREE_BUTTON = 160;
140         const int HEIGHT_CONTEXT_MENU_BUTTON = 72;
141
142         // Setup back event listener
143         SetFormBackEventListener(this);
144         AddOrientationEventListener(*this);
145
146         SceneManager::GetInstance()->AddSceneEventListener(IDSCN_BOOKMARK_VIEW, *this);
147         GetHeader()->AddActionEventListener(*this);
148         GetFooter()->AddActionEventListener(*this);
149
150         if ( pAppResource == NULL )
151         {
152                 return E_FAILURE;
153         }
154
155         __pItemContextFolder = new(std::nothrow) ListContextItem();
156         __pItemContextFolder->Construct();
157         __pItemContextFolder->AddElement(IDA_CONTEXT_ITEM_FOLDER_EDIT, CommonUtil::GetString(L"IDS_BR_SK_EDIT"));
158         pBitmapNormal = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete.9.png", WIDTH_CONTEXT_MENU_TWO_BUTTON, HEIGHT_CONTEXT_MENU_BUTTON);
159         pBitmapPressed = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete_press.9.png", WIDTH_CONTEXT_MENU_TWO_BUTTON, HEIGHT_CONTEXT_MENU_BUTTON);
160
161         if (pBitmapNormal != null && pBitmapPressed != null)
162         {
163                 __pItemContextFolder->AddElement(IDA_CONTEXT_ITEM_FOLDER_DELETE, CommonUtil::GetString(L"IDS_BR_SK_DELETE_ABB"),  *pBitmapNormal, *pBitmapPressed, pBitmapPressed);
164         }
165
166         if (pBitmapNormal != null)
167         {
168                 delete pBitmapNormal;
169         }
170
171         if (pBitmapPressed != null)
172         {
173                 delete pBitmapPressed;
174         }
175
176         __pItemContextSite = new(std::nothrow) ListContextItem();
177         __pItemContextSite->Construct();
178         __pItemContextSite->AddElement(IDA_CONTEXT_ITEM_EDIT, CommonUtil::GetString(L"IDS_BR_SK_EDIT"));
179         __pItemContextSite->AddElement(IDA_CONTEXT_ITEM_SHARE, CommonUtil::GetString(L"IDS_BR_OPT_SHARE"));
180         pBitmapNormal = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete.9.png", WIDTH_CONTEXT_MENU_THREE_BUTTON, HEIGHT_CONTEXT_MENU_BUTTON);
181         pBitmapPressed = CommonUtil::GetNinepatchedBitmapN(L"00_button_sweep_delete_press.9.png", WIDTH_CONTEXT_MENU_THREE_BUTTON, HEIGHT_CONTEXT_MENU_BUTTON);
182
183         if (pBitmapNormal != null && pBitmapPressed != null)
184         {
185                 __pItemContextSite->AddElement(IDA_CONTEXT_ITEM_DELETE, CommonUtil::GetString(L"IDS_BR_SK_DELETE_ABB"), *pBitmapNormal, *pBitmapPressed, pBitmapPressed);
186         }
187
188         if (pBitmapNormal != null)
189         {
190                 delete pBitmapNormal;
191         }
192
193         if (pBitmapPressed != null)
194         {
195                 delete pBitmapPressed;
196         }
197         __pListview = static_cast< ListView* >(GetControl("IDC_LISTVIEW1"));
198
199         if (__pListview == null)
200         {
201                 return E_FAILURE;
202         }
203         __pSearchBar = static_cast< SearchBar* >(GetControl(L"IDC_SEARCHBAR1"));
204
205         if (__pSearchBar == null)
206         {
207                 return E_FAILURE;
208         }
209
210         if (__pListview != null)
211         {
212                 //              __pListview->SetBounds(__pListview->GetX(), __pListview->GetY(), GetClientAreaBounds().width, GetClientAreaBounds().height);
213                 __pListview->AddFastScrollListener(*this);
214                 __pListview->AddListViewItemEventListener(*this);
215                 __pListview->SetItemProvider(*this);
216                 __pListview->UpdateList();
217         }
218
219         __pPopUp = new(std::nothrow) SharePopup();
220
221         if (__pPopUp != null)
222         {
223                 __pPopUp->Initialize();
224                 AddControl(*__pPopUp);
225         }
226
227         __pSearchListView = new(std::nothrow) ListView();
228
229         if (__pSearchListView == null)
230         {
231                 return E_FAILURE;
232         }
233
234         r = __pSearchListView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height -72 - 30), true, false);
235         TryCatch( !IsFailed(r),,"BookmarkListForm::OnSearchBarModeChanged Update list failed %s",GetErrorMessage(r));
236
237         __pSearchListView->SetItemProvider(*this);
238         __pSearchListView->SetTextOfEmptyList(CommonUtil::GetString(L"IDS_BR_BODY_NO_RESULTS_FOUND"));
239         __pSearchListView->SetTextColorOfEmptyList(Color::GetColor(COLOR_ID_BLACK));
240         __pSearchListView->SetShowState(false);
241         __pSearchListView->AddListViewItemEventListener(*this);
242
243         __pSearchBar->AddSearchBarEventListener(*this);
244         __pSearchBar->AddKeypadEventListener(*this);
245         __pSearchBar->SetContent(__pSearchListView);
246
247         BookmarkPresentationModel::GetInstance()->GetFolderBookmarkCount(__parentID, bookmarkCount);
248         if(bookmarkCount <= 0)
249         {
250                 __pSearchBar->SetShowState(false);
251                 //__pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetY(),__pSearchBar->GetWidth(),GetClientAreaBounds().height - __pSearchBar->GetPosition().y);
252                 __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetY(),__pListview->GetWidth(),GetClientAreaBounds().height);
253         }
254         else
255         {
256                 __pSearchBar->SetShowState(true);
257         }
258
259
260         if (pHeader != null)
261         {
262                 pHeader->SetStyle(HEADER_STYLE_TAB);
263                 bookmark.Construct(IDA_TABBAR_ITEM_1);
264                 String strbookmark;
265                 pAppResource->GetString(L"IDS_BR_TAB_BOOKMARKS", strbookmark);
266                 bookmark.SetText(strbookmark);
267                 pIconBitmap = pAppResource->GetBitmapN(IDB_TAB_ICON_BOOKMARK);
268                 bookmark.SetIcon(HEADER_ITEM_STATUS_NORMAL, pIconBitmap);
269                 bookmark.SetIcon(HEADER_ITEM_STATUS_PRESSED, pIconBitmap);
270                 pHeader->AddItem(bookmark);
271
272                 if (pIconBitmap != NULL)
273                 {
274                         delete pIconBitmap;
275                 }
276
277                 history.Construct(IDA_TABBAR_ITEM_2);
278                 String strhistory;
279                 pAppResource->GetString(L"IDS_BR_TAB_HISTORY", strhistory);
280                 history.SetText(strhistory);
281                 pIconBitmap = pAppResource->GetBitmapN(IDB_TAB_ICON_HISTORY);
282                 history.SetIcon(HEADER_ITEM_STATUS_NORMAL, pIconBitmap);
283                 history.SetIcon(HEADER_ITEM_STATUS_PRESSED, pIconBitmap);
284                 pHeader->AddItem(history);
285                 pHeader->SetItemSelected(0);
286
287                 if (pIconBitmap != NULL)
288                 {
289                         delete pIconBitmap;
290                 }
291         }
292
293
294         CATCH:return r;
295 }
296
297 void
298 BookmarkListForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
299 {
300         AppLogDebug("BookmarkListForm::OnActionPerformed actionId = %d",actionId);
301         String bookmarkId;
302         int id = 0;
303         BookmarkData* pBookMark = null;
304
305         switch (actionId)
306         {
307         case IDA_FOOTER_ITEM1:
308         {
309                 GetHeader()->SetItemSelected(0);
310                 GetHeader()->Invalidate(true);
311                 SceneManager* pSceneManager = SceneManager::GetInstance();
312                 pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(__selectedindex));
313
314                 if ( pBookMark == NULL )
315                 {
316                         return;
317                 }
318
319                 ArrayList* pArgList = null;
320                 pArgList = new(std::nothrow) ArrayList();
321                 if (pArgList != null)
322                 {
323                         pArgList->Construct();
324                         pArgList->Add(*new(std::nothrow) String(pBookMark->GetParentId()));
325                 }
326                 //pArgList->Add(*new(std::nothrow) String(pBookmark->);
327                 if (pSceneManager != null)
328                 {
329                         if(pSceneManager->GoForward(ForwardSceneTransition(IDSCN_EDIT_BOOKMARK_LIST),pArgList) != E_SUCCESS)
330                         {
331                                 AppLogDebug("BookmarkListForm::OnActionPerformed GoForward failed");
332                                 pArgList->RemoveAll(true);
333                                 delete pArgList;
334                                 pArgList = null;
335                                 return;
336                         }
337                 }
338
339                 if ( pArgList != NULL)
340                 {
341                         pArgList->RemoveAll(true);
342                         delete pArgList;
343                 }
344         }
345
346         break;
347         case IDA_TABBAR_ITEM_2:
348         {
349                 GetHeader()->SetItemSelected(0);
350                 GetHeader()->Invalidate(true);
351
352                 SceneManager* pSceneManager = SceneManager::GetInstance();
353
354                 if (pSceneManager != null)
355                 {
356                         if(pSceneManager->GoForward(ForwardSceneTransition(IDSCN_HISTORY_LIST, SCENE_TRANSITION_ANIMATION_TYPE_LEFT)) != E_SUCCESS)
357                         {
358                                 AppLogDebug("BookmarkListForm::OnActionPerformed GoForward failed");
359                                 return;
360                         }
361                 }
362         }
363         break;
364         case IDA_FOOTER_ITEM2:
365         {
366                 SceneManager* pSceneManager = SceneManager::GetInstance();
367
368                 if (pSceneManager)
369                 {
370                         if(pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CREATE_BOOKMARK_FOLDER)) != E_SUCCESS)
371                         {
372                                 AppLogDebug("BookmarkListForm::OnActionPerformed GoForward failed");
373                                 return;
374                         }
375                 }
376         }
377         break;
378         case IDA_FOOTER_ITEM_ADDBOOKMARK:
379         {
380                 SceneManager* pSceneManager = SceneManager::GetInstance();
381
382                 // send array list 0-for add, 1 for edit with parent ID
383                 ArrayList* pArgList = null;
384                 pArgList = new(std::nothrow) ArrayList();
385                 if (pArgList != null)
386                 {
387                         pArgList->Construct();
388                         pArgList->Add(*new(std::nothrow) String(L"0"));
389                         pArgList->Add(*new(std::nothrow) String(__parentID));
390                 }
391
392                 if (pSceneManager)
393                 {
394                         if(pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ADD_BOOKMARK),pArgList) != E_SUCCESS)
395                         {
396                                 AppLogDebug("BookmarkListForm::OnActionPerformed GoForward failed");
397                                 pArgList->RemoveAll(true);
398                                 delete pArgList;
399                                 return;
400                         }
401                 }
402
403                 if (pArgList != null)
404                 {
405                         pArgList->RemoveAll(true);
406                         delete pArgList;
407                 }
408
409         }
410         break;
411         case IDA_BUTTON_NO:
412                 __pConfirmationPopup->SetShowState(false);
413                 __pConfirmationPopup->Show();
414                 break;
415         case IDA_BUTTON_YES:
416                 pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(__selectedindex));
417                 if ( pBookMark== null)
418                         return;
419                 bookmarkId=pBookMark->GetBookmarkId();
420                 Integer::Parse(bookmarkId,id);
421                 if (pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
422                         BookmarkPresentationModel::GetInstance()->DeleteFolder(id);
423                 else
424                         BookmarkPresentationModel::GetInstance()->DeleteBookmark(id);
425                 if (__pListview == null)
426                 {
427                         return;
428                 }
429                 AppLogDebug("__pListview GetBounds %d,%d,%d,%d",__pListview->GetBounds().x,__pListview->GetBounds().y,__pListview->GetBounds().width,__pListview->GetBounds().height);
430                 __pSearchListView->UpdateList();
431                 __pListview->UpdateList();
432
433                 if (__pListview->GetItemCount() == 0)
434                 {
435                         GetFooter()->SetItemEnabled(1,false);
436                         __pSearchBar->SetShowState(false);
437                         __pSearchBar->Invalidate(true);
438                 }
439
440                 if (__noBookmarks == true)
441                 {
442                         Bitmap* emptyListBmp = AppResource::GetInstance()->GetBitmapN(IDB_NO_CONTENT_BOOKMARK);
443                         GetFooter()->SetItemEnabled(1,false);
444                         __pSearchBar->SetShowState(false);
445                         __pSearchBar->Invalidate(true);
446                         //                      __pListview->SetBounds(__pSearchBar->GetPosition().x,__pSearchBar->GetPosition().y,__pSearchBar->GetWidth() ,GetClientAreaBounds().height);
447                         __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetPosition().y,__pSearchBar->GetWidth() ,GetClientAreaBounds().height);
448                         __pListview->SetBitmapOfEmptyList(emptyListBmp);
449                         if (emptyListBmp)
450                         {
451                                 delete emptyListBmp;
452                                 emptyListBmp = null;
453                         }
454                         __pListview->UpdateList();
455
456                 }
457                 else
458                 {
459                         GetFooter()->SetItemEnabled(1,true);
460
461                         if (__parentID.CompareTo(L"-1") == 0)
462                         {
463                                 __pSearchBar->SetShowState(true);
464                                 __pSearchBar->Invalidate(true);
465                         }
466                 }
467
468                 GetFooter()->Invalidate(true);
469                 __pConfirmationPopup->SetShowState(false);
470                 __pConfirmationPopup->Show();
471
472                 break;
473         default:
474                 break;
475         }
476 }
477
478 void
479 BookmarkListForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
480 {
481         AppLogDebug("BrowserApplicationForm::OnFormBackRequested");
482
483         UiApp* pApp = UiApp::GetInstance();
484         if      (pApp == null)
485         {
486                 return;
487         }
488
489         if (__parentID != DEFAULT_VALUE_PARENTID)
490         {
491                 __parentID = DEFAULT_VALUE_PARENTID;
492                 __pSearchBar->SetShowState(true);
493                 __pListview->SetBounds(__pListview->GetX() ,__pSearchBar->GetPosition().y + __pSearchBar->GetHeight(),__pListview->GetWidth(),GetClientAreaBounds().height - (__pSearchBar->GetY() + __pSearchBar->GetHeight()));
494                 __pListview->UpdateList();
495                 __pFooter = GetFooter();
496                 GetFooter()->SetItemEnabled(2,true);
497                 GetFooter()->Invalidate(true);
498         }
499         else
500         {
501                 SceneManager* pSceneManager = SceneManager::GetInstance();
502                 if (pSceneManager != null)
503                 {
504                         pSceneManager->GoBackward(BackwardSceneTransition());
505                 }
506         }
507
508         if (__noBookmarks == true)
509         {
510                 GetFooter()->SetItemEnabled(1,false);
511         }
512         else
513         {
514                 GetFooter()->SetItemEnabled(1,true);
515         }
516 }
517
518 Tizen::Ui::Controls::ListItemBase*
519 BookmarkListForm::CreateItem(int index, int itemWidth)
520 {
521         AppLog("BookmarkListForm::CreateItem index %d , itemWidth %d",index, itemWidth);
522         AppLog("listviewwidth %d",__pListview->GetWidth());
523         result r = E_FAILURE;
524         ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
525         CustomItem* pItem = new(std::nothrow) CustomItem();
526         BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
527         Bitmap* pBitmap = null;
528
529         const int x_Margin_Icon = 16;                 // local as there used only in this function
530         const int y_Margin_Icon = 28;
531         const int height_Icon = 72;
532         const int width_Icon = 72 ;
533         const int x_Margin_Title = 104 ;
534         const int y_Margin_Title = 10;
535         const int width_Title = GetClientAreaBounds().width - 108 - 52 - 30;
536         const int x_Margin_Url = 104 ;
537         const int y_Margin_Url = 70 ;
538         const int width_Url = GetClientAreaBounds().width - 108 - 52 ;
539         const int height_Url = 48;
540         const int itemHeight = 128;
541         const int textSize = 32;
542         String bitmapId;
543
544         if( pBookMark == NULL )
545         {
546                 delete pItem;
547                 pItem = null;
548                 return NULL;
549         }
550         if ( pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER )
551         {
552                 r = pItem->Construct(Tizen::Graphics::Dimension(itemWidth,112), LIST_ANNEX_STYLE_DETAILED);
553                 TryCatch(!IsFailed(r),,"BookmarkListForm::CreateItem Construct failed %s",GetErrorMessage(r));
554
555                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_FOLDER_OPEN);
556                 if (pBitmap != null)
557                 {
558                         pItem->AddElement(Rectangle(x_Margin_Icon, 20, width_Icon, height_Icon), IDA_FORMAT_ICON, *pBitmap, null);
559                         delete pBitmap;
560                 }
561
562                 pItem->AddElement(Rectangle(x_Margin_Title, 26, width_Title, 60), IDA_FORMAT_FOLDER, pBookMark->GetBookmarkTitle(), true);
563
564                 if ( __pItemContextFolder != NULL)
565                 {
566                         pItem->SetContextItem(__pItemContextFolder);
567                 }
568         }
569         else
570         {
571                 r = pItem->Construct(Tizen::Graphics::Dimension(itemWidth, itemHeight), style);
572                 TryCatch( !IsFailed(r),,"BookmarkListForm::CreateItem Construct failed %s",GetErrorMessage(r));
573
574                 AppLogDebug("BookmarkListForm::faviconid %ls",pBookMark->GetFaviconId().GetPointer());
575                 bitmapId = pBookMark->GetFaviconId();
576
577                 pBitmap = FaviconManager::GetInstance()->GetFaviconN(bitmapId);
578                 if (pBitmap == null)
579                 {
580                         AppLogDebug("BookmarkListForm::CreateItem bitmap is null");
581                         pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN();
582                 }
583                 pItem->AddElement(Rectangle(x_Margin_Icon, y_Margin_Icon, width_Icon, height_Icon), IDA_FORMAT_ICON, *pBitmap, null);
584                 pItem->AddElement(Rectangle(x_Margin_Title, 0, width_Title, itemHeight - height_Url), IDA_FORMAT_SITE, pBookMark->GetBookmarkTitle(),44,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);
585                 if(__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
586                         pItem->AddElement(Rectangle(x_Margin_Url, y_Margin_Url, width_Url, height_Url), IDA_FORMAT_URL, pBookMark->GetUrl(),textSize,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);
587                 else
588                         pItem->AddElement(Rectangle(x_Margin_Url, y_Margin_Url, width_Url, height_Url), IDA_FORMAT_URL, pBookMark->GetUrl(),textSize,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,true);
589
590                 if (pBitmap != null)
591                 {
592                         delete pBitmap;
593                 }
594                 if ( __pItemContextSite != NULL)
595                 {
596                         pItem->SetContextItem(__pItemContextSite);
597                 }
598         }
599
600         return pItem;
601
602         CATCH:
603         delete pItem;
604         pItem = null;
605         return null;
606
607 }
608
609 bool
610 BookmarkListForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
611 {
612         delete pItem;
613         pItem = null;
614         return true;
615 }
616
617 int
618 BookmarkListForm::GetItemCount(void)
619 {
620         int count = 0;
621
622         if (__pData != NULL )
623         {
624                 __pData->RemoveAll(true);
625                 delete __pData;
626                 __pData = null;
627         }
628         __pData = new(std::nothrow) Collection::ArrayList();
629         __pData->Construct();
630
631         if (__searchBookmark == false)
632         {
633                 BookmarkPresentationModel::GetInstance()->GetFolderBookmarkCount(__parentID, count);
634                 BookmarkPresentationModel::GetInstance()->GetFoldersBookmarks(__parentID, 0, count, *__pData);
635         }
636         else
637         {
638                 String searchBarText = __pSearchBar->GetText();
639                 BookmarkPresentationModel::GetInstance()->GetSearchFolderBookmarkCount(count,searchBarText);
640                 BookmarkPresentationModel::GetInstance()->GetSearchFoldersBookmarks(0, count, *__pData, searchBarText);
641         }
642
643         AppLogDebug("Count = %d parentId = %ls", count, __parentID.GetPointer());
644
645         if (count <= 0)
646         {
647                 __noBookmarks = true;
648                 GetFooter()->SetItemEnabled(1,false);
649         }
650         else
651         {
652                 __noBookmarks = false;
653                 GetFooter()->SetItemEnabled(1,true);
654         }
655
656         AppLogDebug("Result: %s", GetErrorMessage(GetLastResult()));
657         GetFooter()->Invalidate(true);
658         if (__pData != null && __pData->GetCount() >= 1)
659         {
660                 //              __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
661                 __pSearchBar->SetShowState(true);
662                 __pSearchBar->Invalidate(true);
663         }
664         else if (__searchBookmark == false)
665         {
666                 __pSearchBar->SetShowState(false);
667                 __pSearchBar->Invalidate(true);
668         }
669
670         if (__parentID.CompareTo(L"-1") != 0)
671         {
672                 __pSearchBar->SetShowState(false);
673                 __pSearchBar->Invalidate(true);
674         }
675         if (__noBookmarks == true)
676         {
677                 __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetPosition().y,__pSearchBar->GetWidth() ,GetClientAreaBounds().height);
678                 Bitmap* pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_NO_CONTENT_BOOKMARK);
679
680                 if ( pBitmap != NULL)
681                 {
682                         __pListview->SetBitmapOfEmptyList(pBitmap);
683                         delete pBitmap;
684                 }
685         }
686         else
687         {
688                 if (__parentID.CompareTo(L"-1") == 0)
689                 {
690                         __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetHeight(),GetClientAreaBounds().width ,GetClientAreaBounds().height - __pSearchBar->GetY() - __pSearchBar->GetHeight());
691                 }
692                 else
693                 {
694                         __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetY(),__pSearchBar->GetWidth() ,GetClientAreaBounds().height);
695
696                 }
697
698         }
699         __pListview->Invalidate(true);
700         return count;
701
702 }
703
704 void
705 BookmarkListForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
706 {
707         AppLogDebug("BookmarkListForm::OnListViewContextItemStateChanged int index %d, int elementId %d, Tizen::Ui::Controls::ListContextItemStatus status %d",index,elementId,status);
708
709         String deleteText = CommonUtil::GetString(L"IDS_BR_SK_DELETE_ABB");
710         deleteText.Append(L"? ");
711         int timeOut = 25000;
712         result r = E_SUCCESS;
713
714         switch(elementId)
715         {
716         case IDA_CONTEXT_ITEM_FOLDER_EDIT:
717         {
718                 ArrayList* pArgList = null;
719                 String* pEdit = null;
720
721                 SceneManager* pSceneManager = SceneManager::GetInstance();
722                 BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
723                 if (pBookMark != null && pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
724                 {
725                         pArgList = new(std::nothrow) ArrayList();
726                         if (pArgList != null)
727                         {
728                                 pEdit= new(std::nothrow) String(CommonUtil::GetString(L"IDS_BR_HEADER_EDIT_FOLDER"));
729                                 pArgList->Construct();
730                                 pArgList->Add(*new(std::nothrow) BookmarkData(*pBookMark));
731                                 pArgList->Add(*pEdit);
732                                 if (    pSceneManager != null)
733                                 {
734                                         result r;
735                                         r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CREATE_BOOKMARK_FOLDER), pArgList);
736                                 }
737
738                                 if (pArgList != null)
739                                 {
740                                         delete pArgList;
741                                         pArgList = null;
742                                 }
743                                 if(IsFailed(r))
744                                 {
745                                         AppLogDebug("BookmarkListForm::OnListViewContextItemStateChanged GoForward failed %s",GetErrorMessage(r));
746                                         return;
747                                 }
748                         }
749                 }
750
751         }
752         break;
753
754         case IDA_CONTEXT_ITEM_FOLDER_DELETE:
755         case IDA_CONTEXT_ITEM_DELETE:
756         {
757                 __pConfirmationPopup = new(std::nothrow) ConfirmationPopup();
758                 __pConfirmationPopup->Initialize();
759                 __pConfirmationPopup->RemoveActionListener(*this);
760                 __pConfirmationPopup->AddActionListener(*this);
761                 __pConfirmationPopup->setMessage(deleteText);
762                 __pConfirmationPopup->Show();
763                 __selectedindex = index;
764         }
765         break;
766
767         case IDA_CONTEXT_ITEM_EDIT:
768         {
769                 ArrayList* pArgList = null;
770                 SceneManager* pSceneManager = SceneManager::GetInstance();
771                 BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
772                 if (pBookMark!= null && pBookMark->GetBookmarkType() == BOOKMARK_TYPE_URL)
773                 {
774                         AppLogDebug("ID_CONTEXT_ITEM_SITE_1 BOOKMARK_TYPE_URL");
775                         pArgList = new(std::nothrow) ArrayList();
776                         if (pArgList != null)
777                         {
778                                 pArgList->Construct();
779                                 pArgList->Add(*new(std::nothrow) String(L"1"));
780                                 pArgList->Add(*new(std::nothrow) BookmarkData(*pBookMark));
781                                 if (    pSceneManager != null)
782                                 {
783                                         result r;
784                                         r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ADD_BOOKMARK), pArgList);
785                                         if (pArgList != null)
786                                         {
787                                                 delete pArgList;
788                                                 pArgList = null;
789                                         }
790                                         if(IsFailed(r))
791                                         {
792                                                 AppLogDebug("BookmarkListForm::OnListViewContextItemStateChanged GoForward failed %s",GetErrorMessage(r));
793                                                 return;
794                                         }
795                                 }
796                         }
797                 }
798         }
799         break;
800         case IDA_CONTEXT_ITEM_SHARE:
801         {
802                 AppLogDebug("OnListViewContextItemStateChanged Share");
803
804                 BookmarkData* pBookmark = dynamic_cast<BookmarkData*>(__pData->GetAt(index));
805                 if (pBookmark != null)
806                 {
807                         ShareInfo* pShareInfo = new(std::nothrow) ShareInfo();
808                         pShareInfo->SetPageTitle(pBookmark->GetBookmarkTitle());
809                         pShareInfo->SetPageUrl(pBookmark->GetUrl());
810                         pShareInfo->SetImageAttached(false);
811                         __pPopUp->RemoveAllShareInfo();
812                         __pPopUp->AddShareInfo(pShareInfo);
813                 }
814
815                 if (__pPopUp != null)
816                 {
817                         __pPopUp->SetShowState(true);
818                         __pPopUp->Show();
819                 }
820         }
821         break;
822         default:
823                 break;
824         }
825
826 }
827
828 void
829 BookmarkListForm::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
830 {
831
832 }
833
834 void
835 BookmarkListForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
836 {
837         AppLogDebug("BookmarkListForm::OnListViewItemStateChanged");
838
839         result r = E_FAILURE;
840         ArrayList *pArgList = null;
841         SceneManager* pSceneManager = SceneManager::GetInstance();
842         BookmarkData* pBookmark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
843
844         if ( pBookmark == NULL )
845         {
846                 return;
847         }
848
849         switch (pBookmark->GetBookmarkType())
850         {
851         case BOOKMARK_TYPE_FOLDER:
852
853                 __parentID = pBookmark->GetBookmarkId();
854                 AppLogDebug("BOOKMARK_TYPE_FOLDER parent ID is %ls",__parentID.GetPointer());
855
856                 listView.UpdateList();
857                 if (listView.GetItemCount() == 0)
858                 {
859                         GetFooter()->SetItemEnabled(1,false);
860                 }
861                 else
862                 {
863                         GetFooter()->SetItemEnabled(1,true);
864                 }
865                 GetFooter()->SetItemEnabled(2,false);
866                 GetFooter()->Invalidate(true);
867                 __pSearchBar->HideKeypad();
868                 __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
869                 __pSearchBar->SetShowState(false);
870                 __pSearchBar->Invalidate(true);
871                 __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetY(),__pListview->GetWidth() ,GetClientAreaBounds().height);
872                 break;
873
874         case BOOKMARK_TYPE_URL:
875
876                 pArgList = new(std::nothrow) ArrayList();
877                 if (pArgList != null)
878                 {
879                         r = pArgList->Construct();
880                         TryCatch(!IsFailed(r), L"BookmarkListForm::OnListViewItemStateChanged pArgList Construct failed %s", GetErrorMessage(r));
881
882                         AppLogDebug("bookmark url = %ls",pBookmark->GetUrl().GetPointer());
883                         r = pArgList->Add(*MultipleWindowPresentationModel::GetInstance()->GetActiveWindowInfo());
884                         pArgList->Add(*new(std::nothrow) String(pBookmark->GetUrl()));
885
886                         if (pSceneManager != null)
887                         {
888                                 AppLogDebug("pSceneManager exists");
889                                 String prevSceneId;
890                                 MultipleWindowPresentationModel::GetInstance()->GetCurrentSceneId(prevSceneId);
891                                 r = pSceneManager->GoBackward(BackwardSceneTransition(prevSceneId), pArgList);
892                                 TryCatch(!IsFailed(r), L"BookmarkListForm::OnListViewItemStateChanged pArgList Construct failed %s", GetErrorMessage(r));
893                         }
894                         delete pArgList;
895                 }
896                 break;
897
898         default:
899                 break;
900         }
901
902         return;
903         CATCH:
904         if(pArgList)
905         {
906                 pArgList->RemoveAll(true);
907                 delete pArgList;
908         }
909
910 }
911
912 void
913 BookmarkListForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
914 {
915
916
917 }
918
919 void
920 BookmarkListForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
921 {
922
923 }
924
925 void
926 BookmarkListForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
927 {
928         result r = E_FAILURE;
929         if (mode == SEARCH_BAR_MODE_NORMAL)
930         {
931                 __pSearchListView->SetShowState(false);
932                 __pListview->SetShowState(true);
933                 Invalidate(true);
934                 __searchBookmark = false;
935                 r = __pListview->UpdateList();
936                 TryCatch( !IsFailed(r),,"BookmarkListForm::OnSearchBarModeChanged Update list failed %s",GetErrorMessage(r));
937                 CATCH:return;
938         }
939         else
940         {
941                 __pSearchListView->SetShowState(true);
942                 __pSearchListView->SetEnabled(false);
943                 __pListview->SetShowState(false);
944                 if(__pSearchBar)
945                 {
946                         __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight()));
947                         __pSearchBar->SetText(L"");
948                 }
949                 r = __pListview->UpdateList();
950                 __pSearchListView->UpdateList();
951         }
952 }
953
954 void
955 BookmarkListForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
956 {
957         Footer* pFooter = GetFooter();
958         pFooter->SetShowState(false);
959         __pSearchListView->SetEnabled(false);
960 }
961
962 void
963 BookmarkListForm::OnKeypadOpened(Tizen::Ui::Control& source)
964 {
965
966 }
967
968 void
969 BookmarkListForm::OnKeypadClosed(Tizen::Ui::Control& source)
970 {
971         if ( Clipboard::GetInstance()->IsPopupVisible() == false && __searchBookmark == false)
972         {
973
974                 __pSearchListView->SetEnabled(true);
975         }
976         GetFooter()->SetShowState(true);
977         Invalidate(true);
978 }
979
980 void
981 BookmarkListForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
982 {
983         AppLog("BookmarkListForm::OnKeypadActionPerformed %d",keypadAction);
984         if (__pSearchBar != null)
985         {
986                 __pSearchBar->HideKeypad();
987         }
988
989         if ( __pSearchBar != null && keypadAction == KEYPAD_ACTION_SEARCH)
990         {
991                 if (__pSearchBar->GetText().GetLength() == 0)
992                 {
993                         return;
994                 }
995                 __searchBookmark = true;
996                 __pListview->SetShowState(false);
997                 __pSearchListView->SetEnabled(true);
998                 __pSearchListView->SetShowState(true);
999                 __pSearchListView->UpdateList();
1000
1001         }
1002         Invalidate(true);
1003 }
1004
1005 void
1006 BookmarkListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
1007 {
1008         AppLogDebug("BookmarkListForm::OnSceneActivatedN called");
1009
1010         __searchBookmark = false;
1011
1012         GetHeader()->SetItemSelected(0);
1013         GetHeader()->Invalidate(true);
1014
1015         /*      if (previousSceneId != IDSCN_HISTORY_LIST && previousSceneId != IDSCN_CREATE_BOOKMARK_FOLDER && previousSceneId != IDSCN_EDIT_BOOKMARK_LIST)
1016         {
1017                 __previousSceneId = previousSceneId;
1018         }*/
1019
1020         if (__pListview != null)
1021         {
1022                 __pListview->UpdateList();
1023         }
1024
1025         return;
1026 }
1027
1028 void
1029 BookmarkListForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
1030 {
1031         AppLog("BookmarkListForm::OnOrientationChanged start");
1032
1033         if (__pListview)
1034         {
1035                 if(__pSearchBar->GetShowState())
1036                 {
1037                         __pListview->SetBounds(__pListview->GetX(),__pSearchBar->GetHeight(),GetClientAreaBounds().width ,GetClientAreaBounds().height - __pSearchBar->GetY() - __pSearchBar->GetHeight());
1038                 }
1039                 else
1040                 {
1041                         __pListview->SetBounds(__pListview->GetX(),0,GetClientAreaBounds().width ,GetClientAreaBounds().height);
1042                 }
1043                 __pListview->UpdateList();
1044         }
1045
1046         if (__pSearchListView && __pListview)
1047         {
1048                 AppLog("__pListview->GetBounds() %d, %d, %d, %d",__pListview->GetBounds().x,__pListview->GetBounds().y,__pListview->GetBounds().width,__pListview->GetBounds().height);
1049                 __pSearchListView->SetBounds(0,0,GetClientAreaBounds().width,GetClientAreaBounds().height -__pSearchBar->GetHeight());
1050
1051                 if( __searchBookmark == false)
1052                 {
1053                         __pSearchListView->UpdateList();
1054                 }
1055
1056         }
1057
1058         if (__pSearchListView && __pData != null )
1059         {
1060                 if (__parentID != DEFAULT_VALUE_PARENTID)
1061                 {
1062                         AppLog("BookmarkListForm::OnOrientationChanged parent id true");
1063                         __pSearchBar->SetShowState(false);
1064                         __pSearchBar->Invalidate(true);
1065                 }
1066                 else
1067                 {
1068                         AppLog("BookmarkListForm::OnOrientationChanged parent id false1");
1069                         if(__pSearchBar->GetShowState() == false)
1070                         {
1071                                 AppLog("BookmarkListForm::OnOrientationChanged parent id false2");
1072                                 __pSearchBar->SetShowState(true);
1073                                 __pSearchBar->Invalidate(true);
1074                         }
1075                 }
1076                 __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight()));
1077         }
1078
1079
1080         Invalidate(true);
1081 }
1082
1083 void
1084 BookmarkListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
1085 {
1086         if (__pData != null)
1087         {
1088                 __pData->RemoveAll(true);
1089                 delete __pData;
1090                 __pData = null;
1091         }
1092         __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
1093         return;
1094 }
1095