1 #ifndef __DALI_DEMO_HELPER_VIEW_H__
2 #define __DALI_DEMO_HELPER_VIEW_H__
5 * Copyright (c) 2014 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 char* DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
50 const float DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
52 const Dali::Toolkit::Alignment::Padding DEFAULT_PLAY_PADDING(12.0f, 12.0f, 12.0f, 12.0f);
53 const Dali::Toolkit::Alignment::Padding DEFAULT_MODE_SWITCH_PADDING(8.0f, 8.0f, 8.0f, 8.0f);
55 float ScalePointSize(int pointSize)
57 Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi();
58 float meanDpi = (dpi.height + dpi.width) * 0.5f;
59 return pointSize * 220.0f / meanDpi; // 220 is the default horizontal DPI defined in adaptor Application
62 Dali::Layer CreateToolbar( Dali::Toolkit::ToolBar& toolBar,
63 const std::string& toolbarImagePath,
64 const std::string& title,
65 const ViewStyle& style )
67 Dali::Stage stage = Dali::Stage::GetCurrent();
69 Dali::Layer toolBarLayer = Dali::Layer::New();
70 toolBarLayer.SetName( "TOOLBAR_LAYER" );
71 toolBarLayer.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
72 toolBarLayer.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
73 toolBarLayer.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::WIDTH );
74 toolBarLayer.SetSize( 0.0f, style.mToolBarHeight );
76 // Raise tool bar layer to the top.
77 toolBarLayer.RaiseToTop();
80 toolBar = Dali::Toolkit::ToolBar::New();
81 toolBar.SetName( "TOOLBAR" );
82 Dali::Property::Map background;
83 background["url"] = toolbarImagePath;
84 toolBar.SetProperty( Dali::Toolkit::Control::Property::BACKGROUND, background );
85 toolBar.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
86 toolBar.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
87 toolBar.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
89 // Add the tool bar to the tool bar layer.
90 toolBarLayer.Add( toolBar );
95 Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New();
96 label.SetAnchorPoint( Dali::AnchorPoint::TOP_LEFT );
97 label.SetProperty( Dali::Toolkit::Control::Property::STYLE_NAME, "toolbarlabel" );
98 label.SetProperty( Dali::Toolkit::TextLabel::Property::TEXT, title );
99 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
100 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
101 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
103 // Add title to the tool bar.
104 const float padding( style.mToolBarPadding );
105 toolBar.AddControl( label, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter, Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
111 Dali::Layer CreateView( Dali::Application& application,
112 Dali::Toolkit::Control& view,
113 Dali::Toolkit::ToolBar& toolBar,
114 const std::string& backgroundImagePath,
115 const std::string& toolbarImagePath,
116 const std::string& title,
117 const ViewStyle& style = DEFAULT_VIEW_STYLE )
119 Dali::Stage stage = Dali::Stage::GetCurrent();
121 // Hide the indicator bar
122 application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
124 // Create default View.
125 view = Dali::Toolkit::Control::New();
126 view.SetAnchorPoint( Dali::AnchorPoint::CENTER );
127 view.SetParentOrigin( Dali::ParentOrigin::CENTER );
128 view.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
130 // Add the view to the stage before setting the background.
133 // Set background image, loading it at screen resolution:
134 if ( !backgroundImagePath.empty() )
136 Dali::Property::Map map;
137 map[Dali::Toolkit::Visual::Property::TYPE] = Dali::Toolkit::Visual::IMAGE;
138 map[Dali::Toolkit::ImageVisual::Property::URL] = backgroundImagePath;
139 map[Dali::Toolkit::ImageVisual::Property::DESIRED_WIDTH] = stage.GetSize().x;
140 map[Dali::Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = stage.GetSize().y;
141 map[Dali::Toolkit::ImageVisual::Property::FITTING_MODE] = Dali::FittingMode::SCALE_TO_FILL;
142 map[Dali::Toolkit::ImageVisual::Property::SAMPLING_MODE] = Dali::SamplingMode::BOX_THEN_LINEAR;
143 map[Dali::Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
144 view.SetProperty( Dali::Toolkit::Control::Property::BACKGROUND, map );
148 // Connects the orientation signal with the View::OrientationChanged method.
149 //application.GetOrientation().ChangedSignal().Connect( &view, &Dali::Toolkit::View::OrientationChanged );
151 // Create default ToolBar
152 Dali::Layer toolBarLayer = CreateToolbar( toolBar, toolbarImagePath, title, style );
154 // Add tool bar layer to the view.
155 view.Add( toolBarLayer );
157 // Create a content layer.
158 Dali::Layer contentLayer = Dali::Layer::New();
159 contentLayer.SetAnchorPoint( Dali::AnchorPoint::CENTER );
160 contentLayer.SetParentOrigin( Dali::ParentOrigin::CENTER );
161 contentLayer.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS );
162 view.Add( contentLayer );
163 contentLayer.LowerBelow( toolBarLayer );
168 Dali::Toolkit::TextLabel CreateToolBarLabel( const std::string& text )
170 Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New( text );
171 label.SetProperty( Dali::Toolkit::Control::Property::STYLE_NAME, "toolbarlabel" );
172 label.SetProperty( Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
173 label.SetProperty( Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" );
174 label.SetResizePolicy( Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT );
181 #endif // __DALI_DEMO_HELPER_VIEW_H__