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.h;h=adaf3b688c729edd74dfae1a599f464899b76692;hp=fb85e95438f31f9ffce99dd71803be78532cd2bf;hb=c45b6c9f3254cde5e817f8cfe6d59703f40d28d7;hpb=8c18e2ceb273e1db22547264a4466fa565081a29 diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.h b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.h index fb85e95..adaf3b6 100644 --- a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__ -#define __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__ +#ifndef DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H +#define DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H /* - * 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. @@ -20,6 +20,8 @@ // INTERNAL INCLUDES #include +#include +#include #include #include @@ -35,11 +37,6 @@ namespace Toolkit namespace Internal { -namespace -{ - -} // namespace - class TextSelectionToolbar : public Control { public: @@ -69,26 +66,53 @@ public: static Property::Value GetProperty( BaseObject* object, Property::Index index ); /** - * @copydoc TextSelectionToolbar::AddOption + * @copydoc Toolkit::TextSelectionToolbar::AddOption() */ void AddOption( Actor& option ); /** - * @copydoc TextSelectionToolbar::AddDivider + * @copydoc Toolkit::TextSelectionToolbar::AddDivider() */ void AddDivider( Actor& divider ); /** - * @copydoc ResizeDividers + * @copydoc Toolkit::TextSelectionToolbar::ResizeDividers() */ void ResizeDividers( Size& size ); + /** + * @copydoc Toolkit::TextSelectionToolbar::RaiseAbove() + */ + void RaiseAbove( Layer target ); + + /** + * Sets the scroll bar padding. + * + * @param[in] padding The padding value. + */ + void SetScrollBarPadding( const Vector2& padding ); + + /** + * @return The padding value. + */ + const Vector2& GetScrollBarPadding() const; + + /** + * @copydoc Toolkit::TextSelectionToolbar::ScrollTo() + */ + void ScrollTo( const Vector2& position ); + private: // From Control /** * @copydoc Control::OnInitialize() */ - virtual void OnInitialize(); + virtual void OnInitialize(); + + /** + * @copydoc Control::OnRelayout() + */ + virtual void OnRelayout( const Vector2& size, RelayoutContainer& container ); /** * @brief Set max size of Popup @@ -102,12 +126,41 @@ private: // From Control */ const Dali::Vector2& GetPopupMaxSize() const; +private: // Implementation + + /** + * @copydoc Toolkit::TextSelectionToolbar::ConfigureScrollview() + */ + void ConfigureScrollview( const Property::Map& properties ); + + /** + * @brief Set up scrollview to scroll Toolbar horizontally + */ + void SetUpScrollView(); + /** * @brief Set up the parts that make the Toolbar */ void SetUp(); -private: // Implementation + /** + * @brief Enable or disable the scroll-bar + * + * @param[in] enable True if the scroll-bar is required + */ + void SetUpScrollBar( bool enable ); + + /** + * Toolbar has started to scroll + * @param[in] position current scroll view position + */ + void OnScrollStarted( const Vector2& position ); + + /** + * Toolbar has stopped scrolling + * @param[in] position current scroll view position + */ + void OnScrollCompleted( const Vector2& position ); /** * Construct a new TextField. @@ -127,13 +180,16 @@ private: private: // Data - Dali::Toolkit::TableView mTableOfButtons; // Actor which holds all the buttons, sensitivity can be set on buttons via this actor - Layer mStencilLayer; // Layer to enable clipping when buttons exceed popup - - Size mMaxSize; // Max size of the Toolbar - unsigned int mIndexInTable; // Index in table to add option - Dali::Vector< unsigned int > mDividerIndexes; // Vector of indexes in the Toolbar that contain dividers. - + Layer mToolbarLayer; ///< The layer used to house the toolbar. + Toolkit::TableView mTableOfButtons; ///< Actor which holds all the buttons, sensitivity can be set on buttons via this actor + Toolkit::ScrollView mScrollView; ///< Provides scrolling of Toolbar when content does not fit. + Toolkit::ScrollBar mScrollBar; ///< An horizontal scroll bar for the text's popup options. + RulerPtr mRulerX; ///< Ruler to clamp horizontal scrolling. Updates on Relayout + Size mMaxSize; ///< Max size of the Toolbar + Vector2 mScrollBarPadding; ///< The padding used to position the scroll indicator. + unsigned int mIndexInTable; ///< Index in table to add option + Dali::Vector< unsigned int > mDividerIndexes; ///< Vector of indexes in the Toolbar that contain dividers. + bool mFirstScrollEnd; ///< Used for RTL mirroring. Avoids the overshoot to be shown the first time the popup is shown. }; } // namespace Internal @@ -162,4 +218,4 @@ inline const Toolkit::Internal::TextSelectionToolbar& GetImpl( const Toolkit::Te } // namespace Dali -#endif // __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H__ +#endif // DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_TOOLBAR_H