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

#include <wdg_resource_preview.h>

+ Inheritance diagram for WdgResourcePreview:

Signals

void resourceTypeSelected (int)
 
void signalResourcesSelectionChanged (QModelIndex selected)
 

Public Member Functions

QString getCurrentResourceType ()
 
int getCurrentStorageId ()
 
QSharedPointer< KisTaggetCurrentTag ()
 
QAbstractItemModel * getModel ()
 
QModelIndexList getResourceItemsSelected ()
 
QMap< QString, KisTagFilterResourceProxyModel * > getResourceProxyModelsForResourceType ()
 
 WdgResourcePreview (WidgetType type, QWidget *parent=nullptr)
 
 ~WdgResourcePreview ()
 

Private Slots

void slotFilterTextChanged (const QString &filterText)
 
void slotResourceTypeSelected (int)
 
void slotShowDeletedChanged (int newState)
 
void slotStorageSelected (int)
 
void slotTagSelected (int)
 
void slotViewDetails ()
 
void slotViewThumbnail ()
 

Private Attributes

KisResourceItemDelegatem_kisResourceItemDelegate
 
ListViewMode m_mode
 
KisResourceModelm_resourceModel {nullptr}
 
QMap< QString, KisTagFilterResourceProxyModel * > m_resourceProxyModelsForResourceType
 
KisResourceTypeModelm_resourceTypeModel {0}
 
QList< int > m_selectedResourcesIds
 
KisStorageModelm_storageModel {0}
 
QMap< QString, KisTagModel * > m_tagModelsForResourceType
 
KisResourceThumbnailPainter m_thumbnailPainter
 
WidgetType m_type
 
Ui::WdgResourcePreview * m_ui
 

Detailed Description

Definition at line 34 of file wdg_resource_preview.h.

Constructor & Destructor Documentation

◆ WdgResourcePreview()

WdgResourcePreview::WdgResourcePreview ( WidgetType type,
QWidget * parent = nullptr )
explicit

Definition at line 45 of file wdg_resource_preview.cpp.

