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=981e498f13b54eba7f4073a9136b6e796ee0a559;hp=e9d99f1fe4db80164d826a08a2c7af6f25342c8b;hb=0e1683ef848d1d877e26633609fa95e0d2ab36b5;hpb=d9a8cbc7adbe168eea313b65065ec680eb8eec93 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 e9d99f1..981e498 --- 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,13 @@ 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; struct Event { @@ -53,7 +61,8 @@ struct Event LEFT_SELECTION_HANDLE_EVENT, RIGHT_SELECTION_HANDLE_EVENT, SELECT, - SELECT_ALL + SELECT_ALL, + SELECT_NONE, }; union Param @@ -61,6 +70,7 @@ struct Event int mInt; unsigned int mUint; float mFloat; + bool mBool; }; Event( Type eventType ) @@ -93,7 +103,7 @@ struct EventData TEXT_PANNING }; - EventData( DecoratorPtr decorator ); + EventData( DecoratorPtr decorator, InputMethodContext& inputMethodContext ); ~EventData(); @@ -103,8 +113,8 @@ struct EventData } DecoratorPtr mDecorator; ///< Pointer to the decorator. - ImfManager mImfManager; ///< The Input Method Framework Manager. - std::string mPlaceholderText; ///< The text to display when the TextField is empty. + 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. @@ -155,6 +165,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 @@ -174,6 +189,7 @@ struct FontDefaults FontDefaults() : mFontDescription(), mDefaultPointSize( 0.f ), + mFitPointSize( 0.f ), mFontId( 0u ), familyDefined( false ), weightDefined( false ), @@ -199,6 +215,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. @@ -315,10 +332,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(); @@ -334,6 +359,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() @@ -384,9 +420,10 @@ struct Controller::Impl */ bool IsPlaceholderAvailable() const { - return ( mEventData && ( !mEventData->mPlaceholderText.empty() || - !mEventData->mPlaceholderTextInactive.empty() || - !mEventData->mPlaceholderTextActive.empty() ) ); + return ( mEventData && + ( !mEventData->mPlaceholderTextInactive.empty() || + !mEventData->mPlaceholderTextActive.empty() ) + ); } bool IsShowingPlaceholderText() const @@ -399,8 +436,7 @@ struct Controller::Impl */ bool IsFocusedPlaceholderAvailable() const { - return ( mEventData && ( !mEventData->mPlaceholderTextActive.empty() || - !mEventData->mPlaceholderText.empty() ) ); + return ( mEventData && !mEventData->mPlaceholderTextActive.empty() ); } bool IsShowingRealText() const @@ -433,14 +469,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(); @@ -448,14 +484,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. @@ -584,6 +620,8 @@ struct Controller::Impl void OnSelectAllEvent(); + void OnSelectNoneEvent(); + /** * @brief Retrieves the selected text. It removes the text if the @p deleteAfterRetrieval parameter is @e true. * @@ -690,6 +728,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& ); @@ -718,16 +775,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