Fixed prevent issue
[apps/osp/Gallery.git] / src / GlFileListPresentationModel.cpp
index d43ae05..17020bf 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"
@@ -56,7 +57,7 @@ static const int W_WIDE_THUMBNAIL = 171;
 static const int H_WIDE_THUMBNAIL = 127;
 static const int W_PLAY_FG = 64;
 static const int H_PLAY_FG = 64;
-static const int GAP_W_PLAY_FG = (W_DEFAULT_THUMBNAIL -W_PLAY_FG)/2 ;
+static const int GAP_W_PLAY_FG = (W_DEFAULT_THUMBNAIL -W_PLAY_FG)/2;
 static const int GAP_H_PLAY_FG = (H_DEFAULT_THUMBNAIL - H_PLAY_FG)/2;
 static const int GAP_H_DURATION = H_DEFAULT_THUMBNAIL - H_DURATION;
 static const int ALPHA_DURATION = 70;
@@ -67,6 +68,7 @@ static const Rectangle RECTANGLE_VIDEO_THUMBNAIL_OFFSET_POSION (1, 1, 171, 127);
 static const Color COLOR_DURATION_BG (Color::GetColor(COLOR_ID_BLACK));
 static const Color COLOR_TEXT_OUTLINE (Color::GetColor(COLOR_ID_WHITE));
 
+static const String RESERVED_MEDIA_PATH = Environment::GetMediaPath();
 static const String RESERVED_CAMERA_PATH = Environment::GetMediaPath() + L"Camera";
 static const String RESERVED_CAMERA_PATH_EXT = Environment::GetExternalStoragePath() + L"Camera";
 static const String RESERVED_DOWNLOAD_PATH = Environment::GetMediaPath() + L"Downloads";
@@ -75,15 +77,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 +98,14 @@ FileListPresentationModel::FileListPresentationModel(void)
 FileListPresentationModel::~FileListPresentationModel(void)
 {
        AppLogDebug("ENTER");
+       DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+       if (__pContentIdList)
+       {
+               __pContentIdList->RemoveAll(true);
+               delete __pContentIdList;
+               __pContentIdList = null;
+       }
+       delete __pContentManager;
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 }
 
@@ -117,9 +131,17 @@ 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)
        {
+               __pIconListViewCache->RemoveAll(true);
                delete __pIconListViewCache;
+               __pIconListViewCache = null;
        }
        __pIconListViewCache = new (std::nothrow) ArrayList(SingleObjectDeleter);
        __pIconListViewCache->Construct(SIZE_ICON_LIST_CACHE);
@@ -139,6 +161,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 +172,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()));
@@ -212,10 +236,10 @@ FileListPresentationModel::DestroyInstance(void)
        AppLogDebug("ENTER");
 
        delete __pThumbnailEvent;
-       __pIconListViewCache = null;
 
        if (__pIconListViewCache != null)
        {
+               __pIconListViewCache->RemoveAll(true);
                delete __pIconListViewCache;
                __pIconListViewCache = null;
        }
@@ -238,6 +262,12 @@ FileListPresentationModel::DestroyInstance(void)
                __pPresentationModelListener = null;
        }
 
+       if (__pContentEventListener != null)
+       {
+               delete __pContentEventListener;
+               __pContentEventListener = null;
+       }
+
        delete __pPresentationModelInstance;
        __pPresentationModelInstance = null;
 
@@ -245,7 +275,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 +391,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 +415,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
@@ -428,17 +458,19 @@ FileListPresentationModel::GetThumbnailInSyncCacheN(const int index, String*& pN
        {
                delete pThumbnailInfo;
        }
+
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return E_SUCCESS;
 }
 
 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 +491,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 +500,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 +560,13 @@ FileListPresentationModel::RequestThumbnail(const int index)
 }
 
 void
-FileListPresentationModel::CancelThumbnailRequest(const int index)
+FileListPresentationModel::RequestThumbnail(const ContentId& contentId)
 {
-       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");
+       __pThumbnailProvider->RequestThumbnail(contentId, __pThumbnailEvent);
 }
 
 void
-FileListPresentationModel::ClearThumbnailRequests(bool appTerminating)
+FileListPresentationModel::ClearThumbnailRequests(const bool appTerminating)
 {
        AppLogDebug("ENTER");
 
@@ -607,13 +626,15 @@ FileListPresentationModel::OnThumbnailReceivedN(IEventArg& eventArg)
                                }
                        }
 
+                       delete pEnum;
+
                        if (isMatch == false)
                        {
                                if (SIZE_ICON_LIST_CACHE <= __pIconListViewCache->GetCount())
                                {
                                        __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 +664,99 @@ 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(const ContentId& contentId)
+{
+       AppLogDebug("ENTER");
+       RequestThumbnail(contentId);
+       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.
+       if (__pContentEventListener->GetCount())
+       {
+               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)
+       {
+               ClearThumbnailRequests();
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               pInterface->OnContentUpdated();
+       }
+       delete pEventEnum;
+       AppLogDebug("EXIT");
+}
+
+void
 FileListPresentationModel::AddPresentationModelListener(const IAlbumEventListener* listener)
 {
        AppLogDebug("ENTER");
@@ -658,6 +772,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 +801,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 +809,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;
                        }
@@ -688,6 +821,31 @@ FileListPresentationModel::GetThumbnailInfoFromInternalBufferN(const ContentId&
        return pThumbnailInfo;
 }
 
+void
+FileListPresentationModel::ShowAnimation(void)
+{
+       IFormContentUpdateEventListener* pInterface = null;
+       IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+       while (pEventEnum->MoveNext() == E_SUCCESS)
+       {
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               pInterface->ShowAnimation();
+       }
+       delete pEventEnum;
+}
+
+void
+FileListPresentationModel::StopAnimation(void)
+{
+       IFormContentUpdateEventListener* pInterface = null;
+       IEnumerator* pEventEnum = __pContentEventListener->GetEnumeratorN();
+       while (pEventEnum->MoveNext() == E_SUCCESS)
+       {
+               pInterface = static_cast<IFormContentUpdateEventListener*>(pEventEnum->GetCurrent());
+               pInterface->StopAnimation();
+       }
+       delete pEventEnum;
+}
 result
 FileListPresentationModel::DeleteContentFileList(const IList& contentIndexList)
 {
@@ -718,7 +876,13 @@ FileListPresentationModel::DeleteContentFileList(const IList& contentIndexList)
                ContentId* pContentId = static_cast<ContentId*>(pContentIdList->GetAt(i));
                if (pContentId != null)
                {
-                       DeleteContentFile(*pContentId);
+                       ContentInfo* cntInfo = __pContentManager->GetContentInfoN(*pContentId);
+                       if (cntInfo)
+                       {
+                               String filePath = cntInfo->GetContentPath();
+                               delete cntInfo;
+                               DeleteContentFile(filePath);
+                       }
                }
        }
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -819,164 +983,115 @@ FileListPresentationModel::MoveToContentFileList(const IList& contentIndexList,
 }
 
 result
-FileListPresentationModel::DeleteContentFile(const ContentId& contentId)
+FileListPresentationModel::DeleteContentFile(const String& filePath)
 {
        AppLogDebug("ENTER");
-       if (&contentId == null)
-       {
-               AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
-
-               return E_SUCCESS;
-       }
-       ContentManager contentManager;
-       result r = contentManager.Construct();
-       if (r == E_SUCCESS)
-       {
-               r = contentManager.DeleteContent(contentId);
-       }
+       result r = E_SUCCESS;
+       r = File::Remove(filePath);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
        return r;
 }
 
 result
-FileListPresentationModel::MoveToContentFile(const ContentId& contentId, const String& destDirectory)
+FileListPresentationModel::MoveToContentFile(const String& filePath, const String& destDirectory, const bool isCopyOperation)
 {
        AppLogDebug("ENTER");
-       if (contentId.ToString().IsEmpty() == true || destDirectory.IsEmpty() == true)
+       if (destDirectory.IsEmpty() == true)
        {
                AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
                return E_FAILURE;
        }
+       result r = E_SUCCESS;
 
-       ContentManager contentManager;
-       result r = contentManager.Construct();
-       if (r == E_SUCCESS)
+       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_FAILURE;
+       }
 
-               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_FAILURE;
+       }
 
-               String destPath;
-               if (destDirectory.EndsWith(DIRECTORY_SEPARATOR) == true)
+       while (File::IsFileExist(destPath) == true)
+       {
+               int index = 0;
+               r = destPath.IndexOf(FILE_EXT_SEPARATOR, 0, index);
+               if (!IsFailed(r))
                {
-                       destPath.Append(destDirectory);
-                       destPath.Append(GetFileNameFromFullPath(filePath, true));
+                       if (index < 0)
+                       {
+                               return E_FAILURE;
+                       }
+                       else
+                       {
+                               destPath.Insert(Math::Rand()%10, index);
+                       }
                }
                else
                {
-                       destPath.Append(destDirectory);
-                       destPath.Append(DIRECTORY_SEPARATOR);
-                       destPath.Append(GetFileNameFromFullPath(filePath, true));
-               }
-
-               if (destPath.CompareTo(filePath) == 0)
-               {
-                       AppLogDebug("EXIT 4(%s)", GetErrorMessage(GetLastResult()));
-
-                       return E_SUCCESS;
+                       return E_FAILURE;
                }
+       }
 
-               if (File::IsFileExist(destPath) == true)
-               {
-                       File::Remove(destPath);
-               }
+       r = File::Copy(filePath, destPath, false);
 
-               if (pContentInfo->GetContentType() == CONTENT_TYPE_IMAGE)
-               {
+       if (r == E_STORAGE_FULL)
+       {
+               File::Remove(destPath);
+       }
 
-                       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)
+       if (r == E_SUCCESS)
+       {
+               if (isCopyOperation == false)
                {
-                       r = File::Copy(filePath, destPath, false);
-
-                       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));
-                                       }
-                               }
-                       }
+                       File::Remove(filePath);               // if Move Op remove original file
                }
-               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)
        {
@@ -1003,7 +1118,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
                        bool isMatched = false;
                        int outterLoopCount = __pDirectoryList->GetCount();
                        int innerLoopCount = 0;
-                       for (int i = 0; i < outterLoopCount ; ++i)
+                       for (int i = 0; i < outterLoopCount; ++i)
                        {
                                isMatched = false;
                                innerLoopCount = directoryList.GetCount();
@@ -1037,6 +1152,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
        }
 
        __albumName = albumName;
+       __providerId.Clear();
 
        if (__pDirectoryList != null)
        {
@@ -1057,7 +1173,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 +1192,7 @@ FileListPresentationModel::SetCurrentAlbumInfo(const String& albumName, const IL
 }
 
 result
-FileListPresentationModel::RefreshCurrentAlbumContentInfoList(ContentType contentType)
+FileListPresentationModel::RefreshCurrentAlbumContentInfoList(const ContentType contentType)
 {
        AppLogDebug("ENTER");
        result r = RefreshContentInfoList(contentType);
@@ -1085,8 +1201,38 @@ FileListPresentationModel::RefreshCurrentAlbumContentInfoList(ContentType conten
        return r;
 }
 
+void
+FileListPresentationModel::AddDirectoryIfNew(const String& dirName)
+{
+
+       bool isMatched = false;
+       int dirCount = __pDirectoryList->GetCount();
+       String fullDirName;
+       fullDirName = Environment::GetMediaPath();
+       fullDirName.Append(dirName);
+
+       if (__albumName != ALL_ALBUMS_REAL_NAME) //we are not in All albums
+       {
+               return;
+       }
+
+       for (int i = 0; i < dirCount; ++i)
+       {
+               if (static_cast<String*>(__pDirectoryList->GetAt(i))->CompareTo(fullDirName) == 0)
+               {
+                       isMatched = true;
+                       break;
+               }
+       }
+       
+       if (!isMatched)
+       {
+               __pDirectoryList->Add(new (std::nothrow) String(fullDirName));
+       }
+}
+
 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))
@@ -1110,6 +1256,7 @@ FileListPresentationModel::RefreshContentInfoList(ContentType contentType)
                delete __pContentInfoList;
                __pContentInfoList = null;
        }
+
        __pContentInfoList = GetContentInfoListInDirectoryListN(*__pDirectoryList, __albumContentType);
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
 
@@ -1117,7 +1264,7 @@ FileListPresentationModel::RefreshContentInfoList(ContentType contentType)
 }
 
 String
-FileListPresentationModel::GetCurrentAlbumName(void)
+FileListPresentationModel::GetCurrentAlbumName(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -1126,7 +1273,7 @@ FileListPresentationModel::GetCurrentAlbumName(void)
 }
 
 void
-FileListPresentationModel::SetCurrentAlbumName(String& albumName)
+FileListPresentationModel::SetCurrentAlbumName(const String& albumName)
 {
        AppLogDebug("ENTER");
        if (&albumName == null)
@@ -1141,7 +1288,7 @@ FileListPresentationModel::SetCurrentAlbumName(String& albumName)
 }
 
 ContentType
-FileListPresentationModel::GetCurrentAlbumContentType(void)
+FileListPresentationModel::GetCurrentAlbumContentType(void) const
 {
        AppLogDebug("ENTER");
        AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
@@ -1150,7 +1297,7 @@ FileListPresentationModel::GetCurrentAlbumContentType(void)
 }
 
 void
-FileListPresentationModel::SetCurrentAlbumContentType(ContentType contentType)
+FileListPresentationModel::SetCurrentAlbumContentType(const ContentType contentType)
 {
        AppLogDebug("ENTER");
        __albumContentType = contentType;
@@ -1158,7 +1305,7 @@ FileListPresentationModel::SetCurrentAlbumContentType(ContentType contentType)
 }
 
 IList*
-FileListPresentationModel::GetAlbumDirectoryListN(void)
+FileListPresentationModel::GetAlbumDirectoryListN(void) const
 {
        AppLogDebug("ENTER");
        IList* pAlbumDirectoryList = new (std::nothrow) ArrayList(SingleObjectDeleter);
@@ -1182,7 +1329,7 @@ FileListPresentationModel::GetAlbumDirectoryListN(void)
 }
 
 IList*
