/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
// EXTERNAL INCLUDES
#include <dali-toolkit/dali-toolkit.h>
-#include <iostream>
#include <sstream>
// INTERNAL INCLUDES
namespace
{
+const char * const THEME_PATH( DEMO_STYLE_DIR "text-editor-example-theme.json" ); ///< The theme used for this example
const Vector4 BACKGROUND_COLOR( 0.04f, 0.345f, 0.392f, 1.0f ); ///< The background color.
const char* TOOLBAR_IMAGE = DEMO_IMAGE_DIR "top-bar.png"; ///< The tool-bar image.
const float TOOLBAR_BUTTON_PERCENTAGE = 0.1f; ///< The button's space width as a percentage of the toolbar's width.
const float TOOLBAR_HEIGHT_PERCENTAGE = 0.05f; ///< The toolbar's height as a percentage of the stage's height.
const float TOOLBAR_PADDING = 4.f; ///< The padding in pixels.
const float BUTTON_PERCENTAGE = 0.8f; ///< The button's height as a percentage of the space for the buttons in the toolbar.
-const Vector3 TEXT_EDITOR_RELATIVE_SIZE( 1.f, 0.45f, 1.0f ); ///< The size of the text editor as a percentage of the stage's size.
+const Vector3 TEXT_EDITOR_RELATIVE_SIZE( 0.9f, 0.5f, 1.0f ); ///< The size of the text editor as a percentage of the stage's size.
const Vector4 TEXT_EDITOR_BACKGROUND_COLOR( 1.f, 1.f, 1.f, 0.15f ); ///< The background color of the text editor.
const Vector4 COLORS[] = { Color::RED,
mColorContainer = Control::New();
mColorContainer.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::WIDTH );
mColorContainer.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::HEIGHT );
- mColorContainer.SetSizeModeFactor( Vector3( 0.0f, BUTTON_PERCENTAGE, 0.0f ) );
+ mColorContainer.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.0f, BUTTON_PERCENTAGE, 0.0f ) );
// Place to right of parent.
- mColorContainer.SetParentOrigin( ParentOrigin::CENTER_RIGHT );
- mColorContainer.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
+ mColorContainer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER_RIGHT );
+ mColorContainer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER_LEFT );
colorLabel.Add( mColorContainer );
// Add border to highlight harder-to-see colors.
// We use a color rather than border visual as the container will always be behind the button.
Property::Map colorMap;
- colorMap.Insert( Visual::Property::TYPE, Visual::COLOR);
+ colorMap.Insert( Toolkit::Visual::Property::TYPE, Visual::COLOR);
colorMap.Insert( ColorVisual::Property::MIX_COLOR, Color::BLACK );
mColorContainer.SetProperty( Control::Property::BACKGROUND, colorMap );
// Create a 'select color' button.
mColorButtonOption = Toolkit::PushButton::New();
mColorButtonOption.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- mColorButtonOption.SetSizeModeFactor( Vector3( 0.9f, 0.9f, 0.0f ) ); // Smaller than container to show border.
- mColorButtonOption.SetParentOrigin( ParentOrigin::CENTER );
- mColorButtonOption.SetAnchorPoint( AnchorPoint::CENTER );
+ mColorButtonOption.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.9f, 0.9f, 0.0f ) ); // Smaller than container to show border.
+ mColorButtonOption.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+ mColorButtonOption.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
- mColorButtonOption.SetProperty( Button::Property::UNSELECTED_COLOR, Color::BLACK );
- mColorButtonOption.SetProperty( Button::Property::SELECTED_COLOR, Color::BLACK );
+ SetButtonColor( mColorButtonOption, Color::BLACK );
mColorButtonOption.ClickedSignal().Connect( this, &TextEditorExample::OnChangeColorButtonClicked );
mColorContainer.Add( mColorButtonOption );
// Create the text editor.
mEditor = TextEditor::New();
- mEditor.SetParentOrigin( ParentOrigin::TOP_CENTER );
- mEditor.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- mEditor.SetPosition( 0.f, toolBarHeight, 0.f );
+ mEditor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
+ mEditor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
+ mEditor.SetPosition( 0.f, toolBarHeight * 2.0f, 0.f );
mEditor.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- mEditor.SetSizeModeFactor( TEXT_EDITOR_RELATIVE_SIZE );
+ mEditor.SetProperty( Actor::Property::SIZE_MODE_FACTOR, TEXT_EDITOR_RELATIVE_SIZE );
mEditor.SetBackgroundColor( TEXT_EDITOR_BACKGROUND_COLOR );
mEditor.InputStyleChangedSignal().Connect( this, &TextEditorExample::OnTextInputStyleChanged );
contents.Add( mEditor );
+ StyleManager styleManager = StyleManager::Get();
+ styleManager.ApplyTheme( THEME_PATH );
}
void CreateButtonContainer()
{
mButtonContainer = Toolkit::TableView::New( NUMBER_OF_COLORS, 1u );
mButtonContainer.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- mButtonContainer.SetSizeModeFactor( Vector3( 1.0f, NUMBER_OF_COLORS, 1.0f ) );
+ mButtonContainer.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 1.0f, NUMBER_OF_COLORS, 1.0f ) );
// Place below color selection button.
- mButtonContainer.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
- mButtonContainer.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+ mButtonContainer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER );
+ mButtonContainer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
mButtonContainer.SetPosition( 0.0f, 2.f * TOOLBAR_PADDING, 0.f );
mColorContainer.Add( mButtonContainer );
{
Toolkit::PushButton button = Toolkit::PushButton::New();
button.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
- button.SetSizeModeFactor( buttonPercentage );
+ button.SetProperty( Actor::Property::SIZE_MODE_FACTOR, buttonPercentage );
std::ostringstream s;
s << "color" << index;
- button.SetName( s.str() );
+ button.SetProperty( Dali::Actor::Property::NAME, s.str() );
- button.SetProperty( Button::Property::UNSELECTED_COLOR, COLORS[index] );
- button.SetProperty( Button::Property::SELECTED_COLOR, COLORS[index] );
+ SetButtonColor( button, COLORS[index] );
button.ClickedSignal().Connect( this, &TextEditorExample::OnColorButtonClicked );
CreateButtonContainer();
}
- mButtonContainer.SetVisible( true );
- mButtonContainer.SetSensitive( true );
+ mButtonContainer.SetProperty( Actor::Property::VISIBLE, true );
+ mButtonContainer.SetProperty( Actor::Property::SENSITIVE, true );
return true;
}
bool OnColorButtonClicked( Button button )
{
- const std::string& name = button.GetName();
+ const std::string& name = button.GetProperty< std::string >( Dali::Actor::Property::NAME );
Vector4 color;
if( "color" == name.substr( 0u, 5u ) )
mEditor.SetProperty( TextEditor::Property::INPUT_COLOR, color );
}
- mColorButtonOption.SetProperty( Button::Property::UNSELECTED_COLOR, color );
- mColorButtonOption.SetProperty( Button::Property::SELECTED_COLOR, color );
+ SetButtonColor( mColorButtonOption, color );
- mButtonContainer.SetVisible( false );
- mButtonContainer.SetSensitive( false );
+ mButtonContainer.SetProperty( Actor::Property::VISIBLE, false );
+ mButtonContainer.SetProperty( Actor::Property::SENSITIVE, false );
return true;
}
if( TextEditor::InputStyle::NONE != static_cast<TextEditor::InputStyle::Mask>( mask & TextEditor::InputStyle::COLOR ) )
{
const Vector4 color = editor.GetProperty( TextEditor::Property::INPUT_COLOR ).Get<Vector4>();
-
- mColorButtonOption.SetProperty( Button::Property::UNSELECTED_COLOR, color );
- mColorButtonOption.SetProperty( Button::Property::SELECTED_COLOR, color );
+ SetButtonColor( mColorButtonOption, color );
}
editor.Reset();
}
+ void SetButtonColor( Button& button, const Vector4& color )
+ {
+ Property::Map colorVisualMap;
+ colorVisualMap.Add( Toolkit::Visual::Property::TYPE, Visual::COLOR )
+ .Add( ColorVisual::Property::MIX_COLOR, color );
+
+ button.SetProperty( Button::Property::UNSELECTED_BACKGROUND_VISUAL, colorVisualMap );
+ button.SetProperty( Button::Property::SELECTED_BACKGROUND_VISUAL, colorVisualMap );
+ }
+
private:
Application& mApplication;
Toolkit::TableView mButtonContainer;
};
-void RunTest( Application& application )
-{
- TextEditorExample test( application );
-
- application.MainLoop();
-}
-
-/** Entry point for Linux & Tizen applications */
-int main( int argc, char **argv )
+int DALI_EXPORT_API main( int argc, char **argv )
{
// DALI_DEMO_THEME_PATH not passed to Application so TextEditor example uses default Toolkit style sheet.
Application application = Application::New( &argc, &argv );
-
- RunTest( application );
-
+ TextEditorExample test( application );
+ application.MainLoop();
return 0;
}