projects
/
platform
/
core
/
uifw
/
dali-toolkit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge "Fix a crash in ImageVisual in case of an invalid image and changed to render...
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
text
/
text-controller-impl.h
diff --git
a/dali-toolkit/internal/text/text-controller-impl.h
b/dali-toolkit/internal/text/text-controller-impl.h
index
68659b6
..
3014edb
100644
(file)
--- 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) 201
5
Samsung Electronics Co., Ltd.
+ * Copyright (c) 201
7
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.
*
* 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 <dali-toolkit/internal/text/input-style.h>
// INTERNAL INCLUDES
#include <dali-toolkit/internal/text/input-style.h>
-#include <dali-toolkit/internal/text/layouts/layout-engine.h>
-#include <dali-toolkit/internal/text/logical-model-impl.h>
#include <dali-toolkit/internal/text/text-controller.h>
#include <dali-toolkit/internal/text/text-controller.h>
+#include <dali-toolkit/internal/text/text-model.h>
#include <dali-toolkit/internal/text/text-view.h>
#include <dali-toolkit/internal/text/text-view.h>
-#include <dali-toolkit/internal/text/visual-model-impl.h>
namespace Dali
{
namespace Dali
{
@@
-91,7
+89,8
@@
struct EventData
EDITING_WITH_GRAB_HANDLE,
EDITING_WITH_PASTE_POPUP,
GRAB_HANDLE_PANNING,
EDITING_WITH_GRAB_HANDLE,
EDITING_WITH_PASTE_POPUP,
GRAB_HANDLE_PANNING,
- SELECTION_HANDLE_PANNING
+ SELECTION_HANDLE_PANNING,
+ TEXT_PANNING
};
EventData( DecoratorPtr decorator );
};
EventData( DecoratorPtr decorator );
@@
-115,8
+114,11
@@
struct EventData
*/
std::vector<Event> mEventQueue; ///< The queue of touch events etc.
*/
std::vector<Event> mEventQueue; ///< The queue of touch events etc.
+ Vector<InputStyle::Mask> 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.
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.
State mState; ///< Selection mode, edit mode etc.
CharacterIndex mPrimaryCursorPosition; ///< Index into logical model for primary cursor.
State mState; ///< Selection mode, edit mode etc.
CharacterIndex mPrimaryCursorPosition; ///< Index into logical model for primary cursor.
@@
-128,6
+130,9
@@
struct EventData
float mCursorHookPositionX; ///< Used to move the cursor with the keys or when scrolling the text vertically with the handles.
float mCursorHookPositionX; ///< Used to move the cursor with the keys or when scrolling the text vertically with the handles.
+ Controller::NoTextTap::Action mDoubleTapAction; ///< Action to be done when there is a double tap on top of 'no text'
+ Controller::NoTextTap::Action mLongPressAction; ///< Action to be done when there is a long press on top of 'no text'
+
bool mIsShowingPlaceholderText : 1; ///< True if the place-holder text is being displayed.
bool mPreEditFlag : 1; ///< True if the model contains text in pre-edit state.
bool mDecoratorUpdated : 1; ///< True if the decorator was updated during event processing.
bool mIsShowingPlaceholderText : 1; ///< True if the place-holder text is being displayed.
bool mPreEditFlag : 1; ///< True if the model contains text in pre-edit state.
bool mDecoratorUpdated : 1; ///< True if the decorator was updated during event processing.
@@
-140,11
+145,15
@@
struct EventData
bool mUpdateGrabHandlePosition : 1; ///< True if the visual position of the grab handle must be recalculated.
bool mUpdateLeftSelectionPosition : 1; ///< True if the visual position of the left selection handle must be recalculated.
bool mUpdateRightSelectionPosition : 1; ///< True if the visual position of the right selection handle must be recalculated.
bool mUpdateGrabHandlePosition : 1; ///< True if the visual position of the grab handle must be recalculated.
bool mUpdateLeftSelectionPosition : 1; ///< True if the visual position of the left selection handle must be recalculated.
bool mUpdateRightSelectionPosition : 1; ///< True if the visual position of the right selection handle must be recalculated.
+ bool mIsLeftHandleSelected : 1; ///< Whether is the left handle the one which is selected.
+ bool mIsRightHandleSelected : 1; ///< Whether is the right handle the one which is selected.
bool mUpdateHighlightBox : 1; ///< True if the text selection high light box must be updated.
bool mScrollAfterUpdatePosition : 1; ///< Whether to scroll after the cursor position is updated.
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 mUpdateHighlightBox : 1; ///< True if the text selection high light box must be updated.
bool mScrollAfterUpdatePosition : 1; ///< Whether to scroll after the cursor position is updated.
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 mPasswordInput : 1; ///< True if password input is enabled.
+ bool mCheckScrollAmount : 1; ///< Whether to check scrolled amount after updating the position
};
struct ModifyEvent
};
struct ModifyEvent
@@
-163,7
+172,6
@@
struct FontDefaults
{
FontDefaults()
: mFontDescription(),
{
FontDefaults()
: mFontDescription(),
- mFontStyle(),
mDefaultPointSize( 0.f ),
mFontId( 0u ),
familyDefined( false ),
mDefaultPointSize( 0.f ),
mFontId( 0u ),
familyDefined( false ),
@@
-189,7
+197,6
@@
struct FontDefaults
}
TextAbstraction::FontDescription mFontDescription; ///< The default font's description.
}
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.
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.
@@
-282,10
+289,11
@@
struct OutlineDefaults
struct Controller::Impl
{
struct Controller::Impl
{
- Impl( ControlInterface& controlInterface )
+ Impl( ControlInterface* controlInterface,
+ EditableControlInterface* editableControlInterface )
: mControlInterface( controlInterface ),
: mControlInterface( controlInterface ),
- m
LogicalModel(
),
- m
Visual
Model(),
+ m
EditableControlInterface( editableControlInterface
),
+ mModel(),
mFontDefaults( NULL ),
mUnderlineDefaults( NULL ),
mShadowDefaults( NULL ),
mFontDefaults( NULL ),
mUnderlineDefaults( NULL ),
mShadowDefaults( NULL ),
@@
-296,37
+304,41
@@
struct Controller::Impl
mClipboard(),
mView(),
mMetrics(),
mClipboard(),
mView(),
mMetrics(),
- mLayoutEngine(),
mModifyEvents(),
mTextColor( Color::BLACK ),
mTextUpdateInfo(),
mOperationsPending( NO_OPERATION ),
mMaximumNumberOfCharacters( 50u ),
mModifyEvents(),
mTextColor( Color::BLACK ),
mTextUpdateInfo(),
mOperationsPending( NO_OPERATION ),
mMaximumNumberOfCharacters( 50u ),
+ mHiddenInput( NULL ),
mRecalculateNaturalSize( true ),
mMarkupProcessorEnabled( false ),
mClipboardHideEnabled( true ),
mRecalculateNaturalSize( true ),
mMarkupProcessorEnabled( false ),
mClipboardHideEnabled( true ),
- mAutoScrollEnabled( false ),
- mAutoScrollDirectionRTL( false )
+ mIsAutoScrollEnabled( false ),
+ mAutoScrollDirectionRTL( false ),
+ mUnderlineSetByString( false ),
+ mShadowSetByString( false ),
+ mFontStyleSetByString( false )
{
{
- mLogicalModel = LogicalModel::New();
- mVisualModel = VisualModel::New();
+ mModel = Model::New();
mFontClient = TextAbstraction::FontClient::Get();
mClipboard = Clipboard::Get();
mFontClient = TextAbstraction::FontClient::Get();
mClipboard = Clipboard::Get();
- mView.SetVisualModel( mVisualModel );
+ mView.SetVisualModel( m
Model->m
VisualModel );
// 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
// 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 );
+ m
Model->m
VisualModel->SetUnderlineEnabled( false );
+ m
Model->m
VisualModel->SetUnderlineHeight( 0.0f );
}
~Impl()
{
}
~Impl()
{
+ delete mHiddenInput;
+
delete mFontDefaults;
delete mUnderlineDefaults;
delete mShadowDefaults;
delete mFontDefaults;
delete mUnderlineDefaults;
delete mShadowDefaults;
@@
-335,8
+347,10
@@
struct Controller::Impl
delete mEventData;
}
delete mEventData;
}
+ // Text Controller Implementation.
+
/**
/**
- * @
brief Request a relayout using the ControlInterface.
+ * @
copydoc Text::Controller::RequestRelayout()
*/
void RequestRelayout();
*/
void RequestRelayout();
@@
-391,7
+405,7
@@
struct Controller::Impl
bool IsShowingRealText() const
{
return ( !IsShowingPlaceholderText() &&
bool IsShowingRealText() const
{
return ( !IsShowingPlaceholderText() &&
- 0u != mLogicalModel->mText.Count() );
+ 0u != m
Model->m
LogicalModel->mText.Count() );
}
/**
}
/**
@@
-404,7
+418,7
@@
struct Controller::Impl
mEventData->mIsShowingPlaceholderText = false;
// Remove mPlaceholderTextColor
mEventData->mIsShowingPlaceholderText = false;
// Remove mPlaceholderTextColor
- mVisualModel->SetTextColor( mTextColor );
+ m
Model->m
VisualModel->SetTextColor( mTextColor );
}
}
}
}
@@
-438,6
+452,11
@@
struct Controller::Impl
void NotifyImfManager();
/**
void NotifyImfManager();
/**
+ * @brief Helper to notify IMF manager with multi line status.
+ */
+ void NotifyImfMultiLineStatus();
+
+ /**
* @brief Retrieve the current cursor position.
*
* @return The cursor position.
* @brief Retrieve the current cursor position.
*
* @return The cursor position.
@@
-469,6
+488,12
@@
struct Controller::Impl
return !result; // If NumberOfItems greater than 0, return false
}
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.
/**
* @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.
@@
-576,10
+601,10
@@
struct Controller::Impl
void SendSelectionToClipboard( bool deleteAfterSending );
void SendSelectionToClipboard( bool deleteAfterSending );
- void
GetTextFromClipboard( unsigned int itemIndex, std::string& retrievedString
);
+ void
RequestGetTextFromClipboard(
);
void RepositionSelectionHandles();
void RepositionSelectionHandles();
- void RepositionSelectionHandles( float visualX, float visualY );
+ void RepositionSelectionHandles( float visualX, float visualY
, Controller::NoTextTap::Action action
);
void SetPopupButtons();
void SetPopupButtons();
@@
-672,9
+697,9
@@
private:
public:
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.
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.
@@
-685,24
+710,23
@@
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.
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.
- Layout
Engine mLayoutEngine;
///< The layout engine.
+ Layout
::Engine mLayoutEngine;
///< The layout engine.
Vector<ModifyEvent> mModifyEvents; ///< Temporary stores the text set until the next relayout.
Vector4 mTextColor; ///< The regular text color
Vector<ModifyEvent> 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.
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.
+ HiddenText* mHiddenInput; ///< Avoid allocating this when the user does not specify hidden input mode.
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 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 m
AutoScrollEnabled:1;
///< Whether auto text scrolling is enabled.
+ bool m
IsAutoScrollEnabled:1;
///< Whether auto text scrolling is enabled.
CharacterDirection mAutoScrollDirectionRTL:1; ///< Direction of auto scrolling, true if rtl
CharacterDirection mAutoScrollDirectionRTL:1; ///< Direction of auto scrolling, true if rtl
+ 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 mFontStyleSetByString:1; ///< Set when font style is set by string (legacy) instead of map
};
} // namespace Text
};
} // namespace Text
@@
-711,4
+735,4
@@
public:
} // namespace Dali
} // namespace Dali
-#endif //
__DALI_TOOLKIT_TEXT_CONTROLLER_H__
+#endif //
DALI_TOOLKIT_TEXT_CONTROLLER_H