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-selection-toolbar-impl.cpp;h=cdd2226ea5d5049bc59648ce38404c566a0e912d;hp=e26614d15158747d6f9e0fec429fe464e6b5c3fa;hb=0e462103c222ad05916840bc7d7c902cf5fc82a1;hpb=37e368d48d56b9b419263534b7de165ea990cbac diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp index e26614d..cdd2226 100644 --- a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -18,16 +18,17 @@ // CLASS HEADER #include -// INTERNAL INCLUDES -#include -#include - // EXTERNAL INCLUDES -#include +#include +#include #include #include -#include -#include +#include +#include + +// INTERNAL INCLUDES +#include +#include namespace Dali { @@ -40,7 +41,6 @@ namespace Internal namespace { -const Dali::Vector2 DEFAULT_MAX_SIZE( 400.0f, 65.0f ); ///< The maximum size of the Toolbar. BaseHandle Create() { @@ -51,8 +51,9 @@ BaseHandle Create() DALI_TYPE_REGISTRATION_BEGIN( Toolkit::TextSelectionToolbar, Toolkit::Control, Create ); -DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionToolbar, "max-size", VECTOR2, MAX_SIZE ) -DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionToolbar, "enable-overshoot", BOOLEAN, ENABLE_OVERSHOOT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionToolbar, "maxSize", VECTOR2, MAX_SIZE ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionToolbar, "enableOvershoot", BOOLEAN, ENABLE_OVERSHOOT ) +DALI_PROPERTY_REGISTRATION( Toolkit, TextSelectionToolbar, "scrollView", MAP, SCROLL_VIEW ) DALI_TYPE_REGISTRATION_END() @@ -90,9 +91,23 @@ void TextSelectionToolbar::SetProperty( BaseObject* object, Property::Index inde } case Toolkit::TextSelectionToolbar::Property::ENABLE_OVERSHOOT: { + if( !impl.mScrollView ) + { + impl.mScrollView = Toolkit::ScrollView::New(); + } impl.mScrollView.SetOvershootEnabled( value.Get< bool >() ); break; } + case Toolkit::TextSelectionToolbar::Property::SCROLL_VIEW: + { + // Get a Property::Map from the property if possible. + Property::Map setPropertyMap; + if( value.Get( setPropertyMap ) ) + { + impl.ConfigureScrollview( setPropertyMap ); + } + break; + } } // switch } // TextSelectionToolbar } @@ -136,38 +151,13 @@ void TextSelectionToolbar::OnRelayout( const Vector2& size, RelayoutContainer& c mScrollView.SetRulerX( mRulerX ); } -void TextSelectionToolbar::OnStageConnection( int depth ) -{ - // Call the Control::OnStageConnection() to set the depth of the background. - Control::OnStageConnection( depth ); - - // Traverse the dividers and set the depth. - for( unsigned int i = 0; i < mDividerIndexes.Count(); ++i ) - { - Actor divider = mTableOfButtons.GetChildAt( Toolkit::TableView::CellPosition( 0, mDividerIndexes[ i ] ) ); - - ImageActor dividerImageActor = ImageActor::DownCast( divider ); - if( dividerImageActor ) - { - dividerImageActor.SetSortModifier( DECORATION_DEPTH_INDEX + depth ); - } - else - { - // TODO at the moment divider are image actors. - } - } - - // Texts are controls, they have their own OnStageConnection() implementation. - // Icons are inside a TableView. It has it's own OnStageConnection() implementation. -} - void TextSelectionToolbar::SetPopupMaxSize( const Size& maxSize ) { mMaxSize = maxSize; - if (mScrollView && mStencilLayer ) + if (mScrollView && mToolbarLayer ) { mScrollView.SetMaximumSize( mMaxSize ); - mStencilLayer.SetMaximumSize( mMaxSize ); + mToolbarLayer.SetMaximumSize( mMaxSize ); } } @@ -199,20 +189,19 @@ void TextSelectionToolbar::SetUpScrollView() void TextSelectionToolbar::SetUp() { Actor self = Self(); - self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); - // Create Layer and Stencil. Layer enable's clipping when content exceed maximum defined width. - mStencilLayer = Layer::New(); - mStencilLayer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); - mStencilLayer.SetParentOrigin( ParentOrigin::CENTER ); + self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); - ImageActor stencil = CreateSolidColorActor( Color::RED ); - stencil.SetDrawMode( DrawMode::STENCIL ); - stencil.SetVisible( true ); - stencil.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - stencil.SetParentOrigin( ParentOrigin::CENTER ); + // Create Layer to house the toolbar. + mToolbarLayer = Layer::New(); + mToolbarLayer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); + mToolbarLayer.SetAnchorPoint( AnchorPoint::CENTER ); + mToolbarLayer.SetParentOrigin( ParentOrigin::CENTER ); - mScrollView = Toolkit::ScrollView::New(); + if( !mScrollView ) + { + mScrollView = Toolkit::ScrollView::New(); + } SetUpScrollView(); // Toolbar must start with at least one option, adding further options with increase it's size @@ -221,11 +210,10 @@ void TextSelectionToolbar::SetUp() mTableOfButtons.SetParentOrigin( ParentOrigin::CENTER_LEFT ); mTableOfButtons.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); - - mStencilLayer.Add( stencil ); - mStencilLayer.Add( mScrollView ); mScrollView.Add( mTableOfButtons ); - self.Add( mStencilLayer ); + mToolbarLayer.Add( mScrollView ); + + self.Add( mToolbarLayer ); } void TextSelectionToolbar::OnScrollStarted( const Vector2& position ) @@ -263,11 +251,32 @@ void TextSelectionToolbar::ResizeDividers( Size& size ) void TextSelectionToolbar::RaiseAbove( Layer target ) { - mStencilLayer.RaiseAbove( target ); + mToolbarLayer.RaiseAbove( target ); +} + +void TextSelectionToolbar::ConfigureScrollview( const Property::Map& properties ) +{ + // Set any properties specified for the label by iterating through all property key-value pairs. + for( unsigned int i = 0, mapCount = properties.Count(); i < mapCount; ++i ) + { + const StringValuePair& propertyPair( properties.GetPair( i ) ); + + // Convert the property string to a property index. + Property::Index setPropertyIndex = mScrollView.GetPropertyIndex( propertyPair.first ); + if( setPropertyIndex != Property::INVALID_INDEX ) + { + // If the conversion worked, we have a valid property index, + // Set the property to the new value. + mScrollView.SetProperty( setPropertyIndex, propertyPair.second ); + } + } + + RelayoutRequest(); } + TextSelectionToolbar::TextSelectionToolbar() -: Control( ControlBehaviour( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ) ), +: Control( ControlBehaviour( ControlBehaviour( CONTROL_BEHAVIOUR_DEFAULT ) ) ), mMaxSize (), mIndexInTable( 0 ), mDividerIndexes()