X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-field-impl.cpp;h=da4a5930a0c0796c1012c1828e154412a8461155;hp=0dc5fd7621baace8bee176bd9928b6fa204d2651;hb=refs%2Ftags%2Faccepted%2Ftizen%2Fcommon%2F20150529.134100;hpb=09f35f81061ca470e79ac674024b9e587ff44e7f diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index 0dc5fd7..da4a593 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -26,10 +26,10 @@ #include #include #include -#include -#include +#include +#include +#include #include -#include // INTERNAL INCLUDES #include @@ -48,10 +48,16 @@ namespace Toolkit namespace Internal { -namespace +namespace // unnamed namespace { + +#if defined(DEBUG_ENABLED) + Debug::Filter* gLogFilter = Debug::Filter::New(Debug::Concise, true, "LOG_TEXT_CONTROLS"); +#endif + const unsigned int DEFAULT_RENDERING_BACKEND = Dali::Toolkit::Text::DEFAULT_RENDERING_BACKEND; -} + +} // unnamed namespace namespace { @@ -111,6 +117,7 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-handle-pressed-image- DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-handle-pressed-image-right", STRING, SELECTION_HANDLE_PRESSED_IMAGE_RIGHT ) DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-highlight-color", STRING, SELECTION_HIGHLIGHT_COLOR ) DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "decoration-bounding-box", RECTANGLE, DECORATION_BOUNDING_BOX ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "input-method-settings", MAP, INPUT_METHOD_SETTINGS ) DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "max-length-reached", SIGNAL_MAX_LENGTH_REACHED ) @@ -146,6 +153,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::RENDERING_BACKEND: { int backend = value.Get< int >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p RENDERING_BACKEND %d\n", impl.mController.Get(), backend ); if( impl.mRenderingBackend != backend ) { @@ -158,7 +166,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mController ) { - impl.mController->SetText( value.Get< std::string >() ); + std::string text = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p TEXT %s\n", impl.mController.Get(), text.c_str() ); + + impl.mController->SetText( text ); } break; } @@ -166,7 +177,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mController ) { - impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_INACTIVE, value.Get< std::string >() ); + std::string text = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT %s\n", impl.mController.Get(), text.c_str() ); + + impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_INACTIVE, text ); } break; } @@ -174,7 +188,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mController ) { - impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_ACTIVE, value.Get< std::string >() ); + std::string text = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT_FOCUSED %s\n", impl.mController.Get(), text.c_str() ); + + impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_ACTIVE, text ); } break; } @@ -183,6 +200,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if( impl.mController ) { std::string fontFamily = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_FAMILY %s\n", impl.mController.Get(), fontFamily.c_str() ); if( impl.mController->GetDefaultFontFamily() != fontFamily ) { @@ -197,6 +215,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if( impl.mController ) { std::string fontStyle = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_STYLE %s\n", impl.mController.Get(), fontStyle.c_str() ); if( impl.mController->GetDefaultFontStyle() != fontStyle ) { @@ -211,6 +230,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if( impl.mController ) { float pointSize = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_STYLE %f\n", impl.mController.Get(), pointSize ); if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) ) { @@ -222,34 +242,46 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr } case Toolkit::TextField::Property::EXCEED_POLICY: { - impl.mExceedPolicy = value.Get< int >(); + // TODO break; } case Toolkit::TextField::Property::HORIZONTAL_ALIGNMENT: { - LayoutEngine& engine = impl.mController->GetLayoutEngine(); - const LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::HorizontalAlignment >( value.Get< std::string >().c_str(), - HORIZONTAL_ALIGNMENT_STRING_TABLE, - HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT ); - - if( engine.GetHorizontalAlignment() != alignment ) + if( impl.mController ) { - engine.SetHorizontalAlignment( alignment ); - impl.RequestTextRelayout(); + std::string alignStr = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p HORIZONTAL_ALIGNMENT %f\n", impl.mController.Get(), alignStr.c_str() ); + + LayoutEngine& engine = impl.mController->GetLayoutEngine(); + LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< LayoutEngine::HorizontalAlignment >( alignStr.c_str(), + HORIZONTAL_ALIGNMENT_STRING_TABLE, + HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT ); + + if( engine.GetHorizontalAlignment() != alignment ) + { + engine.SetHorizontalAlignment( alignment ); + impl.RequestTextRelayout(); + } } break; } case Toolkit::TextField::Property::VERTICAL_ALIGNMENT: { - LayoutEngine& engine = impl.mController->GetLayoutEngine(); - const LayoutEngine::VerticalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::VerticalAlignment >( value.Get< std::string >().c_str(), - VERTICAL_ALIGNMENT_STRING_TABLE, - VERTICAL_ALIGNMENT_STRING_TABLE_COUNT ); - - if( engine.GetVerticalAlignment() != alignment ) + if( impl.mController ) { - engine.SetVerticalAlignment( alignment ); - impl.RequestTextRelayout(); + std::string alignStr = value.Get< std::string >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p VERTICAL_ALIGNMENT %f\n", impl.mController.Get(), alignStr.c_str() ); + + LayoutEngine& engine = impl.mController->GetLayoutEngine(); + LayoutEngine::VerticalAlignment alignment = Scripting::GetEnumeration< LayoutEngine::VerticalAlignment >( alignStr.c_str(), + VERTICAL_ALIGNMENT_STRING_TABLE, + VERTICAL_ALIGNMENT_STRING_TABLE_COUNT ); + + if( engine.GetVerticalAlignment() != alignment ) + { + engine.SetVerticalAlignment( alignment ); + impl.RequestTextRelayout(); + } } break; } @@ -258,6 +290,8 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if ( impl.mController ) { Vector4 textColor = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p TEXT_COLOR %f,%f,%f,%f\n", impl.mController.Get(), textColor.r, textColor.g, textColor.b, textColor.a ); + if ( impl.mController->GetTextColor() != textColor ) { impl.mController->SetTextColor( textColor ); @@ -271,6 +305,8 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if ( impl.mController ) { Vector4 textColor = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT_COLOR %f,%f,%f,%f\n", impl.mController.Get(), textColor.r, textColor.g, textColor.b, textColor.a ); + if ( impl.mController->GetPlaceholderTextColor() != textColor ) { impl.mController->SetPlaceholderTextColor( textColor ); @@ -284,6 +320,8 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if( impl.mController ) { Vector2 shadowOffset = value.Get< Vector2 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SHADOW_OFFSET %f,%f\n", impl.mController.Get(), shadowOffset.x, shadowOffset.y ); + if ( impl.mController->GetShadowOffset() != shadowOffset ) { impl.mController->SetShadowOffset( shadowOffset ); @@ -297,6 +335,8 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr if( impl.mController ) { Vector4 shadowColor = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SHADOW_COLOR %f,%f,%f,%f\n", impl.mController.Get(), shadowColor.r, shadowColor.g, shadowColor.b, shadowColor.a ); + if ( impl.mController->GetShadowColor() != shadowColor ) { impl.mController->SetShadowColor( shadowColor ); @@ -309,7 +349,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mDecorator ) { - impl.mDecorator->SetColor( PRIMARY_CURSOR, value.Get< Vector4 >() ); + Vector4 color = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PRIMARY_CURSOR_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a ); + + impl.mDecorator->SetColor( PRIMARY_CURSOR, color ); } break; } @@ -317,7 +360,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mDecorator ) { - impl.mDecorator->SetColor( SECONDARY_CURSOR, value.Get< Vector4 >() ); + Vector4 color = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SECONDARY_CURSOR_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a ); + + impl.mDecorator->SetColor( SECONDARY_CURSOR, color ); } break; } @@ -325,7 +371,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mController ) { - impl.mController->SetEnableCursorBlink( value.Get< bool >() ); + bool enable = value.Get< bool >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p ENABLE_CURSOR_BLINK %d\n", impl.mController.Get(), enable ); + + impl.mController->SetEnableCursorBlink( enable ); } break; } @@ -333,7 +382,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mDecorator ) { - impl.mDecorator->SetCursorBlinkInterval( value.Get< float >() ); + float interval = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p CURSOR_BLINK_INTERVAL %f\n", impl.mController.Get(), interval ); + + impl.mDecorator->SetCursorBlinkInterval( interval ); } break; } @@ -341,13 +393,17 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mDecorator ) { - impl.mDecorator->SetCursorBlinkDuration( value.Get< float >() ); + float duration = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p CURSOR_BLINK_INTERVAL %f\n", impl.mController.Get(), duration ); + + impl.mDecorator->SetCursorBlinkDuration( duration ); } break; } case Toolkit::TextField::Property::GRAB_HANDLE_IMAGE: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p GRAB_HANDLE_IMAGE %s\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -358,6 +414,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::GRAB_HANDLE_PRESSED_IMAGE: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p GRAB_HANDLE_PRESSED_IMAGE %s\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -368,6 +425,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SCROLL_THRESHOLD: { float threshold = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SCROLL_THRESHOLD %f\n", impl.mController.Get(), threshold ); if( impl.mDecorator ) { @@ -378,6 +436,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SCROLL_SPEED: { float speed = value.Get< float >(); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SCROLL_SPEED %f\n", impl.mController.Get(), speed ); if( impl.mDecorator ) { @@ -388,6 +447,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SELECTION_HANDLE_IMAGE_LEFT: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_IMAGE_LEFT %f\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -398,6 +458,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SELECTION_HANDLE_IMAGE_RIGHT: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_IMAGE_RIGHT %f\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -408,6 +469,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_LEFT: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_PRESSED_IMAGE_LEFT %f\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -418,6 +480,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT: { ResourceImage image = ResourceImage::New( value.Get< std::string >() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_PRESSED_IMAGE_RIGHT %f\n", impl.mController.Get(), image.GetUrl().c_str() ); if( impl.mDecorator ) { @@ -428,6 +491,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr case Toolkit::TextField::Property::SELECTION_HIGHLIGHT_COLOR: { Vector4 color = value.Get< Vector4 >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SELECTION_HIGHLIGHT_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a ); if( impl.mDecorator ) { @@ -439,7 +503,10 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mDecorator ) { - impl.mDecorator->SetBoundingBox( value.Get< Rect >() ); + Rect box = value.Get< Rect >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p DECORATION_BOUNDING_BOX %d,%d %dx%d\n", impl.mController.Get(), box.x, box.y, box.width, box.height ); + + impl.mDecorator->SetBoundingBox( box ); } break; } @@ -447,10 +514,20 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr { if( impl.mController ) { - impl.mController->SetMaximumNumberOfCharacters( value.Get< int >() ); + int max = value.Get< int >(); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p MAX_LENGTH %d\n", impl.mController.Get(), max ); + + impl.mController->SetMaximumNumberOfCharacters( max ); } break; } + case Toolkit::TextField::Property::INPUT_METHOD_SETTINGS: + { + // Empty implementation for now. + Property::Map map = value.Get(); + VirtualKeyboard::ApplySettings( map ); + break; + } } // switch } // textfield } @@ -478,6 +555,7 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde { std::string text; impl.mController->GetText( text ); + DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p returning text: %s\n", impl.mController.Get(), text.c_str() ); value = text; } break; @@ -708,6 +786,10 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde } break; } + case Toolkit::TextField::Property::INPUT_METHOD_SETTINGS: + { + break; + } } //switch } @@ -768,7 +850,7 @@ void TextField::OnInitialize() self.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT ); } -void TextField::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change ) +void TextField::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change ) { GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) ); } @@ -788,6 +870,8 @@ void TextField::OnRelayout( const Vector2& size, RelayoutContainer& container ) if( mController->Relayout( size ) || !mRenderer ) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnRelayout %p Displaying new contents\n", mController.Get() ); + if( mDecorator ) { mDecorator->Relayout( size ); @@ -833,6 +917,8 @@ void TextField::OnRelayout( const Vector2& size, RelayoutContainer& container ) void TextField::OnKeyInputFocusGained() { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnKeyInputFocusGained %p\n", mController.Get() ); + VirtualKeyboard::StatusChangedSignal().Connect( this, &TextField::KeyboardStatusChanged ); ImfManager imfManager = ImfManager::Get(); @@ -855,6 +941,8 @@ void TextField::OnKeyInputFocusGained() void TextField::OnKeyInputFocusLost() { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField:OnKeyInputFocusLost %p\n", mController.Get() ); + VirtualKeyboard::StatusChangedSignal().Disconnect( this, &TextField::KeyboardStatusChanged ); ImfManager imfManager = ImfManager::Get(); @@ -876,6 +964,8 @@ void TextField::OnKeyInputFocusLost() void TextField::OnTap( const TapGesture& gesture ) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnTap %p\n", mController.Get() ); + // Show the keyboard if it was hidden. if (!VirtualKeyboard::IsVisible()) { @@ -895,6 +985,8 @@ void TextField::OnPan( const PanGesture& gesture ) bool TextField::OnKeyEvent( const KeyEvent& event ) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnKeyEvent %p keyCode %d\n", mController.Get(), event.keyCode ); + if( Dali::DALI_KEY_ESCAPE == event.keyCode || "Return" == event.keyPressedName ) // Make a Dali key code for this { @@ -907,6 +999,8 @@ bool TextField::OnKeyEvent( const KeyEvent& event ) ImfManager::ImfCallbackData TextField::OnImfEvent( Dali::ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent ) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnImfEvent %p eventName %d\n", mController.Get(), imfEvent.eventName ); + bool update( false ); std::string text; @@ -998,6 +1092,8 @@ void TextField::EnableClipping( bool clipping, const Vector2& size ) void TextField::KeyboardStatusChanged(bool keyboardShown) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::KeyboardStatusChanged %p keyboardShown %d\n", mController.Get(), keyboardShown ); + // Just hide the grab handle when keyboard is hidden. if (!keyboardShown ) {