Added button and logic to update an existing preset with the current configuration

This commit is contained in:
f4exb 2015-05-09 10:51:02 +02:00
parent 31fb81c66a
commit f07934cc80
10 changed files with 136 additions and 31 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
CMakeLists.txt.user* CMakeLists.txt.user*
build/* build/*
LOCAL/* LOCAL/*
.cproject
.project

View File

@ -16,6 +16,8 @@ public:
QString group() const; QString group() const;
QString description() const; QString description() const;
void setGroup(QString& group);
void setDescription(QString& description);
private: private:
enum Audio { enum Audio {

View File

@ -48,7 +48,7 @@ class SDRANGELOVE_API MainWindow : public QMainWindow {
Q_OBJECT Q_OBJECT
public: public:
explicit MainWindow(QWidget* parent = NULL); explicit MainWindow(QWidget* parent = 0);
~MainWindow(); ~MainWindow();
MessageQueue* getMessageQueue() { return m_messageQueue; } MessageQueue* getMessageQueue() { return m_messageQueue; }
@ -121,6 +121,7 @@ private slots:
void on_iqImbalance_toggled(bool checked); void on_iqImbalance_toggled(bool checked);
void on_action_View_Fullscreen_toggled(bool checked); void on_action_View_Fullscreen_toggled(bool checked);
void on_presetSave_clicked(); void on_presetSave_clicked();
void on_presetUpdate_clicked();
void on_presetLoad_clicked(); void on_presetLoad_clicked();
void on_presetDelete_clicked(); void on_presetDelete_clicked();
void on_presetTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous); void on_presetTree_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);

View File

@ -93,6 +93,7 @@ protected:
QByteArray m_layout; QByteArray m_layout;
}; };
Q_DECLARE_METATYPE(const Preset*) Q_DECLARE_METATYPE(const Preset*);
Q_DECLARE_METATYPE(Preset*);
#endif // INCLUDE_PRESET_H #endif // INCLUDE_PRESET_H

View File

@ -24,3 +24,13 @@ QString AddPresetDialog::description() const
{ {
return ui->description->text(); return ui->description->text();
} }
void AddPresetDialog::setGroup(QString& group)
{
ui->group->lineEdit()->setText(group);
}
void AddPresetDialog::setDescription(QString& description)
{
ui->description->setText(description);
}

View File

@ -45,8 +45,8 @@ MainWindow::MainWindow(QWidget* parent) :
m_dspEngine(new DSPEngine(m_messageQueue)), m_dspEngine(new DSPEngine(m_messageQueue)),
m_lastEngineState((DSPEngine::State)-1), m_lastEngineState((DSPEngine::State)-1),
m_startOsmoSDRUpdateAfterStop(false), m_startOsmoSDRUpdateAfterStop(false),
m_scopeWindow(NULL), m_scopeWindow(0),
m_inputGUI(NULL), m_inputGUI(0),
m_sampleRate(0), m_sampleRate(0),
m_centerFrequency(0), m_centerFrequency(0),
m_pluginManager(new PluginManager(this, m_dspEngine)) m_pluginManager(new PluginManager(this, m_dspEngine))
@ -122,9 +122,9 @@ MainWindow::~MainWindow()
m_dspEngine->removeSink(m_spectrumVis); m_dspEngine->removeSink(m_spectrumVis);
delete m_spectrumVis; delete m_spectrumVis;
if(m_scopeWindow != NULL) { if(m_scopeWindow != 0) {
delete m_scopeWindow; delete m_scopeWindow;
m_scopeWindow = NULL; m_scopeWindow = 0;
} }
delete m_pluginManager; delete m_pluginManager;
@ -165,9 +165,9 @@ void MainWindow::removeChannelMarker(ChannelMarker* channelMarker)
void MainWindow::setInputGUI(QWidget* gui) void MainWindow::setInputGUI(QWidget* gui)
{ {
if(m_inputGUI != NULL) if(m_inputGUI != 0)
ui->inputDock->widget()->layout()->removeWidget(m_inputGUI); ui->inputDock->widget()->layout()->removeWidget(m_inputGUI);
if(gui != NULL) if(gui != 0)
ui->inputDock->widget()->layout()->addWidget(gui); ui->inputDock->widget()->layout()->addWidget(gui);
m_inputGUI = gui; m_inputGUI = gui;
} }
@ -251,14 +251,14 @@ void MainWindow::updateSampleRate()
{ {
ui->glSpectrum->setSampleRate(m_sampleRate); ui->glSpectrum->setSampleRate(m_sampleRate);
m_sampleRateWidget->setText(tr("Rate: %1 kHz").arg((float)m_sampleRate / 1000)); m_sampleRateWidget->setText(tr("Rate: %1 kHz").arg((float)m_sampleRate / 1000));
if(m_scopeWindow != NULL) if(m_scopeWindow != 0)
m_scopeWindow->setSampleRate(m_sampleRate); m_scopeWindow->setSampleRate(m_sampleRate);
} }
void MainWindow::updatePresets() void MainWindow::updatePresets()
{ {
ui->presetTree->resizeColumnToContents(0); ui->presetTree->resizeColumnToContents(0);
if(ui->presetTree->currentItem() != NULL) { if(ui->presetTree->currentItem() != 0) {
ui->presetDelete->setEnabled(true); ui->presetDelete->setEnabled(true);
ui->presetLoad->setEnabled(true); ui->presetLoad->setEnabled(true);
} else { } else {
@ -269,14 +269,14 @@ void MainWindow::updatePresets()
QTreeWidgetItem* MainWindow::addPresetToTree(const Preset* preset) QTreeWidgetItem* MainWindow::addPresetToTree(const Preset* preset)
{ {
QTreeWidgetItem* group = NULL; QTreeWidgetItem* group = 0;
for(int i = 0; i < ui->presetTree->topLevelItemCount(); i++) { for(int i = 0; i < ui->presetTree->topLevelItemCount(); i++) {
if(ui->presetTree->topLevelItem(i)->text(0) == preset->getGroup()) { if(ui->presetTree->topLevelItem(i)->text(0) == preset->getGroup()) {
group = ui->presetTree->topLevelItem(i); group = ui->presetTree->topLevelItem(i);
break; break;
} }
} }
if(group == NULL) { if(group == 0) {
QStringList sl; QStringList sl;
sl.append(preset->getGroup()); sl.append(preset->getGroup());
group = new QTreeWidgetItem(ui->presetTree, sl, PGroup); group = new QTreeWidgetItem(ui->presetTree, sl, PGroup);
@ -305,7 +305,7 @@ void MainWindow::applySettings()
void MainWindow::handleMessages() void MainWindow::handleMessages()
{ {
Message* message; Message* message;
while((message = m_messageQueue->accept()) != NULL) { while((message = m_messageQueue->accept()) != 0) {
qDebug("Message: %s", message->getIdentifier()); qDebug("Message: %s", message->getIdentifier());
if(DSPEngineReport::match(message)) { if(DSPEngineReport::match(message)) {
DSPEngineReport* rep = (DSPEngineReport*)message; DSPEngineReport* rep = (DSPEngineReport*)message;
@ -363,7 +363,7 @@ void MainWindow::scopeWindowDestroyed()
{ {
ui->action_Oscilloscope->setChecked(false); ui->action_Oscilloscope->setChecked(false);
m_settings.getCurrent()->setShowScope(false); m_settings.getCurrent()->setShowScope(false);
m_scopeWindow = NULL; m_scopeWindow = 0;
} }
void MainWindow::on_action_Start_triggered() void MainWindow::on_action_Start_triggered()
@ -399,19 +399,26 @@ void MainWindow::on_presetSave_clicked()
{ {
QStringList groups; QStringList groups;
QString group; QString group;
QString description = "";
for(int i = 0; i < ui->presetTree->topLevelItemCount(); i++) for(int i = 0; i < ui->presetTree->topLevelItemCount(); i++)
groups.append(ui->presetTree->topLevelItem(i)->text(0)); groups.append(ui->presetTree->topLevelItem(i)->text(0));
QTreeWidgetItem* item = ui->presetTree->currentItem(); QTreeWidgetItem* item = ui->presetTree->currentItem();
if(item != NULL) { if(item != 0) {
if(item->type() == PGroup) if(item->type() == PGroup)
group = item->text(0); group = item->text(0);
else if(item->type() == PItem) else if(item->type() == PItem) {
group = item->parent()->text(0); group = item->parent()->text(0);
description = item->text(0);
}
} }
AddPresetDialog dlg(groups, group, this); AddPresetDialog dlg(groups, group, this);
if (description.length() > 0) {
dlg.setDescription(description);
}
if(dlg.exec() == QDialog::Accepted) { if(dlg.exec() == QDialog::Accepted) {
Preset* preset = m_settings.newPreset(dlg.group(), dlg.description()); Preset* preset = m_settings.newPreset(dlg.group(), dlg.description());
saveSettings(preset); saveSettings(preset);
@ -420,16 +427,32 @@ void MainWindow::on_presetSave_clicked()
} }
} }
void MainWindow::on_presetUpdate_clicked()
{
QTreeWidgetItem* item = ui->presetTree->currentItem();
if(item != 0) {
if(item->type() == PItem) {
const Preset* preset = qvariant_cast<const Preset*>(item->data(0, Qt::UserRole));
if (preset != 0) {
Preset* preset_mod = const_cast<Preset*>(preset);
saveSettings(preset_mod);
}
}
}
}
void MainWindow::on_presetLoad_clicked() void MainWindow::on_presetLoad_clicked()
{ {
QTreeWidgetItem* item = ui->presetTree->currentItem(); QTreeWidgetItem* item = ui->presetTree->currentItem();
if(item == NULL) { if(item == 0) {
updatePresets(); updatePresets();
return; return;
} }
const Preset* preset = qvariant_cast<const Preset*>(item->data(0, Qt::UserRole)); const Preset* preset = qvariant_cast<const Preset*>(item->data(0, Qt::UserRole));
if(preset == NULL) if(preset == 0) {
return; return;
}
loadSettings(preset); loadSettings(preset);
applySettings(); applySettings();
@ -438,12 +461,12 @@ void MainWindow::on_presetLoad_clicked()
void MainWindow::on_presetDelete_clicked() void MainWindow::on_presetDelete_clicked()
{ {
QTreeWidgetItem* item = ui->presetTree->currentItem(); QTreeWidgetItem* item = ui->presetTree->currentItem();
if(item == NULL) { if(item == 0) {
updatePresets(); updatePresets();
return; return;
} }
const Preset* preset = qvariant_cast<const Preset*>(item->data(0, Qt::UserRole)); const Preset* preset = qvariant_cast<const Preset*>(item->data(0, Qt::UserRole));
if(preset == NULL) if(preset == 0)
return; return;
if(QMessageBox::question(this, tr("Delete Preset"), tr("Do you want to delete preset '%1'?").arg(preset->getDescription()), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) { if(QMessageBox::question(this, tr("Delete Preset"), tr("Do you want to delete preset '%1'?").arg(preset->getDescription()), QMessageBox::No | QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
@ -464,7 +487,7 @@ void MainWindow::on_presetTree_itemActivated(QTreeWidgetItem *item, int column)
void MainWindow::on_action_Oscilloscope_triggered() void MainWindow::on_action_Oscilloscope_triggered()
{ {
if(m_scopeWindow != NULL) { if(m_scopeWindow != 0) {
((QWidget*)m_scopeWindow->parent())->raise(); ((QWidget*)m_scopeWindow->parent())->raise();
return; return;
} }

View File

@ -22,7 +22,16 @@
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin"> <property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
@ -112,7 +121,16 @@
</attribute> </attribute>
<widget class="QWidget" name="dockWidgetContents"> <widget class="QWidget" name="dockWidgetContents">
<layout class="QGridLayout" name="gridLayout_6"> <layout class="QGridLayout" name="gridLayout_6">
<property name="margin"> <property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<property name="spacing"> <property name="spacing">
@ -121,7 +139,7 @@
<item row="5" column="1"> <item row="5" column="1">
<widget class="QToolButton" name="presetSave"> <widget class="QToolButton" name="presetSave">
<property name="toolTip"> <property name="toolTip">
<string>Save current settings as preset</string> <string>Save current settings as new preset</string>
</property> </property>
<property name="text"> <property name="text">
<string>...</string> <string>...</string>
@ -138,7 +156,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="5"> <item row="5" column="6">
<widget class="QToolButton" name="presetLoad"> <widget class="QToolButton" name="presetLoad">
<property name="toolTip"> <property name="toolTip">
<string>Load selected preset</string> <string>Load selected preset</string>
@ -158,7 +176,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="3" colspan="2"> <item row="5" column="4" colspan="2">
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@ -171,7 +189,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="5" column="2"> <item row="5" column="3">
<widget class="QToolButton" name="presetDelete"> <widget class="QToolButton" name="presetDelete">
<property name="toolTip"> <property name="toolTip">
<string>Delete selected preset</string> <string>Delete selected preset</string>
@ -191,7 +209,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" rowspan="4" colspan="5"> <item row="1" column="1" rowspan="4" colspan="6">
<widget class="QTreeWidget" name="presetTree"> <widget class="QTreeWidget" name="presetTree">
<property name="allColumnsShowFocus"> <property name="allColumnsShowFocus">
<bool>true</bool> <bool>true</bool>
@ -208,6 +226,26 @@
</column> </column>
</widget> </widget>
</item> </item>
<item row="5" column="2">
<widget class="QToolButton" name="presetUpdate">
<property name="toolTip">
<string>Update selected preset with current settings</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="resources/res.qrc">
<normaloff>:/preset-update.png</normaloff>:/preset-update.png</iconset>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>
@ -229,7 +267,16 @@
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<item> <item>
@ -295,7 +342,16 @@
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
<item> <item>
@ -320,7 +376,16 @@
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<property name="margin"> <property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>2</number>
</property>
<property name="rightMargin">
<number>2</number>
</property>
<property name="bottomMargin">
<number>2</number> <number>2</number>
</property> </property>
</layout> </layout>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 996 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -5,6 +5,7 @@
<file>waterfall.png</file> <file>waterfall.png</file>
<file>preset-load.png</file> <file>preset-load.png</file>
<file>preset-save.png</file> <file>preset-save.png</file>
<file>preset-update.png</file>
<file>preset-delete.png</file> <file>preset-delete.png</file>
<file>horizontal.png</file> <file>horizontal.png</file>
<file>vertical.png</file> <file>vertical.png</file>