- DocumentPtr aDoc = aUpdMsg->document();
- std::string aGroup = aUpdMsg->group();
-
- QModelIndex aParent;
- int aStartId = 0;
- if (aDoc == aRootDoc) {
- // Update a group under root
- if (aGroup == myXMLReader.rootType()) // Update objects under root
- aStartId = foldersCount();
- else // Update objects in folder under root
- aParent = createIndex(folderId(aGroup), 0, -1);
+ if (aUpdMsg->reordered().get()) {
+ DocumentPtr aDoc = aUpdMsg->reordered()->document();
+ std::string aGroup = aUpdMsg->reordered()->group();
+
+ QModelIndex aParent;
+ int aStartId = 0;
+ if (aDoc == aRootDoc) {
+ // Update a group under root
+ if (aGroup == myXMLReader->rootType()) // Update objects under root
+ aStartId = foldersCount();
+ else // Update objects in folder under root
+ aParent = createIndex(folderId(aGroup), 0, (void*)Q_NULLPTR);
+ } else {
+ // Update a sub-document
+ if (aGroup == myXMLReader->subType()) {
+ // Update sub-document root
+ aParent = findDocumentRootIndex(aDoc.get());
+ aStartId = foldersCount(aDoc.get());
+ } else
+ // update folder in sub-document
+ aParent = createIndex(folderId(aGroup, aDoc.get()), 0, aDoc.get());
+ }
+ int aChildNb = rowCount(aParent);
+ rebuildBranch(aStartId, aChildNb - aStartId, aParent);