X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fitem-view%2Fitem-view-example.cpp;h=c9f4e97f6afa994c94f8a91cc0060998e6a29a65;hb=a832af2813558a32f0a18747f3e6134ff6f6f301;hp=6d90387ba892ea467ff88a2c431d5af79a251646;hpb=a593ca51e2a9150b180333c44c66355016061711;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/item-view/item-view-example.cpp b/examples/item-view/item-view-example.cpp index 6d90387..c9f4e97 100644 --- a/examples/item-view/item-view-example.cpp +++ b/examples/item-view/item-view-example.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. @@ -20,6 +20,7 @@ #include #include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -133,6 +134,8 @@ const float LABEL_TEXT_SIZE_Y = 20.0f; const Vector3 INITIAL_OFFSCREEN_POSITION( 1000.0f, 0, -1000.0f ); +const float SCROLL_TO_ITEM_ANIMATION_TIME = 5.f; + static Vector3 DepthLayoutItemSizeFunctionPortrait( float layoutWidth ) { float width = ( layoutWidth / ( DEPTH_LAYOUT_COLUMNS + 1.0f ) ) * DEPTH_LAYOUT_ITEM_SIZE_FACTOR_PORTRAIT; @@ -209,20 +212,18 @@ public: TOOLBAR_IMAGE, "" ); - //app.GetWindow().GetOrientation().ChangedSignal().Connect( this, &ItemViewExample::OnOrientationChanged ); - // Create an edit mode button. (left of toolbar) Toolkit::PushButton editButton = Toolkit::PushButton::New(); - editButton.SetUnselectedImage( EDIT_IMAGE ); - editButton.SetSelectedImage( EDIT_IMAGE_SELECTED ); + editButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, EDIT_IMAGE ); + editButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, EDIT_IMAGE_SELECTED ); editButton.ClickedSignal().Connect( this, &ItemViewExample::OnModeButtonClicked); editButton.SetLeaveRequired( true ); mToolBar.AddControl( editButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalLeft, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); // Create a layout toggle button. (right of toolbar) mLayoutButton = Toolkit::PushButton::New(); - mLayoutButton.SetUnselectedImage( SPIRAL_LAYOUT_IMAGE ); - mLayoutButton.SetSelectedImage(SPIRAL_LAYOUT_IMAGE_SELECTED ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, SPIRAL_LAYOUT_IMAGE ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, SPIRAL_LAYOUT_IMAGE_SELECTED ); mLayoutButton.ClickedSignal().Connect( this, &ItemViewExample::OnLayoutButtonClicked); mLayoutButton.SetLeaveRequired( true ); mToolBar.AddControl( mLayoutButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING ); @@ -233,9 +234,9 @@ public: mDeleteButton.SetAnchorPoint(AnchorPoint::BOTTOM_RIGHT); mDeleteButton.SetPosition( BUTTON_BORDER, BUTTON_BORDER ); mDeleteButton.SetDrawMode( DrawMode::OVERLAY_2D ); - mDeleteButton.SetUnselectedImage( DELETE_IMAGE ); - mDeleteButton.SetSelectedImage( DELETE_IMAGE_SELECTED ); - mDeleteButton.SetBackgroundImage( TOOLBAR_IMAGE ); + mDeleteButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, DELETE_IMAGE ); + mDeleteButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, DELETE_IMAGE_SELECTED ); + mDeleteButton.SetProperty( Toolkit::Control::Property::BACKGROUND, TOOLBAR_IMAGE ); mDeleteButton.SetSize( Vector2( stageSize.width * 0.15f, stageSize.width * 0.15f ) ); mDeleteButton.ClickedSignal().Connect( this, &ItemViewExample::OnDeleteButtonClicked); mDeleteButton.SetLeaveRequired( true ); @@ -248,9 +249,9 @@ public: mInsertButton.SetAnchorPoint(AnchorPoint::BOTTOM_RIGHT); mInsertButton.SetPosition( BUTTON_BORDER, BUTTON_BORDER ); mInsertButton.SetDrawMode( DrawMode::OVERLAY_2D ); - mInsertButton.SetUnselectedImage( INSERT_IMAGE ); - mInsertButton.SetSelectedImage( INSERT_IMAGE_SELECTED ); - mInsertButton.SetBackgroundImage( TOOLBAR_IMAGE ); + mInsertButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, INSERT_IMAGE ); + mInsertButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, INSERT_IMAGE_SELECTED ); + mInsertButton.SetProperty( Toolkit::Control::Property::BACKGROUND, TOOLBAR_IMAGE ); mInsertButton.SetSize( stageSize.width * 0.15f, stageSize.width * 0.15f ); mInsertButton.ClickedSignal().Connect( this, &ItemViewExample::OnInsertButtonClicked); mInsertButton.SetLeaveRequired( true ); @@ -263,9 +264,9 @@ public: mReplaceButton.SetAnchorPoint(AnchorPoint::BOTTOM_RIGHT); mReplaceButton.SetPosition( BUTTON_BORDER, BUTTON_BORDER ); mReplaceButton.SetDrawMode( DrawMode::OVERLAY_2D ); - mReplaceButton.SetUnselectedImage( REPLACE_IMAGE ); - mReplaceButton.SetSelectedImage( REPLACE_IMAGE_SELECTED ); - mReplaceButton.SetBackgroundImage( TOOLBAR_IMAGE ); + mReplaceButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, REPLACE_IMAGE ); + mReplaceButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, REPLACE_IMAGE_SELECTED ); + mReplaceButton.SetProperty( Toolkit::Control::Property::BACKGROUND, TOOLBAR_IMAGE ); mReplaceButton.SetSize( stageSize.width * 0.15f, stageSize.width * 0.15f ); mReplaceButton.ClickedSignal().Connect( this, &ItemViewExample::OnReplaceButtonClicked); mReplaceButton.SetLeaveRequired( true ); @@ -302,6 +303,10 @@ public: // Set the title and icon to the current layout SetLayoutTitle(); SetLayoutImage(); + + mLongPressDetector = LongPressGestureDetector::New(); + mLongPressDetector.Attach( mItemView ); + mLongPressDetector.DetectedSignal().Connect( this, &ItemViewExample::OnLongPress ); } Actor OnKeyboardPreFocusChange( Actor current, Actor proposed, Control::KeyboardFocus::Direction direction ) @@ -380,24 +385,6 @@ public: mItemView.ActivateLayout( layoutId, Vector3(stageSize.x, stageSize.y, stageSize.x), 0.0f ); } - /** - * Orientation changed signal callback - * @param orientation - */ - void OnOrientationChanged( Orientation orientation ) - { - const unsigned int angle = orientation.GetDegrees(); - - // If orientation really changed - if( mOrientation != angle ) - { - // Remember orientation - mOrientation = angle; - - SetLayout( mCurrentLayout ); - } - } - bool OnLayoutButtonClicked( Toolkit::Button button ) { // Switch to the next layout @@ -560,6 +547,35 @@ public: } } + void OnLongPress( Actor actor, const LongPressGesture& gesture ) + { + switch( gesture.state ) + { + case Gesture::Started: + { + const Size& size = Stage::GetCurrent().GetSize(); + + ItemRange range( 0u, 0u ); + mItemView.GetItemsRange( range ); + + const unsigned int item = ( gesture.screenPoint.y < 0.5f * size.height ) ? range.begin : range.end; + mItemView.ScrollToItem( item, SCROLL_TO_ITEM_ANIMATION_TIME ); + + break; + } + case Gesture::Finished: + { + Property::Map attributes; + mItemView.DoAction( "stopScrolling", attributes ); + break; + } + default: + { + break; + } + } + } + bool OnDeleteButtonClicked( Toolkit::Button button ) { ItemIdContainer removeList; @@ -806,22 +822,22 @@ public: { case SPIRAL_LAYOUT: { - mLayoutButton.SetUnselectedImage( SPIRAL_LAYOUT_IMAGE ); - mLayoutButton.SetSelectedImage( SPIRAL_LAYOUT_IMAGE_SELECTED ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, SPIRAL_LAYOUT_IMAGE ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, SPIRAL_LAYOUT_IMAGE_SELECTED ); break; } case GRID_LAYOUT: { - mLayoutButton.SetUnselectedImage( GRID_LAYOUT_IMAGE ); - mLayoutButton.SetSelectedImage( GRID_LAYOUT_IMAGE_SELECTED ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, GRID_LAYOUT_IMAGE ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, GRID_LAYOUT_IMAGE_SELECTED ); break; } case DEPTH_LAYOUT: { - mLayoutButton.SetUnselectedImage( DEPTH_LAYOUT_IMAGE ); - mLayoutButton.SetSelectedImage( DEPTH_LAYOUT_IMAGE_SELECTED ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, DEPTH_LAYOUT_IMAGE ); + mLayoutButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, DEPTH_LAYOUT_IMAGE_SELECTED ); break; } @@ -863,10 +879,10 @@ public: // From ItemFactory borderActor.SetColorMode( USE_PARENT_COLOR ); Property::Map borderProperty; - borderProperty.Insert( "rendererType", "border" ); - borderProperty.Insert( "borderColor", Color::WHITE ); - borderProperty.Insert( "borderSize", ITEM_BORDER_SIZE ); - borderProperty.Insert( "antiAliasing", true ); + borderProperty.Insert( Toolkit::Visual::Property::TYPE, Visual::BORDER ); + borderProperty.Insert( BorderVisual::Property::COLOR, Color::WHITE ); + borderProperty.Insert( BorderVisual::Property::SIZE, ITEM_BORDER_SIZE ); + borderProperty.Insert( BorderVisual::Property::ANTI_ALIASING, true ); borderActor.SetProperty( ImageView::Property::IMAGE, borderProperty ); actor.Add(borderActor); @@ -887,8 +903,8 @@ public: // From ItemFactory checkbox.SetZ( 0.1f ); Property::Map solidColorProperty; - solidColorProperty.Insert( "rendererType", "color" ); - solidColorProperty.Insert( "blendColor", Vector4(0.f, 0.f, 0.f, 0.6f) ); + solidColorProperty.Insert( Toolkit::Visual::Property::TYPE, Visual::COLOR ); + solidColorProperty.Insert( ColorVisual::Property::MIX_COLOR, Vector4(0.f, 0.f, 0.f, 0.6f) ); checkbox.SetProperty( ImageView::Property::IMAGE, solidColorProperty ); if( MODE_REMOVE_MANY != mMode && @@ -974,6 +990,8 @@ private: Toolkit::PushButton mDeleteButton; Toolkit::PushButton mInsertButton; Toolkit::PushButton mReplaceButton; + + LongPressGestureDetector mLongPressDetector; }; void RunTest(Application& app) @@ -983,7 +1001,7 @@ void RunTest(Application& app) app.MainLoop(); } -int main(int argc, char **argv) +int DALI_EXPORT_API main(int argc, char **argv) { Application app = Application::New(&argc, &argv, DEMO_THEME_PATH);