45 :
46 QWidget(parent),
47 m_ui(new Ui::WdgResourcePreview),
48 m_type(type)
49
50{
51 m_ui->setupUi(this);
52
53 m_ui->resourceItemView->setFixedToolTipThumbnailSize(QSize(128, 128));
54
57 m_ui->cmbResourceType->setModel(m_resourceTypeModel);
58 m_ui->cmbResourceType->setModelColumn(KisResourceTypeModel::Name);
59 for (int i = 0; i < m_resourceTypeModel->rowCount(); i++) {
60 QModelIndex idx = m_resourceTypeModel->index(i, 0);
61 QString resourceType = m_resourceTypeModel->data(idx, Qt::UserRole + KisResourceTypeModel::ResourceType).toString();
62 if (resourceType == "paintoppresets") {
63 m_ui->cmbResourceType->setCurrentIndex(i);
64 break;
65 }
66 }
67 } else {
69 #if defined HAVE_SEEXPR
70 resourceTypes << ResourceType::SeExprScripts;
71 #endif
73
74 for (int i = 0; i < resourceTypes.size(); i++) {
75 m_ui->cmbResourceType->addItem(ResourceName::resourceTypeToName(resourceTypes[i]));
76 m_ui->cmbResourceType->setItemData(m_ui->cmbResourceType->count()-1, resourceTypes[i], Qt::UserRole + KisResourceTypeModel::ResourceType);
77 }
78 }
79
80 connect(m_ui->cmbResourceType, SIGNAL(activated(int)), SLOT(slotResourceTypeSelected(int)));
81 connect(m_ui->cmbResourceType, SIGNAL(activated(int)), SIGNAL(resourceTypeSelected(int)));
82
83 QString selectedResourceType = getCurrentResourceType();
84
85
86 KisTagModel* tagModel = new KisTagModel(selectedResourceType);
87 tagModel->sort(KisAllTagsModel::Name);
88 m_tagModelsForResourceType.insert(selectedResourceType, tagModel);
89
90 m_ui->cmbTag->setModel(tagModel);
91 m_ui->cmbTag->setModelColumn(KisAllTagsModel::Name);
92
93 connect(m_ui->cmbTag, SIGNAL(activated(int)), SLOT(slotTagSelected(int)));
94
96 m_ui->cmbStorage->setVisible(false);
97 } else {
99
100 m_ui->cmbStorage->setModel(m_storageModel);
101 m_ui->cmbStorage->setModelColumn(KisStorageModel::DisplayName);
102 connect(m_ui->cmbStorage, SIGNAL(activated(int)), SLOT(slotStorageSelected(int)));
103 }
104
105 // the model will be owned by `proxyModel`
106 KisResourceModel* resourceModel;
107
109 resourceModel = new KisResourceModel(selectedResourceType);
111 resourceModel->setResourceFilter(m_ui->chkShowDeleted->isChecked() ? KisResourceModel::ShowAllResources : KisResourceModel::ShowActiveResources);
112
113 } else {
114
115 QString standarizedResourceType = (selectedResourceType == "presets" ? ResourceType::PaintOpPresets : selectedResourceType);
116 resourceModel = new KisResourceModel(standarizedResourceType);
117 }
118
119 KisTagFilterResourceProxyModel* proxyModel = new KisTagFilterResourceProxyModel(selectedResourceType);
120 proxyModel->setResourceModel(resourceModel);
121 proxyModel->setTagFilter(0);
123 proxyModel->setStorageFilter(true, getCurrentStorageId());
124 }
125 proxyModel->sort(KisAbstractResourceModel::Name);
126 m_resourceProxyModelsForResourceType.insert(selectedResourceType, proxyModel);
127
128 m_ui->resourceItemView->setModel(proxyModel);
130 m_ui->resourceItemView->setItemDelegate(m_kisResourceItemDelegate);
131 m_ui->resourceItemView->setSelectionMode(QAbstractItemView::ExtendedSelection);
132
134 m_ui->chkShowDeleted->setVisible(false);
135 } else {
136 connect(m_ui->chkShowDeleted, SIGNAL(stateChanged(int)), SLOT(slotShowDeletedChanged(int)));
137 }
138
139 connect(m_ui->lneFilterText, SIGNAL(textChanged(const QString&)), SLOT(slotFilterTextChanged(const QString&)));
140
141 connect(m_ui->resourceItemView, SIGNAL(currentResourceChanged(QModelIndex)), SIGNAL(signalResourcesSelectionChanged(QModelIndex)));
142
143 KisResourceItemViewer *viewModeButton;
144
146 viewModeButton = new KisResourceItemViewer(Viewer::TableAvailable, this);
147 } else {
148 viewModeButton = new KisResourceItemViewer(Viewer::ResourceManager, this);
149 }
150
151 KisConfig cfg(true);
152
154 m_mode = (cfg.readEntry<quint32>("ResourceItemsBCSearch.viewMode", 1) == 1)? ListViewMode::IconGrid : ListViewMode::Detail;
155 } else {
156 m_mode = (cfg.readEntry<quint32>("ResourceItemsRM.viewMode", 1) == 1)? ListViewMode::IconGrid : ListViewMode::Detail;
157 }
158
159 connect(viewModeButton, SIGNAL(onViewThumbnail()), this, SLOT(slotViewThumbnail()));
160 connect(viewModeButton, SIGNAL(onViewDetails()), this, SLOT(slotViewDetails()));
161
163 QLabel *label = new QLabel("Search");
164 m_ui->horizontalLayout_2->addWidget(label);
165 } else {
166 m_ui->horizontalLayout_2->setAlignment(Qt::AlignRight);
167 }
168 m_ui->horizontalLayout_2->addWidget(viewModeButton);
169
172 } else {
174 }
175
176}
QList< QString > QStringList
@ ResourceManager
@ TableAvailable
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
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...
void setStorageFilter(StorageFilter filter) override
void setResourceFilter(ResourceFilter filter) override
QVariant data(const QModelIndex &index, int role) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
The KisTagFilterResourceProxyModel class filters the resources by tag or resource name.
void setResourceModel(KisResourceModel *resourceModel)
void setTagFilter(const KisTagSP tag)
setTagFilter sets the tag to filter with
void setStorageFilter(StorageFilter filter) override
KisResourceTypeModel * m_resourceTypeModel
Ui::WdgResourcePreview * m_ui
QMap< QString, KisTagModel * > m_tagModelsForResourceType
void signalResourcesSelectionChanged(QModelIndex selected)
void resourceTypeSelected(int)
KisStorageModel * m_storageModel
void slotFilterTextChanged(const QString &filterText)
void slotShowDeletedChanged(int newState)
QMap< QString, KisTagFilterResourceProxyModel * > m_resourceProxyModelsForResourceType
KisResourceItemDelegate * m_kisResourceItemDelegate
KRITARESOURCES_EXPORT QString resourceTypeToName(const QString &resourceType)
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, KisResourceTypeModel::data(), Detail, KisStorageModel::DisplayName, ResourceType::GamutMasks, getCurrentResourceType(), getCurrentStorageId(), ResourceType::Gradients, IconGrid, m_kisResourceItemDelegate, m_mode, m_resourceProxyModelsForResourceType, m_resourceTypeModel, m_storageModel, m_tagModelsForResourceType, m_type, m_ui, KisAbstractResourceModel::Name, KisResourceTypeModel::Name, KisAllTagsModel::Name, ResourceType::PaintOpPresets, ResourceType::Palettes, ResourceType::Patterns, KisConfig::readEntry(), ResourceManager, KisResourceTypeModel::ResourceType, resourceTypeSelected(), ResourceName::resourceTypeToName(), KisResourceTypeModel::rowCount(), ResourceType::SeExprScripts, KisResourceModel::setResourceFilter(), KisTagFilterResourceProxyModel::setResourceModel(), KisResourceModel::setStorageFilter(), KisTagFilterResourceProxyModel::setStorageFilter(), KisTagFilterResourceProxyModel::setTagFilter(), KisAbstractResourceFilterInterface::ShowActiveResources, KisAbstractResourceFilterInterface::ShowAllResources, KisAbstractResourceFilterInterface::ShowAllStorages, signalResourcesSelectionChanged(), slotFilterTextChanged(), slotResourceTypeSelected(), slotShowDeletedChanged(), slotStorageSelected(), slotTagSelected(), slotViewDetails(), slotViewThumbnail(), TableAvailable, and ResourceType::Workspaces.

