/*
- * 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 "beat-control.h"
+#include <dali-toolkit/devel-api/controls/control-devel.h>
+#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
#include <cstdio>
#include <sstream>
+#include "shadow-button.h"
// Internal includes
using namespace Dali;
using namespace Dali::Toolkit;
-namespace Demo
+namespace
+{
+void SetLabelText(Button button, const char* label)
{
+ button.SetProperty(Toolkit::Button::Property::LABEL, label);
+}
-const char* TransitionApplication::DEMO_THEME_ONE_PATH( DEMO_STYLE_DIR "style-example-theme-one.json" );
+} // namespace
+namespace Demo
+{
+const char* TransitionApplication::DEMO_THEME_ONE_PATH(DEMO_STYLE_DIR "style-example-theme-one.json");
+const char* TransitionApplication::DEMO_THEME_TWO_PATH(DEMO_STYLE_DIR "style-example-theme-two.json");
-TransitionApplication::TransitionApplication( Application& application )
-: mApplication( application ),
+TransitionApplication::TransitionApplication(Application& application)
+: mApplication(application),
mTitle(),
- mBeatControl(),
+ mShadowButton(),
mActionButtons(),
- mActionIndex( Property::INVALID_INDEX )
+ mVisualIndex(Property::INVALID_INDEX),
+ mActionIndex(Property::INVALID_INDEX)
{
- application.InitSignal().Connect( this, &TransitionApplication::Create );
+ application.InitSignal().Connect(this, &TransitionApplication::Create);
}
TransitionApplication::~TransitionApplication()
{
}
-void TransitionApplication::Create( Application& application )
+void TransitionApplication::Create(Application& application)
{
- Stage stage = Stage::GetCurrent();
- stage.KeyEventSignal().Connect(this, &TransitionApplication::OnKeyEvent);
- stage.SetBackgroundColor( Vector4( 0.1f, 0.1f, 0.1f, 1.0f ) );
-
- // Hide the indicator bar
- application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
+ Window window = application.GetWindow();
+ window.KeyEventSignal().Connect(this, &TransitionApplication::OnKeyEvent);
+ window.SetBackgroundColor(Vector4(0.1f, 0.1f, 0.1f, 1.0f));
// Content panes:
- TableView contentLayout = TableView::New( 3, 1 );
- contentLayout.SetName("ContentLayout");
- contentLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- contentLayout.SetAnchorPoint( AnchorPoint::TOP_LEFT );
- contentLayout.SetParentOrigin( ParentOrigin::TOP_LEFT );
- contentLayout.SetCellPadding( Size( 10, 10 ) );
-
+ TableView contentLayout = TableView::New(3, 1);
+ contentLayout.SetProperty(Dali::Actor::Property::NAME, "ContentLayout");
+ contentLayout.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+ contentLayout.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
+ contentLayout.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
+ contentLayout.SetCellPadding(Vector2(0.0f, 5.0f));
+ contentLayout.SetBackgroundColor(Vector4(0.949, 0.949, 0.949, 1.0));
// Assign all rows the size negotiation property of fitting to children
- stage.Add( contentLayout );
+ window.Add(contentLayout);
- mTitle = TextLabel::New( "Custom Control Transition Example" );
- mTitle.SetName( "Title" );
+ mTitle = TextLabel::New("Custom Control Transition Example");
+ mTitle.SetProperty(Dali::Actor::Property::NAME, "Title");
mTitle.SetStyleName("Title");
- mTitle.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- mTitle.SetParentOrigin( ParentOrigin::TOP_CENTER );
- mTitle.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
- mTitle.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
- mTitle.SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
- contentLayout.Add( mTitle );
- contentLayout.SetFitHeight(0);
-
- mBeatControl = BeatControl::New();
- mBeatControl.SetName("BeatControl");
- mBeatControl.SetAnchorPoint( AnchorPoint::CENTER );
- mBeatControl.SetParentOrigin( ParentOrigin::CENTER );
- mBeatControl.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
- contentLayout.Add( mBeatControl );
- // beat control should fill the tableview cell, so no change to default parameters
-
- TableView actionButtonLayout = TableView::New( 1, 4 );
- actionButtonLayout.SetName("ThemeButtonsLayout");
- actionButtonLayout.SetCellPadding( Vector2( 6.0f, 0.0f ) );
-
- actionButtonLayout.SetAnchorPoint( AnchorPoint::CENTER );
- actionButtonLayout.SetParentOrigin( ParentOrigin::CENTER );
- actionButtonLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
- actionButtonLayout.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
- actionButtonLayout.SetCellPadding( Size( 10, 10 ) );
- actionButtonLayout.SetFitHeight( 0 );
-
- TextLabel label = TextLabel::New( "Action: ");
- label.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+ mTitle.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
+ mTitle.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT);
+ mTitle.SetProperty(TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
+ contentLayout.Add(mTitle);
+ contentLayout.SetFitHeight(0); // Fill width
+
+ // Provide some padding around the center cell
+ TableView buttonLayout = TableView::New(3, 3);
+ buttonLayout.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+ buttonLayout.SetFixedHeight(1, 100);
+ buttonLayout.SetFixedWidth(1, 350);
+ contentLayout.Add(buttonLayout);
+
+ mShadowButton = ShadowButton::New();
+ mShadowButton.SetProperty(Dali::Actor::Property::NAME, "ShadowButton");
+ mShadowButton.SetActiveState(false);
+ mShadowButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+ mShadowButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+ mShadowButton.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+ mShadowButton.SetProperty(DevelControl::Property::STATE, DevelControl::DISABLED);
+ mShadowButton.SetProperty(DevelControl::Property::SUB_STATE, "UNCHECKED");
+
+ buttonLayout.AddChild(mShadowButton, TableView::CellPosition(1, 1));
+
+ TableView actionButtonLayout = TableView::New(1, NUMBER_OF_ACTION_BUTTONS + 1);
+ actionButtonLayout.SetProperty(Dali::Actor::Property::NAME, "ThemeButtonsLayout");
+ actionButtonLayout.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
+ actionButtonLayout.SetResizePolicy(ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT);
+ actionButtonLayout.SetFitHeight(0);
+
+ TextLabel label = TextLabel::New("Action: ");
+ label.SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS);
label.SetStyleName("ActionLabel");
- label.SetAnchorPoint( AnchorPoint::TOP_CENTER );
- label.SetParentOrigin( ParentOrigin::TOP_CENTER );
- actionButtonLayout.AddChild( label, TableView::CellPosition( 0, 0 ) );
- actionButtonLayout.SetCellAlignment( TableView::CellPosition( 0, 0 ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
+ actionButtonLayout.AddChild(label, TableView::CellPosition(0, 0));
+ actionButtonLayout.SetCellAlignment(TableView::CellPosition(0, 0), HorizontalAlignment::LEFT, VerticalAlignment::CENTER);
- for( int i=0; i<3; ++i )
+ for(int i = 0; i < NUMBER_OF_ACTION_BUTTONS; ++i)
{
mActionButtons[i] = PushButton::New();
- mActionButtons[i].SetName("ActionButton");
+ mActionButtons[i].SetProperty(Dali::Actor::Property::NAME, "ActionButton");
mActionButtons[i].SetStyleName("ActionButton");
- mActionButtons[i].SetParentOrigin( ParentOrigin::CENTER );
- mActionButtons[i].SetAnchorPoint( ParentOrigin::CENTER );
- mActionButtons[i].SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
- mActionButtons[i].SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
- mActionIndex = mActionButtons[i].RegisterProperty( "actionId", i, Property::READ_WRITE );
- mActionButtons[i].ClickedSignal().Connect( this, &TransitionApplication::OnActionButtonClicked );
- actionButtonLayout.AddChild( mActionButtons[i], TableView::CellPosition( 0, 1+i ) );
+ mActionButtons[i].SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH);
+ mActionButtons[i].SetResizePolicy(ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT);
+ mActionIndex = mActionButtons[i].RegisterProperty("actionId", i, Property::READ_WRITE);
+ mActionButtons[i].ClickedSignal().Connect(this, &TransitionApplication::OnActionButtonClicked);
+ actionButtonLayout.AddChild(mActionButtons[i], TableView::CellPosition(0, 1 + i));
}
- mActionButtons[0].SetLabelText( "Bounce" );
- mActionButtons[1].SetLabelText( "X" );
- mActionButtons[2].SetLabelText( "Y" );
+ SetLabelText(mActionButtons[0], "Enable");
+ SetLabelText(mActionButtons[1], "Check");
+ mActionButtons[1].SetProperty(Button::Property::DISABLED, true);
- contentLayout.Add( actionButtonLayout );
+ contentLayout.Add(actionButtonLayout);
contentLayout.SetFitHeight(2);
}
-
-bool TransitionApplication::OnActionButtonClicked( Button button )
+bool TransitionApplication::OnActionButtonClicked(Button button)
{
- int action = button.GetProperty<int>( mActionIndex );
- switch( action )
+ int action = button.GetProperty<int>(mActionIndex);
+ switch(action)
{
case 0:
{
- mBeatControl.StartBounceAnimation();
+ bool activeState = mShadowButton.GetActiveState();
+ mShadowButton.SetActiveState(!activeState);
+ if(activeState)
+ {
+ SetLabelText(button, "Enable");
+ mShadowButton.SetProperty(DevelControl::Property::STATE, DevelControl::DISABLED);
+ }
+ else
+ {
+ SetLabelText(button, "Disable");
+ mShadowButton.SetProperty(DevelControl::Property::STATE, DevelControl::NORMAL);
+ }
+ mActionButtons[1].SetProperty(Button::Property::DISABLED, activeState);
break;
}
case 1:
{
- mBeatControl.StartXAnimation();
+ bool checkState = mShadowButton.GetCheckState();
+ mShadowButton.SetCheckState(!checkState);
+ if(checkState)
+ {
+ SetLabelText(button, "Check");
+ mShadowButton.SetProperty(DevelControl::Property::SUB_STATE, "UNCHECKED");
+ }
+ else
+ {
+ SetLabelText(button, "Uncheck");
+ mShadowButton.SetProperty(DevelControl::Property::SUB_STATE, "CHECKED");
+ }
break;
}
case 2:
{
- mBeatControl.StartYAnimation();
+ break;
+ }
+ case 3:
+ {
break;
}
}
return true;
}
-void TransitionApplication::OnKeyEvent( const KeyEvent& keyEvent )
+void TransitionApplication::OnKeyEvent(const KeyEvent& keyEvent)
{
static int keyPressed = 0;
- if( keyEvent.state == KeyEvent::Down)
+ if(keyEvent.GetState() == KeyEvent::DOWN)
{
- if( keyPressed == 0 ) // Is this the first down event?
+ if(keyPressed == 0) // Is this the first down event?
{
- printf("Key pressed: %s %d\n", keyEvent.keyPressedName.c_str(), keyEvent.keyCode );
+ printf("Key pressed: %s %d\n", keyEvent.GetKeyName().c_str(), keyEvent.GetKeyCode());
- if( IsKey( keyEvent, DALI_KEY_ESCAPE) || IsKey( keyEvent, DALI_KEY_BACK ) )
+ if(IsKey(keyEvent, DALI_KEY_ESCAPE) || IsKey(keyEvent, DALI_KEY_BACK))
{
mApplication.Quit();
}
- else if( keyEvent.keyPressedName.compare("Return") == 0 )
+ else if(keyEvent.GetKeyName().compare("Return") == 0)
{
}
}
keyPressed = 1;
}
- else if( keyEvent.state == KeyEvent::Up )
+ else if(keyEvent.GetState() == KeyEvent::UP)
{
keyPressed = 0;
}