mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 16:31:21 +00:00
Overwrite the changed role value with an empty QVariant,
because the nepomuk roles provider doesn't overwrite it when the property value list is empty. BUG: 322348 REVIEW: 111505 FIXED-IN: 4.11.0
This commit is contained in:
parent
087bdf492c
commit
5b81abea5b
|
@ -294,7 +294,7 @@ void KFileItemModelRolesUpdater::setRoles(const QSet<QByteArray>& roles)
|
||||||
|
|
||||||
m_nepomukResourceWatcher = new Nepomuk2::ResourceWatcher(this);
|
m_nepomukResourceWatcher = new Nepomuk2::ResourceWatcher(this);
|
||||||
connect(m_nepomukResourceWatcher, SIGNAL(propertyChanged(Nepomuk2::Resource,Nepomuk2::Types::Property,QVariantList,QVariantList)),
|
connect(m_nepomukResourceWatcher, SIGNAL(propertyChanged(Nepomuk2::Resource,Nepomuk2::Types::Property,QVariantList,QVariantList)),
|
||||||
this, SLOT(applyChangedNepomukRoles(Nepomuk2::Resource)));
|
this, SLOT(applyChangedNepomukRoles(Nepomuk2::Resource,Nepomuk2::Types::Property)));
|
||||||
} else if (!hasNepomukRole && m_nepomukResourceWatcher) {
|
} else if (!hasNepomukRole && m_nepomukResourceWatcher) {
|
||||||
delete m_nepomukResourceWatcher;
|
delete m_nepomukResourceWatcher;
|
||||||
m_nepomukResourceWatcher = 0;
|
m_nepomukResourceWatcher = 0;
|
||||||
|
@ -721,7 +721,7 @@ void KFileItemModelRolesUpdater::resolveRecentlyChangedItems()
|
||||||
updateChangedItems();
|
updateChangedItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KFileItemModelRolesUpdater::applyChangedNepomukRoles(const Nepomuk2::Resource& resource)
|
void KFileItemModelRolesUpdater::applyChangedNepomukRoles(const Nepomuk2::Resource& resource, const Nepomuk2::Types::Property& property)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_NEPOMUK
|
#ifdef HAVE_NEPOMUK
|
||||||
if (!Nepomuk2::ResourceManager::instance()->initialized()) {
|
if (!Nepomuk2::ResourceManager::instance()->initialized()) {
|
||||||
|
@ -740,6 +740,14 @@ void KFileItemModelRolesUpdater::applyChangedNepomukRoles(const Nepomuk2::Resour
|
||||||
QHash<QByteArray, QVariant> data = rolesData(item);
|
QHash<QByteArray, QVariant> data = rolesData(item);
|
||||||
|
|
||||||
const KNepomukRolesProvider& rolesProvider = KNepomukRolesProvider::instance();
|
const KNepomukRolesProvider& rolesProvider = KNepomukRolesProvider::instance();
|
||||||
|
const QByteArray role = rolesProvider.roleForPropertyUri(property.uri());
|
||||||
|
if (!role.isEmpty() && m_roles.contains(role)) {
|
||||||
|
// Overwrite the changed role value with an empty QVariant, because the roles
|
||||||
|
// provider doesn't overwrite it when the property value list is empty.
|
||||||
|
// See bug 322348
|
||||||
|
data.insert(role, QVariant());
|
||||||
|
}
|
||||||
|
|
||||||
QHashIterator<QByteArray, QVariant> it(rolesProvider.roleValues(resource, m_roles));
|
QHashIterator<QByteArray, QVariant> it(rolesProvider.roleValues(resource, m_roles));
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
it.next();
|
it.next();
|
||||||
|
|
|
@ -43,6 +43,10 @@ class QTimer;
|
||||||
{
|
{
|
||||||
class ResourceWatcher;
|
class ResourceWatcher;
|
||||||
class Resource;
|
class Resource;
|
||||||
|
namespace Types
|
||||||
|
{
|
||||||
|
class Property;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// Required for the slot applyChangedNepomukRoles() that
|
// Required for the slot applyChangedNepomukRoles() that
|
||||||
|
@ -208,7 +212,7 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void resolveRecentlyChangedItems();
|
void resolveRecentlyChangedItems();
|
||||||
|
|
||||||
void applyChangedNepomukRoles(const Nepomuk2::Resource& resource);
|
void applyChangedNepomukRoles(const Nepomuk2::Resource& resource, const Nepomuk2::Types::Property& property);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is invoked if a directory watched by KDirWatch got dirty. Updates
|
* Is invoked if a directory watched by KDirWatch got dirty. Updates
|
||||||
|
|
|
@ -68,7 +68,7 @@ QHash<QByteArray, QVariant> KNepomukRolesProvider::roleValues(const Nepomuk2::Re
|
||||||
it.next();
|
it.next();
|
||||||
|
|
||||||
const Nepomuk2::Types::Property property = it.key();
|
const Nepomuk2::Types::Property property = it.key();
|
||||||
const QByteArray role = m_roleForUri.value(property.uri());
|
const QByteArray role = roleForPropertyUri(property.uri());
|
||||||
if (role.isEmpty() || !roles.contains(role)) {
|
if (role.isEmpty() || !roles.contains(role)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -118,6 +118,11 @@ QHash<QByteArray, QVariant> KNepomukRolesProvider::roleValues(const Nepomuk2::Re
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray KNepomukRolesProvider::roleForPropertyUri(const QUrl& uri) const
|
||||||
|
{
|
||||||
|
return m_roleForUri.value(uri);
|
||||||
|
}
|
||||||
|
|
||||||
KNepomukRolesProvider::KNepomukRolesProvider() :
|
KNepomukRolesProvider::KNepomukRolesProvider() :
|
||||||
m_roles(),
|
m_roles(),
|
||||||
m_roleForUri()
|
m_roleForUri()
|
||||||
|
|
|
@ -55,6 +55,8 @@ public:
|
||||||
QHash<QByteArray, QVariant> roleValues(const Nepomuk2::Resource& resource,
|
QHash<QByteArray, QVariant> roleValues(const Nepomuk2::Resource& resource,
|
||||||
const QSet<QByteArray>& roles) const;
|
const QSet<QByteArray>& roles) const;
|
||||||
|
|
||||||
|
QByteArray roleForPropertyUri(const QUrl& uri) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
KNepomukRolesProvider();
|
KNepomukRolesProvider();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue