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