generic: adjust to slave changes

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-05-03 05:28:55 +03:00
parent 4097675cf0
commit ed5882e440
12 changed files with 41 additions and 125 deletions

View file

@ -116,8 +116,9 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory)
if (addItem) {
KIO::UDSEntry entry = item.entry();
entry.insert(KIO::UDSEntry::UDS_URL, item.url().url() );
listEntry(entry,false);
entry.insert(KIO::UDSEntry::UDS_URL, item.url().url());
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, item.mimetype());
listEntry(entry, false);
}
if (item.isDir()) {

View file

@ -36,21 +36,22 @@ class KUrl;
* item. If the query item "checkContent" is set to "yes", all files with
* a text MIME type will be checked for the content.
*/
class FileNameSearchProtocol : public KIO::SlaveBase {
class FileNameSearchProtocol : public KIO::SlaveBase
{
public:
FileNameSearchProtocol(const QByteArray& app);
FileNameSearchProtocol(const QByteArray &app);
virtual ~FileNameSearchProtocol();
virtual void listDir(const KUrl& url);
void listDir(const KUrl &url) final;
private:
void searchDirectory(const KUrl& directory);
void searchDirectory(const KUrl &directory);
/**
* @return True, if the pattern m_searchPattern is part of
* the file \a fileName.
*/
bool contentContainsPattern(const KUrl& fileName) const;
bool contentContainsPattern(const KUrl &fileName) const;
void cleanup();

View file

@ -274,18 +274,12 @@ void KameraProtocol::get(const KUrl &url)
if (info.preview.fields & GP_FILE_INFO_SIZE) {
totalSize(info.preview.size);
}
if (info.preview.fields & GP_FILE_INFO_TYPE) {
mimeType(info.preview.type);
}
} else {
kDebug(7123) << "get() retrieving the full-scale photo";
fileType = GP_FILE_TYPE_NORMAL;
if (info.file.fields & GP_FILE_INFO_SIZE) {
totalSize(info.file.size);
}
if (info.preview.fields & GP_FILE_INFO_TYPE) {
mimeType(info.file.type);
}
}
// fetch the data
@ -315,11 +309,6 @@ void KameraProtocol::get(const KUrl &url)
return;
}
}
// emit the mimetype
// NOTE: we must first get the file, so that CameraFile->name would be set
const char *fileMimeType;
gp_file_get_mime_type(m_file, &fileMimeType);
mimeType(fileMimeType);
// We need to pass left over data here. Some camera drivers do not
// implement progress callbacks!
@ -392,12 +381,10 @@ void KameraProtocol::stat(const KUrl &url)
void KameraProtocol::statRoot(void)
{
KIO::UDSEntry entry;
entry.insert(KIO::UDSEntry::UDS_NAME, QString::fromLocal8Bit("/"));
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFDIR);
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH));
entry.insert(KIO::UDSEntry::UDS_NAME, QString::fromLatin1("/"));
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
statEntry(entry);
finished();
// If we just do this call, timeout right away if no other requests are
@ -450,8 +437,9 @@ void KameraProtocol::statRegular(const KUrl &xurl)
QString xname = current_camera + "@" + current_port;
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, current_camera);
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFDIR);
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH));
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
statEntry(entry);
finished();
return;
@ -651,7 +639,7 @@ void KameraProtocol::listDir(const KUrl &yurl)
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFDIR);
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH));
xname = (*it) + "@" + m_cfgPath;
entry.insert(KIO::UDSEntry::UDS_NAME,path_quote(xname));
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
// do not confuse regular users with the @usb...
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, *it);
listEntry(entry, false);
@ -871,7 +859,7 @@ void KameraProtocol::translateTextToUDS(KIO::UDSEntry &udsEntry, const QString &
udsEntry.clear();
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFREG);
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
udsEntry.insert(KIO::UDSEntry::UDS_NAME,path_quote(fn));
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME,fn);
udsEntry.insert(KIO::UDSEntry::UDS_SIZE,strlen(text));
@ -884,22 +872,22 @@ void KameraProtocol::translateFileToUDS(KIO::UDSEntry &udsEntry, const CameraFil
udsEntry.clear();
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFREG);
udsEntry.insert(KIO::UDSEntry::UDS_NAME,path_quote(name));
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME,name);
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(name));
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, name);
if (info.file.fields & GP_FILE_INFO_SIZE) {
udsEntry.insert(KIO::UDSEntry::UDS_SIZE,info.file.size);
}
if (info.file.fields & GP_FILE_INFO_MTIME) {
udsEntry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME,info.file.mtime);
udsEntry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, info.file.mtime);
} else {
udsEntry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME,time(NULL));
udsEntry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, time(NULL));
}
if (info.file.fields & GP_FILE_INFO_TYPE) {
udsEntry.insert(KIO::UDSEntry::UDS_MIME_TYPE,QString::fromLatin1(info.file.type));
udsEntry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1(info.file.type));
}
if (info.file.fields & GP_FILE_INFO_PERMISSIONS) {
@ -917,8 +905,8 @@ void KameraProtocol::translateDirectoryToUDS(KIO::UDSEntry &udsEntry, const QStr
udsEntry.clear();
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFDIR);
udsEntry.insert(KIO::UDSEntry::UDS_NAME,path_quote(dirname));
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(dirname));
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirname);
udsEntry.insert(KIO::UDSEntry::UDS_ACCESS,S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH | S_IXUSR | S_IXOTH | S_IXGRP);
udsEntry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString("inode/directory"));

