(An Untitled Masterwork)
ActivePublic

Authored by rempt on Aug 10 2017, 1:20 PM.
diff --git a/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp b/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp
index c86070d241..672cb9b51f 100644
--- a/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp
+++ b/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp
@@ -134,37 +134,40 @@ DlgBundleManager::DlgBundleManager(ResourceManager *resourceManager, KisActionMa
connect(m_ui->bnDeleteBundle, SIGNAL(clicked()), SLOT(deleteBundle()));
- connect(m_ui->searchLineEdit, SIGNAL(textChanged(QString)), SLOT(searchTextChanged(QString)));
- connect(m_ui->searchLineEdit, SIGNAL(textEdited(QString)), SLOT(searchTextChanged(QString)));
+ connect(m_ui->searchLineEdit, SIGNAL(textChanged(QString)), SLOT(refreshListData()));
+ connect(m_ui->searchLineEdit, SIGNAL(textEdited(QString)), SLOT(refreshListData()));
}
DlgBundleManager::~DlgBundleManager()
{
delete(m_ui->m_importResources->menu());
+ qDeleteAll(m_blacklistedBundles);
+ m_blacklistedBundles.clear();
}
-
void DlgBundleManager::refreshListData()
{
KoResourceServer<KisResourceBundle> *bundleServer = KisResourceServerProvider::instance()->resourceBundleServer();
m_ui->listActive->clear();
+ qDeleteAll(m_blacklistedBundles);
+ m_blacklistedBundles.clear();
Q_FOREACH (const QString &f, bundleServer->blackListedFiles()) {
KisResourceBundle *bundle = new KisResourceBundle(f);
bundle->load();
if (bundle->valid()) {
bundle->setInstalled(false);
- m_blacklistedBundles[f] = bundle;
+ m_blacklistedBundles.append(bundle);
}
}
Q_FOREACH (KisResourceBundle *bundle, bundleServer->resources()) {
- if (bundle->valid()) {
- m_activeBundles[bundle->filename()] = bundle;
+ if (bundle->valid() && bundle->name().contains(m_ui->searchLineEdit->text())) {
+ m_activeBundles.append(bundle);
}
}
- fillListWidget(m_activeBundles.values(), m_ui->listActive);
+ fillListWidget(m_activeBundles + m_blacklistedBundles, m_ui->listActive);
}
void DlgBundleManager::accept()
@@ -181,7 +184,7 @@ void DlgBundleManager::accept()
if (!bundle) {
// Get it from the blacklisted bundles
- Q_FOREACH (KisResourceBundle *b2, m_blacklistedBundles.values()) {
+ Q_FOREACH (KisResourceBundle *b2, m_blacklistedBundles) {
if (b2->md5() == ba) {
bundle = b2;
break;
@@ -245,7 +248,7 @@ void DlgBundleManager::itemSelected(QListWidgetItem *current, QListWidgetItem *)
if (!bundle) {
// Get it from the blacklisted bundles
- Q_FOREACH (KisResourceBundle *b2, m_blacklistedBundles.values()) {
+ Q_FOREACH (KisResourceBundle *b2, m_blacklistedBundles) {
if (b2->md5() == ba) {
bundle = b2;
break;
@@ -253,7 +256,6 @@ void DlgBundleManager::itemSelected(QListWidgetItem *current, QListWidgetItem *)
}
}
-
if (bundle) {
m_currentBundle = bundle;
@@ -322,8 +324,10 @@ void DlgBundleManager::editBundle()
{
if (m_currentBundle) {
DlgCreateBundle dlg(m_currentBundle);
- m_activeBundles.remove(m_currentBundle->filename());
- m_currentBundle = 0;
+ if (m_activeBundles.contains(m_currentBundle)) {
+ m_activeBundles.remove(m_activeBundles.indexOf(m_currentBundle));
+ m_currentBundle = 0;
+ }
if (dlg.exec() != QDialog::Accepted) {
return;
}
@@ -332,7 +336,7 @@ void DlgBundleManager::editBundle()
}
}
-void DlgBundleManager::fillListWidget(QList<KisResourceBundle *> bundles, QListWidget *w)
+void DlgBundleManager::fillListWidget(QVector<KisResourceBundle *> bundles, QListWidget *w)
{
w->setIconSize(QSize(ICON_SIZE, ICON_SIZE));
w->setSelectionMode(QAbstractItemView::MultiSelection);
@@ -353,8 +357,7 @@ void DlgBundleManager::fillListWidget(QList<KisResourceBundle *> bundles, QListW
item->setData(Qt::UserRole, bundle->md5());
w->addItem(item);
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
- item->setCheckState(Qt::Unchecked);
-
+ item->setCheckState(m_activeBundles.contains(bundle) ? Qt::Checked : Qt::Unchecked);
}
}
@@ -423,33 +426,11 @@ void DlgBundleManager::deleteBundle()
QByteArray ba = item->data(Qt::UserRole).toByteArray();
KisResourceBundle *bundle = bundleServer->resourceByMD5(ba);
- m_activeBundles.remove(m_currentBundle->filename());
+ if (m_activeBundles.contains(m_currentBundle)) {
+ m_activeBundles.remove(m_activeBundles.indexOf(m_currentBundle));
+ }
m_ui->listActive->takeItem(m_ui->listActive->row(item));
bundleServer->removeResourceAndBlacklist(bundle);
}
}
-void DlgBundleManager::searchTextChanged(const QString& lineEditText)
-{
- KoResourceServer<KisResourceBundle> *bundleServer = KisResourceServerProvider::instance()->resourceBundleServer();
-
- m_ui->listActive->clear();
-
- Q_FOREACH (const QString &f, bundleServer->blackListedFiles()) {
- KisResourceBundle *bundle = new KisResourceBundle(f);
- bundle->load();
- if (bundle->valid()) {
- bundle->setInstalled(false);
- m_blacklistedBundles[f] = bundle;
- }
- }
-
- Q_FOREACH (KisResourceBundle *bundle, bundleServer->resources()) {
- if(bundle->name().contains(lineEditText)) {
- m_ui->listActive->clear();
- m_Bundles[bundle->filename()] = bundle;
- fillListWidget(m_Bundles.values(), m_ui->listActive);
- }
- }
- emit resourceTextChanged(lineEditText);
-}
diff --git a/plugins/extensions/resourcemanager/dlg_bundle_manager.h b/plugins/extensions/resourcemanager/dlg_bundle_manager.h
index f324ef0165..2c65840657 100644
--- a/plugins/extensions/resourcemanager/dlg_bundle_manager.h
+++ b/plugins/extensions/resourcemanager/dlg_bundle_manager.h
@@ -91,8 +91,7 @@ private Q_SLOTS:
/// deleteBundle provides the provision to blackList the bundles and user could manually clean up the reasources.
void deleteBundle();
- /// Allows to search the bundles created in the resource manager.
- void searchTextChanged(const QString &lineEditText);
+ void refreshListData();
private:
@@ -100,13 +99,10 @@ private:
Ui::WdgDlgBundleManager *m_ui;
/// Populates the listWidget in the Bundle manager with the bundles.
- void fillListWidget(QList<KisResourceBundle*> bundles, QListWidget *w);
-
- void refreshListData();
+ void fillListWidget(QVector<KisResourceBundle *> bundles, QListWidget *w);
- QMap<QString, KisResourceBundle*> m_blacklistedBundles;
- QMap<QString, KisResourceBundle*> m_activeBundles;
- QMap<QString, KisResourceBundle*> m_Bundles;
+ QVector<KisResourceBundle*> m_blacklistedBundles;
+ QVector<KisResourceBundle*> m_activeBundles;
KisResourceBundle *m_currentBundle;
KisActionManager *m_actionManager;
rempt created this paste.Aug 10 2017, 1:20 PM
rempt created this object in space S1 KDE Community.