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

#include <DlgDbExplorer.h>

+ Inheritance diagram for DlgDbExplorer:

Public Member Functions

 DlgDbExplorer (QWidget *parent=0)
 
 ~DlgDbExplorer () override
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Private Slots

void slotRvResourceTypeSelected (int index)
 
void slotRvTagSelected (int index)
 
void slotTbResourceItemSelected ()
 
void slotTbResourceTypeSelected (int index)
 
void slotTbTagSelected (const QModelIndex &index)
 

Private Member Functions

void updateTagModel (const QString &resourceType)
 

Private Attributes

KisTagFilterResourceProxyModelm_filterProxyModel {0}
 
WdgDbExplorerm_page {0}
 
KisResourceTypeModelm_resourceTypeModel {0}
 
KisTagModelm_tagModel {0}
 

Additional Inherited Members

- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 
- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 31 of file DlgDbExplorer.h.

Constructor & Destructor Documentation

◆ DlgDbExplorer()

DlgDbExplorer::DlgDbExplorer ( QWidget * parent = 0)

Definition at line 32 of file DlgDbExplorer.cpp.

33 : KoDialog(parent)
34{
35 setCaption(i18n("Resources Cache Database Explorer"));
36
38
39 m_page = new WdgDbExplorer(this);
40 Q_CHECK_PTR(m_page);
41
43
45 m_tagModel = new KisTagModel("", this);
46
47 {
48 KisStorageModel *model = new KisStorageModel(this);
49 TableDelegate *delegate = new TableDelegate(m_page->tableResources);
50 m_page->tableStorages->setModel(model);
51 delegate->addDateTimeColumn(3); // creation date
52 delegate->addBooleanColumn(4); // preinstalled
53 delegate->addBooleanColumn(5); // active
54 m_page->tableStorages->setItemDelegate(delegate);
55 m_page->tableStorages->hideColumn(0);
56 m_page->tableStorages->setSelectionMode(QAbstractItemView::SingleSelection);
57 m_page->tableStorages->resizeColumnsToContents();
58 }
59
60 {
61 KisResourceModel *resourcesModel = new KisResourceModel(ResourceType::Brushes, this);
62 TableDelegate *resourcesDelegate = new TableDelegate(m_page->tableResources);
63 resourcesDelegate->addBooleanColumn(6); // Status
64 resourcesDelegate->addBooleanColumn(12); // Dirty
65 resourcesDelegate->addBooleanColumn(14); // Active
66 m_page->tableResources->setModel(resourcesModel);
67 m_page->tableResources->setItemDelegate(resourcesDelegate);
68 m_page->tableResources->hideColumn(0);
69 m_page->tableResources->setSelectionMode(QAbstractItemView::SingleSelection);
70
71 m_page->cmbResourceTypes->setModel(m_resourceTypeModel);
72 m_page->cmbResourceTypes->setModelColumn(KisResourceTypeModel::Name);
73
74 connect(m_page->cmbResourceTypes, SIGNAL(activated(int)), SLOT(slotTbResourceTypeSelected(int)));
75 connect(m_page->tableResources, SIGNAL(clicked(QModelIndex)), SLOT(slotTbResourceItemSelected()));
76 }
77
78 {
79 TableModel *resourceVersionsModel = new TableModel(this, QSqlDatabase::database());
80 TableDelegate *versionsDelegate = new TableDelegate(m_page->tableVersions);
81 resourceVersionsModel->setTable("versioned_resources");
82 resourceVersionsModel->setHeaderData(0, Qt::Horizontal, i18n("Id"));
83 resourceVersionsModel->setHeaderData(1, Qt::Horizontal, i18n("Resource ID"));
84 resourceVersionsModel->setHeaderData(2, Qt::Horizontal, i18n("Storage ID"));
85 resourceVersionsModel->setHeaderData(3, Qt::Horizontal, i18n("Version"));
86 resourceVersionsModel->setHeaderData(4, Qt::Horizontal, i18n("File name"));
87 resourceVersionsModel->setHeaderData(5, Qt::Horizontal, i18n("md5sum"));
88 resourceVersionsModel->setHeaderData(6, Qt::Horizontal, i18n("Creation Date"));
89 resourceVersionsModel->addDateTimeColumn(6);
90 versionsDelegate->addDateTimeColumn(6);
91 resourceVersionsModel->select();
92
93 m_page->tableVersions->setModel(resourceVersionsModel);
94 m_page->tableVersions->hideColumn(0);
95 m_page->tableVersions->setItemDelegate(versionsDelegate);
96 m_page->tableVersions->setSelectionMode(QAbstractItemView::NoSelection);
97 m_page->tableVersions->resizeColumnsToContents();
98 }
99
100 {
101 TableModel *tagsModel = new TableModel(this, QSqlDatabase::database());
102 TableDelegate *tagsDelegate = new TableDelegate(m_page->tableStorages);
103 tagsModel->setTable("tags");
104 tagsModel->setHeaderData(0, Qt::Horizontal, i18n("Id"));
105 tagsModel->setHeaderData(1, Qt::Horizontal, i18n("Type"));
106 tagsModel->setRelation(1, QSqlRelation("resource_types", "id", "name"));
107 tagsModel->setHeaderData(2, Qt::Horizontal, i18n("Tag"));
108 tagsModel->setHeaderData(3, Qt::Horizontal, i18n("Name"));
109 tagsModel->setHeaderData(4, Qt::Horizontal, i18n("Comment"));
110 tagsModel->setHeaderData(5, Qt::Horizontal, i18n("File name"));
111 tagsModel->setHeaderData(6, Qt::Horizontal, i18n("Active"));
112 tagsModel->setHeaderData(7, Qt::Horizontal, i18n("Thumbnail"));
113 tagsModel->setHeaderData(8, Qt::Horizontal, i18n("Display Name"));
114 tagsModel->addBooleanColumn(6);
115 tagsDelegate->addBooleanColumn(6);
116 tagsModel->select();
117
118 m_page->tableTags->setModel(tagsModel);
119 m_page->tableTags->hideColumn(0);
120 m_page->tableTags->setItemDelegate(tagsDelegate);
121 m_page->tableTags->setSelectionMode(QAbstractItemView::SingleSelection);
122 m_page->tableTags->resizeColumnsToContents();
123
124 connect(m_page->tableTags, &QTableView::clicked, this, &DlgDbExplorer::slotTbTagSelected);
125 }
126
127 {
129 TableDelegate *delegate = new TableDelegate(m_page->tableTaggedResources);
130 delegate->addBooleanColumn(6); // status
131 delegate->addBooleanColumn(12); // dirty
132 delegate->addBooleanColumn(14); // resource active
133 delegate->addBooleanColumn(15); // storage active
134 delegate->addBooleanColumn(20); // resource active
135 delegate->addBooleanColumn(21); // tag active
136 delegate->addBooleanColumn(22); // storage active
137
138 m_page->tableTaggedResources->setModel(model);
139 m_page->tableTaggedResources->setItemDelegate(delegate);
140 m_page->tableTaggedResources->setSelectionMode(QAbstractItemView::NoSelection);
141 m_page->tableTaggedResources->resizeColumnsToContents();
142 }
143
144 {
145 TableModel *versionModel = new TableModel(this, QSqlDatabase::database());
146 TableDelegate *delegate = new TableDelegate(m_page->tableSchema);
147 versionModel->setTable("version_information");
148 versionModel->setHeaderData(0, Qt::Horizontal, i18n("Id"));
149 versionModel->setHeaderData(1, Qt::Horizontal, i18n("Database version"));
150 versionModel->setHeaderData(2, Qt::Horizontal, i18n("Krita version"));
151 versionModel->setHeaderData(3, Qt::Horizontal, i18n("Upgrade date"));
152 versionModel->addDateTimeColumn(3);
153 delegate->addDateTimeColumn(3);
154 versionModel->select();
155
156 const QSqlRecord r = versionModel->record(0);
157 m_page->lblDatabaseVersion->setText(r.value(1).toString());
158 m_page->lblKritaVersion->setText(r.value(2).toString());
159 m_page->lblCreationDate->setText(QDateTime::fromSecsSinceEpoch(r.value(3).value<int>()).toString());
160
161 m_page->tableSchema->setModel(versionModel);
162 m_page->tableSchema->hideColumn(0);
163 m_page->tableSchema->setItemDelegate(delegate);
164 m_page->tableSchema->setSelectionMode(QAbstractItemView::NoSelection);
165 m_page->tableSchema->resizeColumnsToContents();
166 }
167
168
169 {
170 m_page->cmbRvResourceTypes->setModel(m_resourceTypeModel);
171 m_page->cmbRvResourceTypes->setModelColumn(KisResourceTypeModel::Name);
172 connect(m_page->cmbRvResourceTypes, SIGNAL(activated(int)), SLOT(slotRvResourceTypeSelected(int)));
173
174 m_page->cmbRvTags->setModelColumn(KisAllTagsModel::Name);
175 m_page->cmbRvTags->setModel(m_tagModel);
176 connect(m_page->cmbRvTags, SIGNAL(activated(int)), SLOT(slotRvTagSelected(int)));
177
178 m_page->cmbRvResourceTypes->setCurrentIndex(0);
180
181 m_page->resourceItemView->setItemDelegate(new KisResourceItemDelegate(this));
182 m_page->resourceItemView->setSelectionMode(QAbstractItemView::SingleSelection);
183 }
184
185}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisTagModel * m_tagModel
void slotTbResourceTypeSelected(int index)
void slotTbTagSelected(const QModelIndex &index)
void slotRvResourceTypeSelected(int index)
WdgDbExplorer * m_page
void slotTbResourceItemSelected()
KisResourceTypeModel * m_resourceTypeModel
void slotRvTagSelected(int index)
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...
The KisTagResourceModel class makes it possible to retrieve the resources for certain tags or the tag...
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:498
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
void addDateTimeColumn(int column)
void addBooleanColumn(int column)
The TableModel class handles boolean and datetime columns in a custom way.
Definition TableModel.h:41
void addBooleanColumn(int column)
void addDateTimeColumn(int column)
const QString Brushes

