[CSE] Fix infoForFileId

We need to traverse the path recursivelly.
This commit is contained in:
Tomaz Canabrava 2017-12-17 19:14:34 +01:00
parent ce41e3e42f
commit 7ef2489f1d
3 changed files with 17 additions and 5 deletions

View file

@ -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)

View file

@ -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<SubFolderInfo *>(&_folders[i]);
qDebug() << "Looking for " << fileId;
qDebug() << "Current size of the folders array" << _folders.size();
// We are in the root folder, start.
const QVector<SubFolderInfo>& infoVec = info ? info->_subs : _folders;
for(int i = 0, end = infoVec.size(); i < end; i++) {
auto *info = const_cast<SubFolderInfo *>(&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;
}
}
}

View file

@ -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; }