| kwave
    18.07.70
    | 
#include <SignalView.h>


| Classes | |
| class | PositionWidget | 
| Public Types | |
| enum | Location { UpperDockTop, UpperDockBottom, Top, AboveTrackTop, AboveTrackBottom, BelowTrackTop, BelowTrackBottom, Bottom, LowerDockTop, LowerDockBottom } | 
| Public Slots | |
| virtual void | setTrack (int track) | 
| virtual void | setZoomAndOffset (double zoom, sample_index_t offset) | 
| virtual void | setVerticalZoom (double zoom) | 
| virtual void | showCursor (sample_index_t pos=SAMPLE_INDEX_MAX) | 
| Signals | |
| void | contentSizeChanged () | 
| void | sigCursorChanged (sample_index_t pos) | 
| void | sigNeedRepaint (Kwave::SignalView *view) | 
| void | sigCommand (const QString &command) | 
| Public Member Functions | |
| SignalView (QWidget *parent, QWidget *controls, Kwave::SignalManager *signal_manager, Location preferred_location, int track=-1) | |
| virtual | ~SignalView () Q_DECL_OVERRIDE | 
| virtual void | refresh () | 
| Location | preferredLocation () const | 
| Kwave::SignalManager * | signalManager () const | 
| int | track () const | 
| sample_index_t | offset () const | 
| double | zoom () const | 
| double | verticalZoom () const | 
| sample_index_t | firstVisible () const | 
| sample_index_t | lastVisible () const | 
| int | samples2pixels (sample_index_t samples) const | 
| sample_index_t | pixels2samples (int pixels) const | 
| double | samples2ms (sample_index_t samples) | 
| virtual bool | canHandleSelection () const | 
| virtual QSharedPointer< Kwave::ViewItem > | findItem (const QPoint &pos) | 
| virtual void | mouseMoveEvent (QMouseEvent *e) Q_DECL_OVERRIDE | 
| virtual void | mousePressEvent (QMouseEvent *e) Q_DECL_OVERRIDE | 
| virtual void | mouseReleaseEvent (QMouseEvent *e) Q_DECL_OVERRIDE | 
| virtual void | leaveEvent (QEvent *e) Q_DECL_OVERRIDE | 
| virtual void | keyPressEvent (QKeyEvent *e) Q_DECL_OVERRIDE | 
| virtual int | selectionTolerance () const | 
| virtual void | handleContextMenu (const QPoint &pos, QMenu *menu) | 
| virtual void | addSibling (QWidget *widget) | 
| Protected Types | |
| enum | SelectionPosEnum { None = 0x0000, LeftBorder = 0x0001, RightBorder = 0x0002, Selection = 0x8000 } | 
| Protected Slots | |
| virtual void | showPosition (const QString &text, sample_index_t pos, const QPoint &mouse) | 
| virtual void | hidePosition () | 
| Protected Member Functions | |
| virtual void | dragEnterEvent (QDragEnterEvent *event) Q_DECL_OVERRIDE | 
| virtual void | dragLeaveEvent (QDragLeaveEvent *event) Q_DECL_OVERRIDE | 
| virtual void | dropEvent (QDropEvent *event) Q_DECL_OVERRIDE | 
| virtual void | dragMoveEvent (QDragMoveEvent *event) Q_DECL_OVERRIDE | 
| SelectionPos | selectionPosition (int x) | 
| bool | isInSelection (int x) | 
| void | findNewItem (const QPoint &mouse_pos, bool active) | 
| Protected Attributes | |
| QWidget * | m_controls | 
| Kwave::SignalManager * | m_signal_manager | 
| Location | m_preferred_location | 
| int | m_track_index | 
| sample_index_t | m_offset | 
| double | m_zoom | 
| Private Types | |
| enum | { MouseNormal = 0, MouseMoveItem, MouseDragItem } | 
| Private Attributes | |
| double | m_vertical_zoom | 
| enum Kwave::SignalView:: { ... } | m_mouse_mode | 
| Kwave::MouseMark | m_mouse_selection | 
| int | m_mouse_down_x | 
| PositionWidget | m_position_widget | 
| QTimer | m_position_widget_timer | 
| QList< QPointer< QWidget > > | m_siblings | 
| QSharedPointer< Kwave::ViewItem > | m_selected_item | 
Definition at line 50 of file SignalView.h.
| 
 | private | 
