int QtTreeSelectionManager::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: currentChanged((*reinterpret_cast< const QtTreeModelBase::iterator_base(*)>(_a[1])),(*reinterpret_cast< const QtTreeModelBase::iterator_base(*)>(_a[2]))); break; case 1: anchorChanged((*reinterpret_cast< const QtTreeModelBase::iterator_base(*)>(_a[1])),(*reinterpret_cast< const QtTreeModelBase::iterator_base(*)>(_a[2]))); break; case 2: selectionsChanged((*reinterpret_cast< const QtTreeSelection(*)>(_a[1]))); break; case 3: setCurrentItem((*reinterpret_cast< const QtTreeModelIterator(*)>(_a[1]))); break; case 4: setAnchorItem((*reinterpret_cast< const QtTreeModelIterator(*)>(_a[1]))); break; case 5: setAnchorSelectionMode((*reinterpret_cast< SelectionMode(*)>(_a[1]))); break; case 6: setSelected((*reinterpret_cast< const QtTreeSelection(*)>(_a[1])),(*reinterpret_cast< SelectionMode(*)>(_a[2]))); break; case 7: setSelected((*reinterpret_cast< const QtTreeSelection(*)>(_a[1]))); break; case 8: setAnchorSelection((*reinterpret_cast< const QtTreeSelection(*)>(_a[1]))); break; case 9: clearSelections(); break; case 10: d_func()->_q_modelDestroyed(); break; case 11: d_func()->_q_itemsRemoved((*reinterpret_cast< const QtTreeModelBase::iterator_base(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; default: ; } _id -= 12; } return _id; }
void ItemListItem::handleSelectionChanged() { auto attached = static_cast<ItemListAttached*>(sender()); Q_ASSERT(attached != nullptr); bool clear = false; if (d->selectionMode == SingleSelection) { if (attached->isSelected()) { Q_ASSERT(d->selections.size() < 2); if (d->selections.isEmpty()) d->selections.append(attached); else { d->selections[0]->selection() = false; d->selections[0] = attached; } } else clear = true; } else if (d->selectionMode == MultiSelection) { if (attached->isSelected()) d->selections.append(attached); else d->selections.removeOne(attached); } else clear = true; if (clear) clearSelections(); else { emit selectionsChanged(); forceToUpdateGeometry(); } }
int QtListSelectionManager::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: currentChanged((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 1: anchorChanged((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 2: selectionsChanged((*reinterpret_cast< const QtListSelectionChange(*)>(_a[1]))); break; case 3: setCurrentItem((*reinterpret_cast< int(*)>(_a[1]))); break; case 4: setAnchorItem((*reinterpret_cast< int(*)>(_a[1]))); break; case 5: setSelected((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< SelectionMode(*)>(_a[3]))); break; case 6: setSelected((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 7: setSelected((*reinterpret_cast< int(*)>(_a[1]))); break; case 8: clearSelections(); break; case 9: d_func()->_q_modelDestroyed(); break; case 10: d_func()->_q_itemsInserted((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 11: d_func()->_q_itemsRemoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 12: d_func()->_q_itemsMoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; default: ; } _id -= 13; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< int*>(_v) = currentItem(); break; case 1: *reinterpret_cast< bool*>(_v) = isAnchoredSelectionActive(); break; case 2: *reinterpret_cast< SelectionMode*>(_v) = anchoredSelectionMode(); break; } _id -= 3; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setCurrentItem(*reinterpret_cast< int*>(_v)); break; case 1: setAnchoredSelectionActive(*reinterpret_cast< bool*>(_v)); break; case 2: setAnchoredSelectionMode(*reinterpret_cast< SelectionMode*>(_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 ItemListItem::clearSelections() { if (!d->selections.isEmpty()) { for (auto one : d->selections) one->selection() = false; d->selections.clear(); emit selectionsChanged(); forceToUpdateGeometry(); } }