1 /* 2 SPDX-FileCopyrightText: 2007-2009 Sergio Pistone <sergio_pistone@yahoo.com.ar> 3 SPDX-FileCopyrightText: 2010-2019 Mladen Milinkovic <max@smoothware.net> 4 5 SPDX-License-Identifier: GPL-2.0-or-later 6 */ 7 8 #ifndef SUBTITLEACTIONS_H 9 #define SUBTITLEACTIONS_H 10 11 #include "core/range.h" 12 #include "core/rangelist.h" 13 #include "core/undo/undoaction.h" 14 #include "core/subtitle.h" 15 16 #include <QString> 17 #include <QList> 18 19 namespace SubtitleComposer { 20 21 class SubtitleAction : public UndoAction 22 { 23 public: 24 SubtitleAction(Subtitle *subtitle, UndoStack::DirtyMode dirtyMode, const QString &description = QString()); 25 virtual ~SubtitleAction(); 26 setLineSubtitle(SubtitleLine * line)27 inline void setLineSubtitle(SubtitleLine *line) 28 { 29 line->m_subtitle = m_subtitle; 30 } 31 clearLineSubtitle(SubtitleLine * line)32 inline void clearLineSubtitle(SubtitleLine *line) 33 { 34 line->m_subtitle = nullptr; 35 } 36 }; 37 38 class SetFramesPerSecondAction : public SubtitleAction 39 { 40 public: 41 SetFramesPerSecondAction(Subtitle *subtitle, double framesPerSecond); 42 virtual ~SetFramesPerSecondAction(); 43 id()44 inline int id() const override { return UndoAction::SetFramesPerSecond; } 45 46 protected: 47 void redo() override; 48 49 private: 50 double m_framesPerSecond; 51 }; 52 53 class InsertLinesAction : public SubtitleAction 54 { 55 public: 56 InsertLinesAction(Subtitle *subtitle, const QList<SubtitleLine *> &lines, int insertIndex = -1); 57 virtual ~InsertLinesAction(); 58 id()59 inline int id() const override { return UndoAction::InsertLines; } 60 bool mergeWith(const QUndoCommand *command) override; 61 62 protected: 63 void redo() override; 64 void undo() override; 65 66 private: 67 int m_insertIndex; 68 int m_lastIndex; 69 QList<SubtitleLine *> m_lines; 70 }; 71 72 class RemoveLinesAction : public SubtitleAction 73 { 74 public: 75 RemoveLinesAction(Subtitle *subtitle, int firstIndex, int lastIndex = -1); 76 virtual ~RemoveLinesAction(); 77 id()78 inline int id() const override { return UndoAction::RemoveLines; } 79 bool mergeWith(const QUndoCommand *command) override; 80 81 protected: 82 void redo() override; 83 void undo() override; 84 85 private: 86 int m_firstIndex; 87 int m_lastIndex; 88 QList<SubtitleLine *> m_lines; 89 }; 90 91 class MoveLineAction : public SubtitleAction 92 { 93 public: 94 MoveLineAction(Subtitle *subtitle, int fromIndex, int toIndex = -1); 95 virtual ~MoveLineAction(); 96 id()97 inline int id() const override { return UndoAction::MoveLine; } 98 bool mergeWith(const QUndoCommand *command) override; 99 100 protected: 101 void redo() override; 102 void undo() override; 103 104 private: 105 int m_fromIndex; 106 int m_toIndex; 107 }; 108 109 class SwapLinesTextsAction : public SubtitleAction 110 { 111 public: 112 SwapLinesTextsAction(Subtitle *subtitle, const RangeList &ranges); 113 virtual ~SwapLinesTextsAction(); 114 id()115 inline int id() const override { return UndoAction::SwapLinesTexts; } 116 117 protected: 118 void redo() override; 119 120 private: 121 const RangeList m_ranges; 122 }; 123 } 124 125 #endif 126