mode of the mouse cursor
| Enumerator | |
|---|---|
| MouseNormal | over the signal [default] | 
| MouseMoveItem | while moving an item | 
| MouseDragItem | while dragging an item | 
Definition at line 413 of file SignalView.h.
preferred location of the SignalView
Definition at line 56 of file SignalView.h.
| 
 | protected | 
Relationship between a screen position and the current selection.
| Enumerator | |
|---|---|
| None | not near a border | 
| LeftBorder | close to start of selection | 
| RightBorder | close to end of selection | 
| Selection | within the selection | 
Definition at line 295 of file SignalView.h.
| Kwave::SignalView::SignalView | ( | QWidget * | parent, | 
| QWidget * | controls, | ||
| Kwave::SignalManager * | signal_manager, | ||
| Location | preferred_location, | ||
| int | track = -1 | ||
| ) | 
Constructor
| parent | pointer to the parent widget | 
| controls | container widget for associated controls | 
| signal_manager | the signal manager | 
| preferred_location | the location where to insert the view | 
| track | (optional) index of the associated track or -1 if not related to a specific track (default) | 
Definition at line 52 of file SignalView.cpp.
References Kwave::connect(), m_position_widget, and m_position_widget_timer.

| 
 | virtual | 
Destructor
Definition at line 82 of file SignalView.cpp.
References hidePosition(), m_mouse_mode, m_selected_item, m_siblings, and MouseNormal.

| 
 | virtual | 
Adds a widget to the list of associated widgets
| widget | a QWidget that is associated to this view | 
Definition at line 107 of file SignalView.cpp.
References m_siblings.
Referenced by Kwave::SignalWidget::insertRow().

| 
 | inlinevirtual | 
Should be overwritten by subclasses that can display the currently selected range and allow the user to change the selection by mouse.
Reimplemented in Kwave::TrackView.
Definition at line 164 of file SignalView.h.
References SAMPLE_INDEX_MAX.
Referenced by mousePressEvent(), mouseReleaseEvent(), and selectionPosition().

| 
 | signal | 
emitted whenever the size of the content has changed
Referenced by Kwave::TrackView::setVerticalZoom().

| 
 | protectedvirtual | 
Definition at line 555 of file SignalView.cpp.
References Kwave::FileDrag::canDecode(), SAMPLE_INDEX_MAX, and sigCursorChanged().

| 
 | protectedvirtual | 
Definition at line 568 of file SignalView.cpp.
References m_mouse_mode, MouseNormal, SAMPLE_INDEX_MAX, and sigCursorChanged().
| 
 | protectedvirtual | 
Definition at line 634 of file SignalView.cpp.
References Kwave::FileDrag::canDecode(), Kwave::Drag::canDecode(), Kwave::Selection::first(), isInSelection(), Kwave::Selection::last(), m_offset, m_signal_manager, pixels2samples(), rect(), SAMPLE_INDEX_MAX, samples2pixels(), Kwave::SignalManager::selection(), and sigCursorChanged().

| 
 | protectedvirtual | 
Definition at line 577 of file SignalView.cpp.
References _, Kwave::Drag::canDecode(), Kwave::CodecManager::canDecode(), DBG, Kwave::Drag::decode(), Kwave::Parser::escape(), m_mouse_mode, m_offset, m_signal_manager, Kwave::CodecManager::mimeTypeOf(), MouseNormal, pixels2samples(), SAMPLE_INDEX_MAX, Kwave::SignalManager::selectRange(), sigCommand(), and sigCursorChanged().

| 
 | virtual | 
Tries to find the nearest item that is visible in this view at a given position
| pos | position to look at, relative to view [pixels] | 
Reimplemented in Kwave::TrackView.
Definition at line 215 of file SignalView.cpp.
Referenced by findNewItem().

| 
 | protected | 
