Add reading of table cell position (row, column) 83/294583/1
authorLukasz Oleksak <l.oleksak@samsung.com>
Fri, 26 May 2023 12:01:30 +0000 (14:01 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Wed, 21 Jun 2023 10:11:05 +0000 (12:11 +0200)
This patch adds reading of currently highlighted cell position in table
depending on position of previously highlighted cell. Following rules
apply inclusively:

* announce row if:
    * table has changed (highlight moves from one table to another)
    * row has changed (highlight moves from one row to another row)
    * table cell has not changed (repeated highlight on the same cell)

* announce column if:
    * table has changed (highlight moves from one table to another)
    * column has changed (highlight moves from one column to another column)
    * table cell has not changed (repeated highlight on the same cell)

Also, reading of the currently highlighted cell position in table may be
extended with optional reading of the characteristic of entire table
(table caption and total number of rows and columns).

Presence of this optional reading is controlled by vconf key:

    "db/setting/accessibility/screen_reader/list_grid_information"

The same rules of announcing row and column apply to announcing total rows
and total columns.

Dependency:
https://review.tizen.org/gerrit/#/c/platform/upstream/at-spi2-core/+/293439/

Change-Id: I167c581a942a2416b51f3a52c146a739993a49bd

56 files changed:
include/navigator.h
include/screen_reader_vconf.h
include/utils.h
res/po/ar.po
res/po/az.po
res/po/bg.po
res/po/ca.po
res/po/cs.po
res/po/da.po
res/po/de.po
res/po/el_GR.po
res/po/en.po
res/po/en_PH.po
res/po/en_US.po
res/po/es_ES.po
res/po/es_US.po
res/po/et.po
res/po/eu.po
res/po/fi.po
res/po/fr.po
res/po/fr_CA.po
res/po/ga.po
res/po/gl.po
res/po/hr.po
res/po/hu.po
res/po/hy.po
res/po/is.po
res/po/it_IT.po
res/po/ja_JP.po
res/po/ka.po
res/po/kk.po
res/po/ko_KR.po
res/po/lt.po
res/po/lv.po
res/po/mk.po
res/po/nb.po
res/po/nl.po
res/po/pl.po
res/po/pt_BR.po
res/po/pt_PT.po
res/po/ro.po
res/po/ru_RU.po
res/po/sk.po
res/po/sl.po
res/po/sr.po
res/po/sv.po
res/po/tr_TR.po
res/po/uk.po
res/po/uz.po
res/po/zh_CN.po
res/po/zh_HK.po
res/po/zh_TW.po
src/navigator.c
src/reading_composer.c
src/screen_reader_vconf.c
src/utils.c

index 35983f0ce9ca27cd0d68d1d3fbd56fb90a081abb..c8e11545bb7a8d1b381427d9f8538dff8a2cf6d1 100644 (file)
@@ -63,4 +63,11 @@ void navigator_set_ignore_keyboard_feedback(NavigatorData *nd, Eina_Bool feedbac
 
 Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd);
 
+Eina_Bool navigator_table_has_changed(NavigatorData *nd, gchar *table_unique_id);
+Eina_Bool navigator_table_row_has_changed(NavigatorData *nd, int row);
+Eina_Bool navigator_table_column_has_changed(NavigatorData *nd, int column);
+Eina_Bool navigator_table_cell_has_changed(NavigatorData *nd, int row, int column);
+void navigator_set_last_position_in_table(NavigatorData *nd, int row, int column);
+void navigator_set_last_table_unique_id(NavigatorData *nd, gchar *table_unique_id);
+
 #endif //NAVIGATOR_H_
index 01c856f4b89b77dd0649e06c8899de1f62153a77..9dfaaba21df2e234a55cece5ded010d2604d9b78 100644 (file)
@@ -28,6 +28,7 @@ void vc_exit(void);
  */
 
 int vc_get_read_description(void);
+int vc_get_read_list_grid_information(void);
 int vc_get_haptic(void);
 int vc_get_keyboard_feedback(void);
 int vc_get_sound_feedback(void);
index 5a34995962ba73fdd4558a9d8a4d607365dac962..10820639d842cf73e4b0a386a1fa6510e0fad08d 100644 (file)
@@ -140,6 +140,8 @@ Eina_Bool object_has_modal_role(AtspiRole role);
 Eina_Bool object_has_focused_state(AtspiAccessible *obj);
 Eina_Bool object_has_defunct_state(AtspiAccessible *obj);
 Eina_Bool object_has_highlighted_state(AtspiAccessible *obj);
+Eina_Bool object_get_extents(AtspiAccessible *object, AtspiRect *extents);
+Eina_Bool object_get_position_in_table(AtspiAccessible *object, int *row, int *column, gchar **table_unique_id, int *table_row_count, int *table_column_count, gchar **table_caption);
 
 int get_percent_value(double value, double lower, double upper);
 
index bf7779f666d260e4a68c8c481437fc9e41f16a8a..611761009d77920f90f4c26a54013f43d1a60835 100755 (executable)
@@ -1007,3 +1007,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 460de739a80e60f2fb9c17b13e4950468507a7b0..cd31f81acea3e34000d8be4a15230ca606aba3c4 100755 (executable)
@@ -1009,3 +1009,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 604f45f78533d50288a59bbe2f04f52172c668e3..e5f886df9fe8c28c768881b90a6d97f741d8c687 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 21c9a46009c0d3163abee9ca1a900d8bfbf850de..aab8de68807745c05027094d9874441b6a6f13cd 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index fbec5de68432e20e01da5c3f4081f67f798574ec..d94d491999e01fafc73190db289bed7ba81fc96e 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 1ea7edcaad3fdbdb08dd99ad59d1c3cf4467ca85..ba632911740466f7052fe9c0b4eb3e8841fe2764 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 47d0bba8c17ced1e7ec3e0a4e30fe1edcabd73d8..030810a7b48a047e21a057b7962e3627f0798bb6 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 5d169fdd361a78aebf7fea23126379887acdff99..4a25d8ffa34235ed5fc8c803c1839549c7db1c18 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index b7a0d9b4856c4351351394d28cfd5d95374c3455..533609d09daee9022a4aed3465a2c1f7f9276867 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 4e79fecd0d9e543bc8e455bcd9771ccd533b7fb4..aed26dedbfa3283ad9ff8a227f740ff4c02bec04 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 16b43e86ee52ac09c28f50945b271bed63efd1d0..ab0e58b37123f81e466713b2efc872541689e1f2 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index bbedc74844770ce7ef8d8ce097cd7a3b69981531..e26ddcd8ae453d6ebc45ccea85d4232caad6c442 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 663aaec2a006a135401a18640d0ea42886626047..74eeec22869379bee192f187a956f2268b70969d 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index d94aeeffccfd8da7b48d8cde4e868b9edc833b49..25cd13653b6e9962e51b59981de9efd79822a4a5 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 2d337968271a6e5c18a5520df89562adccfa9b26..db5562cbf0bc1912f0dd8513fc2d9bc5f05dad1c 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 8bfce0c6a1e8df5ca0b3c203eaf392ca3bf80efb..de1d32a57b1c6755143c28e89eba3afb21d0eaca 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index a6faa8aa122f687186543cb48235a061b18ebe25..522192b4766128171e320a7d843485a34e2cad99 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index f850be205415a5bf612a5243436d3936a4374e93..bf28e0db594bc3603250444bf69c200f475e0460 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 84f763c7febcdd1dc7f84f98bdf083b2c7151297..4e89583187e5a28778328c36bba83aa6cac42e90 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 151ccd36c24f51f0ce6b055d634ec222d042eb25..3160e398f36704f0def77dfc67b4b818a0de7046 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 39aeb857e89e7dfc008c8592e6579fef8007edcd..da1596688e61490df870a36913d54142327413b9 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 702871ea68d02cf78f54448e23bade7f556dcbf2..0fbc0b096abfc452f490545d0b3a5171d2900dfa 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index a6fbbe03e3691576ac0a0e8b5dfbbec7afe07c70..671bd011d9fe4d27f680aa3220a5b0e6e80b3976 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 5ad9fdb9b74649ae062d880fdc0fcddb54f1036a..9bed7e83c8f8ca808a89d3daed74d62042b55c7b 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 6ff72128e54b1b054c5cf4b28bf393f65a4d2292..38a04f9e03c1aea11642dbd27a931b4f3cada484 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index f0a5c28f169021d0e862d046590e73a4a3ccb935..1ad51f660a16f4b8383ff82ec560b5689e2010c6 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 3d0f5aa7fc4b3aed26af07690b968f3c2d210741..b42c215720c6f5f78178a9a04ef2284060760f94 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index c73319f11ea245df259d28b98feb11aaf4768cac..467a1ad43276286fcc202ef7965782d75b9d29ed 100755 (executable)
@@ -1045,3 +1045,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 64bf6711d3a4c5ab1a2f889ad5723a7c8747e62e..70015a8573f9921a15a042a960316f167c9ae65a 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "슬라이더"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index b24652e3c3feb09abe4d3e8ca2460293995cc3cf..6d855983f201bc035eb1bf701f269842e72c6c3c 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 087b7362af62ec4e1c909f17aeebfd7c266f3165..e344e488169c93acd59eee91dd015597836ec7b3 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 12f70fbfd0403b7610abba98779c74d3e6c0af33..dd62cc414cb4ff9264eacc68a3337c422530ee77 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index e43198686144502ed919db8b020f46845b119124..e2a393a69cae475f6dfd5bcc790bfbd7c5e76164 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 12b4f88a724b02bc55c7a5dae0c88d737f1b2cf5..a32ae6a1dec4e7937c4dcd582cd9883a14743f94 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 788525f3ccfd1b5bf4636ba122b9726bac8b9e4a..cddb96e5ea3867fba20d4c6d4af95a56deaa75d6 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 975e37812a699ee97cd19a2f0eef2480277b1c76..b5490c8e78454786aad91a2c28b5fac9409c678d 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 48208f1f03e933eb2217d07117407b5cbb033877..8fea667e1abf184aebc518b32110833b95e4721f 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 727fb896fe03ddb74d0361d785e37c97c3f63d10..0f5c0cf439c2cf53ce617255c4bf4792ca3d20d8 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 338445404ab881d3827eba5c12ba6c87606106d7..703c0c99700d8a7cba6fa55b6f3bc9585fd3ad50 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index c918c8927a2a9e53bcad0337613840db8f2f2815..d3d3945bf502c01ec9d6166d77652a91fedd233a 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index b8909f337a7eaea2a74e5815df3c0e687adab6fb..0e6bacb1bef10029cb8e55b7c239e44755096cd8 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 816e2b1f2526aecd26d37e1b17fe6278c28d45f6..143b5824bc0b51d389a066ba1581db71e312e0c7 100755 (executable)
@@ -1047,3 +1047,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 5eeccd8d714d559ba8adec763f4fe37c8cedac0d..01b2061ad4ad3522598281028d8b2dcb29ed21e6 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index e597090c53f00d9e30ede8e9d9de514687794815..138717653001a990ef094702dde5f1eb688c4229 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 4cf9d36fabbdab2db049fb3779b37aec746e39cd..6c0e58f8db204cd34085fe40ac2f3c2cbf6c33cd 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 56c378ebe308553f15b546b6f2e0bf850d4bd9dd..34dfb75897bbe061b4dd42b51ca7fb29b255c334 100755 (executable)
@@ -1046,3 +1046,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index c7d69cec74c225a2b576c829c8612fe685d1bbc8..734d1f398e065eaf464c21cc2ff13b6eba5ca80c 100755 (executable)
@@ -1009,3 +1009,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 7e62f633405d209ab5057df27ca1d9b1c6ac4e30..e328033ca4f08a7e03b5d2247314ee3242476cbb 100755 (executable)
@@ -1009,3 +1009,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 505f1e616196b91c5b2c2efe8cf1d9710b3ecffb..b3653511de0b406cf5cab7b0a33c758cdd14a31d 100755 (executable)
@@ -1009,3 +1009,18 @@ msgstr "Slider"
 
 msgid "IDS_ACCS_TBOPT_SWIPE_UP_OR_DOWN_TO_CHANGE_T_TTS"
 msgstr "Swipe up or down to change."
+
+msgid "IDS_ACCS_BODY_ROW_P1SD"
+msgstr "Row %1$d"
+
+msgid "IDS_ACCS_BODY_COLUMN_P1SD"
+msgstr "Column %1$d"
+
+msgid "IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"
+msgstr "In grid %1$s"
+
+msgid "IDS_ACCS_BODY_P1SD_ROWS"
+msgstr "%1$d rows"
+
+msgid "IDS_ACCS_BODY_P1SD_COLUMNS"
+msgstr "%1$d columns"
index 887cf4e8ad95227b00402a436e44b76334c87a55..f9d48d3d3fcf4f23cce86fdff6d93105bca28e68 100644 (file)
@@ -104,6 +104,8 @@ struct _NavigatorData {
        AtspiMoveOutedType move_outed_type;
        NavigatorContextSwitchCb context_switch_cb;
        void *context_switch_data;
+       point_t last_position_in_table;
+       char *last_table_unique_id;
 };
 
 char *state_to_char(AtspiStateType state)
@@ -2706,6 +2708,8 @@ NavigatorData *navigator_init(void)
        nd->last_pos = (point_t) { .x = -1, .y = -1};
        nd->last_hover_event_time = -1;
        nd->last_slider_hover_event_time = -1;
+       nd->last_position_in_table = (point_t) { .x = -1, .y = -1};
+       nd->last_table_unique_id = NULL;
 
        tw_set_utterance_cb(_on_utterance, nd, NULL);
 
@@ -2756,6 +2760,9 @@ void navigator_shutdown(NavigatorData *nd)
        g_free(nd->supported_gestures);
        nd->supported_gestures = NULL;
 
+       g_free(nd->last_table_unique_id);
+       nd->last_table_unique_id = NULL;
+
        navigator_gestures_tracker_unregister(nd);
        tw_set_utterance_cb(NULL, NULL, NULL);
 
@@ -2808,3 +2815,38 @@ Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd) {
        return nd ? nd->is_text_selection_mode : EINA_FALSE;
 }
 
