解决文件搜索插件判断索引状态有误的问题和文件图标获取失败的问题

This commit is contained in:
iaom 2023-03-16 17:42:25 +08:00
parent 4a98056c06
commit 308b9b642f
3 changed files with 21 additions and 12 deletions

View File

@ -41,7 +41,7 @@ FileIndexerConfig *FileIndexerConfig::getInstance()
return global_intance;
}
FileIndexerConfig::FileIndexerConfig(QObject *parent) \
FileIndexerConfig::FileIndexerConfig(QObject *parent)
: QObject(parent),
m_dirWatcher(DirWatcher::getDirWatcher())
{

View File

@ -147,7 +147,7 @@ bool FileContentSearchWorker::execSearch()
resultItem.setValue(SearchProperty::SearchResultProperty::FilePath, path);
}
if(properties.contains(SearchProperty::SearchResultProperty::FileIconName)) {
resultItem.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(path).name());
resultItem.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(QUrl::fromLocalFile(path).toString()).name());
}
if(properties.contains(SearchProperty::SearchResultProperty::FileName)) {
resultItem.setValue(SearchProperty::SearchResultProperty::FileName, path.section("/", -1));

View File

@ -6,6 +6,7 @@
#include <QDebug>
#include <QDateTime>
#include <gio/gio.h>
#include <QUrl>
#include "index-status-recorder.h"
#include "dir-watcher.h"
#include "common.h"
@ -92,21 +93,29 @@ void FileSearchWorker::run()
}
bool finished = true;
bool indexed = !DirWatcher::getDirWatcher()->currentIndexableDir().isEmpty();
qDebug() << DirWatcher::getDirWatcher()->currentIndexableDir();
for(const QString &dir : DirWatcher::getDirWatcher()->currentIndexableDir()) {
bool indexed = true;
QStringList indexedDir = DirWatcher::getDirWatcher()->currentIndexableDir();
if(!indexedDir.isEmpty() && IndexStatusRecorder::getInstance()->indexDatabaseEnable()) {
for(const QString &path : m_searchController->getSearchDir()) {
if(!FileUtils::isOrUnder(path, dir)) {
bool pathIndexed = false;
for(const QString &dir : indexedDir) {
if(FileUtils::isOrUnder(path, dir)) {
pathIndexed = true;
break;
}
}
if(!pathIndexed) {
indexed = false;
break;
}
}
if(!indexed) {
break;
}
} else {
indexed = false;
}
//TODO 还需要判断是否为不能建立索引的目录
if (IndexStatusRecorder::getInstance()->indexDatabaseEnable() && indexed) {
if (indexed) {
qDebug() << "index ready";
finished = searchWithIndex();
} else {
@ -176,7 +185,7 @@ bool FileSearchWorker::searchWithIndex()
resultItem.setValue(SearchProperty::SearchResultProperty::FilePath, path);
}
if(properties.contains(SearchProperty::SearchResultProperty::FileIconName)) {
resultItem.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(path).name());
resultItem.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(QUrl::fromLocalFile(path).toString()).name());
}
if(properties.contains(SearchProperty::SearchResultProperty::FileName)) {
resultItem.setValue(SearchProperty::SearchResultProperty::FileName, path.section("/", -1));
@ -278,7 +287,7 @@ bool FileSearchWorker::directSearch()
ri.setValue(SearchProperty::SearchResultProperty::FilePath, fileInfo.absoluteFilePath());
}
if(properties.contains(SearchProperty::SearchResultProperty::FileIconName)) {
ri.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(fileInfo.absoluteFilePath()).name());
ri.setValue(SearchProperty::SearchResultProperty::FileIconName, FileUtils::getFileIcon(QUrl::fromLocalFile(fileInfo.absoluteFilePath()).toString()).name());
}
if(properties.contains(SearchProperty::SearchResultProperty::FileName)) {
ri.setValue(SearchProperty::SearchResultProperty::FileName, fileInfo.fileName());