Krita Source Code Documentation
Loading...
Searching...
No Matches
dlg_embed_tags.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Agata Cacko cacko.azh @gmail.com
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#include "ui_wdgdlgembedtags.h"
8
9#include <QProcessEnvironment>
10#include <QMessageBox>
11#include <QStandardPaths>
12#include <QGridLayout>
13#include <QTableWidget>
14#include <QPainter>
15#include <QListWidget>
16#include <QListWidgetItem>
17
19#include <KoDocumentInfo.h>
20#include <KoFileDialog.h>
21#include <kis_icon.h>
22#include <KoResource.h>
23#include <KoResourceServer.h>
25#include <kstandardguiitem.h>
26#include <KisTagModel.h>
27
30#include <dlg_embed_tags.h>
31
32#include <kis_config.h>
33
34#define ICON_SIZE 48
35
36DlgEmbedTags::DlgEmbedTags(QList<int> selectedTags, QWidget *parent)
37 : KoDialog(parent)
38 , m_ui(new Ui::WdgDlgEmbedTags)
39{
40 m_page = new QWidget();
41 m_ui->setupUi(m_page);
43 setFixedSize(m_page->sizeHint());
46 setButtonGuiItem(Ok, KStandardGuiItem::save());
47 m_selectedTagIds = selectedTags;
48
49
50 KoDocumentInfo info;
51 info.updateParameters();
52
53
54 m_ui->bnAdd->setIcon(KisIconUtils::loadIcon("arrow-right"));
55 connect(m_ui->bnAdd, SIGNAL(clicked()), SLOT(addSelected()));
56
57 m_ui->bnRemove->setIcon(KisIconUtils::loadIcon("arrow-left"));
58 connect(m_ui->bnRemove, SIGNAL(clicked()), SLOT(removeSelected()));
59
60
61 m_ui->cmbResourceTypes->addItem(i18n("Brushes"), ResourceType::Brushes);
62 m_ui->cmbResourceTypes->addItem(i18n("Brush Presets"), ResourceType::PaintOpPresets);
63 m_ui->cmbResourceTypes->addItem(i18n("Gradients"), ResourceType::Gradients);
64 m_ui->cmbResourceTypes->addItem(i18n("Gamut Masks"), ResourceType::GamutMasks);
65 m_ui->cmbResourceTypes->addItem(i18n("Patterns"), ResourceType::Patterns);
66 m_ui->cmbResourceTypes->addItem(i18n("Palettes"), ResourceType::Palettes);
67 m_ui->cmbResourceTypes->addItem(i18n("Workspaces"), ResourceType::Workspaces);
68
69 connect(m_ui->cmbResourceTypes, SIGNAL(activated(int)), SLOT(resourceTypeSelected(int)));
70
71 m_ui->tableAvailable->setIconSize(QSize(ICON_SIZE, ICON_SIZE));
72 m_ui->tableAvailable->setSelectionMode(QAbstractItemView::ExtendedSelection);
73
74 m_ui->tableSelected->setIconSize(QSize(ICON_SIZE, ICON_SIZE));
75 m_ui->tableSelected->setSelectionMode(QAbstractItemView::ExtendedSelection);
76
78}
79
81{
82 delete m_ui;
83}
84
89
91{
92 int row = m_ui->tableAvailable->currentRow();
93
94 Q_FOREACH (QListWidgetItem *item, m_ui->tableAvailable->selectedItems()) {
95 m_ui->tableSelected->addItem(m_ui->tableAvailable->takeItem(m_ui->tableAvailable->row(item)));
96 m_selectedTagIds.append(item->data(Qt::UserRole).toInt());
97 }
98
99 m_ui->tableAvailable->setCurrentRow(row);
100}
101
103{
104 int row = m_ui->tableSelected->currentRow();
105
106 Q_FOREACH (QListWidgetItem *item, m_ui->tableSelected->selectedItems()) {
107 m_ui->tableAvailable->addItem(m_ui->tableSelected->takeItem(m_ui->tableSelected->row(item)));
108 m_selectedTagIds.removeAll(item->data(Qt::UserRole).toInt());
109 }
110
111 m_ui->tableSelected->setCurrentRow(row);
112}
113
115{
116 QString resourceType = m_ui->cmbResourceTypes->itemData(idx).toString();
117
118 m_ui->tableAvailable->clear();
119 m_ui->tableSelected->clear();
120
121 QString standardizedResourceType = (resourceType == "presets" ? ResourceType::PaintOpPresets : resourceType);
122
123 KisTagModel model(standardizedResourceType);
124
125 for (int i = 0; i < model.rowCount(); i++) {
126
127 QModelIndex idx = model.index(i, 0);
128 QString name = model.data(idx, Qt::DisplayRole).toString();
129 int id = model.data(idx, Qt::UserRole + KisAllTagsModel::Id).toInt();
130
131 if (id < 0) {
132 // skip automated tags
133 continue;
134 }
135
136 QListWidgetItem *item = new QListWidgetItem(QPixmap(), name);
137 item->setData(Qt::UserRole, id);
138
139 if (m_selectedTagIds.contains(id)) {
140 m_ui->tableSelected->addItem(item);
141 }
142 else {
143 m_ui->tableAvailable->addItem(item);
144 }
145 }
146
147}
148
149
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
~DlgEmbedTags() override
void resourceTypeSelected(int idx)
QWidget * m_page
QList< int > m_selectedTagIds
QList< int > selectedTagIds()
DlgEmbedTags(QList< int > selectedTags, QWidget *parent=0)
Ui::WdgDlgEmbedTags * m_ui
A dialog base class with standard buttons and predefined layouts.
Definition KoDialog.h:116
void setButtonGuiItem(ButtonCode id, const KGuiItem &item)
Definition KoDialog.cpp:638
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:302
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130
The class containing all meta information about a document.
QIcon loadIcon(const QString &name)
const QString Palettes
const QString Brushes
const QString GamutMasks
const QString Patterns
const QString Gradients
const QString Workspaces
const QString PaintOpPresets
#define ICON_SIZE