+Eina_Bool navigator_table_has_changed(NavigatorData *nd, gchar *table_unique_id) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       return nd && !g_strcmp0(nd->last_table_unique_id, table_unique_id) ? EINA_FALSE : EINA_TRUE;
+}
+
+Eina_Bool navigator_table_row_has_changed(NavigatorData *nd, int row) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       return nd && nd->last_position_in_table.y == row ? EINA_FALSE : EINA_TRUE;
+}
+
+Eina_Bool navigator_table_column_has_changed(NavigatorData *nd, int column) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       return nd && nd->last_position_in_table.x == column ? EINA_FALSE : EINA_TRUE;
+}
+
+Eina_Bool navigator_table_cell_has_changed(NavigatorData *nd, int row, int column) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       return navigator_table_row_has_changed(nd, row) || navigator_table_column_has_changed(nd, column);
+}
+
+void navigator_set_last_position_in_table(NavigatorData *nd, int row, int column) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       if (nd) {
+               nd->last_position_in_table.x = column;
+               nd->last_position_in_table.y = row;
+       }
+}
+
+void navigator_set_last_table_unique_id(NavigatorData *nd, gchar *table_unique_id) {
+       if (!nd) { ERROR("NavigatorData is NULL!"); }
+       if (nd) {
+               g_free(nd->last_table_unique_id);
+               nd->last_table_unique_id = g_strdup(table_unique_id);
+       }
+}
index f5d26a1607f422ea3c976b3705196122d7359562..592d9915f00bc1bddc6efe0dfe4bd0f2ec590d99 100644 (file)
@@ -6,6 +6,7 @@
 #include <logger.h>
 #include <screen_reader_vconf.h>
 #include <utils.h>
