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 *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 bundles, QListWidget *w) +void DlgBundleManager::fillListWidget(QVector bundles, QListWidget *w) { w->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); w->setSelectionMode(QAbstractItemView::MultiSelection); @@ -353,8 +357,7 @@ void DlgBundleManager::fillListWidget(QList 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 *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 bundles, QListWidget *w); - - void refreshListData(); + void fillListWidget(QVector bundles, QListWidget *w); - QMap m_blacklistedBundles; - QMap m_activeBundles; - QMap m_Bundles; + QVector m_blacklistedBundles; + QVector m_activeBundles; KisResourceBundle *m_currentBundle; KisActionManager *m_actionManager;