+ /**
+ * Sets up the autorepeating timer.
+ * @param[in] delay The delay time in seconds.
+ */
+ void SetUpTimer( float delay );
+
+ /**
+ * Button has been pressed
+ */
+ void Pressed();
+
+ /**
+ * This method is called the button is down.
+ */
+ void ButtonDown();
+
+ /**
+ * This method is called when the button is up.
+ */
+ void ButtonUp();
+
+ /**
+ * Slot called when Dali::Timer::SignalTick signal. Resets the autorepeating timer.
+ */
+ bool AutoRepeatingSlot();
+
+ /**
+ * Check the requested state is an allowed transition.
+ * Some states can not be transitioned to from certain states.
+ * @param[in] requestedState check if can transition to this state
+ * @return bool true if state change valid
+ */
+ bool ValidateState( State requestedState );
+
+ /**
+ * Changes the button state when an action occurs on it
+ * @param[in] requestedState the state to change to
+ */
+ void ChangeState( State requestedState );
+
+ /**
+ * This method is called when the button is released.
+ */
+ void Released();
+
+protected:
+
+ /**
+ * Set Text Label Padding
+ * @param[in] padding BEGIN END BOTTOM TOP
+ */
+ void SetLabelPadding( const Padding& padding );
+
+ /**
+ * Get Text Label padding
+ * @return Padding
+ */
+ Padding GetLabelPadding();
+
+ /**
+ * Set Foreground/icon Padding
+ * @param[in] padding BEGIN END BOTTOM TOP
+ */
+ void SetForegroundPadding( const Padding& padding);
+
+ /**
+ * Get Foreground padding
+ * @ return Padding
+ */
+ Padding GetForegroundPadding();
+
+ /**
+ * @brief Setup the button components for example foregrounds and background
+ * @param[in] index the index of the visual to set
+ * @param[in] value the value to set on the component
+ * @param[in] visualDepth the depth of the visual if overlapping another
+ */
+ void CreateVisualsForComponent( Property::Index index, const Property::Value& value, const int visualDepth );
+
+ /**
+ * @brief Get the Property map for the given Visual
+ * @param[in] visualIndex visual index of the required visual
+ * @param[out] retreivedMap the property map used to construct the required visual
+ * @return bool success flag, true if visual found
+ */
+ bool GetPropertyMapForVisual( Property::Index visualIndex, Property::Map& retreivedMap ) const;
+ /**
+ * Returns the animation to be used for transition, creating the animation if needed.
+ * @return The initialised transition animation.
+ */
+ Dali::Animation GetTransitionAnimation();
+
+ /**
+ * @brief Set the position of the label relative to foreground/icon, if both present
+ * @param[in] labelAlignment given alignment setting
+ */
+ void SetLabelAlignment( Align labelAlignment);
+
+ /**
+ * @brief Get set alignment of label in relation to foreground/icon
+ * @return Set alignment value
+ */
+ Align GetLabelAlignment();
+
+ /**
+ * Removes the visual from the button (un-staged)
+ * If the derived button does not want the visual removed then use this virtual function to
+ * define the required behaviour.
+ * Can decide to only remove specified visuals via index
+ */
+ virtual void OnButtonVisualRemoval( Property::Index visualIndex );
+
+