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/visuals/visual-properties-devel.h>
23 #include <dali-toolkit/devel-api/align-enums.h>
31 DummyControl::DummyControl()
35 DummyControl::DummyControl(const DummyControl& control)
40 DummyControl::~DummyControl()
44 DummyControl DummyControl::DownCast( BaseHandle handle )
46 return Control::DownCast<DummyControl, DummyControlImpl>(handle);
49 DummyControl& DummyControl::operator=(const DummyControl& control)
51 Control::operator=( control );
55 // Used to test signal connections
56 void DummyControlImpl::CustomSlot1( Actor actor )
58 mCustomSlot1Called = true;
65 return DummyControlImpl::New();
68 DALI_TYPE_REGISTRATION_BEGIN( Toolkit::DummyControl, Toolkit::Control, Create );
69 DALI_TYPE_REGISTRATION_END()
71 Dali::PropertyRegistration dummyControlVisualProperty01(
72 typeRegistration, "testVisual", Dali::Toolkit::DummyControl::Property::TEST_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
74 Dali::PropertyRegistration dummyControlVisualProperty02(
75 typeRegistration, "testVisual2", Dali::Toolkit::DummyControl::Property::TEST_VISUAL2, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
77 Dali::PropertyRegistration dummyControlVisualProperty03(
78 typeRegistration, "foregroundVisual", Dali::Toolkit::DummyControl::Property::FOREGROUND_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
80 Dali::PropertyRegistration dummyControlVisualProperty04(
81 typeRegistration, "focusVisual", Dali::Toolkit::DummyControl::Property::FOCUS_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
83 Dali::PropertyRegistration dummyControlVisualProperty05(
84 typeRegistration, "labelVisual", Dali::Toolkit::DummyControl::Property::LABEL_VISUAL, Dali::Property::MAP, &Dali::Toolkit::DummyControlImpl::SetProperty, &Dali::Toolkit::DummyControlImpl::GetProperty );
88 DummyControl DummyControlImpl::New()
90 IntrusivePtr< DummyControlImpl > impl = new DummyControlImpl;
91 DummyControl control( *impl );
96 DummyControlImpl::DummyControlImpl()
97 : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_HOVER_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
98 mCustomSlot1Called(false)
102 DummyControlImpl::~DummyControlImpl()
106 void DummyControlImpl::RegisterVisual( Property::Index index, Toolkit::Visual::Base visual )
108 Control::RegisterVisual( index, visual );
110 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
111 if( iter == mRegisteredVisualIndices.end() )
113 mRegisteredVisualIndices.push_back(index);
117 void DummyControlImpl::RegisterVisual( Property::Index index, Toolkit::Visual::Base visual, bool enabled )
119 Control::RegisterVisual( index, visual, enabled );
121 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
122 if( iter == mRegisteredVisualIndices.end() )
124 mRegisteredVisualIndices.push_back(index);
128 void DummyControlImpl::UnregisterVisual( Property::Index index )
130 Control::UnregisterVisual( index );
132 VisualIndices::iterator iter = std::find( mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index );
133 if( iter != mRegisteredVisualIndices.end() )
135 mRegisteredVisualIndices.erase(iter);
139 Toolkit::Visual::Base DummyControlImpl::GetVisual( Property::Index index )
141 return Control::GetVisual( index );
144 void DummyControlImpl::EnableVisual( Property::Index index, bool enabled )
146 Control::EnableVisual( index, enabled );
149 bool DummyControlImpl::IsVisualEnabled( Property::Index index )
151 return Control::IsVisualEnabled( index );
154 Animation DummyControlImpl::CreateTransition( const Toolkit::TransitionData& transition )
156 return Control::CreateTransition( transition );
159 void DummyControlImpl::SetProperty( BaseObject* object, Dali::Property::Index index, const Dali::Property::Value& value )
161 Toolkit::DummyControl control = Toolkit::DummyControl::DownCast( Dali::BaseHandle( object ) );
162 DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(control.GetImplementation());
166 case Toolkit::DummyControl::Property::TEST_VISUAL:
167 case Toolkit::DummyControl::Property::TEST_VISUAL2:
168 case Toolkit::DummyControl::Property::FOREGROUND_VISUAL:
169 case Toolkit::DummyControl::Property::FOCUS_VISUAL:
170 case Toolkit::DummyControl::Property::LABEL_VISUAL:
172 Property::Map* map = value.GetMap();
175 VisualFactory visualFactory = VisualFactory::Get();
176 Visual::Base visual = visualFactory.CreateVisual(*map);
177 dummyImpl.RegisterVisual(index, visual);
184 Property::Value DummyControlImpl::GetProperty( BaseObject* object, Dali::Property::Index propertyIndex )
186 Dali::Property::Value value;
190 Toolkit::DummyControl Impl::DummyControl::New()
192 IntrusivePtr< Toolkit::Impl::DummyControl > impl = new Toolkit::Impl::DummyControl;
193 Toolkit::DummyControl control( *impl );
199 Impl::DummyControl::DummyControl()
200 : DummyControlImpl(),
201 initializeCalled(false),
202 activatedCalled(false),
203 onAccTouchedCalled(false),
204 onAccValueChangeCalled(false),
205 themeChangeCalled(false),
206 fontChangeCalled(false),
210 longPressCalled(false),
211 stageConnectionCalled(false),
212 stageDisconnectionCalled(false),
213 childAddCalled(false),
214 childRemoveCalled(false),
215 sizeSetCalled(false),
216 sizeAnimationCalled(false),
217 touchEventCalled(false),
218 hoverEventCalled(false),
219 wheelEventCalled(false),
220 keyEventCalled(false),
221 keyInputFocusGained(false),
222 keyInputFocusLost(false)
226 Impl::DummyControl::~DummyControl() { }
229 void Impl::DummyControl::OnInitialize() { initializeCalled = true; }
230 bool Impl::DummyControl::OnAccessibilityActivated() { activatedCalled = true; return true; }
231 bool Impl::DummyControl::OnAccessibilityTouch(const TouchEvent& touchEvent) { onAccTouchedCalled = true; return true; }
232 bool Impl::DummyControl::OnAccessibilityValueChange( bool isIncrease )
234 onAccValueChangeCalled = true; return true;
237 void Impl::DummyControl::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
239 themeChangeCalled = change == StyleChange::THEME_CHANGE;
240 fontChangeCalled = change == StyleChange::DEFAULT_FONT_SIZE_CHANGE;
242 void Impl::DummyControl::OnPinch(const PinchGesture& pinch) { pinchCalled = true; }
243 void Impl::DummyControl::OnPan(const PanGesture& pan) { panCalled = true; }
244 void Impl::DummyControl::OnTap(const TapGesture& tap) { tapCalled = true; }
245 void Impl::DummyControl::OnLongPress(const LongPressGesture& longPress) { longPressCalled = true; }
246 void Impl::DummyControl::OnStageConnection( int depth ) { Control::OnStageConnection( depth ); stageConnectionCalled = true; }
247 void Impl::DummyControl::OnStageDisconnection() { stageDisconnectionCalled = true; Control::OnStageDisconnection(); }
248 void Impl::DummyControl::OnChildAdd(Actor& child) { childAddCalled = true; }
249 void Impl::DummyControl::OnChildRemove(Actor& child) { childRemoveCalled = true; }
250 void Impl::DummyControl::OnSizeSet(const Vector3& targetSize) { Control::OnSizeSet( targetSize ); sizeSetCalled = true; }
251 void Impl::DummyControl::OnSizeAnimation(Animation& animation, const Vector3& targetSize) { Control::OnSizeAnimation( animation, targetSize ); sizeAnimationCalled = true; }
252 bool Impl::DummyControl::OnTouchEvent(const TouchEvent& event) { touchEventCalled = true; return false; }
253 bool Impl::DummyControl::OnHoverEvent(const HoverEvent& event) { hoverEventCalled = true; return false; }
254 bool Impl::DummyControl::OnWheelEvent(const WheelEvent& event) { wheelEventCalled = true; return false; }
255 bool Impl::DummyControl::OnKeyEvent(const KeyEvent& event) { keyEventCalled = true; return false;}
256 void Impl::DummyControl::OnKeyInputFocusGained() { keyInputFocusGained = true; }
257 void Impl::DummyControl::OnKeyInputFocusLost() { keyInputFocusLost = true; }
259 void Impl::DummyControl::SetLayout( Property::Index visualIndex, Property::Map& map )
261 Property::Value value( map );
262 mLayouts[visualIndex] = value;
265 void Impl::DummyControl::OnRelayout( const Vector2& size, RelayoutContainer& container )
267 Property::Map emptyMap;
269 for( VisualIndices::iterator iter = mRegisteredVisualIndices.begin(); iter != mRegisteredVisualIndices.end() ; ++iter )
271 Visual::Base visual = GetVisual(*iter);
272 Property::Value value = mLayouts[*iter];
273 Property::Map* map = NULL;
275 if( value.GetType() != Property::NONE )
277 map = value.GetMap();
284 visual.SetTransformAndSize( *map, size );
288 DummyControl DummyControl::New( bool override )
290 DummyControl control;
294 control = Impl::DummyControl::New();
298 control = DummyControlImpl::New();
304 DummyControl::DummyControl( DummyControlImpl& implementation )
305 : Control( implementation )
309 DummyControl::DummyControl( Dali::Internal::CustomActor* internal )
310 : Control( internal )
312 VerifyCustomActorPointer<DummyControlImpl>(internal);
315 } // namespace Toolkit