[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) void AccountSettings::slotUnlockForDecryptionError(const QByteArray& fileId, int httpReturnCode)
{ {
qDebug() << "Error unlocking folder after decryption";
} }
void AccountSettings::slotDeleteMetadataError(const QByteArray& fileId, int httpReturnCode) 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++) { qDebug() << "Looking for " << fileId;
auto *info = const_cast<SubFolderInfo *>(&_folders[i]); 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) { if (info->_fileId == fileId) {
return info; return info;
} else if (info->_subs.size()) {
if (auto *subInfo = infoForFileId(fileId, info)) {
return subInfo;
}
} }
} }

View file

@ -120,7 +120,7 @@ public:
FetchLabel }; FetchLabel };
ItemType classify(const QModelIndex &index) const; ItemType classify(const QModelIndex &index) const;
SubFolderInfo *infoForIndex(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 // If the selective sync check boxes were changed
bool isDirty() { return _dirty; } bool isDirty() { return _dirty; }