You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
7.7 KiB
227 lines
7.7 KiB
#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 )
|
|
}
|