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

#include <timeline_node_list_keeper.h>

+ Inheritance diagram for TimelineNodeListKeeper:

Classes

struct  ModelWithExternalNotifications
 
struct  OtherLayer
 
struct  Private
 

Public Types

typedef QList< OtherLayerOtherLayersList
 

Public Member Functions

KisNodeDummydummyFromRow (int row)
 
OtherLayersList otherLayersList () const
 
int rowCount ()
 
int rowForDummy (KisNodeDummy *dummy)
 
 TimelineNodeListKeeper (ModelWithExternalNotifications *model, KisDummiesFacadeBase *dummiesFacade, KisNodeDisplayModeAdapter *displayModeAdapter)
 
void updateActiveDummy (KisNodeDummy *dummy)
 
 ~TimelineNodeListKeeper () override
 

Private Slots

void slotBeginRemoveDummy (KisNodeDummy *dummy)
 
void slotDisplayModeChanged ()
 
void slotDummyChanged (KisNodeDummy *dummy)
 
void slotEndInsertDummy (KisNodeDummy *dummy)
 
void slotUpdateDummyContent (QPointer< KisNodeDummy > dummy)
 

Private Attributes

const QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 24 of file timeline_node_list_keeper.h.

Member Typedef Documentation

◆ OtherLayersList

Constructor & Destructor Documentation

◆ TimelineNodeListKeeper()

TimelineNodeListKeeper::TimelineNodeListKeeper ( ModelWithExternalNotifications * model,
KisDummiesFacadeBase * dummiesFacade,
KisNodeDisplayModeAdapter * displayModeAdapter )

Definition at line 66 of file timeline_node_list_keeper.cpp.

