kio: remove unused KFileMetaInfo flags

when it comes to KFileMetaInfo its bottleneck is determening what plugin to
use for the given URL/path - determening MIME type, matching globs, etc.
and it still is quite fast to the point where the flags are simply
redundant

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-07-18 03:36:06 +03:00
parent 3371f4866a
commit 4e1fc45705
23 changed files with 42 additions and 76 deletions

View file

@ -60,7 +60,7 @@ void KFileMetaDataProvider::setItems(const KFileItemList& items)
m_data.append(KFileMetaInfoItem("kfileitem#size", itemCountString));
}
} else {
const KFileMetaInfo metaInfo(item.url(), KFileMetaInfo::TechnicalInfo);
const KFileMetaInfo metaInfo(item.url());
m_data = metaInfo.items();
m_data.append(KFileMetaInfoItem("kfileitem#size", KIO::convertSize(item.size())));

View file

@ -1227,7 +1227,7 @@ void KFileItem::setMetaInfo( const KFileMetaInfo & info ) const
d->m_metaInfo = info;
}
KFileMetaInfo KFileItem::metaInfo(bool autoget, int what) const
KFileMetaInfo KFileItem::metaInfo(bool autoget) const
{
if (!d)
return KFileMetaInfo();
@ -1235,7 +1235,7 @@ KFileMetaInfo KFileItem::metaInfo(bool autoget, int what) const
if (isFile() && autoget && !d->m_metaInfo.isValid())
{
KUrl url(mostLocalUrl());
d->m_metaInfo = KFileMetaInfo(url.toLocalFile(), (KFileMetaInfo::What)what);
d->m_metaInfo = KFileMetaInfo(url.toLocalFile());
}
return d->m_metaInfo;
}

View file

