| 162 | } |
| 163 | |
| 164 | QItemSelectionModel *ObjectBroker::selectionModel(QAbstractItemModel *model) |
| 165 | { |
| 166 | auto it = s_objectBroker()->selectionModels.constFind(model); |
| 167 | if (it != s_objectBroker()->selectionModels.constEnd()) |
| 168 | return it.value(); |
| 169 | |
| 170 | if (s_objectBroker()->selectionCallback) { |
| 171 | QAbstractItemModel *sourceModel = sourceModelForProxy(model); |
| 172 | |
| 173 | QItemSelectionModel *selectionModel = nullptr; |
| 174 | if (sourceModel == model) { |
| 175 | selectionModel = s_objectBroker()->selectionCallback(sourceModel); |
| 176 | s_objectBroker()->ownedObjects.push_back(selectionModel); |
| 177 | } else { |
| 178 | QItemSelectionModel *sourceSelectionModel = ObjectBroker::selectionModel(sourceModel); |
| 179 | selectionModel = new KLinkItemSelectionModel(model, sourceSelectionModel, model); |
| 180 | } |
| 181 | |
| 182 | if (selectionModel) { |
| 183 | registerSelectionModel(selectionModel); |
| 184 | return selectionModel; |
| 185 | } |
| 186 | } |
| 187 | return nullptr; |
| 188 | } |
| 189 | |
| 190 | void ObjectBroker::setSelectionModelFactoryCallback( |
| 191 | ObjectBroker::selectionModelFactoryCallback callback) |