+#include <screen_reader.h>
 
 #define STATE_SET_CONTAINS(states, state)\
        ((states & ((gint64)1 << state)) ? (EINA_TRUE) : (EINA_FALSE))
@@ -58,23 +59,53 @@ TIZEN_PROD_STATIC void add_value_text(Eina_Strbuf *buf, AtspiAccessibleReadingMa
        }
 }
 
-TIZEN_PROD_STATIC
-void reading_composer_reading_material_free(AtspiAccessibleReadingMaterial *rm)
+TIZEN_PROD_STATIC Eina_Bool should_add_row_info(int row, int column, gchar *table_unique_id) {
+       return navigator_table_has_changed(get_pointer_to_service_data_struct()->navigator_data, table_unique_id) ||
+               navigator_table_row_has_changed(get_pointer_to_service_data_struct()->navigator_data, row) ||
+               !navigator_table_cell_has_changed(get_pointer_to_service_data_struct()->navigator_data, row, column);
+}
+
+TIZEN_PROD_STATIC Eina_Bool should_add_column_info(int row, int column, gchar *table_unique_id) {
+       return navigator_table_has_changed(get_pointer_to_service_data_struct()->navigator_data, table_unique_id) ||
+           navigator_table_column_has_changed(get_pointer_to_service_data_struct()->navigator_data, column) ||
+               !navigator_table_cell_has_changed(get_pointer_to_service_data_struct()->navigator_data, row, column);
+}
+
+TIZEN_PROD_STATIC void update_position_in_table(int row, int column, gchar *table_unique_id)
+{
+       navigator_set_last_position_in_table(get_pointer_to_service_data_struct()->navigator_data, row, column);
+       navigator_set_last_table_unique_id(get_pointer_to_service_data_struct()->navigator_data, table_unique_id);
+}
+
+TIZEN_PROD_STATIC void add_position_in_table_text(Eina_Strbuf *buf, int row, int column, Eina_Bool add_row_info, Eina_Bool add_column_info)
+{
+       if (add_row_info) {
+               if (eina_strbuf_length_get(buf))
+                       ESAL(buf, " , ");
+               ESAF(buf, _("IDS_ACCS_BODY_ROW_P1SD"), row + 1);
+               }
+       if (add_column_info) {
+               if (eina_strbuf_length_get(buf))
+                       ESAL(buf, " , ");
+               ESAF(buf, _("IDS_ACCS_BODY_COLUMN_P1SD"), column + 1);
+       }
+}
+
+TIZEN_PROD_STATIC void add_info_about_table_text(Eina_Strbuf *buf, int row_count, int column_count, gchar *table_caption, Eina_Bool add_rows_info, Eina_Bool add_columns_info)
 {
-       if (rm->parent)
-               g_object_unref(rm->parent);
-
-       if (rm->described_by_accessible)
-               g_object_unref(rm->described_by_accessible);
-
-       g_hash_table_unref(rm->attributes);
-       g_free(rm->name);
-       g_free(rm->labeled_by_name);
-       g_free(rm->text_interface_name);
-       g_free(rm->localized_role_name);
-       g_free(rm->description);
-       g_free(rm->value_text);
-       g_free(rm);
+       if (eina_strbuf_length_get(buf))
+               ESAL(buf, " , ");
+       ESAF(buf, _("IDS_ACCS_BODY_IN_GRID_CAPTION_P1SS"), table_caption);
+       if (add_rows_info) {
+               if (eina_strbuf_length_get(buf))
+                       ESAL(buf, " , ");
+               ESAF(buf, _("IDS_ACCS_BODY_P1SD_ROWS"), row_count);
+               }
+       if (add_columns_info) {
+               if (eina_strbuf_length_get(buf))
+                       ESAL(buf, " , ");
+               ESAF(buf, _("IDS_ACCS_BODY_P1SD_COLUMNS"), column_count);
+       }
 }
 
 TIZEN_PROD_STATIC char *generate_role_trait_from_role(AtspiAccessibleReadingMaterial *rm)
