1 #ifndef DALI_DEMO_HELPER_VIEW_H
2 #define DALI_DEMO_HELPER_VIEW_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
21 #include <dali-toolkit/dali-toolkit.h>
22 #include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
29 * Provide a style for the view and its tool bar.
33 ViewStyle( float toolBarButtonPercentage, float toolBarTitlePercentage, float toolBarHeight, float toolBarPadding )
34 : mToolBarButtonPercentage( toolBarButtonPercentage ),
35 mToolBarTitlePercentage( toolBarTitlePercentage ),
36 mToolBarHeight( toolBarHeight ),
37 mToolBarPadding( toolBarPadding )
40 float mToolBarButtonPercentage; ///< The tool bar button width is a percentage of the tool bar width.
41 float mToolBarTitlePercentage; ///< The tool bar title width is a percentage of the tool bar width.
42 float mToolBarHeight; ///< The tool bar height (in pixels).
43 float mToolBarPadding; ///< The tool bar padding (in pixels)..
46 const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 80.f, 4.f );
48 const char* DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNue");
49 const float DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
51 const Dali::Toolkit::Alignment::Padding DEFAULT_PLAY_PADDING(12.0f, 12.0f, 12.0f, 12.0f);
52 const Dali::Toolkit::Alignment::Padding DEFAULT_MODE_SWITCH_PADDING(8.0f, 8.0f, 8.0f, 8.0f);
54 Dali::Layer CreateToolbar( Dali::Toolkit::ToolBar& toolBar,
55 const std::string& toolbarImagePath,
56 const std::string& title,
57 const ViewStyle& style )
59 Dali::Layer toolBarLayer = Dali::Layer::New();
60 toolBarLayer.SetProperty( Dali::Actor::Property::NAME, "TOOLBAR_LAYER" );
61 toolBarLayer.SetProperty( Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_CENTER );
62 toolBarLayer.SetProperty( Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::TOP_CENTER );
63 toolBarLayer.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::WIDTH );
64 toolBarLayer.SetProperty( Dali::Actor::Property::SIZE, Dali::Vector2( 0.0f, style.mToolBarHeight ) );
66 // Raise tool bar layer to the top.
67 toolBarLayer.RaiseToTop();
70 toolBar = Dali::Toolkit::ToolBar::New();
71 toolBar.SetProperty( Dali::Actor::Property::NAME, "TOOLBAR" );
72 Dali::Property::Map background;
73 background["url"] = toolbarImagePath;
74 toolBar.SetProperty( Dali::Toolkit::Control::Property::BACKGROUND, background );
75 toolBar.SetProperty( Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::TOP_CENTER );
76 toolBar.SetProperty( Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_CENTER );
77 toolBar.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
79 // Add the tool bar to the tool bar layer.
80 toolBarLayer.Add( toolBar );
85 Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New();
86 label.SetProperty( Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_LEFT );
87 label.SetStyleName( "ToolbarLabel" );
88 label.SetProperty( Dali::Toolkit::TextLabel::Property::TEXT, title );
89 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
90 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
91 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
93 // Add title to the tool bar.
94 const float padding( style.mToolBarPadding );
95 toolBar.AddControl( label, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter, Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
101 Dali::Layer CreateView( Dali::Application& application,
102 Dali::Toolkit::Control& view,
103 Dali::Toolkit::ToolBar& toolBar,
104 const std::string& backgroundImagePath,
105 const std::string& toolbarImagePath,
106 const std::string& title,
107 const ViewStyle& style = DEFAULT_VIEW_STYLE )
109 Dali::Window window = application.GetWindow();
111 // Create default View.
112 view = Dali::Toolkit::Control::New();
113 view.SetProperty( Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::CENTER );
114 view.SetProperty( Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::CENTER );
115 view.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
117 // Add the view to the window before setting the background.
120 // Set background image, loading it at screen resolution:
121 if ( !backgroundImagePath.empty() )
123 Dali::Property::Map map;
124 map[Dali::Toolkit::Visual::Property::TYPE] = Dali::Toolkit::Visual::IMAGE;
125 map[Dali::Toolkit::ImageVisual::Property::URL] = backgroundImagePath;
126 map[Dali::Toolkit::ImageVisual::Property::DESIRED_WIDTH] = window.GetSize().GetWidth();
127 map[Dali::Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = window.GetSize().GetHeight();
128 map[Dali::Toolkit::ImageVisual::Property::FITTING_MODE] = Dali::FittingMode::SCALE_TO_FILL;
129 map[Dali::Toolkit::ImageVisual::Property::SAMPLING_MODE] = Dali::SamplingMode::BOX_THEN_LINEAR;
130 map[Dali::Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
131 view.SetProperty( Dali::Toolkit::Control::Property::BACKGROUND, map );
134 // Create default ToolBar
135 Dali::Layer toolBarLayer = CreateToolbar( toolBar, toolbarImagePath, title, style );
137 // Add tool bar layer to the view.
138 view.Add( toolBarLayer );
140 // Create a content layer.
141 Dali::Layer contentLayer = Dali::Layer::New();
142 contentLayer.SetProperty( Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::CENTER );
143 contentLayer.SetProperty( Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::CENTER );
144 contentLayer.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
145 view.Add( contentLayer );
146 contentLayer.LowerBelow( toolBarLayer );
151 Dali::Toolkit::TextLabel CreateToolBarLabel( const std::string& text )
153 Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New( text );
154 label.SetStyleName( "ToolbarLabel" );
155 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
156 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
157 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
164 #endif // DALI_DEMO_HELPER_VIEW_H