2676881f2b9bf869874bd6d60f0fe9a409fbeabd
[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 "GlContentUpdateEventListener.h"
23 #include "GlFileListPresentationModel.h"
24 #include "GlAlbumListPresentationModel.h"
25
26 using namespace Tizen::Base;
27 using namespace Tizen::Base::Collection;
28 using namespace Tizen::Content;
29
30 ContentUpdateEventListener* ContentUpdateEventListener::__pContentUpdateEventListener = null;
31
32 ContentUpdateEventListener::ContentUpdateEventListener(void)
33         : __pContentManager(null)
34         , __isSingleFileUpdate(false)
35 {
36         AppLogDebug("ENTER");
37         AppLogDebug("EXIT");
38 }
39
40 ContentUpdateEventListener::~ContentUpdateEventListener(void)
41 {
42         AppLogDebug("ENTER");
43         __pContentManager->RemoveContentUpdateEventListener(*this);
44         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
45 }
46
47 ContentUpdateEventListener*
48 ContentUpdateEventListener::GetInstance(void)
49 {
50         AppLogDebug("ENTER");
51         if (__pContentUpdateEventListener == null)
52         {
53                 CreateInstance();
54         }
55         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
56
57         return __pContentUpdateEventListener;
58 }
59
60 void ContentUpdateEventListener::AddContentListener(void)
61 {
62         __pContentManager->AddContentUpdateEventListener(*this);
63 }
64
65 void ContentUpdateEventListener::RemoveContentListener(void)
66 {
67         __pContentManager->RemoveContentUpdateEventListener(*this);
68 }
69
70 result
71 ContentUpdateEventListener::Construct(void)
72 {
73         AppLogDebug("ENTER");
74
75         __pContentManager = new (std::nothrow) ContentManager();
76         __pContentManager->Construct();
77         __pContentManager->AddContentUpdateEventListener(*this);
78
79         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
80         return E_SUCCESS;
81 }
82
83 void
84 ContentUpdateEventListener::CreateInstance(void)
85 {
86         AppLogDebug("ENTER");
87         __pContentUpdateEventListener = new (std::nothrow) ContentUpdateEventListener();
88         result r = __pContentUpdateEventListener->Construct();
89         if (IsFailed(r) == true)
90         {
91                 delete __pContentUpdateEventListener;
92                 __pContentUpdateEventListener = null;
93                 AppLogDebug("EXIT 1(%s)", GetErrorMessage(GetLastResult()));
94
95                 return;
96         }
97
98         std::atexit(DestroyInstance);
99         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
100 }
101
102 void
103 ContentUpdateEventListener::DestroyInstance(void)
104 {
105         AppLogDebug("ENTER");
106
107         delete __pContentUpdateEventListener;
108         __pContentUpdateEventListener = null;
109
110         AppLogDebug("EXIT(%s)", GetErrorMessage(GetLastResult()));
111 }
112
113 void
114 ContentUpdateEventListener::OnContentFileCreated(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
115 {
116         AppLogDebug("ENTER");
117         __isSingleFileUpdate = true;
118
119         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
120         {
121                 AlbumListPresentationModel::GetInstance()->OnContentCreated();
122                 FileListPresentationModel::GetInstance()->OnContentCreated();
123         }
124
125         AppLogDebug("EXIT");
126 }
127
128 void
129 ContentUpdateEventListener::OnContentFileUpdated(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
130 {
131         AppLogDebug("ENTER");
132         __isSingleFileUpdate = true;
133         
134         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
135         {
136                 AlbumListPresentationModel::GetInstance()->OnContentUpdated();
137                 FileListPresentationModel::GetInstance()->OnContentUpdated();
138         }
139         AppLogDebug("EXIT");
140 }
141
142 void
143 ContentUpdateEventListener::OnContentFileDeleted(Tizen::Content::ContentId contentId, Tizen::Content::ContentType contentType, result r)
144 {
145         AppLogDebug("ENTER");
146         __isSingleFileUpdate = true;
147
148         if ( contentType == CONTENT_TYPE_IMAGE || contentType == CONTENT_TYPE_VIDEO)
149         {
150                 AlbumListPresentationModel::GetInstance()->OnContentDeleted();
151                 FileListPresentationModel::GetInstance()->OnContentDeleted();
152         }
153
154         AppLogDebug("EXIT");
155 }
156
157 void
158 ContentUpdateEventListener::OnContentDirectoryScanCompleted(const Tizen::Base::String& directoryPath, result r)
159 {
160         AppLogDebug("ENTER");
161         if (__isSingleFileUpdate == false)
162         {
163                 AlbumListPresentationModel::GetInstance()->OnContentDeleted();
164                 FileListPresentationModel::GetInstance()->OnContentDeleted();
165                 AlbumListPresentationModel::GetInstance()->OnContentScanCompleted( directoryPath );\r
166         }
167         else
168         {
169                 __isSingleFileUpdate = false;
170         }
171         AppLogDebug("EXIT");
172 }