@@ -199,7 +230,7 @@ TIZEN_PROD_STATIC char *generate_role_trait_recursive(AtspiAccessibleReadingMate
                AtspiAccessibleReadingMaterial *_rm = atspi_accessible_get_reading_material(rm->described_by_accessible, NULL);
                if (_rm) {
                        role_trait_from_relation = generate_role_trait_recursive(_rm, ++nest_level, max_nest_level);
-                       reading_composer_reading_material_free(_rm);
+                       atspi_accessible_free_reading_material(_rm);
                }
        }
 
@@ -307,7 +338,7 @@ TIZEN_PROD_STATIC char *generate_state_trait_recursive(AtspiAccessibleReadingMat
                AtspiAccessibleReadingMaterial *_rm = atspi_accessible_get_reading_material(rm->described_by_accessible, NULL);
                if (_rm) {
                        state_trait_from_relation = generate_state_trait_recursive(_rm, ++nest_level, max_nest_level);
-                       reading_composer_reading_material_free(_rm);
+                       atspi_accessible_free_reading_material(_rm);
                }
        }
 
@@ -541,7 +572,7 @@ char* reading_composer_name_get(AtspiAccessible *obj)
                DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_NAME");
        }
 
-       reading_composer_reading_material_free(rm);
+       atspi_accessible_free_reading_material(rm);
        DEBUG("RESULT: %s", eina_strbuf_string_get(buf));
 
        DEBUG("END");
