diff options
author | Jan-Arve Saether <jan-arve.saether@nokia.com> | 2012-08-08 16:06:33 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-14 03:56:55 +0200 |
commit | 2cb9ded6eca80aa0852ddfefaf6899ccb913c556 (patch) | |
tree | b0043d91d9d602c449341a271681630bb670c097 /src/plugins/accessible/widgets/qaccessiblewidgets.h | |
parent | 59117012f27355830ceda4fc7f9e5f637d07fcc9 (diff) |
Implemented QAccessibleTextWidget
A new class called QAccessibleTextWidget was added.
This class should implement all methods of QAccessibleTextInterface and
QAccessibleEditableTextInterface which only need a QTextCursor, and it
defines two pure virtual methods, to obtain and set the text cursor, so
accessible implementations of widgets which use a text cursor can implement
these two methods.
QAccessibleTextEdit is now a subclass of QAccessibleTextWidget and most of
its methods were moved to QAccessibleTextWidget.
This is a forward port of ba5d7d608cc31fc63354fd74d85a1bad7780fc45 from
Qt 4.8, and is a prerequisite for forward-porting QPlainTextEdit
Change-Id: I6093c4fa7e0a77b84de779479c6074db006efec1
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Diffstat (limited to 'src/plugins/accessible/widgets/qaccessiblewidgets.h')
-rw-r--r-- | src/plugins/accessible/widgets/qaccessiblewidgets.h | 59 |
1 files changed, 44 insertions, 15 deletions
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h index dba645570a..e403465ba3 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.h +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h @@ -48,6 +48,7 @@ #ifndef QT_NO_ACCESSIBILITY #include <QtCore/QPointer> +#include <QtCore/QPair> QT_BEGIN_NAMESPACE @@ -63,19 +64,16 @@ class QAbstractItemView; class QDockWidget; class QDockWidgetLayout; class QMainWindow; +class QTextCursor; +class QTextDocument; -#ifndef QT_NO_TEXTEDIT -class QAccessibleTextEdit : public QAccessibleWidget, public QAccessibleTextInterface, - public QAccessibleEditableTextInterface +#ifndef QT_NO_CURSOR +class QAccessibleTextWidget : public QAccessibleWidget, + public QAccessibleTextInterface, + public QAccessibleEditableTextInterface { public: - explicit QAccessibleTextEdit(QWidget *o); - - QString text(QAccessible::Text t) const; - void setText(QAccessible::Text t, const QString &text); - QAccessible::State state() const; - - void *interface_cast(QAccessible::InterfaceType t); + QAccessibleTextWidget(QWidget *o, QAccessible::Role r = QAccessible::EditableText, const QString &name = QString()); // QAccessibleTextInterface void addSelection(int startOffset, int endOffset); @@ -86,17 +84,17 @@ public: int offsetAtPoint(const QPoint &point) const; void selection(int selectionIndex, int *startOffset, int *endOffset) const; QString text(int startOffset, int endOffset) const; - QString textBeforeOffset (int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; + QString textBeforeOffset(int offset, QAccessible2::BoundaryType boundaryType, + int *startOffset, int *endOffset) const; QString textAfterOffset(int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; + int *startOffset, int *endOffset) const; QString textAtOffset(int offset, QAccessible2::BoundaryType boundaryType, - int *startOffset, int *endOffset) const; + int *startOffset, int *endOffset) const; void removeSelection(int selectionIndex); void setCursorPosition(int position); void setSelection(int selectionIndex, int startOffset, int endOffset); int characterCount() const; - void scrollToSubstring(int startIndex, int endIndex); + // QAccessibleEditableTextInterface void deleteText(int startOffset, int endOffset); @@ -104,8 +102,39 @@ public: void replaceText(int startOffset, int endOffset, const QString &text); protected: + QTextCursor textCursorForRange(int startOffset, int endOffset) const; + QPair<int, int> getBoundaries(int offset, QAccessible2::BoundaryType boundaryType) const; + virtual QPoint scrollBarsCurrentPosition() const; + virtual QTextCursor textCursor() const = 0; + virtual void setTextCursor(const QTextCursor &) = 0; + virtual QTextDocument *textDocument() const = 0; + virtual QWidget *viewport() const = 0; +}; +#endif //QT_NO_CURSOR + +#ifndef QT_NO_TEXTEDIT +class QAccessibleTextEdit : public QAccessibleTextWidget +{ +public: + explicit QAccessibleTextEdit(QWidget *o); + + QString text(QAccessible::Text t) const; + void setText(QAccessible::Text t, const QString &text); + QAccessible::State state() const; + + void *interface_cast(QAccessible::InterfaceType t); + + // QAccessibleTextInterface + void scrollToSubstring(int startIndex, int endIndex); + +protected: QTextEdit *textEdit() const; + QPoint scrollBarsCurrentPosition() const; + QTextCursor textCursor() const; + void setTextCursor(const QTextCursor &textCursor); + QTextDocument *textDocument() const; + QWidget *viewport() const; private: int childOffset; }; |