Krita Source Code Documentation
Loading...
Searching...
No Matches
PageResourceChooser Class Reference

#include <page_resource_chooser.h>

+ Inheritance diagram for PageResourceChooser:

Signals

void countUpdated ()
 

Public Member Functions

QList< int > getSelectedResourcesIds ()
 
 PageResourceChooser (KoResourceBundleSP bundle=nullptr, QWidget *parent=nullptr)
 
void updateCount (bool)
 
void updateResources (QString resourceType, int count)
 
 ~PageResourceChooser ()
 

Private Slots

void selectResource (QSortFilterProxyModel *model, const QModelIndex idx)
 
void slotRemoveSelected (bool)
 
void slotResourcesSelectionChanged (QModelIndex selected)
 
void slotResourceTypeSelected (int)
 
void slotViewDetails ()
 
void slotViewThumbnail ()
 

Private Attributes

KoResourceBundleSP m_bundle
 
KisBundleStoragem_bundleStorage
 
QList< QString > m_existingResources
 
QMap< QString, QList< QPair< QString, QImage > > > m_existingResourcesImageMap
 
KisResourceItemDelegatem_kisResourceItemDelegate
 
ListViewMode m_mode
 
KisResourceItemListWidgetm_resourceItemWidget
 
QList< int > m_selectedResourcesIds
 
Ui::PageResourceChooser * m_ui
 
WdgResourcePreviewm_wdgResourcePreview
 

Detailed Description

Definition at line 27 of file page_resource_chooser.h.

Constructor & Destructor Documentation

◆ PageResourceChooser()

PageResourceChooser::PageResourceChooser ( KoResourceBundleSP bundle = nullptr,
QWidget * parent = nullptr )
explicit

Definition at line 32 of file page_resource_chooser.cpp.

32 :
33 QWizardPage(parent),
34 m_ui(new Ui::PageResourceChooser)
35 , m_bundle(bundle)
36{
37 m_ui->setupUi(this);
38
40 m_ui->formLayout->addWidget(m_wdgResourcePreview);
41
42 connect(m_wdgResourcePreview, SIGNAL(signalResourcesSelectionChanged(QModelIndex)), this, SLOT(slotResourcesSelectionChanged(QModelIndex)));
43 connect(m_wdgResourcePreview, SIGNAL(resourceTypeSelected(int)), this, SLOT(slotResourceTypeSelected(int)));
44
46 m_ui->verticalLayout_2->insertWidget(1, m_resourceItemWidget);
47
51
52 connect(m_ui->btnRemoveSelected, SIGNAL(clicked(bool)), this, SLOT(slotRemoveSelected(bool)));
53
54 KisResourceItemViewer *viewModeButton;
55 viewModeButton = new KisResourceItemViewer(Viewer::TableSelected, this);
56
57 KisConfig cfg(true);
58 m_mode = (cfg.readEntry<quint32>("ResourceItemsBCSelected.viewMode", 1) == 1)? ListViewMode::IconGrid : ListViewMode::Detail;
59
60
61 connect(viewModeButton, SIGNAL(onViewThumbnail()), this, SLOT(slotViewThumbnail()));
62 connect(viewModeButton, SIGNAL(onViewDetails()), this, SLOT(slotViewDetails()));
63
64 QLabel *label = new QLabel("Selected");
65 m_ui->horizontalLayout_2->addWidget(label);
66 m_ui->horizontalLayout_2->addWidget(viewModeButton);
67
70 } else {
72 }
73
74 m_resourceItemWidget->clear();
75
76 if (m_bundle) {
77
78 m_bundleStorage = new KisBundleStorage(m_bundle->filename());
79
81 #if defined HAVE_SEEXPR
82 resourceTypes << ResourceType::SeExprScripts;
83 #endif
85
86
87 for (int i = 0; i < resourceTypes.size(); i++) {
90 auto resourceSourceAdapter = resourcesInterface->source<KoResource>(resourceTypes[i]);
91 while (iter->hasNext()) {
92 iter->next();
93 KoResourceSP res = resourceSourceAdapter.bestMatch(iter->resource()->md5Sum(false), iter->resource()->filename(), iter->resource()->name());
94 if (!res.isNull()) {
95 m_selectedResourcesIds.append(res->resourceId());
96 }
97 }
98 }
99
100
101 QString standarizedResourceType = ResourceType::Brushes;
102
103 KisResourceModel model(standarizedResourceType);
104 for (int i = 0; i < model.rowCount(); i++) {
105 QModelIndex idx = model.index(i, 0);
106 int id = model.data(idx, Qt::UserRole + KisAbstractResourceModel::Id).toInt();
107
108 if (m_selectedResourcesIds.contains(id)) {
109 selectResource(&model, idx);
110 }
111 }
112
113 m_resourceItemWidget->sortItems();
114 }
115
116}
QList< QString > QStringList
@ TableSelected
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QSharedPointer< KisResourceStorage::ResourceIterator > resources(const QString &resourceType) override
static KisResourcesInterfaceSP instance()
The resource item delegate for rendering the resource preview.
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
KisResourceItemDelegate * m_kisResourceItemDelegate
Ui::PageResourceChooser * m_ui
KisBundleStorage * m_bundleStorage
void slotResourcesSelectionChanged(QModelIndex selected)
KoResourceBundleSP m_bundle
void selectResource(QSortFilterProxyModel *model, const QModelIndex idx)
QList< int > m_selectedResourcesIds
WdgResourcePreview * m_wdgResourcePreview
KisResourceItemListWidget * m_resourceItemWidget
const QString Palettes
const QString CssStyles
const QString Brushes
const QString GamutMasks
const QString Patterns
const QString SeExprScripts
const QString Gradients
const QString Workspaces
const QString PaintOpPresets

