X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Faccessibility%2Fbridge%2Fbridge-impl.cpp;h=3787031b5bb6fc20ee9ef0eb0bedb9e8c8062c36;hb=650f41536a0279e017dab9f2f62ce7acae17bb16;hp=afd3a9623f6c43f32401820fcdac1da8ea6b1569;hpb=7d3f985d810e9f82f70f065a505fcb5c07eb9c08;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 afd3a96..f76a0ea 100644 --- a/dali/internal/accessibility/bridge/bridge-impl.cpp +++ b/dali/internal/accessibility/bridge/bridge-impl.cpp @@ -30,17 +30,19 @@ #include #include #include +#include #include #include #include -#include #include +#include #include #include #include +#include +#include #include #include -#include #include #include #include @@ -49,7 +51,6 @@ using namespace Dali::Accessibility; namespace // unnamed namespace { - const int RETRY_INTERVAL = 1000; } // unnamed namespace @@ -70,17 +71,19 @@ class BridgeImpl : public virtual BridgeBase, public BridgeApplication, public BridgeHypertext, public BridgeHyperlink, - public BridgeSocket + public BridgeSocket, + public BridgeTable, + public BridgeTableCell { - DBus::DBusClient mAccessibilityStatusClient; - DBus::DBusClient mRegistryClient; - DBus::DBusClient mDirectReadingClient; - bool mIsScreenReaderEnabled = false; - bool mIsEnabled = false; - std::unordered_map> mDirectReadingCallbacks; + DBus::DBusClient mAccessibilityStatusClient{}; + DBus::DBusClient mRegistryClient{}; + DBus::DBusClient mDirectReadingClient{}; + bool mIsScreenReaderEnabled{false}; + bool mIsEnabled{false}; + std::unordered_map> mDirectReadingCallbacks{}; Dali::Actor mHighlightedActor; - std::function mHighlightClearAction; - Dali::CallbackBase* mIdleCallback = NULL; + std::function mHighlightClearAction{nullptr}; + Dali::CallbackBase* mIdleCallback{}; Dali::Timer mInitializeTimer; Dali::Timer mReadIsEnabledTimer; Dali::Timer mReadScreenReaderEnabledTimer; @@ -88,9 +91,7 @@ class BridgeImpl : public virtual BridgeBase, std::string mPreferredBusName; public: - BridgeImpl() - { - } + BridgeImpl() = default; /** * @copydoc Dali::Accessibility::Bridge::Emit() @@ -148,7 +149,7 @@ public: LOG() << "Direct reading command failed (" << msg.getError().message << ")\n"; } }, - true); + true); } /** @@ -167,7 +168,7 @@ public: LOG() << "Direct reading command failed (" << msg.getError().message << ")\n"; } }, - false); + false); } /** @@ -186,7 +187,7 @@ public: LOG() << "Direct reading command failed (" << msg.getError().message << ")\n"; } }, - alsoNonDiscardable); + alsoNonDiscardable); } /** @@ -209,8 +210,8 @@ public: mDirectReadingCallbacks.emplace(std::get<2>(msg), callback); } }, - text, - discardable); + text, + discardable); } /** @@ -235,8 +236,8 @@ public: mHighlightedActor = {}; mHighlightClearAction = {}; BridgeAccessible::ForceDown(); - mRegistryClient = {}; - mDirectReadingClient = {}; + mRegistryClient = {}; + mDirectReadingClient = {}; mDirectReadingCallbacks.clear(); mApplication.mChildren.clear(); ClearTimer(); @@ -289,9 +290,9 @@ public: { Dali::Adaptor::Get().RemoveIdle(mIdleCallback); } - mAccessibilityStatusClient = {}; - mDbusServer = {}; - mConnectionPtr = {}; + mAccessibilityStatusClient = {}; + mDbusServer = {}; + mConnectionPtr = {}; } bool ForceUpTimerCallback() @@ -337,6 +338,8 @@ public: BridgeHypertext::RegisterInterfaces(); BridgeHyperlink::RegisterInterfaces(); BridgeSocket::RegisterInterfaces(); + BridgeTable::RegisterInterfaces(); + BridgeTableCell::RegisterInterfaces(); RegisterOnBridge(&mApplication); @@ -425,6 +428,52 @@ public: } /** + * @brief Sends a signal to dbus that the window is minimized. + * + * @param[in] window The window to be minimized + * @see BridgeObject::Emit() + */ + void EmitMinimize(Dali::Window window) + { + auto windowAccessible = mApplication.GetWindowAccessible(window); + if(windowAccessible) + { + windowAccessible->Emit(WindowEvent::MINIMIZE, 0); + } + } + + /** + * @brief Sends a signal to dbus that the window is restored. + * + * @param[in] window The window to be restored + * @param[in] detail Restored window state + * @see BridgeObject::Emit() + */ + void EmitRestore(Dali::Window window, Dali::Accessibility::WindowRestoreType detail) + { + auto windowAccessible = mApplication.GetWindowAccessible(window); + if(windowAccessible) + { + windowAccessible->Emit(WindowEvent::RESTORE, static_cast(detail)); + } + } + + /** + * @brief Sends a signal to dbus that the window is maximized. + * + * @param[in] window The window to be maximized + * @see BridgeObject::Emit() + */ + void EmitMaximize(Dali::Window window) + { + auto windowAccessible = mApplication.GetWindowAccessible(window); + if(windowAccessible) + { + windowAccessible->Emit(WindowEvent::MAXIMIZE, 0); + } + } + + /** * @copydoc Dali::Accessibility::Bridge::WindowShown() */ void WindowShown(Dali::Window window) override @@ -469,6 +518,39 @@ public: } /** + * @copydoc Dali::Accessibility::Bridge::WindowMinimized() + */ + void WindowMinimized(Dali::Window window) override + { + if(IsUp()) + { + EmitMinimize(window); + } + } + + /** + * @copydoc Dali::Accessibility::Bridge::WindowRestored() + */ + void WindowRestored(Dali::Window window, WindowRestoreType detail) override + { + if(IsUp()) + { + EmitRestore(window, detail); + } + } + + /** + * @copydoc Dali::Accessibility::Bridge::WindowMaximized() + */ + void WindowMaximized(Dali::Window window) override + { + if(IsUp()) + { + EmitMaximize(window); + } + } + + /** * @copydoc Dali::Accessibility::Bridge::SuppressScreenReader() */ void SuppressScreenReader(bool suppress) override @@ -545,7 +627,7 @@ public: void ReadScreenReaderEnabledProperty() { // can be true because of SuppressScreenReader before init - if (!mAccessibilityStatusClient) + if(!mAccessibilityStatusClient) { return; } @@ -579,7 +661,7 @@ public: void EmitScreenReaderEnabledSignal() { - if (mIsScreenReaderEnabled) + if(mIsScreenReaderEnabled) { mScreenReaderEnabledSignal.Emit(); } @@ -611,7 +693,7 @@ public: { mAccessibilityStatusClient = DBus::DBusClient{A11yDbusName, A11yDbusPath, A11yDbusStatusInterface, DBus::ConnectionType::SESSION}; - if (!mAccessibilityStatusClient) + if(!mAccessibilityStatusClient) { DALI_LOG_ERROR("Accessibility Status DbusClient is not ready\n"); return false; @@ -622,7 +704,7 @@ public: bool InitializeTimerCallback() { - if ( InitializeAccessibilityStatusClient() ) + if(InitializeAccessibilityStatusClient()) { ReadAndListenProperties(); return false; @@ -632,7 +714,7 @@ public: bool OnIdleSignal() { - if ( InitializeAccessibilityStatusClient() ) + if(InitializeAccessibilityStatusClient()) { ReadAndListenProperties(); mIdleCallback = NULL; @@ -655,20 +737,20 @@ public: */ void Initialize() override { - if ( InitializeAccessibilityStatusClient() ) + if(InitializeAccessibilityStatusClient()) { ReadAndListenProperties(); return; } // Initialize failed. Try it again on Idle - if( Dali::Adaptor::IsAvailable() ) + if(Dali::Adaptor::IsAvailable()) { Dali::Adaptor& adaptor = Dali::Adaptor::Get(); - if( NULL == mIdleCallback ) + if(NULL == mIdleCallback) { - mIdleCallback = MakeCallback( this, &BridgeImpl::OnIdleSignal ); - adaptor.AddIdle( mIdleCallback, true ); + mIdleCallback = MakeCallback(this, &BridgeImpl::OnIdleSignal); + adaptor.AddIdle(mIdleCallback, true); } } } @@ -707,14 +789,14 @@ public: { auto client = CreateSocketClient(socket); - client.method("Embedded").call(ATSPI_PREFIX_PATH + plug.GetPath()); + client.method("Embedded").asyncCall([](DBus::ValueOrError) {}, ATSPI_PREFIX_PATH + plug.GetPath()); } void UnembedSocket(const Address& plug, const Address& socket) override { auto client = CreateSocketClient(socket); - client.method("Unembed").call(plug); + client.method("Unembed").asyncCall([](DBus::ValueOrError) {}, plug); } void SetSocketOffset(ProxyAccessible* socket, std::int32_t x, std::int32_t y) override @@ -781,7 +863,6 @@ private: namespace // unnamed namespace { - bool INITIALIZED_BRIDGE = false; /**