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

#include <tasksetdocker_dock.h>

+ Inheritance diagram for TasksetDockerDock:

Public Member Functions

QString observerName () override
 
void setCanvas (KoCanvasBase *canvas) override
 
 TasksetDockerDock ()
 
void unsetCanvas () override
 
 ~TasksetDockerDock () override
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBaseobservedCanvas () const
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 

Private Slots

void actionTriggered (QAction *action)
 
void activated (const QModelIndex &index)
 
void clearClicked ()
 
void recordClicked ()
 
void resourceSelected (KoResourceSP resource)
 
void saveClicked ()
 

Private Attributes

bool m_blocked
 
QPointer< KisCanvas2m_canvas
 
TasksetModelm_model
 
KoResourceServer< TasksetResource > * m_rserver {0}
 

Additional Inherited Members

Detailed Description

Definition at line 24 of file tasksetdocker_dock.h.

Constructor & Destructor Documentation

◆ TasksetDockerDock()

TasksetDockerDock::TasksetDockerDock ( )

Definition at line 76 of file tasksetdocker_dock.cpp.

77 : QDockWidget(i18n("Task Sets"))
78 , m_canvas(0)
79 , m_blocked(false)
80{
81 QWidget* widget = new QWidget(this);
82 setupUi(widget);
83 m_model = new TasksetModel(this);
84 tasksetView->setModel(m_model);
85 tasksetView->setItemDelegate(new KisTasksetDelegate(this));
86 recordButton->setIcon(KisIconUtils::loadIcon("media-record"));
87 recordButton->setCheckable(true);
88
89 clearButton->setIcon(KisIconUtils::loadIcon("edit-delete"));
90
91 saveButton->setIcon(KisIconUtils::loadIcon("document-save-16"));
92 saveButton->setEnabled(false);
93
94 chooserButton->setIcon(KisIconUtils::loadIcon("folder"));
95 chooserButton->setAutoRaise(true);
96
99 itemChooser->setItemDelegate(new KisTasksetResourceDelegate(this));
100 itemChooser->setFixedSize(500, 250);
101 itemChooser->setRowHeight(30);
103 itemChooser->showTaggingBar(true);
104 chooserButton->setPopupWidget(itemChooser);
105
106 connect(itemChooser, SIGNAL(resourceSelected(KoResourceSP )), this, SLOT(resourceSelected(KoResourceSP )));
107
108 setWidget(widget);
109 setEnabled(false);
110
111 connect( tasksetView, SIGNAL(clicked(QModelIndex)),
112 this, SLOT(activated(QModelIndex)) );
113
114 connect( recordButton, SIGNAL(toggled(bool)), this, SLOT(recordClicked()));
115 connect( clearButton, SIGNAL(clicked(bool)), this, SLOT(clearClicked()));
116 connect( saveButton, SIGNAL(clicked(bool)), this, SLOT(saveClicked()));
117}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setListViewMode(ListViewMode viewMode)
void setRowHeight(int rowHeight)
Sets the height of the view rows.
void setItemDelegate(QAbstractItemDelegate *delegate)
Sets a custom delegate for the view.
KoResourceServer< TasksetResource > * m_rserver
TasksetModel * m_model
void resourceSelected(KoResourceSP resource)
QPointer< KisCanvas2 > m_canvas
void activated(const QModelIndex &index)
QIcon loadIcon(const QString &name)
const QString TaskSets

References activated(), clearClicked(), connect(), Detail, KisIconUtils::loadIcon(), m_model, m_rserver, recordClicked(), resourceSelected(), saveClicked(), KisResourceItemChooser::setItemDelegate(), KisResourceItemChooser::setListViewMode(), KisResourceItemChooser::setRowHeight(), KisResourceItemChooser::showTaggingBar(), and ResourceType::TaskSets.

◆ ~TasksetDockerDock()

TasksetDockerDock::~TasksetDockerDock ( )
override

Definition at line 119 of file tasksetdocker_dock.cpp.

