LMMS
Loading...
Searching...
No Matches
TrackContainerView.h
Go to the documentation of this file.
1/*
2 * TrackContainerView.h - view-component for TrackContainer
3 *
4 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_GUI_TRACK_CONTAINER_VIEW_H
26#define LMMS_GUI_TRACK_CONTAINER_VIEW_H
27
28#include <QVector>
29#include <QScrollArea>
30#include <QWidget>
31#include <QThread>
32
33#include "JournallingObject.h"
34#include "ModelView.h"
35#include "Rubberband.h"
36#include "TimePos.h"
37
38
39class QVBoxLayout;
40
41namespace lmms
42{
43
44class InstrumentTrack;
45class Track;
46class TrackContainer;
47
48class InstrumentLoaderThread : public QThread
49{
50Q_OBJECT
51public:
52 InstrumentLoaderThread( QObject *parent = 0, InstrumentTrack *it = 0,
53 QString name = "" );
54
55 void run() override;
56
57private:
59 QString m_name;
61};
62
63namespace gui
64{
65
66class TrackView;
67
68class TrackContainerView : public QWidget, public ModelView,
69 public JournallingObject,
71{
72 Q_OBJECT
73public:
75 ~TrackContainerView() override;
76
77 void saveSettings( QDomDocument & _doc, QDomElement & _this ) override;
78 void loadSettings( const QDomElement & _this ) override;
79
80 QScrollArea * contentWidget()
81 {
82 return m_scrollArea;
83 }
84
85 inline const TimePos & currentPosition() const
86 {
87 return m_currentPosition;
88 }
89
90 virtual bool fixedClips() const
91 {
92 return false;
93 }
94
95 inline float pixelsPerBar() const
96 {
97 return m_ppb;
98 }
99
100 void setPixelsPerBar( int ppb );
101
102 const TrackView * trackViewAt( const int _y ) const;
103
104 virtual bool allowRubberband() const;
105 virtual bool knifeMode() const;
106
107 inline bool rubberBandActive() const
108 {
109 return m_rubberBand->isEnabled() && m_rubberBand->isVisible();
110 }
111
112 inline QVector<selectableObject *> selectedObjects()
113 {
114 return m_rubberBand->selectedObjects();
115 }
116
117
119 {
120 return m_tc;
121 }
122
123 const TrackContainer* model() const
124 {
125 return m_tc;
126 }
127
128 const QList<TrackView *> & trackViews() const
129 {
130 return( m_trackViews );
131 }
132
133 void moveTrackView( TrackView * trackView, int indexTo );
134 void moveTrackViewUp( TrackView * trackView );
135 void moveTrackViewDown( TrackView * trackView );
136 void scrollToTrackView( TrackView * _tv );
137
138 // -- for usage by trackView only ---------------
140 void removeTrackView( TrackView * _tv );
141 // -------------------------------------------------------
142
143 void clearAllTracks();
144
145 QString nodeName() const override
146 {
147 return "trackcontainerview";
148 }
149
150 unsigned int totalHeightOfTracks() const;
151
152 RubberBand *rubberBand() const;
153
154public slots:
155 void realignTracks();
158
159 void dropEvent( QDropEvent * _de ) override;
160 void dragEnterEvent( QDragEnterEvent * _dee ) override;
161
165 void stopRubberBand();
166
167
168protected:
169 static const int DEFAULT_PIXELS_PER_BAR = 128;
170
172
173
174private:
175 class scrollArea : public QScrollArea
176 {
177 public:
179 ~scrollArea() override = default;
180
181 protected:
182 void wheelEvent( QWheelEvent * _we ) override;
183
184 private:
186
187 } ;
189
191 using trackViewList = QList<TrackView*>;
193
195 QVBoxLayout * m_scrollLayout;
196
197 float m_ppb;
198
200
201signals:
202 void positionChanged( const lmms::TimePos & _pos );
204
205
206} ;
207
208
209} // namespace gui
210
211} // namespace lmms
212
213#endif // LMMS_GUI_TRACK_CONTAINER_VIEW_H
QString m_name
Definition TrackContainerView.h:59
InstrumentLoaderThread(QObject *parent=0, InstrumentTrack *it=0, QString name="")
Definition TrackContainerView.cpp:53
void run() override
Definition TrackContainerView.cpp:64
InstrumentTrack * m_it
Definition TrackContainerView.h:58
QThread * m_containerThread
Definition TrackContainerView.h:60
Definition InstrumentTrack.h:62
JournallingObject()
Definition JournallingObject.cpp:36
SerializingObjectHook()
Definition SerializingObject.h:79
Definition TimePos.h:68
Definition TrackContainer.h:49
Base-class for all tracks.
Definition Track.h:68
ModelView(Model *model, QWidget *widget)
Definition ModelView.cpp:33
Definition Rubberband.h:77
Definition TrackContainerView.h:176
void wheelEvent(QWheelEvent *_we) override
Definition TrackContainerView.cpp:468
scrollArea(TrackContainerView *parent)
Definition TrackContainerView.cpp:457
TrackContainerView * m_trackContainerView
Definition TrackContainerView.h:185
float pixelsPerBar() const
Definition TrackContainerView.h:95
void positionChanged(const lmms::TimePos &_pos)
static const int DEFAULT_PIXELS_PER_BAR
Definition TrackContainerView.h:169
TrackContainer * model()
Definition TrackContainerView.h:118
void dropEvent(QDropEvent *_de) override
Definition TrackContainerView.cpp:390
const TrackContainer * model() const
Definition TrackContainerView.h:123
QList< TrackView * > trackViewList
Definition TrackContainerView.h:191
lmms::gui::TrackView * createTrackView(lmms::Track *_t)
Definition TrackContainerView.cpp:272
void saveSettings(QDomDocument &_doc, QDomElement &_this) override
Definition TrackContainerView.cpp:138
QScrollArea * contentWidget()
Definition TrackContainerView.h:80
const QList< TrackView * > & trackViews() const
Definition TrackContainerView.h:128
TrackContainerView(TrackContainer *tc)
Definition TrackContainerView.cpp:77
scrollArea * m_scrollArea
Definition TrackContainerView.h:194
bool rubberBandActive() const
Definition TrackContainerView.h:107
unsigned int totalHeightOfTracks() const
Definition TrackContainerView.cpp:484
TrackView * addTrackView(TrackView *_tv)
Definition TrackContainerView.cpp:155
void moveTrackView(TrackView *trackView, int indexTo)
Definition TrackContainerView.cpp:190
virtual bool knifeMode() const
Definition TrackContainerView.cpp:332
void deleteTrackView(lmms::gui::TrackView *_tv)
Definition TrackContainerView.cpp:288
void setPixelsPerBar(int ppb)
Definition TrackContainerView.cpp:340
void moveTrackViewDown(TrackView *trackView)
Definition TrackContainerView.cpp:225
RubberBand * rubberBand() const
Definition TrackContainerView.cpp:449
const TimePos & currentPosition() const
Definition TrackContainerView.h:85
friend class TrackContainerView::scrollArea
Definition TrackContainerView.h:188
TrackContainer * m_tc
Definition TrackContainerView.h:190
trackViewList m_trackViews
Definition TrackContainerView.h:192
void moveTrackViewUp(TrackView *trackView)
Definition TrackContainerView.cpp:215
RubberBand * m_rubberBand
Definition TrackContainerView.h:199
QVBoxLayout * m_scrollLayout
Definition TrackContainerView.h:195
virtual bool allowRubberband() const
Definition TrackContainerView.cpp:324
void loadSettings(const QDomElement &_this) override
Definition TrackContainerView.cpp:147
void removeTrackView(TrackView *_tv)
Definition TrackContainerView.cpp:169
virtual bool fixedClips() const
Definition TrackContainerView.h:90
void dragEnterEvent(QDragEnterEvent *_dee) override
Definition TrackContainerView.cpp:368
void clearAllTracks()
Definition TrackContainerView.cpp:354
float m_ppb
Definition TrackContainerView.h:197
~TrackContainerView() override
Definition TrackContainerView.cpp:126
const TrackView * trackViewAt(const int _y) const
Definition TrackContainerView.cpp:304
void stopRubberBand()
stopRubberBand Removes the rubber band from display when finished with.
Definition TrackContainerView.cpp:381
TimePos m_currentPosition
Definition TrackContainerView.h:171
void scrollToTrackView(TrackView *_tv)
Definition TrackContainerView.cpp:232
QVector< selectableObject * > selectedObjects()
Definition TrackContainerView.h:112
void realignTracks()
Definition TrackContainerView.cpp:258
QString nodeName() const override
Definition TrackContainerView.h:145
Definition TrackView.h:60
static const char * name
Definition pugl.h:1582
static uintptr_t parent
Definition pugl.h:1644
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35