◆ ~WdgResourcePreview()

WdgResourcePreview::~WdgResourcePreview ( )

Member Function Documentation

◆ getCurrentResourceType()

QString WdgResourcePreview::getCurrentResourceType ( )

Definition at line 281 of file wdg_resource_preview.cpp.

282{
283 return m_ui->cmbResourceType->currentData(Qt::UserRole + KisResourceTypeModel::ResourceType).toString();
284}

References m_ui, and KisResourceTypeModel::ResourceType.

◆ getCurrentStorageId()

int WdgResourcePreview::getCurrentStorageId ( )

Definition at line 302 of file wdg_resource_preview.cpp.

303{
304 return m_ui->cmbStorage->currentData(Qt::UserRole + KisStorageModel::Id).toInt();
305}

References KisStorageModel::Id, and m_ui.

◆ getCurrentTag()

QSharedPointer< KisTag > WdgResourcePreview::getCurrentTag ( )

Definition at line 286 of file wdg_resource_preview.cpp.

287{
288 return m_ui->cmbTag->currentData(Qt::UserRole + KisAllTagsModel::KisTagRole).value<KisTagSP>();
289}

References KisAllTagsModel::KisTagRole, and m_ui.

◆ getModel()

QAbstractItemModel * WdgResourcePreview::getModel ( )

Definition at line 307 of file wdg_resource_preview.cpp.

308{
309 return m_ui->resourceItemView->model();
310}

References m_ui.

