LMMS
Loading...
Searching...
No Matches
lmms::gui::TrackView Class Reference

#include <TrackView.h>

Inheritance diagram for lmms::gui::TrackView:
lmms::gui::ModelView lmms::JournallingObject lmms::SerializingObject lmms::gui::AutomationTrackView lmms::gui::InstrumentTrackView lmms::gui::PatternTrackView lmms::gui::SampleTrackView

Public Slots

virtual bool close ()
 Close this track View.

Public Member Functions

 TrackView (Track *_track, TrackContainerView *tcv)
 Create a new track View.
 ~TrackView () override=default
const TrackgetTrack () const
TrackgetTrack ()
TrackContainerViewtrackContainerView ()
TrackOperationsWidgetgetTrackOperationsWidget ()
QWidget * getTrackSettingsWidget ()
TrackContentWidgetgetTrackContentWidget ()
bool isMovingTrack () const
virtual void update ()
 Update this track View and all its content objects.
virtual QMenu * createMixerMenu (QString title, QString newMixerLabel)
 Create a menu for assigning/creating channels for this track.
Public Member Functions inherited from lmms::gui::ModelView
 ModelView (Model *model, QWidget *widget)
virtual ~ModelView ()
virtual void setModel (Model *model, bool isOldModelValid=true)
virtual void unsetModel ()
Modelmodel ()
const Modelmodel () const
template<class T>
T * castModel ()
template<class T>
const T * castModel () const
Public Member Functions inherited from lmms::JournallingObject
 JournallingObject ()
 ~JournallingObject () override
jo_id_t id () const
void saveJournallingState (const bool newState)
void restoreJournallingState ()
void addJournalCheckPoint ()
QDomElement saveState (QDomDocument &_doc, QDomElement &_parent) override
void restoreState (const QDomElement &_this) override
bool isJournalling () const
void setJournalling (const bool _sr)
bool testAndSetJournalling (const bool newState)
bool isJournallingStateStackEmpty () const
Public Member Functions inherited from lmms::SerializingObject
 SerializingObject ()
virtual ~SerializingObject ()
void setHook (SerializingObjectHook *_hook)
SerializingObjectHookhook ()

Protected Member Functions

void modelChanged () override
 Register that the model of this track View has changed.
void saveSettings (QDomDocument &doc, QDomElement &element) override
void loadSettings (const QDomElement &element) override
QString nodeName () const override
void dragEnterEvent (QDragEnterEvent *dee) override
 Start a drag event on this track View.
void dropEvent (QDropEvent *de) override
 Accept a drop event on this track View.
void mousePressEvent (QMouseEvent *me) override
 Handle a mouse press event on this track View.
void mouseMoveEvent (QMouseEvent *me) override
 Handle a mouse move event on this track View.
void mouseReleaseEvent (QMouseEvent *me) override
 Handle a mouse release event on this track View.
void wheelEvent (QWheelEvent *we) override
void paintEvent (QPaintEvent *pe) override
 Repaint this track View.
void resizeEvent (QResizeEvent *re) override
 Resize this track View.
Protected Member Functions inherited from lmms::gui::ModelView
QWidget * widget ()
virtual void doConnections ()
Protected Member Functions inherited from lmms::JournallingObject
void changeID (jo_id_t _id)

Private Types

enum class  Action { None , Move , Resize }

Private Slots

void createClipView (lmms::Clip *clip)
 Create a Clip View in this track View.
void muteChanged ()
void onTrackGripGrabbed ()
void onTrackGripReleased ()

Private Member Functions

void resizeToHeight (int height)
virtual FadeButtongetActivityIndicator ()
void setIndicatorMute (FadeButton *indicator, bool muted)

Private Attributes

Trackm_track
TrackContainerViewm_trackContainerView
TrackOperationsWidget m_trackOperationsWidget
QWidget m_trackSettingsWidget
TrackContentWidget m_trackContentWidget
Action m_action

Friends

class TrackLabelButton

Member Enumeration Documentation

◆ Action

enum class lmms::gui::TrackView::Action
strongprivate
Enumerator
None 
Move 
Resize 

Constructor & Destructor Documentation

◆ TrackView()

lmms::gui::TrackView::TrackView ( Track * track,
TrackContainerView * tcv )

Create a new track View.

The track View is handles the actual display of the track, including displaying its various widgets and the track segments.

Parameters
trackThe track to display.
tcvThe track Container View for us to be displayed in.
Todo
Is my description of these properties correct?

< The Track Container View's content widget.

< The model view of this track

< The track we're displaying

< The track Container View we're displayed in

< Our trackOperationsWidget

< Our trackSettingsWidget

< Our trackContentWidget

< The action we're currently performing

◆ ~TrackView()

lmms::gui::TrackView::~TrackView ( )
overridedefault

Member Function Documentation

◆ close

bool lmms::gui::TrackView::close ( )
virtualslot

Close this track View.

Reimplemented in lmms::gui::PatternTrackView.

◆ createClipView

void lmms::gui::TrackView::createClipView ( lmms::Clip * clip)
privateslot

Create a Clip View in this track View.

Parameters
clipthe Clip to create the view for.
Todo
is this a good description for what this method does?

◆ createMixerMenu()

QMenu * lmms::gui::TrackView::createMixerMenu ( QString title,
QString newMixerLabel )
virtual

Create a menu for assigning/creating channels for this track.

