Fixed Nabi Issues
[apps/osp/Internet.git] / src / IntEditBookmarkListForm.cpp
1 //
2
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.1 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 //!Internet
19 /*@file:    EditBookmarkListForm
20  *@brief:       This class defines EditBookmarkListForm used to edit the bookmark
21  *
22  */
23
24 #include <FAppUiApp.h>
25 #include <FUi.h>
26
27 #include "IntBookmarkData.h"
28 #include "IntBookmarkPresentationModel.h"
29 #include "IntCommonLib.h"
30 #include "IntEditBookmarkListForm.h"
31 #include "IntFaviconManager.h"
32 #include "IntNotificationPanel.h"
33 #include "IntSceneRegister.h"
34 #include "IntTypes.h"
35
36 using namespace Tizen::App;
37 using namespace Tizen::Base;
38 using namespace Tizen::Base::Collection;
39 using namespace Tizen::Base::Runtime;
40 using namespace Tizen::Graphics;
41 using namespace Tizen::Ui;
42 using namespace Tizen::Ui::Controls;
43 using namespace Tizen::Ui::Scenes;
44
45 static const wchar_t* IDB_ICON_FOLDER_OPEN = L"I01_icon_folder_open.png";
46 static const wchar_t* IDB_ITEM = L"edit_item.png";
47 static const wchar_t* IDB_RIGHT_ARROW = L"I01_right_arrow.png";
48
49
50 const int EditBookmarkListForm::IDA_BUTTON_CHECKED = 101;
51 const int EditBookmarkListForm::IDA_TABBAR_ITEM_1 = 102;
52 const int EditBookmarkListForm::IDA_TABBAR_ITEM_2 = 103;
53 const int EditBookmarkListForm::IDA_DELETEITEM_CLICKED = 104;
54 const int EditBookmarkListForm::IDA_SHAREITEM_CLICKED = 105;
55 const int EditBookmarkListForm::IDA_CANCELITEM_CLICKED = 106;
56 const int EditBookmarkListForm::IDA_FORMAT_FOLDER = 107;
57 const int EditBookmarkListForm::IDA_FORMAT_SITE = 108;
58 const int EditBookmarkListForm::IDA_FORMAT_ICON = 109;
59 const int EditBookmarkListForm::IDA_FORMAT_BITMAP = 110;
60 const int EditBookmarkListForm::IDA_BUTTON_UNCHECKED = 111;
61 const int EditBookmarkListForm::IDA_FORMAT_URL = 112;
62
63
64 EditBookmarkListForm::EditBookmarkListForm(void)
65 {
66         __pListview = null;
67         __pData = null;
68         __pTimer = null;
69         __parentID = L"0";
70         __pInfoPanel = null;
71         __pInfoLabel = null;
72         __selectedItemCount = 0;
73         __pCheckButton = null;
74         __pConfirmationPopup = null;
75         __pSelectedList = null;
76         __fontSize = 44;
77 }
78
79 EditBookmarkListForm::~EditBookmarkListForm(void)
80 {
81         if (__pData != null)
82         {
83                 __pData->RemoveAll(false);
84                 delete __pData;
85         }
86         if(__pSelectedList != null)
87         {
88                 __pSelectedList->RemoveAll(false);
89                 delete __pSelectedList;
90         }
91 }
92
93 bool
94 EditBookmarkListForm::Initialize(void)
95 {
96         Construct(L"IDL_EDIT_BOOKMARK_LIST");
97
98         return true;
99 }
100 result
101 EditBookmarkListForm::OnInitializing(void)
102 {
103         result r = E_SUCCESS;
104
105         Rectangle rc = GetClientAreaBounds();
106         String selected = CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED");
107
108         // Setup back event listener
109         SetFormBackEventListener(this);
110         AddOrientationEventListener(*this);
111
112         SceneManager* pSceneManager = SceneManager::GetInstance();
113
114         if (pSceneManager != null)
115         {
116                 pSceneManager->AddSceneEventListener(IDSCN_EDIT_BOOKMARK_LIST, *this);
117         }
118
119         __fontSize = CommonUtil::GetFontSize();
120         Header* pHeader = GetHeader();
121
122         if (pHeader == NULL)
123         {
124                 return E_FAILURE;
125         }
126         pHeader->SetTitleText(CommonUtil::GetString(L"IDS_BR_HEADER_EDIT_BOOKMARK"));
127
128         __pCheckButton = static_cast< CheckButton* >(GetControl(
129                         L"IDC_SELECT_CHECKBUTTON", true));
130
131         if (__pCheckButton == null)
132         {
133                 return E_FAILURE;
134         }
135
136         __pCheckButton->SetActionId(IDA_BUTTON_CHECKED, IDA_BUTTON_UNCHECKED);
137         __pCheckButton->AddActionEventListener(*this);
138
139         __pListview = static_cast< ListView* >(GetControl("IDC_LISTVIEW1"));
140
141         if (__pListview == null)
142         {
143                 return E_FAILURE;
144         }
145
146         __pListview->AddFastScrollListener(*this);
147         __pListview->AddListViewItemEventListener(*this);
148         __pListview->SetItemProvider(*this);
149
150         __pInfoPanel = static_cast< Panel* >(GetControl(
151                         L"IDC_INFO_PANEL", true));
152
153         if (__pInfoPanel == null)
154         {
155                 return E_FAILURE;
156         }
157
158         __pInfoLabel = static_cast< Label* >(GetControl(
159                         L"IDC_INFO_LABEL", true));
160
161         if (__pInfoLabel == null)
162         {
163                 return E_FAILURE;
164         }
165
166 //      __pInfoLabel->SetBounds(Rectangle(0,0,rc.width, 48));
167         //selected.Append(L"(0)");
168         selected.Format(25, selected.GetPointer() , 0);
169         __pInfoLabel->SetText(selected);
170
171         __pInfoLabel->SetTextConfig(32,LABEL_TEXT_STYLE_BOLD);
172         //__pInfoLabel->SetBackgroundColor(CUSTOM_COLOR_INFO_LABEL);
173         __pInfoLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
174         __pInfoLabel->SetTextHorizontalAlignment(ALIGNMENT_CENTER);
175         GetFooter()->SetItemEnabled(0,false);
176         GetFooter()->AddActionEventListener(*this);
177         __pTimer = new (std::nothrow) Timer();
178         __pTimer->Construct(*this);
179
180         __pSelectedList = new(std::nothrow) ArrayList();
181                 __pSelectedList->Construct();
182         return r;
183 }
184
185 void
186 EditBookmarkListForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
187 {
188         result r = E_SUCCESS;
189
190         SceneManager* pSceneManager = SceneManager::GetInstance();
191
192         switch (actionId)
193         {
194         case IDA_DELETEITEM_CLICKED:
195                 if(__pConfirmationPopup)
196                 {
197                         delete __pConfirmationPopup;
198                         __pConfirmationPopup = null;
199                 }
200                 if (!__pConfirmationPopup)
201                 {
202                         String closeWarning = CommonUtil::GetString(L"IDS_BR_SK3_DELETE");
203                         __pConfirmationPopup = new(std::nothrow) ConfirmationPopup();
204                         __pConfirmationPopup->Initialize();
205
206                         __pConfirmationPopup->RemoveActionListener(*this);
207                         __pConfirmationPopup->AddActionListener(*this);
208                         __pConfirmationPopup->setMessage(closeWarning);
209                         __pConfirmationPopup->Show();
210                 }
211                 break;
212         case IDA_BUTTON_NO:
213                 if(__pConfirmationPopup)
214                 {
215                         __pConfirmationPopup->SetShowState(false);
216                         __pConfirmationPopup->Show();
217                         delete __pConfirmationPopup;
218                         __pConfirmationPopup = null;
219                 }
220                 break;
221         case IDA_BUTTON_YES:
222         {
223                 String labelString;
224                 int count = 0;
225                 if(__pListview == null)
226                 {
227                         return;
228                 }
229                 int totalCount = __pListview->GetItemCount();
230                 for (int count = 0;count < totalCount;count++)
231                 {
232                         if (__pListview->IsItemChecked(count))
233                         {
234                                 int id = 0;
235                                 String bookmarkId;
236                                 BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(count));
237                                 if (pBookMark == null)
238                                 {
239                                         return;
240                                 }
241                                 bookmarkId = pBookMark->GetBookmarkId();
242                                 Integer::Parse(bookmarkId,id);
243
244                                 if (pBookMark->GetBookmarkType() == BOOKMARK_TYPE_URL)
245                                 {
246                                         r = BookmarkPresentationModel::GetInstance()->DeleteBookmark(id);
247                                         TryCatch( r == E_SUCCESS,,"EditBookmarkListForm::OnActionPerformed BookmarkPresentationModel::GetInstance()->DeleteBookmark failed %s",GetErrorMessage(r));
248                                 }
249                                 else
250                                 {
251                                         r = BookmarkPresentationModel::GetInstance()->DeleteFolder(id);
252                                         TryCatch( r == E_SUCCESS,,"EditBookmarkListForm::OnActionPerformed BookmarkPresentationModel::GetInstance()->DeleteBookmark failed %s",GetErrorMessage(r));
253                                 }
254                         }
255                 }
256
257                 if (__pListview != null)
258                 {
259                         count = __pListview->GetItemCount();
260
261                         for(int index = 0; index < count ; index ++)
262                         {
263                                 if(__pListview->IsItemChecked(index) == true )
264                                 {
265                                         __pListview->SetItemChecked(index,false);
266                                 }
267                         }
268
269                         __pCheckButton->SetSelected(false);
270                         __pListview->UpdateList();
271
272                         if ( __pListview->GetItemCount() == 0)
273                         {
274                                 __pCheckButton->SetShowState(false);
275                                 __pCheckButton->Invalidate(true);
276                                 if (__pInfoPanel != null)
277                                 {
278                                         __pInfoPanel->SetShowState(false);
279                                 }
280                                 r = __pListview->SetBounds(__pListview->GetX(), 0, __pListview->GetWidth(), GetClientAreaBounds().height);
281                                 if (IsFailed(r))
282                                 {
283                                         return;
284                                 }
285
286
287                         }
288                 }
289                 GetFooter()->SetItemEnabled(0,false);
290                 GetFooter()->Invalidate(true);
291                 // removing all the element from selected list
292                 __pSelectedList->RemoveAll(false);
293
294                 labelString.Format(25, CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED").GetPointer() , 0);
295
296                 /*labelString.Append(CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED"));
297                 labelString.Append(L"\x200E"); // LEFT-TO-RIGHT MARK
298                 labelString.Append(L"(0)");*/
299
300                 if (__pInfoPanel != null)
301                 {
302                         __pInfoLabel->SetText(labelString);
303                         __pInfoPanel->Draw();
304                         __pInfoPanel->Show();
305                 }
306
307                 NotificationPanel* pNotification = new (std::nothrow) NotificationPanel(*this);
308                 String notification = CommonUtil::GetString(L"IDS_BR_POP_DELETED");
309                 pNotification->SetText(notification);
310                 pNotification->ShowNotification();
311
312                 if(__pConfirmationPopup)
313                 {
314                         delete __pConfirmationPopup;
315                         __pConfirmationPopup = null;
316                 }
317                 if( __pListview->GetItemCount() == 0)
318                 {
319                         __pTimer->Start(1000);
320                 }
321         }
322         break;
323         case IDA_CANCELITEM_CLICKED:
324         {
325                 if ( __pTimer != NULL)
326                 {
327                         __pTimer->Cancel();
328                 }
329                 if(pSceneManager != NULL)
330                 {
331                         r = pSceneManager->GoBackward(BackwardSceneTransition());
332                 }
333                 if (IsFailed(r))
334                 {
335                         AppLogDebug("EditBookmarkListForm::OnActionPerformed Failed to GoBackward %s",GetErrorMessage(r));
336                         return;
337                 }
338         }
339         break;
340         case IDA_BUTTON_CHECKED:
341         {
342                 String labelString;
343                 bool flag = false;
344
345                 for (int count = 0;count < __pListview->GetItemCount();count++)
346                 {
347                         __pListview->SetItemChecked(count,true);
348                 }
349
350                 GetFooter()->SetItemEnabled(0,true);
351                 GetFooter()->Invalidate(true);
352
353                 if(__pListview->GetItemCount() >1)
354                 {
355                         labelString.Format(25, CommonUtil::GetString(L"IDS_BR_POP_PD_ITEMS_SELECTED").GetPointer() , __pListview->GetItemCount());
356                 }
357                 else
358                 {
359                         labelString.Format(25, CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED").GetPointer() , __pListview->GetItemCount());
360                 }
361
362                 __selectedItemCount = 0;
363
364                 __pInfoLabel->SetText(labelString);
365                 __pInfoPanel->Draw();
366                 __pInfoPanel->Show();
367
368                 __pSelectedList->RemoveAll();
369                 int totalCount = __pData->GetCount();
370                 for(int index = 0; index <  totalCount; index++)
371                 {
372                         BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
373                         if (pBookMark == null)
374                         {
375                                 continue;
376                         }
377                         String *pBookmarkId = new(std::nothrow) String();
378                         if(pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
379                         {
380                                 pBookmarkId->Append("F");
381                         }
382                         else
383                         {
384                                 pBookmarkId->Append("U");
385                         }
386                         pBookmarkId->Append(pBookMark->GetBookmarkId());
387
388                         __pListview->SetItemChecked(index, true);
389                         __pSelectedList->Add(pBookmarkId);
390                 }
391         __pListview->Invalidate(true);
392         }
393         break;
394         case IDA_BUTTON_UNCHECKED:
395         {
396                 String labelString = L"";
397
398                 for (int count = 0;count < __pListview->GetItemCount();count++)
399                 {
400                         __pListview->SetItemChecked(count,false);
401                 }
402
403                 /*labelString.Append(CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED"));
404                 labelString.Append(L"\x200E"); // LEFT-TO-RIGHT MARK
405                 labelString.Append(L"(0)");*/
406
407                 labelString.Format(25, CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED").GetPointer() , 0);
408
409                 __pInfoLabel->SetText(labelString);
410                 __pInfoPanel->Draw();
411                 __pInfoPanel->Show();
412                 __pSelectedList->RemoveAll(true);
413                 __pListview->Invalidate(true);
414
415                 GetFooter()->SetItemEnabled(0,false);
416                 GetFooter()->Invalidate(true);
417         }
418         break;
419         default:
420                 break;
421         }
422
423         CATCH: return ;
424 }
425
426 ListItemBase*
427 EditBookmarkListForm::CreateItem(int index, int itemWidth)
428 {
429         result r = E_SUCCESS;
430         ListAnnexStyle style = LIST_ANNEX_STYLE_MARK;
431         CustomItem* pItem = null;
432         BookmarkData* pBookMark = null;
433         Bitmap* pBitmap = null;
434         String bitmapId;
435         const int x_Margin_Url = 104;
436         const int y_Margin_Url = 70;
437         const int height_Url = 40;
438         const int width_Url = GetClientAreaBounds().width - 104 - 120 - 16 - 48;
439         const int itemHeight = 112;
440         const int textSize = 32;
441         const int width_Title = GetClientAreaBounds().width - 104 - 120 - 16 - 48;
442
443         pItem = new(std::nothrow) CustomItem();
444         if (pItem == null)
445         {
446                 return null;
447         }
448         pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
449         if (pBookMark == null)
450         {
451                 delete pItem;
452                 pItem = null;
453                 return null;
454         }
455         if (pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
456         {
457                 r = pItem->Construct(Tizen::Graphics::Dimension(itemWidth, 112 - 44 + __fontSize), style);
458                 TryCatch( r == E_SUCCESS,,"EditBookmarkListForm::CreateItem contruct item failed  %s",GetErrorMessage(r));
459
460                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ICON_FOLDER_OPEN);
461
462                 if (pBitmap != null)
463                 {
464                         pItem->AddElement(Rectangle(16, 26+(__fontSize - 44)/2, 60, 60), IDA_FORMAT_ICON, *pBitmap, null);
465                         delete pBitmap;
466                 }
467
468                 pItem->AddElement(Rectangle(92, 8, width_Title/*__pListview->GetWidth() - 92 - 80*/, 112 + (__fontSize - 44)), IDA_FORMAT_FOLDER, pBookMark->GetBookmarkTitle(),__fontSize, CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);
469
470
471                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_ITEM);
472
473                 if (pBitmap != null)
474                 {
475                         pItem->AddElement(Rectangle(GetClientAreaBounds().width - 92 - 80, 20 + (__fontSize - 44)/2, 60, 60), IDA_FORMAT_BITMAP, *pBitmap, null, null);
476                         pItem->SetElementSelectionEnabled(IDA_FORMAT_BITMAP, true);
477                         delete pBitmap;
478                 }
479         }
480         else
481         {
482                 r = pItem->Construct(Tizen::Graphics::Dimension(itemWidth, 128 + (__fontSize - 44)), style);
483                 TryCatch( r == E_SUCCESS,,"EditBookmarkListForm::CreateItem contruct item failed  %s",GetErrorMessage(r));
484
485                 pBitmap = pBookMark->GetFavIconBitmap();
486
487                 if (pBitmap == null)
488                 {
489                         pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN();
490                 }
491
492                 pItem->AddElement(Rectangle(16, 28 + (__fontSize - 44)/2, 72, 72), IDA_FORMAT_ICON, *pBitmap, null);
493                 delete pBitmap;
494
495                 pItem->AddElement(Rectangle(104, 10, width_Title, itemHeight - height_Url + (__fontSize - 44)), IDA_FORMAT_SITE, pBookMark->GetBookmarkTitle(),__fontSize,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,CUSTOM_COLOR_TRANSPARENT,true);
496                 pItem->AddElement(Rectangle(x_Margin_Url, y_Margin_Url + (__fontSize - 44), width_Url, height_Url), IDA_FORMAT_URL, pBookMark->GetUrl(),textSize,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,CUSTOM_COLOR_GREY,true);
497
498                 //pBitmap = AppResource::GetInstance()->GetBitmapN("I01_picker_arrow_right.png");
499                 pBitmap = AppResource::GetInstance()->GetBitmapN(IDB_RIGHT_ARROW);
500                 if (pBitmap != null)
501                 {
502                         pItem->AddElement(Rectangle(GetClientAreaBounds().width - 92 - 84, 32 + (__fontSize - 44)/2, 64, 64), IDA_FORMAT_BITMAP, *pBitmap, null, null);
503                         pItem->SetElementSelectionEnabled(IDA_FORMAT_BITMAP, true);
504                         delete pBitmap;
505                 }
506         }
507         return pItem;
508
509         CATCH:
510         delete pItem;
511         pItem = null;
512         return NULL;
513 }
514
515 bool
516 EditBookmarkListForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
517 {
518         delete pItem;
519         pItem = null;
520         return true;
521 }
522
523 int
524 EditBookmarkListForm::GetItemCount(void)
525 {
526         int count = 0;
527         result r = E_SUCCESS;
528
529         BookmarkPresentationModel::GetInstance()->GetFolderBookmarkCount(__parentID, count);
530
531         if (__pData != NULL)
532         {
533                 __pData->RemoveAll(true);
534                 delete __pData;
535                 __pData = NULL ;
536
537         }
538         __pData = new(std::nothrow) ArrayList();
539
540         if (__pData == null)
541         {
542                 return 0;
543         }
544
545         r = __pData->Construct();
546
547         TryCatch( r == E_SUCCESS,,"EditBookmarkListForm::GetItemCount __pData->Construct() failed  %s",GetErrorMessage(r));
548
549         BookmarkPresentationModel::GetInstance()->GetFoldersBookmarks(__parentID, 0, count, *__pData);
550
551
552         if ( count == 0)
553         {
554                 if(__pCheckButton != null)
555                 {
556                         __pCheckButton->SetShowState(false);
557                 }
558                 if(__pInfoPanel != null)
559                 {
560                         __pInfoPanel->SetShowState(false);
561                 }
562                 __pListview->SetBounds(__pListview->GetX(), 0, __pListview->GetWidth(), GetClientAreaBounds().height);
563
564         }
565         else
566         {
567                 if(__pCheckButton != null)
568                 {
569                         __pCheckButton->SetShowState(true);
570                 }
571                 if(__pInfoPanel != null)
572                 {
573                         __pInfoPanel->SetShowState(true);
574                 }
575                 if(__pCheckButton != null && __pInfoPanel != null)
576                 __pListview->SetBounds(__pListview->GetX(), __pListview->GetY(), __pListview->GetWidth(), GetClientAreaBounds().height - __pCheckButton->GetHeight() - __pInfoPanel->GetHeight());
577
578         }
579         if(__pCheckButton != null)
580         {
581                 __pCheckButton->Invalidate(true);
582         }
583         if(__pInfoPanel != null)
584         {
585                 __pInfoPanel->Invalidate(false);
586         }
587
588         return count;
589
590         CATCH:
591         __pData->RemoveAll(true);
592         delete __pData;
593         __pData = null;
594         return 0;
595 }
596
597 void
598 EditBookmarkListForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
599 {
600
601 }
602
603 void
604 EditBookmarkListForm::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
605 {
606
607 }
608
609 void
610 EditBookmarkListForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
611 {
612         String labelString;
613         __selectedItemCount = 0;
614         result r = E_SUCCESS;
615
616         switch (elementId)
617         {
618         case IDA_FORMAT_BITMAP:
619         {
620                 ArrayList* pArgList = null;
621                 SceneManager* pSceneManager = SceneManager::GetInstance();
622                 BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
623
624                 if(pBookMark == NULL)
625                 {
626                         return;
627                 }
628
629                 if (pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
630                 {
631                         pArgList = new(std::nothrow) ArrayList();
632
633                         if (pArgList != null)
634                         {
635                                 pArgList->Construct();
636                                 pArgList->Add(*new(std::nothrow) BookmarkData(*pBookMark));
637                                 if ( pSceneManager != null)
638                                 {
639                                         result r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CREATE_BOOKMARK_FOLDER, SCENE_TRANSITION_ANIMATION_TYPE_NONE),pArgList);
640                                 }
641
642                                 if (pArgList != null)
643                                 {
644                                         pArgList->RemoveAll(false);
645                                         delete pArgList;
646                                         pArgList = null;
647                                 }
648                                 if(IsFailed(r))
649                                 {
650                                         AppLogDebug("BookmarkListForm::CreateItem Construct failed %s",GetErrorMessage(r));
651                                         return;
652                                 }
653                         }
654                 }
655                 else
656                 {
657                         pArgList = new(std::nothrow) ArrayList();
658
659                         if (pArgList != null)
660                         {
661                                 pArgList->Construct();
662                                 pArgList->Add(*new(std::nothrow) String(L"1"));
663                                 pArgList->Add(*new(std::nothrow) BookmarkData(*pBookMark));
664                                 if ( pSceneManager != null)
665                                 {
666                                         result r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ADD_BOOKMARK, SCENE_TRANSITION_ANIMATION_TYPE_NONE), pArgList);
667                                 }
668                                 if (pArgList != null)
669                                 {
670                                         pArgList->RemoveAll(false);
671                                         delete pArgList;
672                                         pArgList = null;
673                                 }
674                                 if(IsFailed(r))
675                                 {
676                                         AppLogDebug("BookmarkListForm::CreateItem Construct failed %s",GetErrorMessage(r));
677                                         return;
678                                 }
679                         }
680                 }
681         }
682         break;
683
684         default:
685         {
686                 int count = 0;
687                 bool flag = false;
688                 BookmarkData* pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
689
690
691                 if(pBookMark == NULL)
692                 {
693                         return;
694                 }
695                 String *pBookmarkId = new(std::nothrow) String();
696                 if(pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
697                 {
698                         pBookmarkId->Append("F");
699                 }
700                 else
701                 {
702                         pBookmarkId->Append("U");
703                 }
704                 pBookmarkId->Append(pBookMark->GetBookmarkId());
705
706                 if (__pListview->IsItemChecked(index) == false)
707                 {
708                         __pSelectedList->Remove(*pBookmarkId);
709                 }
710                 else
711                 {
712                         __pSelectedList->Add(pBookmarkId);
713                 }
714
715
716                 int itemCount = __pListview->GetItemCount();
717                 for (int count = 0;count < itemCount ; count++)
718                 {
719                         if (__pListview->IsItemChecked(count))
720                         {
721                                 __selectedItemCount++;
722                         }
723                 }
724
725                 //labelString.Append(__selectedItemCount);
726                 /*labelString.Append(CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED"));
727                 labelString.Append(L"\x200E"); // LEFT-TO-RIGHT MARK
728                 labelString.Append(L"(");
729                 labelString.Append(__selectedItemCount);
730                 labelString.Append(L")");*/
731
732                 if(__selectedItemCount >1)
733                 {
734                         labelString.Format(25, CommonUtil::GetString(L"IDS_BR_POP_PD_ITEMS_SELECTED").GetPointer() , __selectedItemCount);
735                 }
736                 else
737                 {
738                         labelString.Format(25, CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED").GetPointer() , __selectedItemCount);
739                 }
740
741                 __pInfoLabel->SetText(labelString);
742                 __pInfoPanel->Draw();
743                 __pInfoPanel->Show();
744                 BookmarkPresentationModel::GetInstance()->GetFolderBookmarkCount(__parentID,count);
745                 if (__selectedItemCount == count)
746                 {
747                         __pCheckButton->SetSelected(true);
748                 }
749                 else
750                 {
751                         __pCheckButton->SetSelected(false);
752                 }
753
754                 itemCount = __pListview->GetItemCount();
755                 for (int count = 0;count < itemCount ;count++)
756                 {
757                         if (__pListview->IsItemChecked(count))
758                         {
759                                 flag = true;
760                                 break;
761                         }
762                 }
763
764                 if (flag == true)
765                 {
766                         GetFooter()->SetItemEnabled(0,true);
767                 }
768                 else
769                 {
770                         GetFooter()->SetItemEnabled(0,false);
771                 }
772
773                 GetFooter()->Invalidate(true);
774
775         }
776         break;
777         }
778 }
779
780 void
781 EditBookmarkListForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
782 {
783
784 }
785
786 void
787 EditBookmarkListForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
788 {
789
790 }
791 void
792 EditBookmarkListForm::OnListViewItemReordered(Tizen::Ui::Controls::ListView& listView, int indexFrom, int indexTo)
793 {
794
795 }
796
797 void
798 EditBookmarkListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
799 {
800         result r = E_FAILURE;
801         String labelString ;
802         int count = 0;
803         BookmarkData* pBookMark = null;
804
805         if (pArgs != null)
806         {
807                 __parentID.Clear();
808                 String* pStr = dynamic_cast<String*>(pArgs->GetAt(0));
809                 if(pStr == null)
810                 {
811                         return;
812                 }
813                 __parentID.Append(pStr->GetPointer());
814         }
815
816         __selectedItemCount = 0;
817
818
819         __pListview->UpdateList();
820
821         count = __pListview->GetItemCount();
822
823         for(int index = 0 ; index < count ; index++)
824         {
825                 pBookMark = dynamic_cast< BookmarkData* >(__pData->GetAt(index));
826
827                 if(pBookMark == NULL)
828                 {
829                         return;
830                 }
831                 String *pBookmarkId = new(std::nothrow) String();
832                 if(pBookMark->GetBookmarkType() == BOOKMARK_TYPE_FOLDER)
833                 {
834                         pBookmarkId->Append("F");
835                 }
836                 else
837                 {
838                         pBookmarkId->Append("U");
839                 }
840                 pBookmarkId->Append(pBookMark->GetBookmarkId());
841
842                 AppLog("BookmarkId: %ls", pBookmarkId->GetPointer());
843
844                 if(__pSelectedList->Contains(*pBookmarkId))
845                 {
846                         __pListview->SetItemChecked(index,true);
847                         __selectedItemCount++;
848                 }
849                 else
850                 {
851                         __pListview->SetItemChecked(index,false);
852                 }
853                 if (pBookmarkId)
854                 {
855                         delete pBookmarkId;
856                         pBookmarkId = null;
857                 }
858         }
859
860         /*labelString.Append(CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED"));
861         labelString.Append(L"\x200E"); // LEFT-TO-RIGHT MARK
862         labelString.Append(L"(");
863         labelString.Append(__selectedItemCount);
864         labelString.Append(L")");*/
865
866         if(__selectedItemCount >1)
867         {
868                 labelString.Format(25, CommonUtil::GetString(L"IDS_BR_POP_PD_ITEMS_SELECTED").GetPointer() , __selectedItemCount);
869         }
870         else
871         {
872                 labelString.Format(25, CommonUtil::GetString(L"IDS_BR_BODY_PD_ITEM_SELECTED").GetPointer() , __selectedItemCount);
873         }
874
875         __pInfoLabel->SetText(labelString);
876
877
878         if(__selectedItemCount == 0)
879         {
880                 GetFooter()->SetItemEnabled(0, false);
881                 GetFooter()->Invalidate(true);
882         }
883         else
884         {
885                 GetFooter()->SetItemEnabled(0, true);
886                 GetFooter()->Invalidate(true);
887         }
888         if(__selectedItemCount < __pListview->GetItemCount())
889         {
890                 __pCheckButton->SetSelected(false);
891         }
892         else
893         {
894                 __pCheckButton->SetSelected(true);
895         }
896         __pInfoPanel->Draw();
897         __pInfoPanel->Show();
898
899         Invalidate(true);
900
901 }
902
903 void
904 EditBookmarkListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
905 {
906
907 }
908
909 void
910 EditBookmarkListForm::OnFormBackRequested(Form& source)
911 {
912         SceneManager* pSceneManager = SceneManager::GetInstance();
913
914         if ( __pTimer != NULL)
915         {
916                 __pTimer->Cancel();
917                 delete __pTimer;
918         }
919
920         if (pSceneManager != null)
921         {
922                 //pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_BOOKMARK_VIEW, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
923                 result r = pSceneManager->GoBackward(BackwardSceneTransition());
924                 if(IsFailed(r))
925                 {
926                         AppLogDebug("BookmarkListForm::CreateItem Construct failed %s",GetErrorMessage(r));
927                         return;
928                 }
929
930         }
931         GetFooter()->Invalidate(true);
932 }
933
934
935 void EditBookmarkListForm::OnOrientationChanged(const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
936 {
937         int itemCount = 0;
938         ArrayList* pCheckedItems  = NULL ;
939
940         if (__pListview != null)
941         {
942                 AppLog("the list Y axis is %d", __pListview->GetY());
943                 pCheckedItems  = new(std::nothrow) ArrayList();
944                 pCheckedItems->Construct();
945                 if ( __pListview->GetItemCount() == 0)
946                 {
947                         __pCheckButton->SetShowState(false);
948                         __pInfoPanel->SetShowState(false);
949                         __pListview->SetBounds(0, __pListview->GetY(), GetClientAreaBounds().width, GetClientAreaBounds().height -__pListview->GetY());
950
951                 }
952                 else
953                 {
954                         AppLog("EditBookmarkListForm::OnOrientationChanged 1");
955                         __pCheckButton->SetShowState(true);
956                         __pInfoPanel->SetShowState(true);
957                         __pListview->SetBounds(__pListview->GetX(), __pListview->GetY(), __pListview->GetWidth(), GetClientAreaBounds().height - __pCheckButton->GetHeight() - __pInfoPanel->GetHeight());
958                         __pInfoLabel->SetBounds(__pInfoLabel->GetX(),__pInfoLabel->GetY(), GetClientAreaBounds().width,__pInfoLabel->GetHeight());
959                         __pInfoLabel->Invalidate(true);
960                 }
961                 __pCheckButton->Invalidate(true);
962
963                 itemCount = __pListview->GetItemCount();
964
965                 for (int count = 0;count < itemCount ; count++)
966                 {
967
968                         if (__pListview->IsItemChecked(count))
969                         {
970                                 pCheckedItems->Add(* new Integer(count));
971                         }
972                 }
973
974                 __pListview->UpdateList();
975
976                 for (int count = 0;count < itemCount ;count++)
977                 {
978                         if (pCheckedItems->Contains(* new Integer(count)) == true)
979                         {
980                                 __pListview->SetItemChecked(count, true);
981                         }
982                 }
983                 if ( pCheckedItems != NULL )
984                 {
985                         pCheckedItems->RemoveAll(true);
986                         delete pCheckedItems;
987                 }
988                 Invalidate(true);
989         }
990 }
991
992 void
993 EditBookmarkListForm::OnTimerExpired(Timer&  timer)
994 {
995         SceneManager* pSceneManager = SceneManager::GetInstance();
996
997         if ( pSceneManager != NULL)
998         {
999                 result r = pSceneManager->GoBackward(BackwardSceneTransition());
1000                 if(IsFailed(r))
1001                 {
1002                         AppLogDebug("EditBookmarkListForm::OnTimerExpired GoBackward failed %s",GetErrorMessage(r));
1003                 }
1004         }
1005 }