Add back save all playlists action

This commit is contained in:
Jonas Kvinge
2022-07-20 01:09:00 +02:00
parent 21f1fe52c0
commit 3ffcc29249
10 changed files with 336 additions and 6 deletions

View File

@@ -132,7 +132,7 @@ PlaylistContainer::~PlaylistContainer() { delete ui_; }
PlaylistView *PlaylistContainer::view() const { return ui_->playlist; }
void PlaylistContainer::SetActions(QAction *new_playlist, QAction *load_playlist, QAction *save_playlist, QAction *clear_playlist, QAction *next_playlist, QAction *previous_playlist) {
void PlaylistContainer::SetActions(QAction *new_playlist, QAction *load_playlist, QAction *save_playlist, QAction *clear_playlist, QAction *next_playlist, QAction *previous_playlist, QAction *save_all_playlists) {
ui_->create_new->setDefaultAction(new_playlist);
ui_->load->setDefaultAction(load_playlist);
@@ -148,6 +148,7 @@ void PlaylistContainer::SetActions(QAction *new_playlist, QAction *load_playlist
QObject::connect(next_playlist, &QAction::triggered, this, &PlaylistContainer::GoToNextPlaylistTab);
QObject::connect(previous_playlist, &QAction::triggered, this, &PlaylistContainer::GoToPreviousPlaylistTab);
QObject::connect(clear_playlist, &QAction::triggered, this, &PlaylistContainer::ClearPlaylist);
QObject::connect(save_all_playlists, &QAction::triggered, manager_, &PlaylistManager::SaveAllPlaylists);
}

View File

@@ -53,7 +53,7 @@ class PlaylistContainer : public QWidget {
static const char *kSettingsGroup;
void SetActions(QAction *new_playlist, QAction *load_playlist, QAction *save_playlist, QAction *clear_playlist, QAction *next_playlist, QAction *previous_playlist);
void SetActions(QAction *new_playlist, QAction *load_playlist, QAction *save_playlist, QAction *clear_playlist, QAction *next_playlist, QAction *previous_playlist, QAction *save_all_playlists);
void SetManager(PlaylistManager *manager);
void ReloadSettings();

View File

@@ -65,6 +65,7 @@
#include "playlistview.h"
#include "playlistsaveoptionsdialog.h"
#include "playlistparsers/playlistparser.h"
#include "dialogs/saveplaylistsdialog.h"
class ParserBase;
@@ -271,7 +272,7 @@ void PlaylistManager::SaveWithUI(const int id, const QString &playlist_name) {
PlaylistSettingsPage::PathType path_type = static_cast<PlaylistSettingsPage::PathType>(s.value("path_type", PlaylistSettingsPage::PathType_Automatic).toInt());
s.endGroup();
if (path_type == PlaylistSettingsPage::PathType_Ask_User) {
PlaylistSaveOptionsDialog optionsdialog(nullptr);
PlaylistSaveOptionsDialog optionsdialog;
optionsdialog.setModal(true);
if (optionsdialog.exec() != QDialog::Accepted) return;
path_type = optionsdialog.path_type();
@@ -628,3 +629,35 @@ void PlaylistManager::RateCurrentSong(const float rating) {
void PlaylistManager::RateCurrentSong2(const int rating) {
RateCurrentSong(static_cast<float>(rating) / 5.0F);
}
void PlaylistManager::SaveAllPlaylists() {
SavePlaylistsDialog dialog(parser()->file_extensions(PlaylistParser::Type_Save), parser()->default_extension());
if (dialog.exec() != QDialog::Accepted) {
return;
}
const QString path = dialog.path();
if (path.isEmpty() || !QDir().exists(path)) return;
QString extension = dialog.extension();
if (extension.isEmpty()) extension = parser()->default_extension();
QSettings s;
s.beginGroup(PlaylistSettingsPage::kSettingsGroup);
PlaylistSettingsPage::PathType path_type = static_cast<PlaylistSettingsPage::PathType>(s.value("path_type", PlaylistSettingsPage::PathType_Automatic).toInt());
s.endGroup();
if (path_type == PlaylistSettingsPage::PathType_Ask_User) {
PlaylistSaveOptionsDialog optionsdialog;
optionsdialog.setModal(true);
if (optionsdialog.exec() != QDialog::Accepted) return;
path_type = optionsdialog.path_type();
}
for (QMap<int, Data>::const_iterator it = playlists_.constBegin(); it != playlists_.constEnd(); ++it) {
const Data &data = *it;
const QString filepath = path + "/" + data.name + "." + extension;
Save(it.key(), filepath, path_type);
}
}

View File

@@ -223,6 +223,8 @@ class PlaylistManager : public PlaylistManagerInterface {
// Rate current song using 0 - 5 scale.
void RateCurrentSong2(const int rating) override;
void SaveAllPlaylists();
private slots:
void SetActivePlaying() override;
void SetActivePaused() override;