Changed indicator bg color.
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_ListContextItemImpl.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
18 /**
19  * @file        FUiCtrl_ListContextItemImpl.cpp
20  * @brief       This is the implementation file for _ListContextItemImpl class.
21  *
22  * This file contains the implementation of _ListContextItemImpl class.
23  */
24
25 #include <FBaseSysLog.h>
26 #include <FUiCtrlListContextItem.h>
27 #include "FUi_ResourceManager.h"
28 #include "FUiCtrl_ListContextItemImpl.h"
29 #include "FUiCtrl_ListViewContextItem.h"
30
31 #ifdef MEMORY_LEAK_CHECK
32 #include "mem_leak_check.h"
33 #endif
34
35 using namespace Tizen::Base;
36 using namespace Tizen::Graphics;
37
38 namespace Tizen { namespace Ui { namespace Controls
39 {
40
41 _ListContextItemImpl*
42 _ListContextItemImpl::GetInstance(ListContextItem& listContextItem)
43 {
44         return listContextItem.__pImpl;
45 }
46
47 const _ListContextItemImpl*
48 _ListContextItemImpl::GetInstance(const ListContextItem& listContextItem)
49 {
50         return listContextItem.__pImpl;
51 }
52
53 _ListContextItemImpl::_ListContextItemImpl(ListContextItem* pPublic)
54         : __pPublic(pPublic)
55         , __pContextItem(null)
56 {
57         // nothing
58 }
59
60 _ListContextItemImpl::~_ListContextItemImpl(void)
61 {
62         if (__pContextItem != null)
63         {
64                 __pContextItem->Release();
65         }
66 }
67
68 const char*
69 _ListContextItemImpl::GetPublicClassName(void) const
70 {
71         return "Tizen::Ui::Controls::ListContextItem";
72 }
73
74 const ListContextItem&
75 _ListContextItemImpl::GetPublic(void) const
76 {
77         return static_cast <const ListContextItem&>(*__pPublic);
78 }
79
80 ListContextItem&
81 _ListContextItemImpl::GetPublic(void)
82 {
83         return *__pPublic;
84 }
85
86 _ListContextItemImpl*
87 _ListContextItemImpl::CreateListContextItemImplN(ListContextItem* pPublic)
88 {
89         result r = E_SUCCESS;
90
91         _ListContextItemImpl* pImpl = new (std::nothrow) _ListContextItemImpl(pPublic);
92         SysTryReturn(NID_UI_CTRL, pImpl != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
93
94         r = pImpl->Construct();
95         SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
96
97         return pImpl;
98
99 CATCH:
100         delete pImpl;
101         pImpl = null;
102
103         return null;
104 }
105
106 result
107 _ListContextItemImpl::Construct(void)
108 {
109         __pContextItem = _ListViewContextItem::CreateListViewContextItemN(0.0f);
110         SysTryReturn(NID_UI_CTRL, (__pContextItem != null), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
111
112         Color bgColor(0, 0, 0, 0);
113         GET_COLOR_CONFIG(TABLEVIEW::CONTEXTITEM_BG_NORMAL, bgColor);
114         SetBackgroundColor(bgColor);
115
116         return E_SUCCESS;
117 }
118
119 result
120 _ListContextItemImpl::AddElement(int elementId, const String& text, bool enable)
121 {
122         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX), E_INVALID_ARG, E_INVALID_ARG,
123                         ("[E_INVALID_ARG] The element ID should not be less than 0."));
124
125         SysTryReturn(NID_UI_CTRL, (__pContextItem->AddElement(elementId, text, enable) == true), E_SYSTEM, E_SYSTEM,
126                         ("[E_SYSTEM] Unable to add an element."));
127
128         return E_SUCCESS;
129 }
130
131 result
132 _ListContextItemImpl::AddElement(int elementId, const Bitmap& normalBitmap,
133                 const Bitmap& pressedBitmap, const Bitmap* pHighlightedBitmap, bool enable)
134 {
135         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX), E_INVALID_ARG, E_INVALID_ARG,
136                         ("[E_INVALID_ARG] The element ID should not be less than 0."));
137
138         SysTryReturn(NID_UI_CTRL, (__pContextItem->AddElement(elementId, &normalBitmap, &pressedBitmap, pHighlightedBitmap, enable) == true),
139                         E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Unable to add an element.");
140
141         return E_SUCCESS;
142 }
143
144 result
145 _ListContextItemImpl::AddElement(int elementId, const String& text, const Bitmap& normalBitmap,
146                 const Bitmap& pressedBitmap, const Bitmap* pHighlightedBitmap, bool enable)
147 {
148         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX), E_INVALID_ARG, E_INVALID_ARG,
149                         ("[E_INVALID_ARG] The element ID should not be less than 0."));
150
151         SysTryReturn(NID_UI_CTRL, (__pContextItem->AddElement(elementId, text, &normalBitmap, &pressedBitmap, pHighlightedBitmap, enable) == true),
152                         E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Unable to add an element.");
153
154         return E_SUCCESS;
155 }
156
157 result
158 _ListContextItemImpl::SetElementBackgroundColor(int elementId, ListContextItemElementStatus status, const Color& backgroundColor)
159 {
160         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX) && __pContextItem->HasElement(elementId),
161                         E_INVALID_ARG, E_INVALID_ARG, ("[E_INVALID_ARG] A specified elementId."));
162
163         bool ret = __pContextItem->SetElementBackgroundColor(elementId, (ListViewContextItemElementDrawingStatus)status, backgroundColor);
164
165         return (ret ? E_SUCCESS : E_INVALID_OPERATION);
166 }
167
168 Color
169 _ListContextItemImpl::GetElementBackgroundColor(int elementId, ListContextItemElementStatus status) const
170 {
171         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX) && __pContextItem->HasElement(elementId),
172                         Color(0), E_INVALID_ARG, ("[E_INVALID_ARG] A specified elementId."));
173
174         return __pContextItem->GetElementBackgroundColor(elementId, (ListViewContextItemElementDrawingStatus)status);
175 }
176
177 result
178 _ListContextItemImpl::SetElementTextColor(int elementId, ListContextItemElementStatus status, const Color& textColor)
179 {
180         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX) && __pContextItem->HasElement(elementId),
181                         E_INVALID_ARG, E_INVALID_ARG, ("[E_INVALID_ARG] A specified elementId."));
182
183         bool ret = __pContextItem->SetElementTextColor(elementId, (ListViewContextItemElementDrawingStatus)status, textColor);
184
185         return (ret ? E_SUCCESS : E_INVALID_OPERATION);
186 }
187
188 Color
189 _ListContextItemImpl::GetElementTextColor(int elementId, ListContextItemElementStatus status) const
190 {
191         SysTryReturn(NID_UI_CTRL, (elementId >= 0) && (elementId <= Integer::VALUE_MAX) && __pContextItem->HasElement(elementId),
192                         Color(0), E_INVALID_ARG, ("[E_INVALID_ARG] A specified elementId."));
193
194         return __pContextItem->GetElementTextColor(elementId, (ListViewContextItemElementDrawingStatus)status);
195 }
196
197 Color
198 _ListContextItemImpl::GetBackgroundColor(void) const
199 {
200         return __pContextItem->GetItemBackgroundColor(LIST_ITEM_STATE_NORMAL);
201 }
202
203 result
204 _ListContextItemImpl::SetBackgroundColor(const Color& color)
205 {
206         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_NORMAL, color);
207         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_PRESSED, color);
208         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_HIGHLIGHTED, color);
209         __pContextItem->SetItemChanged(true);
210
211         return E_SUCCESS;
212 }
213
214 result
215 _ListContextItemImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
216 {
217         __pContextItem->SetItemBackgroundBitmap(LIST_ITEM_STATE_NORMAL, pBitmap);
218         __pContextItem->SetItemChanged(true);
219
220         return E_SUCCESS;
221 }
222
223 _ListViewContextItem*
224 _ListContextItemImpl::GetContextItem(void) const
225 {
226         return __pContextItem;
227 }
228
229 }}} // Tizen::Ui::Controls