References TableDelegate::addBooleanColumn(), TableModel::addBooleanColumn(), TableDelegate::addDateTimeColumn(), TableModel::addDateTimeColumn(), ResourceType::Brushes, connect(), m_page, m_resourceTypeModel, m_tagModel, KisResourceTypeModel::Name, KisAllTagsModel::Name, KoDialog::Ok, KoDialog::setButtons(), KoDialog::setCaption(), KoDialog::setMainWidget(), slotRvResourceTypeSelected(), slotRvTagSelected(), slotTbResourceItemSelected(), slotTbResourceTypeSelected(), and slotTbTagSelected().

◆ ~DlgDbExplorer()

DlgDbExplorer::~DlgDbExplorer ( )
override

Definition at line 187 of file DlgDbExplorer.cpp.

188{
189}

Member Function Documentation

◆ slotRvResourceTypeSelected

void DlgDbExplorer::slotRvResourceTypeSelected ( int index)
privateslot

Definition at line 200 of file DlgDbExplorer.cpp.

201{
202 QModelIndex idx = m_page->cmbResourceTypes->model()->index(index, KisResourceTypeModel::ResourceType);
203 QString resourceType = idx.data(Qt::DisplayRole).toString();
204
205 updateTagModel(resourceType);
206
207 KisTagFilterResourceProxyModel *tagFilterModel = new KisTagFilterResourceProxyModel(resourceType, this);
208
209 m_filterProxyModel = tagFilterModel;
210
211 m_page->resourceItemView->setModel(tagFilterModel);
212}
void updateTagModel(const QString &resourceType)
KisTagFilterResourceProxyModel * m_filterProxyModel
The KisTagFilterResourceProxyModel class filters the resources by tag or resource name.

