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

#include <KisAddRemoveStoryboardCommand.h>

+ Inheritance diagram for KisAddStoryboardCommand:

Public Member Functions

 KisAddStoryboardCommand (int position, StoryboardItemSP item, StoryboardModel *model, KUndo2Command *parent=0)
 
void redo () override
 
void undo () override
 
void updateItem ()
 
 ~KisAddStoryboardCommand ()
 
- Public Member Functions inherited from KUndo2Command
QString actionText () const
 
virtual bool canAnnihilateWith (const KUndo2Command *other) const
 
const KUndo2Commandchild (int index) const
 
int childCount () const
 
virtual QTime endTime () const
 
KUndo2CommandExtraDataextraData () const
 
bool hasParent () const
 
virtual int id () const
 
virtual bool isMerged () const
 
 KUndo2Command (const KUndo2MagicString &text, KUndo2Command *parent=0)
 
 KUndo2Command (KUndo2Command *parent=0)
 
virtual QVector< KUndo2Command * > mergeCommandsVector () const
 
virtual bool mergeWith (const KUndo2Command *other)
 
virtual void redoMergedCommands ()
 
void setEndTime ()
 
virtual void setEndTime (const QTime &time)
 
void setExtraData (KUndo2CommandExtraData *data)
 
void setText (const KUndo2MagicString &text)
 
void setTime ()
 
virtual void setTime (const QTime &time)
 
virtual void setTimedID (int timedID)
 
KUndo2MagicString text () const
 
virtual QTime time () const
 
virtual int timedId () const
 
virtual bool timedMergeWith (KUndo2Command *other)
 
virtual void undoMergedCommands ()
 
virtual ~KUndo2Command ()
 

Private Attributes

StoryboardItemSP m_item
 
StoryboardModelm_model
 
StoryboardItemSP m_modelItem
 
int m_position
 

Detailed Description

Definition at line 17 of file KisAddRemoveStoryboardCommand.h.

Constructor & Destructor Documentation

◆ KisAddStoryboardCommand()

KisAddStoryboardCommand::KisAddStoryboardCommand ( int position,
StoryboardItemSP item,
StoryboardModel * model,
KUndo2Command * parent = 0 )

Definition at line 16 of file KisAddRemoveStoryboardCommand.cpp.

20 : KUndo2Command(kundo2_i18n("Add Storyboard Scene"), parent)
21 , m_position(position)
22 , m_item(new StoryboardItem(*item))
23 , m_modelItem(item)
24 , m_model(model)
25{
26}
KUndo2Command(KUndo2Command *parent=0)
This class stores a list of StoryboardChild objects and provides functionality to manipulate the list...
KUndo2MagicString kundo2_i18n(const char *text)

◆ ~KisAddStoryboardCommand()

KisAddStoryboardCommand::~KisAddStoryboardCommand ( )

Definition at line 28 of file KisAddRemoveStoryboardCommand.cpp.

29{
30}

Member Function Documentation

◆ redo()

void KisAddStoryboardCommand::redo ( )
overridevirtual

Applies a change to the document. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.

The default implementation calls redo() on all child commands.

See also
undo()

Reimplemented from KUndo2Command.

Definition at line 32 of file KisAddRemoveStoryboardCommand.cpp.

33{
34 QModelIndex existingEntry = m_model->index(m_position, 0);
35 if (existingEntry.isValid()){
36 const int firstFrameOfScene = m_model->data(m_model->index(StoryboardItem::FrameNumber, 0, existingEntry)).toInt();
37 int durationDeletedScene = m_item->child(StoryboardItem::DurationSecond)->data().toInt() * m_model->getFramesPerSecond()
38 + m_item->child(StoryboardItem::DurationFrame)->data().toInt();
39 m_model->shiftKeyframes(KisTimeSpan::infinite(firstFrameOfScene), durationDeletedScene);
40 }
41 m_model->insertRow(m_position);
44}
virtual void redo()
static KisTimeSpan infinite(int start)
@ DurationFrame
Store the duration in frame at index 3. Data type stored here should be int.
@ FrameNumber
Store the frame number at index 0. Data type stored here should be ThumbnailData.
@ DurationSecond
Store the duration in second at index 2. Data type stored here should be int.
void insertChildRows(int position, KUndo2Command *cmd=nullptr)
must be called after a first level index is inserted. Adds child nodes to the first level indices
int getFramesPerSecond() const
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
void shiftKeyframes(KisTimeSpan affected, int offset, KUndo2Command *cmd=nullptr)

References StoryboardModel::data(), StoryboardItem::DurationFrame, StoryboardItem::DurationSecond, StoryboardItem::FrameNumber, StoryboardModel::getFramesPerSecond(), StoryboardModel::index(), KisTimeSpan::infinite(), StoryboardModel::insertChildRows(), m_item, m_model, m_position, KUndo2Command::redo(), and StoryboardModel::shiftKeyframes().

◆ undo()

void KisAddStoryboardCommand::undo ( )
overridevirtual

Reverts a change to the document. After undo() is called, the state of the document should be the same as before redo() was called. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.

The default implementation calls undo() on all child commands in reverse order.

See also
redo()

Reimplemented from KUndo2Command.

Definition at line 46 of file KisAddRemoveStoryboardCommand.cpp.

47{
49 updateItem();
50
51 QModelIndex nextEntry = m_model->index(m_position + 1, 0);
52 if (nextEntry.isValid()){
53 const int firstFrameOfScene = m_model->data(m_model->index(StoryboardItem::FrameNumber, 0, nextEntry)).toInt();
54 int durationDeletedScene = m_item->child(StoryboardItem::DurationSecond)->data().toInt() * m_model->getFramesPerSecond()
55 + m_item->child(StoryboardItem::DurationFrame)->data().toInt();
56 m_model->shiftKeyframes(KisTimeSpan::infinite(firstFrameOfScene), -durationDeletedScene);
57 }
59}
virtual void undo()
bool removeItem(QModelIndex index, KUndo2Command *command=nullptr)
removes item, deletes keyframes within and shifts keyframe after the scene to fill in the gap

References StoryboardModel::data(), StoryboardItem::DurationFrame, StoryboardItem::DurationSecond, StoryboardItem::FrameNumber, StoryboardModel::getFramesPerSecond(), StoryboardModel::index(), KisTimeSpan::infinite(), m_item, m_model, m_position, StoryboardModel::removeItem(), StoryboardModel::shiftKeyframes(), KUndo2Command::undo(), and updateItem().

◆ updateItem()

void KisAddStoryboardCommand::updateItem ( )

Definition at line 61 of file KisAddRemoveStoryboardCommand.cpp.

62{
63 m_item->cloneChildrenFrom(*m_modelItem);
64}

References m_item, and m_modelItem.

Member Data Documentation

◆ m_item

StoryboardItemSP KisAddStoryboardCommand::m_item
private

Definition at line 29 of file KisAddRemoveStoryboardCommand.h.

◆ m_model

StoryboardModel* KisAddStoryboardCommand::m_model
private

Definition at line 31 of file KisAddRemoveStoryboardCommand.h.

◆ m_modelItem

StoryboardItemSP KisAddStoryboardCommand::m_modelItem
private

Definition at line 30 of file KisAddRemoveStoryboardCommand.h.

◆ m_position

int KisAddStoryboardCommand::m_position
private

Definition at line 28 of file KisAddRemoveStoryboardCommand.h.


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