diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 921423b6b..cdcaa8f37 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -408,7 +408,7 @@ void AccountSettings::slotDecryptionFlagError(const QByteArray& fileID, int http void AccountSettings::slotUnlockForDecryptionError(const QByteArray& fileId, int httpReturnCode) { - + qDebug() << "Error unlocking folder after decryption"; } void AccountSettings::slotDeleteMetadataError(const QByteArray& fileId, int httpReturnCode) diff --git a/src/gui/folderstatusmodel.cpp b/src/gui/folderstatusmodel.cpp index 6e68ff21e..e530b08c4 100644 --- a/src/gui/folderstatusmodel.cpp +++ b/src/gui/folderstatusmodel.cpp @@ -396,12 +396,24 @@ FolderStatusModel::SubFolderInfo *FolderStatusModel::infoForIndex(const QModelIn } } -FolderStatusModel::SubFolderInfo *FolderStatusModel::infoForFileId(const QByteArray& fileId) const + +/* Recursivelly traverse the file info looking for the id */ +FolderStatusModel::SubFolderInfo *FolderStatusModel::infoForFileId(const QByteArray& fileId, SubFolderInfo* info) const { - for(int i = 0, end = _folders.size(); i < end; i++) { - auto *info = const_cast(&_folders[i]); + qDebug() << "Looking for " << fileId; + qDebug() << "Current size of the folders array" << _folders.size(); + + // We are in the root folder, start. + const QVector& infoVec = info ? info->_subs : _folders; + for(int i = 0, end = infoVec.size(); i < end; i++) { + auto *info = const_cast(&infoVec[i]); + qDebug() << "Current file id " << info->_fileId; if (info->_fileId == fileId) { return info; + } else if (info->_subs.size()) { + if (auto *subInfo = infoForFileId(fileId, info)) { + return subInfo; + } } } diff --git a/src/gui/folderstatusmodel.h b/src/gui/folderstatusmodel.h index d981617a3..4de1451f9 100644 --- a/src/gui/folderstatusmodel.h +++ b/src/gui/folderstatusmodel.h @@ -120,7 +120,7 @@ public: FetchLabel }; ItemType classify(const QModelIndex &index) const; SubFolderInfo *infoForIndex(const QModelIndex &index) const; - SubFolderInfo *infoForFileId(const QByteArray &fileId) const; + SubFolderInfo *infoForFileId(const QByteArray &fileId, SubFolderInfo *info = nullptr) const; // If the selective sync check boxes were changed bool isDirty() { return _dirty; }