[dali_2.3.20] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / text-controls / text-selection-popup-property-handler.cpp
1 /*
2  * Copyright (c) 2022 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <dali-toolkit/internal/controls/text-controls/text-selection-popup-property-handler.h>
18 #include <dali/integration-api/debug.h>
19
20 #if defined(DEBUG_ENABLED)
21 extern Debug::Filter* gLogFilter;
22 #endif
23
24 namespace Dali::Toolkit::Internal
25 {
26 void TextSelectionPopup::PropertyHandler::SetProperty(Toolkit::TextSelectionPopup selectionPopup, Property::Index index, const Property::Value& value)
27 {
28   TextSelectionPopup& impl(GetImpl(selectionPopup));
29
30   switch(index)
31   {
32     case Toolkit::TextSelectionPopup::Property::POPUP_MAX_SIZE:
33     {
34       impl.SetDimensionToCustomise(POPUP_MAXIMUM_SIZE, value.Get<Vector2>());
35       break;
36     }
37     case Toolkit::TextSelectionPopup::Property::OPTION_MAX_SIZE:
38     {
39       impl.SetDimensionToCustomise(OPTION_MAXIMUM_SIZE, value.Get<Vector2>());
40       break;
41     }
42     case Toolkit::TextSelectionPopup::Property::OPTION_MIN_SIZE:
43     {
44       impl.SetDimensionToCustomise(OPTION_MINIMUM_SIZE, value.Get<Vector2>());
45       break;
46     }
47     case Toolkit::TextSelectionPopup::Property::OPTION_DIVIDER_SIZE:
48     {
49       impl.SetDimensionToCustomise(OPTION_DIVIDER_SIZE, value.Get<Vector2>());
50       break;
51     }
52     case Toolkit::TextSelectionPopup::Property::OPTION_DIVIDER_PADDING:
53     {
54       Vector4 padding(value.Get<Vector4>());
55       impl.SetOptionDividerPadding(Padding(padding.x, padding.y, padding.z, padding.w));
56       break;
57     }
58     case Toolkit::TextSelectionPopup::Property::POPUP_CLIPBOARD_BUTTON_ICON_IMAGE:
59     {
60       impl.SetButtonImage(Toolkit::TextSelectionPopup::CLIPBOARD, value.Get<std::string>());
61       break;
62     }
63     case Toolkit::TextSelectionPopup::Property::POPUP_CUT_BUTTON_ICON_IMAGE:
64     {
65       impl.SetButtonImage(Toolkit::TextSelectionPopup::CUT, value.Get<std::string>());
66       break;
67     }
68     case Toolkit::TextSelectionPopup::Property::POPUP_COPY_BUTTON_ICON_IMAGE:
69     {
70       impl.SetButtonImage(Toolkit::TextSelectionPopup::COPY, value.Get<std::string>());
71       break;
72     }
73     case Toolkit::TextSelectionPopup::Property::POPUP_PASTE_BUTTON_ICON_IMAGE:
74     {
75       impl.SetButtonImage(Toolkit::TextSelectionPopup::PASTE, value.Get<std::string>());
76       break;
77     }
78     case Toolkit::TextSelectionPopup::Property::POPUP_SELECT_BUTTON_ICON_IMAGE:
79     {
80       impl.SetButtonImage(Toolkit::TextSelectionPopup::SELECT, value.Get<std::string>());
81       break;
82     }
83     case Toolkit::TextSelectionPopup::Property::POPUP_SELECT_ALL_BUTTON_ICON_IMAGE:
84     {
85       impl.SetButtonImage(Toolkit::TextSelectionPopup::SELECT_ALL, value.Get<std::string>());
86       break;
87     }
88     case Toolkit::TextSelectionPopup::Property::POPUP_DIVIDER_COLOR:
89     {
90       impl.mDividerColor = value.Get<Vector4>();
91       break;
92     }
93     case Toolkit::TextSelectionPopup::Property::POPUP_ICON_COLOR:
94     {
95       impl.mIconColor = value.Get<Vector4>();
96       break;
97     }
98     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_COLOR:
99     {
100       impl.mPressedColor = value.Get<Vector4>();
101       break;
102     }
103     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_CORNER_RADIUS:
104     {
105       impl.mPressedCornerRadius = value.Get<float>();
106       break;
107     }
108     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_IMAGE:
109     {
110       impl.SetPressedImage(value.Get<std::string>());
111       break;
112     }
113     case Toolkit::TextSelectionPopup::Property::POPUP_FADE_IN_DURATION:
114     {
115       impl.mFadeInDuration = value.Get<float>();
116       break;
117     }
118     case Toolkit::TextSelectionPopup::Property::POPUP_FADE_OUT_DURATION:
119     {
120       impl.mFadeOutDuration = value.Get<float>();
121       break;
122     }
123     case Toolkit::TextSelectionPopup::Property::BACKGROUND_BORDER:
124     {
125       Property::Map map = value.Get<Property::Map>();
126       impl.CreateBackgroundBorder(map);
127       break;
128     }
129     case Toolkit::TextSelectionPopup::Property::BACKGROUND:
130     {
131       Property::Map map = value.Get<Property::Map>();
132       impl.CreateBackground(map);
133       break;
134     }
135     case Toolkit::TextSelectionPopup::Property::LABEL_MINIMUM_SIZE:
136     {
137       impl.mLabelMinimumSize = value.Get<Vector2>();
138       break;
139     }
140     case Toolkit::TextSelectionPopup::Property::LABEL_PADDING:
141     {
142       Vector4 padding(value.Get<Vector4>());
143       impl.SetLabelPadding(Padding(padding.x, padding.y, padding.z, padding.w));
144       break;
145     }
146     case Toolkit::TextSelectionPopup::Property::LABEL_TEXT_VISUAL:
147     {
148       impl.mLabelTextVisual = value.Get<Property::Map>();
149       break;
150     }
151     case Toolkit::TextSelectionPopup::Property::ENABLE_SCROLL_BAR:
152     {
153       impl.mEnableScrollBar = value.Get<bool>();
154       break;
155     }
156   }
157 }
158
159 Property::Value TextSelectionPopup::PropertyHandler::GetProperty(Toolkit::TextSelectionPopup selectionPopup, Property::Index index)
160 {
161   Property::Value value;
162   TextSelectionPopup& impl(GetImpl(selectionPopup));
163
164   switch(index)
165   {
166     case Toolkit::TextSelectionPopup::Property::POPUP_MAX_SIZE:
167     {
168       value = impl.GetDimensionToCustomise(POPUP_MAXIMUM_SIZE);
169       break;
170     }
171     case Toolkit::TextSelectionPopup::Property::OPTION_MAX_SIZE:
172     {
173       value = impl.GetDimensionToCustomise(OPTION_MAXIMUM_SIZE);
174       break;
175     }
176     case Toolkit::TextSelectionPopup::Property::OPTION_MIN_SIZE:
177     {
178       value = impl.GetDimensionToCustomise(OPTION_MINIMUM_SIZE);
179       break;
180     }
181     case Toolkit::TextSelectionPopup::Property::OPTION_DIVIDER_SIZE:
182     {
183       value = impl.GetDimensionToCustomise(OPTION_DIVIDER_SIZE);
184       break;
185     }
186     case Toolkit::TextSelectionPopup::Property::OPTION_DIVIDER_PADDING:
187     {
188       Padding padding = impl.GetOptionDividerPadding();
189       value           = Vector4(padding.left, padding.right, padding.top, padding.bottom);
190       break;
191     }
192     case Toolkit::TextSelectionPopup::Property::POPUP_CLIPBOARD_BUTTON_ICON_IMAGE:
193     {
194       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::CLIPBOARD);
195       break;
196     }
197     case Toolkit::TextSelectionPopup::Property::POPUP_CUT_BUTTON_ICON_IMAGE:
198     {
199       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::CUT);
200       break;
201     }
202     case Toolkit::TextSelectionPopup::Property::POPUP_COPY_BUTTON_ICON_IMAGE:
203     {
204       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::COPY);
205       break;
206     }
207     case Toolkit::TextSelectionPopup::Property::POPUP_PASTE_BUTTON_ICON_IMAGE:
208     {
209       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::PASTE);
210       break;
211     }
212     case Toolkit::TextSelectionPopup::Property::POPUP_SELECT_BUTTON_ICON_IMAGE:
213     {
214       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::SELECT);
215       break;
216     }
217     case Toolkit::TextSelectionPopup::Property::POPUP_SELECT_ALL_BUTTON_ICON_IMAGE:
218     {
219       value = impl.GetButtonImage(Toolkit::TextSelectionPopup::SELECT_ALL);
220       break;
221     }
222     case Toolkit::TextSelectionPopup::Property::POPUP_DIVIDER_COLOR:
223     {
224       value = impl.mDividerColor;
225       break;
226     }
227     case Toolkit::TextSelectionPopup::Property::POPUP_ICON_COLOR:
228     {
229       value = impl.mIconColor;
230       break;
231     }
232     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_COLOR:
233     {
234       value = impl.mPressedColor;
235       break;
236     }
237     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_CORNER_RADIUS:
238     {
239       value = impl.mPressedCornerRadius;
240       break;
241     }
242     case Toolkit::TextSelectionPopup::Property::POPUP_PRESSED_IMAGE:
243     {
244       value = impl.GetPressedImage();
245       break;
246     }
247     case Toolkit::TextSelectionPopup::Property::POPUP_FADE_IN_DURATION:
248     {
249       value = impl.mFadeInDuration;
250       break;
251     }
252     case Toolkit::TextSelectionPopup::Property::POPUP_FADE_OUT_DURATION:
253     {
254       value = impl.mFadeOutDuration;
255       break;
256     }
257     case Toolkit::TextSelectionPopup::Property::BACKGROUND_BORDER:
258     {
259       Property::Map         map;
260       Toolkit::Visual::Base visual = DevelControl::GetVisual(impl, Toolkit::TextSelectionPopup::Property::BACKGROUND_BORDER);
261       if(visual)
262       {
263         visual.CreatePropertyMap(map);
264       }
265       value = map;
266       break;
267     }
268     case Toolkit::TextSelectionPopup::Property::BACKGROUND:
269     {
270       Property::Map         map;
271       Toolkit::Visual::Base visual = DevelControl::GetVisual(impl, Toolkit::Control::Property::BACKGROUND);
272       if(visual)
273       {
274         visual.CreatePropertyMap(map);
275       }
276       value = map;
277       break;
278     }
279     case Toolkit::TextSelectionPopup::Property::LABEL_MINIMUM_SIZE:
280     {
281       value = impl.mLabelMinimumSize;
282       break;
283     }
284     case Toolkit::TextSelectionPopup::Property::LABEL_PADDING:
285     {
286       Padding padding = impl.GetLabelPadding();
287       value           = Vector4(padding.left, padding.right, padding.top, padding.bottom);
288       break;
289     }
290     case Toolkit::TextSelectionPopup::Property::LABEL_TEXT_VISUAL:
291     {
292       value = impl.mLabelTextVisual;
293       break;
294     }
295     case Toolkit::TextSelectionPopup::Property::ENABLE_SCROLL_BAR:
296     {
297       value = impl.mEnableScrollBar;
298       break;
299     }
300   }
301
302   return value;
303 }
304
305 } // namespace Dali::Toolkit::Internal