Tries to find the nearest item that is visible in this view at a given position and show or hide the corresponding tool tip.
| mouse_pos | position to look at, relative to view [pixels] | 
| active | if true an operation (move or drag&drop) is active, otherwise it is only a hover over an item | 
Definition at line 287 of file SignalView.cpp.
References Kwave::ViewItem::CanDragAndDrop, Kwave::ViewItem::CanGrabAndMove, findItem(), hidePosition(), m_mouse_mode, m_offset, m_selected_item, MouseMoveItem, MouseNormal, pixels2samples(), and showPosition().
Referenced by mouseMoveEvent(), mousePressEvent(), and mouseReleaseEvent().


| 
 | inline | 
| 
 | virtual | 
Called when the context menu has been activated over this view
| pos | a position in pixel within this widget | 
| menu | pointer to the context menu | 
Reimplemented in Kwave::TrackView.
Definition at line 548 of file SignalView.cpp.
| 
 | inlineprotectedvirtualslot | 
Hide the current position marker
Definition at line 272 of file SignalView.h.
Referenced by findNewItem(), keyPressEvent(), leaveEvent(), mouseMoveEvent(), setZoomAndOffset(), and ~SignalView().

| 
 | protected | 
Checks if a pixel position is within the left and right border of a selection. The tolerance is 2% of the currently visible area.
| x | pixel position to be tested | 
Definition at line 209 of file SignalView.cpp.
References selectionPosition().
Referenced by dragMoveEvent().


| 
 | virtual | 
handles key press events (e.g. the Escape key)
Definition at line 527 of file SignalView.cpp.
References hidePosition(), m_mouse_mode, m_selected_item, and MouseNormal.

| 
 | inline | 
returns the index of the last visible sample
Definition at line 130 of file SignalView.h.
Referenced by Kwave::TrackView::paintEvent().

| 
 | virtual | 
slot when the mouse leaves the widget
Definition at line 518 of file SignalView.cpp.
References hidePosition(), m_mouse_mode, and MouseNormal.

| 
 | virtual | 
slot for mouse moves, used for selection and drag&drop
Definition at line 318 of file SignalView.cpp.
References Kwave::ViewItem::CanDragAndDrop, Kwave::ViewItem::CanGrabAndMove, findNewItem(), hidePosition(), Kwave::SignalManager::length(), m_mouse_down_x, m_mouse_mode, m_offset, m_selected_item, m_signal_manager, MouseDragItem, MouseMoveItem, MouseNormal, pixels2samples(), and showPosition().

| 
 | virtual | 
slot for mouse press, used for selection and drag&drop
Definition at line 391 of file SignalView.cpp.
References Kwave::ViewItem::CanDragAndDrop, canHandleSelection(), findNewItem(), Kwave::Selection::first(), Kwave::MouseMark::grep(), Kwave::Selection::last(), Kwave::MouseMark::left(), Kwave::MouseMark::length(), Kwave::SignalManager::length(), m_mouse_down_x, m_mouse_mode, m_mouse_selection, m_offset, m_selected_item, m_signal_manager, MouseMoveItem, pixels2samples(), Kwave::SignalManager::playbackController(), Kwave::PlaybackController::running(), Kwave::SignalManager::selection(), Kwave::SignalManager::selectRange(), and Kwave::MouseMark::set().

| 
 | virtual | 
slot for mouse release, used for selection and drag&drop
Definition at line 465 of file SignalView.cpp.
References Kwave::ViewItem::CanGrabAndMove, canHandleSelection(), findNewItem(), Kwave::SignalManager::length(), m_mouse_mode, m_mouse_selection, m_offset, m_selected_item, m_signal_manager, MouseDragItem, MouseMoveItem, pixels2samples(), Kwave::SignalManager::playbackController(), Kwave::PlaybackController::running(), Kwave::SignalManager::selectRange(), and Kwave::MouseMark::set().

| 
 | inline | 
returns the current start position
Definition at line 110 of file SignalView.h.
Referenced by Kwave::TrackView::findItem(), Kwave::SelectionBorderItem::moveTo(), Kwave::LabelItem::moveTo(), and setZoomAndOffset().

