diff --git a/Configuration.cpp b/Configuration.cpp index 717ac6542..d46c73dbe 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -1216,7 +1216,15 @@ void Configuration::impl::read_settings () if (settings_->contains ("FrequenciesForModes")) { - frequencies_.frequency_list (settings_->value ("FrequenciesForModes").value ()); + auto const& v = settings_->value ("FrequenciesForModes"); + if (v.isValid ()) + { + frequencies_.frequency_list (v.value ()); + } + else + { + frequencies_.reset_to_defaults (); + } } else { diff --git a/MetaDataRegistry.cpp b/MetaDataRegistry.cpp index 74a0e463b..8876397c4 100644 --- a/MetaDataRegistry.cpp +++ b/MetaDataRegistry.cpp @@ -25,7 +25,14 @@ void register_types () { // Radio namespace auto frequency_type_id = qRegisterMetaType ("Frequency"); - item_editor_factory ()->registerEditor (frequency_type_id, new QStandardItemEditorCreator ()); + qRegisterMetaType ("Frequencies"); + + // This is required to preserve v1.5 "frequencies" setting for + // backwards compatibility, without it the setting gets trashed by + // later versions. + qRegisterMetaTypeStreamOperators ("Frequencies"); + + item_editor_factory ()->registerEditor (frequency_type_id, new QStandardItemEditorCreator ()); auto frequency_delta_type_id = qRegisterMetaType ("FrequencyDelta"); item_editor_factory ()->registerEditor (frequency_delta_type_id, new QStandardItemEditorCreator ()); diff --git a/Radio.hpp b/Radio.hpp index 85a5fcadf..309c27022 100644 --- a/Radio.hpp +++ b/Radio.hpp @@ -17,6 +17,7 @@ namespace Radio // Frequency types // using Frequency = quint64; + using Frequencies = QList; using FrequencyDelta = qint64; // @@ -46,6 +47,7 @@ namespace Radio } Q_DECLARE_METATYPE (Radio::Frequency); +Q_DECLARE_METATYPE (Radio::Frequencies); Q_DECLARE_METATYPE (Radio::FrequencyDelta); #endif