/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
// CLASS HEADER
//INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/socket.h>
#include <dali/internal/accessibility/bridge/accessibility-common.h>
-#include <third-party/libunibreak/linebreak.h>
-#include <third-party/libunibreak/wordbreak.h>
using namespace Dali::Accessibility;
-std::vector<std::string> Accessible::GetInterfaces()
-{
- std::vector<std::string> tmp;
- tmp.push_back(AtspiDbusInterfaceAccessible);
- if(dynamic_cast<Collection*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceCollection);
- }
- if(dynamic_cast<Text*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceText);
- }
- if(dynamic_cast<EditableText*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceEditableText);
- }
- if(dynamic_cast<Value*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceValue);
- }
- if(dynamic_cast<Component*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceComponent);
- }
- if(auto action = dynamic_cast<Action*>(this))
- {
- if(action->GetActionCount() > 0)
- {
- tmp.push_back(AtspiDbusInterfaceAction);
- }
- }
- if(dynamic_cast<Selection*>(this))
- {
- tmp.push_back(AtspiDbusInterfaceSelection);
- }
- return tmp;
-}
-
Accessible::Accessible()
{
}
-Accessible::~Accessible()
+Accessible::~Accessible() noexcept
{
auto handle = mBridgeData.lock();
if(handle)
}
}
-void Accessible::EmitActiveDescendantChanged(Accessible* obj, Accessible* child)
+void Accessible::EmitActiveDescendantChanged(Accessible* child)
{
if(auto bridgeData = GetBridgeData())
{
- bridgeData->mBridge->EmitActiveDescendantChanged(obj, child);
+ bridgeData->mBridge->EmitActiveDescendantChanged(this, child);
}
}
bridgeData->mBridge->EmitCursorMoved(this, cursorPosition);
}
}
+
+void Accessible::EmitMovedOutOfScreen(ScreenRelativeMoveType type)
+{
+ if(auto bridgeData = GetBridgeData())
+ {
+ bridgeData->mBridge->EmitMovedOutOfScreen(this, type);
+ }
+}
+
+void Accessible::EmitSocketAvailable()
+{
+ DALI_ASSERT_DEBUG(Socket::DownCast(this));
+
+ if(auto bridgeData = GetBridgeData())
+ {
+ bridgeData->mBridge->EmitSocketAvailable(this);
+ }
+}
+
void Accessible::Emit(WindowEvent event, unsigned int detail)
{
if(auto bridgeData = GetBridgeData())
}
}
-std::vector<Accessible*> Accessible::GetChildren()
-{
- std::vector<Accessible*> tmp(GetChildCount());
- for(auto i = 0u; i < tmp.size(); ++i)
- {
- tmp[i] = GetChildAtIndex(i);
- }
- return tmp;
-}
-
-std::shared_ptr<Bridge::Data> Accessible::GetBridgeData()
+std::shared_ptr<Bridge::Data> Accessible::GetBridgeData() const
{
auto handle = mBridgeData.lock();
if(!handle)
{
auto bridge = Bridge::GetCurrentBridge();
- handle = bridge->mData;
+ handle = bridge->mData;
}
return handle;
}
-Address Accessible::GetAddress()
+Address Accessible::GetAddress() const
{
auto handle = mBridgeData.lock();
if(!handle)
return {handle ? handle->mBusName : "", tmp.str()};
}
-void Bridge::RegisterOnBridge(Accessible* object)
+void Bridge::RegisterOnBridge(const Accessible* object)
{
assert(!object->mBridgeData.lock() || object->mBridgeData.lock() == mData);
if(!object->mBridgeData.lock())
}
}
-bool Accessible::IsProxy()
+bool Accessible::IsHidden() const
{
return false;
}
-Accessible* Accessible::GetDefaultLabel()
+void Accessible::SetListenPostRender(bool enabled)
+{
+}
+
+bool Accessible::IsProxy() const
{
- return this;
+ return false;
}
void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States states, bool isRecursive)
{
if(auto data = GetBridgeData())
{
- auto currentState = GetStates() & states;
- for(auto i = 0u; i < currentState.size(); i++)
+ for(auto i = 0u; i < static_cast<unsigned int>(Dali::Accessibility::State::MAX_COUNT); i++)
{
auto index = static_cast<Dali::Accessibility::State>(i);
- if(currentState[index])
+ if(states[index])
{
- data->mBridge->EmitStateChanged(this, index, 1, 0);
+ data->mBridge->EmitStateChanged(this, index, GetStates()[index], 0);
}
}
}
}
}
-
-void Accessible::FindWordSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks)
-{
- set_wordbreaks_utf8(string, length, language, breaks);
-}
-
-void Accessible::FindLineSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks)
-{
- set_linebreaks_utf8(string, length, language, breaks);
-}