mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 18:32:49 +00:00
kio: sort metadata by name
better everyday (even on sundays): https://ibb.co/MnGq4dx Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
01ebf503a2
commit
34f0c59d46
6 changed files with 52 additions and 47 deletions
|
@ -111,7 +111,7 @@ void KFileMetaDataConfigurationWidget::Private::addItem(const KUrl& uri)
|
|||
|
||||
const QString label = (m_provider == 0)
|
||||
? KFileMetaInfo::name(key)
|
||||
: m_provider->label(uri);
|
||||
: m_provider->label(key);
|
||||
|
||||
QListWidgetItem* item = new QListWidgetItem(label, m_metaDataList);
|
||||
item->setData(Qt::UserRole, key);
|
||||
|
@ -125,10 +125,8 @@ void KFileMetaDataConfigurationWidget::Private::slotLoadingFinished()
|
|||
// the currently shown file item and add them to the list.
|
||||
Q_ASSERT(m_provider != 0);
|
||||
|
||||
QHashIterator<KUrl, QString> it(m_provider->data());
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
addItem(it.key());
|
||||
foreach (const KFileMetaInfoItem &it, m_provider->data()) {
|
||||
addItem(KUrl(it.key()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,24 +52,22 @@ void KFileMetaDataProvider::setItems(const KFileItemList& items)
|
|||
if (item.isDir()) {
|
||||
const int count = subDirectoriesCount(item.url().pathOrUrl());
|
||||
if (count == -1) {
|
||||
m_data.insert(KUrl("kfileitem#size"), QString("Unknown"));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#size", QString::fromLatin1("Unknown")));
|
||||
} else {
|
||||
const QString itemCountString = i18ncp("@item:intable", "%1 item", "%1 items", count);
|
||||
m_data.insert(KUrl("kfileitem#size"), itemCountString);
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#size", itemCountString));
|
||||
}
|
||||
} else {
|
||||
const KFileMetaInfo metaInfo(item.url(), KFileMetaInfo::TechnicalInfo);
|
||||
foreach (const KFileMetaInfoItem& metaInfoItem, metaInfo.items()) {
|
||||
m_data.insert(metaInfoItem.key(), metaInfoItem.value());
|
||||
}
|
||||
m_data = metaInfo.items();
|
||||
|
||||
m_data.insert(KUrl("kfileitem#size"), KIO::convertSize(item.size()));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#size", KIO::convertSize(item.size())));
|
||||
}
|
||||
m_data.insert(KUrl("kfileitem#type"), item.mimeComment());
|
||||
m_data.insert(KUrl("kfileitem#modified"), KGlobal::locale()->formatDateTime(item.time(KFileItem::ModificationTime), KLocale::FancyLongDate));
|
||||
m_data.insert(KUrl("kfileitem#owner"), item.user());
|
||||
m_data.insert(KUrl("kfileitem#permissions"), item.permissionsString());
|
||||
m_data.insert(KUrl("kfileitem#mimetype"), item.mimetype());
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#type", item.mimeComment()));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#modified", KGlobal::locale()->formatDateTime(item.time(KFileItem::ModificationTime), KLocale::FancyLongDate)));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#owner", item.user()));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#permissions", item.permissionsString()));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#mimetype", item.mimetype()));
|
||||
} else if (m_fileItems.count() > 1) {
|
||||
// Calculate the size of all items
|
||||
quint64 totalSize = 0;
|
||||
|
@ -78,15 +76,17 @@ void KFileMetaDataProvider::setItems(const KFileItemList& items)
|
|||
totalSize += item.size();
|
||||
}
|
||||
}
|
||||
m_data.insert(KUrl("kfileitem#totalSize"), KIO::convertSize(totalSize));
|
||||
m_data.append(KFileMetaInfoItem("kfileitem#totalSize", KIO::convertSize(totalSize)));
|
||||
}
|
||||
|
||||
qSort(m_data);
|
||||
|
||||
emit loadingFinished();
|
||||
}
|
||||
|
||||
QString KFileMetaDataProvider::label(const KUrl& metaDataUri) const
|
||||
QString KFileMetaDataProvider::label(const QString& metaDataUri) const
|
||||
{
|
||||
return KFileMetaInfo::name(metaDataUri.prettyUrl());
|
||||
return KFileMetaInfo::name(metaDataUri);
|
||||
}
|
||||
|
||||
KFileItemList KFileMetaDataProvider::items() const
|
||||
|
@ -94,12 +94,12 @@ KFileItemList KFileMetaDataProvider::items() const
|
|||
return m_fileItems;
|
||||
}
|
||||
|
||||
QHash<KUrl, QString> KFileMetaDataProvider::data() const
|
||||
KFileMetaInfoItemList KFileMetaDataProvider::data() const
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
QWidget* KFileMetaDataProvider::createValueWidget(const KUrl& metaDataUri,
|
||||
QWidget* KFileMetaDataProvider::createValueWidget(const QString& metaDataUri,
|
||||
const QString& value,
|
||||
QWidget* parent) const
|
||||
{
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
#ifndef KFILEMETADATAMODEL_H
|
||||
#define KFILEMETADATAMODEL_H
|
||||
|
||||
#include <kurl.h>
|
||||
#include <kfileitem.h>
|
||||
|
||||
#include <QtCore/QHash>
|
||||
|
@ -57,7 +56,7 @@ public:
|
|||
* @return Translated string for the label of the meta data represented
|
||||
* by \p metaDataUri.
|
||||
*/
|
||||
QString label(const KUrl& metaDataUri) const;
|
||||
QString label(const QString& metaDataUri) const;
|
||||
|
||||
/**
|
||||
* @return Meta data for the items that have been set by
|
||||
|
@ -65,14 +64,14 @@ public:
|
|||
* be invoked after the signal loadingFinished() has
|
||||
* been received (otherwise no data will be returned).
|
||||
*/
|
||||
QHash<KUrl, QString> data() const;
|
||||
KFileMetaInfoItemList data() const;
|
||||
|
||||
/**
|
||||
* @return Factory method that returns a widget that should be used
|
||||
* to show the meta data represented by \p metaDataUri. A
|
||||
* QLabel will be returned.
|
||||
*/
|
||||
QWidget* createValueWidget(const KUrl& metaDataUri,
|
||||
QWidget* createValueWidget(const QString& metaDataUri,
|
||||
const QString& value,
|
||||
QWidget* parent) const;
|
||||
|
||||
|
@ -95,7 +94,7 @@ private:
|
|||
static int subDirectoriesCount(const QString &path);
|
||||
|
||||
QList<KFileItem> m_fileItems;
|
||||
QHash<KUrl, QString> m_data;
|
||||
KFileMetaInfoItemList m_data;
|
||||
};
|
||||
|
||||
#endif // KFILEMETADATAMODEL_H
|
||||
|
|
|
@ -168,15 +168,14 @@ void KFileMetaDataWidget::Private::slotLoadingFinished()
|
|||
m_gridLayout->setSpacing(q->fontMetrics().height() / 4);
|
||||
}
|
||||
|
||||
QHash<KUrl, QString> data = m_provider->data();
|
||||
KFileMetaInfoItemList data = m_provider->data();
|
||||
|
||||
// Remove all items, that are marked as hidden in kmetainformationrc
|
||||
KConfig config("kmetainformationrc", KConfig::NoGlobals);
|
||||
KConfigGroup settings = config.group("Show");
|
||||
QHash<KUrl, QString>::iterator it = data.begin();
|
||||
KFileMetaInfoItemList::iterator it = data.begin();
|
||||
while (it != data.end()) {
|
||||
const QString uriString = it.key().prettyUrl();
|
||||
if (!settings.readEntry(uriString, true)) {
|
||||
if (!settings.readEntry(it->key(), true)) {
|
||||
it = data.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
|
@ -186,9 +185,9 @@ void KFileMetaDataWidget::Private::slotLoadingFinished()
|
|||
// Iterate through all remaining items embed the label
|
||||
// and the value as new row in the widget
|
||||
int rowIndex = 0;
|
||||
const QList<KUrl> keys = data.keys();
|
||||
foreach (const KUrl& key, keys) {
|
||||
const QString value = data.value(key);
|
||||
foreach (const KFileMetaInfoItem& item, data) {
|
||||
const QString key = item.key();
|
||||
const QString value = item.value();
|
||||
if (value.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ KFileMetaInfoItem::KFileMetaInfoItem()
|
|||
{
|
||||
}
|
||||
|
||||
KFileMetaInfoItem::KFileMetaInfoItem(const KFileMetaInfoItem& item)
|
||||
: d(item.d)
|
||||
KFileMetaInfoItem::KFileMetaInfoItem(const KFileMetaInfoItem &other)
|
||||
: d(other.d)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -42,10 +42,10 @@ KFileMetaInfoItem::~KFileMetaInfoItem()
|
|||
{
|
||||
}
|
||||
|
||||
const KFileMetaInfoItem& KFileMetaInfoItem::operator=(const KFileMetaInfoItem& item)
|
||||
const KFileMetaInfoItem& KFileMetaInfoItem::operator=(const KFileMetaInfoItem& other)
|
||||
{
|
||||
d = item.d;
|
||||
return item;
|
||||
d = other.d;
|
||||
return other;
|
||||
}
|
||||
|
||||
const QString& KFileMetaInfoItem::key() const
|
||||
|
@ -53,17 +53,22 @@ const QString& KFileMetaInfoItem::key() const
|
|||
return d->key;
|
||||
}
|
||||
|
||||
const QString& KFileMetaInfoItem::name() const
|
||||
{
|
||||
return d->name;
|
||||
}
|
||||
|
||||
const QString& KFileMetaInfoItem::value() const
|
||||
{
|
||||
return d->value;
|
||||
}
|
||||
|
||||
const QString& KFileMetaInfoItem::name() const
|
||||
{
|
||||
return d->name;
|
||||
}
|
||||
|
||||
bool KFileMetaInfoItem::isValid() const
|
||||
{
|
||||
return (!d->key.isEmpty() && !d->value.isEmpty());
|
||||
}
|
||||
|
||||
bool KFileMetaInfoItem::operator<(const KFileMetaInfoItem &other) const
|
||||
{
|
||||
return d->name < other.d->name;
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ public:
|
|||
/**
|
||||
* @brief Copy constructor
|
||||
**/
|
||||
KFileMetaInfoItem(const KFileMetaInfoItem& item);
|
||||
KFileMetaInfoItem(const KFileMetaInfoItem& other);
|
||||
/**
|
||||
* @brief Constructor used by plugins
|
||||
**/
|
||||
|
@ -50,7 +50,7 @@ public:
|
|||
/**
|
||||
* @brief Copy operator
|
||||
**/
|
||||
const KFileMetaInfoItem& operator=(const KFileMetaInfoItem& item);
|
||||
const KFileMetaInfoItem& operator=(const KFileMetaInfoItem& other);
|
||||
/**
|
||||
* @brief Retrieve the key of this item
|
||||
**/
|
||||
|
@ -59,14 +59,18 @@ public:
|
|||
* @brief Retrieve the value of this item
|
||||
**/
|
||||
const QString& value() const;
|
||||
/**
|
||||
* @brief Returns localized name of the key
|
||||
**/
|
||||
const QString& name() const;
|
||||
/**
|
||||
* @brief Is this a valid item.
|
||||
**/
|
||||
bool isValid() const;
|
||||
/**
|
||||
* @brief Returns localized name of the key
|
||||
* @brief Returns if item is less than other item
|
||||
**/
|
||||
const QString& name() const;
|
||||
bool operator<(const KFileMetaInfoItem &other) const;
|
||||
private:
|
||||
QSharedDataPointer<KFileMetaInfoItemPrivate> d;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue