X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fbuilder%2Fexamples.cpp;h=e0222277b7126c576707f8867bfae937e11de848;hb=e73c5dea0fd58569c54a3384098e343d9449e2bd;hp=e958659e4a661fff7b6195af7148f3effd20fbba;hpb=43da1f92c331388370053a5f8e16cdd6f0d1bdc2;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/builder/examples.cpp b/examples/builder/examples.cpp index e958659..e022227 100644 --- a/examples/builder/examples.cpp +++ b/examples/builder/examples.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -22,9 +22,13 @@ #include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include + #include #include #include @@ -39,6 +43,7 @@ #include #include +#include #include "shared/view.h" #define TOKEN_STRING(x) #x @@ -50,8 +55,9 @@ namespace { const char* BACKGROUND_IMAGE( "" ); -const char* TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" ); -const char* EDIT_IMAGE( DALI_IMAGE_DIR "icon-change.png" ); +const char* TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" ); +const char* EDIT_IMAGE( DEMO_IMAGE_DIR "icon-change.png" ); +const char* EDIT_IMAGE_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" ); std::string USER_DIRECTORY; @@ -62,7 +68,7 @@ std::string JSON_BROKEN(" \ { \ 'type':'TextLabel', \ 'size': [50,50,1], \ - 'parent-origin': 'CENTER', \ + 'parentOrigin': 'CENTER', \ 'text':'COULD NOT LOAD JSON FILE' \ } \ ] \ @@ -81,9 +87,14 @@ std::string ReplaceQuotes(const std::string &single_quoted) std::string GetFileContents(const std::string &fn) { - std::ifstream t(fn.c_str()); - return std::string((std::istreambuf_iterator(t)), - std::istreambuf_iterator()); + std::streampos bufferSize = 0; + Dali::Vector fileBuffer; + if( !Dali::FileLoader::ReadFile( fn, bufferSize, fileBuffer, FileLoader::FileType::BINARY ) ) + { + return std::string(); + } + + return std::string( &fileBuffer[0], bufferSize ); }; typedef std::vector FileList; @@ -134,6 +145,7 @@ const std::string ShortName( const std::string& name ) if( pos != std::string::npos ) { + pos++; return name.substr( pos ); } else @@ -247,44 +259,23 @@ public: mTitleActor.SetProperty( TextLabel::Property::TEXT, title ); } - bool OnToolSelectLayout( Toolkit::Button button ) + bool OnBackButtonPressed( Toolkit::Button button ) { - bool on = mItemView.IsVisible(); - - if( on ) - { - LeaveSelection(); - } - else - { - EnterSelection(); - } - + OnQuitOrBack(); return true; } - void LeaveSelection() - { - - } - - void EnterSelection() + void SetUpItemView() { Stage stage = Stage::GetCurrent(); - stage.SetBackgroundColor( Color::WHITE ); mTapDetector = TapGestureDetector::New(); mTapDetector.DetectedSignal().Connect( this, &ExampleApp::OnTap ); - if( mItemView ) - { - stage.Remove( mItemView ); - } - mFiles.clear(); mItemView = ItemView::New(*this); - stage.Add( mItemView ); + mItemView.SetParentOrigin(ParentOrigin::CENTER); mItemView.SetAnchorPoint(AnchorPoint::CENTER); mLayout = DefaultItemLayout::New( DefaultItemLayout::LIST ); @@ -304,7 +295,7 @@ public: } else { - DirectoryFilesByType( DALI_SCRIPT_DIR, "json", files ); + DirectoryFilesByType( DEMO_SCRIPT_DIR, "json", files ); } std::sort(files.begin(), files.end()); @@ -352,28 +343,11 @@ public: } } - // Display item view on the stage - stage.Add( mItemView ); - - mItemView.SetVisible( true ); - mBuilderLayer.SetVisible( false ); - - SetTitle("Select"); - // Activate the layout Vector3 size(stage.GetSize()); mItemView.ActivateLayout(0, size, 0.0f/*immediate*/); } - void ExitSelection() - { - mTapDetector.Reset(); - - mItemView.SetVisible( false ); - mBuilderLayer.SetVisible( true ); - - SetTitle("View"); - } void OnTap( Actor actor, const TapGesture& tap ) { @@ -385,7 +359,7 @@ public: Actor MenuItem(const std::string& text) { TextLabel label = TextLabel::New( ShortName( text ) ); - label.SetProperty( Dali::Toolkit::Control::Property::STYLE_NAME, "builderlabel" ); + label.SetStyleName( "BuilderLabel" ); label.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); // Hook up tap detector @@ -409,12 +383,12 @@ public: Stage stage = Stage::GetCurrent(); builder = Builder::New(); - builder.QuitSignal().Connect( this, &ExampleApp::OnBuilderQuit ); + builder.QuitSignal().Connect( this, &ExampleApp::OnQuitOrBack ); Property::Map defaultDirs; - defaultDirs[ TOKEN_STRING(DALI_IMAGE_DIR) ] = DALI_IMAGE_DIR; - defaultDirs[ TOKEN_STRING(DALI_MODEL_DIR) ] = DALI_MODEL_DIR; - defaultDirs[ TOKEN_STRING(DALI_SCRIPT_DIR) ] = DALI_SCRIPT_DIR; + defaultDirs[ TOKEN_STRING(DEMO_IMAGE_DIR) ] = DEMO_IMAGE_DIR; + defaultDirs[ TOKEN_STRING(DEMO_MODEL_DIR) ] = DEMO_MODEL_DIR; + defaultDirs[ TOKEN_STRING(DEMO_SCRIPT_DIR) ] = DEMO_SCRIPT_DIR; builder.AddConstants( defaultDirs ); @@ -477,23 +451,17 @@ public: { ReloadJsonFile( name, mBuilder, mBuilderLayer ); - // do this here as GetCurrentSize() - mBuilderLayer.SetParentOrigin(ParentOrigin::CENTER); - mBuilderLayer.SetAnchorPoint(AnchorPoint::CENTER); + mBuilderLayer.SetParentOrigin(ParentOrigin::BOTTOM_CENTER); + mBuilderLayer.SetAnchorPoint(AnchorPoint::BOTTOM_CENTER); Dali::Vector3 size = Stage::GetCurrent().GetRootLayer().GetCurrentSize(); size.y -= DemoHelper::DEFAULT_VIEW_STYLE.mToolBarHeight; mBuilderLayer.SetSize( size ); - mBuilderLayer.LowerToBottom(); - Stage::GetCurrent().GetRootLayer().RaiseToTop(); - - ExitSelection(); + mNavigationView.Push( mBuilderLayer ); } void Create(Application& app) { - DemoHelper::RequestThemeChange(); - Stage stage = Stage::GetCurrent(); Stage::GetCurrent().KeyEventSignal().Connect(this, &ExampleApp::OnKeyEvent); @@ -505,20 +473,43 @@ public: TOOLBAR_IMAGE, "" ); - SetTitle("Builder"); + SetTitle("Select Example"); mBuilderLayer = Layer::New(); - stage.GetRootLayer().Add(mBuilderLayer); - // Create an edit mode button. (left of toolbar) - Toolkit::PushButton editButton = Toolkit::PushButton::New(); - editButton.SetBackgroundImage( ResourceImage::New( EDIT_IMAGE ) ); - editButton.ClickedSignal().Connect( this, &ExampleApp::OnToolSelectLayout); - editButton.SetLeaveRequired( true ); - mToolBar.AddControl( editButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalLeft, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); - - EnterSelection(); + Toolkit::PushButton backButton = Toolkit::PushButton::New(); + backButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EDIT_IMAGE ); + backButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, EDIT_IMAGE_SELECTED ); + backButton.ClickedSignal().Connect( this, &ExampleApp::OnBackButtonPressed); + backButton.SetLeaveRequired( true ); + mToolBar.AddControl( backButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalLeft, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); + + mNavigationView = Toolkit::NavigationView::New(); + mNavigationView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + mNavigationView.SetAnchorPoint( AnchorPoint::TOP_LEFT); + + stage.Add( mNavigationView ); + + // Set up the background gradient. + Property::Array stopOffsets; + stopOffsets.PushBack( 0.0f ); + stopOffsets.PushBack( 1.0f ); + Property::Array stopColors; + stopColors.PushBack( Color::WHITE ); + stopColors.PushBack( Vector4( 0.45f, 0.70f, 0.80f, 1.0f ) ); // Medium bright, pastel blue + const float percentageStageHeight = stage.GetSize().height * 0.6f; + + mNavigationView.SetProperty( Toolkit::Control::Property::BACKGROUND, Dali::Property::Map() + .Add( Toolkit::Visual::Property::TYPE, Dali::Toolkit::Visual::GRADIENT ) + .Add( Toolkit::GradientVisual::Property::STOP_OFFSET, stopOffsets ) + .Add( Toolkit::GradientVisual::Property::STOP_COLOR, stopColors ) + .Add( Toolkit::GradientVisual::Property::START_POSITION, Vector2( 0.0f, -percentageStageHeight ) ) + .Add( Toolkit::GradientVisual::Property::END_POSITION, Vector2( 0.0f, percentageStageHeight ) ) + .Add( Toolkit::GradientVisual::Property::UNITS, Toolkit::GradientVisual::Units::USER_SPACE ) ); + + SetUpItemView(); + mNavigationView.Push( mItemView ); mTimer = Timer::New( 500 ); // ms mTimer.TickSignal().Connect( this, &ExampleApp::OnTimer); @@ -546,14 +537,7 @@ public: { if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) ) { - if ( mItemView.IsVisible() ) - { - mApp.Quit(); - } - else - { - EnterSelection(); - } + OnQuitOrBack(); } } } @@ -561,15 +545,15 @@ public: /** * Event handler when Builder wants to quit (we only want to close the shown json unless we're at the top-level) */ - void OnBuilderQuit() + void OnQuitOrBack() { - if ( mItemView.IsVisible() ) + if ( mItemView.OnStage() ) { mApp.Quit(); } else { - EnterSelection(); + mNavigationView.Pop(); } } @@ -578,17 +562,15 @@ private: ItemLayoutPtr mLayout; ItemView mItemView; + Toolkit::NavigationView mNavigationView; Toolkit::Control mView; - unsigned int mOrientation; Toolkit::ToolBar mToolBar; - TextLabel mTitleActor; ///< The Toolbar's Title. + TextLabel mTitleActor; Layer mBuilderLayer; - Toolkit::Popup mMenu; - TapGestureDetector mTapDetector; // builder @@ -598,8 +580,6 @@ private: FileWatcher mFileWatcher; Timer mTimer; - - }; //------------------------------------------------------------------------------ @@ -607,7 +587,7 @@ private: // // //------------------------------------------------------------------------------ -int main(int argc, char **argv) +int DALI_EXPORT_API main(int argc, char **argv) { if(argc > 2) { @@ -617,7 +597,7 @@ int main(int argc, char **argv) } } - Application app = Application::New(&argc, &argv); + Application app = Application::New(&argc, &argv, DEMO_THEME_PATH); ExampleApp dali_app(app);