| sample_index_t Kwave::SignalView::pixels2samples | ( | int | pixels | ) | const | 
Converts a number of pixels into a number of samples, based on the current zoom factor
| pixels | number of pixels (should be positive) | 
Definition at line 155 of file SignalView.cpp.
References m_zoom.
Referenced by dragMoveEvent(), dropEvent(), Kwave::TrackView::findItem(), findNewItem(), Kwave::TrackView::handleContextMenu(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), Kwave::SelectionBorderItem::moveTo(), Kwave::LabelItem::moveTo(), and Kwave::TrackView::paintEvent().

| 
 | inline | 
returns the preferred location
Definition at line 95 of file SignalView.h.
Referenced by Kwave::SignalWidget::insertView().

| 
 | virtual | 
refresh the content of the view. The default implementation calls repaint(). Can be overwritten to trigger more complex refresh scenarios.
Reimplemented in Kwave::TrackView.
Definition at line 101 of file SignalView.cpp.
Referenced by Kwave::SignalWidget::repaintTimerElapsed().

| double Kwave::SignalView::samples2ms | ( | sample_index_t | samples | ) | 
Converts a number of samples to a time in milliseconds, based on the current signal rate.
| samples | number of samples | 
Definition at line 162 of file SignalView.cpp.
References m_signal_manager, and Kwave::SignalManager::rate().
Referenced by Kwave::SelectionBorderItem::toolTip(), and Kwave::LabelItem::toolTip().


| int Kwave::SignalView::samples2pixels | ( | sample_index_t | samples | ) | const | 
converts a number of samples into a number of pixels, based on the current zoom factor
| samples | a small number of samples (must be positive) | 
Definition at line 149 of file SignalView.cpp.
References m_zoom, and Kwave::toInt().
Referenced by dragMoveEvent(), Kwave::TrackView::paintEvent(), and showPosition().


| 
 | protected | 
Determines the relationship between a screen position and the current selection.
| x | screen position | 
Definition at line 173 of file SignalView.cpp.
References canHandleSelection(), Kwave::Selection::first(), Kwave::Selection::last(), LeftBorder, m_offset, m_signal_manager, m_zoom, None, RightBorder, Kwave::SignalManager::selection(), Selection, and selectionTolerance().
Referenced by isInSelection(), and showPosition().


| 
 | virtual | 
tolerance in pixel for snapping to a label or selection border
Definition at line 542 of file SignalView.cpp.
Referenced by Kwave::TrackView::findItem(), and selectionPosition().

| 
 | virtualslot | 
changes the association to a track
| track | the new track index, or -1 if not associated | 
Definition at line 113 of file SignalView.cpp.
References m_track_index.
Referenced by Kwave::SignalWidget::slotTrackDeleted(), and Kwave::SignalWidget::slotTrackInserted().

| 
 | virtualslot | 
sets new vertical zoom factor
| zoom | vertical zoom factor | 
Reimplemented in Kwave::TrackView.
Definition at line 137 of file SignalView.cpp.
References m_vertical_zoom, and zoom().
Referenced by Kwave::SignalWidget::insertView(), and Kwave::TrackView::setVerticalZoom().


| 
 | virtualslot | 
sets new zoom factor and offset
| zoom | the new zoom factor in pixels/sample | 
| offset | the index of the first visible sample | 
Reimplemented in Kwave::TrackView.
Definition at line 119 of file SignalView.cpp.
References hidePosition(), m_offset, m_zoom, offset(), and zoom().
Referenced by Kwave::SignalWidget::insertView(), and Kwave::TrackView::setZoomAndOffset().


| 
 | virtualslot | 
shows the cursor at a given position
| pos | current position of the cursor | 
Definition at line 143 of file SignalView.cpp.
| 
 | protectedvirtualslot | 
Shows the current cursor position as a tooltip
| text | description of the position | 
| pos | marker position [samples] | 
| mouse | the coordinates of the mouse cursor, relative to this widget [pixel] | 
Definition at line 222 of file SignalView.cpp.
References LeftBorder, m_offset, m_position_widget, m_position_widget_timer, POSITION_WIDGET_TIME, RightBorder, samples2pixels(), selectionPosition(), and Kwave::SignalView::PositionWidget::setText().
Referenced by findNewItem(), and mouseMoveEvent().


