X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Faccessibility%2Fbridge%2Faccessible.cpp;h=7d6010eb0848d7b89f4ca7763226d5686474ee31;hb=262b8e9f43b6b9ef80e5e1bd4c7096fe9141ec08;hp=f23e33ff752aad296456e8167b20c6b2a99029ea;hpb=fb63e2b3e53c373612ed70a5b44aeae5d2df5636;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/accessibility/bridge/accessible.cpp b/dali/internal/accessibility/bridge/accessible.cpp index f23e33f..7d6010e 100644 --- a/dali/internal/accessibility/bridge/accessible.cpp +++ b/dali/internal/accessibility/bridge/accessible.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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,47 +15,59 @@ * */ - // CLASS HEADER +// CLASS HEADER - //INTERNAL INCLUDES +//INTERNAL INCLUDES #include -#include #include +#include using namespace Dali::Accessibility; -std::vector< std::string > Accessible::GetInterfaces() +std::vector Accessible::GetInterfaces() { - std::vector< std::string > tmp; - tmp.push_back(AtspiDbusInterfaceAccessible); - if (dynamic_cast(this)) - { - tmp.push_back(AtspiDbusInterfaceCollection); - } - if (dynamic_cast(this)) - { - tmp.push_back(AtspiDbusInterfaceText); - } - if (dynamic_cast(this)) - { - tmp.push_back(AtspiDbusInterfaceEditableText); - } - if (dynamic_cast(this)) - { - tmp.push_back(AtspiDbusInterfaceValue); - } - if (dynamic_cast(this)) - { - tmp.push_back(AtspiDbusInterfaceComponent); - } - if (auto d = dynamic_cast(this)) + std::vector tmp; + tmp.push_back(AtspiDbusInterfaceAccessible); + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceCollection); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceText); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceEditableText); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceValue); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceComponent); + } + if(auto action = dynamic_cast(this)) + { + if(action->GetActionCount() > 0) { - if (d->GetActionCount() > 0) - { - tmp.push_back(AtspiDbusInterfaceAction); - } + tmp.push_back(AtspiDbusInterfaceAction); } - return tmp; + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceSelection); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceHypertext); + } + if(dynamic_cast(this)) + { + tmp.push_back(AtspiDbusInterfaceHyperlink); + } + return tmp; } Accessible::Accessible() @@ -64,180 +76,201 @@ Accessible::Accessible() Accessible::~Accessible() { - auto b = bridgeData.lock(); - if (b) - b->knownObjects.erase(this); + auto handle = mBridgeData.lock(); + if(handle) + { + handle->mKnownObjects.erase(this); + } } void Accessible::EmitActiveDescendantChanged(Accessible* obj, Accessible* child) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitActiveDescendantChanged(obj, child); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitActiveDescendantChanged(obj, child); + } } -void Accessible::EmitStateChanged(State state, int newValue1, int newValue2) +void Accessible::EmitStateChanged(State state, int newValue, int reserved) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitStateChanged(this, state, newValue1, newValue2); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitStateChanged(this, state, newValue, reserved); + } } -void Accessible::EmitShowing(bool showing) +void Accessible::EmitShowing(bool isShowing) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitStateChanged(this, State::SHOWING, showing ? 1 : 0, 0); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitStateChanged(this, State::SHOWING, isShowing ? 1 : 0, 0); + } } -void Accessible::EmitVisible(bool visible) +void Accessible::EmitVisible(bool isVisible) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitStateChanged(this, State::VISIBLE, visible ? 1 : 0, 0); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitStateChanged(this, State::VISIBLE, isVisible ? 1 : 0, 0); + } } -void Accessible::EmitHighlighted(bool set) +void Accessible::EmitHighlighted(bool isHighlighted) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitStateChanged(this, State::HIGHLIGHTED, set ? 1 : 0, 0); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitStateChanged(this, State::HIGHLIGHTED, isHighlighted ? 1 : 0, 0); + } } -void Accessible::EmitFocused(bool set) +void Accessible::EmitFocused(bool isFocused) { - if (auto b = GetBridgeData()) { - b->bridge->EmitStateChanged(this, State::FOCUSED, set ? 1 : 0, 0); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitStateChanged(this, State::FOCUSED, isFocused ? 1 : 0, 0); + } } void Accessible::EmitTextInserted(unsigned int position, unsigned int length, const std::string& content) { - if (auto b = GetBridgeData()) { - b->bridge->EmitTextChanged(this, TextChangedState::INSERTED, position, length, content); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitTextChanged(this, TextChangedState::INSERTED, position, length, content); + } } void Accessible::EmitTextDeleted(unsigned int position, unsigned int length, const std::string& content) { - if (auto b = GetBridgeData()) { - b->bridge->EmitTextChanged(this, TextChangedState::DELETED, position, length, content); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitTextChanged(this, TextChangedState::DELETED, position, length, content); + } } -void Accessible::EmitTextCaretMoved(unsigned int cursorPosition) +void Accessible::EmitTextCursorMoved(unsigned int cursorPosition) { - if (auto b = GetBridgeData()) { - b->bridge->EmitCaretMoved(this, cursorPosition); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitCursorMoved(this, cursorPosition); + } } -void Accessible::Emit(WindowEvent we, unsigned int detail1) + +void Accessible::EmitMovedOutOfScreen(ScreenRelativeMoveType type) { - if (auto b = GetBridgeData()) - { - b->bridge->Emit(this, we, detail1); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitMovedOutOfScreen(this, type); + } } -void Accessible::Emit(ObjectPropertyChangeEvent ev) + +void Accessible::Emit(WindowEvent event, unsigned int detail) { - if (auto b = GetBridgeData()) - { - b->bridge->Emit(this, ev); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->Emit(this, event, detail); + } +} +void Accessible::Emit(ObjectPropertyChangeEvent event) +{ + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->Emit(this, event); + } } void Accessible::EmitBoundsChanged(Rect<> rect) { - if (auto b = GetBridgeData()) - { - b->bridge->EmitBoundsChanged(this, rect); - } + if(auto bridgeData = GetBridgeData()) + { + bridgeData->mBridge->EmitBoundsChanged(this, rect); + } } -std::vector< Accessible* > Accessible::GetChildren() +std::vector Accessible::GetChildren() { - std::vector< Accessible* > tmp(GetChildCount()); - for (auto i = 0u; i < tmp.size(); ++i) - { - tmp[i] = GetChildAtIndex(i); - } - return tmp; + std::vector 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 Accessible::GetBridgeData() { - auto b = bridgeData.lock(); - if (!b) - { - auto p = Bridge::GetCurrentBridge(); - b = p->data; - } - return b; + auto handle = mBridgeData.lock(); + if(!handle) + { + auto bridge = Bridge::GetCurrentBridge(); + handle = bridge->mData; + } + return handle; } Address Accessible::GetAddress() { - auto b = bridgeData.lock(); - if (!b) + auto handle = mBridgeData.lock(); + if(!handle) + { + handle = GetBridgeData(); + if(handle) { - b = GetBridgeData(); - if (b) - b->bridge->RegisterOnBridge(this); + handle->mBridge->RegisterOnBridge(this); } - std::ostringstream tmp; - tmp << this; - return { b ? b->busName : "", tmp.str() }; + } + std::ostringstream tmp; + tmp << this; + return {handle ? handle->mBusName : "", tmp.str()}; } -void Bridge::RegisterOnBridge(Accessible* obj) +void Bridge::RegisterOnBridge(Accessible* object) { - assert(!obj->bridgeData.lock() || obj->bridgeData.lock() == data); - if (!obj->bridgeData.lock()) - { - assert(data); - data->knownObjects.insert(obj); - obj->bridgeData = data; - } + assert(!object->mBridgeData.lock() || object->mBridgeData.lock() == mData); + if(!object->mBridgeData.lock()) + { + assert(mData); + mData->mKnownObjects.insert(object); + object->mBridgeData = mData; + } } bool Accessible::IsProxy() { - return false; + return false; } Accessible* Accessible::GetDefaultLabel() { - return this; + return this; } -void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States states, bool doRecursive) +void Accessible::NotifyAccessibilityStateChange(Dali::Accessibility::States states, bool isRecursive) { - if (auto b = GetBridgeData()) + if(auto data = GetBridgeData()) + { + for(auto i = 0u; i < static_cast(Dali::Accessibility::State::MAX_COUNT); i++) + { + auto index = static_cast(i); + if(states[index]) + { + data->mBridge->EmitStateChanged(this, index, GetStates()[index], 0); + } + } + + if(isRecursive) { - auto s = GetStates() & states; - for (auto i = 0u; i < s.size(); i++) - { - auto index = static_cast(i); - if (s[index]) - b->bridge->EmitStateChanged(this, index, 1, 0); - } - if (doRecursive) - { - auto children = GetChildren(); - for (auto c : children) - c->NotifyAccessibilityStateChange(states, doRecursive); - } + auto children = GetChildren(); + for(auto iter : children) + { + iter->NotifyAccessibilityStateChange(states, isRecursive); + } } + } } -void Accessible::FindWordSeparationsUtf8(const utf8_t* s, size_t length, const char* language, char* breaks) +void Accessible::FindWordSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks) { - set_wordbreaks_utf8(s, length, language, breaks); + set_wordbreaks_utf8(string, length, language, breaks); } -void Accessible::FindLineSeparationsUtf8(const utf8_t* s, size_t length, const char* language, char* breaks) +void Accessible::FindLineSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks) { - set_linebreaks_utf8(s, length, language, breaks); + set_linebreaks_utf8(string, length, language, breaks); }