summaryrefslogtreecommitdiffstats
path: root/plugins/src/accessible/widgets/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/src/accessible/widgets/main.cpp')
-rw-r--r--plugins/src/accessible/widgets/main.cpp226
1 files changed, 226 insertions, 0 deletions
diff --git a/plugins/src/accessible/widgets/main.cpp b/plugins/src/accessible/widgets/main.cpp
new file mode 100644
index 0000000..616499d
--- /dev/null
+++ b/plugins/src/accessible/widgets/main.cpp
@@ -0,0 +1,226 @@
+#include "qaccessiblewidget.h"
+#include "qaccessiblemenu.h"
+
+#include <qtoolbutton.h>
+#include <qtoolbar.h>
+#include <qvariant.h>
+
+class AccessibleFactory : public QAccessibleFactoryInterface, public QLibraryInterface
+{
+public:
+ AccessibleFactory();
+
+ QRESULT queryInterface( const QUuid &, QUnknownInterface **iface );
+ Q_REFCOUNT
+
+ QStringList featureList() const;
+ QRESULT createAccessibleInterface( const QString &classname, QObject *object, QAccessibleInterface **iface );
+
+ bool init();
+ void cleanup();
+ bool canUnload() const;
+};
+
+AccessibleFactory::AccessibleFactory()
+{
+}
+
+QRESULT AccessibleFactory::queryInterface( const QUuid &iid, QUnknownInterface **iface )
+{
+ *iface = 0;
+ if ( iid == IID_QUnknown )
+ *iface = (QUnknownInterface*)(QFeatureListInterface*)(QAccessibleFactoryInterface*)this;
+ else if ( iid == IID_QFeatureList )
+ *iface = (QFeatureListInterface*)this;
+ else if ( iid == IID_QAccessibleFactory )
+ *iface = (QAccessibleFactoryInterface*)this;
+ else if ( iid == IID_QLibrary )
+ *iface = (QLibraryInterface*)this;
+ else
+ return QE_NOINTERFACE;
+
+ (*iface)->addRef();
+ return QS_OK;
+}
+
+QStringList AccessibleFactory::featureList() const
+{
+ QStringList list;
+ list << "QLineEdit";
+ list << "QComboBox";
+ list << "QSpinBox";
+ list << "QSpinWidget";
+ list << "QDial";
+ list << "QScrollBar";
+ list << "QSlider";
+ list << "QToolButton";
+ list << "QCheckBox";
+ list << "QRadioButton";
+ list << "QButton";
+ list << "QViewportWidget";
+ list << "QClipperWidget";
+ list << "QTextEdit";
+#ifndef QT_NO_ICONVIEW
+ list << "QIconView";
+#endif
+ list << "QListView";
+ list << "QListBox";
+ list << "QTable";
+ list << "QDialog";
+ list << "QMessageBox";
+ list << "QMainWindow";
+ list << "QLabel";
+ list << "QGroupBox";
+ list << "QStatusBar";
+ list << "QProgressBar";
+ list << "QToolBar";
+ list << "QMenuBar";
+ list << "QPopupMenu";
+ list << "QHeader";
+ list << "QTabBar";
+ list << "QTitleBar";
+ list << "QWorkspaceChild";
+ list << "QSizeGrip";
+ list << "QSplitterHandle";
+ list << "QToolBarSeparator";
+ list << "QDockWindowHandle";
+ list << "QDockWindowResizeHandle";
+ list << "QTipLabel";
+ list << "QFrame";
+ list << "QWidgetStack";
+ list << "QWidget";
+ list << "QScrollView";
+
+ return list;
+}
+
+QRESULT AccessibleFactory::createAccessibleInterface( const QString &classname, QObject *object, QAccessibleInterface **iface )
+{
+ *iface = 0;
+
+ if ( classname == "QLineEdit" ) {
+ *iface = new QAccessibleText( object, EditableText );
+ } else if ( classname == "QComboBox" ) {
+ *iface = new QAccessibleComboBox( object );
+ } else if ( classname == "QSpinBox" ) {
+ *iface = new QAccessibleRangeControl( object, SpinBox );
+ } else if ( classname == "QSpinWidget" ) {
+ *iface = new QAccessibleSpinWidget( object );
+ } else if ( classname == "QDial" ) {
+ *iface = new QAccessibleRangeControl( object, Dial );
+ } else if ( classname == "QScrollBar" ) {
+ *iface = new QAccessibleScrollBar( object );
+ } else if ( classname == "QSlider" ) {
+ *iface = new QAccessibleSlider( object );
+ } else if ( classname == "QToolButton" ) {
+ QToolButton *tb = (QToolButton*)object;
+ if ( !tb->popup() )
+ *iface = new QAccessibleButton( object, PushButton );
+ else if ( !tb->popupDelay() )
+ *iface = new QAccessibleButton( object, ButtonDropDown );
+ else
+ *iface = new QAccessibleButton( object, ButtonMenu );
+ } else if ( classname == "QCheckBox" ) {
+ *iface = new QAccessibleButton( object, CheckBox );
+ } else if ( classname == "QRadioButton" ) {
+ *iface = new QAccessibleButton( object, RadioButton );
+ } else if ( classname == "QButton" ) {
+ *iface = new QAccessibleButton( object, PushButton );
+ } else if ( classname == "QViewportWidget" ) {
+ *iface = new QAccessibleViewport( object, object->parent() );
+ } else if ( classname == "QClipperWidget" ) {
+ *iface = new QAccessibleViewport( object, object->parent()->parent() );
+ } else if ( classname == "QTextEdit" ) {
+ *iface = new QAccessibleTextEdit( object );
+#ifndef QT_NO_ICONVIEW
+ } else if ( classname == "QIconView" ) {
+ *iface = new QAccessibleIconView( object );
+#endif
+ } else if ( classname == "QListView" ) {
+ *iface = new QAccessibleListView( object );
+ } else if ( classname == "QListBox" ) {
+ *iface = new QAccessibleListBox( object );
+ } else if ( classname == "QTable" ) {
+ *iface = new QAccessibleScrollView( object, Table );
+ } else if ( classname == "QDialog" ) {
+ *iface = new QAccessibleWidget( object, Dialog );
+ } else if ( classname == "QMessageBox" ) {
+ *iface = new QAccessibleWidget( object, AlertMessage );
+ } else if ( classname == "QMainWindow" ) {
+ *iface = new QAccessibleWidget( object, Application );
+ } else if ( classname == "QLabel" || classname == "QLCDNumber" ) {
+ *iface = new QAccessibleDisplay( object, StaticText );
+ } else if ( classname == "QGroupBox" ) {
+ *iface = new QAccessibleDisplay( object, Grouping );
+ } else if ( classname == "QStatusBar" ) {
+ *iface = new QAccessibleWidget( object, StatusBar );
+ } else if ( classname == "QProgressBar" ) {
+ *iface = new QAccessibleRangeControl( object, ProgressBar );
+ } else if ( classname == "QToolBar" ) {
+ QToolBar *tb = (QToolBar*)object;
+ *iface = new QAccessibleWidget( object, ToolBar, tb->label() );
+ } else if ( classname == "QMenuBar" ) {
+ *iface = new QAccessibleMenuBar( object );
+ } else if ( classname == "QPopupMenu" ) {
+ *iface = new QAccessiblePopup( object );
+ } else if ( classname == "QHeader" ) {
+ *iface = new QAccessibleHeader( object );
+ } else if ( classname == "QTabBar" ) {
+ *iface = new QAccessibleTabBar( object );
+ } else if ( classname == "QTitleBar" ) {
+ *iface = new QAccessibleTitleBar( object );
+ } else if ( classname == "QWorkspaceChild" ) {
+ *iface = new QAccessibleWidget( object, Window );
+ } else if ( classname == "QSizeGrip" ) {
+ *iface = new QAccessibleWidget( object, Grip );
+ } else if ( classname == "QSplitterHandle" ) {
+ *iface = new QAccessibleWidget( object, Separator, QString::null,
+ QString::null, QString::null, QString::null,
+ QString::null, QString::null, QAccessible::Moveable );
+ } else if ( classname == "QToolBarSeparator" ) {
+ *iface = new QAccessibleWidget( object, QAccessible::Separator, QString::null,
+ QString::null, QString::null, QString::null,
+ QString::null, QString::null, QAccessible::Unavailable );
+ } else if ( classname == "QDockWindowHandle" ) {
+ *iface = new QAccessibleWidget( object, QAccessible::Grip, object->property( "caption" ).toString(),
+ QString::null, QString::null, QString::null,
+ QString::null, QString::null, QAccessible::Moveable );
+ } else if ( classname == "QDockWindowResizeHandle" ) {
+ *iface = new QAccessibleWidget( object, QAccessible::Separator, QString::null,
+ QString::null, QString::null, QString::null,
+ QString::null, QString::null, QAccessible::Moveable );
+ } else if ( classname == "QTipLabel" ) {
+ *iface = new QAccessibleWidget( object, ToolTip );
+ } else if ( classname == "QFrame" ) {
+ *iface = new QAccessibleWidget( object, Border );
+ } else if ( classname == "QWidgetStack" ) {
+ *iface = new QAccessibleWidgetStack( object );
+ } else if ( classname == "QWidget" ) {
+ *iface = new QAccessibleWidget( object );
+ } else if ( classname == "QScrollView" ) {
+ *iface = new QAccessibleScrollView( object, Client );
+ } else
+ return QE_NOINTERFACE;
+
+ (*iface)->addRef();
+ return QS_OK;
+}
+
+bool AccessibleFactory::init()
+{
+ return TRUE;
+}
+
+void AccessibleFactory::cleanup()
+{
+}
+
+bool AccessibleFactory::canUnload() const
+{
+ return (QAccessibleWidget::objects == 0);
+}
+
+Q_EXPORT_COMPONENT()
+{
+ Q_CREATE_INSTANCE( AccessibleFactory )
+}