2 * Copyright (c) 2014 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.
20 #include "check-box-button-impl.h"
28 #include "check-box-button-default-painter-impl.h"
44 return Toolkit::CheckBoxButton::New();
47 TypeRegistration mType( typeid(Toolkit::CheckBoxButton), typeid(Toolkit::Button), Create );
49 TypeAction a1(mType, Toolkit::CheckBoxButton::ACTION_CHECK_BOX_BUTTON_CLICK, &CheckBoxButton::DoAction);
55 // Helper function used to cast a ButtonPainterPtr to CheckBoxButtonDefaultPainterPtr
56 CheckBoxButtonDefaultPainterPtr GetCheckBoxButtonPainter( ButtonPainterPtr painter )
58 return static_cast<CheckBoxButtonDefaultPainter*>( painter.Get() );
62 Dali::Toolkit::CheckBoxButton CheckBoxButton::New()
64 // Create the implementation, temporarily owned on stack
65 IntrusivePtr< CheckBoxButton > internalCheckBoxButton = new CheckBoxButton();
67 // Pass ownership to CustomActor
68 Dali::Toolkit::CheckBoxButton checkBoxButton( *internalCheckBoxButton );
70 // Second-phase init of the implementation
71 // This can only be done after the CustomActor connection has been made...
72 internalCheckBoxButton->Initialize();
74 return checkBoxButton;
77 void CheckBoxButton::SetChecked( bool checked )
79 if( !mDimmed && ( checked != mChecked ) )
84 Toolkit::CheckBoxButton handle( GetOwner() );
86 // Notifies the painter the checkbox has been checked.
87 GetCheckBoxButtonPainter( mPainter )->Checked( handle );
90 mClickedSignalV2.Emit( handle );
94 bool CheckBoxButton::IsChecked() const
99 void CheckBoxButton::SetBackgroundImage( Image image )
101 SetBackgroundImage( ImageActor::New( image ) );
104 void CheckBoxButton::SetBackgroundImage( Actor image )
106 Toolkit::CheckBoxButton handle( GetOwner() );
107 GetCheckBoxButtonPainter( mPainter )->SetBackgroundImage( handle, image );
110 Actor& CheckBoxButton::GetBackgroundImage()
112 return mBackgroundImage;
115 Actor CheckBoxButton::GetBackgroundImage() const
117 return mBackgroundImage;
120 void CheckBoxButton::SetCheckedImage( Image image )
122 SetCheckedImage( ImageActor::New( image ) );
125 void CheckBoxButton::SetCheckedImage( Actor image )
127 Toolkit::CheckBoxButton handle( GetOwner() );
128 GetCheckBoxButtonPainter( mPainter )->SetCheckedImage( handle, image );
131 Actor& CheckBoxButton::GetCheckedImage()
133 return mCheckedImage;
136 Actor CheckBoxButton::GetCheckedImage() const
138 return mCheckedImage;
141 void CheckBoxButton::SetDimmedBackgroundImage( Image image )
143 SetDimmedBackgroundImage( ImageActor::New( image ) );
146 void CheckBoxButton::SetDimmedBackgroundImage( Actor image )
148 Toolkit::CheckBoxButton handle( GetOwner() );
149 GetCheckBoxButtonPainter( mPainter )->SetDimmedBackgroundImage( handle, image );
152 Actor& CheckBoxButton::GetDimmedBackgroundImage()
154 return mDimmedBackgroundImage;
157 Actor CheckBoxButton::GetDimmedBackgroundImage() const
159 return mDimmedBackgroundImage;
162 void CheckBoxButton::SetDimmedCheckedImage( Image image )
164 SetDimmedCheckedImage( ImageActor::New( image ) );
167 void CheckBoxButton::SetDimmedCheckedImage( Actor image )
169 Toolkit::CheckBoxButton handle( GetOwner() );
170 GetCheckBoxButtonPainter( mPainter )->SetDimmedCheckedImage( handle, image );
173 Actor& CheckBoxButton::GetDimmedCheckedImage()
175 return mDimmedCheckedImage;
178 Actor CheckBoxButton::GetDimmedCheckedImage() const
180 return mDimmedCheckedImage;
183 Actor& CheckBoxButton::GetFadeOutBackgroundImage()
185 return mFadeOutBackgroundImage;
188 Actor& CheckBoxButton::GetFadeOutCheckedImage()
190 return mFadeOutCheckedImage;
193 void CheckBoxButton::OnButtonInitialize()
195 mUseFadeAnimationProperty = Self().RegisterProperty( Toolkit::CheckBoxButton::USE_FADE_ANIMATION_PROPERTY_NAME, false );
196 mUseCheckAnimationProperty = Self().RegisterProperty( Toolkit::CheckBoxButton::USE_CHECK_ANIMATION_PROPERTY_NAME, true );
199 void CheckBoxButton::OnButtonUp()
201 if( ButtonDown == mState )
203 // Stores the state, notifies the painter and emits a signal.
204 SetChecked( !mChecked );
208 void CheckBoxButton::OnAnimationTimeSet( float animationTime )
210 GetCheckBoxButtonPainter( mPainter )->SetAnimationTime( animationTime );
213 float CheckBoxButton::OnAnimationTimeRequested() const
215 return GetCheckBoxButtonPainter( mPainter )->GetAnimationTime();
218 void CheckBoxButton::OnActivated()
220 // When the button is activated, it performs the click action
221 std::vector<Property::Value> attributes;
222 DoClickAction(attributes);
225 void CheckBoxButton::DoClickAction(const PropertyValueContainer& attributes)
227 // Prevents the button signals from doing a recursive loop by sending an action
228 // and re-emitting the signals.
229 if(!mClickActionPerforming)
231 mClickActionPerforming = true;
232 SetChecked( !mChecked );
233 mClickActionPerforming = false;
237 bool CheckBoxButton::DoAction(BaseObject* object, const std::string& actionName, const std::vector<Property::Value>& attributes)
241 Dali::BaseHandle handle(object);
243 Toolkit::CheckBoxButton button = Toolkit::CheckBoxButton::DownCast(handle);
245 if(Toolkit::CheckBoxButton::ACTION_CHECK_BOX_BUTTON_CLICK == actionName)
247 GetImplementation(button).DoClickAction(attributes);
254 CheckBoxButton::CheckBoxButton()
257 mClickActionPerforming(false)
259 // Creates specific painter.
260 mPainter = new CheckBoxButtonDefaultPainter();
263 CheckBoxButton::~CheckBoxButton()
268 } // namespace Internal
270 } // namespace Toolkit