int drv_button(int drvid, void *a0, void* a1, void* a2, void* a3, void* a4, void* a5, void* a6, void* a7, void* a8, void* a9) { handle_head* head = (handle_head*)a0; QPushButton *self = (QPushButton*)head->native; switch (drvid) { case BUTTON_INIT: { drvNewObj(a0,new QPushButton); break; } case BUTTON_SETFLAT: { self->setFlat(drvGetBool(a1)); break; } case BUTTON_ISFLAT: { drvSetBool(a1,self->isFlat()); break; } case BUTTON_SETDEFAULT: { self->setDefault(drvGetBool(a1)); break; } case BUTTON_ISDEFAULT: { drvSetBool(a1,self->isDefault()); break; } case BUTTON_SETMENU: { self->setMenu(drvGetMenu(a1)); break; } case BUTTON_MENU: { drvSetHandle(a1,self->menu()); break; } case BUTTON_ONCLICKED: { QObject::connect(self,SIGNAL(clicked()),drvNewSignal(self,a1,a2),SLOT(call())); break; } default: return 0; } return 1; }
/*! \reimp */ bool QAccessibleButton::doAction(int action, int child, const QVariantList ¶ms) { if (child || !widget()->isEnabled()) return false; switch (action) { case DefaultAction: case Press: { #ifndef QT_NO_MENU QPushButton *pb = qobject_cast<QPushButton*>(object()); if (pb && pb->menu()) pb->showMenu(); else #endif button()->animateClick(); } return true; } return QAccessibleWidgetEx::doAction(action, child, params); }
/*! \reimp */ QAccessible::State QAccessibleButton::state(int child) const { State state = QAccessibleWidgetEx::state(child); QAbstractButton *b = button(); QCheckBox *cb = qobject_cast<QCheckBox *>(b); if (b->isChecked()) state |= Checked; else if (cb && cb->checkState() == Qt::PartiallyChecked) state |= Mixed; if (b->isDown()) state |= Pressed; QPushButton *pb = qobject_cast<QPushButton*>(b); if (pb) { if (pb->isDefault()) state |= DefaultButton; #ifndef QT_NO_MENU if (pb->menu()) state |= HasPopup; #endif } return state; }
QAccessible::State QAccessibleButton::state() const { QAccessible::State state = QAccessibleWidget::state(); QAbstractButton *b = button(); QCheckBox *cb = qobject_cast<QCheckBox *>(b); if (b->isChecked()) state.checked = true; else if (cb && cb->checkState() == Qt::PartiallyChecked) state.checkStateMixed = true; if (b->isDown()) state.pressed = true; QPushButton *pb = qobject_cast<QPushButton*>(b); if (pb) { if (pb->isDefault()) state.defaultButton = true; #ifndef QT_NO_MENU if (pb->menu()) state.hasPopup = true; #endif } return state; }
QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObject *object) { QAccessibleInterface *iface = 0; if (!object || !object->isWidgetType()) return iface; QWidget *widget = static_cast<QWidget*>(object); if (false) { #ifndef QT_NO_LINEEDIT } else if (classname == QLatin1String("QLineEdit")) { iface = new QAccessibleLineEdit(widget); #endif #ifndef QT_NO_COMBOBOX } else if (classname == QLatin1String("QComboBox")) { iface = new QAccessibleComboBox(widget); #endif #ifndef QT_NO_SPINBOX } else if (classname == QLatin1String("QAbstractSpinBox")) { iface = new QAccessibleAbstractSpinBox(widget); } else if (classname == QLatin1String("QSpinBox")) { iface = new QAccessibleSpinBox(widget); } else if (classname == QLatin1String("QDoubleSpinBox")) { iface = new QAccessibleDoubleSpinBox(widget); #endif #ifndef QT_NO_SCROLLBAR } else if (classname == QLatin1String("QScrollBar")) { iface = new QAccessibleScrollBar(widget); #endif } else if (classname == QLatin1String("QAbstractSlider")) { iface = new QAccessibleAbstractSlider(widget); #ifndef QT_NO_SLIDER } else if (classname == QLatin1String("QSlider")) { iface = new QAccessibleSlider(widget); #endif #ifndef QT_NO_TOOLBUTTON } else if (classname == QLatin1String("QToolButton")) { Role role = NoRole; #ifndef QT_NO_MENU QToolButton *tb = qobject_cast<QToolButton*>(widget); if (!tb->menu()) role = tb->isCheckable() ? CheckBox : PushButton; else if (!tb->popupMode() != QToolButton::DelayedPopup) role = ButtonDropDown; else #endif role = ButtonMenu; iface = new QAccessibleToolButton(widget, role); #endif // QT_NO_TOOLBUTTON } else if (classname == QLatin1String("QCheckBox")) { iface = new QAccessibleButton(widget, CheckBox); } else if (classname == QLatin1String("QRadioButton")) { iface = new QAccessibleButton(widget, RadioButton); } else if (classname == QLatin1String("QPushButton")) { Role role = NoRole; QPushButton *pb = qobject_cast<QPushButton*>(widget); #ifndef QT_NO_MENU if (pb->menu()) role = ButtonMenu; else #endif if (pb->isCheckable()) role = CheckBox; else role = PushButton; iface = new QAccessibleButton(widget, role); } else if (classname == QLatin1String("QAbstractButton")) { iface = new QAccessibleButton(widget, PushButton); } else if (classname == QLatin1String("QDialog")) { iface = new QAccessibleWidgetEx(widget, Dialog); } else if (classname == QLatin1String("QMessageBox")) { iface = new QAccessibleWidgetEx(widget, AlertMessage); #ifndef QT_NO_MAINWINDOW } else if (classname == QLatin1String("QMainWindow")) { iface = new QAccessibleMainWindow(widget); #endif } else if (classname == QLatin1String("QLabel") || classname == QLatin1String("QLCDNumber")) { iface = new QAccessibleDisplay(widget); } else if (classname == QLatin1String("QGroupBox")) { iface = new QAccessibleDisplay(widget, Grouping); } else if (classname == QLatin1String("QStatusBar")) { iface = new QAccessibleWidgetEx(widget, StatusBar); } else if (classname == QLatin1String("QProgressBar")) { iface = new QAccessibleDisplay(widget); } else if (classname == QLatin1String("QToolBar")) { iface = new QAccessibleWidgetEx(widget, ToolBar, widget->windowTitle()); #ifndef QT_NO_MENUBAR } else if (classname == QLatin1String("QMenuBar")) { iface = new QAccessibleMenuBar(widget); #endif #ifndef QT_NO_MENU } else if (classname == QLatin1String("QMenu")) { iface = new QAccessibleMenu(widget); } else if (classname == QLatin1String("Q3PopupMenu")) { iface = new QAccessibleMenu(widget); #endif #ifndef QT_NO_ITEMVIEWS } else if (classname == QLatin1String("QHeaderView")) { iface = new QAccessibleHeader(widget); } else if (classname == QLatin1String("QAbstractItemView")) { iface = new QAccessibleItemView(widget); } else if (classname == QLatin1String("QWidget") && widget->objectName() == QLatin1String("qt_scrollarea_viewport") && qobject_cast<QAbstractItemView*>(widget->parentWidget())) { iface = new QAccessibleItemView(widget); #endif #ifndef QT_NO_TABBAR } else if (classname == QLatin1String("QTabBar")) { iface = new QAccessibleTabBar(widget); #endif } else if (classname == QLatin1String("QWorkspaceChild")) { iface = new QAccessibleWidgetEx(widget, Window); } else if (classname == QLatin1String("QSizeGrip")) { iface = new QAccessibleWidgetEx(widget, Grip); #ifndef QT_NO_SPLITTER } else if (classname == QLatin1String("QSplitter")) { iface = new QAccessibleWidgetEx(widget, Splitter); } else if (classname == QLatin1String("QSplitterHandle")) { iface = new QAccessibleWidgetEx(widget, Grip); #endif #ifndef QT_NO_TEXTEDIT } else if (classname == QLatin1String("QTextEdit")) { iface = new QAccessibleTextEdit(widget); #endif } else if (classname == QLatin1String("QTipLabel")) { iface = new QAccessibleDisplay(widget, ToolTip); } else if (classname == QLatin1String("QFrame")) { iface = new QAccessibleWidget(widget, Border); #ifndef QT_NO_STACKEDWIDGET } else if (classname == QLatin1String("QStackedWidget")) { iface = new QAccessibleStackedWidget(widget); #endif #ifndef QT_NO_TOOLBOX } else if (classname == QLatin1String("QToolBox")) { iface = new QAccessibleToolBox(widget); #endif #ifndef QT_NO_MDIAREA } else if (classname == QLatin1String("QMdiArea")) { iface = new QAccessibleMdiArea(widget); } else if (classname == QLatin1String("QMdiSubWindow")) { iface = new QAccessibleMdiSubWindow(widget); #endif #ifndef QT_NO_WORKSPACE } else if (classname == QLatin1String("QWorkspace")) { iface = new QAccessibleWorkspace(widget); #endif } else if (classname == QLatin1String("QDialogButtonBox")) { iface = new QAccessibleDialogButtonBox(widget); #ifndef QT_NO_DIAL } else if (classname == QLatin1String("QDial")) { iface = new QAccessibleDial(widget); #endif #ifndef QT_NO_RUBBERBAND } else if (classname == QLatin1String("QRubberBand")) { iface = new QAccessibleWidgetEx(widget, QAccessible::Border); #endif #ifndef QT_NO_TEXTBROWSER } else if (classname == QLatin1String("QTextBrowser")) { iface = new QAccessibleTextBrowser(widget); #endif #ifndef QT_NO_SCROLLAREA } else if (classname == QLatin1String("QAbstractScrollArea")) { iface = new QAccessibleAbstractScrollArea(widget); } else if (classname == QLatin1String("QScrollArea")) { iface = new QAccessibleScrollArea(widget); #endif #ifndef QT_NO_CALENDARWIDGET } else if (classname == QLatin1String("QCalendarWidget")) { iface = new QAccessibleCalendarWidget(widget); #endif #ifndef QT_NO_DOCKWIDGET } else if (classname == QLatin1String("QDockWidget")) { iface = new QAccessibleDockWidget(widget); #endif } return iface; }
QAccessibleInterface *AccessibleFactory::create(const QString &classname, QObject *object) { QAccessibleInterface *iface = 0; if (!object || !object->isWidgetType()) return iface; QWidget *widget = static_cast<QWidget*>(object); if (false) { #ifndef QT_NO_LINEEDIT } else if (classname == QLatin1String("QLineEdit")) { iface = new QAccessibleLineEdit(widget); #endif #ifndef QT_NO_COMBOBOX } else if (classname == QLatin1String("QComboBox")) { iface = new QAccessibleComboBox(widget); #endif #ifndef QT_NO_SPINBOX } else if (classname == QLatin1String("QAbstractSpinBox")) { iface = new QAccessibleAbstractSpinBox(widget); } else if (classname == QLatin1String("QSpinBox")) { iface = new QAccessibleSpinBox(widget); } else if (classname == QLatin1String("QDoubleSpinBox")) { iface = new QAccessibleDoubleSpinBox(widget); #endif #ifndef QT_NO_SCROLLBAR } else if (classname == QLatin1String("QScrollBar")) { iface = new QAccessibleScrollBar(widget); #endif } else if (classname == QLatin1String("QAbstractSlider")) { iface = new QAccessibleAbstractSlider(widget); #ifndef QT_NO_SLIDER } else if (classname == QLatin1String("QSlider")) { iface = new QAccessibleSlider(widget); #endif #ifndef QT_NO_TOOLBUTTON } else if (classname == QLatin1String("QToolButton")) { QAccessible::Role role = QAccessible::NoRole; #ifndef QT_NO_MENU QToolButton *tb = qobject_cast<QToolButton*>(widget); if (!tb->menu()) role = tb->isCheckable() ? QAccessible::CheckBox : QAccessible::PushButton; else if (tb->popupMode() == QToolButton::DelayedPopup) role = QAccessible::ButtonDropDown; else #endif role = QAccessible::ButtonMenu; iface = new QAccessibleToolButton(widget, role); #endif // QT_NO_TOOLBUTTON } else if (classname == QLatin1String("QCheckBox")) { iface = new QAccessibleButton(widget, QAccessible::CheckBox); } else if (classname == QLatin1String("QRadioButton")) { iface = new QAccessibleButton(widget, QAccessible::RadioButton); } else if (classname == QLatin1String("QPushButton")) { QAccessible::Role role = QAccessible::NoRole; QPushButton *pb = qobject_cast<QPushButton*>(widget); #ifndef QT_NO_MENU if (pb->menu()) role = QAccessible::ButtonMenu; else #endif if (pb->isCheckable()) role = QAccessible::CheckBox; else role = QAccessible::PushButton; iface = new QAccessibleButton(widget, role); } else if (classname == QLatin1String("QAbstractButton")) { iface = new QAccessibleButton(widget, QAccessible::PushButton); } else if (classname == QLatin1String("QDialog")) { iface = new QAccessibleWidget(widget, QAccessible::Dialog); } else if (classname == QLatin1String("QMessageBox")) { iface = new QAccessibleWidget(widget, QAccessible::AlertMessage); #ifndef QT_NO_MAINWINDOW } else if (classname == QLatin1String("QMainWindow")) { iface = new QAccessibleMainWindow(widget); #endif } else if (classname == QLatin1String("QLabel") || classname == QLatin1String("QLCDNumber")) { iface = new QAccessibleDisplay(widget); #ifndef QT_NO_GROUPBOX } else if (classname == QLatin1String("QGroupBox")) { iface = new QAccessibleGroupBox(widget); #endif } else if (classname == QLatin1String("QStatusBar")) { iface = new QAccessibleDisplay(widget); #ifndef QT_NO_PROGRESSBAR } else if (classname == QLatin1String("QProgressBar")) { iface = new QAccessibleProgressBar(widget); #endif } else if (classname == QLatin1String("QToolBar")) { iface = new QAccessibleWidget(widget, QAccessible::ToolBar, widget->windowTitle()); #ifndef QT_NO_MENUBAR } else if (classname == QLatin1String("QMenuBar")) { iface = new QAccessibleMenuBar(widget); #endif #ifndef QT_NO_MENU } else if (classname == QLatin1String("QMenu")) { iface = new QAccessibleMenu(widget); #endif #ifndef QT_NO_ITEMVIEWS } else if (classname == QLatin1String("QTreeView")) { iface = new QAccessibleTree(widget); } else if (classname == QLatin1String("QTableView") || classname == QLatin1String("QListView")) { iface = new QAccessibleTable(widget); // ### This should be cleaned up. We return the parent for the scrollarea to hide it. #endif // QT_NO_ITEMVIEWS #ifndef QT_NO_TABBAR } else if (classname == QLatin1String("QTabBar")) { iface = new QAccessibleTabBar(widget); #endif } else if (classname == QLatin1String("QSizeGrip")) { iface = new QAccessibleWidget(widget, QAccessible::Grip); #ifndef QT_NO_SPLITTER } else if (classname == QLatin1String("QSplitter")) { iface = new QAccessibleWidget(widget, QAccessible::Splitter); } else if (classname == QLatin1String("QSplitterHandle")) { iface = new QAccessibleWidget(widget, QAccessible::Grip); #endif #if !defined(QT_NO_TEXTEDIT) && !defined(QT_NO_CURSOR) } else if (classname == QLatin1String("QTextEdit")) { iface = new QAccessibleTextEdit(widget); } else if (classname == QLatin1String("QPlainTextEdit")) { iface = new QAccessiblePlainTextEdit(widget); #endif } else if (classname == QLatin1String("QTipLabel")) { iface = new QAccessibleDisplay(widget, QAccessible::ToolTip); } else if (classname == QLatin1String("QFrame")) { iface = new QAccessibleWidget(widget, QAccessible::Border); #ifndef QT_NO_STACKEDWIDGET } else if (classname == QLatin1String("QStackedWidget")) { iface = new QAccessibleStackedWidget(widget); #endif #ifndef QT_NO_TOOLBOX } else if (classname == QLatin1String("QToolBox")) { iface = new QAccessibleToolBox(widget); #endif #ifndef QT_NO_MDIAREA } else if (classname == QLatin1String("QMdiArea")) { iface = new QAccessibleMdiArea(widget); } else if (classname == QLatin1String("QMdiSubWindow")) { iface = new QAccessibleMdiSubWindow(widget); #endif } else if (classname == QLatin1String("QDialogButtonBox")) { iface = new QAccessibleDialogButtonBox(widget); #ifndef QT_NO_DIAL } else if (classname == QLatin1String("QDial")) { iface = new QAccessibleDial(widget); #endif #ifndef QT_NO_RUBBERBAND } else if (classname == QLatin1String("QRubberBand")) { iface = new QAccessibleWidget(widget, QAccessible::Border); #endif #if !defined(QT_NO_TEXTBROWSER) && !defined(QT_NO_CURSOR) } else if (classname == QLatin1String("QTextBrowser")) { iface = new QAccessibleTextBrowser(widget); #endif #ifndef QT_NO_SCROLLAREA } else if (classname == QLatin1String("QAbstractScrollArea")) { iface = new QAccessibleAbstractScrollArea(widget); } else if (classname == QLatin1String("QScrollArea")) { iface = new QAccessibleScrollArea(widget); #endif #ifndef QT_NO_CALENDARWIDGET } else if (classname == QLatin1String("QCalendarWidget")) { iface = new QAccessibleCalendarWidget(widget); #endif #ifndef QT_NO_DOCKWIDGET } else if (classname == QLatin1String("QDockWidget")) { iface = new QAccessibleDockWidget(widget); #endif } else if (classname == QLatin1String("QDesktopScreenWidget")) { iface = 0; } else if (classname == QLatin1String("QWidget")) { iface = new QAccessibleWidget(widget); } else if (classname == QLatin1String("QWindowContainer")) { iface = new QAccessibleWindowContainer(widget); } return iface; }