2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
19 * @file FUiCtrl_DateTimeBarModel.cpp
20 * @brief This is the implementation file for the _DateTimeBarModel class.
23 #include "FUiCtrl_DateTimeBarModel.h"
25 using namespace Tizen::Graphics;
27 namespace Tizen { namespace Ui { namespace Controls
29 const int CACHING_SIZE = 50;
31 _DateTimeBarModel::_DateTimeBarModel(void)
32 : __selectedItemIndex(-1)
33 , __firstDrawnItemIndex(0)
36 , __maxCachingSize(CACHING_SIZE)
37 , __itemStartPositionX(0)
41 _DateTimeBarModel::~_DateTimeBarModel(void)
43 __dateTimeBarItems.RemoveAll(true);
47 _DateTimeBarModel::CreateInstanceN(void)
49 _DateTimeBarModel* pDateTimeBarModel = new (std::nothrow) _DateTimeBarModel;
50 SysTryReturn(NID_UI_CTRL, pDateTimeBarModel, null, E_OUT_OF_MEMORY,
51 "[E_OUT_OF_MEMORY] Memory allocation failed.");
54 r = pDateTimeBarModel->__dateTimeBarItems.Construct();
55 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
57 return pDateTimeBarModel;
60 delete pDateTimeBarModel;
65 _DateTimeBarModel::SetSelectedItemIndex(int index)
67 __selectedItemIndex = index;
72 _DateTimeBarModel::GetSelectedItemIndex(void) const
74 return __selectedItemIndex;
78 _DateTimeBarModel::SetFirstDrawnItemIndex(int index)
80 __firstDrawnItemIndex = index;
85 _DateTimeBarModel::GetFirstDrawnItemIndex(void) const
87 return __firstDrawnItemIndex;
91 _DateTimeBarModel::GetItemCount(void) const
93 return __dateTimeBarItems.GetCount();
97 _DateTimeBarModel::AddItem(const Tizen::Base::String& text, int actionId, _DateTimeBarAlignment alignment, int itemWidth, int margin)
99 _DateTimeBarItem* pItem = _DateTimeBarItem::CreateInstanceN(alignment, itemWidth);
101 result r = GetLastResult();
102 SysTryReturn(NID_UI_CTRL, pItem != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
104 pItem->SetText(text);
105 pItem->SetActionId(actionId);
108 _DateTimeBarItem* pPrevItem = null;
110 itemCount = GetItemCount();
114 pPrevItem = GetItemAt(itemCount - 1);
118 Rectangle itemBounds = pItem->GetBounds();
120 itemBounds.x = __itemStartPositionX;
122 pItem->SetBounds(itemBounds);
125 if (pPrevItem != null)
127 Rectangle prevItemBounds = pPrevItem->GetBounds();
128 Rectangle itemBounds = pItem->GetBounds();
129 itemBounds.x = prevItemBounds.x + prevItemBounds.width + margin;
131 pItem->SetBounds(itemBounds);
134 return __dateTimeBarItems.Add(*pItem);
138 _DateTimeBarModel::InsertItemAt(int index, const Tizen::Base::String& text, int actionId, _DateTimeBarAlignment alignment, int itemWidth, int margin)
140 _DateTimeBarItem* pItem = _DateTimeBarItem::CreateInstanceN(alignment, itemWidth);
142 result r = GetLastResult();
143 SysTryReturn(NID_UI_CTRL, pItem != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
145 pItem->SetText(text);
146 pItem->SetActionId(actionId);
148 _DateTimeBarItem* pPrevItem = GetItemAt(index);
149 if (pPrevItem != null)
151 Rectangle prevItemBounds = pPrevItem->GetBounds();
152 Rectangle itemBounds = pItem->GetBounds();
153 itemBounds.x = prevItemBounds.x - itemBounds.width - margin;
155 pItem->SetBounds(itemBounds);
158 return __dateTimeBarItems.InsertAt(*pItem, index);
162 _DateTimeBarModel::RemoveItemAt(int index)
164 if (GetFirstDrawnItemIndex() == index)
166 if (GetItemAt(index + 1) == null)
168 SetFirstDrawnItemIndex(-1);
172 return __dateTimeBarItems.RemoveAt(index, true);
176 _DateTimeBarModel::RemoveAllItems()
178 __dateTimeBarItems.RemoveAll(true);
179 SetFirstDrawnItemIndex(0);
180 SetSelectedItemIndex(-1);
184 const _DateTimeBarItem*
185 _DateTimeBarModel::GetItemAt(int index) const
187 return dynamic_cast <const _DateTimeBarItem*>(__dateTimeBarItems.GetAt(index));
191 _DateTimeBarModel::GetItemAt(int index)
193 return dynamic_cast <_DateTimeBarItem*>(__dateTimeBarItems.GetAt(index));
197 _DateTimeBarModel::GetMinimumValue(void) const
203 _DateTimeBarModel::SetMinimumValue(int minValue)
205 __minValue = minValue;
210 _DateTimeBarModel::GetMaximumValue(void) const
216 _DateTimeBarModel::SetMaximumValue(int maxValue)
218 __maxValue = maxValue;
223 _DateTimeBarModel::GetMaxCachingSize(void) const
225 return __maxCachingSize;
229 _DateTimeBarModel::SetItemStartPosition(int positionX)
231 __itemStartPositionX = positionX;
234 }}} // Tizen::Ui::Controls