69 : m_d(new Private(this, model, dummiesFacade, displayModeAdapter))
70{
71 KIS_ASSERT_RECOVER_RETURN(m_d->dummiesFacade);
72
73 connect(m_d->dummiesFacade, SIGNAL(sigEndInsertDummy(KisNodeDummy*)),
75 connect(m_d->dummiesFacade, SIGNAL(sigBeginRemoveDummy(KisNodeDummy*)),
77 connect(m_d->dummiesFacade, SIGNAL(sigDummyChanged(KisNodeDummy*)),
79
80 m_d->populateDummiesList();
81
82 connect(m_d->displayModeAdapter, SIGNAL(sigNodeDisplayModeChanged(bool, bool)), SLOT(slotDisplayModeChanged()));
83}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void slotBeginRemoveDummy(KisNodeDummy *dummy)
void slotEndInsertDummy(KisNodeDummy *dummy)
const QScopedPointer< Private > m_d
void slotDummyChanged(KisNodeDummy *dummy)
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:75

References connect(), KIS_ASSERT_RECOVER_RETURN, m_d, slotBeginRemoveDummy(), slotDisplayModeChanged(), slotDummyChanged(), and slotEndInsertDummy().

◆ ~TimelineNodeListKeeper()

TimelineNodeListKeeper::~TimelineNodeListKeeper ( )
override

Definition at line 85 of file timeline_node_list_keeper.cpp.

86{
87}

Member Function Documentation

◆ dummyFromRow()

KisNodeDummy * TimelineNodeListKeeper::dummyFromRow ( int row)

Definition at line 89 of file timeline_node_list_keeper.cpp.

90{
91 if (row >= 0 && row < m_d->dummiesList.size()) {
92 return m_d->dummiesList[row];
93 }
94
95 return 0;
96}

References m_d.

◆ otherLayersList()

TimelineNodeListKeeper::OtherLayersList TimelineNodeListKeeper::otherLayersList ( ) const

Definition at line 276 of file timeline_node_list_keeper.cpp.

277{
278 OtherLayersList list;
279
280 KisNodeDummy *rootDummy = m_d->dummiesFacade->rootDummy();
281 if (!rootDummy) return list;
282
283 m_d->findOtherLayers(rootDummy, &list, "");
284 return list;
285}
QList< OtherLayer > OtherLayersList

References m_d.

◆ rowCount()

int TimelineNodeListKeeper::rowCount ( )

Definition at line 103 of file timeline_node_list_keeper.cpp.

104{
105 return m_d->dummiesList.size();
106}

References m_d.

◆ rowForDummy()

int TimelineNodeListKeeper::rowForDummy ( KisNodeDummy * dummy)

Definition at line 98 of file timeline_node_list_keeper.cpp.

99{
100 return m_d->dummiesList.indexOf(dummy);
101}

References KisNodeDummy::indexOf(), and m_d.

◆ slotBeginRemoveDummy

void TimelineNodeListKeeper::slotBeginRemoveDummy ( KisNodeDummy * dummy)
privateslot

Definition at line 205 of file timeline_node_list_keeper.cpp.

206{
207 if (m_d->dummiesList.contains(dummy)) {
208 int pos = m_d->dummiesList.indexOf(dummy);
209
210 m_d->model->callBeginRemoveRows(QModelIndex(), pos, pos);
211 m_d->disconnectDummy(dummy);
212 m_d->dummiesList.remove(pos);
213 m_d->model->callEndRemoveRows();
214 }
215
216 m_d->converter.notifyDummyRemoved(dummy);
217}

References m_d.

◆ slotDisplayModeChanged

void TimelineNodeListKeeper::slotDisplayModeChanged ( )
privateslot

Definition at line 233 of file timeline_node_list_keeper.cpp.

234{
235 if (m_d->showGlobalSelectionMask != m_d->displayModeAdapter->showGlobalSelectionMask()) {
236
237 m_d->model->callBeginResetModel();
238
239 Q_FOREACH (KisNodeDummy *dummy, m_d->dummiesList) {
240 m_d->disconnectDummy(dummy);
241 }
242 m_d->dummiesList.clear();
243
244 m_d->showGlobalSelectionMask = m_d->displayModeAdapter->showGlobalSelectionMask();
245 m_d->converter.setShowGlobalSelectionMask(m_d->showGlobalSelectionMask);
246
247 m_d->populateDummiesList();
248
249 m_d->model->callEndResetModel();
250 }
251}

References m_d.

◆ slotDummyChanged

void TimelineNodeListKeeper::slotDummyChanged ( KisNodeDummy * dummy)
privateslot

Definition at line 219 of file timeline_node_list_keeper.cpp.

220{
221 const bool present = m_d->dummiesList.contains(dummy);
222 const bool shouldBe = m_d->converter.isDummyVisible(dummy);
223
224 m_d->tryConnectDummy(dummy);
225
226 if (!present && shouldBe) {
227 slotEndInsertDummy(dummy);
228 } else if (present && !shouldBe) {
230 }
231}

References m_d, slotBeginRemoveDummy(), and slotEndInsertDummy().

◆ slotEndInsertDummy

void TimelineNodeListKeeper::slotEndInsertDummy ( KisNodeDummy * dummy)
privateslot

Definition at line 191 of file timeline_node_list_keeper.cpp.

192{
193 KIS_ASSERT_RECOVER_RETURN(!m_d->dummiesList.contains(dummy));
194
195 if (m_d->converter.isDummyVisible(dummy)) {
196 int pos = m_d->converter.rowForDummy(dummy);
197
198 m_d->model->callBeginInsertRows(QModelIndex(), pos, pos);
199 m_d->dummiesList.insert(pos, 1, dummy);
200 m_d->tryConnectDummy(dummy);
201 m_d->model->callEndInsertRows();
202 }
203}

References KIS_ASSERT_RECOVER_RETURN, and m_d.

◆ slotUpdateDummyContent

void TimelineNodeListKeeper::slotUpdateDummyContent ( QPointer< KisNodeDummy > dummy)
privateslot

The dummy object has been destroyed in the meantime, while the event was hanging in the queue. We shouldn't try to dereference/update it anymore, since the whole layer has already been removed

Definition at line 125 of file timeline_node_list_keeper.cpp.

126{
132 if (!dummy) return;
133
134 int pos = m_d->converter.rowForDummy(dummy);
135 if (pos < 0) return;
136
137 QModelIndex index0 = m_d->model->index(pos, 0);
138 QModelIndex index1 = m_d->model->index(pos, m_d->model->columnCount() - 1);
139 m_d->model->callIndexChanged(index0, index1);
140}

References m_d.

◆ updateActiveDummy()

void TimelineNodeListKeeper::updateActiveDummy ( KisNodeDummy * dummy)

Definition at line 108 of file timeline_node_list_keeper.cpp.

109{
110 bool oldRemoved = false;
111 bool newAdded = false;
112
113 KisNodeDummy *oldActiveDummy = m_d->converter.activeDummy();
114 m_d->converter.updateActiveDummy(dummy, &oldRemoved, &newAdded);
115
116 if (oldRemoved) {
117 slotBeginRemoveDummy(oldActiveDummy);
118 }
119
120 if (newAdded) {
121 slotEndInsertDummy(dummy);
122 }
123}

References m_d, slotBeginRemoveDummy(), and slotEndInsertDummy().

Member Data Documentation

◆ m_d

const QScopedPointer<Private> TimelineNodeListKeeper::m_d
private

Definition at line 103 of file timeline_node_list_keeper.h.


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