diff --git a/libs/resources/KisResourceLocator.cpp b/libs/resources/KisResourceLocator.cpp index 17ebe0f8d1840bd31c0346bde50605fd53bcf46f..ab7819db48945d6c4f2d0f5f01cc55ae21271d3a 100644 --- a/libs/resources/KisResourceLocator.cpp +++ b/libs/resources/KisResourceLocator.cpp @@ -407,6 +407,8 @@ void KisResourceLocator::purge() bool KisResourceLocator::addStorage(const QString &storageLocation, KisResourceStorageSP storage) { + qDebug() << "addStorage" << storageLocation << storage; + Q_ASSERT(!d->storages.contains(storageLocation)); d->storages[storageLocation] = storage; @@ -416,7 +418,6 @@ bool KisResourceLocator::addStorage(const QString &storageLocation, KisResourceS return false; } emit storageAdded(storage->location()); - return true; } diff --git a/libs/resources/KisResourceModel.cpp b/libs/resources/KisResourceModel.cpp index 44773c1b1bcee3aaf60f569ccafe93b34639a021..35cd220c155ad6ff234129eff3ef04fb9f681c1a 100644 --- a/libs/resources/KisResourceModel.cpp +++ b/libs/resources/KisResourceModel.cpp @@ -16,8 +16,11 @@ #include #include +#include #include +#include + #include "KisResourceQueryMapper.h" struct KisAllResourcesModel::Private { @@ -34,6 +37,8 @@ KisAllResourcesModel::KisAllResourcesModel(const QString &resourceType, QObject connect(KisResourceLocator::instance(), SIGNAL(storageAdded(const QString&)), this, SLOT(addStorage(const QString&))); connect(KisResourceLocator::instance(), SIGNAL(storageRemoved(const QString&)), this, SLOT(removeStorage(const QString&))); + connect(KisStorageModel::instance(), SIGNAL(storageEnabled(const QString&)), this, SLOT(addStorage(const QString&))); + connect(KisStorageModel::instance(), SIGNAL(storageDisabled(const QString&)), this, SLOT(removeStorage(const QString&))); d->resourceType = resourceType; @@ -443,7 +448,7 @@ int KisAllResourcesModel::rowCount(const QModelIndex &) const } -void KisAllResourcesModel::addStorage(const QString &/*location*/) +void KisAllResourcesModel::addStorage(const QString &location) { beginResetModel(); resetQuery(); @@ -451,7 +456,7 @@ void KisAllResourcesModel::addStorage(const QString &/*location*/) } -void KisAllResourcesModel::removeStorage(const QString &/*location*/) +void KisAllResourcesModel::removeStorage(const QString &location) { beginResetModel(); resetQuery(); diff --git a/libs/resources/KisStorageModel.cpp b/libs/resources/KisStorageModel.cpp index cc6970766f68818f6b072bb19efac43d952f4514..e1961173e70f51742b6d74bc0fa41ef20e754d22 100644 --- a/libs/resources/KisStorageModel.cpp +++ b/libs/resources/KisStorageModel.cpp @@ -229,7 +229,16 @@ bool KisStorageModel::setData(const QModelIndex &index, const QVariant &value, i } } + emit dataChanged(index, index, {role}); + + if (value.toBool()) { + emit storageEnabled(data(index, Qt::UserRole + Location).toString()); + } + else { + emit storageDisabled(data(index, Qt::UserRole + Location).toString()); + } + return true; } diff --git a/libs/resources/KisStorageModel.h b/libs/resources/KisStorageModel.h index ec632187ec886eb291e020a98033989655feed6e..39a2d911aa61c85aaad6dfabbedd59392771ec9d 100644 --- a/libs/resources/KisStorageModel.h +++ b/libs/resources/KisStorageModel.h @@ -52,6 +52,11 @@ public: QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; +Q_SIGNALS: + + void storageEnabled(const QString &storage); + void storageDisabled(const QString &storage); + private Q_SLOTS: /// Called whenever a storage is added