mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 21:20:31 -05:00 
			
		
		
		
	Delete channel API from DeviceUISet. Update FeatureUISet
This commit is contained in:
		
							parent
							
								
									e9a32528d7
								
							
						
					
					
						commit
						6ebf4569bf
					
				@ -424,7 +424,6 @@ ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *device
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ChannelAnalyzerGUI::~ChannelAnalyzerGUI()
 | 
					ChannelAnalyzerGUI::~ChannelAnalyzerGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_channelAnalyzer; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete m_scopeVis;
 | 
						delete m_scopeVis;
 | 
				
			||||||
	delete m_spectrumScopeComboVis;
 | 
						delete m_spectrumScopeComboVis;
 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
 | 
				
			|||||||
@ -64,6 +64,7 @@ AMDemod::AMDemod(DeviceAPI *deviceAPI) :
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
AMDemod::~AMDemod()
 | 
					AMDemod::~AMDemod()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    qDebug("AMDemod::~AMDemod");
 | 
				
			||||||
    disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
 | 
					    disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
 | 
				
			||||||
    delete m_networkManager;
 | 
					    delete m_networkManager;
 | 
				
			||||||
	m_deviceAPI->removeChannelSinkAPI(this);
 | 
						m_deviceAPI->removeChannelSinkAPI(this);
 | 
				
			||||||
 | 
				
			|||||||
@ -62,7 +62,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AMDemod(DeviceAPI *deviceAPI);
 | 
					    AMDemod(DeviceAPI *deviceAPI);
 | 
				
			||||||
	~AMDemod();
 | 
						virtual ~AMDemod();
 | 
				
			||||||
	virtual void destroy() { delete this; }
 | 
						virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
				
			||||||
 | 
				
			|||||||
@ -289,7 +289,6 @@ AMDemodGUI::AMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
AMDemodGUI::~AMDemodGUI()
 | 
					AMDemodGUI::~AMDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_amDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -61,7 +61,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ATVDemod(DeviceAPI *deviceAPI);
 | 
					    ATVDemod(DeviceAPI *deviceAPI);
 | 
				
			||||||
	~ATVDemod();
 | 
						virtual ~ATVDemod();
 | 
				
			||||||
	virtual void destroy() { delete this; }
 | 
						virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
				
			||||||
 | 
				
			|||||||
@ -275,7 +275,6 @@ ATVDemodGUI::ATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Base
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ATVDemodGUI::~ATVDemodGUI()
 | 
					ATVDemodGUI::~ATVDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_atvDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
    delete m_scopeVis;
 | 
					    delete m_scopeVis;
 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -420,7 +420,6 @@ BFMDemodGUI::BFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
BFMDemodGUI::~BFMDemodGUI()
 | 
					BFMDemodGUI::~BFMDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_bfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -38,7 +38,7 @@ class DATVDemod : public BasebandSampleSink, public ChannelAPI
 | 
				
			|||||||
public:
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DATVDemod(DeviceAPI *);
 | 
					    DATVDemod(DeviceAPI *);
 | 
				
			||||||
    ~DATVDemod();
 | 
					    virtual ~DATVDemod();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
    virtual void getIdentifier(QString& id) { id = m_channelId; }
 | 
					    virtual void getIdentifier(QString& id) { id = m_channelId; }
 | 
				
			||||||
 | 
				
			|||||||
@ -244,7 +244,6 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
DATVDemodGUI::~DATVDemodGUI()
 | 
					DATVDemodGUI::~DATVDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_objDATVDemod;
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -63,7 +63,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DSDDemod(DeviceAPI *deviceAPI);
 | 
					    DSDDemod(DeviceAPI *deviceAPI);
 | 
				
			||||||
	~DSDDemod();
 | 
						virtual ~DSDDemod();
 | 
				
			||||||
	virtual void destroy() { delete this; }
 | 
						virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
				
			||||||
 | 
				
			|||||||
@ -381,7 +381,6 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
DSDDemodGUI::~DSDDemodGUI()
 | 
					DSDDemodGUI::~DSDDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_dsdDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete m_scopeVisXY;
 | 
						delete m_scopeVisXY;
 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -308,7 +308,6 @@ FreeDVDemodGUI::FreeDVDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
FreeDVDemodGUI::~FreeDVDemodGUI()
 | 
					FreeDVDemodGUI::~FreeDVDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_freeDVDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -147,8 +147,6 @@ LoRaDemodGUI::LoRaDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LoRaDemodGUI::~LoRaDemodGUI()
 | 
					LoRaDemodGUI::~LoRaDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_deviceUISet->removeRxChannelInstance(this);
 | 
					 | 
				
			||||||
	delete m_LoRaDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -62,7 +62,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NFMDemod(DeviceAPI *deviceAPI);
 | 
					    NFMDemod(DeviceAPI *deviceAPI);
 | 
				
			||||||
	~NFMDemod();
 | 
						virtual ~NFMDemod();
 | 
				
			||||||
	virtual void destroy() { delete this; }
 | 
						virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positive);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positive);
 | 
				
			||||||
 | 
				
			|||||||
@ -333,7 +333,6 @@ NFMDemodGUI::NFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NFMDemodGUI::~NFMDemodGUI()
 | 
					NFMDemodGUI::~NFMDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_nfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -342,7 +342,6 @@ SSBDemodGUI::SSBDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SSBDemodGUI::~SSBDemodGUI()
 | 
					SSBDemodGUI::~SSBDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_ssbDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -246,8 +246,6 @@ WFMDemodGUI::WFMDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