View file

@ -398,45 +398,6 @@ void MTPSlave::stat(const KUrl& url)
finished();
}
void MTPSlave::mimetype(const KUrl& url)
{
int check = checkUrl(url);
switch (check)
{
case 0: {
break;
}
case 1: {
finished();
return;
}
case 2: {
error(ERR_DOES_NOT_EXIST, url.path());
return;
}
default: {
error(ERR_MALFORMED_URL, url.path());
return;
}
}
kDebug(KIO_MTP) << url.path();
QStringList pathItems = url.path().split(QLatin1Char('/'), QString::SkipEmptyParts);
QPair<void*, LIBMTP_mtpdevice_t*> pair = getPath(url.path());
if (pair.first) {
if (pathItems.size() > 2) {
mimetype(getMimetype(((LIBMTP_file_t*)pair.first)->filetype));
} else {
mimetype(QString::fromLatin1("inode/directory"));
}
} else {
error(ERR_DOES_NOT_EXIST, url.path());
}
}
void MTPSlave::put(const KUrl& url, int, JobFlags flags)
{
int check = checkUrl(url);
@ -535,7 +496,6 @@ void MTPSlave::get(const KUrl& url)
if (pair.first) {
LIBMTP_file_t *file = (LIBMTP_file_t*)pair.first;
mimeType(getMimetype(file->filetype));
totalSize(file->filesize);
LIBMTP_mtpdevice_t *device = pair.second;

View file

@ -72,15 +72,14 @@ public:
MTPSlave(const QByteArray& app);
virtual ~MTPSlave();
virtual void listDir(const KUrl& url);
virtual void stat(const KUrl& url);
virtual void mimetype(const KUrl& url);
virtual void get(const KUrl& url);
virtual void put(const KUrl& url, int, JobFlags flags);
virtual void copy(const KUrl& src, const KUrl& dest, int, JobFlags flags);
virtual void mkdir(const KUrl& url, int);
virtual void del(const KUrl& url, bool);
virtual void rename(const KUrl& src, const KUrl& dest, JobFlags flags);
void listDir(const KUrl& url) final;
void stat(const KUrl& url) final;
void get(const KUrl& url) final;
void put(const KUrl& url, int, JobFlags flags) final;
void copy(const KUrl& src, const KUrl& dest, int, JobFlags flags) final;
void mkdir(const KUrl& url, int) final;
void del(const KUrl& url, bool) final;
void rename(const KUrl& src, const KUrl& dest, JobFlags flags) final;
};
#endif //#endif KIO_MTP_H

View file

@ -75,30 +75,6 @@ NetworkSlave::~NetworkSlave()
delete m_kdnssd;
}
void NetworkSlave::mimetype(const KUrl &url)
{
if (!KDNSSD::isSupported()) {
error(KIO::ERR_UNSUPPORTED_ACTION, url.prettyUrl());
return;
}
if (!m_kdnssd) {
m_kdnssd = new KDNSSD();
}
if (!m_kdnssd->startBrowse()) {
error(KIO::ERR_SLAVE_DEFINED, m_kdnssd->errorString());
return;
}
foreach (const KDNSSDService &kdnssdservice, m_kdnssd->services()) {
// qDebug() << Q_FUNC_INFO << kdnssdservice.url << url.prettyUrl();
if (kdnssdservice.url == url.prettyUrl()) {
mimeType(mimeForService(kdnssdservice));
finished();
return;
}
}
error(KIO::ERR_DOES_NOT_EXIST, url.prettyUrl());
}
void NetworkSlave::stat(const KUrl &url)
{
if (!KDNSSD::isSupported()) {

View file

@ -31,14 +31,13 @@ class NetworkSlave : public KIO::SlaveBase
{
public:
NetworkSlave(const QByteArray &programSocket);
virtual ~NetworkSlave();
~NetworkSlave();
public: // KIO::SlaveBase API
virtual void mimetype(const KUrl &url);
virtual void stat(const KUrl &url);
virtual void listDir(const KUrl &url);
public:
void stat(const KUrl &url) final;
void listDir(const KUrl &url) final;
private: // data
private:
KDNSSD *m_kdnssd;
};

View file

@ -217,7 +217,6 @@ void ThumbnailProtocol::get(const KUrl &url)
const QString imgpath = KTemporaryFile::filePath(QString::fromLatin1("XXXXXXXXXX%1").arg(thumbExt));
img.save(imgpath, thumbFormat);
mimeType(KMimeType::findByPath(imgpath)->name());
data(QFile::encodeName(imgpath));
finished();
}

View file

@ -43,7 +43,7 @@ public:
ThumbnailProtocol(const QByteArray &app);
virtual ~ThumbnailProtocol();
virtual void get(const KUrl &url);
void get(const KUrl &url) final;
protected:
ThumbCreator* getThumbCreator(const QString& plugin);

View file

@ -535,8 +535,6 @@ void TrashProtocol::get( const KUrl& url )
KIO::Job* job = KIO::get( fileURL, KIO::HideProgressInfo );
connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
this, SLOT( slotData( KIO::Job*, const QByteArray& ) ) );
connect( job, SIGNAL( mimetype( KIO::Job*, const QString& ) ),
this, SLOT( slotMimetype( KIO::Job*, const QString& ) ) );
connect( job, SIGNAL( result(KJob*) ),
this, SLOT( jobFinished(KJob*) ) );
enterLoop();
@ -547,11 +545,6 @@ void TrashProtocol::slotData( KIO::Job*, const QByteArray&arr )
data( arr );
}
void TrashProtocol::slotMimetype( KIO::Job*, const QString& mt )
{
mimeType( mt );
}
void TrashProtocol::jobFinished( KJob* job )
{
if ( job->error() )

View file

@ -54,7 +54,6 @@ Q_SIGNALS:
private Q_SLOTS:
void slotData( KIO::Job*, const QByteArray& );
void slotMimetype( KIO::Job*, const QString& );
void jobFinished( KJob* job );
private:

View file

@ -523,6 +523,7 @@ bool TrashImpl::synchronousDel( const QString& path, bool setLastErrorCode, bool
enterLoop();
}
kDebug() << "deleting " << url;
KIO::DeleteJob *job = KIO::del( url, KIO::HideProgressInfo );
connect( job, SIGNAL( result(KJob*) ),
this, SLOT( jobFinished(KJob*) ) );