2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file GlAlbumListEditorForm.cpp
19 * @brief This is the implementation file for AlbumListEditorForm class.
22 #include "GlAlbumInfo.h"
23 #include "GlAlbumListEditorForm.h"
24 #include "GlAlbumListPresentationModel.h"
25 #include "GlResourceManager.h"
28 using namespace Tizen::App;
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Content;
32 using namespace Tizen::Graphics;
33 using namespace Tizen::Io;
34 using namespace Tizen::Media;
35 using namespace Tizen::System;
36 using namespace Tizen::Ui;
37 using namespace Tizen::Ui::Controls;
38 using namespace Tizen::Ui::Scenes;
40 static const unsigned int COLOR_DELETE_BUTTON_NORMAL = Color32<208, 82, 82>::Value;
41 static const unsigned int COLOR_DELETE_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
42 static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Value;
43 static const String RESERVED_CAMERA_PATH = Environment::GetMediaPath() + L"Camera" + DIRECTORY_SEPARATOR;
44 static const String RESERVED_CAMERA_PATH_EXT = Environment::GetExternalStoragePath() + L"Camera" + DIRECTORY_SEPARATOR;
45 static const String RESERVED_MEDIA_PATH = Environment::GetMediaPath();
46 static const String RESERVED_EXTERNAL_MEDIA_PATH = Environment::GetExternalStoragePath();
48 static const int GAP_W_POPUP_ITEM = 5;
49 static const int W_DELETE_POPUP = 620;
50 static const int H_DELETE_POPUP = 300;
51 static const int H_DELETE_LABEL = 180;
52 static const int Y_DELETE_BUTTON = 180;
53 static const int H_DELETE_BUTTON = 80;
55 static const int FORMAT_BUFFER_SIZE = 256;
57 static const Color COLOR_FOLDER_BITMAP_DIM(Color::GetColor(COLOR_ID_BLACK));
58 static const int ALPHA_FOLDER_BITMAP_DIM = 70;
60 static const int IDA_ALBUM_EDIT = 503;
62 AlbumListEditorForm::AlbumListEditorForm(void)
64 , __pSelectCountLabel(null)
65 , __pEditorFolderIconList(null)
66 , __pShareContextMenu(null)
67 , __pDeletePopup(null)
68 , __pFileUpdateTimer(null)
69 , __pPresentationModel(null)
72 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
75 AlbumListEditorForm::~AlbumListEditorForm(void)
78 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
82 AlbumListEditorForm::Initialize(void)
85 result r = Form::Construct(IDL_FORM_ALBUM_LIST_EDITOR);
86 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
92 AlbumListEditorForm::OnInitializing(void)
97 SetOrientation(ORIENTATION_AUTOMATIC);
98 AddOrientationEventListener(*this);
100 __pPresentationModel = AlbumListPresentationModel::GetInstance();
101 __pPresentationModel->ClearThumbnailRequests();
102 r = __pPresentationModel->AddPresentationModelListener(this);
104 SetFormBackEventListener(this);
105 GetHeader()->AddActionEventListener(*this);
106 GetFooter()->AddActionEventListener(*this);
108 r = InitializeControl();
111 AppLogDebug("[%s] Unable to set InitializeControl.", GetErrorMessage(r));
114 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
120 AlbumListEditorForm::OnTerminating(void)
122 AppLogDebug("ENTER");
123 result r = E_SUCCESS;
124 r = __pPresentationModel->RemovePresentationModelListener(*this);
125 __pPresentationModel->RemoveContentEventListener(*this);
127 if (__pDeletePopup != null)
129 delete __pDeletePopup;
130 __pDeletePopup = null;
132 if (__pFileUpdateTimer != null)
134 delete __pFileUpdateTimer;
135 __pFileUpdateTimer = null;
137 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
143 AlbumListEditorForm::OnContentUpdated(void)
145 AppLogDebug("ENTER");
146 int maxCount = __pPresentationModel->GetFolderCount();
147 if (__pDeletePopup != null)
149 if (__pDeletePopup->IsVisible() == true)
151 __pDeletePopup->Destroy();
152 __pDeletePopup = null;
157 for (int i = 0; i < maxCount; ++i)
159 __pEditorFolderIconList->SetItemChecked(i, false);
161 SceneManager* pSceneManager = SceneManager::GetInstance();
162 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST));
163 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
167 AlbumListEditorForm::InitializeControl(void)
169 AppLogDebug("ENTER");
170 result r = E_SUCCESS;
173 __pSelectCountLabel = static_cast<Label*>(GetControl(L"IDC_LABEL_ALBUM_LIST_EDITOR_SELECTED"));
174 AppAssert(__pSelectCountLabel);
176 CreateIconListView();
177 __checkedCount = GetCheckedFolderCount();
180 r = InitializePopup();
181 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
187 AlbumListEditorForm::InitializePopup(void)
189 AppLogDebug("ENTER");
190 if (__pDeletePopup == null)
192 __pDeletePopup = new (std::nothrow) Popup();
193 __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
194 __pDeletePopup->SetPropagatedKeyEventListener(this);
196 Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
198 Label* pLabel = new (std::nothrow) Label();
199 pLabel->Construct(Rectangle(0, 0, popupClientBounds.width, H_DELETE_LABEL),
200 ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"));
201 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
202 pLabel->SetTextConfig(34,LABEL_TEXT_STYLE_BOLD);
204 Button* pDeleteButton = new (std::nothrow) Button();
205 pDeleteButton->Construct(Rectangle(popupClientBounds.width / 2 + GAP_W_POPUP_ITEM, Y_DELETE_BUTTON, popupClientBounds.width / 2 - GAP_W_POPUP_ITEM -10, H_DELETE_BUTTON),
206 ResourceManager::GetString(L"IDS_COM_BODY_DELETE"));
207 pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
208 pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
209 pDeleteButton->SetTextColor(COLOR_DELETE_BUTTON_TEXT);
210 pDeleteButton->SetActionId(IDA_DELETE_POPUP_DEL);
211 pDeleteButton->AddActionEventListener(*this);
213 Button* pCancelButton = new (std::nothrow) Button();
214 pCancelButton->Construct(Rectangle(10, Y_DELETE_BUTTON, popupClientBounds.width / 2 - GAP_W_POPUP_ITEM -10, H_DELETE_BUTTON),
215 ResourceManager::GetString(L"IDS_COM_POP_CANCEL"));
216 pCancelButton->SetActionId(IDA_DELETE_POPUP_CANCEL);
217 pCancelButton->AddActionEventListener(*this);
219 __pDeletePopup->AddControl(pLabel);
220 __pDeletePopup->AddControl(pDeleteButton);
221 __pDeletePopup->AddControl(pCancelButton);
225 __pDeletePopup->SetShowState(true);
226 __pDeletePopup->Show();
228 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
234 AlbumListEditorForm::CreateIconListView(void)
236 AppLogDebug("ENTER");
239 __pEditorFolderIconList = new IconListView();
240 __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height - __pSelectCountLabel->GetHeight()),
241 Dimension(348, 348), ICON_LIST_VIEW_STYLE_MARK, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
242 __pEditorFolderIconList->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
243 __pEditorFolderIconList->SetTouchAnimationEnabled(false);
244 __pEditorFolderIconList->SetItemProvider(*this);
245 __pEditorFolderIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
246 __pEditorFolderIconList->AddIconListViewItemEventListener(*this);
248 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
252 __pEditorFolderIconList->SetBitmapOfEmptyList(pBitmap);
256 __pEditorFolderIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
258 AddControl(__pEditorFolderIconList);
260 __pEditorFolderIconList->SetShowState(true);
262 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
266 AlbumListEditorForm::GetItemCount(void)
268 AppLogDebug("ENTER");
269 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
271 return __pPresentationModel->GetFolderCount();
275 AlbumListEditorForm::CreateItem(int index)
277 AppLogDebug("ENTER : index(%d)", index);
278 Bitmap* pBitmap = null;
279 Canvas* pEditAlbumCanvas = null;
280 Bitmap* pEditAlbumBitmap = null;
281 Bitmap* pBitmapRenameBg = null;
282 Bitmap* pBitmapRename = null;
284 int canvasWidth = 75;
285 int canvasHeight = 75;
287 IconListViewItem* pIconListviewItem = new (std::nothrow) IconListViewItem();
289 IList* pAlbumInfoList = __pPresentationModel->GetAlbumInfoList();
290 AlbumInfo* pAlbumInfo = static_cast<AlbumInfo*>(pAlbumInfoList->GetAt(index));
292 Bitmap* pAlbumBitmap = pAlbumInfo->GetFolderThumnailBitmap();
293 if (pAlbumBitmap == null)
295 __pPresentationModel->RequestThumbnail(index, 0);
298 pBitmap = __pPresentationModel->CreateMergeBitmapN(index);
300 if (__pEditorFolderIconList->IsItemChecked(index) == true)
304 BufferInfo bufferInfo;
305 pBitmap->Lock(bufferInfo, INFINITE);
307 Color dimColor(COLOR_FOLDER_BITMAP_DIM);
308 dimColor.SetAlpha(ALPHA_FOLDER_BITMAP_DIM);
310 canvas.Construct(bufferInfo);
311 canvas.FillRectangle(dimColor, canvas.GetBounds());
312 Bitmap* pSelectedBitmap = new (std::nothrow) Bitmap();
313 pSelectedBitmap->Construct(canvas, canvas.GetBounds());
314 pIconListviewItem->Construct(*pBitmap, null, pSelectedBitmap);
315 delete pSelectedBitmap;
320 pIconListviewItem->Construct(*pBitmap);
328 pBitmapRenameBg = ResourceManager::GetBitmapN(IDB_ALBUM_EDIT_RENAME_BG);
329 pBitmapRename = ResourceManager::GetBitmapN(IDB_ALBUM_EDIT_RENAME);
331 if (pBitmapRenameBg != null && pBitmapRename != null)
334 pEditAlbumCanvas = new (std::nothrow) Canvas();
335 pEditAlbumCanvas->Construct(Rectangle(0, 0, canvasWidth, canvasHeight));
336 pEditAlbumCanvas->DrawBitmap(Point(0, 6), *pBitmapRenameBg);
337 pEditAlbumCanvas->DrawBitmap(Point(0, 6), *pBitmapRename);
340 pEditAlbumBitmap = new (std::nothrow) Bitmap();
342 if (pEditAlbumBitmap != NULL)
344 pEditAlbumBitmap->Construct(*pEditAlbumCanvas, Rectangle(0, 0, canvasWidth, canvasHeight));
347 delete pEditAlbumCanvas;
349 albumName = pAlbumInfo->GetAlbumName();
351 if (albumName == ALL_ALBUMS_REAL_NAME)
353 albumName = ResourceManager::GetString(L"IDS_MEDIABR_BODY_ALL_ALBUMS");
356 String reservedCameraName = ResourceManager::GetString(L"IDS_MEDIABR_BODY_CAMERA_ROLL_ABB");
357 String albumPath = pAlbumInfo->GetDirectory(0);
358 albumPath.Append(DIRECTORY_SEPARATOR);
360 if (index == 0 || (reservedCameraName.Equals(albumName, true) &&
361 (RESERVED_CAMERA_PATH.Equals(albumPath, true) || RESERVED_CAMERA_PATH_EXT.Equals(albumPath, true)))
362 || RESERVED_MEDIA_PATH.Equals(albumPath, true) || RESERVED_EXTERNAL_MEDIA_PATH.Equals(albumPath, true))
368 pIconListviewItem->SetOverlayBitmap(IDA_ALBUM_EDIT, pEditAlbumBitmap, ALIGNMENT_RIGHT, ALIGNMENT_TOP);
371 if (pEditAlbumBitmap != null)
373 delete pEditAlbumBitmap;
379 delete pBitmapRenameBg;
383 delete pBitmapRename;
386 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
388 return pIconListviewItem;
392 AlbumListEditorForm::OnIconListViewItemStateChanged(IconListView& view, int index, IconListViewItemStatus status)
394 AppLogDebug("ENTER");
396 if (status == ICON_LIST_VIEW_ITEM_CHECKED || status == ICON_LIST_VIEW_ITEM_UNCHECKED)
398 if (status == ICON_LIST_VIEW_ITEM_CHECKED)
402 else if (status == ICON_LIST_VIEW_ITEM_UNCHECKED)
408 if (__checkedCount == 0)
410 tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
412 else if (__checkedCount == 1)
414 tempString = ResourceManager::GetString(L"IDS_VR_POP_1_ITEM_SELECTED");
418 tempString.Format(FORMAT_BUFFER_SIZE, ResourceManager::GetString(L"IDS_VR_POP_PD_ITEMS_SELECTED").GetPointer(), __checkedCount);
421 __pSelectCountLabel->SetText(tempString);
422 __pSelectCountLabel->RequestRedraw();
423 __pEditorFolderIconList->RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
427 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
431 AlbumListEditorForm::OnIconListViewOverlayBitmapSelected (IconListView &iconListView, int index,
434 AppLogDebug("ENTER");
435 SceneManager* pSceneManager = SceneManager::GetInstance();
437 ArrayList* pSelectedIndex = new (std::nothrow) ArrayList(SingleObjectDeleter);
438 pSelectedIndex->Construct();
439 //Adding the Action Type
440 pSelectedIndex->Add(new (std::nothrow) Integer(ALBUM_RENAME));
441 pSelectedIndex->Add(new (std::nothrow) Integer(FILE_ACTION_MOVE));
442 pSelectedIndex->Add(new (std::nothrow) Integer(index));
444 if (__pEditorFolderIconList->IsItemChecked(index) == false)
446 __pEditorFolderIconList->SetItemChecked(index,true);
450 __pEditorFolderIconList->SetItemChecked(index,false);
452 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_NAME_EDITOR), pSelectedIndex);
453 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
457 AlbumListEditorForm::DeleteItem(int index, IconListViewItem* pItem)
459 AppLogDebug("ENTER");
461 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
467 AlbumListEditorForm::DeleteFolder(void)
470 AppLogDebug("ENTER");
471 IList* pIndexList = GetItemCheckedIndexListN();
472 if (pIndexList->GetCount() <= 0)
475 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
479 if (__pFileUpdateTimer != null)
481 delete __pFileUpdateTimer;
483 __pFileUpdateTimer = new (std::nothrow) FileUpdateTimer(pIndexList, __pPresentationModel, this, FILE_ACTION_DELETE);
484 result r = __pFileUpdateTimer->StartTimer();
488 delete __pFileUpdateTimer;
489 __pFileUpdateTimer = null;
494 __pPresentationModel->SetUpdateProgressStatus(true);
500 AlbumListEditorForm::GetItemCheckedIndexListN(void) const
502 AppLogDebug("ENTER");
503 IList* pList = new (std::nothrow) ArrayList(SingleObjectDeleter);
504 Integer* pIndex = null;
506 if (__pEditorFolderIconList!=null)
508 int loopCount = __pPresentationModel->GetFolderCount();
509 for (int i = 0; i < loopCount; ++i)
511 if (__pEditorFolderIconList->IsItemChecked(i) == true)
513 pIndex = new (std::nothrow) Integer(i);
515 AppLogDebug("checked index(%d)", i);
519 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
525 AlbumListEditorForm::SetAllCheckState(const bool state)
527 AppLogDebug("ENTER");
529 int maxCount = __pPresentationModel->GetFolderCount();
536 tempString = ResourceManager::GetString(L"IDS_VR_POP_1_ITEM_SELECTED;");
540 tempString.Format(FORMAT_BUFFER_SIZE,
541 ResourceManager::GetString(L"IDS_VR_POP_PD_ITEMS_SELECTED").GetPointer(), maxCount);
546 tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
549 for (int i = 0; i < maxCount; ++i)
551 __pEditorFolderIconList->SetItemChecked(i, state);
552 __pEditorFolderIconList->RefreshList(i, LIST_REFRESH_TYPE_ITEM_MODIFY);
555 __pEditorFolderIconList->Draw();
556 __pSelectCountLabel->SetText(tempString);
557 __pSelectCountLabel->RequestRedraw();
558 __checkedCount = GetCheckedFolderCount();
562 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
566 AlbumListEditorForm::GetCheckedFolderCount(void) const
568 AppLogDebug("ENTER");
569 int maxCount = __pPresentationModel->GetFolderCount();
572 for (int i = 0; i < maxCount; ++i)
574 if (__pEditorFolderIconList->IsItemChecked (i))
579 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
585 AlbumListEditorForm::OnActionPerformed(const Control& source, int actionId)
587 AppLogDebug("ENTER");
590 case IDA_ALBUM_LIST_SELECT_ALL:
592 if (__pPresentationModel->GetFolderCount() == GetCheckedFolderCount())
594 SetAllCheckState(false);
598 SetAllCheckState(true);
603 case IDA_FOOTER_DELETE:
605 __pDeletePopup->SetShowState(true);
606 __pDeletePopup->Show();
610 case IDA_FOOTER_SHARE:
613 if (__pShareContextMenu != NULL)
615 delete __pShareContextMenu;
616 __pShareContextMenu = null;
620 Bitmap* pBitmapEmailContextItem = null;
621 Bitmap* pBitmapMessageContextItem = null;
622 pBitmapEmailContextItem = ResourceManager::GetBitmapN(IDB_IMAGE_CONTEXT_EMAIL_ICON);
623 pBitmapMessageContextItem = ResourceManager::GetBitmapN(IDB_IMAGE_CONTEXT_MESSAGE_ICON);
625 __pShareContextMenu = new (std::nothrow) ContextMenu();
626 __pShareContextMenu->Construct(Point(GetClientAreaBounds().width/3 + 15, GetClientAreaBounds().height + __pSelectCountLabel->GetHeight() + 5),
627 CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD);
629 if ( pBitmapMessageContextItem != null)
631 __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"),
632 IDA_CONTEXT_MENU_MESSAGE , *pBitmapMessageContextItem, null, null);
634 delete pBitmapMessageContextItem;
637 if ( pBitmapEmailContextItem != null)
639 __pShareContextMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXT_MENU_EMAIL,
640 *pBitmapEmailContextItem, null, null);
642 delete pBitmapEmailContextItem;
645 __pShareContextMenu->SetFocusable(true);
646 __pShareContextMenu->AddActionEventListener(*this);
647 __pShareContextMenu->SetShowState(true);
648 __pShareContextMenu->Show();
652 case IDA_CONTEXT_MENU_MESSAGE:
658 case IDA_CONTEXT_MENU_EMAIL:
664 case IDA_DELETE_POPUP_DEL:
666 __pDeletePopup->SetShowState(false);
667 __pDeletePopup->Show();
672 case IDA_DELETE_POPUP_CANCEL:
674 __pDeletePopup->SetShowState(false);
675 __pDeletePopup->Show();
682 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
686 AlbumListEditorForm::OnFormBackRequested(Form& source)
688 AppLogDebug("ENTER");
689 SceneManager* pSceneManager = SceneManager::GetInstance();
690 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST));
691 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
695 AlbumListEditorForm::OnSceneActivatedN(const SceneId& previousSceneId,
696 const SceneId& currentSceneId, IList* pArgs)
698 AppLogDebug("ENTER OnSceneActivatedN");
702 int count = __pPresentationModel->GetFolderCount();
704 __pPresentationModel->AddContentEventListener(this);
706 __checkedCount = GetCheckedFolderCount();
708 if (previousSceneId == IDSCN_ALBUM_NAME_EDITOR)
711 if (__checkedCount == 0)
713 tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
717 tempString.Format(FORMAT_BUFFER_SIZE,
718 ResourceManager::GetString(L"IDS_VR_POP_PD_ITEMS_SELECTED").GetPointer(), __checkedCount);
723 __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_ALL);
725 for (int index = 0; index < count; ++index)
727 __pEditorFolderIconList->SetItemChecked(index,false);
730 __pEditorFolderIconList->UpdateList();
732 tempString = ResourceManager::GetString(L"IDS_ST_POP_NO_ITEMS_SELECTED");
735 __pSelectCountLabel->SetText(tempString);
736 __pSelectCountLabel->Invalidate(true);
739 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
743 AlbumListEditorForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
745 AppLogDebug("ENTER");
746 __pPresentationModel->RemoveContentEventListener(*this);
748 if (nextSceneId != IDSCN_ALBUM_NAME_EDITOR)
750 int loopCount = __pPresentationModel->GetFolderCount();
752 for (int count = 0; count < loopCount; ++count)
754 __pEditorFolderIconList->SetItemChecked(count,false);
756 __pEditorFolderIconList->UpdateList();
759 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
763 AlbumListEditorForm::OnFileInfoChanged(const ContentType contentType)
765 AppLogDebug("ENTER");
767 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
771 AlbumListEditorForm::OnThumbnailDecoded(const int index)
773 AppLogDebug("ENTER : index(%d)", index);
774 __pEditorFolderIconList->RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);
775 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
778 void AlbumListEditorForm::OnFileOpInvalidate(enum FileActionMode actionId)
783 void AlbumListEditorForm::OnFileOpComplete(enum FileActionMode actionId, enum FileActionCompleteRes res)
785 AppLogDebug("ENTER");
786 __pPresentationModel->SetUpdateProgressStatus(false);
787 SetAllCheckState(false);
788 __pPresentationModel->InitializeAlbumInfoList(CONTENT_TYPE_ALL);
789 __pEditorFolderIconList->UpdateList();
791 SceneManager* pSceneManager = SceneManager::GetInstance();
792 AppAssert(pSceneManager);
793 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALBUM_LIST));
794 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
797 bool AlbumListEditorForm::OnKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo)
799 AppLogDebug("ENTER");
801 if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
803 __pDeletePopup->SetShowState(false);
804 __pDeletePopup->Show();
806 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
811 AlbumListEditorForm::Update(void)
813 AppLogDebug("ENTER");
814 result r = __pEditorFolderIconList->UpdateList();
815 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
821 AlbumListEditorForm::OnRequestMessage(void)
823 AppLogDebug("ENTER");
825 int checkCount = GetCheckedFolderCount();
829 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
834 IList* pAlbumInfoList = __pPresentationModel->GetAlbumInfoList();
836 int maxCount = __pPresentationModel->GetFolderCount();
837 ContentManager contentManager;
838 result r = contentManager.Construct();
843 AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
847 ArrayList* pArrayList = new (std::nothrow) ArrayList(SingleObjectDeleter);
848 pArrayList->Construct();
849 for (int i = 0; i < maxCount; ++i)
851 if (__pEditorFolderIconList->IsItemChecked (i))
853 AlbumInfo* pAlbumInfo = static_cast<AlbumInfo*>(pAlbumInfoList->GetAt(i));
854 IList* pContentIdList = pAlbumInfo->GetContentIdListN();
855 int loopCount = pContentIdList->GetCount();
856 for (int k = 0; k < loopCount; ++k)
858 ContentId* pContentId = static_cast<ContentId*>(pContentIdList->GetAt(k));
859 ContentInfo* pContentInfo = contentManager.GetContentInfoN(*pContentId);
861 if (pContentInfo == null)
866 pArrayList->Add(new (std::nothrow) String(pContentInfo->GetContentPath()));
876 HashMap* pDataList = new (std::nothrow) HashMap(SingleObjectDeleter);
877 pDataList->Construct();
878 pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_MESSAGE_TYPE), new (std::nothrow) String(APPCONTROL_DATA_MMS));
879 pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_PATH), (Object*)pArrayList);
881 r = __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_MESSAGE, APPCONTROL_OPERATION_ID_COMPOSE,
882 null, null, pDataList, null);
884 if (r == E_MAX_EXCEEDED)
886 MessageBox messageBox;
887 messageBox.Construct(L"", ResourceManager::GetString(L"IDS_RCS_BODY_MAXIMUM_NUMBER_OF_FILES_EXCEEDED"),
888 MSGBOX_STYLE_NONE, 3000);
890 messageBox.ShowAndWait(modalResult);
893 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
897 AlbumListEditorForm::OnRequestEmail(void)
899 AppLogDebug("ENTER");
901 int checkCount = GetCheckedFolderCount();
905 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
910 IList* pAlbumInfoList = __pPresentationModel->GetAlbumInfoList();
912 int maxCount = __pPresentationModel->GetFolderCount();
913 ContentManager contentManager;
914 result r = contentManager.Construct();
919 AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
923 ArrayList* pArrayList = new (std::nothrow) ArrayList(SingleObjectDeleter);
924 pArrayList->Construct();
925 for (int i = 0; i < maxCount; ++i)
927 if (__pEditorFolderIconList->IsItemChecked(i))
929 AlbumInfo* pAlbumInfo = static_cast<AlbumInfo*>(pAlbumInfoList->GetAt(i));
930 IList* pContentIdList = pAlbumInfo->GetContentIdListN();
931 int loopCount = pContentIdList->GetCount();
932 for (int k = 0; k < loopCount; ++k)
934 ContentId* pContentId = static_cast<ContentId*>(pContentIdList->GetAt(k));
935 ContentInfo* pContentInfo = contentManager.GetContentInfoN(*pContentId);
937 if (pContentInfo == null)
942 pArrayList->Add(new (std::nothrow) String(pContentInfo->GetContentPath()));
952 HashMap* pDataList = new (std::nothrow) HashMap(SingleObjectDeleter);
953 pDataList->Construct();
954 pDataList->Add(new (std::nothrow) String(APPCONTROL_KEY_PATH), (Object*)pArrayList);
956 r = __pPresentationModel->StartAppControl(APPCONTROL_PROVIDER_ID_EMAIL, APPCONTROL_OPERATION_ID_COMPOSE,
957 new (std::nothrow) String(APPCONTROL_URI_MAIL_TO), null, pDataList, null);
959 if (r == E_MAX_EXCEEDED)
961 MessageBox messageBox;
962 messageBox.Construct(L"", ResourceManager::GetString(L"IDS_RCS_BODY_MAXIMUM_NUMBER_OF_FILES_EXCEEDED"),
963 MSGBOX_STYLE_NONE, 3000);
965 messageBox.ShowAndWait(modalResult);
968 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
972 AlbumListEditorForm::SetFooterButtonsState(const bool enableState)
974 AppLogDebug("ENTER");
975 Footer* pFooter = GetFooter();
978 if (enableState == true)
980 pFooter->SetItemEnabled(0, true);
981 pFooter->SetItemEnabled(1, true);
985 pFooter->SetItemEnabled(0, false);
986 pFooter->SetItemEnabled(1, false);
989 pFooter->RequestRedraw(true);
990 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
994 AlbumListEditorForm::SetButtonState(void)
996 AppLogDebug("ENTER");
997 if (GetCheckedFolderCount() > 0)
999 AppLogDebug("BUTTONSTATE : Request Enable");
1000 SetFooterButtonsState(true);
1004 AppLogDebug("BUTTONSTATE : Request disable");
1005 SetFooterButtonsState(false);
1007 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
1012 AlbumListEditorForm::OnOrientationChanged(const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus)
1015 IList* pIndexList = GetItemCheckedIndexListN();
1017 if (__pEditorFolderIconList != null)
1019 RemoveControl(__pEditorFolderIconList);
1022 __pEditorFolderIconList = new IconListView();
1024 if (orientationStatus == ORIENTATION_STATUS_PORTRAIT)
1026 __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height- __pSelectCountLabel->GetHeight()),
1027 Dimension(348, 348), ICON_LIST_VIEW_STYLE_MARK, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
1029 else if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE)
1031 int horizontalSpacing = 8;
1032 int verticalSpacing = 60;
1036 __pEditorFolderIconList->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height - __pSelectCountLabel->GetHeight()),
1037 Dimension(width, height), ICON_LIST_VIEW_STYLE_MARK, ICON_LIST_VIEW_SCROLL_DIRECTION_VERTICAL);
1039 __pEditorFolderIconList->SetItemSpacing(horizontalSpacing, verticalSpacing);
1040 __pEditorFolderIconList->SetMargin(MARGIN_TYPE_TOP,40);
1043 Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_LISTVIEW_EMPTY);
1045 if (pBitmap != null)
1047 __pEditorFolderIconList->SetBitmapOfEmptyList(pBitmap);
1051 __pEditorFolderIconList->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
1052 __pEditorFolderIconList->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_COM_BODY_NO_ITEMS"));
1053 __pEditorFolderIconList->SetTouchAnimationEnabled(false);
1054 __pEditorFolderIconList->SetItemProvider(*this);
1055 __pEditorFolderIconList->SetItemBorderStyle(ICON_LIST_VIEW_ITEM_BORDER_STYLE_NONE);
1056 __pEditorFolderIconList->AddIconListViewItemEventListener(*this);
1058 AddControl(__pEditorFolderIconList);
1060 int loopCount = pIndexList->GetCount();
1062 for (int count = 0; count < loopCount; ++count)
1064 Integer* pRealIndex = static_cast<Integer*>(pIndexList->GetAt(count));
1065 index = pRealIndex->ToInt();
1066 __pEditorFolderIconList->SetItemChecked(index, true);
1067 __pEditorFolderIconList->RefreshList(index, LIST_REFRESH_TYPE_ITEM_MODIFY);