Tizen 2.1 base
[framework/osp/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 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
8 //
9 //     http://floralicense.org/license/
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         SysTryReturnVoidResult(NID_UI_CTRL, __pContextItem != null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory is not sufficient.");
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);
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(LISTVIEW::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 Color
158 _ListContextItemImpl::GetBackgroundColor(void) const
159 {
160         return __pContextItem->GetItemBackgroundColor(LIST_ITEM_STATE_NORMAL);
161 }
162
163 result
164 _ListContextItemImpl::SetBackgroundColor(const Color& color)
165 {
166         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_NORMAL, color);
167         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_PRESSED, color);
168         __pContextItem->SetItemBackgroundColor(LIST_ITEM_STATE_HIGHLIGHTED, color);
169         __pContextItem->SetItemChanged(true);
170
171         return E_SUCCESS;
172 }
173
174 result
175 _ListContextItemImpl::SetBackgroundBitmap(const Bitmap* pBitmap)
176 {
177         __pContextItem->SetItemBackgroundBitmap(LIST_ITEM_STATE_NORMAL, pBitmap);
178         __pContextItem->SetItemChanged(true);
179
180         return E_SUCCESS;
181 }
182
183 _ListViewContextItem*
184 _ListContextItemImpl::GetContextItem(void) const
185 {
186         return __pContextItem;
187 }
188
189 }}} // Tizen::Ui::Controls