qaccessible2.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:8k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QACCESSIBLE2_H
  38. #define QACCESSIBLE2_H
  39. #include <QtGui/qaccessible.h>
  40. QT_BEGIN_HEADER
  41. QT_BEGIN_NAMESPACE
  42. QT_MODULE(Gui)
  43. #ifndef QT_NO_ACCESSIBILITY
  44. namespace QAccessible2
  45. {
  46.     enum CoordinateType
  47.     {
  48.         RelativeToScreen = 0,
  49.         RelativeToParent = 1
  50.     };
  51.     enum BoundaryType {
  52.         CharBoundary,
  53.         WordBoundary,
  54.         SentenceBoundary,
  55.         ParagraphBoundary,
  56.         LineBoundary,
  57.         NoBoundary
  58.     };
  59. }
  60. class Q_GUI_EXPORT QAccessible2Interface
  61. {
  62. public:
  63.     virtual ~QAccessible2Interface() {}
  64. };
  65. // catch-all functions. If an accessible class doesn't implement interface T, return 0
  66. inline QAccessible2Interface *qAccessibleValueCastHelper() { return 0; }
  67. inline QAccessible2Interface *qAccessibleTextCastHelper() { return 0; }
  68. inline QAccessible2Interface *qAccessibleEditableTextCastHelper() { return 0; }
  69. inline QAccessible2Interface *qAccessibleTableCastHelper() { return 0; }
  70. #define Q_ACCESSIBLE_OBJECT 
  71.     public: 
  72.     QAccessible2Interface *interface_cast(QAccessible2::InterfaceType t) 
  73.     { 
  74.         switch (t) { 
  75.         case QAccessible2::TextInterface: 
  76.             return qAccessibleTextCastHelper(); 
  77.         case QAccessible2::EditableTextInterface: 
  78.             return qAccessibleEditableTextCastHelper(); 
  79.         case QAccessible2::ValueInterface: 
  80.             return qAccessibleValueCastHelper(); 
  81.         case QAccessible2::TableInterface: 
  82.             return qAccessibleTableCastHelper(); 
  83.         } 
  84.         return 0; 
  85.     } 
  86.     private:
  87. class Q_GUI_EXPORT QAccessibleTextInterface: public QAccessible2Interface
  88. {
  89. public:
  90.     inline QAccessible2Interface *qAccessibleTextCastHelper() { return this; }
  91.     virtual ~QAccessibleTextInterface() {}
  92.     virtual void addSelection(int startOffset, int endOffset) = 0;
  93.     virtual QString attributes(int offset, int *startOffset, int *endOffset) = 0;
  94.     virtual int cursorPosition() = 0;
  95.     virtual QRect characterRect(int offset, QAccessible2::CoordinateType coordType) = 0;
  96.     virtual int selectionCount() = 0;
  97.     virtual int offsetAtPoint(const QPoint &point, QAccessible2::CoordinateType coordType) = 0;
  98.     virtual void selection(int selectionIndex, int *startOffset, int *endOffset) = 0;
  99.     virtual QString text(int startOffset, int endOffset) = 0;
  100.     virtual QString textBeforeOffset (int offset, QAccessible2::BoundaryType boundaryType,
  101.                               int *startOffset, int *endOffset) = 0;
  102.     virtual QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType,
  103.                             int *startOffset, int *endOffset) = 0;
  104.     virtual QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType,
  105.                          int *startOffset, int *endOffset) = 0;
  106.     virtual void removeSelection(int selectionIndex) = 0;
  107.     virtual void setCursorPosition(int position) = 0;
  108.     virtual void setSelection(int selectionIndex, int startOffset, int endOffset) = 0;
  109.     virtual int characterCount() = 0;
  110.     virtual void scrollToSubstring(int startIndex, int endIndex) = 0;
  111. };
  112. class Q_GUI_EXPORT QAccessibleEditableTextInterface: public QAccessible2Interface
  113. {
  114. public:
  115.     inline QAccessible2Interface *qAccessibleEditableTextCastHelper() { return this; }
  116.     virtual ~QAccessibleEditableTextInterface() {}
  117.     virtual void copyText(int startOffset, int endOffset) = 0;
  118.     virtual void deleteText(int startOffset, int endOffset) = 0;
  119.     virtual void insertText(int offset, const QString &text) = 0;
  120.     virtual void cutText(int startOffset, int endOffset) = 0;
  121.     virtual void pasteText(int offset) = 0;
  122.     virtual void replaceText(int startOffset, int endOffset, const QString &text) = 0;
  123.     virtual void setAttributes(int startOffset, int endOffset, const QString &attributes) = 0;
  124. };
  125. class Q_GUI_EXPORT QAccessibleSimpleEditableTextInterface: public QAccessibleEditableTextInterface
  126. {
  127. public:
  128.     QAccessibleSimpleEditableTextInterface(QAccessibleInterface *accessibleInterface);
  129.     void copyText(int startOffset, int endOffset);
  130.     void deleteText(int startOffset, int endOffset);
  131.     void insertText(int offset, const QString &text);
  132.     void cutText(int startOffset, int endOffset);
  133.     void pasteText(int offset);
  134.     void replaceText(int startOffset, int endOffset, const QString &text);
  135.     inline void setAttributes(int, int, const QString &) {}
  136. private:
  137.     QAccessibleInterface *iface;
  138. };
  139. class Q_GUI_EXPORT QAccessibleValueInterface: public QAccessible2Interface
  140. {
  141. public:
  142.     inline QAccessible2Interface *qAccessibleValueCastHelper() { return this; }
  143.     virtual ~QAccessibleValueInterface() {}
  144.     virtual QVariant currentValue() = 0;
  145.     virtual void setCurrentValue(const QVariant &value) = 0;
  146.     virtual QVariant maximumValue() = 0;
  147.     virtual QVariant minimumValue() = 0;
  148. };
  149. class Q_GUI_EXPORT QAccessibleTableInterface: public QAccessible2Interface
  150. {
  151. public:
  152.     inline QAccessible2Interface *qAccessibleTableCastHelper() { return this; }
  153.     virtual QAccessibleInterface *accessibleAt(int row, int column) = 0;
  154.     virtual QAccessibleInterface *caption() = 0;
  155.     virtual int childIndex(int rowIndex, int columnIndex) = 0;
  156.     virtual QString columnDescription(int column) = 0;
  157.     virtual int columnSpan(int row, int column) = 0;
  158.     virtual QAccessibleInterface *columnHeader() = 0;
  159.     virtual int columnIndex(int childIndex) = 0;
  160.     virtual int columnCount() = 0;
  161.     virtual int rowCount() = 0;
  162.     virtual int selectedColumnCount() = 0;
  163.     virtual int selectedRowCount() = 0;
  164.     virtual QString rowDescription(int row) = 0;
  165.     virtual int rowSpan(int row, int column) = 0;
  166.     virtual QAccessibleInterface *rowHeader() = 0;
  167.     virtual int rowIndex(int childIndex) = 0;
  168.     virtual int selectedRows(int maxRows, QList<int> *rows) = 0;
  169.     virtual int selectedColumns(int maxColumns, QList<int> *columns) = 0;
  170.     virtual QAccessibleInterface *summary() = 0;
  171.     virtual bool isColumnSelected(int column) = 0;
  172.     virtual bool isRowSelected(int row) = 0;
  173.     virtual bool isSelected(int row, int column) = 0;
  174.     virtual void selectRow(int row) = 0;
  175.     virtual void selectColumn(int column) = 0;
  176.     virtual void unselectRow(int row) = 0;
  177.     virtual void unselectColumn(int column) = 0;
  178.     virtual void cellAtIndex(int index, int *row, int *column, int *rowSpan,
  179.                              int *columnSpan, bool *isSelected) = 0;
  180. };
  181. #endif // QT_NO_ACCESSIBILITY
  182. QT_END_NAMESPACE
  183. QT_END_HEADER
  184. #endif