diff --git a/libs/ui/dialogs/kis_dlg_blacklist_cleanup.cpp b/libs/ui/dialogs/kis_dlg_blacklist_cleanup.cpp --- a/libs/ui/dialogs/kis_dlg_blacklist_cleanup.cpp +++ b/libs/ui/dialogs/kis_dlg_blacklist_cleanup.cpp @@ -62,5 +62,8 @@ if (cbRemovePattern->isChecked()) { KoResourceServerProvider::instance()->patternServer()->removeBlackListedFiles(); } + if (cbRemoveBundles->isChecked()) { + KisResourceServerProvider::instance()->resourceBundleServer()->removeBlackListedFiles(); + } } diff --git a/libs/ui/forms/wdgdlgblacklistcleanup.ui b/libs/ui/forms/wdgdlgblacklistcleanup.ui --- a/libs/ui/forms/wdgdlgblacklistcleanup.ui +++ b/libs/ui/forms/wdgdlgblacklistcleanup.ui @@ -7,7 +7,7 @@ 0 0 457 - 200 + 312 @@ -117,6 +117,16 @@ + + + + Bundles + + + true + + + diff --git a/plugins/extensions/resourcemanager/dlg_bundle_manager.h b/plugins/extensions/resourcemanager/dlg_bundle_manager.h --- a/plugins/extensions/resourcemanager/dlg_bundle_manager.h +++ b/plugins/extensions/resourcemanager/dlg_bundle_manager.h @@ -44,8 +44,6 @@ private Q_SLOTS: void accept() override; - void addSelected(); - void removeSelected(); void itemSelected(QListWidgetItem *current, QListWidgetItem *previous); void itemSelected(QListWidgetItem *current); void editBundle(); @@ -56,6 +54,9 @@ void slotShareResources(); void setKnsrcFile(const QString& knsrcFileArg); + void deleteBundle(); + void searchTextChanged(); + private: QWidget *m_page; @@ -71,6 +72,8 @@ KisActionManager *m_actionManager; ResourceManager *m_resourceManager; + QString searchTerm; + class Private; Private *const d; }; diff --git a/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp b/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp --- a/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp +++ b/plugins/extensions/resourcemanager/dlg_bundle_manager.cpp @@ -33,6 +33,7 @@ #include "kis_action.h" #include #include "KoResourceModel.h" +#include "KoResourceServer.h" #include "content_dowloader_dialog.h" @@ -63,26 +64,21 @@ resize(m_page->sizeHint()); setButtons(Ok | Cancel); setDefaultButton(Ok); + m_ui->bnDeleteBundle->setVisible(false); QString knsrcFile = "kritaresourcebundles.knsrc"; setKnsrcFile(knsrcFile); + m_ui->searchLineEdit->setClearButtonEnabled(true); + m_ui->searchLineEdit->addAction(QIcon::fromTheme(QStringLiteral("system-search")), QLineEdit::LeadingPosition); + m_ui->searchLineEdit->setPlaceholderText("Search for the bundle name.."); + searchTerm = m_ui->searchLineEdit->text(); + m_ui->listActive->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); m_ui->listActive->setSelectionMode(QAbstractItemView::SingleSelection); connect(m_ui->listActive, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(itemSelected(QListWidgetItem*,QListWidgetItem*))); connect(m_ui->listActive, SIGNAL(itemClicked(QListWidgetItem*)), SLOT(itemSelected(QListWidgetItem*))); - m_ui->listInactive->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); - m_ui->listInactive->setSelectionMode(QAbstractItemView::SingleSelection); - connect(m_ui->listInactive, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(itemSelected(QListWidgetItem*,QListWidgetItem*))); - connect(m_ui->listInactive, SIGNAL(itemClicked(QListWidgetItem*)), SLOT(itemSelected(QListWidgetItem*))); - - m_ui->bnAdd->setIcon(KisIconUtils::loadIcon("arrow-right")); - connect(m_ui->bnAdd, SIGNAL(clicked()), SLOT(addSelected())); - - m_ui->bnRemove->setIcon(KisIconUtils::loadIcon("arrow-left")); - connect(m_ui->bnRemove, SIGNAL(clicked()), SLOT(removeSelected())); - m_ui->listBundleContents->setHeaderLabel(i18n("Resource")); m_ui->listBundleContents->setSelectionMode(QAbstractItemView::NoSelection); @@ -105,6 +101,9 @@ connect(m_ui->deleteBackupFilesButton, SIGNAL(clicked()), SLOT(slotDeleteBackupFiles())); connect(m_ui->openResourceFolderButton, SIGNAL(clicked()), SLOT(slotOpenResourceFolder())); + connect(m_ui->bnDeleteBundle, SIGNAL(clicked()), SLOT(deleteBundle())); + connect(m_ui->searchLineEdit, SIGNAL(textChanged(QString)), SLOT(searchTextChanged())); + } @@ -112,7 +111,6 @@ { KoResourceServer *bundleServer = KisResourceServerProvider::instance()->resourceBundleServer(); - m_ui->listInactive->clear(); m_ui->listActive->clear(); Q_FOREACH (const QString &f, bundleServer->blackListedFiles()) { @@ -123,7 +121,6 @@ m_blacklistedBundles[f] = bundle; } } - fillListWidget(m_blacklistedBundles.values(), m_ui->listInactive); Q_FOREACH (KisResourceBundle *bundle, bundleServer->resources()) { if (bundle->valid()) { @@ -184,38 +181,9 @@ } } - for (int i = 0; i < m_ui->listInactive->count(); ++i) { - QListWidgetItem *item = m_ui->listInactive->item(i); - QByteArray ba = item->data(Qt::UserRole).toByteArray(); - KisResourceBundle *bundle = bundleServer->resourceByMD5(ba); - - - if (bundle && bundle->isInstalled()) { - bundle->uninstall(); - bundleServer->removeResourceAndBlacklist(bundle); - } - } - - KoDialog::accept(); } -void DlgBundleManager::addSelected() -{ - - Q_FOREACH (QListWidgetItem *item, m_ui->listActive->selectedItems()) { - m_ui->listInactive->addItem(m_ui->listActive->takeItem(m_ui->listActive->row(item))); - } - -} - -void DlgBundleManager::removeSelected() -{ - Q_FOREACH (QListWidgetItem *item, m_ui->listInactive->selectedItems()) { - m_ui->listActive->addItem(m_ui->listInactive->takeItem(m_ui->listInactive->row(item))); - } -} - void DlgBundleManager::itemSelected(QListWidgetItem *current, QListWidgetItem *) { if (!current) { @@ -303,6 +271,8 @@ m_currentBundle = 0; } } + + m_ui->bnDeleteBundle->setVisible(true); } void DlgBundleManager::itemSelected(QListWidgetItem *current) @@ -344,6 +314,7 @@ QListWidgetItem *item = new QListWidgetItem(pixmap, bundle->name()); item->setData(Qt::UserRole, bundle->md5()); w->addItem(item); + } } @@ -434,3 +405,40 @@ d->knsrcFile = knsrcFileArg; } +void DlgBundleManager::deleteBundle() +{ + KoResourceServer *bundleServer = KisResourceServerProvider::instance()->resourceBundleServer(); + + Q_FOREACH (QListWidgetItem *item, m_ui->listActive->selectedItems()) { + + QByteArray ba = item->data(Qt::UserRole).toByteArray(); + KisResourceBundle *bundle = bundleServer->resourceByMD5(ba); + + m_activeBundles.remove(m_currentBundle->filename()); + m_ui->listActive->takeItem(m_ui->listActive->row(item)); + bundleServer->removeResourceAndBlacklist(bundle); + } +} + +void DlgBundleManager::searchTextChanged() +{ + 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(searchTerm)) { + m_activeBundles[bundle->filename()] = bundle; + } + fillListWidget(m_activeBundles.values(), m_ui->listActive); + } +} diff --git a/plugins/extensions/resourcemanager/wdgdlgbundlemanager.ui b/plugins/extensions/resourcemanager/wdgdlgbundlemanager.ui --- a/plugins/extensions/resourcemanager/wdgdlgbundlemanager.ui +++ b/plugins/extensions/resourcemanager/wdgdlgbundlemanager.ui @@ -7,147 +7,11 @@ 0 0 835 - 712 + 814 - - - - - - Active Bundles - - - - - - - 0 - 0 - - - - - 0 - 200 - - - - true - - - QAbstractItemView::ExtendedSelection - - - 1 - - - - - - - - 0 - 0 - - - - Create New Bundle - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - ... - - - - - - - ... - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - 0 - 0 - - - - Inactive Bundles - - - - - - - 0 - 0 - - - - - 0 - 200 - - - - QAbstractItemView::ExtendedSelection - - - 1 - - - - - - - - - + @@ -246,7 +110,72 @@ - + + + + + + Search: + + + + + + + + + + + + + + Active Bundles + + + + + + + 0 + 0 + + + + + 0 + 200 + + + + true + + + QAbstractItemView::ExtendedSelection + + + 1 + + + + + + + + 0 + 0 + + + + Create New Bundle + + + + + + + + + @@ -539,6 +468,32 @@ + + + + + + + + + + Delete Bundle + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + +