int QState::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QAbstractState::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QAbstractState**>(_v) = initialState(); break; case 1: *reinterpret_cast< QAbstractState**>(_v) = errorState(); break; case 2: *reinterpret_cast< ChildMode*>(_v) = childMode(); break; } _id -= 3; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setInitialState(*reinterpret_cast< QAbstractState**>(_v)); break; case 1: setErrorState(*reinterpret_cast< QAbstractState**>(_v)); break; case 2: setChildMode(*reinterpret_cast< ChildMode*>(_v)); break; } _id -= 3; } else if (_c == QMetaObject::ResetProperty) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 3; } #endif // QT_NO_PROPERTIES return _id; }
void ViewMachine::setup(LayoutUpdater *updater) { if (not updater) { qCritical() << __PRETTY_FUNCTION__ << "No updater specified. Aborting setup."; return; } setChildMode(QState::ExclusiveStates); QState *main = 0; QState *symbols0 = 0; QState *symbols1 = 0; // addState makes state machine to be a parent of passed state, // so we don't have to care about deleting states explicitly. addState(main = new QState); addState(symbols0 = new QState); addState(symbols1 = new QState); setInitialState(main); main->setObjectName(main_state); symbols0->setObjectName(symbols0_state); symbols1->setObjectName(symbols1_state); main->addTransition(updater, SIGNAL(symKeyReleased()), symbols0); connect(main, SIGNAL(entered()), updater, SLOT(switchToMainView())); symbols0->addTransition(updater, SIGNAL(symKeyReleased()), main); symbols0->addTransition(updater, SIGNAL(symSwitcherReleased()), symbols1); connect(symbols0, SIGNAL(entered()), updater, SLOT(switchToPrimarySymView())); symbols1->addTransition(updater, SIGNAL(symKeyReleased()), main); symbols1->addTransition(updater, SIGNAL(symSwitcherReleased()), symbols0); connect(symbols1, SIGNAL(entered()), updater, SLOT(switchToSecondarySymView())); // Defer to first main loop iteration: QTimer::singleShot(0, this, SLOT(start())); }
void ShiftMachine::setup(LayoutUpdater *updater) { if (not updater) { qCritical() << __PRETTY_FUNCTION__ << "No updater specified. Aborting setup."; return; } setChildMode(QState::ExclusiveStates); QState *no_shift = 0; QState *latched_shift = 0; QState *caps_lock = 0; // addState makes state machine to be a parent of passed state, // so we don't have to care about deleting states explicitly. addState(no_shift = new QState); addState(latched_shift = new QState); addState(caps_lock = new QState); setInitialState(no_shift); no_shift->setObjectName(no_shift_state); latched_shift->setObjectName(latched_shift_state); caps_lock->setObjectName(caps_lock_state); connect(no_shift, SIGNAL(entered()), updater, SLOT(syncLayoutToView())); connect(latched_shift, SIGNAL(entered()), updater, SLOT(syncLayoutToView())); connect(caps_lock, SIGNAL(entered()), updater, SLOT(syncLayoutToView())); no_shift->addTransition(updater, SIGNAL(shiftPressed()), latched_shift); no_shift->addTransition(updater, SIGNAL(autoCapsActivated()), latched_shift); latched_shift->addTransition(updater, SIGNAL(shiftCancelled()), no_shift); latched_shift->addTransition(updater, SIGNAL(shiftReleased()), caps_lock); caps_lock->addTransition(updater, SIGNAL(shiftReleased()), no_shift); // Defer to first main loop iteration: QTimer::singleShot(0, this, SLOT(start())); }