#include <dali/integration-api/events/pan-gesture-event.h>
#include <dali-toolkit-test-suite-utils.h>
#include <dali-toolkit/dali-toolkit.h>
-#include <dali-toolkit/devel-api/controls/control-devel.h>
#include <dali-toolkit/devel-api/controls/text-controls/text-editor-devel.h>
using namespace Dali;
editor.SetProperty( DevelTextEditor::Property::PLACEHOLDER_TEXT, "Setting Placeholder Text" );
DALI_TEST_EQUALS( editor.GetProperty<std::string>( DevelTextEditor::Property::PLACEHOLDER_TEXT ), std::string("Setting Placeholder Text"), TEST_LOCATION );
- // Check placeholder text properties when focused.
- editor.SetProperty( DevelControl::Property::STATE, "FOCUSED" );
- editor.SetProperty( DevelTextEditor::Property::PLACEHOLDER_TEXT, "Setting Focused Placeholder Text" );
- DALI_TEST_EQUALS( editor.GetProperty<int>( DevelControl::Property::STATE ), (int)DevelControl::FOCUSED, TEST_LOCATION );
- DALI_TEST_EQUALS( editor.GetProperty<std::string>( DevelTextEditor::Property::PLACEHOLDER_TEXT ), std::string("Setting Focused Placeholder Text"), TEST_LOCATION );
-
// Check placeholder text's color property.
editor.SetProperty( DevelTextEditor::Property::PLACEHOLDER_TEXT_COLOR, Color::RED );
DALI_TEST_EQUALS( editor.GetProperty<Vector4>( DevelTextEditor::Property::PLACEHOLDER_TEXT_COLOR ), Color::RED, TEST_LOCATION );
Property::Map placeholderPixelSizeMapGet;
Property::Map placeholderFontstyleMap;
placeholderPixelSizeMapSet["placeholderText"] = "Setting Placeholder Text";
+ placeholderPixelSizeMapSet["placeholderTextFocused"] = "Setting Placeholder Text Focused";
placeholderPixelSizeMapSet["placeholderColor"] = Color::BLUE;
placeholderPixelSizeMapSet["placeholderFontFamily"] = "Arial";
placeholderPixelSizeMapSet["placeholderPixelSize"] = 15.0f;
Property::Map placeholderMapSet;
Property::Map placeholderMapGet;
placeholderMapSet["placeholderText"] = "Setting Placeholder Text";
+ placeholderMapSet["placeholderTextFocused"] = "Setting Placeholder Text Focused";
placeholderMapSet["placeholderColor"] = Color::RED;
placeholderMapSet["placeholderFontFamily"] = "Arial";
placeholderMapSet["placeholderPointSize"] = 12.0f;
END_TEST;
}
+ int UtcDaliToolkitTextEditorTextWarpMode(void)
+ {
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliToolkitTextEditorTextWarpMode");
+
+ int lineCount =0 ;
+
+ TextEditor editor = TextEditor::New();
+ editor.SetSize( 150.0f, 300.f );
+ editor.SetProperty( TextEditor::Property::TEXT, "Hello world Hello world" );
+
+ Stage::GetCurrent().Add( editor );
+
+ editor.SetProperty( DevelTextEditor::Property::LINE_WRAP_MODE, "WORD" );
+
+ application.SendNotification();
+ application.Render();
+
+ lineCount = editor.GetProperty<int>( DevelTextEditor::Property::LINE_COUNT );
+ DALI_TEST_EQUALS( lineCount, 4, TEST_LOCATION );
+
+
+
+ editor.SetProperty( DevelTextEditor::Property::LINE_WRAP_MODE, "CHARACTER" );
+
+ application.SendNotification();
+ application.Render();
+
+
+ lineCount = editor.GetProperty<int>( DevelTextEditor::Property::LINE_COUNT );
+ DALI_TEST_EQUALS( lineCount, 3, TEST_LOCATION );
+
+ END_TEST;
+ }
* @code
* Property::Map propertyMap;
* propertyMap["placeholderText"] = "Setting Placeholder Text";
+ * propertyMap["placeholderTextFocused"] = "Setting Placeholder Text Focused";
* propertyMap["placeholderColor"] = Color::RED;
* propertyMap["placeholderFontFamily"] = "Arial";
* propertyMap["placeholderPointSize"] = 12.0f;
*
* Property::Map fontStyleMap;
- * fontstyleMap.Insert( "weight", "bold" );
- * fontstyleMap.Insert( "width", "condensed" );
- * fontstyleMap.Insert( "slant", "italic" );
+ * fontStyleMap.Insert( "weight", "bold" );
+ * fontStyleMap.Insert( "width", "condensed" );
+ * fontStyleMap.Insert( "slant", "italic" );
* propertyMap["placeholderFontStyle"] = fontStyleMap;
*
* editor.SetProperty( DevelTextEditor::Property::PLACEHOLDER, propertyMap );
*
* @details name "placeholder", type MAP
*/
- PLACEHOLDER
+ PLACEHOLDER,
+
+ /**
+ * @brief line wrap mode when the text lines over layout width.
+ * @details name "lineWrapMode", type string.
+ */
+ LINE_WRAP_MODE
};
} // namespace Property
};
const unsigned int HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT = sizeof( HORIZONTAL_ALIGNMENT_STRING_TABLE ) / sizeof( HORIZONTAL_ALIGNMENT_STRING_TABLE[0] );
+
+ const Scripting::StringEnum LINE_WRAP_MODE_STRING_TABLE[] =
+ {
+ { "WORD", Toolkit::Text::Layout::LineWrap::WORD },
+ { "CHARACTER", Toolkit::Text::Layout::LineWrap::CHARACTER }
+ };
+ const unsigned int LINE_WRAP_MODE_STRING_TABLE_COUNT = sizeof( LINE_WRAP_MODE_STRING_TABLE ) / sizeof( LINE_WRAP_MODE_STRING_TABLE[0] );
+
const char* const SCROLL_BAR_POSITION("sourcePosition");
const char* const SCROLL_BAR_POSITION_MIN("sourcePositionMin");
const char* const SCROLL_BAR_POSITION_MAX("sourcePositionMax");
DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "placeholderTextColor", VECTOR4, PLACEHOLDER_TEXT_COLOR )
DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "enableSelection", BOOLEAN, ENABLE_SELECTION )
DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "placeholder", MAP, PLACEHOLDER )
+ DALI_DEVEL_PROPERTY_REGISTRATION( Toolkit, TextEditor, "lineWrapMode", STRING, LINE_WRAP_MODE )
DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "textChanged", SIGNAL_TEXT_CHANGED )
DALI_SIGNAL_REGISTRATION( Toolkit, TextEditor, "inputStyleChanged", SIGNAL_INPUT_STYLE_CHANGED )
const std::string& text = value.Get< std::string >();
DALI_LOG_INFO( gLogFilter, Debug::General, "TextEditor::OnPropertySet %p PLACEHOLDER_TEXT %s\n", impl.mController.Get(), text.c_str() );
- impl.mController->SetPlaceholderText( text );
+ impl.mController->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, text );
}
break;
}
}
break;
}
+ case Toolkit::DevelTextEditor::Property::LINE_WRAP_MODE:
+ {
+ const std::string& wrapModeStr = value.Get< std::string >();
+ DALI_LOG_INFO( gLogFilter, Debug::General, "TextEditor %p LINE_WRAP_MODE %s\n", impl.mController.Get(), wrapModeStr.c_str() );
+
+ Layout::LineWrap::Mode lineWrapMode( Layout::LineWrap::WORD );
+ if( Scripting::GetEnumeration< Layout::LineWrap::Mode >( wrapModeStr.c_str(),
+ LINE_WRAP_MODE_STRING_TABLE,
+ LINE_WRAP_MODE_STRING_TABLE_COUNT,
+ lineWrapMode ) )
+ {
+ impl.mController->SetLineWrapMode( lineWrapMode );
+ }
+ break;
+ }
} // switch
} // texteditor
}
if( impl.mController )
{
std::string text;
- impl.mController->GetPlaceholderText( text );
+ impl.mController->GetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, text );
value = text;
}
break;
value = map;
break;
}
+ case Toolkit::DevelTextEditor::Property::LINE_WRAP_MODE:
+ {
+ if( impl.mController )
+ {
+ value = impl.mController->GetLineWrapMode();
+ }
+ }
} //switch
}
const std::string EMPTY_STRING("");
const char * const PLACEHOLDER_TEXT = "placeholderText";
+const char * const PLACEHOLDER_TEXT_FOCUSED = "placeholderTextFocused";
const char * const PLACEHOLDER_COLOR = "placeholderColor";
const char * const PLACEHOLDER_FONT_FAMILY = "placeholderFontFamily";
const char * const PLACEHOLDER_FONT_STYLE = "placeholderFontStyle";
return mImpl->mModel->mVerticalAlignment;
}
+ void Controller::SetLineWrapMode( Layout::LineWrap::Mode lineWrapMode )
+ {
+ if( lineWrapMode != mImpl->mModel->mLineWrapMode )
+ {
+ // Set the text wrap mode.
+ mImpl->mModel->mLineWrapMode = lineWrapMode;
+
+
+ // Update Text layout for applying wrap mode
+ mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
+ ALIGN |
+ LAYOUT |
+ UPDATE_LAYOUT_SIZE |
+ REORDER );
+ mImpl->mTextUpdateInfo.mCharacterIndex = 0u;
+ mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+ mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+
+ // Request relayout
+ mImpl->RequestRelayout();
+ }
+ }
+
+ Layout::LineWrap::Mode Controller::GetLineWrapMode() const
+ {
+ return mImpl->mModel->mLineWrapMode;
+ }
+
void Controller::SetTextElideEnabled( bool enabled )
{
mImpl->mModel->mElideEnabled = enabled;
}
}
-void Controller::SetPlaceholderText( const std::string& text )
-{
- if( NULL != mImpl->mEventData )
- {
- mImpl->mEventData->mPlaceholderText = text;
-
- // Update placeholder if there is no text
- if( mImpl->IsShowingPlaceholderText() ||
- ( 0u == mImpl->mModel->mLogicalModel->mText.Count() ) )
- {
- ShowPlaceholderText();
- }
- }
-}
-
-// This is overloading function for PLACEHOLDER_TEXT_FOCUSED in text-field
void Controller::SetPlaceholderText( PlaceholderType type, const std::string& text )
{
if( NULL != mImpl->mEventData )
}
}
-void Controller::GetPlaceholderText( std::string& text ) const
-{
- if( NULL != mImpl->mEventData )
- {
- text = mImpl->mEventData->mPlaceholderText;
- }
-}
-
-// This is overloading function for PLACEHOLDER_TEXT_FOCUSED in text-field
void Controller::GetPlaceholderText( PlaceholderType type, std::string& text ) const
{
if( NULL != mImpl->mEventData )
{
std::string text = "";
value.Get( text );
- SetPlaceholderText( text );
+ SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, text );
+ }
+ else if( key == PLACEHOLDER_TEXT_FOCUSED )
+ {
+ std::string text = "";
+ value.Get( text );
+ SetPlaceholderText( Controller::PLACEHOLDER_TYPE_ACTIVE, text );
}
else if( key == PLACEHOLDER_COLOR )
{
{
if( NULL != mImpl->mEventData )
{
- map[ PLACEHOLDER_TEXT ] = mImpl->mEventData->mPlaceholderText;
+ if( !mImpl->mEventData->mPlaceholderTextActive.empty() )
+ {
+ map[ PLACEHOLDER_TEXT_FOCUSED ] = mImpl->mEventData->mPlaceholderTextActive;
+ }
+ if( !mImpl->mEventData->mPlaceholderTextInactive.empty() )
+ {
+ map[ PLACEHOLDER_TEXT ] = mImpl->mEventData->mPlaceholderTextInactive;
+ }
+
map[ PLACEHOLDER_COLOR ] = mImpl->mEventData->mPlaceholderTextColor;
map[ PLACEHOLDER_FONT_FAMILY ] = GetPlaceholderFontFamily();
charactersToGlyphBuffer,
glyphsPerCharacterBuffer,
totalNumberOfGlyphs,
- mImpl->mModel->mHorizontalAlignment );
+ mImpl->mModel->mHorizontalAlignment,
+ mImpl->mModel->mLineWrapMode );
// Resize the vector of positions to have the same size than the vector of glyphs.
Vector<Vector2>& glyphPositions = mImpl->mModel->mVisualModel->mGlyphPositions;
const char* text( NULL );
size_t size( 0 );
- if( !mImpl->mEventData->mPlaceholderTextActive.empty() || !mImpl->mEventData->mPlaceholderTextInactive.empty() )
+ // TODO - Switch Placeholder text when changing state
+ if( ( EventData::INACTIVE != mImpl->mEventData->mState ) &&
+ ( 0u != mImpl->mEventData->mPlaceholderTextActive.c_str() ) )
{
- if( ( EventData::INACTIVE != mImpl->mEventData->mState ) &&
- ( 0u != mImpl->mEventData->mPlaceholderTextActive.c_str() ) )
- {
- text = mImpl->mEventData->mPlaceholderTextActive.c_str();
- size = mImpl->mEventData->mPlaceholderTextActive.size();
- }
- else
- {
- text = mImpl->mEventData->mPlaceholderTextInactive.c_str();
- size = mImpl->mEventData->mPlaceholderTextInactive.size();
- }
+ text = mImpl->mEventData->mPlaceholderTextActive.c_str();
+ size = mImpl->mEventData->mPlaceholderTextActive.size();
}
else
{
- if( 0u != mImpl->mEventData->mPlaceholderText.c_str() )
- {
- text = mImpl->mEventData->mPlaceholderText.c_str();
- size = mImpl->mEventData->mPlaceholderText.size();
- }
+ text = mImpl->mEventData->mPlaceholderTextInactive.c_str();
+ size = mImpl->mEventData->mPlaceholderTextInactive.size();
}
mImpl->mTextUpdateInfo.mCharacterIndex = 0u;
#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup-callback-interface.h>
#include <dali-toolkit/internal/text/decorator/text-decorator.h>
#include <dali-toolkit/internal/text/layouts/layout-engine.h>
+ #include <dali-toolkit/internal/text/layouts/layout-wrap-mode.h>
#include <dali-toolkit/internal/text/hidden-text.h>
#include <dali-toolkit/internal/text/text-model-interface.h>
+
namespace Dali
{
Layout::VerticalAlignment GetVerticalAlignment() const;
/**
+ * @brief Sets the text's wrap mode
+ * @param[in] text wrap mode The unit of wrapping
+ */
+ void SetLineWrapMode( Layout::LineWrap::Mode textWarpMode );
+
+ /**
+ * @brief Retrieve text wrap mode previously set.
+ * @return text wrap mode
+ */
+ Layout::LineWrap::Mode GetLineWrapMode() const;
+
+ /**
* @brief Enable or disable the text elide.
*
* @param[in] enabled Whether to enable the text elide.
/**
* @brief Replaces any placeholder text previously set.
*
- * @param[in] text A string of UTF-8 characters.
- */
- void SetPlaceholderText( const std::string& text );
-
- /**
- * @brief Replaces any placeholder text previously set.
- *
* @param[in] type Different placeholder-text can be shown when the control is active/inactive.
* @param[in] text A string of UTF-8 characters.
*/
/**
* @brief Retrieve any placeholder text previously set.
*
- * @param[out] A string of UTF-8 characters.
- */
- void GetPlaceholderText( std::string& text ) const;
-
- /**
- * @brief Retrieve any placeholder text previously set.
- *
* @param[in] type Different placeholder-text can be shown when the control is active/inactive.
* @param[out] A string of UTF-8 characters.
*/