/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
// INTERNAL INCLUDES
#include <dali-toolkit/dali-toolkit.h>
#include <dali-toolkit/devel-api/asset-manager/asset-manager.h>
+#include <dali-toolkit/devel-api/controls/control-devel.h>
#include <dali-toolkit/internal/controls/control/control-data-impl.h>
#include <dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.h>
#include <dali-toolkit/public-api/controls/control-impl.h>
SetupTouch();
- DevelControl::AppendAccessibilityAttribute(self, "sub-role", "Alert");
+ self.SetProperty(DevelControl::Property::ACCESSIBILITY_ROLE, Dali::Accessibility::Role::DIALOG);
+}
- DevelControl::SetAccessibilityConstructor(self, [](Dali::Actor actor) {
- return std::unique_ptr<Dali::Accessibility::Accessible>(new AccessibleImpl(actor, Dali::Accessibility::Role::DIALOG, true));
- });
+DevelControl::ControlAccessible* Popup::CreateAccessibleObject()
+{
+ return new PopupAccessible(Self());
}
Popup::~Popup()
return;
}
- auto* accessible = Dali::Accessibility::Accessible::Get(Self());
- if(display)
- {
- Dali::Accessibility::Bridge::GetCurrentBridge()->AddPopup(accessible);
- accessible->EmitStateChanged(Dali::Accessibility::State::SHOWING, 1, 0);
- }
- else
- {
- accessible->EmitStateChanged(Dali::Accessibility::State::SHOWING, 0, 0);
- Dali::Accessibility::Bridge::GetCurrentBridge()->RemovePopup(accessible);
- }
-
// Convert the bool state to the actual display state to use.
- mDisplayState = display ? Toolkit::Popup::SHOWING : Toolkit::Popup::HIDING;
+ mDisplayState = display ? Toolkit::Popup::SHOWING : Toolkit::Popup::HIDING;
+ auto* accessible = Dali::Accessibility::Accessible::Get(Self());
if(display)
{
// Update the state to indicate the current intent.
mDisplayState = Toolkit::Popup::SHOWING;
+ Dali::Accessibility::Bridge::GetCurrentBridge()->RegisterDefaultLabel(accessible);
+ accessible->EmitShowing(true);
// We want the popup to have key input focus when it is displayed
SetKeyInputFocus();
else // Not visible.
{
mDisplayState = Toolkit::Popup::HIDING;
+ Dali::Accessibility::Bridge::GetCurrentBridge()->UnregisterDefaultLabel(accessible);
ClearKeyInputFocus();
-
+ accessible->EmitShowing(false);
// Restore the keyboard focus when popup is hidden.
if(mPreviousFocusedActor && mPreviousFocusedActor.GetProperty<bool>(Actor::Property::KEYBOARD_FOCUSABLE))
{
mLayoutDirty = true;
}
-const bool Popup::IsTailVisible() const
+bool Popup::IsTailVisible() const
{
return mTailVisible;
}
mLayoutDirty = true;
}
-const bool Popup::IsBackingEnabled() const
+bool Popup::IsBackingEnabled() const
{
return mBackingEnabled;
}
void Popup::SetTailUpImage(std::string image)
{
- mTailUpImage = image;
+ mTailUpImage = std::move(image);
mLayoutDirty = true;
LayoutTail();
}
void Popup::SetTailDownImage(std::string image)
{
- mTailDownImage = image;
+ mTailDownImage = std::move(image);
mLayoutDirty = true;
LayoutTail();
}
void Popup::SetTailLeftImage(std::string image)
{
- mTailLeftImage = image;
+ mTailLeftImage = std::move(image);
mLayoutDirty = true;
LayoutTail();
}
void Popup::SetTailRightImage(std::string image)
{
- mTailRightImage = image;
+ mTailRightImage = std::move(image);
mLayoutDirty = true;
LayoutTail();
}
}
}
-const bool Popup::IsTouchTransparent() const
+bool Popup::IsTouchTransparent() const
{
return mTouchTransparent;
}
std::string valueString;
if(value.Get(valueString))
{
- Toolkit::ImageView actor = Toolkit::ImageView::New(valueString);
+ Toolkit::ImageView actor = Toolkit::ImageView::New(std::move(valueString));
popupImpl.SetPopupBackgroundImage(actor);
}
break;
std::string valueString;
if(value.Get(valueString))
{
- popupImpl.SetTailUpImage(valueString);
+ popupImpl.SetTailUpImage(std::move(valueString));
}
break;
}
std::string valueString;
if(value.Get(valueString))
{
- popupImpl.SetTailDownImage(valueString);
+ popupImpl.SetTailDownImage(std::move(valueString));
}
break;
}
std::string valueString;
if(value.Get(valueString))
{
- popupImpl.SetTailLeftImage(valueString);
+ popupImpl.SetTailLeftImage(std::move(valueString));
}
break;
}
std::string valueString;
if(value.Get(valueString))
{
- popupImpl.SetTailRightImage(valueString);
+ popupImpl.SetTailRightImage(std::move(valueString));
}
break;
}
{
Property::Map map;
Scripting::CreatePropertyMap(popupImpl.GetTitle(), map);
- value = map;
+ value = std::move(map);
break;
}
case Toolkit::Popup::Property::CONTENT:
{
Property::Map map;
Scripting::CreatePropertyMap(popupImpl.GetContent(), map);
- value = map;
+ value = std::move(map);
break;
}
case Toolkit::Popup::Property::FOOTER:
{
Property::Map map;
Scripting::CreatePropertyMap(popupImpl.GetFooter(), map);
- value = map;
+ value = std::move(map);
break;
}
case Toolkit::Popup::Property::DISPLAY_STATE:
{
// Note: Cannot retrieve property map from animation.
Property::Map map;
- value = map;
+ value = std::move(map);
break;
}
case Toolkit::Popup::Property::EXIT_ANIMATION:
{
// Note: Cannot retrieve property map from animation.
Property::Map map;
- value = map;
+ value = std::move(map);
break;
}
case Toolkit::Popup::Property::AUTO_HIDE_DELAY:
}
}
-std::string Popup::AccessibleImpl::GetNameRaw()
+std::string Popup::PopupAccessible::GetNameRaw() const
{
- auto popup = Toolkit::Popup::DownCast(self);
+ auto popup = Toolkit::Popup::DownCast(Self());
std::string title;
Actor popupTitle = popup.GetTitle();
if(popupTitle)
{
std::string titleText = popupTitle.GetProperty<std::string>(Toolkit::TextLabel::Property::TEXT);
- title = titleText;
+ title = std::move(titleText);
}
else
{
if(popupContent)
{
std::string contentText = popupContent.GetProperty<std::string>(Toolkit::TextLabel::Property::TEXT);
- title = contentText;
+ title = std::move(contentText);
}
}
return title;
}
-Dali::Accessibility::States Popup::AccessibleImpl::CalculateStates()
+Dali::Accessibility::States Popup::PopupAccessible::CalculateStates()
{
- auto states = Control::Impl::AccessibleImpl::CalculateStates();
- auto popup = Toolkit::Popup::DownCast(self);
+ auto states = DevelControl::ControlAccessible::CalculateStates();
+ auto popup = Toolkit::Popup::DownCast(Self());
auto displayState = popup.GetProperty<std::string>(Toolkit::Popup::Property::DISPLAY_STATE);
states[Dali::Accessibility::State::SHOWING] = (displayState == "SHOWN" || displayState == "SHOWING");
+ states[Dali::Accessibility::State::MODAL] = true;
return states;
}