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

#include <KisTemplatesPane.h>

+ Inheritance diagram for KisTemplatesPane:

Signals

void alwaysUseChanged (KisTemplatesPane *sender, const QString &alwaysUse)
 Emitted when the always use checkbox is selected.
 
- Signals inherited from KisDetailsPane
void openUrl (const QUrl &)
 Emitted when a file is requested to be opened.
 
void splitterResized (KisDetailsPane *sender, const QList< int > &sizes)
 This is used to keep all splitters in different details panes synced.
 

Public Member Functions

bool isSelected ()
 Returns true if a template in this group was the last one selected.
 
 KisTemplatesPane (QWidget *parent, const QString &header, KisTemplateGroup *group, KisTemplate *defaultTemplate)
 
 ~KisTemplatesPane () override
 
- Public Member Functions inherited from KisDetailsPane
bool eventFilter (QObject *watched, QEvent *e) override
 
 KisDetailsPane (QWidget *parent, const QString &header)
 
QStandardItemModel * model () const
 
 ~KisDetailsPane () override
 

Protected Slots

void alwaysUseClicked ()
 
void changeAlwaysUseTemplate (KisTemplatesPane *sender, const QString &alwaysUse)
 
void openFile () override
 
void openFile (const QModelIndex &index) override
 
void selectionChanged (const QModelIndex &index) override
 
- Protected Slots inherited from KisDetailsPane
void changePalette ()
 
virtual void openFile ()
 
virtual void openFile (const QModelIndex &index)=0
 
virtual void selectionChanged (const QModelIndex &index)=0
 This is called when the selection in the listview changed.
 

Private Attributes

KisTemplatesPanePrivate *const d
 

Additional Inherited Members

- Public Slots inherited from KisDetailsPane
void resizeSplitter (KisDetailsPane *sender, const QList< int > &sizes)
 This is used to keep all splitters in different details panes synced.
 
- Protected Types inherited from KisDetailsPane
enum  Extents { IconExtent = 64 , PreviewExtent = 128 }
 

Detailed Description

This widget is the right-side part of the template opening widget. This widget shows a list of templates and can show their details or open it.

Definition at line 20 of file KisTemplatesPane.h.

Constructor & Destructor Documentation

◆ KisTemplatesPane()

KisTemplatesPane::KisTemplatesPane ( QWidget * parent,
const QString & header,
KisTemplateGroup * group,
KisTemplate * defaultTemplate )

Constructor.

Parameters
parentthe parent widget
headerstring used as header text in the listview
groupthe group of templates this widget will show.
defaultTemplatepointer to the default template. Used to select a template when none has been selected before.

Definition at line 32 of file KisTemplatesPane.cpp.

34 : KisDetailsPane(parent,header)
36{
37 setFocusProxy(m_documentList);
38
39 KGuiItem openGItem(i18n("Use This Template"));
40 KGuiItem::assign(m_openButton, openGItem);
41 KConfigGroup cfgGrp( KSharedConfig::openConfig(), "TemplateChooserDialog");
42 QString fullTemplateName = cfgGrp.readPathEntry("FullTemplateName", QString());
43
44
45 d->m_alwaysUseTemplate = cfgGrp.readPathEntry("AlwaysUseTemplate", QString());
46 m_alwaysUseCheckBox->setVisible(false);
47 connect(m_alwaysUseCheckBox, SIGNAL(clicked()), this, SLOT(alwaysUseClicked()));
48
49 QStandardItem* selectItem = 0;
50 QStandardItem* rootItem = model()->invisibleRootItem();
51 QStandardItem* defaultItem = 0;
52
53 QFileInfo templateFileInfo(fullTemplateName);
54
55 Q_FOREACH (KisTemplate* t, group->templates()) {
56 if (t->isHidden())
57 continue;
58
59 QPixmap preview = t->loadPicture();
60 QImage icon = preview.toImage();
61 icon = icon.scaled(IconExtent, IconExtent, Qt::KeepAspectRatio, Qt::SmoothTransformation);
62 icon.convertTo(QImage::Format_ARGB32);
63 icon = icon.copy((icon.width() - IconExtent) / 2, (icon.height() - IconExtent) / 2, IconExtent, IconExtent);
64 QStandardItem* item = new QStandardItem(QPixmap::fromImage(icon), t->name());
65 item->setEditable(false);
66 item->setData(t->description(), Qt::UserRole);
67 item->setData(t->file(), Qt::UserRole + 1);
68 item->setData(preview, Qt::UserRole + 2);
69 rootItem->appendRow(item);
70
71 if (templateFileInfo.exists()) {
72 if (!selectItem && (t->file() == fullTemplateName)) {
73 selectItem = item;
74 }
75 }
76 else {
77 if (!selectItem && QFileInfo(t->file()).fileName() == templateFileInfo.fileName()) {
78 selectItem = item;
79 }
80 }
81
82 if (defaultTemplate && (t->file() == defaultTemplate->file())) {
83 defaultItem = item;
84 }
85 }
86
87 QModelIndex selectedIndex;
88
89 if (selectItem) {
90 selectedIndex = model()->indexFromItem(selectItem);
91 d->m_selected = true;
92 } else if (defaultItem) {
93 selectedIndex = model()->indexFromItem(defaultItem);
94 } else {
95 selectedIndex = model()->indexFromItem(model()->item(0));
96 }
97
98 m_documentList->selectionModel()->select(selectedIndex, QItemSelectionModel::Select);
99 m_documentList->selectionModel()->setCurrentIndex(selectedIndex, QItemSelectionModel::Select);
100}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisDetailsPane(QWidget *parent, const QString &header)
QStandardItemModel * model() const
QList< KisTemplate * > templates() const
QString name() const
Definition KisTemplate.h:28
const QPixmap & loadPicture()
QString description() const
Definition KisTemplate.h:31
QString file() const
Definition KisTemplate.h:34
bool isHidden() const
Definition KisTemplate.h:45
KisTemplatesPanePrivate *const d

