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