@@ -636,6 +667,30 @@ char* reading_composer_description_get(ReadingComposerData *data)
                }
                DEBUG("END : ACCESSIBLE_READING_INFO_TYPE_NAME");
        }
+       int row;
+       int column;
+       gchar *table_unique_id = NULL;
+       if (vc_get_read_list_grid_information()) {
+               int row_count;
+               int column_count;
+               gchar *table_caption = NULL;
+               if (object_get_position_in_table(rm->self, &row, &column, &table_unique_id, &row_count, &column_count, &table_caption)) {
+                       Eina_Bool add_row_info = should_add_row_info(row, column, table_unique_id);
+                       Eina_Bool add_column_info = should_add_column_info(row, column, table_unique_id);
+
+                       add_position_in_table_text(buf, row, column, add_row_info, add_column_info);
+                       add_info_about_table_text(buf, row_count, column_count, table_caption, add_row_info, add_column_info);
+                       update_position_in_table(row, column, table_unique_id);
+               }
+               g_free(table_caption);
+       } else {
+               if (object_get_position_in_table(rm->self, &row, &column, &table_unique_id, NULL, NULL, NULL)) {
+                       add_position_in_table_text(buf, row, column, should_add_row_info(row, column, table_unique_id), should_add_column_info(row, column, table_unique_id));
+                       update_position_in_table(row, column, table_unique_id);
+               }
+       }
+       g_free(table_unique_id);
+
        if (reading_attribute & ACCESSIBLE_READING_INFO_TYPE_ROLE) {
                DEBUG("START : ACCESSIBLE_READING_INFO_TYPE_ROLE");
                role_name = generate_role_trait(rm);
@@ -692,7 +747,7 @@ char* reading_composer_extended_description_get_recursive(ReadingComposerData *d
                                        AtspiAccessibleReadingMaterial *_rm = atspi_accessible_get_reading_material(rm->described_by_accessible, NULL);
                                        if (_rm) {
                                                description_from_relation = reading_composer_extended_description_get_recursive(_rm, ++nest_level, max_nest_level);
-                                               reading_composer_reading_material_free(_rm);
+                                               atspi_accessible_free_reading_material(_rm);
                                        }
                                }
 
@@ -745,5 +800,5 @@ ReadingComposerData* reading_composer_data_get(AtspiAccessible *obj)
 
 void reading_composer_data_free(ReadingComposerData *data) {
        if (data)
-               reading_composer_reading_material_free(data);
+               atspi_accessible_free_reading_material(data);
 }
index 2f3cffa4043a08099df700f7f313837776bbd1f9..d16b375dda5ecd29c0b36d2ce4159986fa2384fb 100644 (file)
 #include <test_suite/test_suite.h>
 #endif
 
-#define VCKEY_DESCRIPTION       "db/setting/accessibility/screen_reader/description"
-#define VCKEY_HAPTIC            "db/setting/accessibility/screen_reader/haptic"
-#define VCKEY_KEYBOARD_FEEDBACK "db/setting/accessibility/screen_reader/keyboard_feedback"
-#define VCKEY_SOUND_FEEDBACK    "db/setting/accessibility/screen_reader/sound_feedback"
-#define VCKEY_TTS_VOICE         "db/setting/accessibility/screen_reader/tts_voice"
-#define VCKEY_TTS_SPEED         "db/setting/accessibility/screen_reader/tts_speed"
-#define VCKEY_LCD_BACKLIGHT_NORMAL "db/setting/lcd_backlight_normal"
+#define VCKEY_DESCRIPTION           "db/setting/accessibility/screen_reader/description"
+#define VCKEY_LIST_GRID_INFORMATION "db/setting/accessibility/screen_reader/list_grid_information"
+#define VCKEY_HAPTIC                "db/setting/accessibility/screen_reader/haptic"
+#define VCKEY_KEYBOARD_FEEDBACK     "db/setting/accessibility/screen_reader/keyboard_feedback"
+#define VCKEY_SOUND_FEEDBACK        "db/setting/accessibility/screen_reader/sound_feedback"
+#define VCKEY_TTS_VOICE             "db/setting/accessibility/screen_reader/tts_voice"
+#define VCKEY_TTS_SPEED             "db/setting/accessibility/screen_reader/tts_speed"
+#define VCKEY_LCD_BACKLIGHT_NORMAL  "db/setting/lcd_backlight_normal"
 
 typedef struct {
        int init;
        int read_description;
+       int read_list_grid_information;
        int haptic;
        int keyboard_feedback;
        int sound_feedback;
@@ -182,6 +184,7 @@ static VConfData *vc_get_instance(void)
 
        vconf_data.init = 1;
        vconf_data.read_description = vcwrap_get_key_int(VCKEY_DESCRIPTION, true);
+       vconf_data.read_list_grid_information = vcwrap_get_key_int(VCKEY_LIST_GRID_INFORMATION, true);
        vconf_data.haptic = vcwrap_get_key_int(VCKEY_HAPTIC, true);
        vconf_data.keyboard_feedback = vcwrap_get_key_int(VCKEY_KEYBOARD_FEEDBACK, true);
        vconf_data.sound_feedback = vcwrap_get_key_int(VCKEY_SOUND_FEEDBACK, true);
@@ -195,6 +198,7 @@ static VConfData *vc_get_instance(void)
        appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE, display_language_changed_cb, NULL);
 
        vcwrap_set_field_updater_int(VCKEY_DESCRIPTION, &(vconf_data.read_description));
+       vcwrap_set_field_updater_int(VCKEY_LIST_GRID_INFORMATION, &(vconf_data.read_list_grid_information));
        vcwrap_set_field_updater_int(VCKEY_HAPTIC, &(vconf_data.haptic));
        vcwrap_set_field_updater_int(VCKEY_KEYBOARD_FEEDBACK, &(vconf_data.keyboard_feedback));
        vcwrap_set_field_updater_int(VCKEY_SOUND_FEEDBACK, &(vconf_data.sound_feedback));
@@ -222,6 +226,7 @@ void vc_exit(void)
        vcwrap_unset_field_updater_int(VCKEY_KEYBOARD_FEEDBACK);
        vcwrap_unset_field_updater_int(VCKEY_HAPTIC);
        vcwrap_unset_field_updater_int(VCKEY_DESCRIPTION);
+       vcwrap_unset_field_updater_int(VCKEY_LIST_GRID_INFORMATION);
        vcwrap_unset_field_updater_int(VCKEY_SOUND_FEEDBACK);
        vcwrap_unset_field_updater_int(VCKEY_LCD_BACKLIGHT_NORMAL);
        vcwrap_unset_field_updater_int(VCKEY_TTS_SPEED);
@@ -236,6 +241,11 @@ int vc_get_read_description(void)
        return vc_get_instance()->read_description;
 }
 
