NSE_42715
[apps/osp/Gallery.git] / src / GlFileListPresentationModel.cpp
index d43ae05..d71a4eb 100644 (file)
@@ -1,7 +1,7 @@
 //
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
-// Licensed under the Flora License, Version 1.0 (the License);
+// Licensed under the Flora License, Version 1.1 (the License);
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
@@ -24,6 +24,7 @@
 #include <FSystem.h>
 #include "GlCommonUtil.h"
 #include "GlFileListPresentationModel.h"
+#include "GlContentUpdateEventListener.h"
 #include "GlGalleryApp.h"
 #include "GlThumbnailEvent.h"
 #include "GlThumbnailEventArg.h"
@@ -75,15 +76,19 @@ FileListPresentationModel* FileListPresentationModel::__pPresentationModelInstan
 ThumbnailProvider* FileListPresentationModel::__pThumbnailProvider = null;
 ThumbnailEvent* FileListPresentationModel::__pThumbnailEvent = null;
 ArrayList* FileListPresentationModel::__pPresentationModelListener = null;
+ArrayList* FileListPresentationModel::__pContentEventListener = null;
 ArrayList* FileListPresentationModel::__pIconListViewCache = null;
 IList* FileListPresentationModel::__pDirectoryList = null;
 IList* FileListPresentationModel::__pContentInfoList = null;
 
 FileListPresentationModel::FileListPresentationModel(void)
-       : __albumContentType(CONTENT_TYPE_ALL)
-       , __appControlMode(APP_CONTROL_MODE_MAIN)
-       , __appControlMediaType(APPCONTROL_MEDIA_TYPE_UNKNOWN)
+       : __pContentManager(null)
+       , __albumContentType(CONTENT_TYPE_ALL)
+       , __appControlMode(APPCONTROL_MODE_MAIN)
+       , __appControlMediaType(APPCONTROL_MEDIA_TYPE_IMAGE)
        , __appControlSelectionMode(APPCONTROL_SELECTION_MODE_SINGLE)
+       , __pContentIdList(null)
+       , __updateProgressStatus(false)
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -92,6 +97,7 @@ FileListPresentationModel::FileListPresentationModel(void)
 FileListPresentationModel::~FileListPresentationModel(void)
 {
        AppLogDebug("ENTER");
+       DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -117,6 +123,12 @@ FileListPresentationModel::Construct(void)
        __pThumbnailEvent = new (std::nothrow) ThumbnailEvent();
        __pThumbnailEvent->AddListener(*pThumbnailEventListener, true);
 
+       DeviceManager::AddDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+
+       ContentUpdateEventListener::GetInstance();
+       __pContentManager = new (std::nothrow) ContentManager();
+       __pContentManager->Construct();
+
        if (__pIconListViewCache != null)
        {
                delete __pIconListViewCache;
@@ -139,6 +151,9 @@ FileListPresentationModel::Construct(void)
        __pPresentationModelListener = new (std::nothrow) ArrayList();
        __pPresentationModelListener->Construct();
 
+       __pContentEventListener = new (std::nothrow) ArrayList();
+       __pContentEventListener->Construct();
+
        __pThumbnailProvider = ThumbnailProvider::GetInstance();
 
        GalleryApp* pApp = static_cast<GalleryApp*>(GalleryApp::GetInstance());
@@ -147,39 +162,38 @@ FileListPresentationModel::Construct(void)
 
        if (operationId.CompareTo(APPCONTROL_OPERATION_ID_MAIN) == 0)
        {
-               __appControlMode = APP_CONTROL_MODE_MAIN;
+               __appControlMode = APPCONTROL_MODE_MAIN;
        }
        else if (operationId.CompareTo(APPCONTROL_OPERATION_ID_PICK) == 0)
        {
-               __appControlMode = APP_CONTROL_MODE_PICK;
+               __appControlMode = APPCONTROL_MODE_PICK;
 
+               String mimeType = pApp->GetMimeType();
+               if (mimeType.IsEmpty() != true)
+               {
+                       if (mimeType.StartsWith(APPCONTROL_DATA_VIDEO, 0) == true)
+                       {
+                               __appControlMediaType = APPCONTROL_MEDIA_TYPE_VIDEO;
+                       }
+               }
                if (pArguments != null)
                {
                        const String* selectionMode = static_cast<const String*>(pArguments->GetValue(String(APPCONTROL_KEY_SELECTION_MODE)));
-                       const String* mediaType = static_cast<const String*>(pArguments->GetValue(String(APPCONTROL_KEY_MEDIA_TYPE)));
 
-                       if (mediaType != null && mediaType->CompareTo(APPCONTROL_DATA_VIDEO) == 0)
+                       if (pApp->GetMimeType().StartsWith(APPCONTROL_DATA_VIDEO, 0) == true)
                        {
                                __appControlMediaType = APPCONTROL_MEDIA_TYPE_VIDEO;
                        }
-                       else
-                       {
-                               __appControlMediaType = APPCONTROL_MEDIA_TYPE_IMAGE;
-                       }
 
                        if (selectionMode != null && selectionMode->CompareTo(APPCONTROL_DATA_MULTIPLE) == 0)
                        {
                                __appControlSelectionMode = APPCONTROL_SELECTION_MODE_MULTIPLE;
                        }
-                       else
-                       {
-                               __appControlSelectionMode = APPCONTROL_SELECTION_MODE_SINGLE;
-                       }
                }
        }
        else if (operationId.CompareTo(APPCONTROL_OPERATION_ID_CONFIGURE) == 0)
        {
-               __appControlMode = APP_CONTROL_MODE_SETTING;
+               __appControlMode = APPCONTROL_MODE_SETTING;
        }
 
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -238,6 +252,12 @@ FileListPresentationModel::DestroyInstance(void)
                __pPresentationModelListener = null;
        }
 
+       if (__pContentEventListener != null)
+       {
+               delete __pContentEventListener;
+               __pContentEventListener = null;
+       }
+
        delete __pPresentationModelInstance;
        __pPresentationModelInstance = null;
 
@@ -245,7 +265,7 @@ FileListPresentationModel::DestroyInstance(void)
 }
 
 String