WFMDemodGUI::~WFMDemodGUI()
 | 
					WFMDemodGUI::~WFMDemodGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_wfmDemod; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	//delete m_channelMarker;
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -198,7 +198,6 @@ FileSinkGUI::FileSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
FileSinkGUI::~FileSinkGUI()
 | 
					FileSinkGUI::~FileSinkGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_fileSink; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -60,7 +60,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FreqTracker(DeviceAPI *deviceAPI);
 | 
					    FreqTracker(DeviceAPI *deviceAPI);
 | 
				
			||||||
	~FreqTracker();
 | 
						virtual ~FreqTracker();
 | 
				
			||||||
	virtual void destroy() { delete this; }
 | 
						virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
						virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
 | 
				
			||||||
 | 
				
			|||||||
@ -332,7 +332,6 @@ FreqTrackerGUI::FreqTrackerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
FreqTrackerGUI::~FreqTrackerGUI()
 | 
					FreqTrackerGUI::~FreqTrackerGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_freqTracker; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -130,7 +130,6 @@ LocalSinkGUI::LocalSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LocalSinkGUI::~LocalSinkGUI()
 | 
					LocalSinkGUI::~LocalSinkGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_localSink; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -129,7 +129,6 @@ RemoteSinkGUI::RemoteSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
RemoteSinkGUI::~RemoteSinkGUI()
 | 
					RemoteSinkGUI::~RemoteSinkGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_remoteSink; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -209,7 +209,6 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
