mirror of
https://github.com/LMMS/lmms.git
synced 2025-12-31 02:28:05 -05:00
Use Qt layouts for the mixer channels. These changes will enable several other improvements, like for example making the mixer and faders resizable, adding peak indicators, etc. This is a squash commit which consists of the following individual commits: * Remove extra transparency in send/receive arrows The extra transparency was conflicting with the positioning of the arrows in the layout * Begin reimplementing MixerChannelView MixerChannelView is now a combination of the MixerLine with the previous MixerChannelView * Adjust SendButtonIndicator to use MixerChannelView * Remove MixerLine - Move MixerChannelView into src/gui * Remove MixerView::MixerChannelView * Remove header of MixerLine * Change MixerView.h to use MixerChannelView Change MixerView.h to use MixerChannelView rather than MixerLine Also do some cleanup, such as removing an unused forward declaration of QButtonGroup * Create EffectRackView + Set height of sizeHint() using MIXER_CHANNEL_HEIGHT (287) * Remove include of MixerLine - Include MixerChannelView * Phase 1: Adjust MixerView to use new MixerChannelView * Move children wigets into header file * Phase 2: Adjust MixerView to use new MixerChannelView * Phase 3: Adjust MixerView to use new MixerChannelView * Phase 4: Adjust MixerView to use new MixerChannelView * Phase 5: Adjust MixerView to use new MixerChannelView * Phase 5: Adjust MixerView to use new MixerChannelView * Remove places where MixerChannelView is being deleted Before, MixerChannelView was not inherited by QWidget, meaning it could not have a parent and had to be deleted when necessary. Since the MixerView owns the new MixerChannelView, this is no longer necessary. * Replace MixerLine with MixerChannelView - Include MixerChannelView in MixerView * Replace setCurrentMixerLine calls with setCurrentMixerChannel around codebase * Add event handlers in MixerChannelView * Implement MixerChannelView::eventFilter * Update theme styles to use MixerChannelView * Add QColor properties from style - Set the Qt::WA_StyledBackground attribute on * Add effect rack to rack layout when adding channel * Set size for MixerChannelView - Change nullptr to this for certain widgets - Some custom widgets may expect there to be a parent - Add spacing in channel layout - Increase size of mixer channel * Retain size when widgets are hidden * Implement paintEvent - Rename states in SendReceiveState * Implement send/receive arrow toggling - Make maxTextHeight constexpr in elideName - Remove background changing on mouse press (is now handled in paintEvent) * Implement renaming mixer channels * Implement color functions * Implement channel moving/removing functions * Do some cleanup Not sure if that connection with the mute model was needed, but removing it did not seem to introduce any issues. * Include cassert * Replace references to MixerLine with MixerChannelView * Reduce height + Make m_renameLineEdit transparent + Retain size when LCD is hidden + Remove stretch after renameLineEdit in layout * Remove trailing whitespace * Make m_renameLineEdit read only + Transpose m_renameLineEditView rectangle (with 5px offset) * Set spacing in channel layout back to 0 * Remove sizeHint override and constant size * Use sizeHint for mixerChannelSize + Leave auto fill background to false in MixerChannelView + Only set width for EffectRackView * Set margins to 4 on all sides in MixerChannelView * Move solo and mute closer to each other Move the solo and mute buttons closer to each other in the mixer channels. Technically this is accomplished by putting them into their own layout with minimal margins and spacing. * Fixes for CodeFactor * Code review changes Mostly whitespace and formatting changes: remove tabs, remove spaces in parameter lists, remove underscores from parameter names. Some lines have been shortened by introducing intermediate variables, e.g. in `MixerChannelView`. `MixerView` has many changes but only related to whitespace. Spaces have been introduced for if and for statements. Whitespace at round braces has been removed everywhere in the implementation file even if a line was not touched by the intial changes. Remove duplicate forward declaration of `MixerChannelView`. * Adjust parameter order in MixerChannelView's constructor Make the parent `QWidget` the first parameter as it is a Qt convention. The default parameter had to be removed due to this. * Move styling of rename line edit into style sheets Move the style of the `QGraphicsView` for the rename line edit from the code into the style sheets of the default and classic theme. * More code review changes Fix spaces between types and references/pointers, e.g. use `const QBrush& c` instead of `const QBrush & c`. Remove underscores from parameter names. Remove spaces near parentheses. Replace tabs with spaces. Introduce intermediate variable to resolve "hanging" + operator. Replace the connection for the periodic fader updates with one that uses function pointers instead of `SIGNAL` and `SLOT`. --------- Co-authored-by: Michael Gregorius <michael.gregorius.git@arcor.de>
103 lines
2.3 KiB
C++
103 lines
2.3 KiB
C++
/*
|
|
* SampleTrackWindow.h
|
|
*
|
|
* Copyright (c) 2005-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
|
|
*
|
|
* This file is part of LMMS - https://lmms.io
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* License along with this program (see COPYING); if not, write to the
|
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301 USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef LMMS_GUI_SAMPLE_TRACK_WINDOW_H
|
|
#define LMMS_GUI_SAMPLE_TRACK_WINDOW_H
|
|
|
|
#include <QWidget>
|
|
|
|
#include "ModelView.h"
|
|
#include "SampleTrack.h"
|
|
#include "SerializingObject.h"
|
|
|
|
class QLineEdit;
|
|
|
|
namespace lmms::gui
|
|
{
|
|
|
|
class EffectRackView;
|
|
class Knob;
|
|
class MixerChannelLcdSpinBox;
|
|
class SampleTrackView;
|
|
|
|
|
|
class SampleTrackWindow : public QWidget, public ModelView, public SerializingObjectHook
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
SampleTrackWindow(SampleTrackView * tv);
|
|
~SampleTrackWindow() override = default;
|
|
|
|
SampleTrack * model()
|
|
{
|
|
return castModel<SampleTrack>();
|
|
}
|
|
|
|
const SampleTrack * model() const
|
|
{
|
|
return castModel<SampleTrack>();
|
|
}
|
|
|
|
void setSampleTrackView(SampleTrackView * tv);
|
|
|
|
SampleTrackView *sampleTrackView()
|
|
{
|
|
return m_stv;
|
|
}
|
|
|
|
|
|
public slots:
|
|
void textChanged(const QString & new_name);
|
|
void toggleVisibility(bool on);
|
|
void updateName();
|
|
|
|
|
|
protected:
|
|
// capture close-events for toggling sample-track-button
|
|
void closeEvent(QCloseEvent * ce) override;
|
|
|
|
void saveSettings(QDomDocument & doc, QDomElement & element) override;
|
|
void loadSettings(const QDomElement & element) override;
|
|
|
|
private:
|
|
void modelChanged() override;
|
|
|
|
SampleTrack * m_track;
|
|
SampleTrackView * m_stv;
|
|
|
|
// widgets on the top of an sample-track-window
|
|
QLineEdit * m_nameLineEdit;
|
|
Knob * m_volumeKnob;
|
|
Knob * m_panningKnob;
|
|
MixerChannelLcdSpinBox * m_mixerChannelNumber;
|
|
|
|
EffectRackView * m_effectRack;
|
|
} ;
|
|
|
|
|
|
|
|
} // namespace lmms::gui
|
|
|
|
#endif // LMMS_GUI_SAMPLE_TRACK_WINDOW_H
|