References alwaysUseClicked(), connect(), d, KisTemplate::description(), KisTemplate::file(), KisDetailsPane::IconExtent, KisTemplate::isHidden(), KisTemplate::loadPicture(), KisTemplatesPanePrivate::m_alwaysUseTemplate, KisTemplatesPanePrivate::m_selected, KisDetailsPane::model(), KisTemplate::name(), and KisTemplateGroup::templates().

◆ ~KisTemplatesPane()

KisTemplatesPane::~KisTemplatesPane ( )
override

Definition at line 102 of file KisTemplatesPane.cpp.

103{
104 delete d;
105}

References d.

Member Function Documentation

◆ alwaysUseChanged

void KisTemplatesPane::alwaysUseChanged ( KisTemplatesPane * sender,
const QString & alwaysUse )
signal

Emitted when the always use checkbox is selected.

◆ alwaysUseClicked

void KisTemplatesPane::alwaysUseClicked ( )
protectedslot

Definition at line 146 of file KisTemplatesPane.cpp.

147{
148 QStandardItem* item = model()->itemFromIndex(m_documentList->selectionModel()->currentIndex());
149
150 if (!m_alwaysUseCheckBox->isChecked()) {
151 d->m_alwaysUseTemplate.clear();
152 } else {
153 d->m_alwaysUseTemplate = item->data(Qt::UserRole + 1).toString();
154 }
155
156 KConfigGroup cfgGrp( KSharedConfig::openConfig(), "TemplateChooserDialog");
157 cfgGrp.writeEntry("AlwaysUseTemplate", d->m_alwaysUseTemplate);
158 cfgGrp.sync();
160}
void alwaysUseChanged(KisTemplatesPane *sender, const QString &alwaysUse)
Emitted when the always use checkbox is selected.

References alwaysUseChanged(), d, KisTemplatesPanePrivate::m_alwaysUseTemplate, and KisDetailsPane::model().

◆ changeAlwaysUseTemplate

void KisTemplatesPane::changeAlwaysUseTemplate ( KisTemplatesPane * sender,
const QString & alwaysUse )
protectedslot

Definition at line 162 of file KisTemplatesPane.cpp.

163{
164 if (this == sender)
165 return;
166
167 QStandardItem* item = model()->itemFromIndex(m_documentList->selectionModel()->currentIndex());
168
169 // If the old always use template is selected uncheck the checkbox
170 if (item && (item->data(Qt::UserRole + 1).toString() == d->m_alwaysUseTemplate)) {
171 m_alwaysUseCheckBox->setChecked(false);
172 }
173
174 d->m_alwaysUseTemplate = alwaysUse;
175}

References d, KisTemplatesPanePrivate::m_alwaysUseTemplate, and KisDetailsPane::model().

◆ isSelected()

bool KisTemplatesPane::isSelected ( )

Returns true if a template in this group was the last one selected.

Definition at line 141 of file KisTemplatesPane.cpp.

142{
143 return d->m_selected;
144}

References d, and KisTemplatesPanePrivate::m_selected.

◆ openFile [1/2]

void KisTemplatesPane::openFile ( )
overrideprotectedslot

Definition at line 124 of file KisTemplatesPane.cpp.

125{
127}
virtual void openFile()

References KisDetailsPane::openFile().

◆ openFile [2/2]

void KisTemplatesPane::openFile ( const QModelIndex & index)
overrideprotectedslot

Definition at line 129 of file KisTemplatesPane.cpp.

130{
131 if (index.isValid()) {
132 QStandardItem* item = model()->itemFromIndex(index);
133 KConfigGroup cfgGrp( KSharedConfig::openConfig(), "TemplateChooserDialog");
134 cfgGrp.writePathEntry("FullTemplateName", item->data(Qt::UserRole + 1).toString());
135 cfgGrp.writeEntry("LastReturnType", "Template");
136 cfgGrp.writeEntry("AlwaysUseTemplate", d->m_alwaysUseTemplate);
137 Q_EMIT openUrl(QUrl::fromLocalFile(item->data(Qt::UserRole + 1).toString()));
138 }
139}
void openUrl(const QUrl &)
Emitted when a file is requested to be opened.

References d, KisTemplatesPanePrivate::m_alwaysUseTemplate, KisDetailsPane::model(), and KisDetailsPane::openUrl().

◆ selectionChanged

void KisTemplatesPane::selectionChanged ( const QModelIndex & index)
overrideprotectedslot

Definition at line 107 of file KisTemplatesPane.cpp.

108{
109 if (index.isValid()) {
110 QStandardItem* item = model()->itemFromIndex(index);
111 m_openButton->setEnabled(true);
112 m_alwaysUseCheckBox->setEnabled(true);
113
114 m_detailsLabel->setHtml(item->data(Qt::UserRole).toString());
115 m_alwaysUseCheckBox->setChecked(item->data(Qt::UserRole + 1).toString() == d->m_alwaysUseTemplate);
116 } else {
117 m_openButton->setEnabled(false);
118 m_alwaysUseCheckBox->setEnabled(false);
119 m_alwaysUseCheckBox->setChecked(false);
120 m_detailsLabel->clear();
121 }
122}

References d, KisTemplatesPanePrivate::m_alwaysUseTemplate, and KisDetailsPane::model().

Member Data Documentation

◆ d

KisTemplatesPanePrivate* const KisTemplatesPane::d
private

Definition at line 53 of file KisTemplatesPane.h.


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