120{
121 delete m_rserver;
122}

References m_rserver.

Member Function Documentation

◆ actionTriggered

void TasksetDockerDock::actionTriggered ( QAction * action)
privateslot

Definition at line 143 of file tasksetdocker_dock.cpp.

144{
145 if(action && !action->objectName().isEmpty() &&
146 !m_blocked && recordButton->isChecked()) {
147 m_model->addAction(action);
148 saveButton->setEnabled(true);
149 }
150}
void addAction(QAction *action)

References TasksetModel::addAction(), m_blocked, and m_model.

◆ activated

void TasksetDockerDock::activated ( const QModelIndex & index)
privateslot

Definition at line 152 of file tasksetdocker_dock.cpp.

153{
154 QAction* action = m_model->actionFromIndex(index);
155 m_blocked = true;
156 if (action && action->isEnabled()) {
157 action->trigger();
158 }
159 m_blocked = false;
160}
QAction * actionFromIndex(const QModelIndex &index)

References TasksetModel::actionFromIndex(), m_blocked, and m_model.

◆ clearClicked

void TasksetDockerDock::clearClicked ( )
privateslot

Definition at line 221 of file tasksetdocker_dock.cpp.

222{
223 saveButton->setEnabled(false);
224 m_model->clear();
225}

References TasksetModel::clear(), and m_model.

◆ observerName()

QString TasksetDockerDock::observerName ( )
inlineoverridevirtual

Reimplemented from KoCanvasObserverBase.

Definition at line 29 of file tasksetdocker_dock.h.

29{ return "TasksetDockerDock"; }

◆ recordClicked

void TasksetDockerDock::recordClicked ( )
privateslot

Definition at line 162 of file tasksetdocker_dock.cpp.

163{
164 if(m_canvas) {
165 KisViewManager* view = m_canvas->viewManager();
166 connect(view->actionCollection(), SIGNAL(actionTriggered(QAction*)),
167 this, SLOT(actionTriggered(QAction*)), Qt::UniqueConnection);
168 Q_FOREACH (KisKXMLGUIClient* client, view->mainWindow()->childClients()) {
169 connect(client->actionCollection(), SIGNAL(actionTriggered(QAction*)),
170 this, SLOT(actionTriggered(QAction*)), Qt::UniqueConnection);
171 }
172 }
173}
QList< KisKXMLGUIClient * > childClients()
virtual KisKActionCollection * actionCollection() const
KisMainWindow * mainWindow() const
virtual KisKActionCollection * actionCollection() const
void actionTriggered(QAction *action)

References KisViewManager::actionCollection(), KisKXMLGUIClient::actionCollection(), actionTriggered(), KisKXMLGUIClient::childClients(), connect(), m_canvas, and KisViewManager::mainWindow().

◆ resourceSelected

void TasksetDockerDock::resourceSelected ( KoResourceSP resource)
privateslot

Definition at line 227 of file tasksetdocker_dock.cpp.

228{
229 if(!m_canvas) {
230 return;
231 }
232 m_model->clear();
233 saveButton->setEnabled(true);
234 Q_FOREACH (const QString& actionName, resource.staticCast<TasksetResource>()->actionList()) {
235 QAction* action = m_canvas->viewManager()->actionCollection()->action(actionName);
236 if(action) {
237 m_model->addAction(action);
238 }
239 }
240}
QStringList actionList()

References TasksetResource::actionList(), TasksetModel::addAction(), TasksetModel::clear(), m_canvas, and m_model.

◆ saveClicked

void TasksetDockerDock::saveClicked ( )
privateslot

Definition at line 175 of file tasksetdocker_dock.cpp.