-FileListPresentationModel::GetAlbumContentInfoList(void)
+FileListPresentationModel::GetAlbumContentInfoList(void) const
 {
        AppLogDebug("ENTER");
        IList* pContentList = new (std::nothrow) ArrayList(SingleObjectDeleter);
@@ -1206,7 +1353,7 @@ FileListPresentationModel::GetAlbumContentInfoList(void)
 }
 
 ContentInfo*
-FileListPresentationModel::GetContentInfo(int index)
+FileListPresentationModel::GetContentInfo(const int index) const
 {
        AppLogDebug("ENTER");
        if (__pContentInfoList == null || __pContentInfoList->GetCount() == 0)
@@ -1228,26 +1375,27 @@ FileListPresentationModel::GetContentInfo(int index)
        return pContentInfo;
 }
 
-
-IList* FileListPresentationModel::GetContentIdListN(const IList& contentInfoList)
+IList* FileListPresentationModel::GetContentIdListAtIndexN(const IList& indexList) const
 {
+       AppLogDebug("ENTER");
        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())
                {
-                       pContentIdList->Add(new (std::nothrow) ContentId((static_cast<ContentInfo*>(__pContentInfoList->GetAt(pIndex->ToInt())))->GetContentId()));
+                       ContentInfo* pContentInfo = const_cast<ContentInfo*>(static_cast<const ContentInfo*>(__pContentInfoList->GetAt(pIndex->ToInt())));
+                       pContentIdList->Add(new (std::nothrow) ContentId(pContentInfo->GetContentId()));
                }
        }
-
+       AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
        return pContentIdList;
 }
 
 int
-FileListPresentationModel::GetCurrentAlbumContentInfoCount(void)
+FileListPresentationModel::GetCurrentAlbumContentInfoCount(void) const
 {
        AppLogDebug("ENTER");
        if (__pContentInfoList == null)
@@ -1262,7 +1410,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 +1434,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 +1463,7 @@ FileListPresentationModel::CoverVideoOverlayedImageOnThumbnailN(Bitmap& thumbnai
                const ThumbnailInfo& thumbmailInfo)
 {
        AppLogDebug("ENTER");
-       Bitmap* overlayedImage = null;
+       Bitmap* pOverlayedImage = null;
 
        if (&thumbmailInfo != null)
        {
@@ -1354,26 +1502,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 +1534,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 +1590,6 @@ FileListPresentationModel::GetContentInfoListInDirectoryListN(const IList& conte
                                {
                                        pContentList->AddItems(*pIList);
                                }
-                               else
-                               {
-                                       delete pIList;
-                               }
                        }
                }
        }
@@ -1464,6 +1608,11 @@ FileListPresentationModel::ConvertToAlbumName(const String& targetPath)const
                return albumName;
        }
 
+       String mediaPath = RESERVED_MEDIA_PATH;
+       int length = mediaPath.GetLength();
+       mediaPath.Remove(length-1,1);
+
+
        if (targetPath == RESERVED_CAMERA_PATH || targetPath == RESERVED_CAMERA_PATH_EXT)
        {
                albumName = ResourceManager::GetString(L"IDS_MEDIABR_BODY_CAMERA_ROLL_ABB");
@@ -1472,6 +1621,11 @@ FileListPresentationModel::ConvertToAlbumName(const String& targetPath)const
        {
                albumName = ResourceManager::GetString(L"IDS_COM_BODY_DOWNLOADS");
        }
+       else if (targetPath == mediaPath)
+       {
+
+               albumName = ResourceManager::GetString(L"IDS_MEDIABR_POP_NO_NAME");
+       }
        else
        {
                String directoryName = GetDirecotyNameFromFullPath(targetPath);
@@ -1507,3 +1661,103 @@ FileListPresentationModel::GetAppControlSelectionMode(void) const
 
        return __appControlSelectionMode;
 }
+
+void
+FileListPresentationModel::SetUpdateProgressStatus(const bool status)
+{
+       AppLogDebug("ENTER status = %d",status);
+       __updateProgressStatus = status;
+       AppLogDebug("EXIT");
+}
+
+result
+FileListPresentationModel::RotateImage(const Tizen::Content::ContentId& contentId, RotateMode rotateMode)
+{
+       result r = E_SUCCESS;
+       ImageBuffer rotateBuffer;
+       ImageBuffer* pRotatedBuffer = null;
+       ImageFormat imageFormat;
+       Image img;
+       ContentInfo* cntInfo = __pContentManager->GetContentInfoN(contentId);
+       if (!cntInfo)
+       {
+               return E_FAILURE;
+       }
+       String filePath = cntInfo->GetContentPath();
+       delete cntInfo;
+
+       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()));
+}