References ResourceType::Brushes, BundleCreator, connect(), ResourceType::CssStyles, Detail, ResourceType::GamutMasks, ResourceType::Gradients, IconGrid, KisAbstractResourceModel::Id, KisGlobalResourcesInterface::instance(), m_bundle, m_bundleStorage, m_kisResourceItemDelegate, m_mode, m_resourceItemWidget, m_selectedResourcesIds, m_ui, m_wdgResourcePreview, ResourceType::PaintOpPresets, ResourceType::Palettes, ResourceType::Patterns, KisConfig::readEntry(), KisBundleStorage::resources(), ResourceType::SeExprScripts, selectResource(), KisResourceItemDelegate::setIsWidget(), slotRemoveSelected(), slotResourcesSelectionChanged(), slotResourceTypeSelected(), slotViewDetails(), slotViewThumbnail(), TableSelected, and ResourceType::Workspaces.

◆ ~PageResourceChooser()

PageResourceChooser::~PageResourceChooser ( )

Definition at line 238 of file page_resource_chooser.cpp.

239{
240 delete m_ui;
241}

References m_ui.

Member Function Documentation

◆ countUpdated

void PageResourceChooser::countUpdated ( )
signal

◆ getSelectedResourcesIds()

QList< int > PageResourceChooser::getSelectedResourcesIds ( )

Definition at line 223 of file page_resource_chooser.cpp.

224{
226}

References m_selectedResourcesIds.

◆ selectResource

void PageResourceChooser::selectResource ( QSortFilterProxyModel * model,
const QModelIndex idx )
privateslot

Definition at line 184 of file page_resource_chooser.cpp.

185{
186 QString name = model->data(idx, Qt::UserRole + KisAllResourcesModel::Name).toString();
187
188 // Don't try to bundle special resources
189 QString resourceType = m_wdgResourcePreview->getCurrentResourceType();
190 if (resourceType == ResourceType::Gradients) {
191 if (name == "Foreground to Transparent" || name == "Foreground to Background") {
192 return;
193 }
194 }
195
196 int id = model->data(idx, Qt::UserRole + KisAllResourcesModel::Id).toInt();
197 QRect paintRect = QRect(0, 0, ICON_SIZE, ICON_SIZE);
198 QPixmap pixmap(paintRect.size() * devicePixelRatioF());
199 pixmap.setDevicePixelRatio(devicePixelRatioF());
200 QPainter painter(&pixmap);
201 KisResourceThumbnailPainter().paint(&painter, idx, paintRect, this->palette(), false, true);
202
203 QListWidgetItem *item = new QListWidgetItem(pixmap, name);
204 item->setData(Qt::UserRole, id);
205 item->setData(Qt::UserRole + KisAbstractResourceModel::Name, name);
206
207 m_resourceItemWidget->addItem(item);
208}
The resource item delegate for rendering the resource preview.
void paint(QPainter *painter, const QModelIndex &index, QRect rect, const QPalette &palette, bool selected, bool addMargin) const
const char * name(StandardAction id)
rgba palette[MAX_PALETTE]
Definition palette.c:35
#define ICON_SIZE

References WdgResourcePreview::getCurrentResourceType(), ResourceType::Gradients, ICON_SIZE, KisAbstractResourceModel::Id, m_resourceItemWidget, m_wdgResourcePreview, KisAbstractResourceModel::Name, KisResourceThumbnailPainter::paint(), and palette.

◆ slotRemoveSelected

void PageResourceChooser::slotRemoveSelected ( bool )
privateslot

Definition at line 210 of file page_resource_chooser.cpp.

211{
212 int row = m_resourceItemWidget->currentRow();
213
214 Q_FOREACH (QListWidgetItem *item, m_resourceItemWidget->selectedItems()) {
215 m_resourceItemWidget->takeItem(m_resourceItemWidget->row(item));
216 m_selectedResourcesIds.removeAll(item->data(Qt::UserRole).toInt());
217 updateCount(false);
218 }
219
220 m_resourceItemWidget->setCurrentRow(row);
221}

References m_resourceItemWidget, m_selectedResourcesIds, and updateCount().

◆ slotResourcesSelectionChanged

void PageResourceChooser::slotResourcesSelectionChanged ( QModelIndex selected)
privateslot

Definition at line 143 of file page_resource_chooser.cpp.

