X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller-impl.h;h=bb03be4a27c87698f82914cd435f756d88198703;hp=3014edb68a4ed3b9cb35409157f6ce114163633d;hb=60d99d04d7677a1b91d4f2fdd9e74bc5e1b5e7bf;hpb=30b39930a88d3d44cfea9a969c742d662666b149 diff --git a/dali-toolkit/internal/text/text-controller-impl.h b/dali-toolkit/internal/text/text-controller-impl.h old mode 100644 new mode 100755 index 3014edb..bb03be4 --- a/dali-toolkit/internal/text/text-controller-impl.h +++ b/dali-toolkit/internal/text/text-controller-impl.h @@ -21,12 +21,15 @@ // EXTERNAL INCLUDES #include #include +#include // INTERNAL INCLUDES #include #include #include #include +#include +#include namespace Dali { @@ -37,8 +40,15 @@ namespace Toolkit namespace Text { +const float DEFAULT_TEXTFIT_MIN = 10.f; +const float DEFAULT_TEXTFIT_MAX = 100.f; +const float DEFAULT_TEXTFIT_STEP = 1.f; + //Forward declarations struct CursorInfo; +struct FontDefaults; + +class SelectableControlInterface; struct Event { @@ -53,7 +63,8 @@ struct Event LEFT_SELECTION_HANDLE_EVENT, RIGHT_SELECTION_HANDLE_EVENT, SELECT, - SELECT_ALL + SELECT_ALL, + SELECT_NONE, }; union Param @@ -61,6 +72,7 @@ struct Event int mInt; unsigned int mUint; float mFloat; + bool mBool; }; Event( Type eventType ) @@ -93,7 +105,7 @@ struct EventData TEXT_PANNING }; - EventData( DecoratorPtr decorator ); + EventData( DecoratorPtr decorator, InputMethodContext& inputMethodContext ); ~EventData(); @@ -103,7 +115,8 @@ struct EventData } DecoratorPtr mDecorator; ///< Pointer to the decorator. - ImfManager mImfManager; ///< The Input Method Framework Manager. + InputMethodContext mInputMethodContext; ///< The Input Method Framework Manager. + FontDefaults* mPlaceholderFont; ///< The placeholder default font. std::string mPlaceholderTextActive; ///< The text to display when the TextField is empty with key-input focus. std::string mPlaceholderTextInactive; ///< The text to display when the TextField is empty and inactive. Vector4 mPlaceholderTextColor; ///< The in/active placeholder text color. @@ -154,6 +167,11 @@ struct EventData bool mUpdateInputStyle : 1; ///< Whether to update the input style after moving the cursor. bool mPasswordInput : 1; ///< True if password input is enabled. bool mCheckScrollAmount : 1; ///< Whether to check scrolled amount after updating the position + bool mIsPlaceholderPixelSize : 1; ///< True if the placeholder font size is set as pixel size. + bool mIsPlaceholderElideEnabled : 1; ///< True if the placeholder text's elide is enabled. + bool mPlaceholderEllipsisFlag : 1; ///< True if the text controller sets the placeholder ellipsis. + bool mShiftSelectionFlag : 1; ///< True if the text selection using Shift key is enabled. + bool mUpdateAlignment : 1; ///< True if the whole text needs to be full aligned.. }; struct ModifyEvent @@ -173,6 +191,7 @@ struct FontDefaults FontDefaults() : mFontDescription(), mDefaultPointSize( 0.f ), + mFitPointSize( 0.f ), mFontId( 0u ), familyDefined( false ), weightDefined( false ), @@ -198,6 +217,7 @@ struct FontDefaults TextAbstraction::FontDescription mFontDescription; ///< The default font's description. float mDefaultPointSize; ///< The default font's point size. + float mFitPointSize; ///< The fit font's point size. FontId mFontId; ///< The font's id of the default font. bool familyDefined:1; ///< Whether the default font's family name is defined. bool weightDefined:1; ///< Whether the default font's weight is defined. @@ -290,9 +310,11 @@ struct OutlineDefaults struct Controller::Impl { Impl( ControlInterface* controlInterface, - EditableControlInterface* editableControlInterface ) + EditableControlInterface* editableControlInterface, + SelectableControlInterface* selectableControlInterface ) : mControlInterface( controlInterface ), mEditableControlInterface( editableControlInterface ), + mSelectableControlInterface( selectableControlInterface ), mModel(), mFontDefaults( NULL ), mUnderlineDefaults( NULL ), @@ -314,10 +336,18 @@ struct Controller::Impl mMarkupProcessorEnabled( false ), mClipboardHideEnabled( true ), mIsAutoScrollEnabled( false ), - mAutoScrollDirectionRTL( false ), + mUpdateTextDirection( true ), + mIsTextDirectionRTL( false ), mUnderlineSetByString( false ), mShadowSetByString( false ), - mFontStyleSetByString( false ) + mOutlineSetByString( false ), + mFontStyleSetByString( false ), + mShouldClearFocusOnEscape( true ), + mLayoutDirection( LayoutDirection::LEFT_TO_RIGHT ), + mTextFitMinSize( DEFAULT_TEXTFIT_MIN ), + mTextFitMaxSize( DEFAULT_TEXTFIT_MAX ), + mTextFitStepSize( DEFAULT_TEXTFIT_STEP ), + mTextFitEnabled( false ) { mModel = Model::New(); @@ -333,6 +363,17 @@ struct Controller::Impl // Set the text properties to default mModel->mVisualModel->SetUnderlineEnabled( false ); mModel->mVisualModel->SetUnderlineHeight( 0.0f ); + + Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get(); + if( styleManager ) + { + bool temp; + Property::Map config = Toolkit::DevelStyleManager::GetConfigurations( styleManager ); + if( config["clearFocusOnEscape"].Get( temp ) ) + { + mShouldClearFocusOnEscape = temp; + } + } } ~Impl() @@ -432,14 +473,14 @@ struct Controller::Impl } } - void ResetImfManager() + void ResetInputMethodContext() { if( mEventData ) { // Reset incase we are in a pre-edit state. - if( mEventData->mImfManager ) + if( mEventData->mInputMethodContext ) { - mEventData->mImfManager.Reset(); // Will trigger a message ( commit, get surrounding ) + mEventData->mInputMethodContext.Reset(); // Will trigger a message ( commit, get surrounding ) } ClearPreEditFlag(); @@ -447,14 +488,14 @@ struct Controller::Impl } /** - * @brief Helper to notify IMF manager with surrounding text & cursor changes. + * @brief Helper to notify InputMethodContext with surrounding text & cursor changes. */ - void NotifyImfManager(); + void NotifyInputMethodContext(); /** - * @brief Helper to notify IMF manager with multi line status. + * @brief Helper to notify InputMethodContext with multi line status. */ - void NotifyImfMultiLineStatus(); + void NotifyInputMethodContextMultiLineStatus(); /** * @brief Retrieve the current cursor position. @@ -583,6 +624,18 @@ struct Controller::Impl void OnSelectAllEvent(); + void OnSelectNoneEvent(); + + /** + * @copydoc Text::SelectableControlInterface::SetTextSelectionRange() + */ + void SetTextSelectionRange(const uint32_t *pStart, const uint32_t *pEndf); + + /** + * @copydoc Text::SelectableControlInterface::GetTextSelectionRange() + */ + Uint32Pair GetTextSelectionRange() const; + /** * @brief Retrieves the selected text. It removes the text if the @p deleteAfterRetrieval parameter is @e true. * @@ -689,6 +742,25 @@ struct Controller::Impl */ void ScrollTextToMatchCursor( const CursorInfo& cursorInfo ); + /** + * @brief Create an actor that renders the text background color + * + * @return the created actor or an empty handle if no background color needs to be rendered. + */ + Actor CreateBackgroundActor(); + +public: + + /** + * @brief Gets implementation from the controller handle. + * @param controller The text controller + * @return The implementation of the Controller + */ + static Impl& GetImplementation( Text::Controller& controller ) + { + return *controller.mImpl; + } + private: // Declared private and left undefined to avoid copies. Impl( const Impl& ); @@ -699,6 +771,7 @@ public: ControlInterface* mControlInterface; ///< Reference to the text controller. EditableControlInterface* mEditableControlInterface; ///< Reference to the editable text controller. + SelectableControlInterface* mSelectableControlInterface; ///< Reference to the selectable text controller. ModelPtr mModel; ///< Pointer to the text's model. FontDefaults* mFontDefaults; ///< Avoid allocating this when the user does not specify a font. UnderlineDefaults* mUnderlineDefaults; ///< Avoid allocating this when the user does not specify underline parameters. @@ -717,16 +790,28 @@ public: OperationsMask mOperationsPending; ///< Operations pending to be done to layout the text. Length mMaximumNumberOfCharacters; ///< Maximum number of characters that can be inserted. HiddenText* mHiddenInput; ///< Avoid allocating this when the user does not specify hidden input mode. + Vector2 mTextFitContentSize; ///< Size of Text fit content bool mRecalculateNaturalSize:1; ///< Whether the natural size needs to be recalculated. bool mMarkupProcessorEnabled:1; ///< Whether the mark-up procesor is enabled. bool mClipboardHideEnabled:1; ///< Whether the ClipboardHide function work or not bool mIsAutoScrollEnabled:1; ///< Whether auto text scrolling is enabled. - CharacterDirection mAutoScrollDirectionRTL:1; ///< Direction of auto scrolling, true if rtl + bool mUpdateTextDirection:1; ///< Whether the text direction needs to be updated. + CharacterDirection mIsTextDirectionRTL:1; ///< Whether the text direction is right to left or not bool mUnderlineSetByString:1; ///< Set when underline is set by string (legacy) instead of map bool mShadowSetByString:1; ///< Set when shadow is set by string (legacy) instead of map + bool mOutlineSetByString:1; ///< Set when outline is set by string (legacy) instead of map bool mFontStyleSetByString:1; ///< Set when font style is set by string (legacy) instead of map + bool mShouldClearFocusOnEscape:1; ///< Whether text control should clear key input focus + LayoutDirection::Type mLayoutDirection; ///< Current system language direction + + Shader mShaderBackground; ///< The shader for text background. + + float mTextFitMinSize; ///< Minimum Font Size for text fit. Default 10 + float mTextFitMaxSize; ///< Maximum Font Size for text fit. Default 100 + float mTextFitStepSize; ///< Step Size for font intervalse. Default 1 + bool mTextFitEnabled : 1; ///< Whether the text's fit is enabled. }; } // namespace Text