+int vc_get_read_list_grid_information(void)
+{
+       return vc_get_instance()->read_list_grid_information;
+}
+
 int vc_get_haptic(void)
 {
        return vc_get_instance()->haptic;
index 2f29b4221a2f45afc085d40192139693fe4a7a4e..d69ccb9d720edd69ec3b605168a9ca613fbf7606 100644 (file)
@@ -307,3 +307,72 @@ Live_Region_Politeness try_parse_politeness(GHashTable *attrs, Eina_Bool asserti
        DEBUG("speaking politeness mode is %d", mode);
        return mode;
 }
+
+Eina_Bool object_get_position_in_table(AtspiAccessible *object, int *row, int *column, gchar **table_unique_id, int *table_row_count, int *table_column_count, gchar **table_caption)
+{
+       if (!object || !row || !column || !table_unique_id)
+               return EINA_FALSE;
+
+       AtspiTableCell *table_cell = atspi_accessible_get_table_cell(object);
+       if (!table_cell) {
+               DEBUG("object is not a table cell");
+               return EINA_FALSE;
+       }
+
+       int row_span, column_span;
+       GError *err = NULL;
+       atspi_table_cell_get_row_column_span(table_cell, row, column, &row_span, &column_span, &err);
+
+       if (err) {
+               ERROR("failed to get cell position in table");
+               GERROR_CHECK(err);
+               g_object_unref(table_cell);
+               return EINA_FALSE;
+       }
+
+       if (row < 0 || column < 0) {
+               ERROR("invalid cell position in table");
+               g_object_unref(table_cell);
+               return EINA_FALSE;
+       }
+
+       AtspiTable *table = atspi_table_cell_get_table(table_cell, NULL);
+       if (!table) {
+               ERROR("table cell object is not in table");
+               g_object_unref(table_cell);
+               return EINA_FALSE;
+       }
+
+       if (table_row_count && table_column_count && table_caption) {
+               *table_row_count = atspi_table_get_n_rows(table, NULL);
+
+               if (table_row_count < 0) {
+                       ERROR("invalid row count in table");
+                       g_object_unref(table_cell);
+                       g_object_unref(table);
+                       return EINA_FALSE;
+               }
+
+               *table_column_count = atspi_table_get_n_columns(table, NULL);
+
+               if (table_column_count < 0) {
+                       ERROR("invalid column count in table");
+                       g_object_unref(table_cell);
+                       g_object_unref(table);
+                       return EINA_FALSE;
+               }
+
+               AtspiAccessible* caption_object = atspi_table_get_caption(table, NULL);
+               if (caption_object) {
+                       *table_caption = atspi_accessible_get_name(caption_object, NULL);
+                       g_object_unref(caption_object);
+               }
+       }
+
+       *table_unique_id = atspi_accessible_get_unique_id(table, NULL);
+
+       g_object_unref(table);
+       g_object_unref(table_cell);
+
+       return EINA_TRUE;
+}