X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fcontrol%2Fcontrol-data-impl.cpp;h=06027ded3172a54b880b8fb38f58d9491e5694cd;hb=91e2f8939f2d3f77806672f7f0ca2bf09e95bc37;hp=1c48bc12a61552f7955d58039fd928bb1e1e4049;hpb=c87b2e1b8bde8db53067b24e191a1adf9deeb8db;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 1c48bc1..06027de 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(); // 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; - } } } @@ -1471,6 +1453,15 @@ Dali::Accessibility::ReadingInfoTypes Control::Impl::GetAccessibilityReadingInfo { place->Get(value); } + else + { + Dali::Accessibility::ReadingInfoTypes types; + types[Dali::Accessibility::ReadingInfoType::NAME] = true; + types[Dali::Accessibility::ReadingInfoType::ROLE] = true; + types[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true; + types[Dali::Accessibility::ReadingInfoType::STATE] = true; + return types; + } if(value.empty()) { @@ -1830,6 +1821,69 @@ 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()) + { + mixColor = destinationMap.Find(Dali::Toolkit::Visual::Property::MIX_COLOR)->Get(); + cornerRadius = destinationMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); + + 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 = sourceMap.Find(Dali::Toolkit::Visual::Property::MIX_COLOR)->Get(); + Vector4 sourceCornerRadius = sourceMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); + + 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) @@ -1903,56 +1957,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() -{ - if(accessibilityNotificationSet) - { - accessibilityNotificationPosition = {}; - accessibilityNotificationSize = {}; - accessibilityNotificationCulled = {}; - accessibilityNotificationSet = false; - } -} - } // namespace Internal } // namespace Toolkit