176{
177 QString name;
178
179 TasksetResourceSP taskset(new TasksetResource(QString()));
180
181 QStringList actionNames;
182 Q_FOREACH (QAction* action, m_model->actions()) {
183 actionNames.append(action->objectName());
184 }
185 taskset->setActionList(actionNames);
186 taskset->setValid(true);
187 QString saveLocation = m_rserver->saveLocation();
188
189 if (name.isEmpty()) {
190 name = i18n("Taskset");
191 }
192 QFileInfo fileInfo(saveLocation + name + taskset->defaultFileExtension());
193
194 bool fileOverwriteAccepted = false;
195 bool ok = false;
196
197 while(!fileOverwriteAccepted) {
198 name = QInputDialog::getText(this, i18n("Taskset Name"),
199 i18n("Name:"), QLineEdit::Normal,
200 QString(), &ok);
201 if (name.isNull() || name.isEmpty()) {
202 return;
203 } else {
204 fileInfo = QFileInfo(saveLocation + name.split(" ").join("_") + taskset->defaultFileExtension());
205 if (fileInfo.exists()) {
206 int res = QMessageBox::warning(this, i18nc("@title:window", "Name Already Exists")
207 , i18n("The name '%1' already exists, do you wish to overwrite it?", name)
208 , QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
209 if (res == QMessageBox::Yes) fileOverwriteAccepted = true;
210 } else {
211 fileOverwriteAccepted = true;
212 }
213 }
214 }
215
216 taskset->setName(name);
217 taskset->setFilename(fileInfo.fileName());
219}
static bool addResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource, QString storageLocation="")
QString saveLocation()
Returns path where to save user defined and imported resources to.
QVector< QAction * > actions()
const char * name(StandardAction id)

References TasksetModel::actions(), KisResourceUserOperations::addResourceWithUserInput(), m_model, m_rserver, and KoResourceServer< T >::saveLocation().

◆ setCanvas()

void TasksetDockerDock::setCanvas ( KoCanvasBase * canvas)
overridevirtual

re-implement this method in your canvas observer. It will be called whenever a canvas becomes active. Note that you are responsible for not connecting more than one time to the signals of a canvas or any of the QObjects you can access through the canvas.

Implements KoCanvasObserverBase.

Definition at line 124 of file tasksetdocker_dock.cpp.

125{
126 if (m_canvas && m_canvas->viewManager()) {
127 m_canvas->viewManager()->actionCollection()->disconnect(this);
128 Q_FOREACH (KisKXMLGUIClient* client, m_canvas->viewManager()->mainWindow()->childClients()) {
129 client->actionCollection()->disconnect(this);
130 }
131 }
132 m_canvas = dynamic_cast<KisCanvas2*>(canvas);
133 setEnabled(canvas != 0);
134}

References KisKXMLGUIClient::actionCollection(), and m_canvas.

◆ unsetCanvas()

void TasksetDockerDock::unsetCanvas ( )
overridevirtual

Re-implement to notify the observer that its canvas is no longer among the living. The daisies, it is pushing up. This means you don't have to disconnect, it's dead.

The old canvas should be deleted already, so if you stored a pointer to it, don't touch!

Note that currently there is a bug where in certain specific circumstances unsetCanvas can be called when it shouldn't, see for example KWStatisticsDocker for a workaround for this problem.

Implements KoCanvasObserverBase.

Definition at line 136 of file tasksetdocker_dock.cpp.

137{
138 m_canvas = 0;
139 m_model->clear();
140 setCanvas(0);
141}
void setCanvas(KoCanvasBase *canvas) override

References TasksetModel::clear(), m_canvas, m_model, and setCanvas().

Member Data Documentation

◆ m_blocked

bool TasksetDockerDock::m_blocked
private

Definition at line 44 of file tasksetdocker_dock.h.

◆ m_canvas

QPointer<KisCanvas2> TasksetDockerDock::m_canvas
private

Definition at line 42 of file tasksetdocker_dock.h.

◆ m_model

TasksetModel* TasksetDockerDock::m_model
private

Definition at line 43 of file tasksetdocker_dock.h.

◆ m_rserver

KoResourceServer<TasksetResource>* TasksetDockerDock::m_rserver {0}
private

Definition at line 45 of file tasksetdocker_dock.h.

45{0};

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