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=424ac0bc27ea1c143349ac5eea166dcb227b8061;hp=8e9ab39be9a48426143b9a11ddde10265373b1cd;hb=80b16e58fd20746be9ef436dbc3a8805ee7a22e9;hpb=c5651d9850075a3d2d96444883ee8e23844a5f3e diff --git a/dali-toolkit/internal/text/text-controller-impl.h b/dali-toolkit/internal/text/text-controller-impl.h index 8e9ab39..424ac0b 100644 --- a/dali-toolkit/internal/text/text-controller-impl.h +++ b/dali-toolkit/internal/text/text-controller-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_TEXT_CONTROLLER_IMPL_H__ -#define __DALI_TOOLKIT_TEXT_CONTROLLER_IMPL_H__ +#ifndef DALI_TOOLKIT_TEXT_CONTROLLER_IMPL_H +#define DALI_TOOLKIT_TEXT_CONTROLLER_IMPL_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -24,11 +24,9 @@ // INTERNAL INCLUDES #include -#include -#include #include +#include #include -#include namespace Dali { @@ -116,6 +114,8 @@ struct EventData */ std::vector mEventQueue; ///< The queue of touch events etc. + Vector mInputStyleChangedQueue; ///< Queue of changes in the input style. Used to emit the signal in the iddle callback. + InputStyle mInputStyle; ///< The style to be set to the new inputed text. State mPreviousState; ///< Stores the current state before it's updated with the new one. @@ -148,6 +148,7 @@ struct EventData bool mScrollAfterDelete : 1; ///< Whether to scroll after delete characters. bool mAllTextSelected : 1; ///< True if the selection handles are selecting all the text. bool mUpdateInputStyle : 1; ///< Whether to update the input style after moving the cursor. + bool mCheckScrollAmount : 1; ///< Whether to check scrolled amount after updating the position }; struct ModifyEvent @@ -166,7 +167,6 @@ struct FontDefaults { FontDefaults() : mFontDescription(), - mFontStyle(), mDefaultPointSize( 0.f ), mFontId( 0u ), familyDefined( false ), @@ -192,7 +192,6 @@ struct FontDefaults } TextAbstraction::FontDescription mFontDescription; ///< The default font's description. - std::string mFontStyle; ///< The font's style string set through the property system. float mDefaultPointSize; ///< The default 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. @@ -285,10 +284,11 @@ struct OutlineDefaults struct Controller::Impl { - Impl( ControlInterface& controlInterface ) + Impl( ControlInterface* controlInterface, + EditableControlInterface* editableControlInterface ) : mControlInterface( controlInterface ), - mLogicalModel(), - mVisualModel(), + mEditableControlInterface( editableControlInterface ), + mModel(), mFontDefaults( NULL ), mUnderlineDefaults( NULL ), mShadowDefaults( NULL ), @@ -299,7 +299,6 @@ struct Controller::Impl mClipboard(), mView(), mMetrics(), - mLayoutEngine(), mModifyEvents(), mTextColor( Color::BLACK ), mTextUpdateInfo(), @@ -308,24 +307,23 @@ struct Controller::Impl mRecalculateNaturalSize( true ), mMarkupProcessorEnabled( false ), mClipboardHideEnabled( true ), - mAutoScrollEnabled( false ), + mIsAutoScrollEnabled( false ), mAutoScrollDirectionRTL( false ) { - mLogicalModel = LogicalModel::New(); - mVisualModel = VisualModel::New(); + mModel = Model::New(); mFontClient = TextAbstraction::FontClient::Get(); mClipboard = Clipboard::Get(); - mView.SetVisualModel( mVisualModel ); + mView.SetVisualModel( mModel->mVisualModel ); // Use this to access FontClient i.e. to get down-scaled Emoji metrics. mMetrics = Metrics::New( mFontClient ); mLayoutEngine.SetMetrics( mMetrics ); // Set the text properties to default - mVisualModel->SetUnderlineEnabled( false ); - mVisualModel->SetUnderlineHeight( 0.0f ); + mModel->mVisualModel->SetUnderlineEnabled( false ); + mModel->mVisualModel->SetUnderlineHeight( 0.0f ); } ~Impl() @@ -338,8 +336,10 @@ struct Controller::Impl delete mEventData; } + // Text Controller Implementation. + /** - * @brief Request a relayout using the ControlInterface. + * @copydoc Text::Controller::RequestRelayout() */ void RequestRelayout(); @@ -394,7 +394,7 @@ struct Controller::Impl bool IsShowingRealText() const { return ( !IsShowingPlaceholderText() && - 0u != mLogicalModel->mText.Count() ); + 0u != mModel->mLogicalModel->mText.Count() ); } /** @@ -407,7 +407,7 @@ struct Controller::Impl mEventData->mIsShowingPlaceholderText = false; // Remove mPlaceholderTextColor - mVisualModel->SetTextColor( mTextColor ); + mModel->mVisualModel->SetTextColor( mTextColor ); } } @@ -441,6 +441,11 @@ struct Controller::Impl void NotifyImfManager(); /** + * @brief Helper to notify IMF manager with multi line status. + */ + void NotifyImfMultiLineStatus(); + + /** * @brief Retrieve the current cursor position. * * @return The cursor position. @@ -472,6 +477,12 @@ struct Controller::Impl return !result; // If NumberOfItems greater than 0, return false } + bool IsClipboardVisible() + { + bool result( mClipboard && mClipboard.IsVisible() ); + return result; + } + /** * @brief Calculates the start character index of the first paragraph to be updated and * the end character index of the last paragraph to be updated. @@ -579,7 +590,7 @@ struct Controller::Impl void SendSelectionToClipboard( bool deleteAfterSending ); - void GetTextFromClipboard( unsigned int itemIndex, std::string& retrievedString ); + void RequestGetTextFromClipboard(); void RepositionSelectionHandles(); void RepositionSelectionHandles( float visualX, float visualY ); @@ -675,9 +686,9 @@ private: public: - ControlInterface& mControlInterface; ///< Reference to the text controller. - LogicalModelPtr mLogicalModel; ///< Pointer to the logical model. - VisualModelPtr mVisualModel; ///< Pointer to the visual model. + ControlInterface* mControlInterface; ///< Reference to the text controller. + EditableControlInterface* mEditableControlInterface; ///< Reference to the editable 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. ShadowDefaults* mShadowDefaults; ///< Avoid allocating this when the user does not specify shadow parameters. @@ -688,14 +699,9 @@ public: Clipboard mClipboard; ///< Handle to the system clipboard View mView; ///< The view interface to the rendering back-end. MetricsPtr mMetrics; ///< A wrapper around FontClient used to get metrics & potentially down-scaled Emoji metrics. - LayoutEngine mLayoutEngine; ///< The layout engine. + Layout::Engine mLayoutEngine; ///< The layout engine. Vector mModifyEvents; ///< Temporary stores the text set until the next relayout. Vector4 mTextColor; ///< The regular text color - /** - * 0,0 means that the top-left corner of the layout matches the top-left corner of the UI control. - * Typically this will have a negative value with scrolling occurs. - */ - Vector2 mScrollPosition; ///< The text is offset by this position when scrolling. TextUpdateInfo mTextUpdateInfo; ///< Info of the characters updated. OperationsMask mOperationsPending; ///< Operations pending to be done to layout the text. Length mMaximumNumberOfCharacters; ///< Maximum number of characters that can be inserted. @@ -703,7 +709,7 @@ public: 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 mAutoScrollEnabled:1; ///< Whether auto text scrolling is enabled. + bool mIsAutoScrollEnabled:1; ///< Whether auto text scrolling is enabled. CharacterDirection mAutoScrollDirectionRTL:1; ///< Direction of auto scrolling, true if rtl }; @@ -714,4 +720,4 @@ public: } // namespace Dali -#endif // __DALI_TOOLKIT_TEXT_CONTROLLER_H__ +#endif // DALI_TOOLKIT_TEXT_CONTROLLER_H