◆ getResourceItemsSelected()

QModelIndexList WdgResourcePreview::getResourceItemsSelected ( )

Definition at line 291 of file wdg_resource_preview.cpp.

292{
293 QModelIndexList list = m_ui->resourceItemView->selectionModel()->selection().indexes();
294 return list;
295}

References m_ui.

◆ getResourceProxyModelsForResourceType()

QMap< QString, KisTagFilterResourceProxyModel * > WdgResourcePreview::getResourceProxyModelsForResourceType ( )

Definition at line 297 of file wdg_resource_preview.cpp.

298{
300}

References m_resourceProxyModelsForResourceType.

◆ resourceTypeSelected

void WdgResourcePreview::resourceTypeSelected ( int )
signal

◆ signalResourcesSelectionChanged

void WdgResourcePreview::signalResourcesSelectionChanged ( QModelIndex selected)
signal

◆ slotFilterTextChanged

void WdgResourcePreview::slotFilterTextChanged ( const QString & filterText)
privateslot

◆ slotResourceTypeSelected

void WdgResourcePreview::slotResourceTypeSelected ( int )
privateslot

Definition at line 200 of file wdg_resource_preview.cpp.

201{
202
203 QString selectedResourceType = getCurrentResourceType();
204 if (!m_tagModelsForResourceType.contains(selectedResourceType)) {
205 m_tagModelsForResourceType.insert(selectedResourceType, new KisTagModel(selectedResourceType));
206 m_tagModelsForResourceType[selectedResourceType]->sort(KisAllTagsModel::Name);
207 }
208
209 m_ui->cmbTag->setModel(m_tagModelsForResourceType[selectedResourceType]);
210
211 if (!m_resourceProxyModelsForResourceType.contains(selectedResourceType)) {
212 // the model will be owned by `proxyModel`
213 KisResourceModel* resourceModel;
215 resourceModel = new KisResourceModel(selectedResourceType);
216 KIS_SAFE_ASSERT_RECOVER_RETURN(resourceModel);
218 resourceModel->setResourceFilter(m_ui->chkShowDeleted->isChecked() ? KisResourceModel::ShowAllResources : KisResourceModel::ShowActiveResources);
219 } else {
220 QString standarizedResourceType = (selectedResourceType == "presets" ? ResourceType::PaintOpPresets : selectedResourceType);
221 resourceModel = new KisResourceModel(standarizedResourceType);
222 KIS_SAFE_ASSERT_RECOVER_RETURN(resourceModel);
223 }
224
225 KisTagFilterResourceProxyModel* proxyModel = new KisTagFilterResourceProxyModel(selectedResourceType);
227 proxyModel->setResourceModel(resourceModel);
228 proxyModel->sort(KisAbstractResourceModel::Name);
229 m_resourceProxyModelsForResourceType.insert(selectedResourceType, proxyModel);
230 }
231
234 }
235 m_resourceProxyModelsForResourceType[selectedResourceType]->setTagFilter(getCurrentTag());
236
237 m_ui->resourceItemView->setModel(m_resourceProxyModelsForResourceType[selectedResourceType]);
238
239 if (selectedResourceType == ResourceType::Gradients) {
240 m_ui->resourceItemView->setFixedToolTipThumbnailSize(QSize(256, 64));
241 m_ui->resourceItemView->setToolTipShouldRenderCheckers(true);
242 }
243 else if (selectedResourceType == ResourceType::PaintOpPresets) {
244 m_ui->resourceItemView->setFixedToolTipThumbnailSize(QSize(128, 128));
245 } else if (selectedResourceType == ResourceType::Patterns || selectedResourceType == ResourceType::Palettes) {
246 m_ui->resourceItemView->setFixedToolTipThumbnailSize(QSize(256, 256));
247 m_ui->resourceItemView->setToolTipShouldRenderCheckers(false);
248 }
249}
QSharedPointer< KisTag > getCurrentTag()
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References getCurrentResourceType(), getCurrentStorageId(), getCurrentTag(), ResourceType::Gradients, KIS_SAFE_ASSERT_RECOVER_RETURN, m_resourceProxyModelsForResourceType, m_tagModelsForResourceType, m_type, m_ui, KisAbstractResourceModel::Name, KisAllTagsModel::Name, ResourceType::PaintOpPresets, ResourceType::Palettes, ResourceType::Patterns, ResourceManager, KisResourceModel::setResourceFilter(), KisTagFilterResourceProxyModel::setResourceModel(), KisResourceModel::setStorageFilter(), KisTagFilterResourceProxyModel::setStorageFilter(), KisAbstractResourceFilterInterface::ShowActiveResources, KisAbstractResourceFilterInterface::ShowAllResources, and KisAbstractResourceFilterInterface::ShowAllStorages.

