1 #ifndef DALI_DEMO_MY_CONTROL_H
2 #define DALI_DEMO_MY_CONTROL_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
20 #include <dali-toolkit/dali-toolkit.h>
31 * @brief MyControl is an example control,
33 * @details It's purpose is to show how to create a simple control to work with the style sheet and state changes.
34 * States changes includes Normal, Focused and Disabled, this example uses the style sheet to set visuals for Normal and Focused states.
35 * When the Focus manager changes the control to be focused the visual displayed is changed and vice versa.
37 * The visual has the property name ICON_VISUAL with the style sheet string equivalent of "iconVisual"
41 class MyControl : public Dali::Toolkit::Control
45 * The start and end property ranges for this Control
46 * My control can use properties from Toolkit::Control as it is derived from it. As control is derived from Actor, MyControl can also use Dali::Actor Properties.
48 * To ensure that the Property indexes from MyControl do not shadow any from Control we start it's index from the end of Toolkit::Control's indexes.
50 * Toolkit::Control would have done the same with Actor.
52 * The end index for this control is set to the start index + 1000 hence MyControl can have 1000 property indexes.
54 * PROPERTY_END_INDEX for MyControl is public, if another control is derived from it then if can specify MyControl::PROPERTY_END_INDEX+1 to start it's
55 * indexing after MyControls last index.
59 PROPERTY_START_INDEX = Dali::Toolkit::Control::CONTROL_PROPERTY_END_INDEX + 1,
60 PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000,
61 ANIMATABLE_PROPERTY_START_INDEX = Dali::ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX,
62 ANIMATABLE_PROPERTY_END_INDEX = ANIMATABLE_PROPERTY_START_INDEX + 1000
70 * @brief name "iconVisual", type string if it is a url, map otherwise
71 * @details Sets the icon visual to be displayed by the control
73 ICON_VISUAL = PROPERTY_START_INDEX
77 public: // Construction / destruction
79 * @brief Create an uninitialized handle
84 * @brief Create a new MyControl
86 static MyControl New();
89 * @brief Destructor. This is non-virtual since derived Handle types must not contain data or virtual methods
94 * @brief Copy Constructor
96 * @param[in] shadowButton the handle of the control to copy
98 MyControl(const MyControl& shadowButton);
101 * @brief Assignment Operator
103 * @param[in] shadowButton the source of the assignment
105 MyControl& operator=(const MyControl& shadowButton);
110 * @param[in] shadowButton the handle of control to downcast to MyControl
112 static MyControl DownCast(BaseHandle handle);
114 public: // // Not intended for application developers
117 * @brief Create a handle from an implementation
119 MyControl(Internal::MyControl& implementation);
122 * @brief Allow the creation of an ShadowButton handle from an internal CustomActor pointer
124 MyControl(Dali::Internal::CustomActor* internal);
130 #endif // DALI_DEMO_MY_CONTROL_H