kwave  18.07.70
Kwave::SelectionItem Class Reference

#include <SelectionItem.h>

Inheritance diagram for Kwave::SelectionItem:
Inheritance graph
Collaboration diagram for Kwave::SelectionItem:
Collaboration graph

Public Member Functions

 SelectionItem (SignalView &view, Kwave::SignalManager &signal_manager)
 
virtual ~SelectionItem () Q_DECL_OVERRIDE
 
virtual Kwave::ViewItem::Flags flags () const Q_DECL_OVERRIDE
 
virtual void startDragging () Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::ViewItem
 ViewItem (Kwave::SignalView &view, Kwave::SignalManager &signal_manager)
 
virtual ~ViewItem ()
 
virtual QString toolTip (sample_index_t &ofs)
 
virtual void appendContextMenu (QMenu *parent)
 
virtual QCursor mouseCursor () const
 
virtual void moveTo (const QPoint &mouse_pos)
 
virtual void done ()
 

Private Attributes

sample_index_t m_first
 
sample_index_t m_last
 

Additional Inherited Members

- Public Types inherited from Kwave::ViewItem
enum  Flag { None = 0, CanGrabAndMove = 1, CanDragAndDrop = 2 }
 
- Signals inherited from Kwave::ViewItem
void sigCommand (const QString &command)
 
- Protected Attributes inherited from Kwave::ViewItem
Kwave::SignalViewm_view
 
Kwave::SignalManagerm_signal_manager
 

Detailed Description

Definition at line 36 of file SelectionItem.h.

Constructor & Destructor Documentation

◆ SelectionItem()

Kwave::SelectionItem::SelectionItem ( Kwave::SignalView view,
Kwave::SignalManager signal_manager 
)

Constructor

Parameters
viewthe parent signal view
signal_managerthe signal manager

Definition at line 34 of file SelectionItem.cpp.

38  :Kwave::ViewItem(view, signal_manager),
39  m_first(signal_manager.selection().first()),
40  m_last(signal_manager.selection().last())
41 {
42 }
sample_index_t first() const
Definition: Selection.h:71
sample_index_t last() const
Definition: Selection.h:76
Kwave::Selection & selection()
sample_index_t m_first
Definition: SelectionItem.h:62
sample_index_t m_last
Definition: SelectionItem.h:65

◆ ~SelectionItem()

Kwave::SelectionItem::~SelectionItem ( )
virtual

Destructor

Definition at line 45 of file SelectionItem.cpp.

46 {
47 }

Member Function Documentation

◆ flags()

Kwave::ViewItem::Flags Kwave::SelectionItem::flags ( ) const
virtual

Returns flags describing the possible interactions with this object

See also
Kwave::ViewItem::Flags

Reimplemented from Kwave::ViewItem.

Definition at line 50 of file SelectionItem.cpp.

References Kwave::ViewItem::CanDragAndDrop.

◆ startDragging()

void Kwave::SelectionItem::startDragging ( )
virtual

Starts a drag & drop operation.

Reimplemented from Kwave::ViewItem.

Definition at line 56 of file SelectionItem.cpp.

References Kwave::SignalManager::bits(), Kwave::SignalManager::deleteRange(), Kwave::Drag::encode(), Kwave::Selection::first(), Kwave::Selection::last(), Kwave::Selection::length(), Kwave::ViewItem::m_signal_manager, Kwave::ViewItem::m_view, Kwave::SignalManager::metaData(), Kwave::SignalManager::rate(), Kwave::MetaDataList::selectByTracks(), Kwave::SignalManager::selectedTracks(), Kwave::SignalManager::selection(), Kwave::SignalManager::selectRange(), Kwave::FileInfo::setBits(), Kwave::FileInfo::setLength(), Kwave::FileInfo::setRate(), Kwave::FileInfo::setTracks(), Kwave::SignalView::signalManager(), and Kwave::SinglePassForward.

57 {
59  if (!length) return;
60 
61  Kwave::Drag *d = new(std::nothrow) Kwave::Drag(&m_view);
62  Q_ASSERT(d);
63  if (!d) return;
64 
67  const double rate = m_signal_manager.rate();
68  const unsigned int bits = m_signal_manager.bits();
69 
71  m_signal_manager.selectedTracks(), first, last);
72 
73  // create the file info
76  Kwave::FileInfo info(meta);
77  info.setLength(last - first + 1);
78  info.setRate(rate);
79  info.setBits(bits);
80  info.setTracks(src.tracks());
81  meta.replace(Kwave::MetaDataList(info));
82 
83  if (!d->encode(&m_view, src, meta)) {
84  delete d;
85  return;
86  }
87 
88  // start drag&drop, mode is determined automatically
89  Kwave::UndoTransactionGuard undo(m_signal_manager, i18n("Drag and Drop"));
90  Qt::DropAction drop = d->exec(Qt::CopyAction | Qt::MoveAction);
91 
92  if (drop == Qt::MoveAction) {
93  // deleting also affects the selection !
96  const sample_index_t len = l - f + 1;
97 
98  // special case: when dropping into the same widget, before
99  // the previous selection, the previous range has already
100  // been moved to the right !
101  sample_index_t src_pos = first;
102 
103  SignalView *target = qobject_cast<Kwave::SignalView *>(d->target());
104  if ( (f < src_pos) && target &&
105  (target->signalManager() == m_view.signalManager()) ) {
106  src_pos += len;
107  }
108 
109  m_signal_manager.deleteRange(src_pos, len,
111 
112  // restore the new selection
113  m_signal_manager.selectRange((first < f) ? (f - len) : f, len);
114  }
115 }
void selectRange(sample_index_t offset, sample_index_t length)
sample_index_t first() const
Definition: Selection.h:71
virtual MetaDataList selectByTracks(const QList< unsigned int > &tracks) const
sample_index_t last() const
Definition: Selection.h:76
Kwave::MetaDataList & metaData()
Kwave::Selection & selection()
quint64 sample_index_t
Definition: Sample.h:28
bool deleteRange(sample_index_t offset, sample_index_t length, const QList< unsigned int > &track_list)
Kwave::SignalManager & m_signal_manager
Definition: ViewItem.h:119
Kwave::SignalView & m_view
Definition: ViewItem.h:116
sample_index_t length() const
Definition: Selection.h:66
double rate() const
bool encode(QWidget *widget, Kwave::MultiTrackReader &src, const Kwave::MetaDataList &meta_data)
Definition: Drag.cpp:51
unsigned int bits() const
Kwave::SignalManager * signalManager() const
Definition: SignalView.h:100
const QList< unsigned int > selectedTracks()
Here is the call graph for this function:

Member Data Documentation

◆ m_first

sample_index_t Kwave::SelectionItem::m_first
private

start of the selection

Definition at line 62 of file SelectionItem.h.

◆ m_last

sample_index_t Kwave::SelectionItem::m_last
private

end of the selection

Definition at line 65 of file SelectionItem.h.


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