2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
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"
24 using namespace Tizen::Base;
25 using namespace Tizen::Base::Collection;
26 using namespace Tizen::Graphics;
27 using namespace Tizen::Ui;
29 namespace Tizen { namespace Ui { namespace Controls {
31 _GalleryCanvasManager*
32 _GalleryCanvasManager::CreateCanvasManagerN(_Control& control, int initialCanvasCount,
33 FloatRectangle& initialCanvasBounds, _GalleryAnimationProvider* pVEDelegator)
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.");
41 r = pCanvasManager->Construct(control, initialCanvasCount, initialCanvasBounds);
42 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
44 pCanvasManager->SetAnimationDelegator(*pVEDelegator);
46 SetLastResult(E_SUCCESS);
48 return pCanvasManager;
51 delete pCanvasManager;
57 _GalleryCanvasManager::ResetCanvasManager(int canvasCount, FloatRectangle& canvasBounds)
59 SysTryReturn(NID_UI_CTRL, canvasCount >= 0, E_INVALID_ARG, E_INVALID_ARG,
60 "[E_INVALID_ARG] The maxCount parameter is invalid.");
62 result r = RemoveAllCanvas();
63 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
65 r = __canvasArray.SetCapacity(canvasCount);
66 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
68 for (int i = 0; i < GetCanvasCount(); i++)
70 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(canvasBounds);
72 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
74 r = __canvasArray.Add(*pCanvas);
75 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
77 r = GetRootCanvas().AddChildCanvas(*pCanvas);
78 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
80 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
81 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
83 r = pCanvas->SetBounds(canvasBounds);
84 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
90 __canvasArray.RemoveAll(true);
96 _GalleryCanvasManager::GetCanvasCount(void) const
98 return __canvasArray.GetCapacity();
102 _GalleryCanvasManager::GetRootCanvas(void) const
104 if (__pRootCanvas == null)
106 //SysLog(NID_UI_CTRL, "[Assertion] The _GalleryRootCanvas is null");
110 return *__pRootCanvas;
114 _GalleryCanvasManager::GetCanvas(int canvasIndex) const
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.");
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.");
127 _GalleryCanvasManager::ReleaseAllCanvasResource(void)
129 __canvasArray.RemoveAll(true);
135 _GalleryCanvasManager::ResetAllCanvas(Tizen::Graphics::FloatRectangle& canvasBounds)
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
142 pCanvas = GetCanvas(i);
145 r = GetRootCanvas().RemoveChildCanvas(*pCanvas);
146 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
150 for (int i = 0; i < canvasCount - 1; i++)
152 r = __canvasArray.RemoveAt(0, true);
153 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
156 for (int i = 0; i < canvasCount - 1; i++) // last index is empty canvas index
158 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(canvasBounds);
160 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
162 r = __canvasArray.InsertAt(*pCanvas, i);
163 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
165 r = GetRootCanvas().AddChildCanvas(*pCanvas);
166 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
168 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
169 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
171 r = pCanvas->SetBounds(canvasBounds);
172 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
178 __canvasArray.RemoveAll(true);
184 _GalleryCanvasManager::LoadAllCanvasImage(void)
186 result r = E_SUCCESS;
187 for (int i = 0; i < GetCanvasCount(); i++)
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.");
193 r = pCanvas->LoadImage();
194 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
200 _GalleryCanvasManager::_GalleryCanvasManager(void)
202 , __pRootCanvas(null)
203 , __pVEDelegator(null)
208 _GalleryCanvasManager::~_GalleryCanvasManager(void)
210 result r = RemoveAllCanvas();
211 delete __pRootCanvas;
212 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
217 _GalleryCanvasManager::Construct(_Control& control, int initialCanvasCount, FloatRectangle& initialCanvasBounds)
219 result r = E_SUCCESS;
220 _GalleryRootCanvas* pRootCanvas = null;
222 pRootCanvas = _GalleryRootCanvas::CreateGalleryRootCanvasN(control);
224 SysTryCatch(NID_UI_CTRL, pRootCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
226 r = __canvasArray.Construct(initialCanvasCount);
227 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
229 for (int i = 0; i < GetCanvasCount(); i++)
231 _GalleryCanvas* pCanvas = _GalleryCanvas::CreateGalleryCanvasN(initialCanvasBounds);
232 SysTryCatch(NID_UI_CTRL, pCanvas != null, , r, "[%s] Propagating.", GetErrorMessage(r));
234 r = __canvasArray.Add(*pCanvas);
235 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
237 r = pRootCanvas->AddChildCanvas(*pCanvas);
238 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
240 r = pCanvas->SetAnimationDelegator(__pVEDelegator);
241 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
243 r = pCanvas->SetBounds(initialCanvasBounds);
244 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
248 SetRootCanvas(*pRootCanvas);
254 __canvasArray.RemoveAll(true);
260 _GalleryCanvasManager::RemoveAllCanvas(void)
262 _GalleryCanvas* pCanvas = null;
263 result r = E_SUCCESS;
264 for (int i = 0; i < __canvasArray.GetCount(); i++)
266 pCanvas = GetCanvas(i);
269 r = GetRootCanvas().RemoveChildCanvas(*pCanvas);
270 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
274 __canvasArray.RemoveAll(true);
280 _GalleryCanvasManager::SetControl(_Control& control)
282 __pControl = &control;
286 _GalleryCanvasManager::GetControl(void) const
292 _GalleryCanvasManager::SetRootCanvas(_GalleryRootCanvas& rootCanvas)
294 __pRootCanvas = &rootCanvas;
298 _GalleryCanvasManager::SetAnimationDelegator(_GalleryAnimationProvider& pVEDelegator)
300 __pVEDelegator = &pVEDelegator;
303 _GalleryAnimationProvider&
304 _GalleryCanvasManager::GetAnimationDelegator(void) const
306 return *__pVEDelegator;
309 }}} // Tizen::Ui::Controls