🐞 fix(文件同步): 优化了搜索数据库的更新逻辑

This commit is contained in:
huheng@kylinos.cn 2023-05-05 14:06:58 +08:00
parent dce2672f19
commit 0a31427a1e
2 changed files with 63 additions and 54 deletions

View File

@ -86,20 +86,20 @@ void FileSyncManage::getClassifiedFileList(FileSyncManage::FileKey key, FileSync
qInfo() << "Get classification file list...";
int index = getIndex(key, type);
switch (type) {
case FileType::Picture:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list,
FLAGE_LIST.value(key) + PICTURE_FLAGE);
break;
case FileType::Video:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list,
FLAGE_LIST.value(key) + VIDEO_FLAGE);
break;
case FileType::Music:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list);
break;
case FileType::Doc:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list);
break;
case FileType::Picture:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list,
FLAGE_LIST.value(key) + PICTURE_FLAGE);
break;
case FileType::Video:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list,
FLAGE_LIST.value(key) + VIDEO_FLAGE);
break;
case FileType::Music:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list);
break;
case FileType::Doc:
m_fileParser->getFileInfoList(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index), list);
break;
}
}
@ -142,7 +142,11 @@ void FileSyncManage::updateFileInfo(FileSyncManage::FileKey key, FileSyncManage:
if (isUpdate) {
downloadSearch();
} else {
Q_EMIT sigSearchInfoFinsh(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(FileType::SearchFile));
if (m_isFirst) {
m_isFirst = false;
Q_EMIT sigSearchInfoFinsh(FILE_DOWN_PATH + m_uuid + "/" +
CONFIG_FILE_LIST.value(FileType::SearchFile));
}
}
return;
}
@ -167,7 +171,11 @@ void FileSyncManage::updateFileInfo(FileSyncManage::FileKey key, FileSyncManage:
downloadSearch();
} else {
Q_EMIT sigDownAllFileFinish("");
Q_EMIT sigSearchInfoFinsh(FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(FileType::SearchFile));
if (m_isFirst) {
m_isFirst = false;
Q_EMIT sigSearchInfoFinsh(FILE_DOWN_PATH + m_uuid + "/" +
CONFIG_FILE_LIST.value(FileType::SearchFile));
}
}
}
if (updateTask != nullptr) {
@ -193,12 +201,12 @@ void FileSyncManage::downThumb(FileSyncManage::FileKey key, FileSyncManage::File
int index = getIndex(key, type);
QString path = FILE_DOWN_PATH + m_uuid + "/" + CONFIG_FILE_LIST.value(index);
switch (type) {
case FileType::Picture:
flag = FLAGE_LIST.value(key) + PICTURE_FLAGE;
break;
case FileType::Video:
flag = FLAGE_LIST.value(key) + VIDEO_FLAGE;
break;
case FileType::Picture:
flag = FLAGE_LIST.value(key) + PICTURE_FLAGE;
break;
case FileType::Video:
flag = FLAGE_LIST.value(key) + VIDEO_FLAGE;
break;
}
QStringList list;
m_fileParser->getThumbList(path, list);
@ -234,8 +242,8 @@ void FileSyncManage::downTempFile(QString filePath)
});
connect(tempTask, &DownloadTask::sigTaskFinish, this, [=](QString flag, QString fileName) {
qInfo() << fileName << " file download complete.";
Q_EMIT sigTempFileDownFinish(FILE_DOWN_PATH + m_uuid + TEMP_DOWN_PATH
+ filePath.mid(filePath.lastIndexOf("/") + 1, filePath.size()));
Q_EMIT sigTempFileDownFinish(FILE_DOWN_PATH + m_uuid + TEMP_DOWN_PATH +
filePath.mid(filePath.lastIndexOf("/") + 1, filePath.size()));
if (tempTask != nullptr) {
tempTask->deleteLater();
}
@ -312,9 +320,9 @@ void FileSyncManage::clearTempFiles(const QString path)
// 因为只需要遍历第一层即可所以第四个参数填QDirIterator::NoIteratorFlags
QDirIterator dirsIterator(path, QDir::Files | QDir::AllDirs | QDir::NoDotAndDotDot, QDirIterator::NoIteratorFlags);
while (dirsIterator.hasNext()) {
if (!dir.remove(dirsIterator.next())) // 删除文件操作如果返回否,那它就是目录
if (!dir.remove(dirsIterator.next())) // 删除文件操作如果返回否,那它就是目录
{
QDir(dirsIterator.filePath()).removeRecursively(); // 删除目录本身以及它下属所有的文件及目录
QDir(dirsIterator.filePath()).removeRecursively(); // 删除目录本身以及它下属所有的文件及目录
}
}
}
@ -322,12 +330,12 @@ void FileSyncManage::clearTempFiles(const QString path)
void FileSyncManage::setSearchPath(FileSyncManage::SearchFileType type, QString homePath)
{
switch (type) {
case SearchFileType::Android:
m_searchfilePath = FILE_PATH_SEARCH;
break;
case SearchFileType::Pc:
m_searchfilePath = FILE_HOME_PATH + homePath + FILE_PATH_PCSEARCH;
break;
case SearchFileType::Android:
m_searchfilePath = FILE_PATH_SEARCH;
break;
case SearchFileType::Pc:
m_searchfilePath = FILE_HOME_PATH + homePath + FILE_PATH_PCSEARCH;
break;
}
}

View File

@ -18,23 +18,23 @@ public:
~FileSyncManage();
enum FileKey {
Default = 0, // 默认
WeChat, // 微信
QQ, // QQ
Default = 0, // 默认
WeChat, // 微信
QQ, // QQ
};
enum FileType {
Picture = 0, // 图片
Video = 1, // 视频
Music = 2, // 音乐
Doc = 3, // 文档
FileNum = 12, // 分类文件数量
SearchFile = 13, // 搜索索引文件
Picture = 0, // 图片
Video = 1, // 视频
Music = 2, // 音乐
Doc = 3, // 文档
FileNum = 12, // 分类文件数量
SearchFile = 13, // 搜索索引文件
};
enum SearchFileType {
Android = 0, // 移动设备搜索文件
Pc = 1, // PC设备搜索文件
Android = 0, // 移动设备搜索文件
Pc = 1, // PC设备搜索文件
};
// 中止当前下载
@ -73,16 +73,17 @@ private:
int getIndex(FileSyncManage::FileKey key, FileSyncManage::FileType type);
private:
DownloadTask *m_task = nullptr; // 下载任务
QThread *m_thread = nullptr; // 下载线程
FileParSer *m_fileParser = nullptr; // 文件解析
QUrl m_url; // 服务器地址
QString m_uuid = ""; // 连接设备的uuid
QStringList m_fileList; // 下载文件地址列表
QString m_downPath = ""; // 下载路径
QString m_fileName = ""; // 文件名
QString m_fileFlag = ""; // 文件前缀
QString m_searchfilePath = ""; // 搜索文件下载路径
DownloadTask *m_task = nullptr; // 下载任务
QThread *m_thread = nullptr; // 下载线程
FileParSer *m_fileParser = nullptr; // 文件解析
QUrl m_url; // 服务器地址
QString m_uuid = ""; // 连接设备的uuid
QStringList m_fileList; // 下载文件地址列表
QString m_downPath = ""; // 下载路径
QString m_fileName = ""; // 文件名
QString m_fileFlag = ""; // 文件前缀
QString m_searchfilePath = ""; // 搜索文件下载路径
bool m_isFirst = true;
Q_SIGNALS:
void sigDownFileFinish(QString, QString);
@ -96,4 +97,4 @@ public Q_SLOTS:
void slotTaskFail(QString name, QString flag);
};
#endif // FILESYNCMANGE_H
#endif // FILESYNCMANGE_H