#include <dali/public-api/events/key-event.h>
#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/type-registry.h>
+#include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/object/property-notification.h>
#include <dali/integration-api/debug.h>
#include <dali/public-api/images/resource-image.h>
const Vector3 UI_OFFSET(0.0f, 0.0f, UI_Z_OFFSET); ///< Text Selection Handles/Cursor offset.
const Vector3 DEFAULT_HANDLE_ONE_OFFSET(0.0f, -5.0f, 0.0f); ///< Handle One's Offset
const Vector3 DEFAULT_HANDLE_TWO_OFFSET(0.0f, -5.0f, 0.0f); ///< Handle Two's Offset
-const float TOP_HANDLE_TOP_OFFSET( 34.0f); ///< Offset between top handle and cutCopyPaste pop-up
-const float BOTTOM_HANDLE_BOTTOM_OFFSET(34.0f); ///< Offset between bottom handle and cutCopyPaste pop-up
+const float TOP_HANDLE_TOP_OFFSET( 34.0f); ///< Offset between top handle and cutCopyPaste pop-up
+const float BOTTOM_HANDLE_BOTTOM_OFFSET(34.0f); ///< Offset between bottom handle and cutCopyPaste pop-up
const float CURSOR_THICKNESS(4.0f);
const Degree CURSOR_ANGLE_OFFSET(2.0f); ///< Offset from the angle of italic angle.
const Vector4 DEFAULT_CURSOR_COLOR(1.0f, 1.0f, 1.0f, 1.0f);
-const std::string NEWLINE( "\n" );
+const char* const NEWLINE = "\n";
const TextStyle DEFAULT_TEXT_STYLE;
namespace Toolkit
{
-// Properties
-const Property::Index TextInput::HIGHLIGHT_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX;
-const Property::Index TextInput::CUT_AND_PASTE_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+1;
-const Property::Index TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+2;
-const Property::Index TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+3;
-const Property::Index TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+4;
-const Property::Index TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+5;
-const Property::Index TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+6;
-const Property::Index TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+7;
-const Property::Index TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+8;
-const Property::Index TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+9;
-const Property::Index TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+10;
-const Property::Index TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+11;
-const Property::Index TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+12;
-const Property::Index TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+13;
-const Property::Index TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+14;
-const Property::Index TextInput::CURSOR_COLOR_PROPERTY = Internal::TextInput::TEXTINPUT_PROPERTY_START_INDEX+15;
-
namespace Internal
{
-namespace
+namespace // Unnamed namespace
{
-// Signals
-
-const char* const SIGNAL_START_INPUT = "start-input";
-const char* const SIGNAL_END_INPUT = "end-input";
-const char* const SIGNAL_STYLE_CHANGED = "style-changed";
-const char* const SIGNAL_MAX_INPUT_CHARACTERS_REACHED = "max-input-characters-reached";
-const char* const SIGNAL_TOOLBAR_DISPLAYED = "toolbar-displayed";
-const char* const SIGNAL_TEXT_EXCEED_BOUNDARIES = "text-exceed-boundaries";
-
BaseHandle Create()
{
return Toolkit::TextInput::New();
}
-TypeRegistration typeRegistration( typeid( Toolkit::TextInput ), typeid( Toolkit::Control ), Create );
+// Setup properties, signals and actions using the type-registry.
+DALI_TYPE_REGISTRATION_BEGIN( Toolkit::TextInput, Toolkit::Control, Create )
-SignalConnectorType signalConnector1( typeRegistration, SIGNAL_START_INPUT, &TextInput::DoConnectSignal );
-SignalConnectorType signalConnector2( typeRegistration, SIGNAL_END_INPUT, &TextInput::DoConnectSignal );
-SignalConnectorType signalConnector3( typeRegistration, SIGNAL_STYLE_CHANGED, &TextInput::DoConnectSignal );
-SignalConnectorType signalConnector4( typeRegistration, SIGNAL_MAX_INPUT_CHARACTERS_REACHED, &TextInput::DoConnectSignal );
-SignalConnectorType signalConnector5( typeRegistration, SIGNAL_TOOLBAR_DISPLAYED, &TextInput::DoConnectSignal );
-SignalConnectorType signalConnector6( typeRegistration, SIGNAL_TEXT_EXCEED_BOUNDARIES, &TextInput::DoConnectSignal );
+DALI_PROPERTY_REGISTRATION( TextInput, "highlight-color", VECTOR4, HIGHLIGHT_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-bg-color", VECTOR4, CUT_AND_PASTE_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-pressed-color", VECTOR4, CUT_AND_PASTE_PRESSED_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-border-color", VECTOR4, CUT_AND_PASTE_BORDER_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-icon-color", VECTOR4, CUT_AND_PASTE_ICON_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-icon-pressed-color", VECTOR4, CUT_AND_PASTE_ICON_PRESSED_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-text-color", VECTOR4, CUT_AND_PASTE_TEXT_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-and-paste-text-pressed-color", VECTOR4, CUT_AND_PASTE_TEXT_PRESSED_COLOR )
+DALI_PROPERTY_REGISTRATION( TextInput, "cut-button-position-priority", UNSIGNED_INTEGER, CUT_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "copy-button-position-priority", UNSIGNED_INTEGER, COPY_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "paste-button-position-priority", UNSIGNED_INTEGER, PASTE_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "select-button-position-priority", UNSIGNED_INTEGER, SELECT_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "select-all-button-position-priority", UNSIGNED_INTEGER, SELECT_ALL_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "clipboard-button-position-priority", UNSIGNED_INTEGER, CLIPBOARD_BUTTON_POSITION_PRIORITY )
+DALI_PROPERTY_REGISTRATION( TextInput, "popup-offset-from-text", VECTOR4, POP_UP_OFFSET_FROM_TEXT )
+DALI_PROPERTY_REGISTRATION( TextInput, "cursor-color", VECTOR4, CURSOR_COLOR )
-}
+DALI_SIGNAL_REGISTRATION( TextInput, "start-input", SIGNAL_START_INPUT )
+DALI_SIGNAL_REGISTRATION( TextInput, "end-input", SIGNAL_END_INPUT )
+DALI_SIGNAL_REGISTRATION( TextInput, "style-changed", SIGNAL_STYLE_CHANGED )
+DALI_SIGNAL_REGISTRATION( TextInput, "max-input-characters-reached", SIGNAL_MAX_INPUT_CHARACTERS_REACHED )
+DALI_SIGNAL_REGISTRATION( TextInput, "toolbar-displayed", SIGNAL_TOOLBAR_DISPLAYED )
+DALI_SIGNAL_REGISTRATION( TextInput, "text-exceed-boundaries", SIGNAL_TEXT_EXCEED_BOUNDARIES )
-PropertyRegistration property1( typeRegistration, "highlight-color", Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property2( typeRegistration, "cut-and-paste-bg-color", Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property3( typeRegistration, "cut-and-paste-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property4( typeRegistration, "cut-and-paste-icon-color", Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property5( typeRegistration, "cut-and-paste-icon-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property6( typeRegistration, "cut-and-paste-text-color", Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property7( typeRegistration, "cut-and-paste-text-pressed-color", Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property8( typeRegistration, "cut-and-paste-border-color", Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property9( typeRegistration, "cut-button-position-priority", Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property10( typeRegistration, "copy-button-position-priority", Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property11( typeRegistration, "paste-button-position-priority", Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property12( typeRegistration, "select-button-position-priority", Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property13( typeRegistration, "select-all-button-position-priority", Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property14( typeRegistration, "clipboard-button-position-priority", Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY, Property::UNSIGNED_INTEGER, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property15( typeRegistration, "popup-offset-from-text", Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
-PropertyRegistration property16( typeRegistration, "cursor-color", Toolkit::TextInput::CURSOR_COLOR_PROPERTY, Property::VECTOR4, &TextInput::SetProperty, &TextInput::GetProperty );
+DALI_TYPE_REGISTRATION_END()
+}
// [TextInput::HighlightInfo] /////////////////////////////////////////////////
switch ( propertyIndex )
{
- case Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::HIGHLIGHT_COLOR:
{
textInputImpl.SetMaterialDiffuseColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_BORDER_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupBorderColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupIconColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupIconPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupTextColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_PRESSED_COLOR:
{
textInputImpl.mPopupPanel.SetCutPastePopupTextPressedColor( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsCut, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::COPY_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsCopy, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::PASTE_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsPaste, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsSelect, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_ALL_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsSelectAll, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CLIPBOARD_BUTTON_POSITION_PRIORITY:
{
textInputImpl.mPopupPanel.SetButtonPriorityPosition( TextInputPopup::ButtonsClipboard, value.Get<unsigned int>() );
break;
}
- case Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY:
+ case Toolkit::TextInput::Property::POP_UP_OFFSET_FROM_TEXT:
{
textInputImpl.SetOffsetFromText( value.Get< Vector4 >() );
break;
}
- case Toolkit::TextInput::CURSOR_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CURSOR_COLOR:
{
textInputImpl.mCursor.SetColor( value.Get< Vector4 >() );
+ break;
}
}
}
switch ( propertyIndex )
{
- case Toolkit::TextInput::HIGHLIGHT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::HIGHLIGHT_COLOR:
{
value = textInputImpl.GetMaterialDiffuseColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupPressedColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_BORDER_COLOR_PROPERTY :
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_BORDER_COLOR :
{
value = textInputImpl.mPopupPanel.GetCutPastePopupBorderColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupIconColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_ICON_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_ICON_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupIconPressedColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupTextColor();
break;
}
- case Toolkit::TextInput::CUT_AND_PASTE_TEXT_PRESSED_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_AND_PASTE_TEXT_PRESSED_COLOR:
{
value = textInputImpl.mPopupPanel.GetCutPastePopupTextPressedColor();
break;
}
- case Toolkit::TextInput::CUT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CUT_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsCut );
break;
}
- case Toolkit::TextInput::COPY_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::COPY_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsCopy );
break;
}
- case Toolkit::TextInput::PASTE_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::PASTE_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsPaste );
break;
}
- case Toolkit::TextInput::SELECT_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsSelect );
break;
}
- case Toolkit::TextInput::SELECT_ALL_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::SELECT_ALL_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsSelectAll );
break;
}
- case Toolkit::TextInput::CLIPBOARD_BUTTON_POSITION_PRIORITY_PROPERTY:
+ case Toolkit::TextInput::Property::CLIPBOARD_BUTTON_POSITION_PRIORITY:
{
value = textInputImpl.mPopupPanel.GetButtonPriorityPosition( TextInputPopup::ButtonsClipboard );
break;
}
- case Toolkit::TextInput::POP_UP_OFFSET_FROM_TEXT_PROPERTY:
+ case Toolkit::TextInput::Property::POP_UP_OFFSET_FROM_TEXT:
{
value = textInputImpl.GetOffsetFromText();
break;
}
- case Toolkit::TextInput::CURSOR_COLOR_PROPERTY:
+ case Toolkit::TextInput::Property::CURSOR_COLOR:
{
value = textInputImpl.mCursor.GetCurrentColor();
}