2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "my-control-impl.h"
23 #include <dali/devel-api/scripting/enum-helper.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
26 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
27 #include <dali-toolkit/devel-api/controls/control-devel.h>
30 using namespace Dali::Toolkit;
41 Dali::BaseHandle Create()
43 return Demo::MyControl::New();
46 // Required code for Property set up.
48 DALI_TYPE_REGISTRATION_BEGIN( MyControl, Dali::Toolkit::Control, Create );
50 DALI_PROPERTY_REGISTRATION( Demo, MyControl, "iconVisual", MAP, ICON_VISUAL )
52 DALI_TYPE_REGISTRATION_END();
54 // Add an enum to string conversion entry for the control's visuals. In this case just the icon visual.
55 // Enables Setting of the property using enums or strings.
56 DALI_ENUM_TO_STRING_TABLE_BEGIN( VISUAL_PROPERTIES )
57 { "iconVisual", Demo::MyControl::Property::ICON_VISUAL },
58 DALI_ENUM_TO_STRING_TABLE_END( VISUAL_PROPERTIES )
61 } // anonymous namespace
64 Internal::MyControl::MyControl()
65 : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) )
69 Demo::MyControl Internal::MyControl::New()
71 IntrusivePtr<Internal::MyControl> impl = new Internal::MyControl();
72 Demo::MyControl handle = Demo::MyControl( *impl );
77 void MyControl::OnInitialize()
79 Dali::Actor self = Self();
80 self.SetKeyboardFocusable( true );
83 void MyControl::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value )
85 Demo::MyControl myControl = Demo::MyControl::DownCast( Dali::BaseHandle( object ) );
89 MyControl& impl = GetImpl( myControl );
92 case Demo::MyControl::Property::ICON_VISUAL:
94 Toolkit::Visual::Base iconVisual;
95 Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get();
96 Property::Map *map = value.GetMap();
97 if( map && !map->Empty() )
99 iconVisual = visualFactory.CreateVisual( *map );
104 DevelControl::RegisterVisual( impl, index, iconVisual );
112 Property::Value MyControl::GetProperty( BaseObject* object, Property::Index propertyIndex )
114 Property::Value value;
116 Demo::MyControl myControl = Demo::MyControl::DownCast( Dali::BaseHandle( object ) );
120 switch ( propertyIndex )
122 case Demo::MyControl::Property::ICON_VISUAL:
125 MyControl& impl = GetImpl( myControl );
126 Toolkit::Visual::Base visual = DevelControl::GetVisual( impl, propertyIndex );
129 visual.CreatePropertyMap( map ); // Creates a Property map containing the Visual that ICON_VISUAL currently is. Can change if state changes.