kwave  18.07.70
Kwave::UndoDeleteTrack Class Reference

#include <UndoDeleteTrack.h>

Inheritance diagram for Kwave::UndoDeleteTrack:
Inheritance graph
Collaboration diagram for Kwave::UndoDeleteTrack:
Collaboration graph

Public Member Functions

 UndoDeleteTrack (Kwave::Signal &signal, unsigned int track)
 
virtual ~UndoDeleteTrack () Q_DECL_OVERRIDE
 
virtual QString description () Q_DECL_OVERRIDE
 
virtual qint64 undoSize () Q_DECL_OVERRIDE
 
virtual qint64 redoSize () Q_DECL_OVERRIDE
 
virtual bool store (SignalManager &manager) Q_DECL_OVERRIDE
 
virtual Kwave::UndoActionundo (Kwave::SignalManager &manager, bool with_redo) Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::UndoAction
virtual ~UndoAction ()
 
virtual bool containsModification () const
 
virtual void dump (const QString &indent)
 

Protected Attributes

Kwave::Signalm_signal
 
unsigned int m_track
 
sample_index_t m_length
 
QList< Kwave::Stripe::Listm_stripes
 
QUuid m_uuid
 

Detailed Description

Undo action for deleting a track.

Definition at line 39 of file UndoDeleteTrack.h.

Constructor & Destructor Documentation

◆ UndoDeleteTrack()

Kwave::UndoDeleteTrack::UndoDeleteTrack ( Kwave::Signal signal,
unsigned int  track 
)

Constructor

Parameters
signalreference to the signal
trackindex of the deleted track.

Definition at line 30 of file UndoDeleteTrack.cpp.

32  :UndoAction(), m_signal(signal), m_track(track),
33  m_length(signal.length()), m_stripes(), m_uuid(signal.uuidOfTrack(track))
34 {
35 }
sample_index_t length()
Definition: Signal.cpp:258
QUuid uuidOfTrack(unsigned int track)
Definition: Signal.cpp:296
Kwave::Signal & m_signal
sample_index_t m_length
QList< Kwave::Stripe::List > m_stripes

◆ ~UndoDeleteTrack()

Kwave::UndoDeleteTrack::~UndoDeleteTrack ( )
virtual

Destructor

Definition at line 38 of file UndoDeleteTrack.cpp.

39 {
40 }

Member Function Documentation

◆ description()

QString Kwave::UndoDeleteTrack::description ( )
virtual

Returns a verbose short description of the action.

Implements Kwave::UndoAction.

Definition at line 43 of file UndoDeleteTrack.cpp.

44 {
45  return i18n("Delete Track");
46 }

◆ redoSize()

qint64 Kwave::UndoDeleteTrack::redoSize ( )
virtual
See also
UndoAction::redoSize()

Implements Kwave::UndoAction.

Definition at line 55 of file UndoDeleteTrack.cpp.

56 {
57  return sizeof(Kwave::UndoInsertTrack);
58 }

◆ store()

bool Kwave::UndoDeleteTrack::store ( Kwave::SignalManager manager)
virtual
See also
UndoAction::store()

Implements Kwave::UndoAction.

Definition at line 61 of file UndoDeleteTrack.cpp.

References m_length, m_stripes, m_track, and Kwave::SignalManager::stripes().

62 {
63  if (!m_length) return true; // shortcut: this is an empty action
64 
65  // fork off a multi track stripe list for the selected range
66  QList<unsigned int> track_list;
67  track_list.append(m_track);
68  m_stripes = manager.stripes(track_list, 0, m_length - 1);
69  if (m_stripes.isEmpty())
70  return false; // retrieving the stripes failed
71 
72  return true;
73 }
sample_index_t m_length
QList< Kwave::Stripe::List > m_stripes
QList< Kwave::Stripe::List > stripes(const QList< unsigned int > &track_list, sample_index_t left=0, sample_index_t right=SAMPLE_INDEX_MAX)
Here is the call graph for this function:

◆ undo()

Kwave::UndoAction * Kwave::UndoDeleteTrack::undo ( Kwave::SignalManager manager,
bool  with_redo 
)
virtual
See also
UndoAction::undo()

Implements Kwave::UndoAction.

Definition at line 76 of file UndoDeleteTrack.cpp.

References Kwave::Signal::insertTrack(), m_length, m_signal, m_stripes, m_track, m_uuid, Kwave::SignalManager::mergeStripes(), and Kwave::UndoAction::store().

78 {
79  Kwave::UndoAction *redo_action = Q_NULLPTR;
80 
81  // create a redo action
82  if (with_redo) {
83  redo_action =
84  new(std::nothrow) Kwave::UndoInsertTrack(m_signal, m_track);
85  Q_ASSERT(redo_action);
86  if (redo_action) redo_action->store(manager);
87  }
88 
89  // insert an empty track into the signal
91 
92  // merge the stripes back into the signal
93  QList<unsigned int> track_list;
94  track_list.append(m_track);
95  if (!manager.mergeStripes(m_stripes, track_list)) {
96  qWarning("UndoDeleteTrack::undo() FAILED [mergeStripes]");
97  delete redo_action;
98  return Q_NULLPTR;
99  }
100 
101  return redo_action;
102 }
Kwave::Signal & m_signal
sample_index_t m_length
QList< Kwave::Stripe::List > m_stripes
Kwave::Track * insertTrack(unsigned int index, sample_index_t length, QUuid *uuid)
Definition: Signal.cpp:69
virtual bool store(Kwave::SignalManager &manager)=0
bool mergeStripes(const QList< Kwave::Stripe::List > &stripes, const QList< unsigned int > &track_list)
Here is the call graph for this function:

◆ undoSize()

qint64 Kwave::UndoDeleteTrack::undoSize ( )
virtual
See also
UndoAction::undoSize()

Implements Kwave::UndoAction.

Definition at line 49 of file UndoDeleteTrack.cpp.

References m_length.

50 {
51  return sizeof(*this) + m_length * sizeof(sample_t);
52 }
sample_index_t m_length
qint32 sample_t
Definition: Sample.h:37

Member Data Documentation

◆ m_length

sample_index_t Kwave::UndoDeleteTrack::m_length
protected

Length of the track in samples

Definition at line 80 of file UndoDeleteTrack.h.

Referenced by store(), undo(), and undoSize().

◆ m_signal

Kwave::Signal& Kwave::UndoDeleteTrack::m_signal
protected

Reference to the signal

Definition at line 74 of file UndoDeleteTrack.h.

Referenced by undo().

◆ m_stripes

QList<Kwave::Stripe::List> Kwave::UndoDeleteTrack::m_stripes
protected

storage for all deleted stripes

Definition at line 83 of file UndoDeleteTrack.h.

Referenced by store(), and undo().

◆ m_track

unsigned int Kwave::UndoDeleteTrack::m_track
protected

Index of the deleted track

Definition at line 77 of file UndoDeleteTrack.h.

Referenced by store(), and undo().

◆ m_uuid

QUuid Kwave::UndoDeleteTrack::m_uuid
protected

unique ID of the deleted track

Definition at line 86 of file UndoDeleteTrack.h.

Referenced by undo().


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