mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
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:
parent
3371f4866a
commit
4e1fc45705
23 changed files with 42 additions and 76 deletions
|
@ -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())));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue