/*
- * Copyright (c) 2017 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.
*
*/
-#include "shared/view.h"
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
+#include "shared/view.h"
using namespace Dali;
using namespace Dali::Toolkit;
namespace
{
-
const char* const BACKGROUND_IMAGE = DEMO_IMAGE_DIR "background-gradient.jpg";
-const char* const TOOLBAR_IMAGE = DEMO_IMAGE_DIR "top-bar.png";
-const char* const TOOLBAR_TITLE = "Focus Integration";
-const Vector4 BACKGROUND_COLOUR( 1.0f, 1.0f, 1.0f, 0.15f );
+const char* const TOOLBAR_IMAGE = DEMO_IMAGE_DIR "top-bar.png";
+const char* const TOOLBAR_TITLE = "Focus Integration";
+const Vector4 BACKGROUND_COLOUR(1.0f, 1.0f, 1.0f, 0.15f);
// Layout sizes
-const int MARGIN_SIZE = 10;
-const int TOP_MARGIN = 85;
-const std::string ITEMNAME[] = { "TextLabel", "TextField", "TextEditor", "PushButton", "RadioButton", "CheckBoxButton" };
+const int MARGIN_SIZE = 10;
+const int TOP_MARGIN = 85;
+const std::string ITEMNAME[] = {"TextLabel", "TextField", "TextEditor", "PushButton", "RadioButton", "CheckBoxButton"};
-} // namespace
+} // namespace
/**
* @brief Shows how integrated DALi Focus works.
*/
-class FocusIntegrationExample: public ConnectionTracker
+class FocusIntegrationExample : public ConnectionTracker
{
public:
-
- FocusIntegrationExample( Application& application )
- : mApplication( application )
+ FocusIntegrationExample(Application& application)
+ : mApplication(application)
{
// Connect to the Application's Init signal
- mApplication.InitSignal().Connect( this, &FocusIntegrationExample::Create );
+ mApplication.InitSignal().Connect(this, &FocusIntegrationExample::Create);
}
- void Create( Application& application )
+ void Create(Application& application)
{
- mStage = Stage::GetCurrent();
- mContentLayer = DemoHelper::CreateView( application,
- mView,
- mToolBar,
- BACKGROUND_IMAGE,
- TOOLBAR_IMAGE,
- TOOLBAR_TITLE );
+ mWindow = application.GetWindow();
+ Vector2 windowSize = mWindow.GetSize();
+ mContentLayer = DemoHelper::CreateView(application,
+ mView,
+ mToolBar,
+ BACKGROUND_IMAGE,
+ TOOLBAR_IMAGE,
+ TOOLBAR_TITLE);
TableView contentTable = TableView::New(2, 1);
contentTable.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
contentTable.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT);
- contentTable.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT);
- contentTable.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::TOP_LEFT);
+ contentTable.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ contentTable.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
contentTable.SetCellPadding(Size(MARGIN_SIZE, MARGIN_SIZE * 0.5f));
- contentTable.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true);
+ contentTable.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
- for( unsigned int i = 0; i < contentTable.GetRows(); ++i )
+ for(unsigned int i = 0; i < contentTable.GetRows(); ++i)
{
- contentTable.SetFitHeight( i );
+ contentTable.SetFitHeight(i);
}
- contentTable.SetProperty( Actor::Property::POSITION, Vector2( 0.0f, TOP_MARGIN ));
- mContentLayer.Add( contentTable );
+ contentTable.SetProperty(Actor::Property::POSITION, Vector2(0.0f, TOP_MARGIN));
+ mContentLayer.Add(contentTable);
// Create label to display which control's KeyEvent callback is called
mEventLabel = TextLabel::New("Controls don't get KeyEvent yet");
- mEventLabel.SetProperty( Actor::Property::SIZE, Vector2( mStage.GetSize().width, mStage.GetSize().height*0.1f ) );
+ mEventLabel.SetProperty(Actor::Property::SIZE, Vector2(windowSize.width, windowSize.height * 0.1f));
mEventLabel.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
- mEventLabel.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
- mEventLabel.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
- mEventLabel.SetBackgroundColor( Color::WHITE );
- contentTable.Add( mEventLabel );
+ mEventLabel.SetProperty(TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER");
+ mEventLabel.SetProperty(TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
+ mEventLabel.SetBackgroundColor(Color::WHITE);
+ contentTable.Add(mEventLabel);
- mContainer = TableView::New( 4, 3 );
- mContainer.SetProperty( Actor::Property::SIZE, Vector2( mStage.GetSize().width, mStage.GetSize().height*0.4f ) );
+ mContainer = TableView::New(4, 3);
+ mContainer.SetProperty(Actor::Property::SIZE, Vector2(windowSize.width, windowSize.height * 0.4f));
mContainer.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
- mContainer.SetBackgroundColor( BACKGROUND_COLOUR );
- mContainer.SetCellPadding( Size( MARGIN_SIZE, MARGIN_SIZE ) );
- mContainer.SetRelativeHeight( 0, 0.2f);
- mContainer.SetRelativeHeight( 1, 0.3f);
- mContainer.SetRelativeHeight( 2, 0.2f);
- mContainer.SetRelativeHeight( 3, 0.3f);
- mContainer.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true);
- contentTable.Add( mContainer );
+ mContainer.SetBackgroundColor(BACKGROUND_COLOUR);
+ mContainer.SetCellPadding(Size(MARGIN_SIZE, MARGIN_SIZE));
+ mContainer.SetRelativeHeight(0, 0.2f);
+ mContainer.SetRelativeHeight(1, 0.3f);
+ mContainer.SetRelativeHeight(2, 0.2f);
+ mContainer.SetRelativeHeight(3, 0.3f);
+ mContainer.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
+ contentTable.Add(mContainer);
// Make name label for each controls
for(int i = 0; i < 6; i++)
{
- TextLabel itemLabel = TextLabel::New( ITEMNAME[i] );
- itemLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- itemLabel.SetBackgroundColor( BACKGROUND_COLOUR );
- itemLabel.SetProperty( TextLabel::Property::POINT_SIZE, 14.0f );
- itemLabel.SetProperty( TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
- itemLabel.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
- mContainer.AddChild( itemLabel, TableView::CellPosition( (i/3)*2, i%3 ) );
+ TextLabel itemLabel = TextLabel::New(ITEMNAME[i]);
+ itemLabel.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+ itemLabel.SetBackgroundColor(BACKGROUND_COLOUR);
+ itemLabel.SetProperty(TextLabel::Property::POINT_SIZE, 14.0f);
+ itemLabel.SetProperty(TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER");
+ itemLabel.SetProperty(TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
+ mContainer.AddChild(itemLabel, TableView::CellPosition((i / 3) * 2, i % 3));
}
TextLabel textLabel = TextLabel::New("TextLabel");
- mContainer.AddChild( textLabel, TableView::CellPosition( 1, 0 ) );
+ mContainer.AddChild(textLabel, TableView::CellPosition(1, 0));
TextField textField = TextField::New();
- textField.SetBackgroundColor( Color::WHITE );
- textField.SetProperty( TextField::Property::TEXT, "Text" );
- mContainer.AddChild( textField, TableView::CellPosition( 1, 1 ) );
+ textField.SetBackgroundColor(Color::WHITE);
+ textField.SetProperty(TextField::Property::TEXT, "Text");
+ mContainer.AddChild(textField, TableView::CellPosition(1, 1));
TextEditor textEditor = TextEditor::New();
- textEditor.SetBackgroundColor( Color::WHITE );
- textEditor.SetProperty( TextEditor::Property::TEXT, "Text\nText" );
- mContainer.AddChild( textEditor, TableView::CellPosition( 1, 2 ) );
+ textEditor.SetBackgroundColor(Color::WHITE);
+ textEditor.SetProperty(TextEditor::Property::TEXT, "Text\nText");
+ mContainer.AddChild(textEditor, TableView::CellPosition(1, 2));
PushButton pushButton = PushButton::New();
- mContainer.AddChild( pushButton, TableView::CellPosition( 3, 0 ) );
+ mContainer.AddChild(pushButton, TableView::CellPosition(3, 0));
RadioButton radioButton = RadioButton::New();
- mContainer.AddChild( radioButton, TableView::CellPosition( 3, 1 ) );
+ mContainer.AddChild(radioButton, TableView::CellPosition(3, 1));
CheckBoxButton checkBoxButton = CheckBoxButton::New();
- mContainer.AddChild( checkBoxButton, TableView::CellPosition( 3, 2 ) );
+ mContainer.AddChild(checkBoxButton, TableView::CellPosition(3, 2));
// Set name and keyboard focusable for each controls
- for(int i = 0; i<6; i++)
+ for(int i = 0; i < 6; i++)
{
- Control control = Control::DownCast( mContainer.GetChildAt( TableView::CellPosition( (i/3)*2+1, i%3 ) ) );
- control.SetProperty( Actor::Property::KEYBOARD_FOCUSABLE,true);
- control.SetProperty( Dali::Actor::Property::NAME,ITEMNAME[i]);
- control.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- control.KeyEventSignal().Connect( this, &FocusIntegrationExample::OnControlKeyEvent );
+ Control control = Control::DownCast(mContainer.GetChildAt(TableView::CellPosition((i / 3) * 2 + 1, i % 3)));
+ control.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
+ control.SetProperty(Dali::Actor::Property::NAME, ITEMNAME[i]);
+ control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+ control.KeyEventSignal().Connect(this, &FocusIntegrationExample::OnControlKeyEvent);
}
- KeyboardFocusManager::Get().PreFocusChangeSignal().Connect( this, &FocusIntegrationExample::OnPreFocusChange );
+ KeyboardFocusManager::Get().PreFocusChangeSignal().Connect(this, &FocusIntegrationExample::OnPreFocusChange);
// Respond to key events
- mStage.KeyEventSignal().Connect( this, &FocusIntegrationExample::OnKeyEvent );
+ mWindow.KeyEventSignal().Connect(this, &FocusIntegrationExample::OnKeyEvent);
}
// Callback for KeyboardFocusManager
- Actor OnPreFocusChange( Actor current, Actor next, Control::KeyboardFocus::Direction direction )
+ Actor OnPreFocusChange(Actor current, Actor next, Control::KeyboardFocus::Direction direction)
{
- if( !current && !next )
+ if(!current && !next)
{
- next = mContainer.GetChildAt( TableView::CellPosition( 1, 0 ) );
+ next = mContainer.GetChildAt(TableView::CellPosition(1, 0));
}
return next;
}
// Callback for each controls.
// Display current control name.
- bool OnControlKeyEvent( Control control, const KeyEvent& event )
+ bool OnControlKeyEvent(Control control, const KeyEvent& event)
{
- std::string controlName = control.GetProperty< std::string >( Dali::Actor::Property::NAME );
- mEventLabel.SetProperty( TextLabel::Property::TEXT, controlName+"'s KeyEvent works\n" );
+ std::string controlName = control.GetProperty<std::string>(Dali::Actor::Property::NAME);
+ mEventLabel.SetProperty(TextLabel::Property::TEXT, controlName + "'s KeyEvent works\n");
return false;
}
private:
-
/**
* Main key event handler
*/
void OnKeyEvent(const KeyEvent& event)
{
- if(event.state == KeyEvent::Down)
+ if(event.GetState() == KeyEvent::DOWN)
{
- if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
+ if(IsKey(event, DALI_KEY_ESCAPE) || IsKey(event, DALI_KEY_BACK))
{
mApplication.Quit();
}
}
private:
-
- Application& mApplication;
- Stage mStage;
- TableView mContainer;
- TextLabel mEventLabel;
- Toolkit::Control mView; ///< The View instance.
- Toolkit::ToolBar mToolBar; ///< The View's Toolbar.
- Layer mContentLayer; ///< Content layer.
+ Application& mApplication;
+ Window mWindow;
+ TableView mContainer;
+ TextLabel mEventLabel;
+ Toolkit::Control mView; ///< The View instance.
+ Toolkit::ToolBar mToolBar; ///< The View's Toolbar.
+ Layer mContentLayer; ///< Content layer.
};
//
-int DALI_EXPORT_API main( int argc, char **argv )
+int DALI_EXPORT_API main(int argc, char** argv)
{
- Application application = Application::New( &argc, &argv );
+ Application application = Application::New(&argc, &argv);
- FocusIntegrationExample test( application );
+ FocusIntegrationExample test(application);
application.MainLoop();