◆ slotShowDeletedChanged

void WdgResourcePreview::slotShowDeletedChanged ( int newState)
privateslot

◆ slotStorageSelected

void WdgResourcePreview::slotStorageSelected ( int )
privateslot

◆ slotTagSelected

void WdgResourcePreview::slotTagSelected ( int )
privateslot

◆ slotViewDetails

void WdgResourcePreview::slotViewDetails ( )
privateslot

Definition at line 193 of file wdg_resource_preview.cpp.

194{
196 m_ui->resourceItemView->setItemDelegate(m_kisResourceItemDelegate);
197 m_ui->resourceItemView->setListViewMode(ListViewMode::Detail);
198}

References Detail, m_kisResourceItemDelegate, m_ui, and KisResourceItemDelegate::setShowText().

◆ slotViewThumbnail

void WdgResourcePreview::slotViewThumbnail ( )
privateslot

Definition at line 186 of file wdg_resource_preview.cpp.

187{
189 m_ui->resourceItemView->setItemDelegate(m_kisResourceItemDelegate);
190 m_ui->resourceItemView->setListViewMode(ListViewMode::IconGrid);
191}

References IconGrid, m_kisResourceItemDelegate, m_ui, and KisResourceItemDelegate::setShowText().

Member Data Documentation

◆ m_kisResourceItemDelegate

KisResourceItemDelegate* WdgResourcePreview::m_kisResourceItemDelegate
private

Definition at line 79 of file wdg_resource_preview.h.

◆ m_mode

ListViewMode WdgResourcePreview::m_mode
private

Definition at line 80 of file wdg_resource_preview.h.

◆ m_resourceModel

KisResourceModel* WdgResourcePreview::m_resourceModel {nullptr}
private

Definition at line 74 of file wdg_resource_preview.h.

74{nullptr};

◆ m_resourceProxyModelsForResourceType

QMap<QString, KisTagFilterResourceProxyModel*> WdgResourcePreview::m_resourceProxyModelsForResourceType
private

Definition at line 76 of file wdg_resource_preview.h.

◆ m_resourceTypeModel

KisResourceTypeModel* WdgResourcePreview::m_resourceTypeModel {0}
private

Definition at line 71 of file wdg_resource_preview.h.

71{0};

◆ m_selectedResourcesIds

QList<int> WdgResourcePreview::m_selectedResourcesIds
private

Definition at line 69 of file wdg_resource_preview.h.

◆ m_storageModel

KisStorageModel* WdgResourcePreview::m_storageModel {0}
private

Definition at line 72 of file wdg_resource_preview.h.

72{0};

◆ m_tagModelsForResourceType

QMap<QString, KisTagModel*> WdgResourcePreview::m_tagModelsForResourceType
private

Definition at line 73 of file wdg_resource_preview.h.

◆ m_thumbnailPainter

KisResourceThumbnailPainter WdgResourcePreview::m_thumbnailPainter
private

Definition at line 77 of file wdg_resource_preview.h.

◆ m_type

WidgetType WdgResourcePreview::m_type
private

Definition at line 67 of file wdg_resource_preview.h.

◆ m_ui

Ui::WdgResourcePreview* WdgResourcePreview::m_ui
private

Definition at line 66 of file wdg_resource_preview.h.


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