summaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible/widgets/qaccessiblewidgets.h
diff options
context:
space:
mode:
authorJan-Arve Saether <jan-arve.saether@nokia.com>2012-08-08 16:06:33 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-14 03:56:55 +0200
commit2cb9ded6eca80aa0852ddfefaf6899ccb913c556 (patch)
treeb0043d91d9d602c449341a271681630bb670c097 /src/plugins/accessible/widgets/qaccessiblewidgets.h
parent59117012f27355830ceda4fc7f9e5f637d07fcc9 (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.h59
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;
};