-FileListPresentationModel::GetFileNameFromFullPath(const String& fullPath, bool withExt) const
+FileListPresentationModel::GetFileNameFromFullPath(const String& fullPath, const bool withExt) const
 {
        AppLogDebug("ENTER");
        if (fullPath.CompareTo(EMPTY_SPACE) == 0)
@@ -361,8 +381,8 @@ result
 FileListPresentationModel::GetThumbnailInSyncCacheN(const int index, String*& pName, Bitmap*& pThumbnail)
 {
        AppLogDebug("ENTER : index(%d)", index);
-       Bitmap* pOrgBitmap = null;
-       Bitmap* pDstBitmap = null;
+       Bitmap* pOriginalBitmap = null;
+       Bitmap* pDestinationBitmap = null;
        ContentInfo* pContentInfo = null;
 
        if (__pContentInfoList != null && index < __pContentInfoList->GetCount())
@@ -385,38 +405,38 @@ FileListPresentationModel::GetThumbnailInSyncCacheN(const int index, String*& pN
        if (pThumbnailInfo != null)
        {
                pName = new (std::nothrow) String(pThumbnailInfo->GetFilePath());
-               pOrgBitmap = pThumbnailInfo->GetBitmapN();
+               pOriginalBitmap = pThumbnailInfo->GetBitmapN();
        }
 
        if ((pThumbnailInfo != null)&&(pThumbnailInfo->GetContentType() == CONTENT_TYPE_VIDEO))
        {
-               if (pOrgBitmap != null)
+               if (pOriginalBitmap != null)
                {
-                       pDstBitmap = CoverVideoOverlayedImageOnThumbnailN(*pOrgBitmap, *pThumbnailInfo);
-                       delete pOrgBitmap;
+                       pDestinationBitmap = CoverVideoOverlayedImageOnThumbnailN(*pOriginalBitmap, *pThumbnailInfo);
+                       delete pOriginalBitmap;
                }
        }
        else
        {
-               pDstBitmap = pOrgBitmap;
+               pDestinationBitmap = pOriginalBitmap;
        }
 
-       if (pDstBitmap != null)
+       if (pDestinationBitmap != null)
        {
                Bitmap* pThumbnailBgBitmap = ResourceManager::GetBitmapN(IDB_VIDEOTHUMBNAIL_BG);
                Rectangle thumbnailRect(RECTANGLE_THUMBNAIL_OFFSET_POSION);
-               pDstBitmap->Scale(Dimension(RECTANGLE_THUMBNAIL_OFFSET_POSION.width - RECTANGLE_THUMBNAIL_OFFSET_POSION.x
+               pDestinationBitmap->Scale(Dimension(RECTANGLE_THUMBNAIL_OFFSET_POSION.width - RECTANGLE_THUMBNAIL_OFFSET_POSION.x
                                , RECTANGLE_THUMBNAIL_OFFSET_POSION.height - RECTANGLE_THUMBNAIL_OFFSET_POSION.y));
                if (pThumbnailBgBitmap != null)
                {
                        pThumbnailBgBitmap->Scale(DIMENSION_REAL_ICON);
-                       pThumbnail = GetShadedBackgroundBitmapN(*pThumbnailBgBitmap, *pDstBitmap, thumbnailRect);
+                       pThumbnail = GetShadedBackgroundBitmapN(*pThumbnailBgBitmap, *pDestinationBitmap, thumbnailRect);
                        delete pThumbnailBgBitmap;
-                       delete pDstBitmap;
+                       delete pDestinationBitmap;
                }
                else
                {
-                       pThumbnail = pDstBitmap;
+                       pThumbnail = pDestinationBitmap;
                }
        }
        else
@@ -434,11 +454,12 @@ FileListPresentationModel::GetThumbnailInSyncCacheN(const int index, String*& pN
 }
 
 result
-FileListPresentationModel::GetThumbnailVideoInSyncCacheN(const int index, String*& pName, Bitmap*& pThumbnail, String*& pDuration)
+FileListPresentationModel::GetThumbnailVideoInSyncCacheN(const int index,
+               String*& pName, Bitmap*& pThumbnail, String*& pDuration) const
 {
        AppLogDebug("ENTER : index(%d)", index);
        ContentInfo* pContentInfo = null;
-       Bitmap* pOrgBitmap = null;
+       Bitmap* pOriginalBitmap = null;
 
        if (__pContentInfoList != null && index < __pContentInfoList->GetCount())
        {
@@ -459,7 +480,7 @@ FileListPresentationModel::GetThumbnailVideoInSyncCacheN(const int index, String
        if (pThumbnailInfo != null)
        {
                pName = new (std::nothrow) String(pThumbnailInfo->GetFilePath());
-               pOrgBitmap = pThumbnailInfo->GetBitmapN();
+               pOriginalBitmap = pThumbnailInfo->GetBitmapN();
                pDuration = new (std::nothrow) String(CommonUtil::DurationToTimeString(pThumbnailInfo->GetDuration()));
        }
        else
@@ -468,19 +489,19 @@ FileListPresentationModel::GetThumbnailVideoInSyncCacheN(const int index, String
                pDuration = new (std::nothrow) String(CommonUtil::DurationToTimeString(0));
        }
 
-       if (pOrgBitmap != null)
+       if (pOriginalBitmap != null)
        {
                Bitmap* pThumbnailBgBitmap = ResourceManager::GetBitmapN(IDB_VIDEOTHUMBNAIL_BG);
                Rectangle thumbnailRect(RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION);
-               pOrgBitmap->Scale(Dimension(RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.width - RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.x
+               pOriginalBitmap->Scale(Dimension(RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.width - RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.x
                                , RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.height - RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION.y));
                if (pThumbnailBgBitmap != null)
                {
                        pThumbnailBgBitmap->Scale(Dimension(W_WIDE_THUMBNAIL, H_WIDE_THUMBNAIL));
-                       pThumbnail = GetShadedBackgroundBitmapN(*pThumbnailBgBitmap, *pOrgBitmap, thumbnailRect);
+                       pThumbnail = GetShadedBackgroundBitmapN(*pThumbnailBgBitmap, *pOriginalBitmap, thumbnailRect);
                        delete pThumbnailBgBitmap;
                }
-               delete pOrgBitmap;
+               delete pOriginalBitmap;
        }
        else
        {
@@ -528,26 +549,7 @@ FileListPresentationModel::RequestThumbnail(const int index)
 }
 
 void
-FileListPresentationModel::CancelThumbnailRequest(const int index)
-{
-       AppLogDebug("ENTER : index(%d)", index);
-       /*ContentInfo* pContentInfo = null;
-
-       if (__pContentInfoList != null && index < __pContentInfoList->GetCount())
-       {
-               pContentInfo = static_cast<ContentInfo*>(__pContentInfoList->GetAt(index));
-               if (pContentInfo == null)
-               {
-                       AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
-                       return;
-               }
-               __pThumbnailProvider->CancelThumbnailRequest(pContentInfo->GetContentId(), __pThumbnailEvent);
-       }*/
-       AppLogDebug("EXIT");
-}
-
-void
-FileListPresentationModel::ClearThumbnailRequests(bool appTerminating)
+FileListPresentationModel::ClearThumbnailRequests(const bool appTerminating)
 {
        AppLogDebug("ENTER");
 
@@ -613,7 +615,7 @@ FileListPresentationModel::OnThumbnailReceivedN(IEventArg& eventArg)
                                {
                                        __pIconListViewCache->RemoveAt(0, true);
                                }
-                               AppLogDebug("[CHASEFIRE] (all:%d) Add Thumbail(%ls)",__pIconListViewCache->GetCount(),
+                               AppLogDebug("[CHASEFIRE] (all:%d) Add Thumbail(%ls)", __pIconListViewCache->GetCount(),
                                                pThumbnailInfo->GetFilePath().GetPointer());
                                __pIconListViewCache->Add(pThumbnailInfo);
                        }
@@ -643,6 +645,87 @@ FileListPresentationModel::OnThumbnailReceivedN(IEventArg& eventArg)
 }
 
 void
+FileListPresentationModel::OnContentCreated(void)
+{
+       AppLogDebug("ENTER");
+       if (__updateProgressStatus == true)
+       {
+               AppLogDebug("EXIT update in application");
+               return;
+       }
+       IFormContentUpdateEventListener* pInterface = null;
+       if (__pContentEventListener == null)
+       {
+               AppLogDebug("EXIT");
+               return;
+       }
+       IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+       while (pEventEnum->MoveNext() == E_SUCCESS)
+       {
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               if (pInterface != null)
+               {
+                       pInterface->OnContentUpdated();
+               }
+       }
+       delete pEventEnum;
+       AppLogDebug("EXIT");
+}
+
+void
+FileListPresentationModel::OnContentUpdated(void)
+{
+       AppLogDebug("ENTER");
+       if (__updateProgressStatus == true)
+       {
+               AppLogDebug("EXIT update in application");
+               return;
+       }
+       //Clear the ImageCaches when content is updated like rotate.
+       ClearImageCache();
+
+       IFormContentUpdateEventListener* pInterface = null;
+       if (__pContentEventListener == null)
+       {
+               AppLogDebug("EXIT");
+               return;
+       }
+       IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+       while (pEventEnum->MoveNext() == E_SUCCESS)
+       {
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               pInterface->OnContentUpdated();
+       }
+       delete pEventEnum;
+       AppLogDebug("EXIT");
+}
+
+void
+FileListPresentationModel::OnContentDeleted(void)
+{
+       AppLogDebug("ENTER");
+       if (__updateProgressStatus == true)
+       {
+               AppLogDebug("EXIT update in application");
+               return;
+       }
+       IFormContentUpdateEventListener* pInterface = null;
+       if (__pContentEventListener == null)
+       {
+               AppLogDebug("EXIT");
+               return;
+       }
+       IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+       while (pEventEnum->MoveNext() == E_SUCCESS)
+       {
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               pInterface->OnContentUpdated();
+       }
+       delete pEventEnum;
+       AppLogDebug("EXIT");
+}
+
+void
 FileListPresentationModel::AddPresentationModelListener(const IAlbumEventListener* listener)
 {
        AppLogDebug("ENTER");
@@ -658,6 +741,26 @@ FileListPresentationModel::RemovePresentationModelListener(const IAlbumEventList
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
+void
+FileListPresentationModel::AddContentEventListener(const IFormContentUpdateEventListener* listener)
+{
+       AppLogDebug("ENTER");
+       if (__pContentEventListener != null)
+       {
+               __pContentEventListener->RemoveAll();
+               __pContentEventListener->Add((Object*)listener);
+               AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
+       }
+}
+
+void
+FileListPresentationModel::RemoveContentEventListener(const IFormContentUpdateEventListener* listener)
+{
+       AppLogDebug("ENTER");
+       __pContentEventListener->Remove(*listener);
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
+}
+
 ThumbnailInfo*
 FileListPresentationModel::GetThumbnailInfoFromInternalBufferN(const ContentId& contentId) const
 {
@@ -667,7 +770,7 @@ FileListPresentationModel::GetThumbnailInfoFromInternalBufferN(const ContentId&
        if (__pIconListViewCache != null)
        {
                int loopCount = __pIconListViewCache->GetCount();
-               for (int i = 0 ; i < loopCount; ++i)
+               for (int i = 0; i < loopCount; ++i)
                {
                        pTempThumbnailInfo = static_cast<ThumbnailInfo*>(__pIconListViewCache->GetAt(i));
                        if (contentId == pTempThumbnailInfo->GetContentId())
@@ -675,9 +778,8 @@ FileListPresentationModel::GetThumbnailInfoFromInternalBufferN(const ContentId&
 
                                pThumbnailInfo = new (std::nothrow) ThumbnailInfo();
                                Bitmap* pBitmap = pTempThumbnailInfo->GetBitmapN();
-                               pThumbnailInfo->Construct(pTempThumbnailInfo->GetContentId(),
-                                               pTempThumbnailInfo->GetFilePath(), *pBitmap,
-                                               pTempThumbnailInfo->GetContentType(), pTempThumbnailInfo->GetDuration());
+                               pThumbnailInfo->Construct(pTempThumbnailInfo->GetContentId(), pTempThumbnailInfo->GetFilePath(),
+                                               *pBitmap, pTempThumbnailInfo->GetContentType(), pTempThumbnailInfo->GetDuration());
                                delete pBitmap;
                                break;
                        }
@@ -828,19 +930,15 @@ FileListPresentationModel::DeleteContentFile(const ContentId& contentId)
 
                return E_SUCCESS;
        }
-       ContentManager contentManager;
-       result r = contentManager.Construct();
-       if (r == E_SUCCESS)
-       {
-               r = contentManager.DeleteContent(contentId);
-       }
+       result r = __pContentManager->DeleteContent(contentId);
+
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return r;
 }
 
 result
-FileListPresentationModel::MoveToContentFile(const ContentId& contentId, const String& destDirectory)
+FileListPresentationModel::MoveToContentFile(const ContentId& contentId, const String& destDirectory, const bool isCopyOperation)
 {
        AppLogDebug("ENTER");
        if (contentId.ToString().IsEmpty() == true || destDirectory.IsEmpty() == true)
@@ -848,135 +946,93 @@ FileListPresentationModel::MoveToContentFile(const ContentId& contentId, const S
                AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
                return E_FAILURE;
        }
+       result r = E_SUCCESS;
+       ContentInfo* pContentInfo = __pContentManager->GetContentInfoN(contentId);
+       if (pContentInfo == null)
+       {
+               AppLogDebug("Santhosh %s", destDirectory.GetPointer());
+               AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
+               return E_FAILURE;
+       }
 
-       ContentManager contentManager;
-       result r = contentManager.Construct();
-       if (r == E_SUCCESS)
+       String filePath = pContentInfo->GetContentPath();
+       if (filePath.GetLength() < 4)
        {
-               ContentInfo* pContentInfo = contentManager.GetContentInfoN(contentId);
-               if (pContentInfo == null)
-               {
-                       AppLogDebug("Santhosh %s", destDirectory.GetPointer());
-                       AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
-                       return E_FAILURE;
-               }
+               AppLogDebug("EXIT 3(%s)", GetErrorMessage(GetLastResult()));
+               return E_SUCCESS;
+       }
 
-               String filePath = pContentInfo->GetContentPath();
-               if (filePath.GetLength() < 4)
-               {
-                       AppLogDebug("EXIT 3(%s)", GetErrorMessage(GetLastResult()));
+       String destPath;
+       if (destDirectory.EndsWith(DIRECTORY_SEPARATOR) == true)
+       {
+               destPath.Append(destDirectory);
+               destPath.Append(GetFileNameFromFullPath(filePath, true));
+       }
+       else
+       {
+               destPath.Append(destDirectory);
+               destPath.Append(DIRECTORY_SEPARATOR);
+               destPath.Append(GetFileNameFromFullPath(filePath, true));
+       }
 
-                       return E_SUCCESS;
-               }
+       if (destPath.CompareTo(filePath) == 0)
+       {
+               AppLogDebug("EXIT 4(%s)", GetErrorMessage(GetLastResult()));
+               return E_SUCCESS;
+       }
 
-               String destPath;
-               if (destDirectory.EndsWith(DIRECTORY_SEPARATOR) == true)
-               {
-                       destPath.Append(destDirectory);
-                       destPath.Append(GetFileNameFromFullPath(filePath, true));
-               }
-               else
-               {
-                       destPath.Append(destDirectory);
-                       destPath.Append(DIRECTORY_SEPARATOR);
-                       destPath.Append(GetFileNameFromFullPath(filePath, true));
-               }
+       if (File::IsFileExist(destPath) == true)
+       {
+               File::Remove(destPath);
+       }
 
-               if (destPath.CompareTo(filePath) == 0)
-               {
-                       AppLogDebug("EXIT 4(%s)", GetErrorMessage(GetLastResult()));
+       r = File::Copy(filePath, destPath, false);
 
-                       return E_SUCCESS;
-               }
+       if ( r == E_STORAGE_FULL)
+       {
+               File::Remove(destPath);
+       }
+       ContentManager::ScanFile(destPath);
 
-               if (File::IsFileExist(destPath) == true)
+       if ( r == E_SUCCESS )
+       {
+               if ( isCopyOperation == false)
                {
-                       File::Remove(destPath);
+                       File::Remove(filePath);               // if Move Op remove original file
+                       ContentManager::ScanFile(filePath);
                }
+       }
 
-               if (pContentInfo->GetContentType() == CONTENT_TYPE_IMAGE)
-               {
-
-                       r = File::Copy(filePath, destPath, false);
-                       if (r == E_SUCCESS)
-                       {
-                               ContentManager cntManager;
-                               r = cntManager.Construct();
-                               if (r == E_SUCCESS)
-                               {
-                                       ImageContentInfo contentInfo;
-                                       r = contentInfo.Construct(&destPath);
-                                       if (r == E_SUCCESS)
-                                       {
-                                               cntManager.CreateContent(contentInfo);
-                                               r = GetLastResult();
-                                               TryCatch(!IsFailed(r),,"CreateContent::the value is %s",GetErrorMessage(r));
-                                               r = cntManager.DeleteContent(contentId);
-                                               TryCatch(!IsFailed(r),,"DeleteContent::the value is %s",GetErrorMessage(r));
-                                       }
-                               }
-                       }
-               }
-               else if (pContentInfo->GetContentType() == CONTENT_TYPE_VIDEO)
-               {
-                       r = File::Copy(filePath, destPath, false);
+       delete pContentInfo;
 
-                       if (r == E_SUCCESS)
-                       {
-                               ContentManager cntManager;
-                               r = cntManager.Construct();
-                               if (r == E_SUCCESS)
-                               {
-                                       VideoContentInfo contentInfo;
-                                       r = contentInfo.Construct(&destPath);
-                                       {
-                                               cntManager.CreateContent(contentInfo);
-                                               r = GetLastResult();
-                                               TryCatch(!IsFailed(r),,"CreateContent::the value is %s",GetErrorMessage(r));
-                                               r = cntManager.DeleteContent(contentId);
-                                               TryCatch(!IsFailed(r),,"DeleteContent::the value is %s",GetErrorMessage(r));
-                                       }
-                               }
-                       }
-               }
-               CATCH:
-               delete pContentInfo;
-       }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return r;
 }
 
+void
+FileListPresentationModel::ClearProviderId(void)
+{
+       __providerId.Clear();
+}
+
 result
-FileListPresentationModel::StartAppControl( const String& providerId, const String& operationId,
-               const IMap* pDataList, IAppControlResponseListener* pListener)
+FileListPresentationModel::StartAppControl(const String& providerId, const String& operationId,
+               const String* pUriData, const Tizen::Base::String* pMimeType, const HashMap* pDataList,
+               IAppControlResponseListener* pListener)
 {
        AppLogDebug("ENTER");
-       AppLogDebug("FindAppControlN(%ls, %ls)", providerId.GetPointer(), operationId.GetPointer());
-       if (pDataList != null)
-       {
-               IList* pKeyList = pDataList->GetKeysN();
-               if (pKeyList != null)
-               {
-                       int keyCount = pKeyList->GetCount();
-                       for (int i = 0 ; i < keyCount ; ++i)
-                       {
-                               String* pKey = const_cast<String*>(static_cast<const String*>(pKeyList->GetAt(i)));
-                               String* pValue = const_cast<String*>(static_cast<const String*>(pDataList->GetValue(*pKey)));
-
-                               AppLogDebug("(%ls:%ls)", pKey == null ? L"(null)" : pKey->GetPointer(),
-                                               pValue == null ? L"(null)" : pValue->GetPointer());
-                       }
-               }
-       }
        AppControl* pAc = AppManager::FindAppControlN(providerId, operationId);
+
+       ClearProviderId();
+       __providerId.Append(providerId);
+
        if (pAc == null)
        {
                AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
-
                return E_FAILURE;
        }
-       result r = pAc->Start(null, null, pDataList, pListener);
+       result r = pAc->Start(pUriData, pMimeType, pDataList, pListener);
 
        if (r == E_SUCCESS)
        {
@@ -1037,6 +1093,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
        }
 
        __albumName = albumName;
+       __providerId.Clear();
 
        if (__pDirectoryList != null)
        {
@@ -1057,7 +1114,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
                __pContentInfoList = null;
        }
 
-       if (GetAppControlMode() == APP_CONTROL_MODE_PICK)
+       if (GetAppControlMode() == APPCONTROL_MODE_PICK)
        {
                AppControlMediaType appControlMediaType = GetAppControlMediaType();
                if (appControlMediaType == APPCONTROL_MEDIA_TYPE_IMAGE)
@@ -1076,7 +1133,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
 }
 
 result
-FileListPresentationModel::RefreshCurrentAlbumContentInfoList(ContentType contentType)
+FileListPresentationModel::RefreshCurrentAlbumContentInfoList(const ContentType contentType)
 {
        AppLogDebug("ENTER");
        result r = RefreshContentInfoList(contentType);
@@ -1086,7 +1143,7 @@ FileListPresentationModel::RefreshCurrentAlbumContentInfoList(ContentType conten
 }
 
 result
-FileListPresentationModel::RefreshContentInfoList(ContentType contentType)
+FileListPresentationModel::RefreshContentInfoList(const ContentType contentType)
 {
        AppLogDebug("ENTER");
        if ((contentType != CONTENT_TYPE_ALL) && (contentType != CONTENT_TYPE_IMAGE) && (contentType != CONTENT_TYPE_VIDEO))
@@ -1117,7 +1174,7 @@ FileListPresentationModel::RefreshContentInfoList(ContentType contentType)
 }
 
 String
-FileListPresentationModel::GetCurrentAlbumName(void)
+FileListPresentationModel::GetCurrentAlbumName(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -1126,7 +1183,7 @@ FileListPresentationModel::GetCurrentAlbumName(void)
 }
 
 void
-FileListPresentationModel::SetCurrentAlbumName(String& albumName)
+FileListPresentationModel::SetCurrentAlbumName(const String& albumName)
 {
        AppLogDebug("ENTER");
        if (&albumName == null)
@@ -1141,7 +1198,7 @@ FileListPresentationModel::SetCurrentAlbumName(String& albumName)
 }
 
 ContentType
-FileListPresentationModel::GetCurrentAlbumContentType(void)
+FileListPresentationModel::GetCurrentAlbumContentType(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -1150,7 +1207,7 @@ FileListPresentationModel::GetCurrentAlbumContentType(void)
 }
 
 void
-FileListPresentationModel::SetCurrentAlbumContentType(ContentType contentType)
+FileListPresentationModel::SetCurrentAlbumContentType(const ContentType contentType)
 {
        AppLogDebug("ENTER");
        __albumContentType = contentType;
@@ -1158,7 +1215,7 @@ FileListPresentationModel::SetCurrentAlbumContentType(ContentType contentType)
 }
 
 IList*
-FileListPresentationModel::GetAlbumDirectoryListN(void)
+FileListPresentationModel::GetAlbumDirectoryListN(void) const
 {
        AppLogDebug("ENTER");
        IList* pAlbumDirectoryList = new (std::nothrow) ArrayList(SingleObjectDeleter);
@@ -1182,7 +1239,7 @@ FileListPresentationModel::GetAlbumDirectoryListN(void)
 }
 
 IList*
-FileListPresentationModel::GetAlbumContentInfoList(void)
+FileListPresentationModel::GetAlbumContentInfoList(void) const
 {
        AppLogDebug("ENTER");
        IList* pContentList = new (std::nothrow) ArrayList(SingleObjectDeleter);
@@ -1206,7 +1263,7 @@ FileListPresentationModel::GetAlbumContentInfoList(void)
 }
 
 ContentInfo*
-FileListPresentationModel::GetContentInfo(int index)
+FileListPresentationModel::GetContentInfo(const int index) const
 {
        AppLogDebug("ENTER");
        if (__pContentInfoList == null || __pContentInfoList->GetCount() == 0)
@@ -1228,14 +1285,13 @@ FileListPresentationModel::GetContentInfo(int index)
        return pContentInfo;
 }
 
-
-IList* FileListPresentationModel::GetContentIdListN(const IList& contentInfoList)
+IList* FileListPresentationModel::GetContentIdListAtIndexN(const IList& indexList) const
 {
        IList* pContentIdList = new (std::nothrow) ArrayList(SingleObjectDeleter);
-       int loopCount = contentInfoList.GetCount();
+       int loopCount = indexList.GetCount();
        for (int i = 0; i < loopCount; ++i)
        {
-               const Integer* pIndex = static_cast<const Integer*>(contentInfoList.GetAt(i));
+               const Integer* pIndex = static_cast<const Integer*>(indexList.GetAt(i));
 
                if ((pIndex != null) && (pIndex->ToInt())>=0 && __pContentInfoList->GetCount() > pIndex->ToInt())
                {
@@ -1247,7 +1303,7 @@ IList* FileListPresentationModel::GetContentIdListN(const IList& contentInfoList
 }
 
 int
-FileListPresentationModel::GetCurrentAlbumContentInfoCount(void)
+FileListPresentationModel::GetCurrentAlbumContentInfoCount(void) const
 {
        AppLogDebug("ENTER");
        if (__pContentInfoList == null)
@@ -1262,7 +1318,7 @@ FileListPresentationModel::GetCurrentAlbumContentInfoCount(void)
 }
 
 ContentId
-FileListPresentationModel::GetContentInfoIndex(int index)
+FileListPresentationModel::GetContentInfoIndex(const int index) const
 {
        AppLogDebug("ENTER");
        if (__pContentInfoList == null || __pContentInfoList->GetCount() == 0)
@@ -1286,7 +1342,7 @@ FileListPresentationModel::GetContentInfoIndex(int index)
 }
 
 String
-FileListPresentationModel::GetContentFilePath(int index)
+FileListPresentationModel::GetContentFilePath(const int index) const
 {
        AppLogDebug("ENTER index(%d)", index);
        if (__pContentInfoList == null || __pContentInfoList->GetCount() == 0)
@@ -1315,7 +1371,7 @@ FileListPresentationModel::CoverVideoOverlayedImageOnThumbnailN(Bitmap& thumbnai
                const ThumbnailInfo& thumbmailInfo)
 {
        AppLogDebug("ENTER");
-       Bitmap* overlayedImage = null;
+       Bitmap* pOverlayedImage = null;
 
        if (&thumbmailInfo != null)
        {
@@ -1354,26 +1410,26 @@ FileListPresentationModel::CoverVideoOverlayedImageOnThumbnailN(Bitmap& thumbnai
                Font durFont;
                durFont.Construct(FONT_STYLE_PLAIN, FONT_SIZE_DURATION);
                durCanvas.SetFont(durFont);
-               durCanvas.DrawText(Point(W_DURATION_TEXT, H_DURATION_TEXT), CommonUtil::DurationToTimeString(duration), COLOR_TEXT_OUTLINE);
+               durCanvas.DrawText(Point(W_DURATION_TEXT, H_DURATION_TEXT),
+                               CommonUtil::DurationToTimeString(duration), COLOR_TEXT_OUTLINE);
                Bitmap durBitmap;
-               durBitmap.Construct(durCanvas,durCanvas.GetBounds());
-               mainCanvas.DrawBitmap(durRect,durBitmap);
+               durBitmap.Construct(durCanvas, durCanvas.GetBounds());
+               mainCanvas.DrawBitmap(durRect, durBitmap);
 
-               overlayedImage = new (std::nothrow) Bitmap();
-               overlayedImage->Construct(mainCanvas,mainCanvas.GetBounds());
+               pOverlayedImage = new (std::nothrow) Bitmap();
+               pOverlayedImage->Construct(mainCanvas, mainCanvas.GetBounds());
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
-       return overlayedImage;
+       return pOverlayedImage;
 }
 
 Bitmap*
 FileListPresentationModel::GetShadedBackgroundBitmapN(Bitmap& bgBitmap,
-               const Bitmap& orgBitmap,
-               const Rectangle& orgBitmapPosition)
+               const Bitmap& originalBitmap, const Rectangle& originalBitmapPosition) const
 {
        AppLogDebug("ENTER");
-       if (&orgBitmap == null || &orgBitmap == null)
+       if (&originalBitmap == null || &originalBitmap == null)
        {
                AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
 
@@ -1386,7 +1442,7 @@ FileListPresentationModel::GetShadedBackgroundBitmapN(Bitmap& bgBitmap,
        Canvas mainCanvas;
        mainCanvas.Construct(bufferInfo);
        mainCanvas.Clear();
-       mainCanvas.DrawBitmap(orgBitmapPosition, orgBitmap);
+       mainCanvas.DrawBitmap(originalBitmapPosition, originalBitmap);
 
        Bitmap* pMainImage = new (std::nothrow) Bitmap();
        pMainImage->Construct(mainCanvas,mainCanvas.GetBounds());
@@ -1442,10 +1498,6 @@ FileListPresentationModel::GetContentInfoListInDirectoryListN(const IList& conte
                                {
                                        pContentList->AddItems(*pIList);
                                }
-                               else
-                               {
-                                       delete pIList;
-                               }
                        }
                }
        }
@@ -1507,3 +1559,95 @@ FileListPresentationModel::GetAppControlSelectionMode(void) const
 
        return __appControlSelectionMode;
 }
+
+void
+FileListPresentationModel::SetUpdateProgressStatus(const bool status)
+{
+       AppLogDebug("ENTER status = %d",status);
+       __updateProgressStatus = status;
+       AppLogDebug("EXIT");
+}
+
+result
+FileListPresentationModel::RotateImage(int index, RotateMode rotateMode)
+{
+       result r = E_SUCCESS;
+       ImageBuffer rotateBuffer;
+       ImageBuffer* pRotatedBuffer = null;
+       ImageFormat imageFormat;
+       Image img;
+       String filePath = GetContentFilePath(index);
+       ContentType contentType = ContentManagerUtil::CheckContentType(filePath);
+       if (contentType == CONTENT_TYPE_VIDEO)
+       {
+               return r;
+       }
+
+       r = img.Construct();
+
+       if (r == E_SUCCESS)
+       {
+               imageFormat = img.GetImageFormat(filePath);
+       }
+
+       r = rotateBuffer.Construct(filePath);
+       if (r == E_SUCCESS)
+       {
+               if (rotateMode == ROTATE_MODE_RIGHT)
+               {
+                       pRotatedBuffer = rotateBuffer.RotateN(IMAGE_ROTATION_90);
+               }
+               else
+               {
+                       pRotatedBuffer = rotateBuffer.RotateN(IMAGE_ROTATION_270);
+               }
+       }
+
+       if (pRotatedBuffer != null)
+       {
+               r = pRotatedBuffer->EncodeToFile(filePath, imageFormat, true, 100);
+               delete pRotatedBuffer;
+               ContentManager::ScanFile(filePath);
+       }
+       return r;
+}
+
+void
+FileListPresentationModel::ClearImageCache(void)
+{
+       AppLogDebug("ENTER");
+
+       if(__pIconListViewCache != null)
+       {
+               bool clearThumbnailReq = true;
+               while(__pIconListViewCache->GetCount() != 0)
+               {
+                       //This is to Clear the Thumbnail Reuqests only Once
+                       if(clearThumbnailReq == true)
+                       {
+                               ClearThumbnailRequests();
+                               clearThumbnailReq = false;
+                       }
+                       __pIconListViewCache->RemoveAt(0, true);
+               }
+       }
+       AppLogDebug("EXIT");
+}
+
+void
+FileListPresentationModel::OnDeviceStateChanged(DeviceType deviceType, const Tizen::Base::String& state)
+{
+       AppLogDebug("ENTER");
+       if (deviceType == DEVICE_TYPE_STORAGE_CARD && state == DEVICE_STORAGE_CARD_UNMOUNTED)
+       {
+               IFormContentUpdateEventListener* pInterface = null;
+               IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+               while (pEventEnum->MoveNext() == E_SUCCESS)
+               {
+                       pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+                       pInterface->OnContentUpdated();
+               }
+               delete pEventEnum;
+       }
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
+}