lmms
Cross-platform music production software
Loading...
Searching...
No Matches
TrackContentWidget.h
Go to the documentation of this file.
1/*
2 * TrackContentWidget.h - declaration of TrackContentWidget class
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_CONTENT_WIDGET_H
26#define LMMS_GUI_TRACK_CONTENT_WIDGET_H
27
28#include <QWidget>
29
30#include "JournallingObject.h"
31#include "TimePos.h"
32
33class QMimeData; // IWYU pragma: keep
34
35
36namespace lmms
37{
38
39class Track;
40
41namespace gui
42{
43
44class ClipView; // IWYU pragma: keep
45class TrackView;
46
47class TrackContentWidget : public QWidget, public JournallingObject
48{
49 Q_OBJECT
50
51 // qproperties for track background gradients
52 Q_PROPERTY(QBrush darkerColor READ darkerColor WRITE setDarkerColor)
53 Q_PROPERTY(QBrush lighterColor READ lighterColor WRITE setLighterColor)
55 Q_PROPERTY(QBrush fineGridColor READ fineGridColor WRITE setFineGridColor)
57 Q_PROPERTY(QBrush embossColor READ embossColor WRITE setEmbossColor)
58
60 Q_PROPERTY(int fineGridWidth READ fineGridWidth WRITE setFineGridWidth)
62 Q_PROPERTY(int embossWidth READ embossWidth WRITE setEmbossWidth)
63
64 Q_PROPERTY(int embossOffset READ embossOffset WRITE setEmbossOffset)
65
66public:
74
75 ~TrackContentWidget() override = default;
76
82 void addClipView(ClipView* clipv);
83
89 void removeClipView(ClipView* clipv);
90
91 void removeClipView( int clipNum )
92 {
93 if( clipNum >= 0 && clipNum < m_clipViews.size() )
94 {
95 removeClipView( m_clipViews[clipNum] );
96 }
97 }
98
102 bool canPasteSelection(TimePos clipPos, const QDropEvent* de);
103
106 bool canPasteSelection(TimePos clipPos, const QMimeData* md, bool allowSameBar = false);
107
111 bool pasteSelection(TimePos clipPos, QDropEvent* de);
112
115 bool pasteSelection(TimePos clipPos, const QMimeData* md, bool skipSafetyCheck = false);
116
119 TimePos endPosition(const TimePos& posStart);
120
121 QBrush darkerColor() const { return m_darkerColor; }
122 QBrush lighterColor() const { return m_lighterColor; }
123 QBrush coarseGridColor() const { return m_coarseGridColor; }
124 QBrush fineGridColor() const { return m_fineGridColor; }
125 QBrush horizontalColor() const { return m_horizontalColor; }
126 QBrush embossColor() const { return m_embossColor; }
127 int coarseGridWidth() const { return m_coarseGridWidth; }
128 int fineGridWidth() const { return m_fineGridWidth; }
129 int horizontalWidth() const { return m_horizontalWidth; }
130 int embossWidth() const { return m_embossWidth; }
131 int embossOffset() const { return m_embossOffset; }
132
133 void setDarkerColor(const QBrush& c) { m_darkerColor = c; }
134 void setLighterColor(const QBrush& c) { m_lighterColor = c; }
135 void setCoarseGridColor(const QBrush& c) { m_coarseGridColor = c; }
136 void setFineGridColor(const QBrush& c) { m_fineGridColor = c; }
137 void setHorizontalColor(const QBrush& c) { m_horizontalColor = c; }
138 void setEmbossColor(const QBrush& c) { m_embossColor = c; }
142 void setEmbossWidth(int c) { m_embossWidth = c; }
143 void setEmbossOffset(int c) { m_embossOffset = c; }
144
145public slots:
147 void update();
148
154 void changePosition( const lmms::TimePos & newPos = TimePos( -1 ) );
155
157 void updateBackground();
158
159protected:
161 {
162 Paste
163 };
164
165 void contextMenuEvent( QContextMenuEvent * cme ) override;
166 void contextMenuAction( QContextMenuEvent * cme, ContextMenuAction action );
167
170 void dragEnterEvent(QDragEnterEvent* dee) override;
171
174 void dropEvent(QDropEvent* de) override;
175
178 void mousePressEvent(QMouseEvent* me) override;
179
180 void mouseReleaseEvent( QMouseEvent * me ) override;
181
184 void paintEvent(QPaintEvent* pe) override;
185
188 void resizeEvent(QResizeEvent* re) override;
189
190 QString nodeName() const override
191 {
192 return "trackcontentwidget";
193 }
194
195 void saveSettings( QDomDocument& doc, QDomElement& element ) override
196 {
197 Q_UNUSED(doc)
198 Q_UNUSED(element)
199 }
200
201 void loadSettings( const QDomElement& element ) override
202 {
203 Q_UNUSED(element)
204 }
205
206
207private:
209 Track* getTrack();
210
213 TimePos getPosition(int mouseX);
214
216
217 using clipViewVector = QVector<ClipView*>;
219
221
222 // qproperty fields
229
234
236} ;
237
238
239} // namespace gui
240
241} // namespace lmms
242
243#endif // LMMS_GUI_TRACK_CONTENT_WIDGET_H
JournallingObject()
Definition JournallingObject.cpp:36
Definition TimePos.h:68
TimePos(const bar_t bar, const tick_t ticks)
Definition TimePos.cpp:45
Base-class for all tracks.
Definition Track.h:67
Definition ClipView.h:52
QVector< ClipView * > clipViewVector
Definition TrackContentWidget.h:217
void changePosition(const lmms::TimePos &newPos=TimePos(-1))
Move the trackContentWidget to a new place in time.
Definition TrackContentWidget.cpp:197
clipViewVector m_clipViews
Definition TrackContentWidget.h:218
int coarseGridWidth
Definition TrackContentWidget.h:59
QBrush m_embossColor
Definition TrackContentWidget.h:228
QPixmap m_background
Definition TrackContentWidget.h:220
QBrush m_darkerColor
Definition TrackContentWidget.h:223
QBrush embossColor() const
Definition TrackContentWidget.h:126
QBrush darkerColor() const
Definition TrackContentWidget.h:121
void setFineGridColor(const QBrush &c)
Definition TrackContentWidget.h:136
bool canPasteSelection(TimePos clipPos, const QDropEvent *de)
Returns whether a selection of Clips can be pasted into this.
Definition TrackContentWidget.cpp:276
QBrush coarseGridColor() const
Definition TrackContentWidget.h:123
QBrush horizontalColor
Definition TrackContentWidget.h:56
void setHorizontalWidth(int c)
Definition TrackContentWidget.h:141
int horizontalWidth
Definition TrackContentWidget.h:61
void setCoarseGridColor(const QBrush &c)
Definition TrackContentWidget.h:135
int embossWidth
Definition TrackContentWidget.h:62
ContextMenuAction
Definition TrackContentWidget.h:161
void contextMenuAction(QContextMenuEvent *cme, ContextMenuAction action)
Definition TrackContentWidget.cpp:611
void paintEvent(QPaintEvent *pe) override
Repaint the trackContentWidget on command.
Definition TrackContentWidget.cpp:542
void dropEvent(QDropEvent *de) override
Respond to a drop event on the trackContentWidget.
Definition TrackContentWidget.cpp:481
Track * getTrack()
Return the track shown by the trackContentWidget.
Definition TrackContentWidget.cpp:570
int m_embossWidth
Definition TrackContentWidget.h:233
TimePos getPosition(int mouseX)
Return the position of the trackContentWidget in bars.
Definition TrackContentWidget.cpp:247
int embossOffset() const
Definition TrackContentWidget.h:131
void updateBackground()
Updates the background tile pixmap.
Definition TrackContentWidget.cpp:89
int m_embossOffset
Definition TrackContentWidget.h:235
void setEmbossColor(const QBrush &c)
Definition TrackContentWidget.h:138
QBrush m_coarseGridColor
Definition TrackContentWidget.h:225
TrackView * m_trackView
Definition TrackContentWidget.h:215
QBrush horizontalColor() const
Definition TrackContentWidget.h:125
int horizontalWidth() const
Definition TrackContentWidget.h:129
void mouseReleaseEvent(QMouseEvent *me) override
Definition TrackContentWidget.cpp:533
void setDarkerColor(const QBrush &c)
Definition TrackContentWidget.h:133
void contextMenuEvent(QContextMenuEvent *cme) override
Definition TrackContentWidget.cpp:585
void setEmbossOffset(int c)
Definition TrackContentWidget.h:143
int fineGridWidth() const
Definition TrackContentWidget.h:128
int m_fineGridWidth
Definition TrackContentWidget.h:231
QBrush lighterColor
Definition TrackContentWidget.h:53
TimePos endPosition(const TimePos &posStart)
Return the end position of the trackContentWidget in Bars.
Definition TrackContentWidget.cpp:578
TrackContentWidget(TrackView *parent)
Create a new trackContentWidget.
Definition TrackContentWidget.cpp:56
void setFineGridWidth(int c)
Definition TrackContentWidget.h:140
QString nodeName() const override
Definition TrackContentWidget.h:190
int embossOffset
Definition TrackContentWidget.h:64
int m_horizontalWidth
Definition TrackContentWidget.h:232
void setLighterColor(const QBrush &c)
Definition TrackContentWidget.h:134
void setEmbossWidth(int c)
Definition TrackContentWidget.h:142
void removeClipView(ClipView *clipv)
Removes the given ClipView from this widget.
Definition TrackContentWidget.cpp:169
bool pasteSelection(TimePos clipPos, QDropEvent *de)
Pastes a selection of Clips onto the track.
Definition TrackContentWidget.cpp:366
void loadSettings(const QDomElement &element) override
Definition TrackContentWidget.h:201
QBrush lighterColor() const
Definition TrackContentWidget.h:122
QBrush m_fineGridColor
Definition TrackContentWidget.h:226
void saveSettings(QDomDocument &doc, QDomElement &element) override
Definition TrackContentWidget.h:195
QBrush fineGridColor() const
Definition TrackContentWidget.h:124
int embossWidth() const
Definition TrackContentWidget.h:130
void setHorizontalColor(const QBrush &c)
Definition TrackContentWidget.h:137
QBrush m_horizontalColor
Definition TrackContentWidget.h:227
QBrush coarseGridColor
Definition TrackContentWidget.h:54
void resizeEvent(QResizeEvent *re) override
Updates the background tile pixmap on size changes.
Definition TrackContentWidget.cpp:559
QBrush m_lighterColor
Definition TrackContentWidget.h:224
QBrush fineGridColor
Definition TrackContentWidget.h:55
void dragEnterEvent(QDragEnterEvent *dee) override
Respond to a drag enter event on the trackContentWidget.
Definition TrackContentWidget.cpp:259
int m_coarseGridWidth
Definition TrackContentWidget.h:230
void update()
Update ourselves by updating all the ClipViews attached.
Definition TrackContentWidget.cpp:184
void addClipView(ClipView *clipv)
Adds a ClipView to this widget.
Definition TrackContentWidget.cpp:155
void setCoarseGridWidth(int c)
Definition TrackContentWidget.h:139
void mousePressEvent(QMouseEvent *me) override
Respond to a mouse press on the trackContentWidget.
Definition TrackContentWidget.cpp:495
QBrush embossColor
Definition TrackContentWidget.h:57
int fineGridWidth
Definition TrackContentWidget.h:60
QBrush darkerColor
Definition TrackContentWidget.h:52
int coarseGridWidth() const
Definition TrackContentWidget.h:127
Definition TrackView.h:60
Definition AudioPortAudio.cpp:209
Definition RemotePluginBase.cpp:34