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