144{
145 Q_UNUSED(selected);
146
149
150
151 Q_FOREACH (QModelIndex idx, list) {
152 int id = proxyModel->data(idx, Qt::UserRole + KisAllResourcesModel::Id).toInt();
153 if (!m_selectedResourcesIds.contains(id)) {
154 selectResource(proxyModel, idx);
155 m_selectedResourcesIds.append(id);
156 updateCount(true);
157 }
158 }
159
160 m_resourceItemWidget->sortItems();
161}
The KisTagFilterResourceProxyModel class filters the resources by tag or resource name.
QMap< QString, KisTagFilterResourceProxyModel * > getResourceProxyModelsForResourceType()
QModelIndexList getResourceItemsSelected()

References WdgResourcePreview::getCurrentResourceType(), WdgResourcePreview::getResourceItemsSelected(), WdgResourcePreview::getResourceProxyModelsForResourceType(), KisAbstractResourceModel::Id, m_resourceItemWidget, m_selectedResourcesIds, m_wdgResourcePreview, selectResource(), and updateCount().

◆ slotResourceTypeSelected

void PageResourceChooser::slotResourceTypeSelected ( int idx)
privateslot

Definition at line 163 of file page_resource_chooser.cpp.

164{
165 Q_UNUSED(idx);
166
167 QString resourceType = m_wdgResourcePreview->getCurrentResourceType();
168 m_resourceItemWidget->clear();
169 QString standarizedResourceType = (resourceType == "presets" ? ResourceType::PaintOpPresets : resourceType);
170
171 KisResourceModel model(standarizedResourceType);
172 for (int i = 0; i < model.rowCount(); i++) {
173 QModelIndex idx = model.index(i, 0);
174 int id = model.data(idx, Qt::UserRole + KisAbstractResourceModel::Id).toInt();
175
176 if (m_selectedResourcesIds.contains(id)) {
177 selectResource(&model, idx);
178 }
179 }
180
181 m_resourceItemWidget->sortItems();
182}

References WdgResourcePreview::getCurrentResourceType(), KisAbstractResourceModel::Id, m_resourceItemWidget, m_selectedResourcesIds, m_wdgResourcePreview, ResourceType::PaintOpPresets, and selectResource().

◆ slotViewDetails

◆ slotViewThumbnail

◆ updateCount()

void PageResourceChooser::updateCount ( bool flag)

Definition at line 228 of file page_resource_chooser.cpp.

229{
230 DlgCreateBundle *wizard = qobject_cast<DlgCreateBundle*>(this->wizard());
231 if (wizard) {
233 }
234
235 Q_EMIT countUpdated();
236}
QMap< QString, int > m_count

References countUpdated(), WdgResourcePreview::getCurrentResourceType(), DlgCreateBundle::m_count, and m_wdgResourcePreview.

◆ updateResources()

void PageResourceChooser::updateResources ( QString resourceType,
int count )

Definition at line 118 of file page_resource_chooser.cpp.

119{
120 DlgCreateBundle *wizard = qobject_cast<DlgCreateBundle*>(this->wizard());
121 if (wizard) {
122 wizard->m_count[resourceType] = count;
123 qDebug() << resourceType << ": " << count;
124 }
125 Q_EMIT countUpdated();
126
127}

References countUpdated(), and DlgCreateBundle::m_count.

Member Data Documentation

◆ m_bundle

KoResourceBundleSP PageResourceChooser::m_bundle
private

Definition at line 59 of file page_resource_chooser.h.

◆ m_bundleStorage

KisBundleStorage* PageResourceChooser::m_bundleStorage
private

Definition at line 64 of file page_resource_chooser.h.

◆ m_existingResources

QList<QString> PageResourceChooser::m_existingResources
private

Definition at line 56 of file page_resource_chooser.h.

◆ m_existingResourcesImageMap

QMap<QString, QList<QPair<QString, QImage> > > PageResourceChooser::m_existingResourcesImageMap
private

Definition at line 57 of file page_resource_chooser.h.

◆ m_kisResourceItemDelegate

KisResourceItemDelegate* PageResourceChooser::m_kisResourceItemDelegate
private

Definition at line 61 of file page_resource_chooser.h.

◆ m_mode

ListViewMode PageResourceChooser::m_mode
private

Definition at line 60 of file page_resource_chooser.h.

◆ m_resourceItemWidget

KisResourceItemListWidget* PageResourceChooser::m_resourceItemWidget
private

Definition at line 62 of file page_resource_chooser.h.

◆ m_selectedResourcesIds

QList<int> PageResourceChooser::m_selectedResourcesIds
private

Definition at line 55 of file page_resource_chooser.h.

◆ m_ui

Ui::PageResourceChooser* PageResourceChooser::m_ui
private

Definition at line 53 of file page_resource_chooser.h.

◆ m_wdgResourcePreview

WdgResourcePreview* PageResourceChooser::m_wdgResourcePreview
private

Definition at line 54 of file page_resource_chooser.h.


The documentation for this class was generated from the following files: