void Synchro::ComparatifRenameFodler(QDateTime delta) { qDebug() << delta.toString(); std::map<int, Folder *> FolderMap = myparse.getFoldermap(); typedef std::map<int, Folder *>::iterator it_type2; std::map<int, Folder *> OldFolderMap = oldparse.getFoldermap(); typedef std::map<int, Folder *>::iterator it_type; QStringList ListNew, ListOld; for (it_type2 iterator = FolderMap.begin(); iterator != FolderMap.end(); iterator++) { Folder *fold = iterator->second; ListNew.push_back((this->folder + fold->getChosenPath() + fold->getName()).c_str()); QString d = QString::fromStdString(fold->getLastModifDate()); long long r = QDateTime::fromString(d, "yyyy:MM:dd hh:mm:ss").msecsTo(delta); if (r < 0) { std::string tmppath = this->folder + fold->getChosenPath() + fold->getName(); QString path(tmppath.c_str()); qDebug() << "Directory updated: " << path; for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) { Folder *oldfold = iterator2->second; if (oldfold->getId() == fold->getId()) { std::string oldpath = this->folder + oldfold->getChosenPath() + oldfold->getName(); qDebug() << "Directory Old: " << oldpath.c_str(); if ((oldfold->getName() != fold->getName()) || (oldpath != path.toStdString())) { QString original = (this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str(); QString dest = (this->folder + fold->getChosenPath() + fold->getName()).c_str(); QDir dir; if (!dir.rename(original, dest)){ qDebug() << "OOOOOOO SECOURSSSSSSSS"; } } } } } else { } } for (it_type iterator2 = OldFolderMap.begin(); iterator2 != OldFolderMap.end(); iterator2++) { Folder *oldfold = iterator2->second; ListOld.push_back((this->folder + oldfold->getChosenPath() + oldfold->getName()).c_str()); } QStringList currEntryList = ListNew; QStringList newEntryList = ListOld; QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList); QSet<QString> currentDirSet = QSet<QString>::fromList(currEntryList); // Files that have been added QSet<QString> newFiles = newDirSet - currentDirSet; QStringList newFile = newFiles.toList(); // Files that have been removed QSet<QString> deletedFiles = currentDirSet - newDirSet; QStringList deleteFile = deletedFiles.toList(); if (!deleteFile.isEmpty()) { qDebug() << "Files/Dirs deleted: " << deleteFile; foreach(QString file, deleteFile) { if (QDir(file).exists() == true) return; else QDir().mkdir(file); } }