mirror of https://github.com/f4exb/sdrangel.git
Multiple sources in preset. Interim state #1
This commit is contained in:
parent
fa79c55f41
commit
51914b4767
|
@ -108,7 +108,7 @@ set(sdrbase_SOURCES
|
||||||
|
|
||||||
sdrbase/settings/preferences.cpp
|
sdrbase/settings/preferences.cpp
|
||||||
sdrbase/settings/preset.cpp
|
sdrbase/settings/preset.cpp
|
||||||
sdrbase/settings/settings.cpp
|
sdrbase/settings/mainsettings.cpp
|
||||||
|
|
||||||
sdrbase/util/message.cpp
|
sdrbase/util/message.cpp
|
||||||
sdrbase/util/messagequeue.cpp
|
sdrbase/util/messagequeue.cpp
|
||||||
|
@ -186,7 +186,7 @@ set(sdrbase_HEADERS
|
||||||
|
|
||||||
include-gpl/settings/preferences.h
|
include-gpl/settings/preferences.h
|
||||||
include-gpl/settings/preset.h
|
include-gpl/settings/preset.h
|
||||||
include-gpl/settings/settings.h
|
include-gpl/settings/mainsettings.h
|
||||||
|
|
||||||
include/util/export.h
|
include/util/export.h
|
||||||
include/util/message.h
|
include/util/message.h
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include "settings/settings.h"
|
#include "settings/mainsettings.h"
|
||||||
#include "util/messagequeue.h"
|
#include "util/messagequeue.h"
|
||||||
#include "util/export.h"
|
#include "util/export.h"
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ private:
|
||||||
|
|
||||||
MessageQueue m_inputMessageQueue;
|
MessageQueue m_inputMessageQueue;
|
||||||
|
|
||||||
Settings m_settings;
|
MainSettings m_settings;
|
||||||
|
|
||||||
SpectrumVis* m_spectrumVis;
|
SpectrumVis* m_spectrumVis;
|
||||||
FileSink *m_fileSink;
|
FileSink *m_fileSink;
|
||||||
|
|
|
@ -55,7 +55,7 @@ public:
|
||||||
bool handleMessage(const Message& message);
|
bool handleMessage(const Message& message);
|
||||||
|
|
||||||
void updateSampleSourceDevices();
|
void updateSampleSourceDevices();
|
||||||
void fillSampleSourceSelector(QComboBox* comboBox);
|
int fillSampleSourceSelector(QComboBox* comboBox);
|
||||||
int selectSampleSource(int index);
|
int selectSampleSource(int index);
|
||||||
int selectFirstSampleSource(const QString& sourceId);
|
int selectFirstSampleSource(const QString& sourceId);
|
||||||
int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence);
|
int selectSampleSourceBySerialOrSequence(const QString& sourceId, const QString& sourceSerial, int sourceSequence);
|
||||||
|
|
|
@ -15,6 +15,8 @@ public:
|
||||||
const QString& getSourceType() const { return m_sourceType; }
|
const QString& getSourceType() const { return m_sourceType; }
|
||||||
void setSourceDevice(const QString& value) { m_sourceDevice= value; }
|
void setSourceDevice(const QString& value) { m_sourceDevice= value; }
|
||||||
const QString& getSourceDevice() const { return m_sourceDevice; }
|
const QString& getSourceDevice() const { return m_sourceDevice; }
|
||||||
|
void setSourceIndex(const int value) { m_sourceIndex = value; }
|
||||||
|
int getSourceIndex() const { return m_sourceIndex; }
|
||||||
|
|
||||||
void setAudioType(const QString& value) { m_audioType = value; }
|
void setAudioType(const QString& value) { m_audioType = value; }
|
||||||
const QString& getAudioType() const { return m_audioType; }
|
const QString& getAudioType() const { return m_audioType; }
|
||||||
|
@ -24,6 +26,7 @@ public:
|
||||||
protected:
|
protected:
|
||||||
QString m_sourceType;
|
QString m_sourceType;
|
||||||
QString m_sourceDevice;
|
QString m_sourceDevice;
|
||||||
|
int m_sourceIndex;
|
||||||
|
|
||||||
QString m_audioType;
|
QString m_audioType;
|
||||||
QString m_audioDevice;
|
QString m_audioDevice;
|
||||||
|
|
|
@ -61,15 +61,17 @@ public:
|
||||||
int getChannelCount() const { return m_channelConfigs.count(); }
|
int getChannelCount() const { return m_channelConfigs.count(); }
|
||||||
const ChannelConfig& getChannelConfig(int index) const { return m_channelConfigs.at(index); }
|
const ChannelConfig& getChannelConfig(int index) const { return m_channelConfigs.at(index); }
|
||||||
|
|
||||||
/*
|
|
||||||
void setSourceConfig(const QString& sourceId, const QString& sourceSerial, int sourceSequence, const QByteArray& config)
|
void setSourceConfig(const QString& sourceId, const QString& sourceSerial, int sourceSequence, const QByteArray& config)
|
||||||
{
|
{
|
||||||
|
addOrUpdateSourceConfig(sourceId, sourceSerial, sourceSequence, config);
|
||||||
|
/*
|
||||||
m_sourceId = sourceId;
|
m_sourceId = sourceId;
|
||||||
m_sourceSerial = sourceSerial;
|
m_sourceSerial = sourceSerial;
|
||||||
m_sourceSequence = sourceSequence;
|
m_sourceSequence = sourceSequence;
|
||||||
m_sourceConfig = config;
|
m_sourceConfig = config;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
const QString& getSourceId() const { return m_sourceId; }
|
const QString& getSourceId() const { return m_sourceId; }
|
||||||
const QString& getSourceSerial() const { return m_sourceSerial; }
|
const QString& getSourceSerial() const { return m_sourceSerial; }
|
||||||
const int getSourceSequence() const { return m_sourceSequence; }
|
const int getSourceSequence() const { return m_sourceSequence; }
|
||||||
|
@ -84,8 +86,6 @@ public:
|
||||||
const QString& sourceSerial,
|
const QString& sourceSerial,
|
||||||
int sourceSequence);
|
int sourceSequence);
|
||||||
|
|
||||||
const QByteArray* findCurrentSourceConfig(QString& sourceId, QString& sourceSerial, int& sourceSequence) const;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// group and preset description
|
// group and preset description
|
||||||
QString m_group;
|
QString m_group;
|
||||||
|
@ -110,7 +110,6 @@ protected:
|
||||||
|
|
||||||
// sources and configurations
|
// sources and configurations
|
||||||
SourceConfigs m_sourceConfigs;
|
SourceConfigs m_sourceConfigs;
|
||||||
SourceConfigs::const_iterator m_currentSourceConfig;
|
|
||||||
|
|
||||||
// screen and dock layout
|
// screen and dock layout
|
||||||
QByteArray m_layout;
|
QByteArray m_layout;
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
#ifndef INCLUDE_SETTINGS_H
|
|
||||||
#define INCLUDE_SETTINGS_H
|
|
||||||
|
|
||||||
#include <QString>
|
|
||||||
#include "preferences.h"
|
|
||||||
#include "preset.h"
|
|
||||||
|
|
||||||
class Settings {
|
|
||||||
public:
|
|
||||||
Settings();
|
|
||||||
~Settings();
|
|
||||||
|
|
||||||
void load();
|
|
||||||
void save() const;
|
|
||||||
|
|
||||||
void resetToDefaults();
|
|
||||||
|
|
||||||
Preset* newPreset(const QString& group, const QString& description);
|
|
||||||
void deletePreset(const Preset* preset);
|
|
||||||
int getPresetCount() const { return m_presets.count(); }
|
|
||||||
const Preset* getPreset(int index) const { return m_presets[index]; }
|
|
||||||
|
|
||||||
Preset* getCurrent() { return &m_current; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
Preferences m_preferences;
|
|
||||||
Preset m_current;
|
|
||||||
typedef QList<Preset*> Presets;
|
|
||||||
Presets m_presets;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // INCLUDE_SETTINGS_H
|
|
|
@ -98,7 +98,7 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||||
m_pluginManager->loadPlugins();
|
m_pluginManager->loadPlugins();
|
||||||
|
|
||||||
bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
||||||
m_pluginManager->fillSampleSourceSelector(ui->sampleSource);
|
int nbSources = m_pluginManager->fillSampleSourceSelector(ui->sampleSource);
|
||||||
ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
||||||
|
|
||||||
m_spectrumVis = new SpectrumVis(ui->glSpectrum);
|
m_spectrumVis = new SpectrumVis(ui->glSpectrum);
|
||||||
|
@ -115,32 +115,23 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||||
|
|
||||||
qDebug() << "MainWindow::MainWindow: select SampleSource from settings...";
|
qDebug() << "MainWindow::MainWindow: select SampleSource from settings...";
|
||||||
|
|
||||||
Preset *currentPreset = m_settings.getCurrent();
|
int sampleSourceIndex = m_settings.getSourceIndex();
|
||||||
|
|
||||||
if (currentPreset != 0)
|
if(sampleSourceIndex >= nbSources)
|
||||||
{
|
{
|
||||||
QString sourceId, sourceSerial;
|
sampleSourceIndex = 0;
|
||||||
int sourceSequence;
|
}
|
||||||
const QByteArray *sourceConfig;
|
|
||||||
|
|
||||||
sourceConfig = currentPreset->findCurrentSourceConfig(sourceId, sourceSerial, sourceSequence);
|
if (nbSources > 0)
|
||||||
|
{
|
||||||
if (sourceConfig != 0)
|
//bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
||||||
{
|
ui->sampleSource->setCurrentIndex(sampleSourceIndex);
|
||||||
int sampleSourceIndex = m_pluginManager->selectSampleSourceBySerialOrSequence(sourceId, sourceSerial, sourceSequence); // select SampleSource from settings
|
//ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
||||||
|
|
||||||
if(sampleSourceIndex >= 0)
|
|
||||||
{
|
|
||||||
bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
|
||||||
ui->sampleSource->setCurrentIndex(sampleSourceIndex);
|
|
||||||
ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "MainWindow::MainWindow: load current preset settings...";
|
qDebug() << "MainWindow::MainWindow: load current preset settings...";
|
||||||
|
|
||||||
loadPresetSettings(m_settings.getCurrent());
|
loadPresetSettings(m_settings.getWorkingPreset());
|
||||||
|
|
||||||
qDebug() << "MainWindow::MainWindow: apply settings...";
|
qDebug() << "MainWindow::MainWindow: apply settings...";
|
||||||
|
|
||||||
|
@ -222,12 +213,9 @@ void MainWindow::loadSettings()
|
||||||
|
|
||||||
void MainWindow::loadPresetSettings(Preset* preset)
|
void MainWindow::loadPresetSettings(Preset* preset)
|
||||||
{
|
{
|
||||||
qDebug("MainWindow::loadPresetSettings: group: %s desc: %s Fcenter: %llu Hz",
|
qDebug("MainWindow::loadPresetSettings: preset [%s | %s]",
|
||||||
qPrintable(preset->getGroup()),
|
qPrintable(preset->getGroup()),
|
||||||
qPrintable(preset->getDescription()),
|
qPrintable(preset->getDescription()));
|
||||||
preset->getCenterFrequency());
|
|
||||||
|
|
||||||
ui->glSpectrumGUI->deserialize(preset->getSpectrumConfig());
|
|
||||||
|
|
||||||
m_pluginManager->loadSettings(preset);
|
m_pluginManager->loadSettings(preset);
|
||||||
|
|
||||||
|
@ -239,20 +227,17 @@ void MainWindow::saveSettings()
|
||||||
{
|
{
|
||||||
qDebug() << "MainWindow::saveSettings";
|
qDebug() << "MainWindow::saveSettings";
|
||||||
|
|
||||||
savePresetSettings(m_settings.getCurrent());
|
savePresetSettings(m_settings.getWorkingPreset());
|
||||||
m_settings.save();
|
m_settings.save();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::savePresetSettings(Preset* preset)
|
void MainWindow::savePresetSettings(Preset* preset)
|
||||||
{
|
{
|
||||||
qDebug("MainWindow::savePresetSettings: group: %s desc: %s Fcenter: %llu Hz",
|
qDebug("MainWindow::savePresetSettings: preset [%s | %s]",
|
||||||
qPrintable(preset->getGroup()),
|
qPrintable(preset->getGroup()),
|
||||||
qPrintable(preset->getDescription()),
|
qPrintable(preset->getDescription()));
|
||||||
preset->getCenterFrequency());
|
|
||||||
|
|
||||||
preset->setSpectrumConfig(ui->glSpectrumGUI->serialize());
|
|
||||||
preset->clearChannels();
|
|
||||||
m_pluginManager->saveSettings(preset);
|
m_pluginManager->saveSettings(preset);
|
||||||
|
|
||||||
preset->setLayout(saveState());
|
preset->setLayout(saveState());
|
||||||
|
@ -571,7 +556,10 @@ void MainWindow::on_action_Preferences_triggered()
|
||||||
|
|
||||||
void MainWindow::on_sampleSource_currentIndexChanged(int index)
|
void MainWindow::on_sampleSource_currentIndexChanged(int index)
|
||||||
{
|
{
|
||||||
|
savePresetSettings(m_settings.getWorkingPreset());
|
||||||
m_pluginManager->selectSampleSource(ui->sampleSource->currentIndex());
|
m_pluginManager->selectSampleSource(ui->sampleSource->currentIndex());
|
||||||
|
m_settings.setSourceIndex(ui->sampleSource->currentIndex());
|
||||||
|
m_pluginManager->loadSettings(m_settings.getWorkingPreset());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_action_About_triggered()
|
void MainWindow::on_action_About_triggered()
|
||||||
|
|
|
@ -264,11 +264,13 @@ void PluginManager::updateSampleSourceDevices()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginManager::fillSampleSourceSelector(QComboBox* comboBox)
|
int PluginManager::fillSampleSourceSelector(QComboBox* comboBox)
|
||||||
{
|
{
|
||||||
comboBox->clear();
|
comboBox->clear();
|
||||||
for(int i = 0; i < m_sampleSourceDevices.count(); i++)
|
int i;
|
||||||
|
for(i = 0; i < m_sampleSourceDevices.count(); i++)
|
||||||
comboBox->addItem(m_sampleSourceDevices[i].m_displayName, i);
|
comboBox->addItem(m_sampleSourceDevices[i].m_displayName, i);
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PluginManager::selectSampleSource(int index)
|
int PluginManager::selectSampleSource(int index)
|
||||||
|
|
|
@ -21,6 +21,7 @@ QByteArray Preferences::serialize() const
|
||||||
s.writeString(2, m_sourceDevice);
|
s.writeString(2, m_sourceDevice);
|
||||||
s.writeString(3, m_audioType);
|
s.writeString(3, m_audioType);
|
||||||
s.writeString(4, m_audioDevice);
|
s.writeString(4, m_audioDevice);
|
||||||
|
s.writeS32(5, m_sourceIndex);
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ bool Preferences::deserialize(const QByteArray& data)
|
||||||
d.readString(2, &m_sourceDevice);
|
d.readString(2, &m_sourceDevice);
|
||||||
d.readString(3, &m_audioType);
|
d.readString(3, &m_audioType);
|
||||||
d.readString(4, &m_audioDevice);
|
d.readString(4, &m_audioDevice);
|
||||||
|
d.readS32(5, &m_sourceIndex);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
resetToDefaults();
|
resetToDefaults();
|
||||||
|
|
|
@ -19,12 +19,11 @@ void Preset::resetToDefaults()
|
||||||
m_channelConfigs.clear();
|
m_channelConfigs.clear();
|
||||||
m_sourceId.clear();
|
m_sourceId.clear();
|
||||||
m_sourceConfig.clear();
|
m_sourceConfig.clear();
|
||||||
m_currentSourceConfig = m_sourceConfigs.end();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray Preset::serialize() const
|
QByteArray Preset::serialize() const
|
||||||
{
|
{
|
||||||
qDebug("Preset::serialize: m_group: %s m_description: %s m_centerFrequency: %llu",
|
qDebug("Preset::serialize: m_group: %s m_description: %s m_centerFrequency: %llu",
|
||||||
qPrintable(m_group),
|
qPrintable(m_group),
|
||||||
qPrintable(m_description),
|
qPrintable(m_description),
|
||||||
m_centerFrequency);
|
m_centerFrequency);
|
||||||
|
@ -35,23 +34,9 @@ QByteArray Preset::serialize() const
|
||||||
s.writeString(2, m_description);
|
s.writeString(2, m_description);
|
||||||
s.writeU64(3, m_centerFrequency);
|
s.writeU64(3, m_centerFrequency);
|
||||||
s.writeBlob(4, m_layout);
|
s.writeBlob(4, m_layout);
|
||||||
s.writeBlob(5, m_spectrumConfig);
|
|
||||||
|
|
||||||
s.writeS32(20, m_sourceConfigs.size());
|
s.writeS32(20, m_sourceConfigs.size());
|
||||||
|
|
||||||
if ( m_currentSourceConfig == m_sourceConfigs.end())
|
|
||||||
{
|
|
||||||
s.writeBool(21, false); // no current source available
|
|
||||||
s.writeString(22, "");
|
|
||||||
s.writeS32(23, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
s.writeBool(21, true); // current source available
|
|
||||||
s.writeString(22, m_currentSourceConfig->m_sourceId);
|
|
||||||
s.writeS32(23, m_currentSourceConfig->m_sourceSequence);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < m_sourceConfigs.size(); i++)
|
for (int i = 0; i < m_sourceConfigs.size(); i++)
|
||||||
{
|
{
|
||||||
s.writeString(24 + i*4, m_sourceConfigs[i].m_sourceId);
|
s.writeString(24 + i*4, m_sourceConfigs[i].m_sourceId);
|
||||||
|
@ -59,20 +44,17 @@ QByteArray Preset::serialize() const
|
||||||
s.writeS32(26 + i*4, m_sourceConfigs[i].m_sourceSequence);
|
s.writeS32(26 + i*4, m_sourceConfigs[i].m_sourceSequence);
|
||||||
s.writeBlob(27 + i*4, m_sourceConfigs[i].m_config);
|
s.writeBlob(27 + i*4, m_sourceConfigs[i].m_config);
|
||||||
|
|
||||||
|
qDebug("Preset::serialize: source: id: %ss, ser: %s, seq: %d",
|
||||||
|
qPrintable(m_sourceConfigs[i].m_sourceId),
|
||||||
|
qPrintable(m_sourceConfigs[i].m_sourceSerial),
|
||||||
|
m_sourceConfigs[i].m_sourceSequence);
|
||||||
|
|
||||||
if (i >= (200-23)/4) // full!
|
if (i >= (200-23)/4) // full!
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s.writeS32(200, m_channelConfigs.size());
|
|
||||||
|
|
||||||
for(int i = 0; i < m_channelConfigs.size(); i++)
|
|
||||||
{
|
|
||||||
s.writeString(201 + i * 2, m_channelConfigs[i].m_channel);
|
|
||||||
s.writeBlob(202 + i * 2, m_channelConfigs[i].m_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,19 +62,18 @@ bool Preset::deserialize(const QByteArray& data)
|
||||||
{
|
{
|
||||||
SimpleDeserializer d(data);
|
SimpleDeserializer d(data);
|
||||||
|
|
||||||
if(!d.isValid()) {
|
if (!d.isValid())
|
||||||
|
{
|
||||||
resetToDefaults();
|
resetToDefaults();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(d.getVersion() == 1) {
|
if (d.getVersion() == 1)
|
||||||
|
{
|
||||||
d.readString(1, &m_group, "default");
|
d.readString(1, &m_group, "default");
|
||||||
d.readString(2, &m_description, "no name");
|
d.readString(2, &m_description, "no name");
|
||||||
d.readU64(3, &m_centerFrequency, 0);
|
d.readU64(3, &m_centerFrequency, 0);
|
||||||
d.readBlob(4, &m_layout);
|
d.readBlob(4, &m_layout);
|
||||||
d.readBlob(5, &m_spectrumConfig);
|
|
||||||
d.readString(6, &m_sourceId);
|
|
||||||
d.readBlob(7, &m_sourceConfig);
|
|
||||||
|
|
||||||
qDebug("Preset::deserialize: m_group: %s m_description: %s m_centerFrequency: %llu",
|
qDebug("Preset::deserialize: m_group: %s m_description: %s m_centerFrequency: %llu",
|
||||||
qPrintable(m_group),
|
qPrintable(m_group),
|
||||||
|
@ -102,54 +83,33 @@ bool Preset::deserialize(const QByteArray& data)
|
||||||
qint32 sourcesCount = 0;
|
qint32 sourcesCount = 0;
|
||||||
d.readS32(20, &sourcesCount, 0);
|
d.readS32(20, &sourcesCount, 0);
|
||||||
|
|
||||||
if (sourcesCount >= (200-20)/4) // limit was hit!
|
if (sourcesCount >= (200-23)/4) // limit was hit!
|
||||||
{
|
{
|
||||||
sourcesCount = ((200-20)/4) - 1;
|
sourcesCount = ((200-23)/4) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasCurrentConfig;
|
|
||||||
QString currentSourceId;
|
|
||||||
int currentSourceSequence;
|
|
||||||
m_currentSourceConfig = m_sourceConfigs.end();
|
|
||||||
|
|
||||||
d.readBool(21, &hasCurrentConfig, false);
|
|
||||||
d.readString(22, ¤tSourceId, QString::null);
|
|
||||||
d.readS32(23, ¤tSourceSequence);
|
|
||||||
|
|
||||||
for(int i = 0; i < sourcesCount; i++)
|
for(int i = 0; i < sourcesCount; i++)
|
||||||
{
|
{
|
||||||
QString sourceId, sourceSerial;
|
QString sourceId, sourceSerial;
|
||||||
int sourceSequence;
|
int sourceSequence;
|
||||||
QByteArray sourceConfig;
|
QByteArray sourceConfig;
|
||||||
|
|
||||||
d.readString(21 + i*4, &sourceId, "");
|
d.readString(24 + i*4, &sourceId, "");
|
||||||
d.readString(22 + i*4, &sourceSerial, "");
|
d.readString(25 + i*4, &sourceSerial, "");
|
||||||
d.readS32(23 + i*4, &sourceSequence, 0);
|
d.readS32(26 + i*4, &sourceSequence, 0);
|
||||||
d.readBlob(24 + i*4, &sourceConfig);
|
d.readBlob(27 + i*4, &sourceConfig);
|
||||||
|
|
||||||
m_sourceConfigs.append(SourceConfig(sourceId, sourceSerial, sourceSequence, sourceConfig));
|
if (!sourceId.isEmpty())
|
||||||
|
|
||||||
if (hasCurrentConfig && (sourceId == currentSourceId) && (sourceSequence == currentSourceSequence))
|
|
||||||
{
|
{
|
||||||
m_currentSourceConfig = m_sourceConfigs.end();
|
qDebug("Preset::deserialize: source: id: %ss, ser: %s, seq: %d",
|
||||||
m_currentSourceConfig--;
|
qPrintable(sourceId),
|
||||||
|
qPrintable(sourceSerial),
|
||||||
|
sourceSequence);
|
||||||
|
|
||||||
|
m_sourceConfigs.append(SourceConfig(sourceId, sourceSerial, sourceSequence, sourceConfig));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qint32 channelCount = 0;
|
|
||||||
d.readS32(200, &channelCount, 0);
|
|
||||||
|
|
||||||
for(int i = 0; i < channelCount; i++)
|
|
||||||
{
|
|
||||||
QString channel;
|
|
||||||
QByteArray config;
|
|
||||||
|
|
||||||
d.readString(201 + i * 2, &channel, "unknown-channel");
|
|
||||||
d.readBlob(202 + i * 2, &config);
|
|
||||||
|
|
||||||
m_channelConfigs.append(ChannelConfig(channel, config));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -190,13 +150,10 @@ void Preset::addOrUpdateSourceConfig(const QString& sourceId,
|
||||||
if (it == m_sourceConfigs.end())
|
if (it == m_sourceConfigs.end())
|
||||||
{
|
{
|
||||||
m_sourceConfigs.append(SourceConfig(sourceId, sourceSerial, sourceSequence, config));
|
m_sourceConfigs.append(SourceConfig(sourceId, sourceSerial, sourceSequence, config));
|
||||||
m_currentSourceConfig = m_sourceConfigs.end();
|
|
||||||
--m_currentSourceConfig;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
it->m_config = config;
|
it->m_config = config;
|
||||||
m_currentSourceConfig = it;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,41 +200,22 @@ const QByteArray* Preset::findBestSourceConfig(const QString& sourceId,
|
||||||
if (itMatchSequence != m_sourceConfigs.end()) // match sequence ?
|
if (itMatchSequence != m_sourceConfigs.end()) // match sequence ?
|
||||||
{
|
{
|
||||||
qDebug("Preset::findBestSourceConfig: sequence matched: id: %s seq: %d", qPrintable(it->m_sourceId), it->m_sourceSequence);
|
qDebug("Preset::findBestSourceConfig: sequence matched: id: %s seq: %d", qPrintable(it->m_sourceId), it->m_sourceSequence);
|
||||||
m_currentSourceConfig = itMatchSequence;
|
|
||||||
return &(itMatchSequence->m_config);
|
return &(itMatchSequence->m_config);
|
||||||
}
|
}
|
||||||
else if (itFirstOfKind != m_sourceConfigs.end()) // match source type ?
|
else if (itFirstOfKind != m_sourceConfigs.end()) // match source type ?
|
||||||
{
|
{
|
||||||
qDebug("Preset::findBestSourceConfig: first of kind matched: id: %s", qPrintable(it->m_sourceId));
|
qDebug("Preset::findBestSourceConfig: first of kind matched: id: %s", qPrintable(it->m_sourceId));
|
||||||
m_currentSourceConfig = itFirstOfKind;
|
|
||||||
return &(itFirstOfKind->m_config);
|
return &(itFirstOfKind->m_config);
|
||||||
}
|
}
|
||||||
else // definitely not found !
|
else // definitely not found !
|
||||||
{
|
{
|
||||||
qDebug("Preset::findBestSourceConfig: no match");
|
qDebug("Preset::findBestSourceConfig: no match");
|
||||||
m_currentSourceConfig = m_sourceConfigs.end();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // exact match
|
else // exact match
|
||||||
{
|
{
|
||||||
qDebug("Preset::findBestSourceConfig: serial matched (exact): id: %s ser: %d", qPrintable(it->m_sourceId), qPrintable(it->m_sourceSerial));
|
qDebug("Preset::findBestSourceConfig: serial matched (exact): id: %s ser: %s", qPrintable(it->m_sourceId), qPrintable(it->m_sourceSerial));
|
||||||
m_currentSourceConfig = it;
|
|
||||||
return &(it->m_config);
|
return &(it->m_config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const QByteArray* Preset::findCurrentSourceConfig(QString& sourceId, QString& sourceSerial, int& sourceSequence) const
|
|
||||||
{
|
|
||||||
if (m_currentSourceConfig == m_sourceConfigs.end())
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sourceId = m_currentSourceConfig->m_sourceId;
|
|
||||||
sourceSerial = m_currentSourceConfig->m_sourceSerial;
|
|
||||||
sourceSequence = m_currentSourceConfig->m_sourceSequence;
|
|
||||||
return &m_currentSourceConfig->m_config;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
#include <QSettings>
|
|
||||||
#include <QStringList>
|
|
||||||
#include "settings/settings.h"
|
|
||||||
|
|
||||||
Settings::Settings()
|
|
||||||
{
|
|
||||||
resetToDefaults();
|
|
||||||
}
|
|
||||||
|
|
||||||
Settings::~Settings()
|
|
||||||
{
|
|
||||||
for(int i = 0; i < m_presets.count(); ++i)
|
|
||||||
delete m_presets[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
void Settings::load()
|
|
||||||
{
|
|
||||||
QSettings s;
|
|
||||||
|
|
||||||
m_preferences.deserialize(qUncompress(QByteArray::fromBase64(s.value("preferences").toByteArray())));
|
|
||||||
m_current.deserialize(qUncompress(QByteArray::fromBase64(s.value("current").toByteArray())));
|
|
||||||
|
|
||||||
QStringList groups = s.childGroups();
|
|
||||||
for(int i = 0; i < groups.size(); ++i) {
|
|
||||||
if(groups[i].startsWith("preset")) {
|
|
||||||
s.beginGroup(groups[i]);
|
|
||||||
Preset* preset = new Preset;
|
|
||||||
if(preset->deserialize(qUncompress(QByteArray::fromBase64(s.value("data").toByteArray()))))
|
|
||||||
m_presets.append(preset);
|
|
||||||
else delete preset;
|
|
||||||
s.endGroup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Settings::save() const
|
|
||||||
{
|
|
||||||
QSettings s;
|
|
||||||
|
|
||||||
s.setValue("preferences", qCompress(m_preferences.serialize()).toBase64());
|
|
||||||
s.setValue("current", qCompress(m_current.serialize()).toBase64());
|
|
||||||
|
|
||||||
QStringList groups = s.childGroups();
|
|
||||||
for(int i = 0; i < groups.size(); ++i) {
|
|
||||||
if(groups[i].startsWith("preset"))
|
|
||||||
s.remove(groups[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i = 0; i < m_presets.count(); ++i) {
|
|
||||||
QString group = QString("preset-%1").arg(i + 1);
|
|
||||||
s.beginGroup(group);
|
|
||||||
s.setValue("data", qCompress(m_presets[i]->serialize()).toBase64());
|
|
||||||
s.endGroup();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Settings::resetToDefaults()
|
|
||||||
{
|
|
||||||
m_preferences.resetToDefaults();
|
|
||||||
m_current.resetToDefaults();
|
|
||||||
}
|
|
||||||
|
|
||||||
Preset* Settings::newPreset(const QString& group, const QString& description)
|
|
||||||
{
|
|
||||||
Preset* preset = new Preset();
|
|
||||||
preset->setGroup(group);
|
|
||||||
preset->setDescription(description);
|
|
||||||
m_presets.append(preset);
|
|
||||||
return preset;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Settings::deletePreset(const Preset* preset)
|
|
||||||
{
|
|
||||||
m_presets.removeAll((Preset*)preset);
|
|
||||||
delete (Preset*)preset;
|
|
||||||
}
|
|
Loading…
Reference in New Issue