Reimplemented in lmms::gui::InstrumentTrackView, and lmms::gui::SampleTrackView.

◆ dragEnterEvent()

void lmms::gui::TrackView::dragEnterEvent ( QDragEnterEvent * dee)
overrideprotected

Start a drag event on this track View.

Parameters
deethe DragEnterEvent to start.

◆ dropEvent()

void lmms::gui::TrackView::dropEvent ( QDropEvent * de)
overrideprotected

Accept a drop event on this track View.

We only accept drop events that are of the same type as this track. If so, we decode the data from the drop event by just feeding it back into the engine as a state.

Parameters
dethe DropEvent to handle.

◆ getActivityIndicator()

virtual FadeButton * lmms::gui::TrackView::getActivityIndicator ( )
inlineprivatevirtual

◆ getTrack() [1/2]

Track * lmms::gui::TrackView::getTrack ( )
inline

◆ getTrack() [2/2]

const Track * lmms::gui::TrackView::getTrack ( ) const
inline

◆ getTrackContentWidget()

TrackContentWidget * lmms::gui::TrackView::getTrackContentWidget ( )
inline

◆ getTrackOperationsWidget()

TrackOperationsWidget * lmms::gui::TrackView::getTrackOperationsWidget ( )
inline

◆ getTrackSettingsWidget()

QWidget * lmms::gui::TrackView::getTrackSettingsWidget ( )
inline

◆ isMovingTrack()

bool lmms::gui::TrackView::isMovingTrack ( ) const
inline

◆ loadSettings()

void lmms::gui::TrackView::loadSettings ( const QDomElement & element)
inlineoverrideprotectedvirtual

◆ modelChanged()

void lmms::gui::TrackView::modelChanged ( )
overrideprotectedvirtual

Register that the model of this track View has changed.

Reimplemented from lmms::gui::ModelView.

◆ mouseMoveEvent()

void lmms::gui::TrackView::mouseMoveEvent ( QMouseEvent * me)
overrideprotected

Handle a mouse move event on this track View.

If this track container supports rubber band selection, let the widget handle that and don't bother with any other handling.

Otherwise if we've started the move process (from mousePressEvent()) then move ourselves into that position, reordering the track list with moveTrackViewUp() and moveTrackViewDown() to suit. We make a note of this in the undo journal in case the user wants to undo this move.

Likewise if we've started a resize process, handle this too, making sure that we never go below the minimum track height.

Parameters
methe MouseEvent to handle.

◆ mousePressEvent()

void lmms::gui::TrackView::mousePressEvent ( QMouseEvent * me)
overrideprotected

Handle a mouse press event on this track View.

If this track container supports rubber band selection, let the widget handle that and don't bother with any other handling.

If the left mouse button is pressed, we handle two things. If SHIFT is pressed, then we resize vertically. Otherwise we start the process of moving this track to a new position.

Otherwise we let the widget handle the mouse event as normal.

Parameters
methe MouseEvent to handle.

◆ mouseReleaseEvent()

void lmms::gui::TrackView::mouseReleaseEvent ( QMouseEvent * me)
overrideprotected

Handle a mouse release event on this track View.

Parameters
methe MouseEvent to handle.

◆ muteChanged

void lmms::gui::TrackView::muteChanged ( )
privateslot

◆ nodeName()

QString lmms::gui::TrackView::nodeName ( void ) const
inlineoverrideprotectedvirtual

◆ onTrackGripGrabbed

void lmms::gui::TrackView::onTrackGripGrabbed ( )
privateslot

◆ onTrackGripReleased

void lmms::gui::TrackView::onTrackGripReleased ( )
privateslot

◆ paintEvent()

void lmms::gui::TrackView::paintEvent ( QPaintEvent * pe)
overrideprotected

Repaint this track View.

Parameters
pethe PaintEvent to start.

◆ resizeEvent()

void lmms::gui::TrackView::resizeEvent ( QResizeEvent * re)
overrideprotected

Resize this track View.

Parameters
rethe Resize Event to handle.

◆ resizeToHeight()

void lmms::gui::TrackView::resizeToHeight ( int height)
private

◆ saveSettings()

void lmms::gui::TrackView::saveSettings ( QDomDocument & doc,
QDomElement & element )
inlineoverrideprotectedvirtual

◆ setIndicatorMute()

void lmms::gui::TrackView::setIndicatorMute ( FadeButton * indicator,
bool muted )
private

◆ trackContainerView()

TrackContainerView * lmms::gui::TrackView::trackContainerView ( )
inline

◆ update()

void lmms::gui::TrackView::update ( )
virtual

Update this track View and all its content objects.

◆ wheelEvent()

void lmms::gui::TrackView::wheelEvent ( QWheelEvent * we)
overrideprotected

◆ TrackLabelButton

friend class TrackLabelButton
friend

Member Data Documentation

◆ m_action

Action lmms::gui::TrackView::m_action
private

◆ m_track

Track* lmms::gui::TrackView::m_track
private

◆ m_trackContainerView

TrackContainerView* lmms::gui::TrackView::m_trackContainerView
private

◆ m_trackContentWidget

TrackContentWidget lmms::gui::TrackView::m_trackContentWidget
private

◆ m_trackOperationsWidget

TrackOperationsWidget lmms::gui::TrackView::m_trackOperationsWidget
private

◆ m_trackSettingsWidget

QWidget lmms::gui::TrackView::m_trackSettingsWidget
private

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