/** *MapaUNOaccessibleroletoanIAccessible2role. *@paramnUnoRoleTheUNOrole(css::accessibility::AccessibleRole). *@returnIAccessible2role.
*/ short lcl_mapToIAccessible2Role(sal_Int16 nUnoRole)
{ switch(nUnoRole)
{ case css::accessibility::AccessibleRole::UNKNOWN: return IA2_ROLE_UNKNOWN; case css::accessibility::AccessibleRole::ALERT: return ROLE_SYSTEM_DIALOG; case css::accessibility::AccessibleRole::BLOCK_QUOTE: return IA2_ROLE_BLOCK_QUOTE; case css::accessibility::AccessibleRole::COLUMN_HEADER: return ROLE_SYSTEM_COLUMNHEADER; case css::accessibility::AccessibleRole::CANVAS: return IA2_ROLE_CANVAS; case css::accessibility::AccessibleRole::CHECK_BOX: return ROLE_SYSTEM_CHECKBUTTON; case css::accessibility::AccessibleRole::CHECK_MENU_ITEM: return IA2_ROLE_CHECK_MENU_ITEM; case css::accessibility::AccessibleRole::COLOR_CHOOSER: return IA2_ROLE_COLOR_CHOOSER; case css::accessibility::AccessibleRole::COMBO_BOX: return ROLE_SYSTEM_COMBOBOX; case css::accessibility::AccessibleRole::DATE_EDITOR: return IA2_ROLE_DATE_EDITOR; case css::accessibility::AccessibleRole::DESKTOP_ICON: return IA2_ROLE_DESKTOP_ICON; case css::accessibility::AccessibleRole::DESKTOP_PANE: return IA2_ROLE_DESKTOP_PANE; case css::accessibility::AccessibleRole::DIRECTORY_PANE: return IA2_ROLE_DIRECTORY_PANE; case css::accessibility::AccessibleRole::DIALOG: return ROLE_SYSTEM_DIALOG; case css::accessibility::AccessibleRole::DOCUMENT: return ROLE_SYSTEM_DOCUMENT; case css::accessibility::AccessibleRole::EMBEDDED_OBJECT: return IA2_ROLE_EMBEDDED_OBJECT; case css::accessibility::AccessibleRole::END_NOTE: return IA2_ROLE_ENDNOTE; case css::accessibility::AccessibleRole::FILE_CHOOSER: return IA2_ROLE_FILE_CHOOSER; case css::accessibility::AccessibleRole::FILLER: return ROLE_SYSTEM_WHITESPACE; case css::accessibility::AccessibleRole::FONT_CHOOSER: return IA2_ROLE_FONT_CHOOSER; case css::accessibility::AccessibleRole::FOOTER: return IA2_ROLE_FOOTER; case css::accessibility::AccessibleRole::FOOTNOTE: return IA2_ROLE_FOOTNOTE; case css::accessibility::AccessibleRole::FRAME: return IA2_ROLE_FRAME; case css::accessibility::AccessibleRole::GLASS_PANE: return IA2_ROLE_GLASS_PANE; case css::accessibility::AccessibleRole::GRAPHIC: return ROLE_SYSTEM_GRAPHIC; case css::accessibility::AccessibleRole::GROUP_BOX: return ROLE_SYSTEM_GROUPING; case css::accessibility::AccessibleRole::HEADER: return IA2_ROLE_HEADER; case css::accessibility::AccessibleRole::HEADING: return IA2_ROLE_HEADING; case css::accessibility::AccessibleRole::HYPER_LINK: return ROLE_SYSTEM_TEXT; case css::accessibility::AccessibleRole::ICON: return IA2_ROLE_ICON; case css::accessibility::AccessibleRole::INTERNAL_FRAME: return IA2_ROLE_INTERNAL_FRAME; case css::accessibility::AccessibleRole::LABEL: return ROLE_SYSTEM_STATICTEXT; case css::accessibility::AccessibleRole::LAYERED_PANE: return IA2_ROLE_LAYERED_PANE; case css::accessibility::AccessibleRole::LIST: return ROLE_SYSTEM_LIST; case css::accessibility::AccessibleRole::LIST_ITEM: return ROLE_SYSTEM_LISTITEM; case css::accessibility::AccessibleRole::MENU: return ROLE_SYSTEM_MENUITEM; case css::accessibility::AccessibleRole::MENU_BAR: return ROLE_SYSTEM_MENUBAR; case css::accessibility::AccessibleRole::MENU_ITEM: return ROLE_SYSTEM_MENUITEM; case css::accessibility::AccessibleRole::OPTION_PANE: return IA2_ROLE_OPTION_PANE; case css::accessibility::AccessibleRole::PAGE_TAB: return ROLE_SYSTEM_PAGETAB; case css::accessibility::AccessibleRole::PAGE_TAB_LIST: return ROLE_SYSTEM_PAGETABLIST; case css::accessibility::AccessibleRole::PANEL: return IA2_ROLE_OPTION_PANE; case css::accessibility::AccessibleRole::PARAGRAPH: return IA2_ROLE_PARAGRAPH; case css::accessibility::AccessibleRole::PASSWORD_TEXT: return ROLE_SYSTEM_TEXT; case css::accessibility::AccessibleRole::POPUP_MENU: return ROLE_SYSTEM_MENUPOPUP; case css::accessibility::AccessibleRole::PUSH_BUTTON: return ROLE_SYSTEM_PUSHBUTTON; case css::accessibility::AccessibleRole::PROGRESS_BAR: return ROLE_SYSTEM_PROGRESSBAR; case css::accessibility::AccessibleRole::RADIO_BUTTON: return ROLE_SYSTEM_RADIOBUTTON; case css::accessibility::AccessibleRole::RADIO_MENU_ITEM: return IA2_ROLE_RADIO_MENU_ITEM; case css::accessibility::AccessibleRole::ROW_HEADER: return ROLE_SYSTEM_ROWHEADER; case css::accessibility::AccessibleRole::ROOT_PANE: return IA2_ROLE_ROOT_PANE; case css::accessibility::AccessibleRole::SCROLL_BAR: return ROLE_SYSTEM_SCROLLBAR; case css::accessibility::AccessibleRole::SCROLL_PANE: return IA2_ROLE_SCROLL_PANE; case css::accessibility::AccessibleRole::SHAPE: return IA2_ROLE_SHAPE; case css::accessibility::AccessibleRole::SEPARATOR: return ROLE_SYSTEM_SEPARATOR; case css::accessibility::AccessibleRole::SLIDER: return ROLE_SYSTEM_SLIDER; case css::accessibility::AccessibleRole::SPIN_BOX: return ROLE_SYSTEM_SPINBUTTON; case css::accessibility::AccessibleRole::SPLIT_PANE: return IA2_ROLE_SPLIT_PANE; case css::accessibility::AccessibleRole::STATUS_BAR: return ROLE_SYSTEM_STATUSBAR; case css::accessibility::AccessibleRole::TABLE: return ROLE_SYSTEM_TABLE; case css::accessibility::AccessibleRole::TABLE_CELL: return ROLE_SYSTEM_CELL; case css::accessibility::AccessibleRole::TEXT: return ROLE_SYSTEM_TEXT; case css::accessibility::AccessibleRole::TEXT_FRAME: return IA2_ROLE_TEXT_FRAME; case css::accessibility::AccessibleRole::TOGGLE_BUTTON: return ROLE_SYSTEM_PUSHBUTTON; case css::accessibility::AccessibleRole::TOOL_BAR: return ROLE_SYSTEM_TOOLBAR; case css::accessibility::AccessibleRole::TOOL_TIP: return ROLE_SYSTEM_TOOLTIP; case css::accessibility::AccessibleRole::TREE: return ROLE_SYSTEM_OUTLINE; case css::accessibility::AccessibleRole::VIEW_PORT: return IA2_ROLE_VIEW_PORT; case css::accessibility::AccessibleRole::WINDOW: return ROLE_SYSTEM_WINDOW; case css::accessibility::AccessibleRole::BUTTON_DROPDOWN: return ROLE_SYSTEM_BUTTONDROPDOWN; case css::accessibility::AccessibleRole::BUTTON_MENU: return ROLE_SYSTEM_BUTTONMENU; case css::accessibility::AccessibleRole::CAPTION: return IA2_ROLE_CAPTION; case css::accessibility::AccessibleRole::CHART: return IA2_ROLE_SHAPE; case css::accessibility::AccessibleRole::EDIT_BAR: return IA2_ROLE_EDITBAR; case css::accessibility::AccessibleRole::FORM: return IA2_ROLE_FORM; case css::accessibility::AccessibleRole::IMAGE_MAP: return IA2_ROLE_IMAGE_MAP; case css::accessibility::AccessibleRole::NOTE: return IA2_ROLE_NOTE; case css::accessibility::AccessibleRole::PAGE: return IA2_ROLE_PAGE; case css::accessibility::AccessibleRole::RULER: return IA2_ROLE_RULER; case css::accessibility::AccessibleRole::SECTION: return IA2_ROLE_SECTION; case css::accessibility::AccessibleRole::TREE_ITEM: return ROLE_SYSTEM_OUTLINEITEM; case css::accessibility::AccessibleRole::TREE_TABLE: return ROLE_SYSTEM_OUTLINE; case css::accessibility::AccessibleRole::COMMENT: return IA2_ROLE_TEXT_FRAME; case css::accessibility::AccessibleRole::COMMENT_END: return IA2_ROLE_TEXT_FRAME; case css::accessibility::AccessibleRole::DOCUMENT_PRESENTATION: return ROLE_SYSTEM_DOCUMENT; case css::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET: return ROLE_SYSTEM_DOCUMENT; case css::accessibility::AccessibleRole::DOCUMENT_TEXT: return ROLE_SYSTEM_DOCUMENT; case css::accessibility::AccessibleRole::STATIC: return ROLE_SYSTEM_STATICTEXT; case css::accessibility::AccessibleRole::NOTIFICATION: return ROLE_SYSTEM_ALERT; default:
SAL_WARN("iacc2", "Unmapped role: " << nUnoRole); return IA2_ROLE_UNKNOWN;
}
}
};
/** *SetvaluepropertyviapAny. *@parampAnyNewvalue. *@return
*/ void AccObject::SetValue( Any pAny )
{ if (!m_xAccContextRef.is())
{
assert(false); return ;
}
Reference< XAccessibleText > pRText(m_xAccContextRef,UNO_QUERY);
OUString val; switch(m_accRole)
{ case AccessibleRole::SPIN_BOX: // 3. date editor's msaa value should be the same as spinbox case AccessibleRole::DATE_EDITOR: case AccessibleRole::TEXT: case AccessibleRole::BLOCK_QUOTE: case AccessibleRole::PARAGRAPH: case AccessibleRole::HEADING: case AccessibleRole::TABLE_CELL:
if(pRText)
{
val = pRText->getText();
}
m_pIMAcc->Put_XAccValue( o3tl::toW(val.getStr()) ); break; case AccessibleRole::TREE_ITEM: //case CHECK_BOX: //Commented by Li Xing to disable the value for general checkbox case AccessibleRole::COMBO_BOX: case AccessibleRole::NOTE: case AccessibleRole::SCROLL_BAR:
m_pIMAcc->Put_XAccValue( o3tl::toW(GetMAccessibleValueFromAny(pAny).getStr()) ); break ; // Added by Li Xing, only the checkbox in tree should have the value. case AccessibleRole::CHECK_BOX: if( ( m_pParentObj !=nullptr ) && (AccessibleRole::TREE == m_pParentObj->m_accRole || AccessibleRole::TREE_ITEM == m_pParentObj->m_accRole ))
m_pIMAcc->Put_XAccValue( o3tl::toW(GetMAccessibleValueFromAny(pAny).getStr()) ); break; default: break;
}
switch( nState )
{ case AccessibleStateType::BUSY: return STATE_SYSTEM_BUSY; case AccessibleStateType::CHECKED: if (m_accRole == AccessibleRole::PUSH_BUTTON || m_accRole == AccessibleRole::TOGGLE_BUTTON) return STATE_SYSTEM_PRESSED; return STATE_SYSTEM_CHECKED; case AccessibleStateType::DEFUNC: return STATE_SYSTEM_UNAVAILABLE; case AccessibleStateType::EXPANDED: return STATE_SYSTEM_EXPANDED; case AccessibleStateType::FOCUSABLE: return STATE_SYSTEM_FOCUSABLE; case AccessibleStateType::FOCUSED: return STATE_SYSTEM_FOCUSED; case AccessibleStateType::INDETERMINATE: return STATE_SYSTEM_MIXED; case AccessibleStateType::MULTI_SELECTABLE: return STATE_SYSTEM_MULTISELECTABLE; case AccessibleStateType::PRESSED: return STATE_SYSTEM_PRESSED; case AccessibleStateType::RESIZABLE: return STATE_SYSTEM_SIZEABLE; case AccessibleStateType::SELECTABLE: if (m_accRole == AccessibleRole::MENU || m_accRole == AccessibleRole::MENU_ITEM) return MSAA_NO_STATE; return STATE_SYSTEM_SELECTABLE; case AccessibleStateType::SELECTED: if (m_accRole == AccessibleRole::MENU || m_accRole == AccessibleRole::MENU_ITEM) return MSAA_NO_STATE; return STATE_SYSTEM_SELECTED; case AccessibleStateType::ARMED: return STATE_SYSTEM_FOCUSED; case AccessibleStateType::EXPANDABLE:
{ if (m_accRole == AccessibleRole::PUSH_BUTTON
|| m_accRole == AccessibleRole::TOGGLE_BUTTON
|| m_accRole == AccessibleRole::BUTTON_DROPDOWN) return STATE_SYSTEM_HASPOPUP;
if (!(m_xAccContextRef->getAccessibleStateSet() & AccessibleStateType::EXPANDED)) return STATE_SYSTEM_COLLAPSED;
return MSAA_NO_STATE;
} //Remove the SENSITIVE state mapping. There is no corresponding MSAA state. //case SENSITIVE: // IState = STATE_SYSTEM_PROTECTED; case AccessibleStateType::EDITABLE:
m_pIMAcc->DecreaseState(STATE_SYSTEM_READONLY); return MSAA_NO_STATE; case AccessibleStateType::OFFSCREEN: return STATE_SYSTEM_OFFSCREEN; case AccessibleStateType::MOVEABLE: return STATE_SYSTEM_MOVEABLE; case AccessibleStateType::COLLAPSE: return STATE_SYSTEM_COLLAPSED; break; case AccessibleStateType::DEFAULT: return STATE_SYSTEM_DEFAULT; default: return MSAA_NO_STATE;
}
}
switch(m_accRole)
{ case AccessibleRole::LABEL: case AccessibleRole::STATIC: case AccessibleRole::NOTIFICATION: case AccessibleRole::TEXT: // 2. editable combobox -> readonly ------ bridge case AccessibleRole::EMBEDDED_OBJECT: case AccessibleRole::END_NOTE: case AccessibleRole::FOOTER: case AccessibleRole::FOOTNOTE: case AccessibleRole::GRAPHIC: case AccessibleRole::HEADER: case AccessibleRole::HEADING:
//Image Map case AccessibleRole::BLOCK_QUOTE: case AccessibleRole::PARAGRAPH: case AccessibleRole::PASSWORD_TEXT: case AccessibleRole::SHAPE: case AccessibleRole::SPIN_BOX: case AccessibleRole::TABLE: case AccessibleRole::TABLE_CELL: case AccessibleRole::TEXT_FRAME: case AccessibleRole::DATE_EDITOR: case AccessibleRole::DOCUMENT: case AccessibleRole::COLUMN_HEADER:
{ if(!isEditable)
m_pIMAcc->IncreaseState( STATE_SYSTEM_READONLY );
} break; default: break;
}
if (!isEnable)
m_pIMAcc->IncreaseState( STATE_SYSTEM_UNAVAILABLE );
switch(m_accRole)
{ case AccessibleRole::POPUP_MENU: case AccessibleRole::MENU: if( pContext->getAccessibleChildCount() > 0 )
m_pIMAcc->IncreaseState( STATE_SYSTEM_HASPOPUP ); break; case AccessibleRole::PASSWORD_TEXT:
m_pIMAcc->IncreaseState( STATE_SYSTEM_PROTECTED ); break; default: break;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.