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