From: Seoyeon Kim Date: Mon, 23 May 2016 08:52:26 +0000 (+0900) Subject: Moved Slider to the public API X-Git-Tag: dali_1.1.39~5 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=583948657031ee3f33ef2c73cca36892898ae231 Moved Slider to the public API Fixed comments and added @SINCE_1_1.39 macros, doxygen groups. Change-Id: Id276582294d8dddc83bec568fd396a9b6fea86f4 Signed-off-by: Seoyeon Kim --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp index 4025514..15079e2 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp @@ -20,7 +20,6 @@ #include #include #include -#include using namespace Dali; using namespace Dali::Toolkit; @@ -140,7 +139,7 @@ int UtcDaliSliderSignals(void) slider.SetProperty( Slider::Property::MARK_TOLERANCE, 0.1f ); slider.ValueChangedSignal().Connect( &OnSliderValueChanged ); - slider.MarkSignal().Connect( &OnSliderMark ); + slider.MarkReachedSignal().Connect( &OnSliderMark ); application.SendNotification(); application.Render(); diff --git a/build/tizen/dali-toolkit/Makefile.am b/build/tizen/dali-toolkit/Makefile.am index 75aa867..1f52660 100644 --- a/build/tizen/dali-toolkit/Makefile.am +++ b/build/tizen/dali-toolkit/Makefile.am @@ -101,7 +101,6 @@ develapieffectsviewdir = $(develapicontrolsdir)/effects-view develapimagnifierdir = $(develapicontrolsdir)/magnifier develapirendererfactorydir = $(develapicontrolsdir)/renderer-factory develapipopupdir = $(develapicontrolsdir)/popup -develapisliderdir = $(develapicontrolsdir)/slider develapishadowviewdir = $(develapicontrolsdir)/shadow-view develapisuperblurviewdir = $(develapicontrolsdir)/super-blur-view develapifocusmanagerdir = $(develapidir)/focus-manager @@ -126,7 +125,6 @@ develapirendererfactory_HEADERS = $(devel_api_renderer_factory_header_files) develapiscripting_HEADERS = $(devel_api_scripting_header_files) develapishadowview_HEADERS = $(devel_api_shadow_view_header_files) develapishadereffects_HEADERS = $(devel_api_shader_effects_header_files) -develapislider_HEADERS = $(devel_api_slider_header_files) develapisuperblurview_HEADERS = $(devel_api_super_blur_view_header_files) develapitoolbar_HEADERS = $(devel_api_tool_bar_header_files) develapitransitioneffects_HEADERS = $(devel_api_transition_effects_header_files) @@ -153,6 +151,7 @@ publicapitableviewdir = $(publicapicontrolsdir)/table-view publicapitextcontrolsdir = $(publicapicontrolsdir)/text-controls publicapifocusmanagerdir = $(publicapidir)/focus-manager publicapirenderingbackenddir = $(publicapidir)/text +publicapisliderdir = $(publicapicontrolsdir)/slider # public api headers publicapi_HEADERS = $(public_api_header_files) @@ -175,6 +174,7 @@ publicapitableview_HEADERS = $(public_api_table_view_header_files) publicapitextcontrols_HEADERS = $(public_api_text_controls_header_files) publicapifocusmanager_HEADERS = $(public_api_focus_manager_header_files) publicapirenderingbackend_HEADERS = $(public_api_rendering_backend_header_files) +publicapislider_HEADERS = $(public_api_slider_header_files) # package doxygen file (contains doxygen grouping information) packagedoxydir = $(topleveldir)/doc diff --git a/dali-toolkit/dali-toolkit.h b/dali-toolkit/dali-toolkit.h index 1883e2f..055ecd2 100644 --- a/dali-toolkit/dali-toolkit.h +++ b/dali-toolkit/dali-toolkit.h @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include diff --git a/dali-toolkit/devel-api/controls/slider/slider.h b/dali-toolkit/devel-api/controls/slider/slider.h deleted file mode 100644 index 2773be4..0000000 --- a/dali-toolkit/devel-api/controls/slider/slider.h +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef __DALI_TOOLKIT_SLIDER_H__ -#define __DALI_TOOLKIT_SLIDER_H__ - -/* - * Copyright (c) 2015 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// INTERNAL INCLUDES -#include - -namespace Dali -{ - -namespace Toolkit -{ - -namespace Internal DALI_INTERNAL -{ -class Slider; -} - -/** - * @brief Slider is a control to enable sliding an indicator between two values - * - * Signals - * | %Signal Name | Method | - * |-------------------|-----------------------------| - * | valueChanged | @ref ValueChangedSignal() | - * | mark | @ref MarkSignal() | - */ -class DALI_IMPORT_API Slider : public Control -{ -public: - - /** - * @brief The start and end property ranges for this control. - */ - enum PropertyRange - { - PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, - PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserving 1000 property indices - }; - - /** - * @brief An enumeration of properties belonging to the Slider class. - */ - struct Property - { - enum - { - LOWER_BOUND = PROPERTY_START_INDEX, ///< Property, name "lowerBound", type float - UPPER_BOUND, ///< Property, name "upperBound", type float - VALUE, ///< Property, name "value", type float - HIT_REGION, ///< Property, name "hitRegion", type Vector2 - BACKING_REGION, ///< Property, name "backingRegion", type Vector2 - HANDLE_REGION, ///< Property, name "handleRegion", type Vector2 - BACKING_IMAGE_NAME, ///< Property, name "backingImageName", type std::string - HANDLE_IMAGE_NAME, ///< Property, name "handleImageName", type std::string - PROGRESS_IMAGE_NAME, ///< Property, name "progressImageName", type std::string - POPUP_IMAGE_NAME, ///< Property, name "popupImageName", type std::string - POPUP_ARROW_IMAGE_NAME, ///< Property, name "popupArrowImageName", type std::string - DISABLE_COLOR, ///< Property, name "disableColor", type Vector4 - POPUP_TEXT_COLOR, ///< Property, name "popupTextColor", type Vector4 - VALUE_PRECISION, ///< Property, name "valuePrecision", type int - SHOW_POPUP, ///< Property, name "showPopup", type bool - SHOW_VALUE, ///< Property, name "showValue", type bool - ENABLED, ///< Property, name "enabled", type bool - MARKS, ///< Property, name "marks", type Property::Array - SNAP_TO_MARKS, ///< Property, name "snapToMarks", type bool - MARK_TOLERANCE, ///< Property, name "markTolerance", type float - }; - }; - -public: - - /** - * Create the Slider control - * @return A handle to the Slider control. - */ - static Slider New(); - - /** - * Creates an empty Slider handle - */ - Slider(); - - /** - * Copy constructor. Creates another handle that points to the same real object - */ - Slider( const Slider& handle ); - - /** - * Assignment operator. Changes this handle to point to another real object - */ - Slider& operator=( const Slider& handle ); - - /** - * @brief Destructor - * - * This is non-virtual since derived Handle types must not contain data or virtual methods. - */ - ~Slider(); - - /** - * Downcast an Object handle to Slider. If handle points to a Slider the - * downcast produces valid handle. If not the returned handle is left uninitialized. - * @param[in] handle Handle to an object - * @return handle to a Slider or an uninitialized handle - */ - static Slider DownCast( BaseHandle handle ); - -public: - - // Signals - - // Value changed - typedef Signal< bool ( Slider, float ) > ValueChangedSignalType; - typedef Signal< bool ( Slider, int ) > MarkSignalType; - - /** - * Signal emitted when the slider value changes - */ - ValueChangedSignalType& ValueChangedSignal(); - - /** - * Signal emitted when the sliding is finished - */ - ValueChangedSignalType& SlidingFinishedSignal(); - - /** - * Signal emitted when the slider handle reaches a mark - */ - MarkSignalType& MarkSignal(); - -public: // Not intended for application developers - - /** - * Creates a handle using the Toolkit::Internal implementation. - * @param[in] implementation The Control implementation. - */ - DALI_INTERNAL Slider(Internal::Slider& implementation); - - /** - * Allows the creation of this Control from an Internal::CustomActor pointer. - * @param[in] internal A pointer to the internal CustomActor. - */ - explicit DALI_INTERNAL Slider( Dali::Internal::CustomActor* internal ); -}; - -} // namespace Toolkit - -} // namespace Dali - -#endif // __DALI_TOOLKIT_SLIDER_H__ diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list index e6d9397..cc879a8 100755 --- a/dali-toolkit/devel-api/file.list +++ b/dali-toolkit/devel-api/file.list @@ -13,7 +13,6 @@ devel_api_src_files = \ $(devel_api_src_dir)/controls/renderer-factory/renderer-factory.cpp \ $(devel_api_src_dir)/controls/renderer-factory/control-renderer.cpp \ $(devel_api_src_dir)/controls/shadow-view/shadow-view.cpp \ - $(devel_api_src_dir)/controls/slider/slider.cpp \ $(devel_api_src_dir)/controls/super-blur-view/super-blur-view.cpp \ $(devel_api_src_dir)/controls/text-controls/text-selection-popup.cpp \ $(devel_api_src_dir)/controls/text-controls/text-selection-toolbar.cpp \ @@ -59,9 +58,6 @@ devel_api_renderer_factory_header_files = \ devel_api_shadow_view_header_files = \ $(devel_api_src_dir)/controls/shadow-view/shadow-view.h -devel_api_slider_header_files = \ - $(devel_api_src_dir)/controls/slider/slider.h - devel_api_focus_manager_header_files = \ $(devel_api_src_dir)/focus-manager/keyinput-focus-manager.h diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp index 5cc9b23..9c9965c 100755 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -56,20 +56,15 @@ DALI_TYPE_REGISTRATION_BEGIN( Toolkit::Slider, Toolkit::Control, Create ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "lowerBound", FLOAT, LOWER_BOUND ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "upperBound", FLOAT, UPPER_BOUND ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "value", FLOAT, VALUE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "hitRegion", VECTOR2, HIT_REGION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "backingRegion", VECTOR2, BACKING_REGION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "handleRegion", VECTOR2, HANDLE_REGION ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "backingImageName", STRING, BACKING_IMAGE_NAME ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "handleImageName", STRING, HANDLE_IMAGE_NAME ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "progressImageName", STRING, PROGRESS_IMAGE_NAME ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupImageName", STRING, POPUP_IMAGE_NAME ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupArrowImageName", STRING, POPUP_ARROW_IMAGE_NAME ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "disableColor", VECTOR4, DISABLE_COLOR ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupTextColor", VECTOR4, POPUP_TEXT_COLOR ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "trackVisual", MAP, TRACK_VISUAL ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "handleVisual", MAP, HANDLE_VISUAL ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "progressVisual", MAP, PROGRESS_VISUAL ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupVisual", MAP, POPUP_VISUAL ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "popupArrowVisual", MAP, POPUP_ARROW_VISUAL ) +DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "disabledColor", VECTOR4, DISABLED_COLOR ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "valuePrecision", INTEGER, VALUE_PRECISION ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "showPopup", BOOLEAN, SHOW_POPUP ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "showValue", BOOLEAN, SHOW_VALUE ) -DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "enabled", BOOLEAN, ENABLED ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "marks", ARRAY, MARKS ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "snapToMarks", BOOLEAN, SNAP_TO_MARKS ) DALI_PROPERTY_REGISTRATION( Toolkit, Slider, "markTolerance", FLOAT, MARK_TOLERANCE ) @@ -92,18 +87,17 @@ const float DEFAULT_HIT_HEIGHT = 72.0f; const float DEFAULT_HANDLE_HEIGHT = DEFAULT_HIT_HEIGHT; const float POPUP_TEXT_PADDING = 10.0f; -const char* SKINNED_BACKING_IMAGE_NAME = DALI_IMAGE_DIR "slider-skin.9.png"; -const char* SKINNED_HANDLE_IMAGE_NAME = DALI_IMAGE_DIR "slider-skin-handle.png";; -const char* SKINNED_PROGRESS_IMAGE_NAME = DALI_IMAGE_DIR "slider-skin-progress.9.png"; -const char* SKINNED_POPUP_IMAGE_NAME = DALI_IMAGE_DIR "slider-popup.9.png"; -const char* SKINNED_POPUP_ARROW_IMAGE_NAME = DALI_IMAGE_DIR "slider-popup-arrow.png"; +const char* SKINNED_TRACK_VISUAL = DALI_IMAGE_DIR "slider-skin.9.png"; +const char* SKINNED_HANDLE_VISUAL = DALI_IMAGE_DIR "slider-skin-handle.png"; +const char* SKINNED_PROGRESS_VISUAL = DALI_IMAGE_DIR "slider-skin-progress.9.png"; +const char* SKINNED_POPUP_VISUAL = DALI_IMAGE_DIR "slider-popup.9.png"; +const char* SKINNED_POPUP_ARROW_VISUAL = DALI_IMAGE_DIR "slider-popup-arrow.png"; const Vector2 DEFAULT_HIT_REGION( DEFAULT_WIDTH, DEFAULT_HIT_HEIGHT ); -const Vector2 DEFAULT_BACKING_REGION( DEFAULT_WIDTH, DEFAULT_HEIGHT ); -const Vector2 DEFAULT_HANDLE_REGION( DEFAULT_HANDLE_HEIGHT, DEFAULT_HANDLE_HEIGHT ); +const Vector2 DEFAULT_TRACK_REGION( DEFAULT_WIDTH, DEFAULT_HEIGHT ); +const Vector2 DEFAULT_HANDLE_SIZE( DEFAULT_HANDLE_HEIGHT, DEFAULT_HANDLE_HEIGHT ); -const Vector4 DEFAULT_DISABLE_COLOR( 0.5f, 0.5f, 0.5f, 1.0f ); -const Vector4 DEFAULT_POPUP_TEXT_COLOR( 0.5f, 0.5f, 0.5f, 1.0f ); +const Vector4 DEFAULT_DISABLED_COLOR( 0.5f, 0.5f, 0.5f, 1.0f ); const float VALUE_POPUP_MARGIN = 10.0f; const float VALUE_POPUP_HEIGHT = 81.0f; @@ -143,16 +137,19 @@ Dali::Toolkit::Slider Slider::New() Slider::Slider() : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ), mState( NORMAL ), - mPopupImageName(""), - mPopupArrowImageName(""), - mBackingImageName(""), - mHandleImageName(""), - mProgressImageName(""), - mDisableColor( 0.0f, 0.0f, 0.0f, 0.0f ), - mPopupTextColor( 0.0f, 0.0f, 0.0f, 0.0f ), + mPopupVisual(""), + mPopupArrowVisual(""), + mTrackVisual(""), + mHandleVisual(""), + mProgressVisual(""), + mPopupMap(), + mTrackMap(), + mHandleMap(), + mPopupArrowMap(), + mDisabledColor( 0.0f, 0.0f, 0.0f, 0.0f ), mHitRegion( 0.0f, 0.0f ), - mBackingRegion( 0.0f, 0.0f ), - mHandleRegionSize( 0.0f, 0.0f ), + mTrackRegion( 0.0f, 0.0f ), + mHandleSize( 0.0f, 0.0f ), mLowerBound( 0.0f ), mUpperBound( 0.0f ), mValue( 0.0f ), @@ -177,22 +174,20 @@ void Slider::OnInitialize() Actor self = Self(); SetHitRegion( DEFAULT_HIT_REGION ); - SetBackingRegion( DEFAULT_BACKING_REGION ); - SetHandleRegion( DEFAULT_HANDLE_REGION ); + SetTrackRegion( DEFAULT_TRACK_REGION ); + SetHandleSize( DEFAULT_HANDLE_SIZE ); - SetBackingImageName( SKINNED_BACKING_IMAGE_NAME ); - SetHandleImageName( SKINNED_HANDLE_IMAGE_NAME ); - SetProgressImageName( SKINNED_PROGRESS_IMAGE_NAME ); - SetPopupImageName( SKINNED_POPUP_IMAGE_NAME ); - SetPopupArrowImageName( SKINNED_POPUP_ARROW_IMAGE_NAME ); - - SetPopupTextColor( DEFAULT_POPUP_TEXT_COLOR ); + SetTrackVisual( SKINNED_TRACK_VISUAL ); + SetHandleVisual( SKINNED_HANDLE_VISUAL ); + SetProgressVisual( SKINNED_PROGRESS_VISUAL ); + SetPopupVisual( SKINNED_POPUP_VISUAL ); + SetPopupArrowVisual( SKINNED_POPUP_ARROW_VISUAL ); SetShowPopup( DEFAULT_SHOW_POPUP ); SetShowValue( DEFAULT_SHOW_VALUE ); SetEnabled( DEFAULT_ENABLED ); - SetDisableColor( DEFAULT_DISABLE_COLOR ); + SetDisabledColor( DEFAULT_DISABLED_COLOR ); SetSnapToMarks( DEFAULT_SNAP_TO_MARKS ); SetMarkTolerance( MARK_SNAP_TOLERANCE ); @@ -210,9 +205,9 @@ void Slider::OnInitialize() void Slider::OnSizeSet( const Vector3& size ) { - // Factor in handle overshoot into size of backing + // Factor in handle overshoot into size of track SetHitRegion( Vector2( size.x, GetHitRegion().y ) ); - SetBackingRegion( Vector2( size.x - GetHandleRegion().x, GetBackingRegion().y ) ); + SetTrackRegion( Vector2( size.x - GetHandleSize().x, GetTrackRegion().y ) ); } bool Slider::OnTouchEvent(Actor actor, const TouchEvent& event) @@ -326,7 +321,7 @@ void Slider::DisplayValue( float value, bool raiseSignals ) // Progress bar if( mProgress ) { - mProgress.SetSize( x, GetBackingRegion().y ); + mProgress.SetSize( x, GetTrackRegion().y ); } // Signals @@ -338,7 +333,7 @@ void Slider::DisplayValue( float value, bool raiseSignals ) int markIndex; if( MarkReached( percent, markIndex ) ) { - mMarkSignal.Emit( self, markIndex ); + mMarkReachedSignal.Emit( self, markIndex ); } } @@ -382,27 +377,66 @@ Actor Slider::CreateHitRegion() return hitRegion; } -Toolkit::ImageView Slider::CreateBacking() +Toolkit::ImageView Slider::CreateTrack() { - Toolkit::ImageView backing = Toolkit::ImageView::New(); - backing.SetParentOrigin( ParentOrigin::CENTER ); - backing.SetAnchorPoint( AnchorPoint::CENTER ); + Toolkit::ImageView track = Toolkit::ImageView::New(); + track.SetParentOrigin( ParentOrigin::CENTER ); + track.SetAnchorPoint( AnchorPoint::CENTER ); - return backing; + return track; } -void Slider::SetBackingImageName( const std::string& imageName ) +void Slider::SetTrackVisual( const std::string& filename ) { - if( mBacking && ( imageName.size() > 0 ) ) + if( mHandle && ( filename.size() > 0 ) ) { - mBacking.SetImage( imageName ); - mBackingImageName = imageName; + mTrack.SetImage( filename ); + mTrackVisual = filename; } } -std::string Slider::GetBackingImageName() +void Slider::SetTrackVisual( Property::Map map ) { - return mBackingImageName; + Property::Value* imageValue = map.Find( "url" ); + if( imageValue ) + { + mTrackVisual.clear(); + std::string filename; + if( imageValue->Get( filename ) ) + { + if( mTrack && ( filename.size() > 0 ) ) + { + mTrack.SetImage( filename ); + mTrackMap = map; + } + } + } + + Property::Value* sizeValue = map.Find( "size" ); + if( sizeValue ) + { + Vector2 size; + if( sizeValue->Get( size ) ) + { + mTrackRegion = size; + if( mTrack ) + { + mTrack.SetSize( mTrackRegion ); + } + + ResizeProgressRegion( Vector2( 0.0f, mTrackRegion.y ) ); + + mDomain = CalcDomain( mTrackRegion ); + + // Set the progress bar to correct width + DisplayValue( GetValue(), false ); + } + } +} + +std::string Slider::GetTrackVisual() +{ + return mTrackVisual; } Toolkit::ImageView Slider::CreateProgress() @@ -414,54 +448,108 @@ Toolkit::ImageView Slider::CreateProgress() return progress; } -void Slider::SetProgressImageName( const std::string& imageName ) +void Slider::SetProgressVisual( const std::string& filename ) { - if( mProgress && ( imageName.size() > 0 ) ) + if( mProgress && ( filename.size() > 0 ) ) { - mProgress.SetImage( imageName ); - mProgressImageName = imageName; + mProgress.SetImage( filename ); + mProgressVisual = filename; } } -std::string Slider::GetProgressImageName() +void Slider::SetProgressVisual( Property::Map map ) { - return mProgressImageName; + Property::Value* imageValue = map.Find( "url" ); + if( imageValue ) + { + mProgressVisual.clear(); + std::string filename; + if( imageValue->Get( filename ) ) + { + if( mProgress && ( filename.size() > 0 ) ) + { + mProgress.SetImage( filename ); + mProgressMap = map; + } + } + } } -void Slider::SetPopupImageName( const std::string& imageName ) +std::string Slider::GetProgressVisual() { - mPopupImageName = imageName; + return mProgressVisual; } -std::string Slider::GetPopupImageName() +void Slider::SetPopupVisual( const std::string& filename ) { - return mPopupImageName; + mPopupVisual = filename; } -void Slider::CreatePopupImage( const std::string& imageName ) +void Slider::SetPopupVisual( Property::Map map ) { - if( mPopup && ( imageName.size() > 0 ) ) + Property::Value* imageValue = map.Find( "url" ); + if( imageValue ) { - Image image = ResourceImage::New( imageName ); + mPopupVisual.clear(); + std::string filename; + if( imageValue->Get( filename ) ) + { + if( mPopup && ( filename.size() > 0 ) ) + { + mPopup.SetImage( filename ); + mPopupMap = map; + } + } + } +} + +std::string Slider::GetPopupVisual() +{ + return mPopupVisual; +} + +void Slider::CreatePopupImage( const std::string& filename ) +{ + if( mPopup && ( filename.size() > 0 ) ) + { + Image image = ResourceImage::New( filename ); mPopup.SetImage( image ); } } -void Slider::SetPopupArrowImageName( const std::string& imageName ) +void Slider::SetPopupArrowVisual( const std::string& filename ) { - mPopupArrowImageName = imageName; + mPopupArrowVisual = filename; } -std::string Slider::GetPopupArrowImageName() +void Slider::SetPopupArrowVisual( Property::Map map ) { - return mPopupArrowImageName; + Property::Value* imageValue = map.Find( "url" ); + if( imageValue ) + { + mPopupArrowVisual.clear(); + std::string filename; + if( imageValue->Get( filename ) ) + { + if( mPopupArrow && ( filename.size() > 0 ) ) + { + mPopupArrow.SetImage( filename ); + mPopupArrowMap = map; + } + } + } } -void Slider::CreatePopupArrowImage( const std::string& imageName ) +std::string Slider::GetPopupArrowVisual() { - if( mPopupArrow && ( imageName.size() > 0 ) ) + return mPopupArrowVisual; +} + +void Slider::CreatePopupArrowImage( const std::string& filename ) +{ + if( mPopupArrow && ( filename.size() > 0 ) ) { - Image image = ResourceImage::New( imageName ); + Image image = ResourceImage::New( filename ); mPopupArrow.SetImage( image ); } } @@ -500,7 +588,6 @@ Toolkit::TextLabel Slider::CreatePopupText() textLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS ); textLabel.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); textLabel.SetProperty( Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER" ); - textLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, DEFAULT_POPUP_TEXT_COLOR ); textLabel.SetPadding( Padding( POPUP_TEXT_PADDING, POPUP_TEXT_PADDING, 0.0f, 0.0f ) ); return textLabel; } @@ -518,25 +605,58 @@ Toolkit::ImageView Slider::CreatePopup() return popup; } -void Slider::SetHandleImageName( const std::string& imageName ) +void Slider::SetHandleVisual( const std::string& filename ) +{ + if( mHandle && ( filename.size() > 0 ) ) + { + mHandle.SetImage( filename ); + mHandleVisual = filename; + } +} + +void Slider::SetHandleVisual( Property::Map map ) { - if( mHandle && ( imageName.size() > 0 ) ) + Property::Value* imageValue = map.Find( "url" ); + if( imageValue ) { - mHandle.SetImage( imageName ); - mHandleImageName = imageName; + mHandleVisual.clear(); + std::string filename; + if( imageValue->Get( filename ) ) + { + if( mHandle && ( filename.size() > 0 ) ) + { + mHandle.SetImage( filename ); + mHandleMap = map; + } + } + } + + Property::Value* sizeValue = map.Find( "size" ); + if( sizeValue ) + { + Vector2 size; + if( sizeValue->Get( size ) ) + { + mHandleSize = size; + ResizeHandleSize( mHandleSize ); + + Vector2 hitRegion = GetHitRegion(); + hitRegion.x += mHandleSize.x; + SetHitRegion( hitRegion ); + } } } -std::string Slider::GetHandleImageName() +std::string Slider::GetHandleVisual() { - return mHandleImageName; + return mHandleVisual; } -void Slider::ResizeHandleRegion( const Vector2& region ) +void Slider::ResizeHandleSize( const Vector2& size ) { if( mHandle ) { - mHandle.SetSize( region ); + mHandle.SetSize( size ); } } @@ -558,11 +678,6 @@ void Slider::DestroyHandleValueDisplay() UnparentAndReset(mHandleValueTextLabel); } -void Slider::SetPopupTextColor( const Vector4& color ) -{ - mPopupTextColor = color; -} - Actor Slider::CreateValueDisplay() { Actor popup = Actor::New(); @@ -589,9 +704,9 @@ Toolkit::Slider::ValueChangedSignalType& Slider::SlidingFinishedSignal() return mSlidingFinishedSignal; } -Toolkit::Slider::MarkSignalType& Slider::MarkSignal() +Toolkit::Slider::MarkReachedSignalType& Slider::MarkReachedSignal() { - return mMarkSignal; + return mMarkReachedSignal; } void Slider::UpdateSkin() @@ -600,17 +715,17 @@ void Slider::UpdateSkin() { case NORMAL: { - mBacking.SetColor( Color::WHITE ); + mTrack.SetColor( Color::WHITE ); mHandle.SetColor( Color::WHITE ); mProgress.SetColor( Color::WHITE ); break; } case DISABLED: { - Vector4 disableColor = GetDisableColor(); - mBacking.SetColor( disableColor ); - mHandle.SetColor( disableColor ); - mProgress.SetColor( disableColor ); + Vector4 disabledColor = GetDisabledColor(); + mTrack.SetColor( disabledColor ); + mHandle.SetColor( disabledColor ); + mProgress.SetColor( disabledColor ); break; } case PRESSED: @@ -635,13 +750,13 @@ void Slider::CreateChildren() mPanDetector.DetectedSignal().Connect( this, &Slider::OnPan ); self.Add( mHitArea ); - // Background - mBacking = CreateBacking(); - self.Add( mBacking ); + // Track + mTrack = CreateTrack(); + self.Add( mTrack ); // Progress bar mProgress = CreateProgress(); - mBacking.Add( mProgress ); + mTrack.Add( mProgress ); // Handle mHandle = CreateHandle(); @@ -671,8 +786,8 @@ void Slider::AddPopup() mValueDisplay.SetVisible( false ); mHandle.Add( mValueDisplay ); - CreatePopupImage( GetPopupImageName() ); - CreatePopupArrowImage( GetPopupArrowImageName() ); + CreatePopupImage( GetPopupVisual() ); + CreatePopupArrowImage( GetPopupArrowVisual() ); mValueTimer = Timer::New( VALUE_VIEW_SHOW_DURATION ); mValueTimer.TickSignal().Connect( this, &Slider::HideValueView ); @@ -822,58 +937,53 @@ float Slider::GetValue() const return mValue; } -void Slider::SetBackingRegion( const Vector2& region ) +void Slider::SetTrackRegion( const Vector2& region ) { - mBackingRegion = region; + mTrackRegion = region; - if( mBacking ) + if( mTrack ) { - mBacking.SetSize( mBackingRegion ); + mTrack.SetSize( mTrackRegion ); } - ResizeProgressRegion( Vector2( 0.0f, mBackingRegion.y ) ); + ResizeProgressRegion( Vector2( 0.0f, mTrackRegion.y ) ); - mDomain = CalcDomain( mBackingRegion ); + mDomain = CalcDomain( mTrackRegion ); DisplayValue( GetValue(), false ); // Set the progress bar to correct width } -const Vector2& Slider::GetBackingRegion() const +const Vector2& Slider::GetTrackRegion() const { - return mBackingRegion; + return mTrackRegion; } -void Slider::SetHandleRegion( const Vector2& region ) +void Slider::SetHandleSize( const Vector2& size ) { - mHandleRegionSize = region; + mHandleSize = size; - ResizeHandleRegion( mHandleRegionSize ); + ResizeHandleSize( mHandleSize ); Vector2 hitRegion = GetHitRegion(); - hitRegion.x += mHandleRegionSize.x; + hitRegion.x += mHandleSize.x; SetHitRegion( hitRegion ); } -const Vector2& Slider::GetHandleRegion() const +const Vector2& Slider::GetHandleSize() const { - return mHandleRegionSize; + return mHandleSize; } -void Slider::SetDisableColor( const Vector4& color ) +void Slider::SetDisabledColor( const Vector4& color ) { - mDisableColor = color; + mDisabledColor = color; UpdateSkin(); } -Vector4 Slider::GetDisableColor() const +Vector4 Slider::GetDisabledColor() const { - return mDisableColor; -} - -Vector4 Slider::GetPopupTextColor() const -{ - return mPopupTextColor; + return mDisabledColor; } void Slider::SetValuePrecision( int precision ) @@ -968,7 +1078,7 @@ bool Slider::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tr } else if( 0 == strcmp( signalName.c_str(), SIGNAL_MARK ) ) { - slider.MarkSignal().Connect( tracker, functor ); + slider.MarkReachedSignal().Connect( tracker, functor ); } else { @@ -1026,63 +1136,67 @@ void Slider::SetProperty( BaseObject* object, Property::Index propertyIndex, con break; } - case Toolkit::Slider::Property::HIT_REGION: - { - sliderImpl.SetHitRegion( value.Get< Vector2 >() ); - break; - } - - case Toolkit::Slider::Property::BACKING_REGION: + case Toolkit::Slider::Property::TRACK_VISUAL: { - sliderImpl.SetBackingRegion( value.Get< Vector2 >() ); - break; - } - - case Toolkit::Slider::Property::HANDLE_REGION: - { - sliderImpl.SetHandleRegion( value.Get< Vector2 >() ); + Property::Map map; + if( value.Get( map ) ) + { + sliderImpl.SetTrackVisual( map ); + } break; } - case Toolkit::Slider::Property::BACKING_IMAGE_NAME: + case Toolkit::Slider::Property::HANDLE_VISUAL: { - sliderImpl.SetBackingImageName( value.Get< std::string >() ); + Property::Map map; + if( value.Get( map ) ) + { + sliderImpl.SetHandleVisual( map ); + } break; } - case Toolkit::Slider::Property::HANDLE_IMAGE_NAME: + case Toolkit::Slider::Property::PROGRESS_VISUAL: { - sliderImpl.SetHandleImageName( value.Get< std::string >() ); + Property::Map map; + if( value.Get( map ) ) + { + sliderImpl.SetProgressVisual( map ); + } break; } - case Toolkit::Slider::Property::PROGRESS_IMAGE_NAME: + case Toolkit::Slider::Property::POPUP_VISUAL: { - sliderImpl.SetProgressImageName( value.Get< std::string >() ); - break; - } + std::string imageUrl; + if( value.Get( imageUrl ) ) + { + sliderImpl.SetPopupVisual( imageUrl ); + } - case Toolkit::Slider::Property::POPUP_IMAGE_NAME: - { - sliderImpl.SetPopupImageName( value.Get< std::string >() ); - break; - } + // If it is not a string, then get a Property::Map from the property if possible. + Property::Map map; + if( value.Get( map ) ) + { + sliderImpl.SetPopupVisual( map ); + } - case Toolkit::Slider::Property::POPUP_ARROW_IMAGE_NAME: - { - sliderImpl.SetPopupArrowImageName( value.Get< std::string >() ); break; } - case Toolkit::Slider::Property::DISABLE_COLOR: + case Toolkit::Slider::Property::POPUP_ARROW_VISUAL: { - sliderImpl.SetDisableColor( value.Get< Vector4 >() ); + Property::Map map; + if( value.Get( map ) ) + { + sliderImpl.SetPopupArrowVisual( map ); + } break; } - case Toolkit::Slider::Property::POPUP_TEXT_COLOR: + case Toolkit::Slider::Property::DISABLED_COLOR: { - sliderImpl.SetPopupTextColor( value.Get< Vector4 >() ); + sliderImpl.SetDisabledColor( value.Get< Vector4 >() ); break; } @@ -1104,12 +1218,6 @@ void Slider::SetProperty( BaseObject* object, Property::Index propertyIndex, con break; } - case Toolkit::Slider::Property::ENABLED: - { - sliderImpl.SetEnabled( value.Get< bool >() ); - break; - } - case Toolkit::Slider::Property::MARKS: { sliderImpl.SetMarks( value.Get< Property::Array >() ); @@ -1161,63 +1269,74 @@ Property::Value Slider::GetProperty( BaseObject* object, Property::Index propert break; } - case Toolkit::Slider::Property::HIT_REGION: - { - value = sliderImpl.GetHitRegion(); - break; - } - - case Toolkit::Slider::Property::BACKING_REGION: + case Toolkit::Slider::Property::TRACK_VISUAL: { - value = sliderImpl.GetBackingRegion(); - break; - } - - case Toolkit::Slider::Property::HANDLE_REGION: - { - value = sliderImpl.GetHandleRegion(); - break; - } - - case Toolkit::Slider::Property::BACKING_IMAGE_NAME: - { - value = sliderImpl.GetBackingImageName(); - break; - } - - case Toolkit::Slider::Property::HANDLE_IMAGE_NAME: - { - value = sliderImpl.GetHandleImageName(); + if( !sliderImpl.mTrackVisual.empty() ) + { + value = sliderImpl.GetTrackVisual(); + } + else if( !sliderImpl.mTrackMap.Empty() ) + { + value = sliderImpl.mTrackMap; + } break; } - case Toolkit::Slider::Property::PROGRESS_IMAGE_NAME: + case Toolkit::Slider::Property::HANDLE_VISUAL: { - value = sliderImpl.GetProgressImageName(); + if( !sliderImpl.mHandleVisual.empty() ) + { + value = sliderImpl.GetHandleVisual(); + } + else if( !sliderImpl.mHandleMap.Empty() ) + { + value = sliderImpl.mHandleMap; + } break; } - case Toolkit::Slider::Property::POPUP_IMAGE_NAME: + case Toolkit::Slider::Property::PROGRESS_VISUAL: { - value = sliderImpl.GetPopupImageName(); + if( !sliderImpl.mProgressVisual.empty() ) + { + value = sliderImpl.GetProgressVisual(); + } + else if( !sliderImpl.mProgressMap.Empty() ) + { + value = sliderImpl.mProgressMap; + } break; } - case Toolkit::Slider::Property::POPUP_ARROW_IMAGE_NAME: + case Toolkit::Slider::Property::POPUP_VISUAL: { - value = sliderImpl.GetPopupArrowImageName(); + if( !sliderImpl.mPopupVisual.empty() ) + { + value = sliderImpl.GetPopupVisual(); + } + else if( !sliderImpl.mPopupMap.Empty() ) + { + value = sliderImpl.mPopupMap; + } break; } - case Toolkit::Slider::Property::DISABLE_COLOR: + case Toolkit::Slider::Property::POPUP_ARROW_VISUAL: { - value = sliderImpl.GetDisableColor(); + if( !sliderImpl.mPopupArrowVisual.empty() ) + { + value = sliderImpl.GetPopupArrowVisual(); + } + else if( !sliderImpl.mPopupArrowMap.Empty() ) + { + value = sliderImpl.mPopupArrowMap; + } break; } - case Toolkit::Slider::Property::POPUP_TEXT_COLOR: + case Toolkit::Slider::Property::DISABLED_COLOR: { - value = sliderImpl.GetPopupTextColor(); + value = sliderImpl.GetDisabledColor(); break; } @@ -1239,12 +1358,6 @@ Property::Value Slider::GetProperty( BaseObject* object, Property::Index propert break; } - case Toolkit::Slider::Property::ENABLED: - { - value = sliderImpl.IsEnabled(); - break; - } - case Toolkit::Slider::Property::MARKS: { // TODO: Need to be able to return a PropertyArray diff --git a/dali-toolkit/internal/controls/slider/slider-impl.h b/dali-toolkit/internal/controls/slider/slider-impl.h index c9fdc60..acc7494 100755 --- a/dali-toolkit/internal/controls/slider/slider-impl.h +++ b/dali-toolkit/internal/controls/slider/slider-impl.h @@ -21,10 +21,11 @@ // EXTERNAL INCLUDES #include #include +#include // INTERNAL INCLUDES #include -#include +#include #include #include @@ -120,39 +121,32 @@ public: const Vector2& GetHitRegion() const; /** - * Set backing region + * Set the track region * - * @param[in] region The backing region + * @param[in] region The track region */ - void SetBackingRegion( const Vector2& region ); + void SetTrackRegion( const Vector2& region ); /** - * Get backing region + * Get the track region * - * @return The backing region + * @return The track region */ - const Vector2& GetBackingRegion() const; + const Vector2& GetTrackRegion() const; /** - * @brief Set the disable color. + * @brief Set the disabled color. * - * @param[in] color The disable color. + * @param[in] color The disabled color. */ - void SetDisableColor( const Vector4& color ); + void SetDisabledColor( const Vector4& color ); /** - * @brief Get disable color + * @brief Get disabled color * - * @return The disable color + * @return The disabled color */ - Vector4 GetDisableColor() const; - - /** - * Get popup text color - * - * @return The popup text color - */ - Vector4 GetPopupTextColor() const; + Vector4 GetDisabledColor() const; /** * Set the value precision to be used for numbers in the slider @@ -241,9 +235,9 @@ public: Toolkit::Slider::ValueChangedSignalType& SlidingFinishedSignal(); /** - * @copydoc Toolkit::Slider::MarkSignal() + * @copydoc Toolkit::Slider::MarkReachedSignal() */ - Toolkit::Slider::MarkSignalType& MarkSignal(); + Toolkit::Slider::MarkReachedSignalType& MarkReachedSignal(); /** * Connects a callback function with the object's signals. @@ -396,16 +390,16 @@ private: Actor CreateHitRegion(); /** - * Create the backing for the slider + * Create the track for the slider * - * @return The backing actor + * @return The track actor */ - Toolkit::ImageView CreateBacking(); + Toolkit::ImageView CreateTrack(); /** - * Create the progress backing for the slider + * Create the progress track for the slider * - * @return The backing actor + * @return The track actor */ Toolkit::ImageView CreateProgress(); @@ -512,74 +506,102 @@ private: void DisplayValue( float value, bool raiseSignals ); /** - * Create the image for the backing + * Create the image for the track + * + * @param[in] filename The track image + */ + void SetTrackVisual( const std::string& filename ); + + /** + * @brief Set the track visual from an Dali::Property::Map * - * @param[in] imageName The name of the image to load and set + * @param[in] map The Dali::Property::Map to use for to display */ - void SetBackingImageName( const std::string& imageName ); + void SetTrackVisual( Dali::Property::Map map ); /** - * @brief Return the backing image file name. + * @brief Return the track image. * - * @return The backing image file name. + * @return The track image. */ - std::string GetBackingImageName(); + std::string GetTrackVisual(); /** * Create the image for the progress bar * - * @param[in] imageName The name of the image to load and set + * @param[in] filename The progress bar image */ - void SetProgressImageName( const std::string& imageName ); + void SetProgressVisual( const std::string& filename ); /** - * @brief Return the progress image name. + * @brief Set the progress visual from an Dali::Property::Map * - * @return The progress image name if it exists. + * @param[in] map The Dali::Property::Map to use for to display */ - std::string GetProgressImageName(); + void SetProgressVisual( Dali::Property::Map map ); + + /** + * @brief Return the progress bar image. + * + * @return The progress bar image if it exists. + */ + std::string GetProgressVisual(); /** * @brief Create the image for the popup * - * @param[in] imageName The name of the image to load and set + * @param[in] filename The popup image + */ + void CreatePopupImage( const std::string& filename ); + + /** + * @brief Set the popup image + * + * @param[in] filename The popup image to set + */ + void SetPopupVisual( const std::string& filename ); + + /** + * @brief Set the popup from an Dali::Property::Map + * + * @param[in] map The Dali::Property::Map to use for to display */ - void CreatePopupImage( const std::string& imageName ); + void SetPopupVisual( Dali::Property::Map map ); /** - * @brief Set the popup name + * @brief Return the popup image. * - * @param[in] imageName The name of the image to set + * @return The popup image if it exists. */ - void SetPopupImageName( const std::string& imageName ); + std::string GetPopupVisual(); /** - * @brief Return the popup image name. + * @brief Set the popup arrow image * - * @return The name of the popup image if it exists. + * @param[in] filename The popup arrow image to set */ - std::string GetPopupImageName(); + void SetPopupArrowVisual( const std::string& filename ); /** - * @brief Set the popup arrow image name + * @brief Set the popup arrow from an Dali::Property::Map * - * @param[in] imageName The name of the image to set + * @param[in] map The Dali::Property::Map to use for to display */ - void SetPopupArrowImageName( const std::string& imageName ); + void SetPopupArrowVisual( Dali::Property::Map map ); /** - * @brief Return the popup arrow image name. + * @brief Return the popup arrow image. * - * @return The name of the popup image if it exists. + * @return The popup arrow image if it exists. */ - std::string GetPopupArrowImageName(); + std::string GetPopupArrowVisual(); /** * Create the image for the popup arrow * - * @param[in] imageName The name of the image to load and set + * @param[in] filename The popup arrow image to load and set */ - void CreatePopupArrowImage( const std::string& imageName ); + void CreatePopupArrowImage( const std::string& filename ); /** * Set the size of the progress bar region @@ -591,23 +613,30 @@ private: /** * Create the image for the handle * - * @param[in] imageName The name of the image to load and set + * @param[in] filename The handle image */ - void SetHandleImageName( const std::string& imageName ); + void SetHandleVisual( const std::string& filename ); /** - * @brief Return the handle image name. + * @brief Set the handle visual from an Dali::Property::Map * - * @return The name of the image handle if it exists. + * @param[in] map The Dali::Property::Map to use for to display */ - std::string GetHandleImageName(); + void SetHandleVisual( Property::Map map ); /** - * Set the size of the handle region + * @brief Return the handle image. * - * @param[in] region The size of the region to set + * @return The handle image if it exists. */ - void ResizeHandleRegion( const Vector2& region ); + std::string GetHandleVisual(); + + /** + * Reset the size of the handle + * + * @param[in] size The size of the handle to set + */ + void ResizeHandleSize( const Vector2& size ); /** * Create and display the value on the handle @@ -620,25 +649,18 @@ private: void DestroyHandleValueDisplay(); /** - * Update the color of the popup text + * Set the size of the handle * - * @param[in] color The new color + * @param[in] size The handle size */ - void SetPopupTextColor( const Vector4& color ); + void SetHandleSize( const Vector2& size ); /** - * Set handle region + * Get the size of the handle * - * @param[in] region The handle region + * @return The handle size */ - void SetHandleRegion( const Vector2& region ); - - /** - * Get handle region - * - * @return The handle region - */ - const Vector2& GetHandleRegion() const; + const Vector2& GetHandleSize() const; /** * Set the lower bound of the slider's value @@ -682,9 +704,9 @@ private: Actor mHitArea; ///< The input handler Actor mValueDisplay; ///< Display of the value - Toolkit::ImageView mBacking; ///< Backing image + Toolkit::ImageView mTrack; ///< Track image Toolkit::ImageView mHandle; ///< Slider handle - Toolkit::ImageView mProgress; ///< Progress backing + Toolkit::ImageView mProgress; ///< Progress bar Toolkit::ImageView mPopup; ///< Popup backing Toolkit::ImageView mPopupArrow; ///< Popup arrow backing @@ -693,9 +715,9 @@ private: Vector2 mHandleLastTouchPoint; ///< The last touch point for the handle Timer mValueTimer; ///< Timer used to hide value view - Toolkit::Slider::ValueChangedSignalType mValueChangedSignal; ///< Signal emitted when the value is changed + Toolkit::Slider::ValueChangedSignalType mValueChangedSignal; ///< Signal emitted when the value is changed Toolkit::Slider::ValueChangedSignalType mSlidingFinishedSignal; ///< Signal emitted when a sliding is finished - Toolkit::Slider::MarkSignalType mMarkSignal; ///< Signal emitted when a mark is reached + Toolkit::Slider::MarkReachedSignalType mMarkReachedSignal; ///< Signal emitted when a mark is reached SliderState mState; ///< The state of the slider @@ -703,18 +725,23 @@ private: MarkList mMarks; ///< List of discreet marks - std::string mPopupImageName; ///< Image name for popup image - std::string mPopupArrowImageName; ///< Image name for popup arrow - std::string mBackingImageName; ///< Image name for backing image - std::string mHandleImageName; ///< Image name for handle image - std::string mProgressImageName; ///< Image name for progress image + std::string mPopupVisual; ///< Image for popup image + std::string mPopupArrowVisual; ///< Image for popup arrow image + std::string mTrackVisual; ///< Image for track image + std::string mHandleVisual; ///< Image for handle image + std::string mProgressVisual; ///< Image for progress bar image + + Property::Map mPopupMap; ///< the Property::Map if the image came from a Property::Map, empty otherwise + Property::Map mTrackMap; ///< the Property::Map if the image came from a Property::Map, empty otherwise + Property::Map mHandleMap; ///< the Property::Map if the image came from a Property::Map, empty otherwise + Property::Map mProgressMap; ///< the Property::Map if the image came from a Property::Map, empty otherwise + Property::Map mPopupArrowMap; ///< the Property::Map if the image came from a Property::Map, empty otherwise - Vector4 mDisableColor; ///< The color to tint the slider when disabled - Vector4 mPopupTextColor; ///< The color of the popup text + Vector4 mDisabledColor; ///< The color to tint the slider when disabled Vector2 mHitRegion; ///< Size of hit region - Vector2 mBackingRegion; ///< Size of backing region - Vector2 mHandleRegionSize; ///< Size of the handle region + Vector2 mTrackRegion; ///< Size of track region + Vector2 mHandleSize; ///< Size of the handle float mLowerBound; ///< Lower bound on value float mUpperBound; ///< Upper bound on value diff --git a/dali-toolkit/devel-api/controls/slider/slider.cpp b/dali-toolkit/public-api/controls/slider/slider.cpp similarity index 79% rename from dali-toolkit/devel-api/controls/slider/slider.cpp rename to dali-toolkit/public-api/controls/slider/slider.cpp index a220dee..8aa47d0 100644 --- a/dali-toolkit/devel-api/controls/slider/slider.cpp +++ b/dali-toolkit/public-api/controls/slider/slider.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2016 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. @@ -15,7 +15,10 @@ * */ -#include +// CLASS HEADER +#include + +// INTERNAL INCLUDES #include using namespace Dali; @@ -26,10 +29,6 @@ namespace Dali namespace Toolkit { -/////////////////////////////////////////////////////////////////////////////////////////////////// -// Slider -/////////////////////////////////////////////////////////////////////////////////////////////////// - Slider::Slider() { } @@ -78,9 +77,9 @@ Slider::ValueChangedSignalType& Slider::SlidingFinishedSignal() return GetImpl( *this ).SlidingFinishedSignal(); } -Slider::MarkSignalType& Slider::MarkSignal() +Slider::MarkReachedSignalType& Slider::MarkReachedSignal() { - return GetImpl( *this ).MarkSignal(); + return GetImpl( *this ).MarkReachedSignal(); } Slider Slider::DownCast( BaseHandle handle ) diff --git a/dali-toolkit/public-api/controls/slider/slider.h b/dali-toolkit/public-api/controls/slider/slider.h new file mode 100644 index 0000000..8ba6139 --- /dev/null +++ b/dali-toolkit/public-api/controls/slider/slider.h @@ -0,0 +1,291 @@ +#ifndef __DALI_TOOLKIT_SLIDER_H__ +#define __DALI_TOOLKIT_SLIDER_H__ + +/* + * Copyright (c) 2016 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// INTERNAL INCLUDES +#include + +namespace Dali +{ + +namespace Toolkit +{ + +namespace Internal DALI_INTERNAL +{ +class Slider; +} +/** + * @addtogroup dali_toolkit_controls_slider + * @{ + */ + +/** + * @brief Slider is a control to enable sliding an indicator between two values + * + * Signals + * | %Signal Name | Method | + * |-------------------|-------------------------------| + * | valueChanged | @ref ValueChangedSignal() | + * | markReached | @ref MarkReachedSignal() | + * | slidingFinished | @ref SlidingFinishedSignal() | + * @SINCE_1_1.39 + */ +class DALI_IMPORT_API Slider : public Control +{ +public: + + // Properties + + /** + * @brief The start and end property ranges for this control. + * @SINCE_1_1.39 + */ + enum PropertyRange + { + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, ///< @SINCE_1_1.39 + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices @SINCE_1_1.39 + }; + + /** + * @brief An enumeration of properties belonging to the Slider class. + * @SINCE_1_1.39 + */ + struct Property + { + enum + { + + /** + * @brief name "lowerBound", type float + * @SINCE_1_1.39 + */ + LOWER_BOUND = PROPERTY_START_INDEX, + + /** + * @brief name "upperBound", type float + * @SINCE_1_1.39 + */ + UPPER_BOUND, + + /** + * @brief name "value", type float + * @SINCE_1_1.39 + */ + VALUE, + + /** + * @brief name "trackVisual", type string if it is a url, map otherwise + * @SINCE_1_1.39 + */ + TRACK_VISUAL, + + /** + * @brief name "handleVisual", type string if it is a url, map otherwise + * @SINCE_1_1.39 + */ + HANDLE_VISUAL, + + /** + * @brief name "progressVisual", type string if it is a url, map otherwise + * @SINCE_1_1.39 + */ + PROGRESS_VISUAL, + + /** + * @brief name "popupVisual", type string if it is a url, map otherwise + * @SINCE_1_1.39 + */ + POPUP_VISUAL, + + /** + * @brief name "popupArrowVisual", type string if it is a url, map otherwise + * @SINCE_1_1.39 + */ + POPUP_ARROW_VISUAL, + + /** + * @brief name "disabledColor", type Vector4 + * @SINCE_1_1.39 + */ + DISABLED_COLOR, + + /** + * @brief name "valuePrecision", type int + * @SINCE_1_1.39 + */ + VALUE_PRECISION, + + /** + * @brief name "showPopup", type bool + * @SINCE_1_1.39 + */ + SHOW_POPUP, + + /** + * @brief name "showValue", type bool + * @SINCE_1_1.39 + */ + SHOW_VALUE, + + /** + * @brief name "marks", type Property::Array + * @SINCE_1_1.39 + */ + MARKS, + + /** + * @brief name "snapToMarks", type bool + * @SINCE_1_1.39 + */ + SNAP_TO_MARKS, + + /** + * @brief name "markTolerance", type float + * @SINCE_1_1.39 + */ + MARK_TOLERANCE, + }; + }; + +public: + + /** + * @brief Creates the Slider control. + * @SINCE_1_1.39 + * @return A handle to the Slider control + */ + static Slider New(); + + /** + * @brief Creates an empty Slider handle. + * @SINCE_1_1.39 + */ + Slider(); + + /** + * @brief Copy constructor. + * + * Creates another handle that points to the same real object. + * @SINCE_1_1.39 + */ + Slider( const Slider& handle ); + + /** + * @brief Assignment operator. + * + * Changes this handle to point to another real object. + * @SINCE_1_1.39 + */ + Slider& operator=( const Slider& handle ); + + /** + * @brief Destructor. + * + * This is non-virtual since derived Handle types must not contain data or virtual methods. + * @SINCE_1_1.39 + */ + ~Slider(); + + /** + * @brief Downcast an Object handle to Slider. + * + * If handle points to a Slider the + * downcast produces valid handle. If not the returned handle is left uninitialized. + * @SINCE_1_1.39 + * @param[in] handle Handle to an object + * @return handle to a Slider or an uninitialized handle + */ + static Slider DownCast( BaseHandle handle ); + +public: // Signals + + /** + * @brief Value changed signal type. + * @SINCE_1_1.39 + */ + typedef Signal< bool ( Slider, float ) > ValueChangedSignalType; + + /** + * @brief Mark reached signal type. + * @SINCE_1_1.39 + */ + typedef Signal< bool ( Slider, int ) > MarkReachedSignalType; + + /** + * @brief Signal emitted when the slider value changes. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Slider slider, float value ); + * @endcode + * @SINCE_1_1.39 + * @return The signal to connect to + */ + ValueChangedSignalType& ValueChangedSignal(); + + /** + * @brief Signal emitted when the sliding is finished. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Slider slider, float value ); + * @endcode + * @SINCE_1_1.39 + * @return The signal to connect to + */ + ValueChangedSignalType& SlidingFinishedSignal(); + + /** + * @brief Signal emitted when the slider handle reaches a mark. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Slider slider, int value ); + * @endcode + * @SINCE_1_1.39 + * @return The signal to connect to + */ + MarkReachedSignalType& MarkReachedSignal(); + +public: // Not intended for application developers + + /** + * @brief Creates a handle using the Toolkit::Internal implementation. + * @SINCE_1_1.39 + * @param[in] implementation The Control implementation + */ + DALI_INTERNAL Slider(Internal::Slider& implementation); + + /** + * @brief Allows the creation of this Control from an Internal::CustomActor pointer. + * @SINCE_1_1.39 + * @param[in] internal A pointer to the internal CustomActor + */ + explicit DALI_INTERNAL Slider( Dali::Internal::CustomActor* internal ); +}; + +/** + * @} + */ +} // namespace Toolkit + +} // namespace Dali + +#endif // __DALI_TOOLKIT_SLIDER_H__ diff --git a/dali-toolkit/public-api/file.list b/dali-toolkit/public-api/file.list index d7e7034..a9fc458 100755 --- a/dali-toolkit/public-api/file.list +++ b/dali-toolkit/public-api/file.list @@ -24,6 +24,7 @@ public_api_src_files = \ $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-page-path-effect.cpp \ $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view.cpp \ $(public_api_src_dir)/controls/scrollable/scrollable.cpp \ + $(public_api_src_dir)/controls/slider/slider.cpp \ $(public_api_src_dir)/controls/table-view/table-view.cpp \ $(public_api_src_dir)/controls/text-controls/text-editor.cpp \ $(public_api_src_dir)/controls/text-controls/text-label.cpp \ @@ -94,6 +95,9 @@ public_api_scroll_view_header_files = \ $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-page-path-effect.h \ $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view.h +public_api_slider_header_files = \ + $(public_api_src_dir)/controls/slider/slider.h + public_api_styling_header_files = \ $(public_api_src_dir)/styling/style-manager.h