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.
18 #include "dummy-control.h"
20 #include <dali-toolkit/dali-toolkit.h>
21 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
22 #include <dali-toolkit/devel-api/controls/control-devel.h>
30 DummyControl::DummyControl()
34 DummyControl::DummyControl(const DummyControl& control)
39 DummyControl::~DummyControl()
43 DummyControl DummyControl::DownCast( BaseHandle handle )
45 return Control::DownCast<DummyControl, DummyControlImpl>(handle);
48 DummyControl& DummyControl::operator=(const DummyControl& control)
50 Control::operator=( control );
54 // Used to test signal connections
55 void DummyControlImpl::CustomSlot1( Actor actor )
57 mCustomSlot1Called = true;
64 return DummyControlImpl::New();
67 DALI_TYPE_REGISTRATION_BEGIN( Toolkit::DummyControl, Toolkit::Control, Create );
68 DALI_TYPE_REGISTRATION_END()
70 Dali::PropertyRegistration dummyControlVisualProperty01(
71 typeRegistration, "testVisual", Dali::Toolkit::DummyControl::Property::TEST_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
73 Dali::PropertyRegistration dummyControlVisualProperty02(
74 typeRegistration, "testVisual2", Dali::Toolkit::DummyControl::Property::TEST_VISUAL2, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
76 Dali::PropertyRegistration dummyControlVisualProperty03(
77 typeRegistration, "foregroundVisual", Dali::Toolkit::DummyControl::Property::FOREGROUND_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
79 Dali::PropertyRegistration dummyControlVisualProperty04(
80 typeRegistration, "focusVisual", Dali::Toolkit::DummyControl::Property::FOCUS_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
82 Dali::PropertyRegistration dummyControlVisualProperty05(
83 typeRegistration, "labelVisual", Dali::Toolkit::DummyControl::Property::LABEL_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
87 DummyControl DummyControlImpl::New()
89 IntrusivePtr< DummyControlImpl > impl = new DummyControlImpl;
90 DummyControl control( *impl );
95 DummyControlImpl::DummyControlImpl()
96 : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_HOVER_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
97 mCustomSlot1Called(false)
101 DummyControlImpl::~DummyControlImpl()
105 void DummyControlImpl::RegisterVisual( Property::Index index, Toolkit::Visual::Base visual )
107 DevelControl::RegisterVisual( *this, index, visual );
109 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
110 if( iter == mRegisteredVisualIndices.end() )
112 mRegisteredVisualIndices.push_back(index);
116 void DummyControlImpl::RegisterVisual( Property::Index index, Toolkit::Visual::Base visual, bool enabled )
118 DevelControl::RegisterVisual( *this, index, visual, enabled );
120 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
121 if( iter == mRegisteredVisualIndices.end() )
123 mRegisteredVisualIndices.push_back(index);
127 void DummyControlImpl::UnregisterVisual( Property::Index index )
129 DevelControl::UnregisterVisual( *this, index );
131 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
132 if( iter != mRegisteredVisualIndices.end() )
134 mRegisteredVisualIndices.erase(iter);
138 Toolkit::Visual::Base DummyControlImpl::GetVisual( Property::Index index )
140 return DevelControl::GetVisual( *this, index );
143 void DummyControlImpl::EnableVisual( Property::Index index, bool enabled )
145 DevelControl::EnableVisual( *this, index, enabled );
148 bool DummyControlImpl::IsVisualEnabled( Property::Index index )
150 return DevelControl::IsVisualEnabled( *this, index );
153 Animation DummyControlImpl::CreateTransition( const Toolkit::TransitionData& transition )
155 return DevelControl::CreateTransition( *this, transition );
158 void DummyControlImpl::SetProperty( BaseObject* object, Dali::Property::Index index, const Dali::Property::Value& value )
160 Toolkit::DummyControl control = Toolkit::DummyControl::DownCast( Dali::BaseHandle( object ) );
161 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(control.GetImplementation());
165 case Toolkit::DummyControl::Property::TEST_VISUAL:
166 case Toolkit::DummyControl::Property::TEST_VISUAL2:
167 case Toolkit::DummyControl::Property::FOREGROUND_VISUAL:
168 case Toolkit::DummyControl::Property::FOCUS_VISUAL:
169 case Toolkit::DummyControl::Property::LABEL_VISUAL:
171 Property::Map* map = value.GetMap();
174 VisualFactory visualFactory = VisualFactory::Get();
175 Visual::Base visual = visualFactory.CreateVisual(*map);
176 dummyImpl.RegisterVisual(index, visual);
183 Property::Value DummyControlImpl::GetProperty( BaseObject* object, Dali::Property::Index propertyIndex )
185 Dali::Property::Value value;
189 Toolkit::DummyControl Impl::DummyControl::New()
191 IntrusivePtr< Toolkit::Impl::DummyControl > impl = new Toolkit::Impl::DummyControl;
192 Toolkit::DummyControl control( *impl );
198 Impl::DummyControl::DummyControl()
199 : DummyControlImpl(),
200 initializeCalled(false),
201 activatedCalled(false),
202 onAccTouchedCalled(false),
203 onAccValueChangeCalled(false),
204 themeChangeCalled(false),
205 fontChangeCalled(false),
209 longPressCalled(false),
210 stageConnectionCalled(false),
211 stageDisconnectionCalled(false),
212 childAddCalled(false),
213 childRemoveCalled(false),
214 sizeSetCalled(false),
215 sizeAnimationCalled(false),
216 touchEventCalled(false),
217 hoverEventCalled(false),
218 wheelEventCalled(false),
219 keyEventCalled(false),
220 keyInputFocusGained(false),
221 keyInputFocusLost(false)
225 Impl::DummyControl::~DummyControl() { }
228 void Impl::DummyControl::OnInitialize() { initializeCalled = true; }
229 bool Impl::DummyControl::OnAccessibilityActivated() { activatedCalled = true; return true; }
230 bool Impl::DummyControl::OnAccessibilityTouch(const TouchEvent& touchEvent) { onAccTouchedCalled = true; return true; }
231 bool Impl::DummyControl::OnAccessibilityValueChange( bool isIncrease )
233 onAccValueChangeCalled = true; return true;
236 void Impl::DummyControl::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
238 themeChangeCalled = change == StyleChange::THEME_CHANGE;
239 fontChangeCalled = change == StyleChange::DEFAULT_FONT_SIZE_CHANGE;
241 void Impl::DummyControl::OnPinch(const PinchGesture& pinch) { pinchCalled = true; }
242 void Impl::DummyControl::OnPan(const PanGesture& pan) { panCalled = true; }
243 void Impl::DummyControl::OnTap(const TapGesture& tap) { tapCalled = true; }
244 void Impl::DummyControl::OnLongPress(const LongPressGesture& longPress) { longPressCalled = true; }
245 void Impl::DummyControl::OnStageConnection( int depth ) { Control::OnStageConnection( depth ); stageConnectionCalled = true; }
246 void Impl::DummyControl::OnStageDisconnection() { stageDisconnectionCalled = true; Control::OnStageDisconnection(); }
247 void Impl::DummyControl::OnChildAdd(Actor& child) { childAddCalled = true; }
248 void Impl::DummyControl::OnChildRemove(Actor& child) { childRemoveCalled = true; }
249 void Impl::DummyControl::OnSizeSet(const Vector3& targetSize) { Control::OnSizeSet( targetSize ); sizeSetCalled = true; }
250 void Impl::DummyControl::OnSizeAnimation(Animation& animation, const Vector3& targetSize) { Control::OnSizeAnimation( animation, targetSize ); sizeAnimationCalled = true; }
251 bool Impl::DummyControl::OnTouchEvent(const TouchEvent& event) { touchEventCalled = true; return false; }
252 bool Impl::DummyControl::OnHoverEvent(const HoverEvent& event) { hoverEventCalled = true; return false; }
253 bool Impl::DummyControl::OnWheelEvent(const WheelEvent& event) { wheelEventCalled = true; return false; }
254 bool Impl::DummyControl::OnKeyEvent(const KeyEvent& event) { keyEventCalled = true; return false;}
255 void Impl::DummyControl::OnKeyInputFocusGained() { keyInputFocusGained = true; }
256 void Impl::DummyControl::OnKeyInputFocusLost() { keyInputFocusLost = true; }
258 void Impl::DummyControl::SetLayout( Property::Index visualIndex, Property::Map& map )
260 Property::Value value( map );
261 mLayouts[visualIndex] = value;
264 void Impl::DummyControl::OnRelayout( const Vector2& size, RelayoutContainer& container )
266 if ( mRelayoutCallback )
268 mRelayoutCallback( size ); // Execute callback if set
271 Property::Map emptyMap;
273 for( VisualIndices::iterator iter = mRegisteredVisualIndices.begin(); iter != mRegisteredVisualIndices.end() ; ++iter )
275 Visual::Base visual = GetVisual(*iter);
276 Property::Value value = mLayouts[*iter];
277 Property::Map* map = NULL;
279 if( value.GetType() != Property::NONE )
281 map = value.GetMap();
288 visual.SetTransformAndSize( *map, size );
292 void Impl::DummyControl::SetRelayoutCallback( RelayoutCallbackFunc callback )
294 mRelayoutCallback = callback;
298 DummyControl DummyControl::New( bool override )
300 DummyControl control;
304 control = Impl::DummyControl::New();
308 control = DummyControlImpl::New();
314 DummyControl::DummyControl( DummyControlImpl& implementation )
315 : Control( implementation )
319 DummyControl::DummyControl( Dali::Internal::CustomActor* internal )
320 : Control( internal )
322 VerifyCustomActorPointer<DummyControlImpl>(internal);
325 } // namespace Toolkit