| 
 | signal | 
forward a sigCommand to the next layer
Referenced by Kwave::TrackView::contextMenuLabelNew(), and dropEvent().

| 
 | signal | 
emitted to request update of the cursor
Referenced by dragEnterEvent(), dragLeaveEvent(), dragMoveEvent(), and dropEvent().

| 
 | inline | 
returns the associated signal manager
Definition at line 100 of file SignalView.h.
Referenced by Kwave::SelectionItem::startDragging().

| 
 | signal | 
Can be emitted to signal that this view needs to be repainted, probably after synchronizing with other views and additionally throttled to reduce GUI load
| view | pointer to the view that needs to be repainted | 
Referenced by Kwave::TrackView::refreshAllLayers(), Kwave::TrackView::refreshMarkersLayer(), Kwave::TrackView::refreshSelectionLayer(), Kwave::TrackView::refreshSignalLayer(), and Kwave::TrackView::showCursor().

| 
 | inline | 
returns the index of the associated track (or -1)
Definition at line 105 of file SignalView.h.
Referenced by Kwave::SignalWidget::insertView(), and Kwave::SignalWidget::slotTrackDeleted().

| 
 | inline | 
returns the current vertical zoom factor
Definition at line 120 of file SignalView.h.
Referenced by Kwave::TrackView::setVerticalZoom().

| 
 | inline | 
returns the current zoom [pixels/sample]
Definition at line 115 of file SignalView.h.
Referenced by setVerticalZoom(), and setZoomAndOffset().

| 
 | protected | 
widget for displaying associated controls
Definition at line 333 of file SignalView.h.
| 
 | private | 
x position where the user clicked the last time, needed for finding out where to start a drag&drop operation [pixel]
Definition at line 426 of file SignalView.h.
Referenced by mouseMoveEvent(), and mousePressEvent().
| enum { ... } Kwave::SignalView::m_mouse_mode | 
mode of the mouse cursor
Referenced by dragLeaveEvent(), dropEvent(), findNewItem(), keyPressEvent(), leaveEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), and ~SignalView().
| 
 | private | 
selection handler
Definition at line 420 of file SignalView.h.
Referenced by mousePressEvent(), and mouseReleaseEvent().
| 
 | protected | 
Offset from which signal is being displayed. This is equal to the index of the first visible sample.
Definition at line 348 of file SignalView.h.
Referenced by dragMoveEvent(), dropEvent(), Kwave::TrackView::findItem(), findNewItem(), Kwave::TrackView::handleContextMenu(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), Kwave::TrackView::paintEvent(), selectionPosition(), setZoomAndOffset(), and showPosition().
| 
 | private | 
small widget for showing the mouse cursor position
Definition at line 429 of file SignalView.h.
Referenced by showPosition(), and SignalView().
| 
 | private | 
timer for automatic hiding
Definition at line 432 of file SignalView.h.
Referenced by showPosition(), and SignalView().
| 
 | protected | 
the preferred location, as per construction
Definition at line 339 of file SignalView.h.
| 
 | private | 
currently selected view item or null
Definition at line 438 of file SignalView.h.
Referenced by findNewItem(), keyPressEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), and ~SignalView().
| 
 | private | 
list of associated widgets, e.g. controls etc
Definition at line 435 of file SignalView.h.
Referenced by addSibling(), and ~SignalView().
| 
 | protected | 
the signal manager
Definition at line 336 of file SignalView.h.
Referenced by dragMoveEvent(), dropEvent(), Kwave::TrackView::findItem(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), Kwave::TrackView::paintEvent(), samples2ms(), and selectionPosition().
| 
 | protected | 
index of the associated track or -1 if no relation to a track
Definition at line 342 of file SignalView.h.
Referenced by setTrack().
| 
 | private | 
zoom factor for vertical size
Definition at line 410 of file SignalView.h.
Referenced by setVerticalZoom().
| 
 | protected | 
number of samples per pixel
Definition at line 351 of file SignalView.h.
Referenced by Kwave::TrackView::findItem(), pixels2samples(), samples2pixels(), selectionPosition(), and setZoomAndOffset().