SmartPlaylists: Add option to restore smart playlists to the defaults
Fixes #1848
This commit is contained in:
@@ -134,13 +134,10 @@ void SmartPlaylistsModel::Init() {
|
||||
|
||||
// Append the new ones
|
||||
s.beginWriteArray(collection_backend_->songs_table(), playlist_index + unwritten_defaults);
|
||||
for (; version < default_smart_playlists_.count(); ++version) {
|
||||
const GeneratorList generators = default_smart_playlists_.value(version);
|
||||
for (PlaylistGeneratorPtr gen : generators) {
|
||||
SaveGenerator(&s, playlist_index++, gen);
|
||||
}
|
||||
}
|
||||
WriteDefaultsToSettings(&s, version, playlist_index);
|
||||
s.endArray();
|
||||
|
||||
version = default_smart_playlists_.count();
|
||||
}
|
||||
|
||||
s.setValue(collection_backend_->songs_table() + u"_version"_s, version);
|
||||
@@ -269,6 +266,46 @@ PlaylistGeneratorPtr SmartPlaylistsModel::CreateGenerator(const QModelIndex &idx
|
||||
|
||||
}
|
||||
|
||||
void SmartPlaylistsModel::WriteDefaultsToSettings(Settings *s, const int start_version, const int start_index) {
|
||||
|
||||
int playlist_index = start_index;
|
||||
for (int version = start_version; version < default_smart_playlists_.count(); ++version) {
|
||||
const GeneratorList generators = default_smart_playlists_.value(version);
|
||||
for (PlaylistGeneratorPtr gen : generators) {
|
||||
SaveGenerator(s, playlist_index++, gen);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SmartPlaylistsModel::RestoreDefaults() {
|
||||
|
||||
root_->ClearNotify();
|
||||
|
||||
Settings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
int total_defaults = 0;
|
||||
for (const GeneratorList &generators : default_smart_playlists_) {
|
||||
total_defaults += static_cast<int>(generators.count());
|
||||
}
|
||||
|
||||
s.beginWriteArray(collection_backend_->songs_table(), total_defaults);
|
||||
WriteDefaultsToSettings(&s, 0, 0);
|
||||
s.endArray();
|
||||
|
||||
s.setValue(collection_backend_->songs_table() + u"_version"_s, default_smart_playlists_.count());
|
||||
|
||||
const int count = s.beginReadArray(collection_backend_->songs_table());
|
||||
for (int i = 0; i < count; ++i) {
|
||||
s.setArrayIndex(i);
|
||||
ItemFromSmartPlaylist(s, true);
|
||||
}
|
||||
s.endArray();
|
||||
s.endGroup();
|
||||
|
||||
}
|
||||
|
||||
QVariant SmartPlaylistsModel::data(const QModelIndex &idx, const int role) const {
|
||||
|
||||
if (!idx.isValid()) return QVariant();
|
||||
|
||||
Reference in New Issue
Block a user