f95a7984e2a47a538c56c4b65d3c7eb224a974ea
[apps/osp/Gallery.git] / src / GlContentUpdateEventListener.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                GlContentUpdateEventListener.cpp
19  * @brief               This is the implementation file for ContentUpdateEventListener class.
20  */
21
22 #include <FApp.h>
23 #include <FUi.h>
24 #include "GlContentUpdateEventListener.h"
25 #include "GlFileListPresentationModel.h"
26 #include "GlAlbumListPresentationModel.h"
27
28 using namespace Tizen::Base;
29 using namespace Tizen::Base::Collection;
30 using namespace Tizen::Content;
31
32 ContentUpdateEventListener* ContentUpdateEventListener::__pContentUpdateEventListener = null;
33
34 ContentUpdateEventListener::ContentUpdateEventListener(void)
35         : __pContentManager(null)
36 {
37         AppLogDebug("ENTER");
38         AppLogDebug("EXIT");
39 }
40
41 ContentUpdateEventListener::~ContentUpdateEventListener(void)
42 {
43         AppLogDebug("ENTER");
44         __pContentManager->RemoveContentUpdateEventListener(*this);
45         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
46 }
47
48 ContentUpdateEventListener*
49 ContentUpdateEventListener::GetInstance(void)
50 {
51         AppLogDebug("ENTER");
52         if (__pContentUpdateEventListener == null)
53         {
54                 CreateInstance();
55         }
56         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
57
58         return __pContentUpdateEventListener;
59 }
60
61 void ContentUpdateEventListener::AddContentListener(void)
62 {
63         __pContentManager->AddContentUpdateEventListener(*this);
64 }
65
66 void ContentUpdateEventListener::RemoveContentListener(void)
67 {
68         __pContentManager->RemoveContentUpdateEventListener(*this);
69 }
70
71 result
72 ContentUpdateEventListener::Construct(void)
73 {
74         AppLogDebug("ENTER");
75
76         __pContentManager = new (std::nothrow) ContentManager();
77         __pContentManager->Construct();
78         __pContentManager->AddContentUpdateEventListener(*this);
79
80         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
81         return E_SUCCESS;
82 }
83
84 void
85 ContentUpdateEventListener::CreateInstance(void)
86 {
87         AppLogDebug("ENTER");
88         __pContentUpdateEventListener = new (std::nothrow) ContentUpdateEventListener();
89         result r = __pContentUpdateEventListener->Construct();
90         if (IsFailed(r) == true)
91         {
92                 delete __pContentUpdateEventListener;
93                 __pContentUpdateEventListener = null;
94                 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
95
96                 return;
97         }
98
99         std::atexit(DestroyInstance);
100         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
101 }
102
103 void
104 ContentUpdateEventListener::DestroyInstance(void)
105 {
106         AppLogDebug("ENTER");
107
108         delete __pContentUpdateEventListener;
109         __pContentUpdateEventListener = null;
110
111         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
112 }
113
114 bool
115 ContentUpdateEventListener::GetChangeNotificationStatus()
116 {
117         AppLogDebug("ENTER");
118         AppLogDebug("EXIT");
119         return __changeNotificationReceived;
120 }
121
122 void
123 ContentUpdateEventListener::ResumeOperation()
124 {
125         AppLogDebug("ENTER");
126         AlbumListPresentationModel::GetInstance()->OnContentDeleted();
127         FileListPresentationModel::GetInstance()->OnContentDeleted();
128         __changeNotificationReceived = false;
129         AppLogDebug("EXIT");
130 }
131
132 void
133 ContentUpdateEventListener::OnContentFileCreated(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
134 {
135         AppLogDebug("ENTER");
136
137         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
138         {
139                 AlbumListPresentationModel::GetInstance()->OnContentCreated();
140                 FileListPresentationModel::GetInstance()->OnContentCreated();
141         }
142
143         AppLogDebug("EXIT");
144 }
145
146 void
147 ContentUpdateEventListener::OnContentFileUpdated(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
148 {
149         AppLogDebug("ENTER");
150         
151         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
152         {
153                 AlbumListPresentationModel::GetInstance()->OnContentUpdated();
154                 FileListPresentationModel::GetInstance()->OnContentUpdated();
155         }
156         AppLogDebug("EXIT");
157 }
158
159 void
160 ContentUpdateEventListener::OnContentFileDeleted(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
161 {
162         AppLogDebug("ENTER");
163
164         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
165         {
166                 Tizen::App::UiApp* appPtr = Tizen::App::UiApp::GetInstance();
167                 if (appPtr->GetAppUiState() == Tizen::App::APP_UI_STATE_FOREGROUND)
168                 {
169                         AlbumListPresentationModel::GetInstance()->OnContentDeleted();
170                         FileListPresentationModel::GetInstance()->OnContentDeleted();
171                 }
172                 else
173                 {
174                         __changeNotificationReceived = true;
175                 }
176
177         }
178         AppLogDebug("EXIT");
179 }
180
181 void
182 ContentUpdateEventListener::OnContentDirectoryScanCompleted(const Tizen::Base::String& directoryPath, result r)
183 {
184         AppLogDebug("ENTER");
185
186         Tizen::App::UiApp* appPtr = Tizen::App::UiApp::GetInstance();
187         if (appPtr->GetAppUiState() == Tizen::App::APP_UI_STATE_FOREGROUND)
188         {
189                 AlbumListPresentationModel::GetInstance()->OnContentDeleted();
190                 FileListPresentationModel::GetInstance()->OnContentDeleted();
191                 AlbumListPresentationModel::GetInstance()->OnContentScanCompleted( directoryPath );
192         }
193         else
194         {
195                 __changeNotificationReceived = true;
196         }\r
197
198         AppLogDebug("EXIT");
199 }