@ -486,13 +486,9 @@ public:
/**
* Returns the metainfo of this item.
*
* (since 4.4.3) By default it uses the KFileMetaInfo::ContentInfo | KFileMetaInfo::TechnicalInfo.
* If you need more information, create your own KFileMetaInfo object and set it using setMetaInfo()
* @param autoget if true, the metainfo will automatically be created
* @param what how much metainfo you need to retrieve from the file (KFileMetaInfo::WhatFlag)
*/
KFileMetaInfo metaInfo(bool autoget = true,
int what = KFileMetaInfo::ContentInfo | KFileMetaInfo::TechnicalInfo) const;
KFileMetaInfo metaInfo(bool autoget = true) const;
/**
* Tries to give a local URL for this file item if possible.

View file

@ -30,10 +30,9 @@ KFileMetaDataPlugin::~KFileMetaDataPlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataPlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataPlugin::metaData(const KUrl &url)
{
Q_UNUSED(url);
Q_UNUSED(flags);
return QList<KFileMetaInfoItem>();
}

View file

@ -46,7 +46,7 @@ public:
KFileMetaDataPlugin(QObject *parent = nullptr);
~KFileMetaDataPlugin();
virtual QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags);
virtual QList<KFileMetaInfoItem> metaData(const KUrl &url);
};
#endif // KFILEMETADATA_H

View file

@ -59,14 +59,14 @@ public:
KFileMetaInfoItemList items;
KUrl m_url;
void init(const QString &filename, const KUrl& url, KFileMetaInfo::WhatFlags w);
void operator=(const KFileMetaInfoPrivate& kfmip) {
void init(const QString &filename, const KUrl& url);
void operator=(const KFileMetaInfoPrivate &kfmip) {
items = kfmip.items;
m_url = kfmip.m_url;
}
};
void KFileMetaInfoPrivate::init(const QString &filename, const KUrl &url, KFileMetaInfo::WhatFlags w)
void KFileMetaInfoPrivate::init(const QString &filename, const KUrl &url)
{
m_url = url;
@ -96,7 +96,7 @@ void KFileMetaInfoPrivate::init(const QString &filename, const KUrl &url, KFileM
kDebug() << "Extracting metadata via" << kfmdname;
KFileMetaDataPlugin *kfmdplugininstance = kfmdplugin->createInstance<KFileMetaDataPlugin>();
if (kfmdplugininstance) {
items.append(kfmdplugininstance->metaData(url, w));
items.append(kfmdplugininstance->metaData(url));
delete kfmdplugininstance;
} else {
kWarning() << "Could not create KFileMetaDataPlugin instance";
@ -135,21 +135,21 @@ void KFileMetaInfoPrivate::init(const QString &filename, const KUrl &url, KFileM
items.append(kfmi2);
}
KFileMetaInfo::KFileMetaInfo(const QString& path, KFileMetaInfo::WhatFlags w)
KFileMetaInfo::KFileMetaInfo(const QString& path)
: d(new KFileMetaInfoPrivate())
{
QFileInfo fileinfo(path);
// only open the file if it is not a pipe
if (fileinfo.isFile() || fileinfo.isDir() || fileinfo.isSymLink()) {
d->init(fileinfo.fileName(), KUrl(path), w);
d->init(fileinfo.fileName(), KUrl(path));
}
}
KFileMetaInfo::KFileMetaInfo(const KUrl& url, KFileMetaInfo::WhatFlags w)
KFileMetaInfo::KFileMetaInfo(const KUrl& url)
: d(new KFileMetaInfoPrivate())
{
const QString filename = QFileInfo(url.toLocalFile()).fileName();
d->init(filename, url, w);
d->init(filename, url);
}
KFileMetaInfo::KFileMetaInfo()
@ -157,12 +157,12 @@ KFileMetaInfo::KFileMetaInfo()
{
}
KFileMetaInfo::KFileMetaInfo(const KFileMetaInfo& kfmi)
KFileMetaInfo::KFileMetaInfo(const KFileMetaInfo &kfmi)
: d(kfmi.d)
{
}
KFileMetaInfo& KFileMetaInfo::operator=(KFileMetaInfo const& kfmi)
KFileMetaInfo& KFileMetaInfo::operator=(const KFileMetaInfo &kfmi)
{
d = kfmi.d;
return *this;

View file

@ -33,45 +33,25 @@ class KFileMetaInfoPrivate;
* will be retrieved and stored in the instance. The data can be inspected
* through KFileMetaInfoItem objects.
**/
class KIO_EXPORT KFileMetaInfo {
class KIO_EXPORT KFileMetaInfo
{
public:
/**
* This is used to specify what a KFileMetaInfo object should read, so
* you can specify if you want to read "expensive" items or not.
* This is like a preset which can be customized by passing additional
* parameters to constructors.
*/
enum What {
TechnicalInfo = 0x1, /** extract technical details about the file, like
e.g. play time, resolution or a compression type */
ContentInfo = 0x2, /** read information about the content of the file
like comments or id3 tags */
ExternalSources = 0x4, /** read external metadata sources such as
filesystem based extended attributes if
they are supported for the filesystem;
RDF storages etc */
Everything = TechnicalInfo | ContentInfo | ExternalSources // read everything, even if it might take a while
};
Q_DECLARE_FLAGS(WhatFlags, What)
/**
* @brief Construct a KFileMetaInfo that contains metainformation about
* the resource pointed to by @p path.
*
* When w is not Everything, a limit of 64kbytes is imposed on the file size.
* @note The path must be full (start with a slash) or relative, e.g.
* "/home/joe/pic.png" or "../joe/pic.png". If it starts with a URL scheme,
* e.g. "file:///home/joe/pic.png" it will be considered invalid. If it may
* start with URL scheme use the constructor that takes KUrl.
**/
explicit KFileMetaInfo(const QString& path, WhatFlags w = Everything);
explicit KFileMetaInfo(const QString &path);
/**
* @brief Construct a KFileMetaInfo that contains metainformation about
* the resource pointed to by @p url.
* @note that c'tor is not thread-safe
**/
KFileMetaInfo(const KUrl& url, WhatFlags w = Everything);
KFileMetaInfo(const KUrl &url);
/**
* @brief Construct an empty, invalid KFileMetaInfo instance.
**/
@ -79,7 +59,7 @@ public:
/**
* @brief Construct a KFileMetaInfo instance from another one.
**/
KFileMetaInfo(const KFileMetaInfo& kfmi);
KFileMetaInfo(const KFileMetaInfo &kfmi);
/**
* @brief Destructor.
**/
@ -87,13 +67,14 @@ public:
/**
* @brief Copy a KFileMetaInfo instance from another one.
**/
KFileMetaInfo& operator=(KFileMetaInfo const& kfmi);
KFileMetaInfo& operator=(const KFileMetaInfo &kfmi);
/**
* @brief Retrieve all the items.
**/
const KFileMetaInfoItemList& items() const;
KFileMetaInfoItem& item(const QString& key);
const KFileMetaInfoItem& item(const QString& key) const;
KFileMetaInfoItem& item(const QString &key);
const KFileMetaInfoItem& item(const QString &key) const;
bool isValid() const;
QStringList preferredKeys() const;
QStringList keys() const;
@ -106,11 +87,9 @@ public:
/**
* @brief Returns localized name of @p key
**/
static QString name(const QString& key);
static QString name(const QString &key);
private:
QSharedDataPointer<KFileMetaInfoPrivate> d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(KFileMetaInfo::WhatFlags)
#endif // KFILEMETAINFO_H

View file

@ -39,9 +39,8 @@ KFileMetaDataDjVuLibrePlugin::~KFileMetaDataDjVuLibrePlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataDjVuLibrePlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataDjVuLibrePlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toUtf8();
ddjvu_context_t* djvuctx = ddjvu_context_create("kfilemetadata_djvulibre");

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataDjVuLibrePlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataDjVuLibrePlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_DJVULIBRE_H

View file

@ -53,9 +53,8 @@ KFileMetaDataEPubPlugin::~KFileMetaDataEPubPlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataEPubPlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataEPubPlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
struct epub *epubdocument = epub_open(urlpath.constData(), 1);

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataEPubPlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataEPubPlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_EPUB_H

View file

@ -32,9 +32,8 @@ KFileMetaDataExiv2Plugin::~KFileMetaDataExiv2Plugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataExiv2Plugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataExiv2Plugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const KExiv2 kexiv2(url.toLocalFile());
foreach (const KExiv2Property &kexiv2property, kexiv2.metadata()) {

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataExiv2Plugin(QObject* parent, const QVariantList &args);
~KFileMetaDataExiv2Plugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_EXIV2_H

View file

@ -42,9 +42,8 @@ KFileMetaDataFFmpegPlugin::~KFileMetaDataFFmpegPlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataFFmpegPlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataFFmpegPlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
AVFormatContext *ffmpegcontext = NULL;

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataFFmpegPlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataFFmpegPlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_FFMPEG_H

View file

@ -34,9 +34,8 @@ KFileMetaDataFreetypePlugin::~KFileMetaDataFreetypePlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataFreetypePlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataFreetypePlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
FT_Library ftlibrary;

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataFreetypePlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataFreetypePlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_FREETYPE_H

View file

@ -57,9 +57,8 @@ KFileMetaDataPopplerPlugin::~KFileMetaDataPopplerPlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataPopplerPlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataPopplerPlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
poppler::document *popplerdocument = poppler::document::load_from_file(std::string(urlpath.constData(), urlpath.size()));

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataPopplerPlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataPopplerPlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_POPPLER_H

View file

@ -32,9 +32,8 @@ KFileMetaDataSpectrePlugin::~KFileMetaDataSpectrePlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataSpectrePlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataSpectrePlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
SpectreDocument *spectredocument = spectre_document_new();

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataSpectrePlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataSpectrePlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_SPECTRE_H

View file

@ -35,9 +35,8 @@ KFileMetaDataTagLibPlugin::~KFileMetaDataTagLibPlugin()
{
}
QList<KFileMetaInfoItem> KFileMetaDataTagLibPlugin::metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags)
QList<KFileMetaInfoItem> KFileMetaDataTagLibPlugin::metaData(const KUrl &url)
{
Q_UNUSED(flags);
QList<KFileMetaInfoItem> result;
const QByteArray urlpath = url.toLocalFile().toLocal8Bit();
TagLib::FileRef taglibfile(urlpath);

View file

@ -28,7 +28,7 @@ public:
KFileMetaDataTagLibPlugin(QObject* parent, const QVariantList &args);
~KFileMetaDataTagLibPlugin();
QList<KFileMetaInfoItem> metaData(const KUrl &url, const KFileMetaInfo::WhatFlags flags) final;
QList<KFileMetaInfoItem> metaData(const KUrl &url) final;
};
#endif // KFILEMETADATA_TAGLIB_H