[ATSPI] Add MoveOuted interface 95/260495/11
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 25 Jun 2021 12:05:30 +0000 (21:05 +0900)
committerLukasz Oleksak <l.oleksak@samsung.com>
Thu, 15 Jul 2021 13:13:02 +0000 (15:13 +0200)
This interface is used for an object moving out of view area.
The following dali-toolkit patch is using this interface.

https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-toolkit/+/260342/

Change-Id: Ibd0fbfa3ddb22c66ef4ece26b97ec87a439bfe1a

dali/devel-api/adaptor-framework/accessibility-impl.h
dali/devel-api/adaptor-framework/accessibility.h
dali/internal/accessibility/bridge/accessible.cpp
dali/internal/accessibility/bridge/bridge-object.cpp
dali/internal/accessibility/bridge/bridge-object.h
dali/internal/accessibility/bridge/dummy-atspi.cpp
dali/internal/accessibility/bridge/dummy-atspi.h

index 304f2c1..bce6135 100644 (file)
@@ -218,6 +218,14 @@ struct DALI_ADAPTOR_API Bridge
   virtual void EmitTextChanged(Accessible* obj, TextChangedState state, unsigned int position, unsigned int length, const std::string& content) = 0;
 
   /**
+   * @brief Emits MoveOuted event on at-spi bus.
+   *
+   * @param[in] obj Accessible object
+   * @param[in] type Direction type when an Accessible object moves out of screen
+   **/
+  virtual void EmitMovedOutOfScreen(Accessible* obj, MovedOutOfScreenType type) = 0;
+
+  /**
    * @brief Emits state-changed event on at-spi bus.
    *
    * @param[in] obj The accessible object
@@ -534,6 +542,13 @@ public:
   void EmitTextCursorMoved(unsigned int cursorPosition);
 
   /**
+   * @brief Emits "MoveOuted" event.
+   *
+   * @param[in] type moved out of screen type
+   */
+  void EmitMovedOutOfScreen(MovedOutOfScreenType type);
+
+  /**
    * @brief Emits "highlighted" event.
    *
    * @param[in] event The enumerated window event
index 33dc1e1..3196176 100644 (file)
@@ -42,6 +42,16 @@ namespace Dali
 namespace Accessibility\r
 {\r
 /**\r
+ * @brief Enumeration describing signal that occurs when object moves out of screen.\r
+ */\r
+enum class MovedOutOfScreenType\r
+{\r
+  NONE,\r
+  TOP_LEFT,     ///< Object moves out of top(or left) side of screen\r
+  BOTTOM_RIGHT ///< Object moves out of bottom(or right) side of screen\r
+};\r
+\r
+/**\r
  * @brief Enumeration describing a relation between accessible objects\r
  * 1 to 0..N relation model is supported. By default relation is not symmetrical.\r
  * Symmetry must be explicitly maintained.\r
index fb75de8..95814c2 100644 (file)
@@ -143,6 +143,15 @@ void Accessible::EmitTextCursorMoved(unsigned int cursorPosition)
     bridgeData->mBridge->EmitCursorMoved(this, cursorPosition);
   }
 }
+
+void Accessible::EmitMovedOutOfScreen(MovedOutOfScreenType type)
+{
+  if(auto bridgeData = GetBridgeData())
+  {
+    bridgeData->mBridge->EmitMovedOutOfScreen(this, type);
+  }
+}
+
 void Accessible::Emit(WindowEvent event, unsigned int detail)
 {
   if(auto bridgeData = GetBridgeData())
index a0c157d..fad8c2c 100644 (file)
@@ -571,3 +571,18 @@ void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsi
       {"", "root"});
   }
 }
+
+void BridgeObject::EmitMovedOutOfScreen(Accessible* obj, MovedOutOfScreenType type)
+{
+  auto        addr = obj->GetAddress();
+  std::string p    = addr ? ATSPI_PREFIX_PATH + addr.GetPath() : ATSPI_NULL_PATH;
+  dbusServer.emit2<std::string, int, int, DBus::EldbusVariant<int>, Address>(
+    p,
+    AtspiDbusInterfaceEventObject,
+    "MoveOuted",
+    "",
+    static_cast<int>(type),
+    0,
+    {0},
+    {"", "root"});
+}
index f836c20..8b32ac3 100644 (file)
@@ -44,6 +44,7 @@ protected:
   void Emit(Dali::Accessibility::Accessible* obj, Dali::Accessibility::WindowEvent event, unsigned int detail) override;
   void Emit(Dali::Accessibility::Accessible* obj, Dali::Accessibility::ObjectPropertyChangeEvent we) override;
   void EmitBoundsChanged(Dali::Accessibility::Accessible* obj, Dali::Rect<> rect) override;
+  void EmitMovedOutOfScreen(Dali::Accessibility::Accessible* obj, Dali::Accessibility::MovedOutOfScreenType type) override;
 };
 
 #endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_OBJECT_H
index 716a2e7..8cb4119 100644 (file)
@@ -126,6 +126,10 @@ void Accessibility::Accessible::EmitActiveDescendantChanged(Accessibility::Acces
 {
 }
 
+void Accessibility::Accessible::EmitMovedOutOfScreen(Accessibility::MovedOutOfScreenType type)
+{
+}
+
 void Accessibility::Accessible::FindWordSeparationsUtf8(const utf8_t* string, size_t length, const char* language, char* breaks)
 {
 }
index f48e878..7ea43d3 100644 (file)
@@ -102,6 +102,10 @@ struct DummyBridge : Dali::Accessibility::Bridge
   {
   }
 
+  void EmitMovedOutOfScreen(Accessibility::Accessible* obj, MovedOutOfScreenType type) override
+  {
+  }
+
   void EmitStateChanged(Accessibility::Accessible* obj, Accessibility::State state, int newValue, int reserved) override
   {
   }