X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Faccessibility%2Fbridge%2Fbridge-impl.cpp;h=11c580e4c8946aeff4db7fda78722e43597c3987;hb=0f89686c3137b7972e41c44e48c0da5de385a360;hp=49b2edc56268e52e46642099ce4e6d65816f522b;hpb=b58b1d126402147aa33a74d1efd4292ff82015c4;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/accessibility/bridge/bridge-impl.cpp b/dali/internal/accessibility/bridge/bridge-impl.cpp index 49b2edc..11c580e 100644 --- a/dali/internal/accessibility/bridge/bridge-impl.cpp +++ b/dali/internal/accessibility/bridge/bridge-impl.cpp @@ -18,22 +18,27 @@ // CLASS HEADER // EXTERNAL INCLUDES +#include #include +#include #include #include // INTERNAL INCLUDES +#include +#include #include #include #include #include #include #include +#include #include #include #include +#include #include -#include using namespace Dali::Accessibility; @@ -45,7 +50,8 @@ class BridgeImpl : public virtual BridgeBase, public BridgeAction, public BridgeValue, public BridgeText, - public BridgeEditableText + public BridgeEditableText, + public BridgeSelection { DBus::DBusClient listenOnAtspiEnabledSignalClient; DBus::DBusClient registryClient, directReadingClient; @@ -93,18 +99,18 @@ public: return Consumed::NO; } - unsigned int evType = 0; + unsigned int keyType = 0; switch(type) { case KeyEventType::KEY_PRESSED: { - evType = 0; + keyType = 0; break; } case KeyEventType::KEY_RELEASED: { - evType = 1; + keyType = 1; break; } default: @@ -113,7 +119,7 @@ public: } } auto m = registryClient.method)>("NotifyListenersSync"); - auto result = m.call(std::tuple{evType, 0, static_cast(keyCode), 0, static_cast(timeStamp), keyName, isText ? 1 : 0}); + auto result = m.call(std::tuple{keyType, 0, static_cast(keyCode), 0, static_cast(timeStamp), keyName, isText ? 1 : 0}); if(!result) { LOG() << result.getError().message; @@ -193,14 +199,14 @@ public: void ForceDown() override { - if(data) + if(mData) { - if(data->currentlyHighlightedActor && data->highlightActor) + if(mData->mCurrentlyHighlightedActor && mData->mHighlightActor) { - data->currentlyHighlightedActor.Remove(data->highlightActor); + mData->mCurrentlyHighlightedActor.Remove(mData->mHighlightActor); } - data->currentlyHighlightedActor = {}; - data->highlightActor = {}; + mData->mCurrentlyHighlightedActor = {}; + mData->mHighlightActor = {}; } highlightedActor = {}; highlightClearAction = {}; @@ -212,10 +218,10 @@ public: void Terminate() override { - if(data) + if(mData) { - data->currentlyHighlightedActor = {}; - data->highlightActor = {}; + mData->mCurrentlyHighlightedActor = {}; + mData->mHighlightActor = {}; } ForceDown(); listenOnAtspiEnabledSignalClient = {}; @@ -238,6 +244,7 @@ public: BridgeValue::RegisterInterfaces(); BridgeText::RegisterInterfaces(); BridgeEditableText::RegisterInterfaces(); + BridgeSelection::RegisterInterfaces(); RegisterOnBridge(&application); @@ -307,17 +314,19 @@ public: void Initialize() override { - auto req = DBus::DBusClient{A11yDbusName, A11yDbusPath, A11yDbusStatusInterface, DBus::ConnectionType::SESSION}; - auto p = req.property("ScreenReaderEnabled").get(); - if(p) + auto dbusClient = DBus::DBusClient{A11yDbusName, A11yDbusPath, A11yDbusStatusInterface, DBus::ConnectionType::SESSION}; + auto enabled = dbusClient.property("ScreenReaderEnabled").get(); + if(enabled) { - screenReaderEnabled = std::get<0>(p); + screenReaderEnabled = std::get<0>(enabled); } - p = req.property("IsEnabled").get(); - if(p) + + enabled = dbusClient.property("IsEnabled").get(); + if(enabled) { - isEnabled = std::get<0>(p); + isEnabled = std::get<0>(enabled); } + if(screenReaderEnabled || isEnabled) { ForceUp(); @@ -329,7 +338,7 @@ public: return screenReaderEnabled; } - bool GetIsEnabled() + bool IsEnabled() { return isEnabled; } @@ -344,15 +353,15 @@ static Bridge* CreateBridge() try { /* check environment variable first */ - const char *envAtspiDisabled = Dali::EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_DISABLE_ATSPI); - if (envAtspiDisabled && std::atoi(envAtspiDisabled) != 0) + const char* envAtspiDisabled = Dali::EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_DISABLE_ATSPI); + if(envAtspiDisabled && std::atoi(envAtspiDisabled) != 0) { return Dali::Accessibility::DummyBridge::GetInstance(); } return new BridgeImpl; } - catch (const std::exception&) + catch(const std::exception&) { DALI_LOG_ERROR("Failed to initialize AT-SPI bridge"); return Dali::Accessibility::DummyBridge::GetInstance(); @@ -363,13 +372,21 @@ Bridge* Bridge::GetCurrentBridge() { static Bridge* bridge; - if (bridge) + if(bridge) { return bridge; } - else if (autoInitState == AutoInitState::ENABLED) + else if(autoInitState == AutoInitState::ENABLED) { bridge = CreateBridge(); + + /* check environment variable for suppressing screen-reader */ + const char* envSuppressScreenReader = Dali::EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_SUPPRESS_SCREEN_READER); + if(envSuppressScreenReader && std::atoi(envSuppressScreenReader) != 0) + { + bridge->SuppressScreenReader(true); + } + return bridge; } @@ -378,7 +395,7 @@ Bridge* Bridge::GetCurrentBridge() void Bridge::DisableAutoInit() { - if (bridgeInitialized) + if(bridgeInitialized) { DALI_LOG_ERROR("Bridge::DisableAutoInit() called after bridge auto-initialization"); } @@ -386,17 +403,26 @@ void Bridge::DisableAutoInit() autoInitState = AutoInitState::DISABLED; } -void Bridge::EnableAutoInit(Accessible* topLevelWindow, const std::string& applicationName) +void Bridge::EnableAutoInit() { autoInitState = AutoInitState::ENABLED; - if (bridgeInitialized) + if(bridgeInitialized) { return; } + auto rootLayer = Dali::Stage::GetCurrent().GetRootLayer(); + auto window = Dali::DevelWindow::Get(rootLayer); + auto applicationName = Dali::Internal::Adaptor::Adaptor::GetApplicationPackageName(); + auto* bridge = Bridge::GetCurrentBridge(); - bridge->AddTopLevelWindow(topLevelWindow); + bridge->AddTopLevelWindow(Dali::Accessibility::Accessible::Get(rootLayer, true)); bridge->SetApplicationName(applicationName); bridge->Initialize(); + + if(window && window.IsVisible()) + { + bridge->ApplicationShown(); + } }