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