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 <FBaseSysLog.h>
18 #include "FUiCtrl_GalleryModel.h"
19 #include "FUiCtrl_GalleryItem.h"
20 #include "FUiCtrl_GalleryItemProviderAdaptor.h"
22 namespace Tizen { namespace Ui { namespace Controls {
27 const int GALLERY_ITEM_CACHE_SIZE = 5;
29 } // unnamed namespace
31 _GalleryModel::_GalleryModel(void)
32 : __pGalleryItemProviderAdaptor(null)
38 _GalleryModel::~_GalleryModel(void)
40 result r = __listViewModel.RemoveAllItem();
42 delete __pGalleryItemProviderAdaptor;
43 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
47 _GalleryModel::CreateGalleryModelN(_IGalleryItemProvider& galleryItemProvider)
51 _GalleryItemProviderAdaptor* pGalleryItemProviderAdaptor = new (std::nothrow) _GalleryItemProviderAdaptor(galleryItemProvider);
52 SysTryReturn(NID_UI_CTRL, pGalleryItemProviderAdaptor != null, null, E_OUT_OF_MEMORY,
53 "[E_OUT_OF_MEMORY] Memory allocation failed.");
55 _GalleryModel* pGalleryModel = new (std::nothrow) _GalleryModel();
56 SysTryCatch(NID_UI_CTRL, pGalleryModel != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
58 r = pGalleryModel->RegisterItemProviderAdaptor(pGalleryItemProviderAdaptor);
59 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
61 r = pGalleryModel->SetCacheSize(GALLERY_ITEM_CACHE_SIZE);
62 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
64 SetLastResult(E_SUCCESS);
68 delete pGalleryItemProviderAdaptor;
75 _GalleryModel::RegisterItemProviderAdaptor(_GalleryItemProviderAdaptor* pGalleryItemProviderAdaptor)
77 __pGalleryItemProviderAdaptor = pGalleryItemProviderAdaptor;
78 return __listViewModel.RegisterItemProviderAdaptor(pGalleryItemProviderAdaptor);
82 _GalleryModel::GetItem(int index) const
84 SysTryReturn(NID_UI_CTRL, index >= 0, null, E_INVALID_ARG, "[E_INVALID_ARG] The argument(%d) is negative value.", index);
86 _GalleryItem* pItem = static_cast<_GalleryItem*>(const_cast<_ListViewModel*>(&__listViewModel)->LoadItem(0, index));
87 SysTryReturn(NID_UI_CTRL, pItem != null, null, GetLastResult(),
88 "[%s] gallery item(%d) is invalid object", GetErrorMessage(GetLastResult()), index);
90 SetLastResult(E_SUCCESS);
96 _GalleryModel::SetItemProvider(_IGalleryItemProvider& provider)
98 return __pGalleryItemProviderAdaptor->SetGalleryItemProvider(provider);
102 _GalleryModel::GetItemCount(void) const
108 _GalleryModel::GetItemCountFromProvider(void) const
110 return __pGalleryItemProviderAdaptor->GetItemCount(0);
114 _GalleryModel::UpdateItemCount(void)
116 __itemCount = GetItemCountFromProvider();
120 _GalleryModel::RequestToLoadItem(int index)
122 SysTryReturn(NID_UI_CTRL, index >= 0, E_OUT_OF_RANGE, E_OUT_OF_RANGE,
123 "[E_OUT_OF_RANGE] The argument(%d) is out of range.", index);
124 SysTryReturnResult(NID_UI_CTRL, index <= GetItemCount(), E_OUT_OF_RANGE, "Item index is out of range.");
126 _IListItemCommon* pCommonItem = __pGalleryItemProviderAdaptor->LoadItem(0, index);
127 SysTryReturnResult(NID_UI_CTRL, pCommonItem != null, GetLastResult(), "Propagating.");
129 // pCommonItem is always _GalleryItem type.
130 _GalleryItem* pItem = static_cast<_GalleryItem*>(pCommonItem);
131 result r = __listViewModel.InsertItemToGroup(pItem, 0, index);
132 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
139 _GalleryModel::RequestToUnloadItem(int index)
141 SysTryReturn(NID_UI_CTRL, index >= 0 && index < GetItemCount(), E_OUT_OF_RANGE, E_OUT_OF_RANGE,
142 "[E_OUT_OF_RANGE] The argument(%d) is out of range.", index);
144 result r = __listViewModel.RemoveItemAt(0, index);
145 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, r, "Propagating.");
153 _GalleryModel::RequestToUnloadAllItems(void)
155 return __listViewModel.DeleteAllGroupAndItem();
159 _GalleryModel::RequestToUpdateItem(int index)
161 SysTryReturn(NID_UI_CTRL, index >= 0 && index < GetItemCount(), E_OUT_OF_RANGE, E_OUT_OF_RANGE,
162 "[E_OUT_OF_RANGE] The argument(%d) is out of range.", index);
164 _IListItemCommon* pItem = __pGalleryItemProviderAdaptor->LoadItem(0, index);
165 result r = GetLastResult();
166 SysTryReturn(NID_UI_CTRL, pItem != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
168 r = __listViewModel.SetItem(*pItem, 0, index);
169 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
175 _GalleryModel::RequestToUpdateAllItems(void)
178 result r = RequestToUnloadAllItems();
179 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
182 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
188 _GalleryModel::SetCacheSize(int size)
190 SysTryReturn(NID_UI_CTRL, size >= 0, E_OUT_OF_RANGE, E_OUT_OF_RANGE,
191 "[E_OUT_OF_RANGE] The argument(%d) is out of range.", size);
192 return __listViewModel.SetMaxCachingSize(size);
196 _GalleryModel::GetCacheSize(void) const
198 return __listViewModel.GetMaxCachingSize();
202 _GalleryModel::AddGroup(void)
204 int itemCount = GetItemCount();
205 if (__listViewModel.GetAllGroupCount() == 0)
207 result r = __listViewModel.AddGroup(itemCount);
208 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
210 //r = __listViewModel.SetAllItemCountAndHeight(1, itemCount, 1);
211 //SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
217 }}} // Tizen::Ui::Controls