#define __DALI_TOOLKIT_CONTROL_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* @see Internal::Control
*
* Signals
- * | %Signal Name | Method |
- * |-------------------|-----------------------------------------------------|
- * | key-event | @ref KeyEventSignal() |
- * | tapped | @ref GetTapGestureDetector().DetectedSignal() |
- * | panned | @ref GetPanGestureDetector().DetectedSignal() |
- * | pinched | @ref GetPinchGestureDetector().DetectedSignal() |
- * | long-pressed | @ref GetLongPressGestureDetector().DetectedSignal() |
+ * | %Signal Name | Method |
+ * |------------------------|-----------------------------------------------------|
+ * | key-event | @ref KeyEventSignal() |
+ * | key-input-focus-gained | @ref KeyInputFocusGainedSignal() |
+ * | key-input-focus-lost | @ref KeyInputFocusLostSignal() |
+ * | tapped | @ref GetTapGestureDetector().DetectedSignal() |
+ * | panned | @ref GetPanGestureDetector().DetectedSignal() |
+ * | pinched | @ref GetPinchGestureDetector().DetectedSignal() |
+ * | long-pressed | @ref GetLongPressGestureDetector().DetectedSignal() |
*
* Actions
- * | %Action Name | %Control method called |
- * |-------------------|-----------------------------------------------------|
- * | control-activated | %OnActivated() |
+ * | %Action Name | %Control method called |
+ * |-------------------------|----------------------------------------------------|
+ * | accessibility-activated | %OnAccessibilityActivated() |
*/
class DALI_IMPORT_API Control : public CustomActor
{
{
enum
{
- BACKGROUND_COLOR = PROPERTY_START_INDEX, ///< name "background-color", @see SetBackgroundColor, type Vector4
+ STYLE_NAME = PROPERTY_START_INDEX, ///< name "style-name", @see SetStyleName, type std::string
+ BACKGROUND_COLOR, ///< name "background-color", @see SetBackgroundColor, type Vector4
BACKGROUND_IMAGE, ///< name "background-image", @see SetBackgroundImage, type Map
KEY_INPUT_FOCUS, ///< name "key-input-focus", @see SetKeyInputFocus, type bool
};
/**
* @brief Describes the direction to move the keyboard focus towards.
*/
- enum KeyboardFocusNavigationDirection
+ struct KeyboardFocus
{
- Left, ///< Move keyboard focus towards the left direction
- Right, ///< Move keyboard focus towards the right direction
- Up, ///< Move keyboard focus towards the up direction
- Down ///< Move keyboard focus towards the down direction
+ enum Direction
+ {
+ LEFT, ///< Move keyboard focus towards the left direction
+ RIGHT, ///< Move keyboard focus towards the right direction
+ UP, ///< Move keyboard focus towards the up direction
+ DOWN ///< Move keyboard focus towards the down direction
+ };
};
// Typedefs
/// @brief Key Event signal type;
typedef Signal<bool ( Control, const KeyEvent& ) > KeyEventSignalType;
+ /// @brief Key InputFocusType signal type;
+ typedef Signal<void ( Control ) > KeyInputFocusSignalType;
+
public: // Creation & Destruction
/**
*/
static Control DownCast( BaseHandle handle );
- /**
- * @brief Retrieve the Control implementation.
- *
- * @return The implementation.
- */
- Internal::Control& GetImplementation();
-
- /**
- * @brief Retrieve the Control implementation.
- *
- * @return The implementation.
- */
- const Internal::Control& GetImplementation() const;
-
// Key Input
/**
*/
LongPressGestureDetector GetLongPressGestureDetector() const;
+ // Styling
+
+ /**
+ * @brief Sets the name of the style to be applied to the control.
+ *
+ * @param[in] styleName A string matching a style described in a stylesheet.
+ */
+ void SetStyleName( const std::string& styleName );
+
+ /**
+ * @brief Retrieves the name of the style to be applied to the control (if any).
+ *
+ * @return A string matching a style or an empty string.
+ */
+ const std::string& GetStyleName() const;
+
// Background
/**
*/
void ClearBackground();
- /**
- * @brief Retrieves the actor used as the background for this control.
- *
- * @return The actor that used as the background for this control.
- */
- Actor GetBackgroundActor() const;
-
// Signals
/**
* @code
* bool YourCallbackName(Control control, const KeyEvent& event);
* @endcode
- * The return value of True, indicates that the touch event should be consumed.
- * Otherwise the signal will be emitted on the next sensitive parent of the actor.
+ * The return value of True, indicates that the event should be consumed.
+ * Otherwise the signal will be emitted on the next parent of the actor.
* @pre The Control has been initialized.
* @return The signal to connect to.
*/
KeyEventSignalType& KeyEventSignal();
+ /**
+ * @brief This signal is emitted when the control gets Key Input Focus
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * bool YourCallbackName( Control control );
+ * @endcode
+ * The return value of True, indicates that the event should be consumed.
+ * Otherwise the signal will be emitted on the next parent of the actor.
+ * @pre The Control has been initialized.
+ * @return The signal to connect to.
+ */
+ KeyInputFocusSignalType& KeyInputFocusGainedSignal();
+
+ /**
+ * @brief This signal is emitted when the control loses Key Input Focus
+ * which could be due to it being gained by another Control or Actor or just cleared from
+ * this control as no longer required.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * bool YourCallbackName( Control control );
+ * @endcode
+ * The return value of True, indicates that the event should be consumed.
+ * Otherwise the signal will be emitted on the next parent of the actor.
+ * @pre The Control has been initialized.
+ * @return The signal to connect to.
+ */
+ KeyInputFocusSignalType& KeyInputFocusLostSignal();
+
public: // Intended for control developers
/**