UDPSinkGUI::~UDPSinkGUI()
 | 
					UDPSinkGUI::~UDPSinkGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_udpSink; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -166,7 +166,7 @@ public:
 | 
				
			|||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FileSource(DeviceAPI *deviceAPI);
 | 
					    FileSource(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~FileSource();
 | 
					    virtual ~FileSource();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -216,7 +216,6 @@ FileSourceGUI::FileSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Bas
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
FileSourceGUI::~FileSourceGUI()
 | 
					FileSourceGUI::~FileSourceGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_fileSource;
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -125,7 +125,6 @@ LocalSourceGUI::LocalSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, B
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
LocalSourceGUI::~LocalSourceGUI()
 | 
					LocalSourceGUI::~LocalSourceGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_localSource; // TODO: check this: when the GUI closes it has to delete the demodulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -173,7 +173,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AMMod(DeviceAPI *deviceAPI);
 | 
					    AMMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~AMMod();
 | 
					    virtual ~AMMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -385,7 +385,6 @@ AMModGUI::AMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
AMModGUI::~AMModGUI()
 | 
					AMModGUI::~AMModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_amMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -245,7 +245,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ATVMod(DeviceAPI *deviceAPI);
 | 
					    ATVMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~ATVMod();
 | 
					    virtual ~ATVMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -116,7 +116,6 @@ ATVModGUI::ATVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ATVModGUI::~ATVModGUI()
 | 
					ATVModGUI::~ATVModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_atvMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -177,7 +177,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FreeDVMod(DeviceAPI *deviceAPI);
 | 
					    FreeDVMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~FreeDVMod();
 | 
					    virtual ~FreeDVMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -396,7 +396,6 @@ FreeDVModGUI::FreeDVModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
FreeDVModGUI::~FreeDVModGUI()
 | 
					FreeDVModGUI::~FreeDVModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_freeDVMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -173,7 +173,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NFMMod(DeviceAPI *deviceAPI);
 | 
					    NFMMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~NFMMod();
 | 
					    virtual ~NFMMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -418,7 +418,6 @@ NFMModGUI::NFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NFMModGUI::~NFMModGUI()
 | 
					NFMModGUI::~NFMModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_nfmMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -94,7 +94,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    PacketMod(DeviceAPI *deviceAPI);
 | 
					    PacketMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~PacketMod();
 | 
					    virtual ~PacketMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -465,7 +465,6 @@ PacketModGUI::PacketModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
PacketModGUI::~PacketModGUI()
 | 
					PacketModGUI::~PacketModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_packetMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -175,7 +175,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SSBMod(DeviceAPI *deviceAPI);
 | 
					    SSBMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~SSBMod();
 | 
					    virtual ~SSBMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -464,7 +464,6 @@ SSBModGUI::SSBModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SSBModGUI::~SSBModGUI()
 | 
					SSBModGUI::~SSBModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_ssbMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -173,7 +173,7 @@ public:
 | 
				
			|||||||
    //=================================================================
 | 
					    //=================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    WFMMod(DeviceAPI *deviceAPI);
 | 
					    WFMMod(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~WFMMod();
 | 
					    virtual ~WFMMod();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void start();
 | 
					    virtual void start();
 | 
				
			||||||
 | 
				
			|||||||
@ -402,7 +402,6 @@ WFMModGUI::WFMModGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSam
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
WFMModGUI::~WFMModGUI()
 | 
					WFMModGUI::~WFMModGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	delete m_wfmMod; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
	delete ui;
 | 
						delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -155,7 +155,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RemoteSource(DeviceAPI *deviceAPI);
 | 
					    RemoteSource(DeviceAPI *deviceAPI);
 | 
				
			||||||
    ~RemoteSource();
 | 
					    virtual ~RemoteSource();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -190,7 +190,6 @@ RemoteSourceGUI::RemoteSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
RemoteSourceGUI::~RemoteSourceGUI()
 | 
					RemoteSourceGUI::~RemoteSourceGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_remoteSrc;
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -163,7 +163,6 @@ UDPSourceGUI::UDPSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseb
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
UDPSourceGUI::~UDPSourceGUI()
 | 
					UDPSourceGUI::~UDPSourceGUI()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    delete m_udpSource; // TODO: check this: when the GUI closes it has to delete the modulator
 | 
					 | 
				
			||||||
    delete ui;
 | 
					    delete ui;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -82,7 +82,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RigCtlServer(WebAPIAdapterInterface *webAPIAdapterInterface);
 | 
					    RigCtlServer(WebAPIAdapterInterface *webAPIAdapterInterface);
 | 
				
			||||||
    ~RigCtlServer();
 | 
					    virtual ~RigCtlServer();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
    virtual bool handleMessage(const Message& cmd);
 | 
					    virtual bool handleMessage(const Message& cmd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -100,7 +100,7 @@ public:
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SimplePTT(WebAPIAdapterInterface *webAPIAdapterInterface);
 | 
					    SimplePTT(WebAPIAdapterInterface *webAPIAdapterInterface);
 | 
				
			||||||
    ~SimplePTT();
 | 
					    virtual ~SimplePTT();
 | 
				
			||||||
    virtual void destroy() { delete this; }
 | 
					    virtual void destroy() { delete this; }
 | 
				
			||||||
    virtual bool handleMessage(const Message& cmd);
 | 
					    virtual bool handleMessage(const Message& cmd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -94,63 +94,49 @@ void DeviceUISet::addRollupWidget(QWidget *widget)
 | 
				
			|||||||
    m_channelWindow->addRollupWidget(widget);
 | 
					    m_channelWindow->addRollupWidget(widget);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DeviceUISet::registerRxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* pluginGUI)
 | 
					void DeviceUISet::registerRxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, pluginGUI, 0));
 | 
					    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, channelGUI, 0));
 | 
				
			||||||
 | 
					    QObject::connect(
 | 
				
			||||||
 | 
					        channelGUI,
 | 
				
			||||||
 | 
					        &ChannelGUI::closing,
 | 
				
			||||||
 | 
					        this,
 | 
				
			||||||
 | 
					        [=](){ this->handleChannelGUIClosing(channelGUI); },
 | 
				
			||||||
 | 
					        Qt::QueuedConnection
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DeviceUISet::registerTxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* pluginGUI)
 | 
					void DeviceUISet::registerTxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, pluginGUI, 1));
 | 
					    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, channelGUI, 1));
 | 
				
			||||||
 | 
					    QObject::connect(
 | 
				
			||||||
 | 
					        channelGUI,
 | 
				
			||||||
 | 
					        &ChannelGUI::closing,
 | 
				
			||||||
 | 
					        this,
 | 
				
			||||||
 | 
					        [=](){ this->handleChannelGUIClosing(channelGUI); },
 | 
				
			||||||
 | 
					        Qt::QueuedConnection
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DeviceUISet::registerChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* pluginGUI)
 | 
					void DeviceUISet::registerChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, pluginGUI, 2));
 | 
					    m_channelInstanceRegistrations.append(ChannelInstanceRegistration(channelName, channelAPI, channelGUI, 2));
 | 
				
			||||||
}
 | 
					    QObject::connect(
 | 
				
			||||||
 | 
					        channelGUI,
 | 
				
			||||||
void DeviceUISet::removeRxChannelInstance(ChannelGUI* pluginGUI)
 | 
					        &ChannelGUI::closing,
 | 
				
			||||||
{
 | 
					        this,
 | 
				
			||||||
    for (ChannelInstanceRegistrations::iterator it = m_channelInstanceRegistrations.begin(); it != m_channelInstanceRegistrations.end(); ++it)
 | 
					        [=](){ this->handleChannelGUIClosing(channelGUI); },
 | 
				
			||||||
    {
 | 
					        Qt::QueuedConnection
 | 
				
			||||||
        if (it->m_gui == pluginGUI)
 | 
					    );
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_channelInstanceRegistrations.erase(it);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void DeviceUISet::removeTxChannelInstance(ChannelGUI* pluginGUI)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    for (ChannelInstanceRegistrations::iterator it = m_channelInstanceRegistrations.begin(); it != m_channelInstanceRegistrations.end(); ++it)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (it->m_gui == pluginGUI)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_channelInstanceRegistrations.erase(it);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void DeviceUISet::removeChannelInstance(ChannelGUI* pluginGUI)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    for (ChannelInstanceRegistrations::iterator it = m_channelInstanceRegistrations.begin(); it != m_channelInstanceRegistrations.end(); ++it)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (it->m_gui == pluginGUI)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_channelInstanceRegistrations.erase(it);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DeviceUISet::freeChannels()
 | 
					void DeviceUISet::freeChannels()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
					    for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        qDebug("DeviceUISet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelName));
 | 
					        qDebug("DeviceUISet::freeChannels: destroying channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
        m_channelInstanceRegistrations[i].m_gui->destroy();
 | 
					        m_channelInstanceRegistrations[i].m_gui->destroy();
 | 
				
			||||||
 | 
					        m_channelInstanceRegistrations[i].m_channelAPI->destroy();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -159,9 +145,10 @@ void DeviceUISet::deleteChannel(int channelIndex)
 | 
				
			|||||||
    if ((channelIndex >= 0) && (channelIndex < m_channelInstanceRegistrations.count()))
 | 
					    if ((channelIndex >= 0) && (channelIndex < m_channelInstanceRegistrations.count()))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        qDebug("DeviceUISet::deleteChannel: delete channel [%s] at %d",
 | 
					        qDebug("DeviceUISet::deleteChannel: delete channel [%s] at %d",
 | 
				
			||||||
                qPrintable(m_channelInstanceRegistrations[channelIndex].m_channelName),
 | 
					                qPrintable(m_channelInstanceRegistrations[channelIndex].m_channelURI),
 | 
				
			||||||
                channelIndex);
 | 
					                channelIndex);
 | 
				
			||||||
        m_channelInstanceRegistrations[channelIndex].m_gui->destroy();
 | 
					        m_channelInstanceRegistrations[channelIndex].m_gui->destroy();
 | 
				
			||||||
 | 
					        m_channelInstanceRegistrations[channelIndex].m_channelAPI->destroy();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -169,21 +156,22 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    if (preset->isSourcePreset())
 | 
					    if (preset->isSourcePreset())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        qDebug("DeviceUISet::loadRxChannelSettings: Loading preset [%s | %s]", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
					        qDebug("DeviceUISet::loadRxChannelSettings: Loading preset [%s | %s]",
 | 
				
			||||||
 | 
					            qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Available channel plugins
 | 
					        // Available channel plugins
 | 
				
			||||||
        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getRxChannelRegistrations();
 | 
					        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getRxChannelRegistrations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // copy currently open channels and clear list
 | 
					        // clear list
 | 
				
			||||||
        ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        m_channelInstanceRegistrations.clear();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for(int i = 0; i < openChannels.count(); i++)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::loadRxChannelSettings: destroying old channel [%s]", qPrintable(openChannels[i].m_channelName));
 | 
					            qDebug("DeviceUISet::loadRxChannelSettings: destroying old channel [%s]",
 | 
				
			||||||
            openChannels[i].m_gui->destroy(); // FIXME: stop channel before
 | 
					                qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_gui->destroy(); // FIXME: stop channel before
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_channelAPI->destroy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        m_channelInstanceRegistrations.clear();
 | 
				
			||||||
        qDebug("DeviceUISet::loadRxChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
					        qDebug("DeviceUISet::loadRxChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < preset->getChannelCount(); i++)
 | 
					        for (int i = 0; i < preset->getChannelCount(); i++)
 | 
				
			||||||
@ -206,6 +194,13 @@ void DeviceUISet::loadRxChannelSettings(const Preset *preset, PluginAPI *pluginA
 | 
				
			|||||||
                    (*channelRegistrations)[i].m_plugin->createRxChannel(m_deviceAPI, &rxChannel, &channelAPI);
 | 
					                    (*channelRegistrations)[i].m_plugin->createRxChannel(m_deviceAPI, &rxChannel, &channelAPI);
 | 
				
			||||||
                    rxChannelGUI = (*channelRegistrations)[i].m_plugin->createRxChannelGUI(this, rxChannel);
 | 
					                    rxChannelGUI = (*channelRegistrations)[i].m_plugin->createRxChannelGUI(this, rxChannel);
 | 
				
			||||||
                    registerRxChannelInstance(channelAPI->getURI(), channelAPI, rxChannelGUI);
 | 
					                    registerRxChannelInstance(channelAPI->getURI(), channelAPI, rxChannelGUI);
 | 
				
			||||||
 | 
					                    QObject::connect(
 | 
				
			||||||
 | 
					                        rxChannelGUI,
 | 
				
			||||||
 | 
					                        &ChannelGUI::closing,
 | 
				
			||||||
 | 
					                        this,
 | 
				
			||||||
 | 
					                        [=](){ this->handleChannelGUIClosing(rxChannelGUI); },
 | 
				
			||||||
 | 
					                        Qt::QueuedConnection
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -231,8 +226,8 @@ void DeviceUISet::saveRxChannelSettings(Preset *preset)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::saveRxChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelName));
 | 
					            qDebug("DeviceUISet::saveRxChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
            preset->addChannel(m_channelInstanceRegistrations[i].m_channelName, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
					            preset->addChannel(m_channelInstanceRegistrations[i].m_channelURI, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -245,21 +240,22 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    if (preset->isSinkPreset())
 | 
					    if (preset->isSinkPreset())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        qDebug("DeviceUISet::loadTxChannelSettings: Loading preset [%s | %s]", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
					        qDebug("DeviceUISet::loadTxChannelSettings: Loading preset [%s | %s]",
 | 
				
			||||||
 | 
					            qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Available channel plugins
 | 
					        // Available channel plugins
 | 
				
			||||||
        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getTxChannelRegistrations();
 | 
					        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getTxChannelRegistrations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // copy currently open channels and clear list
 | 
					        //  clear list
 | 
				
			||||||
        ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        m_channelInstanceRegistrations.clear();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for(int i = 0; i < openChannels.count(); i++)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::loadTxChannelSettings: destroying old channel [%s]", qPrintable(openChannels[i].m_channelName));
 | 
					            qDebug("DeviceUISet::loadTxChannelSettings: destroying old channel [%s]",
 | 
				
			||||||
            openChannels[i].m_gui->destroy();
 | 
					                qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_gui->destroy();
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_channelAPI->destroy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        m_channelInstanceRegistrations.clear();
 | 
				
			||||||
        qDebug("DeviceUISet::loadTxChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
					        qDebug("DeviceUISet::loadTxChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for(int i = 0; i < preset->getChannelCount(); i++)
 | 
					        for(int i = 0; i < preset->getChannelCount(); i++)
 | 
				
			||||||
@ -281,6 +277,13 @@ void DeviceUISet::loadTxChannelSettings(const Preset *preset, PluginAPI *pluginA
 | 
				
			|||||||
                    (*channelRegistrations)[i].m_plugin->createTxChannel(m_deviceAPI, &txChannel, &channelAPI);
 | 
					                    (*channelRegistrations)[i].m_plugin->createTxChannel(m_deviceAPI, &txChannel, &channelAPI);
 | 
				
			||||||
                    txChannelGUI = (*channelRegistrations)[i].m_plugin->createTxChannelGUI(this, txChannel);
 | 
					                    txChannelGUI = (*channelRegistrations)[i].m_plugin->createTxChannelGUI(this, txChannel);
 | 
				
			||||||
                    registerTxChannelInstance(channelAPI->getURI(), channelAPI, txChannelGUI);
 | 
					                    registerTxChannelInstance(channelAPI->getURI(), channelAPI, txChannelGUI);
 | 
				
			||||||
 | 
					                    QObject::connect(
 | 
				
			||||||
 | 
					                        txChannelGUI,
 | 
				
			||||||
 | 
					                        &ChannelGUI::closing,
 | 
				
			||||||
 | 
					                        this,
 | 
				
			||||||
 | 
					                        [=](){ this->handleChannelGUIClosing(txChannelGUI); },
 | 
				
			||||||
 | 
					                        Qt::QueuedConnection
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -307,8 +310,8 @@ void DeviceUISet::saveTxChannelSettings(Preset *preset)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::saveTxChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelName));
 | 
					            qDebug("DeviceUISet::saveTxChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
            preset->addChannel(m_channelInstanceRegistrations[i].m_channelName, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
					            preset->addChannel(m_channelInstanceRegistrations[i].m_channelURI, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -321,21 +324,22 @@ void DeviceUISet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *plugi
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    if (preset->isMIMOPreset())
 | 
					    if (preset->isMIMOPreset())
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        qDebug("DeviceUISet::loadMIMOChannelSettings: Loading preset [%s | %s]", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
					        qDebug("DeviceUISet::loadMIMOChannelSettings: Loading preset [%s | %s]",
 | 
				
			||||||
 | 
					            qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Available channel plugins
 | 
					        // Available channel plugins
 | 
				
			||||||
        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getMIMOChannelRegistrations();
 | 
					        PluginAPI::ChannelRegistrations *channelRegistrations = pluginAPI->getMIMOChannelRegistrations();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // copy currently open channels and clear list
 | 
					        // clear list
 | 
				
			||||||
        ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        m_channelInstanceRegistrations.clear();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for(int i = 0; i < openChannels.count(); i++)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::loadMIMOChannelSettings: destroying old channel [%s]", qPrintable(openChannels[i].m_channelName));
 | 
					            qDebug("DeviceUISet::loadMIMOChannelSettings: destroying old channel [%s]",
 | 
				
			||||||
            openChannels[i].m_gui->destroy(); // FIXME: stop channel before
 | 
					                qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_gui->destroy(); // FIXME: stop channel before
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations[i].m_channelAPI->destroy();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        m_channelInstanceRegistrations.clear();
 | 
				
			||||||
        qDebug("DeviceUISet::loadMIMOChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
					        qDebug("DeviceUISet::loadMIMOChannelSettings: %d channel(s) in preset", preset->getChannelCount());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int i = 0; i < preset->getChannelCount(); i++)
 | 
					        for (int i = 0; i < preset->getChannelCount(); i++)
 | 
				
			||||||
@ -359,6 +363,13 @@ void DeviceUISet::loadMIMOChannelSettings(const Preset *preset, PluginAPI *plugi
 | 
				
			|||||||
                    mimoChannelGUI = (*channelRegistrations)[i].m_plugin->createMIMOChannelGUI(this, mimoChannel);
 | 
					                    mimoChannelGUI = (*channelRegistrations)[i].m_plugin->createMIMOChannelGUI(this, mimoChannel);
 | 
				
			||||||
                    (*channelRegistrations)[i].m_plugin->createMIMOChannel(m_deviceAPI, &mimoChannel, &channelAPI);
 | 
					                    (*channelRegistrations)[i].m_plugin->createMIMOChannel(m_deviceAPI, &mimoChannel, &channelAPI);
 | 
				
			||||||
                    registerChannelInstance(channelAPI->getURI(), channelAPI, mimoChannelGUI);
 | 
					                    registerChannelInstance(channelAPI->getURI(), channelAPI, mimoChannelGUI);
 | 
				
			||||||
 | 
					                    QObject::connect(
 | 
				
			||||||
 | 
					                        mimoChannelGUI,
 | 
				
			||||||
 | 
					                        &ChannelGUI::closing,
 | 
				
			||||||
 | 
					                        this,
 | 
				
			||||||
 | 
					                        [=](){ this->handleChannelGUIClosing(mimoChannelGUI); },
 | 
				
			||||||
 | 
					                        Qt::QueuedConnection
 | 
				
			||||||
 | 
					                    );
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -384,8 +395,8 @@ void DeviceUISet::saveMIMOChannelSettings(Preset *preset)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
					        for(int i = 0; i < m_channelInstanceRegistrations.count(); i++)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            qDebug("DeviceUISet::saveMIMOChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelName));
 | 
					            qDebug("DeviceUISet::saveMIMOChannelSettings: saving channel [%s]", qPrintable(m_channelInstanceRegistrations[i].m_channelURI));
 | 
				
			||||||
            preset->addChannel(m_channelInstanceRegistrations[i].m_channelName, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
					            preset->addChannel(m_channelInstanceRegistrations[i].m_channelURI, m_channelInstanceRegistrations[i].m_gui->serialize());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@ -414,3 +425,15 @@ bool DeviceUISet::ChannelInstanceRegistration::operator<(const ChannelInstanceRe
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void DeviceUISet::handleChannelGUIClosing(ChannelGUI* channelGUI)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    for (ChannelInstanceRegistrations::iterator it = m_channelInstanceRegistrations.begin(); it != m_channelInstanceRegistrations.end(); ++it)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (it->m_gui == channelGUI)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            it->m_channelAPI->destroy();
 | 
				
			||||||
 | 
					            m_channelInstanceRegistrations.erase(it);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -18,6 +18,7 @@
 | 
				
			|||||||
#ifndef SDRGUI_DEVICE_DEVICEUISET_H_
 | 
					#ifndef SDRGUI_DEVICE_DEVICEUISET_H_
 | 
				
			||||||
#define SDRGUI_DEVICE_DEVICEUISET_H_
 | 
					#define SDRGUI_DEVICE_DEVICEUISET_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QObject>
 | 
				
			||||||
#include <QTimer>
 | 
					#include <QTimer>
 | 
				
			||||||
#include <QByteArray>
 | 
					#include <QByteArray>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -38,8 +39,9 @@ class ChannelAPI;
 | 
				
			|||||||
class ChannelGUI;
 | 
					class ChannelGUI;
 | 
				
			||||||
class Preset;
 | 
					class Preset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SDRGUI_API DeviceUISet
 | 
					class SDRGUI_API DeviceUISet : public QObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    Q_OBJECT
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
    SpectrumVis *m_spectrumVis;
 | 
					    SpectrumVis *m_spectrumVis;
 | 
				
			||||||
    GLSpectrum *m_spectrum;
 | 
					    GLSpectrum *m_spectrum;
 | 
				
			||||||
@ -72,9 +74,6 @@ public:
 | 
				
			|||||||
    void registerRxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
					    void registerRxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
				
			||||||
    void registerTxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
					    void registerTxChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
				
			||||||
    void registerChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
					    void registerChannelInstance(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI);
 | 
				
			||||||
    void removeRxChannelInstance(ChannelGUI* channelGUI);
 | 
					 | 
				
			||||||
    void removeTxChannelInstance(ChannelGUI* channelGUI);
 | 
					 | 
				
			||||||
    void removeChannelInstance(ChannelGUI* channelGUI);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // These are the number of channel types available for selection
 | 
					    // These are the number of channel types available for selection
 | 
				
			||||||
    void setNumberOfAvailableRxChannels(int number) { m_nbAvailableRxChannels = number; }
 | 
					    void setNumberOfAvailableRxChannels(int number) { m_nbAvailableRxChannels = number; }
 | 
				
			||||||
@ -87,22 +86,22 @@ public:
 | 
				
			|||||||
private:
 | 
					private:
 | 
				
			||||||
    struct ChannelInstanceRegistration
 | 
					    struct ChannelInstanceRegistration
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        QString m_channelName;
 | 
					        QString m_channelURI;
 | 
				
			||||||
        ChannelAPI *m_channelAPI;
 | 
					        ChannelAPI *m_channelAPI;
 | 
				
			||||||
        ChannelGUI* m_gui;
 | 
					        ChannelGUI* m_gui;
 | 
				
			||||||
        int m_channelType;
 | 
					        int m_channelType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ChannelInstanceRegistration() :
 | 
					        ChannelInstanceRegistration() :
 | 
				
			||||||
            m_channelName(),
 | 
					            m_channelURI(),
 | 
				
			||||||
            m_channelAPI(nullptr),
 | 
					 | 
				
			||||||
            m_gui(nullptr),
 | 
					            m_gui(nullptr),
 | 
				
			||||||
 | 
					            m_channelAPI(nullptr),
 | 
				
			||||||
            m_channelType(0)
 | 
					            m_channelType(0)
 | 
				
			||||||
        { }
 | 
					        { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ChannelInstanceRegistration(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI, int channelType) :
 | 
					        ChannelInstanceRegistration(const QString& channelName, ChannelAPI *channelAPI, ChannelGUI* channelGUI, int channelType) :
 | 
				
			||||||
            m_channelName(channelName),
 | 
					            m_channelURI(channelName),
 | 
				
			||||||
            m_channelAPI(channelAPI),
 | 
					 | 
				
			||||||
            m_gui(channelGUI),
 | 
					            m_gui(channelGUI),
 | 
				
			||||||
 | 
					            m_channelAPI(channelAPI),
 | 
				
			||||||
            m_channelType(channelType)
 | 
					            m_channelType(channelType)
 | 
				
			||||||
        { }
 | 
					        { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -118,6 +117,9 @@ private:
 | 
				
			|||||||
    int m_nbAvailableRxChannels;   //!< Number of Rx channels available for selection
 | 
					    int m_nbAvailableRxChannels;   //!< Number of Rx channels available for selection
 | 
				
			||||||
    int m_nbAvailableTxChannels;   //!< Number of Tx channels available for selection
 | 
					    int m_nbAvailableTxChannels;   //!< Number of Tx channels available for selection
 | 
				
			||||||
    int m_nbAvailableMIMOChannels; //!< Number of MIMO channels available for selection
 | 
					    int m_nbAvailableMIMOChannels; //!< Number of MIMO channels available for selection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private slots:
 | 
				
			||||||
 | 
					    void handleChannelGUIClosing(ChannelGUI* channelGUI);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -49,23 +49,11 @@ void FeatureUISet::registerFeatureInstance(const QString& featureURI, FeatureGUI
 | 
				
			|||||||
        featureGUI,
 | 
					        featureGUI,
 | 
				
			||||||
        &FeatureGUI::closing,
 | 
					        &FeatureGUI::closing,
 | 
				
			||||||
        this,
 | 
					        this,
 | 
				
			||||||
        [=](){ this->handleClosingFeatureGUI(featureGUI, feature); },
 | 
					        [=](){ this->handleClosingFeatureGUI(featureGUI); },
 | 
				
			||||||
        Qt::QueuedConnection
 | 
					        Qt::QueuedConnection
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FeatureUISet::removeFeatureInstance(FeatureGUI* featureGUI)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    for (FeatureInstanceRegistrations::iterator it = m_featureInstanceRegistrations.begin(); it != m_featureInstanceRegistrations.end(); ++it)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (it->m_gui == featureGUI)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            m_featureInstanceRegistrations.erase(it);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// sort by name
 | 
					// sort by name
 | 
				
			||||||
bool FeatureUISet::FeatureInstanceRegistration::operator<(const FeatureInstanceRegistration& other) const
 | 
					bool FeatureUISet::FeatureInstanceRegistration::operator<(const FeatureInstanceRegistration& other) const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -179,8 +167,15 @@ void FeatureUISet::saveFeatureSetSettings(FeatureSetPreset *preset)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void FeatureUISet::handleClosingFeatureGUI(FeatureGUI *featureGUI, Feature *feature)
 | 
					void FeatureUISet::handleClosingFeatureGUI(FeatureGUI *featureGUI)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    removeFeatureInstance(featureGUI);
 | 
					    for (FeatureInstanceRegistrations::iterator it = m_featureInstanceRegistrations.begin(); it != m_featureInstanceRegistrations.end(); ++it)
 | 
				
			||||||
    feature->destroy();
 | 
					    {
 | 
				
			||||||
 | 
					        if (it->m_gui == featureGUI)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            it->m_feature->destroy();
 | 
				
			||||||
 | 
					            m_featureInstanceRegistrations.erase(it);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -42,7 +42,6 @@ public:
 | 
				
			|||||||
    void addRollupWidget(QWidget *widget); //!< Add feature rollup widget to feature window
 | 
					    void addRollupWidget(QWidget *widget); //!< Add feature rollup widget to feature window
 | 
				
			||||||
    int getNumberOfFeatures() const { return m_featureInstanceRegistrations.size(); }
 | 
					    int getNumberOfFeatures() const { return m_featureInstanceRegistrations.size(); }
 | 
				
			||||||
    void registerFeatureInstance(const QString& featureURI, FeatureGUI* featureGUI, Feature *feature);
 | 
					    void registerFeatureInstance(const QString& featureURI, FeatureGUI* featureGUI, Feature *feature);
 | 
				
			||||||
    void removeFeatureInstance(FeatureGUI* featureGUI);
 | 
					 | 
				
			||||||
    void deleteFeature(int featureIndex);
 | 
					    void deleteFeature(int featureIndex);
 | 
				
			||||||
    const Feature *getFeatureAt(int featureIndex) const;
 | 
					    const Feature *getFeatureAt(int featureIndex) const;
 | 
				
			||||||
    Feature *getFeatureAt(int featureIndex);
 | 
					    Feature *getFeatureAt(int featureIndex);
 | 
				
			||||||
@ -81,7 +80,7 @@ private:
 | 
				
			|||||||
    void freeFeatures();
 | 
					    void freeFeatures();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private slots:
 | 
					private slots:
 | 
				
			||||||
    void handleClosingFeatureGUI(FeatureGUI *featureGUI, Feature *feature);
 | 
					    void handleClosingFeatureGUI(FeatureGUI *featureGUI);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // SDRGUI_FEATURE_FEATUREUISET_H_
 | 
					#endif // SDRGUI_FEATURE_FEATUREUISET_H_
 | 
				
			||||||
 | 
				
			|||||||
@ -1924,13 +1924,6 @@ void MainWindow::channelAddClicked(int channelIndex)
 | 
				
			|||||||
            pluginInterface->createRxChannel(deviceUI->m_deviceAPI, &rxChannel, &channelAPI);
 | 
					            pluginInterface->createRxChannel(deviceUI->m_deviceAPI, &rxChannel, &channelAPI);
 | 
				
			||||||
            ChannelGUI *gui = pluginInterface->createRxChannelGUI(deviceUI, rxChannel);
 | 
					            ChannelGUI *gui = pluginInterface->createRxChannelGUI(deviceUI, rxChannel);
 | 
				
			||||||
            deviceUI->registerRxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
					            deviceUI->registerRxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
				
			||||||
            QObject::connect(
 | 
					 | 
				
			||||||
                gui,
 | 
					 | 
				
			||||||
                &ChannelGUI::closing,
 | 
					 | 
				
			||||||
                this,
 | 
					 | 
				
			||||||
                [=](){ this->handleClosingRxChannelGUI(deviceUI, gui); },
 | 
					 | 
				
			||||||
                Qt::QueuedConnection
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels
 | 
					        else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -1941,13 +1934,6 @@ void MainWindow::channelAddClicked(int channelIndex)
 | 
				
			|||||||
            pluginInterface->createTxChannel(deviceUI->m_deviceAPI, &txChannel, &channelAPI);
 | 
					            pluginInterface->createTxChannel(deviceUI->m_deviceAPI, &txChannel, &channelAPI);
 | 
				
			||||||
            ChannelGUI *gui = pluginInterface->createTxChannelGUI(deviceUI, txChannel);
 | 
					            ChannelGUI *gui = pluginInterface->createTxChannelGUI(deviceUI, txChannel);
 | 
				
			||||||
            deviceUI->registerTxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
					            deviceUI->registerTxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
				
			||||||
            QObject::connect(
 | 
					 | 
				
			||||||
                gui,
 | 
					 | 
				
			||||||
                &ChannelGUI::closing,
 | 
					 | 
				
			||||||
                this,
 | 
					 | 
				
			||||||
                [=](){ this->handleClosingTxChannelGUI(deviceUI, gui); },
 | 
					 | 
				
			||||||
                Qt::QueuedConnection
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (deviceUI->m_deviceMIMOEngine) // MIMO device => all possible channels. Depends on index range
 | 
					        else if (deviceUI->m_deviceMIMOEngine) // MIMO device => all possible channels. Depends on index range
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -1965,13 +1951,6 @@ void MainWindow::channelAddClicked(int channelIndex)
 | 
				
			|||||||
                pluginInterface->createRxChannel(deviceUI->m_deviceAPI, &rxChannel, &channelAPI);
 | 
					                pluginInterface->createRxChannel(deviceUI->m_deviceAPI, &rxChannel, &channelAPI);
 | 
				
			||||||
                ChannelGUI *gui = pluginInterface->createRxChannelGUI(deviceUI, rxChannel);
 | 
					                ChannelGUI *gui = pluginInterface->createRxChannelGUI(deviceUI, rxChannel);
 | 
				
			||||||
                deviceUI->registerRxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
					                deviceUI->registerRxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
				
			||||||
                QObject::connect(
 | 
					 | 
				
			||||||
                    gui,
 | 
					 | 
				
			||||||
                    &ChannelGUI::closing,
 | 
					 | 
				
			||||||
                    this,
 | 
					 | 
				
			||||||
                    [=](){ this->handleClosingRxChannelGUI(deviceUI, gui); },
 | 
					 | 
				
			||||||
                    Qt::QueuedConnection
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (channelIndex < nbRxChannels + nbTxChannels)
 | 
					            else if (channelIndex < nbRxChannels + nbTxChannels)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -1982,13 +1961,6 @@ void MainWindow::channelAddClicked(int channelIndex)
 | 
				
			|||||||
                pluginInterface->createTxChannel(deviceUI->m_deviceAPI, &txChannel, &channelAPI);
 | 
					                pluginInterface->createTxChannel(deviceUI->m_deviceAPI, &txChannel, &channelAPI);
 | 
				
			||||||
                ChannelGUI *gui = pluginInterface->createTxChannelGUI(deviceUI, txChannel);
 | 
					                ChannelGUI *gui = pluginInterface->createTxChannelGUI(deviceUI, txChannel);
 | 
				
			||||||
                deviceUI->registerTxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
					                deviceUI->registerTxChannelInstance(channelAPI->getURI(), channelAPI, gui);
 | 
				
			||||||
                QObject::connect(
 | 
					 | 
				
			||||||
                    gui,
 | 
					 | 
				
			||||||
                    &ChannelGUI::closing,
 | 
					 | 
				
			||||||
                    this,
 | 
					 | 
				
			||||||
                    [=](){ this->handleClosingTxChannelGUI(deviceUI, gui); },
 | 
					 | 
				
			||||||
                    Qt::QueuedConnection
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -2177,18 +2149,3 @@ void MainWindow::commandKeyPressed(Qt::Key key, Qt::KeyboardModifiers keyModifie
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void MainWindow::handleClosingRxChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    deviceUISet->removeRxChannelInstance(gui);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void MainWindow::handleClosingTxChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    deviceUISet->removeTxChannelInstance(gui);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void MainWindow::handleClosingMIMOChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    deviceUISet->removeChannelInstance(gui);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -533,9 +533,6 @@ private slots:
 | 
				
			|||||||
	void tabInputViewIndexChanged();
 | 
						void tabInputViewIndexChanged();
 | 
				
			||||||
    void tabChannelsIndexChanged();
 | 
					    void tabChannelsIndexChanged();
 | 
				
			||||||
	void commandKeyPressed(Qt::Key key, Qt::KeyboardModifiers keyModifiers, bool release);
 | 
						void commandKeyPressed(Qt::Key key, Qt::KeyboardModifiers keyModifiers, bool release);
 | 
				
			||||||
    void handleClosingRxChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui);
 | 
					 | 
				
			||||||
    void handleClosingTxChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui);
 | 
					 | 
				
			||||||
    void handleClosingMIMOChannelGUI(DeviceUISet *deviceUISet, ChannelGUI *gui);
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // INCLUDE_MAINWINDOW_H
 | 
					#endif // INCLUDE_MAINWINDOW_H
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user