dolphin: fake the root entry of filenamesearch slave

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-06-02 20:02:03 +03:00
parent e31b04eaa2
commit 9a00dcda13
2 changed files with 22 additions and 5 deletions

View file

@ -45,7 +45,26 @@ FileNameSearchProtocol::~FileNameSearchProtocol()
cleanup(); cleanup();
} }
void FileNameSearchProtocol::listDir(const KUrl& url) void FileNameSearchProtocol::stat(const KUrl &url)
{
const QString urlpath = url.path();
if (urlpath.isEmpty() || urlpath == QLatin1String("/")) {
// fake the root entry (for the icon)
KIO::UDSEntry kioudsentry;
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, ".");
kioudsentry.insert(KIO::UDSEntry::UDS_URL, "filenamesearch:/");
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
kioudsentry.insert(KIO::UDSEntry::UDS_ICON_NAME, "edit-find");
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
statEntry(kioudsentry);
finished();
return;
}
error(KIO::ERR_DOES_NOT_EXIST, url.prettyUrl());
}
void FileNameSearchProtocol::listDir(const KUrl &url)
{ {
cleanup(); cleanup();
@ -59,9 +78,7 @@ void FileNameSearchProtocol::listDir(const KUrl& url)
} }
m_checkContent = url.queryItemValue("checkContent"); m_checkContent = url.queryItemValue("checkContent");
m_literal = url.queryItemValue("literal"); m_literal = url.queryItemValue("literal");
m_checkType = url.queryItemValue("checkType"); m_checkType = url.queryItemValue("checkType");
@ -94,9 +111,8 @@ void FileNameSearchProtocol::listDir(const KUrl& url)
addItem = true; addItem = true;
if (!m_checkType.isEmpty()) { if (!m_checkType.isEmpty()) {
addItem = false; addItem = false;
const QStringList types = m_checkType.split(";");
const KSharedPtr<KMimeType> mime = item.mimeTypePtr(); const KSharedPtr<KMimeType> mime = item.mimeTypePtr();
foreach (const QString& t, types) { foreach (const QString &t, m_checkType.split(";")) {
if (mime->is(t)) { if (mime->is(t)) {
addItem = true; addItem = true;
} }

View file

@ -42,6 +42,7 @@ public:
FileNameSearchProtocol(const QByteArray &app); FileNameSearchProtocol(const QByteArray &app);
virtual ~FileNameSearchProtocol(); virtual ~FileNameSearchProtocol();
void stat(const KUrl &url) final;
void listDir(const KUrl &url) final; void listDir(const KUrl &url) final;
private: private: