X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fcontrol%2Fcontrol-data-impl.cpp;h=33670d64b9c8cf7a6037e802e842f10e13bc548f;hp=4e2a1c6306e86525ca55b03ce9c46685197ebaf9;hb=ec7c735fc62dec9b148dab6bd419f9fd6129dc7f;hpb=ac501f02feab8e2fb7e613f936d3d5a511603001 diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 4e2a1c6..33670d6 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -420,7 +420,6 @@ const PropertyRegistration Control::Impl::PROPERTY_18(typeRegistration, "accessi const PropertyRegistration Control::Impl::PROPERTY_19(typeRegistration, "accessibilityTranslationDomain", Toolkit::DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty); const PropertyRegistration Control::Impl::PROPERTY_20(typeRegistration, "accessibilityRole", Toolkit::DevelControl::Property::ACCESSIBILITY_ROLE, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty); const PropertyRegistration Control::Impl::PROPERTY_21(typeRegistration, "accessibilityHighlightable", Toolkit::DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty); -const PropertyRegistration Control::Impl::PROPERTY_22(typeRegistration, "accessibilityAnimated", Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty); // clang-format on Control::Impl::Impl(Control& controlImpl) @@ -487,7 +486,6 @@ Control::Impl::~Impl() StopObservingVisual(iter->visual); } - AccessibilityDeregister(false); // All gesture detectors will be destroyed so no need to disconnect. delete mStartingPinchScale; @@ -1235,16 +1233,6 @@ void Control::Impl::SetProperty(BaseObject* object, Property::Index index, const } break; } - - case Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED: - { - bool animated; - if(value.Get(animated)) - { - controlImpl.mImpl->mAccessibilityAnimated = animated; - } - break; - } } } } @@ -1405,12 +1393,6 @@ Property::Value Control::Impl::GetProperty(BaseObject* object, Property::Index i value = controlImpl.mImpl->mAccessibilityAttributes; break; } - - case Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED: - { - value = controlImpl.mImpl->mAccessibilityAnimated; - break; - } } } @@ -1474,10 +1456,10 @@ Dali::Accessibility::ReadingInfoTypes Control::Impl::GetAccessibilityReadingInfo else { Dali::Accessibility::ReadingInfoTypes types; - types[Dali::Accessibility::ReadingInfoType::NAME] = true; - types[Dali::Accessibility::ReadingInfoType::ROLE] = true; + types[Dali::Accessibility::ReadingInfoType::NAME] = true; + types[Dali::Accessibility::ReadingInfoType::ROLE] = true; types[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true; - types[Dali::Accessibility::ReadingInfoType::STATE] = true; + types[Dali::Accessibility::ReadingInfoType::STATE] = true; return types; } @@ -1839,6 +1821,78 @@ Dali::Property Control::Impl::GetVisualProperty(Dali::Property::Index index, Dal return Dali::Property(handle, Property::INVALID_INDEX); } +void Control::Impl::MakeVisualTransition(Dali::Animation& animation, Dali::Toolkit::Control source, Dali::Property::Index visualIndex, AlphaFunction alphaFunction, TimePeriod timePeriod) +{ + Dali::Toolkit::Control sourceHandle = Dali::Toolkit::Control::DownCast(source); + Property::Map sourceMap = sourceHandle.GetProperty(visualIndex); + Dali::Toolkit::Control destinationHandle = Dali::Toolkit::Control::DownCast(mControlImpl.Self()); + Property::Map destinationMap = destinationHandle.GetProperty(visualIndex); + + Vector4 mixColor(1.0f, 1.0f, 1.0f, 1.0f); + Vector4 cornerRadius(0.0f, 0.0f, 0.0f, 0.0f); + + if(!destinationMap.Empty()) + { + static auto findValue = [](const Property::Map& map, Property::Index index) -> Vector4 { + Property::Value* propertyValue = map.Find(index); + if(propertyValue) + { + return propertyValue->Get(); + } + return Vector4{}; + }; + + mixColor = findValue(destinationMap, Dali::Toolkit::Visual::Property::MIX_COLOR); + cornerRadius = findValue(destinationMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + + if(sourceMap.Empty()) + { + sourceMap.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); + sourceMap.Insert(Dali::Toolkit::Visual::Property::MIX_COLOR, Color::TRANSPARENT); + sourceMap.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, cornerRadius); + } + + Vector4 sourceMixColor = findValue(sourceMap, Dali::Toolkit::Visual::Property::MIX_COLOR); + Vector4 sourceCornerRadius = findValue(sourceMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + + std::vector properties; + std::vector> values; + + if(Vector3(sourceMixColor) != Vector3(mixColor)) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::Visual::Property::MIX_COLOR)); + values.push_back(std::make_pair(Vector3(sourceMixColor), Vector3(mixColor))); + } + + if(std::abs(sourceMixColor.a - mixColor.a) > Math::MACHINE_EPSILON_1) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::Visual::Property::OPACITY)); + values.push_back(std::make_pair(sourceMixColor.a, mixColor.a)); + } + + if(sourceCornerRadius != cornerRadius) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::DevelVisual::Property::CORNER_RADIUS)); + values.push_back(std::make_pair(sourceCornerRadius, cornerRadius)); + } + + for(uint32_t i = 0; i < properties.size(); ++i) + { + if(timePeriod.delaySeconds > 0.0f) + { + Dali::KeyFrames initialKeyframes = Dali::KeyFrames::New(); + initialKeyframes.Add(0.0f, values[i].first); + initialKeyframes.Add(1.0f, values[i].first); + animation.AnimateBetween(properties[i], initialKeyframes, TimePeriod(timePeriod.delaySeconds)); + } + Dali::KeyFrames keyframes = Dali::KeyFrames::New(); + keyframes.Add(0.0f, values[i].first); + keyframes.Add(1.0f, values[i].second); + animation.AnimateBetween(properties[i], keyframes, alphaFunction, timePeriod); + } + } +} + void Control::Impl::EmitResourceReadySignal() { if(!mIsEmittingResourceReadySignal) @@ -1912,76 +1966,6 @@ Dali::Accessibility::Accessible* Control::Impl::GetAccessibilityObject(Dali::Act return nullptr; } -void Control::Impl::PositionOrSizeChangedCallback(PropertyNotification& p) -{ - auto self = Dali::Actor::DownCast(p.GetTarget()); - if(Dali::Accessibility::IsUp() && !self.GetProperty(Toolkit::DevelControl::Property::ACCESSIBILITY_ANIMATED).Get()) - { - auto extents = DevelActor::CalculateScreenExtents(self); - Dali::Accessibility::Accessible::Get(self)->EmitBoundsChanged(extents); - } -} - -void Control::Impl::CulledChangedCallback(PropertyNotification& p) -{ - if(Dali::Accessibility::IsUp()) - { - auto self = Dali::Actor::DownCast(p.GetTarget()); - Dali::Accessibility::Accessible::Get(self)->EmitShowing(!self.GetProperty(DevelActor::Property::CULLED).Get()); - } -} - -void Control::Impl::AccessibilityRegister() -{ - if(!accessibilityNotificationSet) - { - accessibilityNotificationPosition = mControlImpl.Self().AddPropertyNotification(Actor::Property::POSITION, StepCondition(0.01f)); - accessibilityNotificationPosition.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); - accessibilityNotificationPosition.NotifySignal().Connect(&Control::Impl::PositionOrSizeChangedCallback); - - accessibilityNotificationSize = mControlImpl.Self().AddPropertyNotification(Actor::Property::SIZE, StepCondition(0.01f)); - accessibilityNotificationSize.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); - accessibilityNotificationSize.NotifySignal().Connect(&Control::Impl::PositionOrSizeChangedCallback); - - accessibilityNotificationCulled = mControlImpl.Self().AddPropertyNotification(DevelActor::Property::CULLED, LessThanCondition(0.5f)); - accessibilityNotificationCulled.SetNotifyMode(PropertyNotification::NOTIFY_ON_CHANGED); - accessibilityNotificationCulled.NotifySignal().Connect(&Control::Impl::CulledChangedCallback); - - accessibilityNotificationSet = true; - } -} - -void Control::Impl::AccessibilityDeregister(bool remove) -{ - if(accessibilityNotificationSet) - { - accessibilityNotificationPosition.NotifySignal().Disconnect(&Control::Impl::PositionOrSizeChangedCallback); - if(remove) - { - mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationPosition); - } - accessibilityNotificationPosition.Reset(); - accessibilityNotificationPosition = {}; - - accessibilityNotificationSize.NotifySignal().Disconnect(&Control::Impl::PositionOrSizeChangedCallback); - if(remove) - { - mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationSize); - } - accessibilityNotificationSize.Reset(); - accessibilityNotificationSize = {}; - - accessibilityNotificationCulled.NotifySignal().Disconnect(&Control::Impl::CulledChangedCallback); - if(remove) - { - mControlImpl.Self().RemovePropertyNotification(accessibilityNotificationCulled); - } - accessibilityNotificationCulled.Reset(); - accessibilityNotificationCulled = {}; - accessibilityNotificationSet = false; - } -} - } // namespace Internal } // namespace Toolkit