064f7ba1a77647111680a48e2969708a224edd24
[apps/osp/Gallery.git] / src / GlFileMoveTimer.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://floralicense.org/license/
9 //
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.
15 //
16
17 /**
18  * @file                FileMoveTimer.cpp
19  * @brief               This is the source file for FileMoveTimer class.
20  */
21
22 #include <FBase.h>
23 #include <FContent.h>
24 #include <FMedia.h>
25 #include <FSystem.h>
26 #include <FUi.h>
27
28 #include "GlFileListPresentationModel.h"
29 #include "GlFileMoveTimer.h"
30
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Collection;
33 using namespace Tizen::Base::Utility;
34 using namespace Tizen::Content;
35 using namespace Tizen::Io;
36 using namespace Tizen::Ui;
37 using namespace Tizen::Ui::Controls;
38 using namespace Tizen::Ui::Scenes;
39
40 FileMoveTimer::FileMoveTimer(String& destDirectory, IList* list, FileListPresentationModel* presentationModel,
41                 IFileOpInvalidateListener* pInvalidate, bool isCopyOperation)
42         : GlTimerBase(pInvalidate, FILE_ACTION_MOVE)
43         , __pMoveIndexList(list)
44         , __moveToDir(destDirectory)
45         , __isCopyOperation(false)
46         , __pPresentationModel(presentationModel)
47 {
48 }
49
50 FileMoveTimer::~FileMoveTimer(void)
51 {
52         delete __pMoveIndexList;
53 }
54
55 IList * FileMoveTimer::TimerStart(void)
56 {
57         AppLogDebug("ENTER");
58         if (&__moveToDir == null || __moveToDir.IsEmpty())
59         {
60                 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
61                 return null;
62         }
63
64         if (__pMoveIndexList == null || __pMoveIndexList->GetCount() <= 0)
65         {
66                 AppLogDebug("EXIT 2(%s)", GetErrorMessage(GetLastResult()));
67                 return null;
68         }
69         if (__isCopyOperation == true)
70         {
71                 SetActionMode(FILE_ACTION_COPY);
72         }
73         if (__pMoveIndexList->GetCount() > 0)
74         {
75                 if (File::IsFileExist(__moveToDir) == false)
76                 {
77                         Directory::Create(__moveToDir, true);
78                 }
79                 AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
80                 return __pPresentationModel->GetContentIdListAtIndexN(*__pMoveIndexList);
81         }
82         else
83         {
84                 return null;
85         }
86 }
87
88 result FileMoveTimer::TimerExpired(const Object* contentId)
89 {
90         AppLogDebug("ENTER");
91         return __pPresentationModel->MoveToContentFile(*static_cast<const ContentId*>(contentId), __moveToDir, __isCopyOperation);
92 }
93
94 void FileMoveTimer::TimerCancel(int, enum FileActionCancelRes res)
95 {
96         AppLogDebug("ENTER");
97
98         if (res == CANCEL_USER || (res == CANCEL_SYS_ERROR && GetMovedCount() > 0) )
99         {
100                 String albumName = __pPresentationModel->ConvertToAlbumName(__moveToDir);
101
102                 if (albumName != EMPTY_SPACE)
103                 {
104                         IList* pDirectoryList = new (std::nothrow) ArrayList(SingleObjectDeleter);
105                         pDirectoryList->Add(new (std::nothrow) String(__moveToDir));
106                         __pPresentationModel->SetCurrentAlbumInfo(albumName, *pDirectoryList);
107                         __pPresentationModel->SetCurrentAlbumContentType(CONTENT_TYPE_ALL);
108                         delete pDirectoryList;
109
110                         SceneManager* pSceneManager = SceneManager::GetInstance();
111                         pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALL_LIST));
112                 }
113         }
114         else if (res == CANCEL_SYS_ERROR && GetMovedCount() == 0)
115         {
116                 if ( __isCopyOperation == true )
117                 {
118                         MessageBox messageBox;
119                         messageBox.Construct(L"", L"Unable to copy files.",
120                                         MSGBOX_STYLE_NONE, 3000);
121                         int modalResult;
122                         messageBox.ShowAndWait(modalResult);
123                 }
124         }
125         AppLogDebug("EXIt");
126 }
127
128 void FileMoveTimer::TimerComplete(int, enum FileActionCompleteRes res)
129 {
130         AppLogDebug("ENTER");
131         String albumName = __pPresentationModel->ConvertToAlbumName(__moveToDir);
132
133         if (albumName != EMPTY_SPACE)
134         {
135                 IList* pDirectoryList = new (std::nothrow) ArrayList(SingleObjectDeleter);
136                 pDirectoryList->Add(new (std::nothrow) String(__moveToDir));
137                 __pPresentationModel->SetCurrentAlbumInfo(albumName, *pDirectoryList);
138                 __pPresentationModel->SetCurrentAlbumContentType(CONTENT_TYPE_ALL);
139                 delete pDirectoryList;
140
141                 SceneManager* pSceneManager = SceneManager::GetInstance();
142                 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_ALL_LIST));
143         }
144         AppLogDebug("EXIt");
145 }
146
147 void FileMoveTimer::SetCopy(void)
148 {
149         __isCopyOperation = true;
150 }
151
152 void FileMoveTimer::ClearCopy(void)
153 {
154         __isCopyOperation = false;
155 }