References m_filterProxyModel, m_page, KisResourceTypeModel::ResourceType, and updateTagModel().

◆ slotRvTagSelected

void DlgDbExplorer::slotRvTagSelected ( int index)
privateslot

Definition at line 271 of file DlgDbExplorer.cpp.

272{
273 qDebug() << "selected tag" << index;
274 QModelIndex idx = m_tagModel->index(index, 0);
275 KisTagSP tag = m_tagModel->tagForIndex(idx);
276
277 if (m_filterProxyModel && !tag.isNull() && tag->valid()) {
279 m_page->tableTaggedResources->resizeColumnsToContents();
280 }
281}
void setTagFilter(const KisTagSP tag)
setTagFilter sets the tag to filter with
KisTagSP tagForIndex(QModelIndex index=QModelIndex()) const override

References m_filterProxyModel, m_page, m_tagModel, KisTagFilterResourceProxyModel::setTagFilter(), and KisTagModel::tagForIndex().

◆ slotTbResourceItemSelected

void DlgDbExplorer::slotTbResourceItemSelected ( )
privateslot

Definition at line 228 of file DlgDbExplorer.cpp.

229{
230 if (m_page->tableResources->selectionModel()->selectedIndexes().isEmpty()) return;
231
232 QModelIndex idx = m_page->tableResources->selectionModel()->selectedIndexes().first();
233
234 QImage thumb = idx.data(Qt::UserRole + KisAbstractResourceModel::Thumbnail).value<QImage>();
235 Qt::TransformationMode mode = Qt::SmoothTransformation;
236 if (thumb.size().width() < 100 && thumb.size().height() < 100) {
237 mode = Qt::FastTransformation;
238 }
239
240 if (!thumb.isNull()) {
241 m_page->lblThumbnail->setPixmap(QPixmap::fromImage(thumb.scaled(100, 100, Qt::KeepAspectRatio, mode)));
242 } else {
243 m_page->lblThumbnail->setPixmap(QPixmap());
244 }
245
246 TableModel *model = dynamic_cast<TableModel *>(m_page->tableVersions->model());
247
248 if (model) {
249 const QString md5 = idx.data(Qt::UserRole + KisAbstractResourceModel::MD5).value<QString>();
250 model->setFilter(QString("md5sum='%1'").arg(md5));
251 m_page->tableVersions->resizeColumnsToContents();
252 }
253}

References m_page, KisAbstractResourceModel::MD5, and KisAbstractResourceModel::Thumbnail.

◆ slotTbResourceTypeSelected

void DlgDbExplorer::slotTbResourceTypeSelected ( int index)
privateslot

Definition at line 214 of file DlgDbExplorer.cpp.

215{
216 QModelIndex idx = m_page->cmbRvResourceTypes->model()->index(index, KisResourceTypeModel::ResourceType);
217 QString resourceType = idx.data(Qt::DisplayRole).toString();
218
219 m_tagModel = new KisTagModel(resourceType, this);
220
221 KisResourceModel *resourceModel = new KisResourceModel(resourceType, this);
222 m_page->tableResources->setModel(resourceModel);
223 m_page->tableResources->setCurrentIndex(m_page->tableResources->model()->index(0, 0));
225 m_page->tableResources->resizeColumnsToContents();
226}

References m_page, m_tagModel, KisResourceTypeModel::ResourceType, and slotTbResourceItemSelected().

◆ slotTbTagSelected

void DlgDbExplorer::slotTbTagSelected ( const QModelIndex & index)
privateslot

Definition at line 255 of file DlgDbExplorer.cpp.

256{
257 // 0 == tag ID
258 const QModelIndex idx = m_page->tableTags->model()->index(index.row(), 0);
259 // get tag's resource type
260 const QModelIndex idx2 = m_page->tableTags->model()->index(index.row(), 1);
261
262 KisTagResourceModel *newModel = new KisTagResourceModel(idx2.data().value<QString>(), this);
264 newModel->setTagsFilter(QVector<int>{idx.data().value<int>()});
265 QAbstractItemModel *oldModel = m_page->tableTaggedResources->model();
266 m_page->tableTaggedResources->setModel(newModel);
267 m_page->tableTaggedResources->resizeColumnsToContents();
268 oldModel->deleteLater();
269}
void setResourceFilter(ResourceFilter filter) override
void setTagsFilter(const QVector< int > tagIds)

References m_page, KisTagResourceModel::setResourceFilter(), KisTagResourceModel::setTagsFilter(), and KisAbstractResourceFilterInterface::ShowAllResources.

◆ updateTagModel()

void DlgDbExplorer::updateTagModel ( const QString & resourceType)
private

Definition at line 191 of file DlgDbExplorer.cpp.

192{
193 m_tagModel = new KisTagModel(resourceType, this);
194 m_page->cmbRvTags->setModelColumn(KisAllTagsModel::Name);
195 m_page->cmbRvTags->setModel(m_tagModel);
196 m_page->cmbRvTags->update();
197 qDebug() << "number of tags in " << resourceType << " tag model: " << m_tagModel->rowCount();
198}

References m_page, m_tagModel, and KisAllTagsModel::Name.

Member Data Documentation

◆ m_filterProxyModel

KisTagFilterResourceProxyModel* DlgDbExplorer::m_filterProxyModel {0}
private

Definition at line 55 of file DlgDbExplorer.h.

55{0};

◆ m_page

WdgDbExplorer* DlgDbExplorer::m_page {0}
private

Definition at line 51 of file DlgDbExplorer.h.

51{0};

◆ m_resourceTypeModel

KisResourceTypeModel* DlgDbExplorer::m_resourceTypeModel {0}
private

Definition at line 54 of file DlgDbExplorer.h.

54{0};

◆ m_tagModel

KisTagModel* DlgDbExplorer::m_tagModel {0}
private

Definition at line 53 of file DlgDbExplorer.h.

53{0};

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