// Custom processing the Selection Changed in the Scene Graph model. Returns // TRUE if no further processing needed. bool ParticlesEditorSceneModelHelper::ProcessSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { int32 deselectedSize = deselected.size(); int32 selectedSize = selected.size(); if (selectedSize <= 0) { // De-selection happened - allow processing by caller. ParticlesEditorController::Instance()->CleanupSelectedNode(); return false; } // Determine whether the selected node belongs to Particle Editor. QItemSelectionRange selectedRange = selected.at(0); SceneGraphItem *selectedItem = static_cast<SceneGraphItem*>(selectedRange.topLeft().internalPointer()); if (ParticlesEditorController::Instance()->IsBelongToParticlesEditor(selectedItem)) { // Our one. Select and emit the appropriate event. ParticlesEditorController::Instance()->SetSelectedNode(selectedItem, true); return !ParticlesEditorController::Instance()->ShouldDisplayPropertiesInSceneEditor(selectedItem); } // Not ours. Cleanup the selected node and return control back to the caller. ParticlesEditorController::Instance()->CleanupSelectedNode(); return false; }
bool KCSheetModel::setData(const QItemSelectionRange &range, const QVariant &value, int role) { const KCRegion region(toRange(range), d->sheet); KCCellStorage *const storage = d->sheet->cellStorage(); switch (role) { case CommentRole: storage->setComment(region, value.toString()); break; case ConditionRole: storage->setConditions(region, value.value<KCConditions>()); break; case FusionedRangeRole: // TODO // storage->setFusion(region, value.value<bool>()); break; case LockedRangeRole: // TODO // storage->setMatrix(region, value.value<bool>()); break; case NamedAreaRole: storage->emitInsertNamedArea(region, value.toString()); break; case SourceRangeRole: storage->setBinding(region, value.value<KCBinding>()); break; case StyleRole: // TODO // storage->setStyle(region, value.value<KCStyle>()); break; case TargetRangeRole: storage->setDatabase(region, value.value<Database>()); break; case ValidityRole: storage->setValidity(region, value.value<KCValidity>()); break; default: return false; } emit dataChanged(range.topLeft(), range.bottomRight()); return true; }