diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index 426a9b7c9..4e095a8d4 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -287,6 +287,7 @@ void MainWindow::loadSettings() qDebug() << "MainWindow::loadSettings"; m_settings.load(); + m_settings.sortPresets(); for(int i = 0; i < m_settings.getPresetCount(); ++i) { diff --git a/sdrbase/settings/mainsettings.cpp b/sdrbase/settings/mainsettings.cpp index 5eecb9072..2c6948585 100644 --- a/sdrbase/settings/mainsettings.cpp +++ b/sdrbase/settings/mainsettings.cpp @@ -92,3 +92,8 @@ void MainSettings::deletePreset(const Preset* preset) m_presets.removeAll((Preset*)preset); delete (Preset*)preset; } + +void MainSettings::sortPresets() +{ + qSort(m_presets.begin(), m_presets.end(), Preset::presetCompare); +} diff --git a/sdrbase/settings/mainsettings.h b/sdrbase/settings/mainsettings.h index f54d1b5c8..20b6d8d9e 100644 --- a/sdrbase/settings/mainsettings.h +++ b/sdrbase/settings/mainsettings.h @@ -19,6 +19,7 @@ public: void deletePreset(const Preset* preset); int getPresetCount() const { return m_presets.count(); } const Preset* getPreset(int index) const { return m_presets[index]; } + void sortPresets(); Preset* getWorkingPreset() { return &m_workingPreset; } int getSourceIndex() const { return m_preferences.getSourceIndex(); } diff --git a/sdrbase/settings/preset.h b/sdrbase/settings/preset.h index df85bb7e3..2a7fdb602 100644 --- a/sdrbase/settings/preset.h +++ b/sdrbase/settings/preset.h @@ -75,6 +75,15 @@ public: const QString& sourceSerial, int sourceSequence) const; + static bool presetCompare(const Preset *p1, Preset *p2) + { + if (p1->m_centerFrequency != p2->m_centerFrequency) { + return p1->m_centerFrequency < p2->m_centerFrequency; + } else { + return p1->m_description < p2->m_description; + } + } + protected: // group and preset description QString m_group;