void ProjectModel::commit(QModelIndex &index) { ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); QVariant var = item->data(0, Qt::UserRole); CompleteAnnotationItem *oldAnnot = var.value<CompleteAnnotationItem*>(); AnnotationItem* oldItem = oldAnnot->getItem(); AnnotationItem* newItem = new AnnotationItem(oldItem->getId(), new ConllGraph(*oldItem->getOriginalParse()), new ConllGraph(*oldItem->getEditableParse())); RevisionAnnotationList revisions; for(int i = 0; i < oldAnnot->getRevisionsCount(); i++) revisions << oldAnnot->getRevision(i); revisions << Revision<AnnotationItem*>(oldItem); CompleteAnnotationItem *newAnnot = new CompleteAnnotationItem(oldAnnot->id(), newItem, revisions); item->setData(QVariant::fromValue(newAnnot)); //Which file the item belongs ? QString filename = item->parent()->data(0).toString(); //Get the annotation and update int indexFile = item->project()->findFile(filename); item->project()->changeAnnotation( indexFile , index.row(), newAnnot ); //item->project()->addModified( indexFile, index.row() ); }
QVariant ProjectModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole && role != Qt::UserRole) return QVariant(); ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); return item->data(index.column(), role); }
void ProjectModel::rollback(QModelIndex &index, int n) { ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer()); QVariant var = item->data(0, Qt::UserRole); CompleteAnnotationItem *currentAnnotation = var.value<CompleteAnnotationItem*>(); Revision<AnnotationItem*> revision = currentAnnotation->getRevision(n); RevisionAnnotationList revisions; for(int i = 0; i < n; i++){ revisions << currentAnnotation->getRevision(i); } CompleteAnnotationItem *newAnnotation = new CompleteAnnotationItem(revision.getValue()->getId(), revision.getValue(), revisions); var.setValue<CompleteAnnotationItem*>(newAnnotation); item->setData(var); }