1 // qsamplerChannelForm.h
2 //
3 /****************************************************************************
4    Copyright (C) 2004-2020, rncbc aka Rui Nuno Capela. All rights reserved.
5    Copyright (C) 2007, Christian Schoenebeck
6 
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    as published by the Free Software Foundation; either version 2
10    of the License, or (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License along
18    with this program; if not, write to the Free Software Foundation, Inc.,
19    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 
21 *****************************************************************************/
22 
23 #ifndef __qsamplerChannelForm_h
24 #define __qsamplerChannelForm_h
25 
26 #include "ui_qsamplerChannelForm.h"
27 
28 #include "qsamplerDevice.h"
29 #include "qsamplerChannel.h"
30 #include "qsamplerDeviceForm.h"
31 
32 #include <QHash>
33 
34 
35 namespace QSampler {
36 
37 //-------------------------------------------------------------------------
38 // QSampler::Channelform -- Channel form interface.
39 //
40 
41 class ChannelForm : public QDialog
42 {
43 	Q_OBJECT
44 
45 public:
46 
47 	ChannelForm(QWidget* pParent = nullptr);
48 	~ChannelForm();
49 
50 	void setup(Channel* pChannel);
51 
52 	void setupDevice(Device* pDevice,
53 		Device::DeviceType deviceTypeMode,
54 		const QString& sDriverName);
55 
56 	void selectMidiDriverItem(const QString& sMidiDriver);
57 	void selectMidiDeviceItem(int iMidiItem);
58 	void selectAudioDriverItem(const QString& sAudioDriver);
59 	void selectAudioDeviceItem(int iAudioItem);
60 
61 protected slots:
62 
63 	void accept();
64 	void reject();
65 	void openInstrumentFile();
66 	void updateInstrumentName();
67 	void selectMidiDriver(const QString& sMidiDriver);
68 	void selectMidiDevice(int iMidiItem);
69 	void setupMidiDevice();
70 	void selectAudioDriver(const QString& sAudioDriver);
71 	void selectAudioDevice(int iAudioItem);
72 	void setupAudioDevice();
73 	void updateDevices();
74 	void optionsChanged();
75 	void stabilizeForm();
76 
77 	void updateTableCellRenderers();
78 	void updateTableCellRenderers(
79 		const QModelIndex& topLeft, const QModelIndex& bottomRight);
80 
81 private:
82 
83 	Ui::qsamplerChannelForm m_ui;
84 
85 	Channel* m_pChannel;
86 	int m_iDirtySetup;
87 	int m_iDirtyCount;
88 	QHash<int, Device *> m_audioDevices;
89 	QHash<int, Device *> m_midiDevices;
90 	DeviceForm* m_pDeviceForm;
91 	ChannelRoutingModel m_routingModel;
92 	ChannelRoutingDelegate m_routingDelegate;
93 };
94 
95 } // namespace QSampler
96 
97 #endif // __qsamplerChannelForm_h
98 
99 
100 // end of qsamplerChannelForm.h
101