Changed indicator bg color.
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_GalleryCanvasManager.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 #include <FBaseErrors.h>
18 #include <FBaseColArrayList.h>
19 #include <FBaseSysLog.h>
20 #include "FUi_Control.h"
21 #include "FUiCtrl_GalleryCanvasManager.h"
22 #include "FUiCtrl_GalleryCanvas.h"
23
24 using namespace Tizen::Base;
25 using namespace Tizen::Base::Collection;
26 using namespace Tizen::Graphics;
27 using namespace Tizen::Ui;
28
29 namespace Tizen { namespace Ui { namespace Controls {
30
31 _GalleryCanvasManager*
32 _GalleryCanvasManager::CreateCanvasManagerN(_Control& control, int initialCanvasCount,
33                 FloatRectangle& initialCanvasBounds, _GalleryAnimationProvider* pVEDelegator)
34 {
35         result r = E_SUCCESS;
36
37         _GalleryCanvasManager* pCanvasManager = new (std::nothrow) _GalleryCanvasManager();
38         SysTryCatch(NID_UI_CTRL, pCanvasManager != null, , E_OUT_OF_MEMORY,
39                                         "[E_OUT_OF_MEMORY] Failed to allocate the memory for the _GalleryCanvasManager.");
40
41         r = pCanvasManager->Construct(control, initialCanvasCount, initialCanvasBounds);
42         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
43
44         pCanvasManager->SetAnimationDelegator(*pVEDelegator);
45
46         SetLastResult(E_SUCCESS);
47
48         return pCanvasManager;
49
50 CATCH:
51         delete pCanvasManager;
52
53         return null;
54 }
55
56 result
57 _GalleryCanvasManager::ResetCanvasManager(int canvasCount, FloatRectangle& canvasBounds)
58 {
59         SysTryReturn(NID_UI_CTRL, canvasCount >= 0, E_INVALID_ARG, E_INVALID_ARG,
60                                         "[E_INVALID_ARG] The maxCount parameter is invalid.");
61
62         result r = RemoveAllCanvas();
63         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
64
65         r = __canvasArray.SetCapacity(canvasCount);
66         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
67
68         for (int i = 0; i < GetCanvasCount(); i++)
69         {
70                 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(canvasBounds);
71                 r = GetLastResult();
72                 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
73
74                 r = __canvasArray.Add(*pCanvas);
75                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
76
77                 r = GetRootCanvas().AddChildCanvas(*pCanvas);
78                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
79
80                 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
81                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
82
83                 r = pCanvas->SetBounds(canvasBounds);
84                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
85         }
86
87         return E_SUCCESS;
88
89 CATCH:
90         __canvasArray.RemoveAll(true);
91
92         return r;
93 }
94
95 int
96 _GalleryCanvasManager::GetCanvasCount(void) const
97 {
98         return __canvasArray.GetCapacity();
99 }
100
101 _GalleryRootCanvas&
102 _GalleryCanvasManager::GetRootCanvas(void) const
103 {
104         if (__pRootCanvas == null)
105         {
106                 //SysLog(NID_UI_CTRL, "[Assertion] The _GalleryRootCanvas is null");
107                 SysAssert(false);
108         }
109
110         return *__pRootCanvas;
111 }
112
113 _GalleryCanvas*
114 _GalleryCanvasManager::GetCanvas(int canvasIndex) const
115 {
116         SysTryReturn(NID_UI_CTRL, (canvasIndex >= 0 && canvasIndex < GetCanvasCount()), null, E_OUT_OF_RANGE,
117                                         "[E_OUT_OF_RANGE] The canvasIndex is out of range.");
118
119         _GalleryCanvas* pCanvas = dynamic_cast<_GalleryCanvas*>(const_cast<Object*>(__canvasArray.GetAt(canvasIndex)));
120         SysTryReturn(NID_UI_CTRL, pCanvas != null, null, E_INVALID_STATE,
121                                         "[E_INVALID_STATE] The _GalleryCanvasArray is in an invalid state.");
122
123         return pCanvas;
124 }
125
126 result
127 _GalleryCanvasManager::ReleaseAllCanvasResource(void)
128 {
129         __canvasArray.RemoveAll(true);
130
131         return E_SUCCESS;
132 }
133
134 result
135 _GalleryCanvasManager::ResetAllCanvas(Tizen::Graphics::FloatRectangle& canvasBounds)
136 {
137         _GalleryCanvas* pCanvas = null;
138         result r = E_SUCCESS;
139         int canvasCount = __canvasArray.GetCount();
140         for (int i = 0; i < canvasCount - 1; i++) // last index is empty canvas index
141         {
142                 pCanvas = GetCanvas(i);
143                 if (pCanvas != null)
144                 {
145                         r = GetRootCanvas().RemoveChildCanvas(*pCanvas);
146                         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
147                 }
148         }
149
150         for (int i = 0; i < canvasCount - 1; i++)
151         {
152                 r = __canvasArray.RemoveAt(0, true);
153                 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
154         }
155
156         for (int i = 0; i < canvasCount - 1; i++) // last index is empty canvas index
157         {
158                 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(canvasBounds);
159                 r = GetLastResult();
160                 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
161
162                 r = __canvasArray.InsertAt(*pCanvas, i);
163                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
164
165                 r = GetRootCanvas().AddChildCanvas(*pCanvas);
166                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
167
168                 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
169                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
170
171                 r = pCanvas->SetBounds(canvasBounds);
172                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
173         }
174
175         return E_SUCCESS;
176
177 CATCH:
178         __canvasArray.RemoveAll(true);
179
180         return r;
181 }
182
183 result
184 _GalleryCanvasManager::LoadAllCanvasImage(void)
185 {
186         result r = E_SUCCESS;
187         for (int i = 0; i < GetCanvasCount(); i++)
188         {
189                 _GalleryCanvas* pCanvas = dynamic_cast<_GalleryCanvas*>(__canvasArray.GetAt(i));
190                 SysTryReturn(NID_UI_CTRL, pCanvas != null, E_INVALID_STATE, E_INVALID_STATE,
191                                                 "[E_INVALID_STATE] The _GalleryCanvasArray is in an invalid state.");
192
193                 r = pCanvas->LoadImage();
194                 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
195         }
196
197         return E_SUCCESS;
198 }
199
200 _GalleryCanvasManager::_GalleryCanvasManager(void)
201         : __pControl(null)
202         , __pRootCanvas(null)
203         , __pVEDelegator(null)
204 {
205         // Do nothing
206 }
207
208 _GalleryCanvasManager::~_GalleryCanvasManager(void)
209 {
210         result r = RemoveAllCanvas();
211         delete __pRootCanvas;
212         SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
213 }
214
215
216 result
217 _GalleryCanvasManager::Construct(_Control& control, int initialCanvasCount, FloatRectangle& initialCanvasBounds)
218 {
219         result r = E_SUCCESS;
220         _GalleryRootCanvas* pRootCanvas = null;
221
222         pRootCanvas = _GalleryRootCanvas::CreateGalleryRootCanvasN(control);
223         r = GetLastResult();
224         SysTryCatch(NID_UI_CTRL, pRootCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
225
226         r = __canvasArray.Construct(initialCanvasCount);
227         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
228
229         for (int i = 0; i < GetCanvasCount(); i++)
230         {
231                 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(initialCanvasBounds);
232                 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
233
234                 r = __canvasArray.Add(*pCanvas);
235                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
236
237                 r = pRootCanvas->AddChildCanvas(*pCanvas);
238                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
239
240                 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
241                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
242
243                 r = pCanvas->SetBounds(initialCanvasBounds);
244                 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
245         }
246
247         SetControl(control);
248         SetRootCanvas(*pRootCanvas);
249
250         return E_SUCCESS;
251
252 CATCH:
253         delete pRootCanvas;
254         __canvasArray.RemoveAll(true);
255
256         return r;
257 }
258
259 result
260 _GalleryCanvasManager::RemoveAllCanvas(void)
261 {
262         _GalleryCanvas* pCanvas = null;
263         result r = E_SUCCESS;
264         for (int i = 0; i < __canvasArray.GetCount(); i++)
265         {
266                 pCanvas = GetCanvas(i);
267                 if (pCanvas != null)
268                 {
269                         r = GetRootCanvas().RemoveChildCanvas(*pCanvas);
270                         SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
271                 }
272         }
273
274         __canvasArray.RemoveAll(true);
275
276         return E_SUCCESS;
277 }
278
279 void
280 _GalleryCanvasManager::SetControl(_Control& control)
281 {
282         __pControl = &control;
283 }
284
285 _Control&
286 _GalleryCanvasManager::GetControl(void) const
287 {
288         return *__pControl;
289 }
290
291 void
292 _GalleryCanvasManager::SetRootCanvas(_GalleryRootCanvas& rootCanvas)
293 {
294         __pRootCanvas = &rootCanvas;
295 }
296
297 void
298 _GalleryCanvasManager::SetAnimationDelegator(_GalleryAnimationProvider& pVEDelegator)
299 {
300         __pVEDelegator = &pVEDelegator;
301 }
302
303 _GalleryAnimationProvider&
304 _GalleryCanvasManager::GetAnimationDelegator(void) const
305 {
306         return *__pVEDelegator;
307 }
308
309 }}} // Tizen::Ui::Controls