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-popup-impl.cpp;h=59507cd50f47fa35cf8c82682a23ba9622ef5cd9;hp=28a3d18ed582392469bb0417f2263dca30612ae6;hb=4d45925a50b8a260f8e4e609d6309a8a0d2aada1;hpb=c8bceb828f2e65e82dd0f22bdb964ab7e04882a0 diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp index 28a3d18..59507cd 100644 --- a/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.cpp @@ -19,6 +19,8 @@ #include // INTERNAL INCLUDES +#include +#include #include #include @@ -45,9 +47,9 @@ namespace // todo Move this to adaptor?? #define GET_LOCALE_TEXT(string) dgettext("elementary", string) -const Dali::Vector4 DEFAULT_POPUP_LINE_COLOR( Dali::Vector4( 0.69f, 0.93f, 0.93f, 1.0f ) ); +const Dali::Vector4 DEFAULT_POPUP_DIVIDER_COLOR( Dali::Vector4( 0.23f, 0.72f, 0.8f, 0.11f ) ); const Dali::Vector4 DEFAULT_OPTION_ICON( Dali::Vector4( 1.0f, 1.0f, 1.0f, 1.0f ) ); -const Dali::Vector4 DEFAULT_OPTION_ICON_PRESSED( Dali::Vector4( 0.5f, 1.0f, 1.0f, 1.0f ) ); +const Dali::Vector4 DEFAULT_OPTION_PRESSED_COLOR( Dali::Vector4( 0.24f, 0.72f, 0.8f, 0.11f ) ); const std::string DEFAULT_POPUP_BACKGROUND_IMAGE( DALI_IMAGE_DIR "selection-popup-bg#.png" ); const std::string OPTION_ICON_CLIPBOARD( DALI_IMAGE_DIR "copy_paste_icon_clipboard.png" ); @@ -88,7 +90,7 @@ const char* const OPTION_CLIPBOARD("option-clipboard"); BaseHandle Create() { - return Toolkit::TextSelectionPopup::New(); + return Toolkit::TextSelectionPopup::New( Toolkit::TextSelectionPopup::NONE, NULL ); } // Setup properties, signals and actions using the type-registry. @@ -111,25 +113,12 @@ DALI_TYPE_REGISTRATION_END() } // namespace -Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New() -{ - // Create the implementation, temporarily owned by this handle on stack - IntrusivePtr< TextSelectionPopup > impl = new TextSelectionPopup(); - - // Pass ownership to CustomActor handle - Dali::Toolkit::TextSelectionPopup handle( *impl ); - - // Second-phase init of the implementation - // This can only be done after the CustomActor connection has been made... - impl->Initialize(); - return handle; -} - -Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( Toolkit::TextSelectionPopup::Buttons buttonsToEnable ) +Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( Toolkit::TextSelectionPopup::Buttons buttonsToEnable, + TextSelectionPopupCallbackInterface* callbackInterface ) { // Create the implementation, temporarily owned by this handle on stack - IntrusivePtr< TextSelectionPopup > impl = new TextSelectionPopup(); + IntrusivePtr< TextSelectionPopup > impl = new TextSelectionPopup( callbackInterface ); // Pass ownership to CustomActor handle Dali::Toolkit::TextSelectionPopup handle( *impl ); @@ -142,6 +131,7 @@ Dali::Toolkit::TextSelectionPopup TextSelectionPopup::New( Toolkit::TextSelectio return handle; } + void TextSelectionPopup::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) { Toolkit::TextSelectionPopup selectionPopup = Toolkit::TextSelectionPopup::DownCast( Dali::BaseHandle( object ) ); @@ -313,8 +303,63 @@ void TextSelectionPopup::OnInitialize() CreatePopup(); } -bool TextSelectionPopup::OnButtonPressed( Toolkit::Button button ) +bool TextSelectionPopup::OnCutButtonPressed( Toolkit::Button button ) +{ + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Toolkit::TextSelectionPopup::CUT ); + } + + return true; +} + +bool TextSelectionPopup::OnCopyButtonPressed( Toolkit::Button button ) +{ + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::COPY ); + } + + return true; +} + +bool TextSelectionPopup::OnPasteButtonPressed( Toolkit::Button button ) +{ + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::PASTE ); + } + + return true; +} + +bool TextSelectionPopup::OnSelectButtonPressed( Toolkit::Button button ) +{ + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::SELECT ); + } + + return true; +} + +bool TextSelectionPopup::OnSelectAllButtonPressed( Toolkit::Button button ) { + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::SELECT_ALL ); + } + + return true; +} + +bool TextSelectionPopup::OnClipboardButtonPressed( Toolkit::Button button ) +{ + if( mCallbackInterface ) + { + mCallbackInterface->TextPopupButtonTouched( Dali::Toolkit::TextSelectionPopup::CLIPBOARD ); + } + return true; } @@ -521,21 +566,24 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But std::sort( mOrderListOfButtons.begin(), mOrderListOfButtons.end(), TextSelectionPopup::ButtonPriorityCompare() ); } - void TextSelectionPopup::AddOption( const std::string& name, const std::string& caption, const Image iconImage, bool showDivider, bool showIcons, bool showCaption ) + void TextSelectionPopup::AddOption( const ButtonRequirement& button, bool showDivider, bool showIcons, bool showCaption ) { + + const std::string& name = button.name; + const std::string& caption = button.caption; + Image iconImage = button.icon; + // 1. Create the backgrounds for the popup option both normal and pressed. // Both containers will be added to a button. Toolkit::TableView optionContainer = Toolkit::TableView::New( (showIcons&showCaption)?2:1 , 1 ); - optionContainer.SetDrawMode( DrawMode::OVERLAY ); optionContainer.SetFitHeight( 0 ); optionContainer.SetFitWidth( 0 ); Toolkit::TableView optionPressedContainer = Toolkit::TableView::New( (showIcons&showCaption)?2:1 , 1 ); - optionPressedContainer.SetDrawMode( DrawMode::OVERLAY ); optionPressedContainer.SetFitHeight( 0 ); optionPressedContainer.SetFitWidth( 0 ); - optionPressedContainer.SetBackgroundColor(Color::RED); //todo member variable + optionPressedContainer.SetBackgroundColor( mPressedColor ); #ifdef DECORATOR_DEBUG optionContainer.SetName("optionContainer"); @@ -556,7 +604,7 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But Padding padding; padding.left = 24.0f; padding.right = 24.0f; - padding.top = 13.0f; + padding.top = 14.0f; padding.bottom = 14.0f; captionTextLabel.SetPadding( padding ); pressedCaptionTextLabel.SetPadding( padding ); @@ -570,11 +618,12 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But { ImageActor pressedIcon = ImageActor::New( iconImage ); ImageActor icon = ImageActor::New( iconImage ); + icon.SetSortModifier( DECORATION_DEPTH_INDEX - 1 ); + pressedIcon.SetSortModifier( DECORATION_DEPTH_INDEX - 1 ); icon.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); pressedIcon.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); icon.SetColor( mIconColor ); - pressedIcon.SetColor( mIconPressedColor ); if ( showCaption & showIcons ) { @@ -596,7 +645,45 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But option.SetName( name ); option.SetAnimationTime( 0.0f ); option.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); - option.ClickedSignal().Connect( this, &TextSelectionPopup::OnButtonPressed ); + + switch( button.id ) + { + case Toolkit::TextSelectionPopup::CUT: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnCutButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::COPY: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnCopyButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::PASTE: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnPasteButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::SELECT: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnSelectButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::SELECT_ALL: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnSelectAllButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::CLIPBOARD: + { + option.ClickedSignal().Connect( this, &TextSelectionPopup::OnClipboardButtonPressed ); + break; + } + case Toolkit::TextSelectionPopup::NONE: + { + // Nothing to do: + break; + } + } // 5. Set the normal option image. option.SetButtonImage( optionContainer ); @@ -615,7 +702,7 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But ImageActor divider = Toolkit::CreateSolidColorActor( Color::WHITE ); divider.SetSize( size ); divider.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT ); - divider.SetColor( mLineColor ); + divider.SetColor( mDividerColor ); mToolbar.AddDivider( divider ); } } @@ -646,7 +733,7 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But if ( button.enabled ) { numberOfOptionsAdded++; - AddOption( button.name, button.caption, button.icon, ( numberOfOptionsAdded < numberOfOptionsRequired ) , showIcons, showCaptions ); + AddOption( button, ( numberOfOptionsAdded < numberOfOptionsRequired ) , showIcons, showCaptions ); } } } @@ -668,20 +755,21 @@ Dali::Image TextSelectionPopup::GetButtonImage( Toolkit::TextSelectionPopup::But } } -TextSelectionPopup::TextSelectionPopup() +TextSelectionPopup::TextSelectionPopup( TextSelectionPopupCallbackInterface* callbackInterface ) : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ), mToolbar(), mMaxSize(), mMinSize(), mOptionDividerSize( Size( 2.0f, 0.0f) ), mEnabledButtons( Toolkit::TextSelectionPopup::NONE ), - mLineColor( DEFAULT_POPUP_LINE_COLOR ), + mCallbackInterface( callbackInterface ), + mDividerColor( DEFAULT_POPUP_DIVIDER_COLOR ), mIconColor( DEFAULT_OPTION_ICON ), - mIconPressedColor( DEFAULT_OPTION_ICON_PRESSED ), + mPressedColor( DEFAULT_OPTION_PRESSED_COLOR ), mSelectOptionPriority( 1 ), mSelectAllOptionPriority ( 2 ), - mCutOptionPriority ( 3 ), - mCopyOptionPriority ( 4 ), + mCutOptionPriority ( 4 ), + mCopyOptionPriority ( 3 ), mPasteOptionPriority ( 5 ), mClipboardOptionPriority( 6 ), mShowIcons( false ),