From a468085c3ae18547a0c27f043ee32fc998087bb5 Mon Sep 17 00:00:00 2001 From: Gavin Howard Date: Fri, 15 Aug 2014 18:52:01 -0600 Subject: [PATCH] Finished the changes to the quick change menu. Everything should work. --- src/playlist/playlist.cpp | 4 +++ src/playlist/playlist.h | 4 +++ src/playlist/playlistcontainer.cpp | 40 ++++++++++++++++++++++++++++-- src/playlist/playlistcontainer.h | 6 +++-- src/playlist/playlistmanager.cpp | 15 ++++------- src/playlist/playlistmanager.h | 2 ++ src/ui/behavioursettingspage.cpp | 11 +++++--- src/ui/mainwindow.cpp | 1 + 8 files changed, 65 insertions(+), 18 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 104ee654e..61671a41b 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -89,6 +89,10 @@ const QRgb Playlist::kDynamicHistoryColor = qRgb(0x80, 0x80, 0x80); const char* Playlist::kSettingsGroup = "Playlist"; +const char* Playlist::kPathType = "path_type"; +const char* Playlist::kWriteMetadata = "write_metadata"; +const char* Playlist::kQuickChangeMenu = "quick_change_menu"; + const int Playlist::kUndoStackSize = 20; const int Playlist::kUndoItemLimit = 500; diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index dfe8f5c4c..104e7cd15 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -152,6 +152,10 @@ class Playlist : public QAbstractListModel { static const char* kSettingsGroup; + static const char* kPathType; + static const char* kWriteMetadata; + static const char* kQuickChangeMenu; + static const int kUndoStackSize; static const int kUndoItemLimit; diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index 5098b2075..185025bfb 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -48,10 +48,16 @@ PlaylistContainer::PlaylistContainer(QWidget* parent) tab_bar_visible_(false), tab_bar_animation_(new QTimeLine(500, this)), no_matches_label_(nullptr), - filter_timer_(new QTimer(this)), - path_(Playlist::Path_Automatic) { + filter_timer_(new QTimer(this)) { ui_->setupUi(this); + ui_->file_path_box->addItem("Automatic"); + ui_->file_path_box->addItem("Absolute"); + ui_->file_path_box->addItem("Relative"); + + connect(ui_->file_path_box, SIGNAL(currentIndexChanged(int)), + SLOT(PathSettingChanged())); + no_matches_label_ = new QLabel(ui_->playlist); no_matches_label_->setAlignment(Qt::AlignTop | Qt::AlignHCenter); no_matches_label_->setAttribute(Qt::WA_TransparentForMouseEvents); @@ -76,6 +82,8 @@ PlaylistContainer::PlaylistContainer(QWidget* parent) settings_.beginGroup(kSettingsGroup); + ReloadSettings(); + // Tab bar ui_->tab_bar->setExpanding(false); ui_->tab_bar->setMovable(true); @@ -102,6 +110,28 @@ PlaylistContainer::PlaylistContainer(QWidget* parent) PlaylistContainer::~PlaylistContainer() { delete ui_; } +void PlaylistContainer::ReloadSettings() { + + bool show_menu = settings_.value(Playlist::kQuickChangeMenu, true).toBool(); + ui_->line->setVisible(show_menu); + ui_->file_path_label->setVisible(show_menu); + ui_->file_path_box->setVisible(show_menu); + + int value = settings_.value(Playlist::kPathType, Playlist::Path_Automatic).toInt(); + Playlist::Path path = static_cast(value); + switch (path) { + case Playlist::Path_Automatic: + ui_->file_path_box->setCurrentIndex(0); + break; + case Playlist::Path_Absolute: + ui_->file_path_box->setCurrentIndex(1); + break; + case Playlist::Path_Relative: + ui_->file_path_box->setCurrentIndex(2); + break; + } +} + PlaylistView* PlaylistContainer::view() const { return ui_->playlist; } void PlaylistContainer::SetActions(QAction* new_playlist, @@ -439,3 +469,9 @@ bool PlaylistContainer::eventFilter(QObject* objectWatched, QEvent* event) { } return QWidget::eventFilter(objectWatched, event); } + +void PlaylistContainer::PathSettingChanged() { + int value = ui_->file_path_box->currentIndex(); + Playlist::Path path = static_cast(value); + settings_.setValue(Playlist::kPathType, int(path)); +} diff --git a/src/playlist/playlistcontainer.h b/src/playlist/playlistcontainer.h index 7f0252af4..7e8c9cc8c 100644 --- a/src/playlist/playlistcontainer.h +++ b/src/playlist/playlistcontainer.h @@ -48,6 +48,8 @@ class PlaylistContainer : public QWidget { QAction* previous_playlist); void SetManager(PlaylistManager* manager); + void ReloadSettings(); + PlaylistView* view() const; bool eventFilter(QObject* objectWatched, QEvent* event); @@ -92,6 +94,8 @@ signals: void UpdateNoMatchesLabel(); + void PathSettingChanged(); + private: void UpdateActiveIcon(const QIcon& icon); void RepositionNoMatchesLabel(bool force = false); @@ -116,8 +120,6 @@ signals: QLabel* no_matches_label_; QTimer* filter_timer_; - - Playlist::Path path_; }; #endif // PLAYLISTCONTAINER_H diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 12075ca38..50cc2404b 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -50,6 +50,8 @@ PlaylistManager::PlaylistManager(Application* app, QObject* parent) connect(app_->player(), SIGNAL(Paused()), SLOT(SetActivePaused())); connect(app_->player(), SIGNAL(Playing()), SLOT(SetActivePlaying())); connect(app_->player(), SIGNAL(Stopped()), SLOT(SetActiveStopped())); + + settings_.beginGroup(Playlist::kSettingsGroup); } PlaylistManager::~PlaylistManager() { @@ -196,10 +198,7 @@ void PlaylistManager::ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, } void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { - QSettings settings; - settings.beginGroup(Playlist::kSettingsGroup); - QString filename = settings.value("last_save_playlist").toString(); - settings.endGroup(); + QString filename = settings_.value("last_save_playlist").toString(); // We want to use the playlist tab name as a default filename, but in the // same directory as the last saved file. @@ -224,13 +223,9 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { nullptr, tr("Save playlist", "Title of the playlist save dialog."), filename, parser()->filters(), &default_filter); - if (filename.isNull()) { - settings.endGroup(); - return; - } + if (filename.isNull()) return; - settings.setValue("last_save_playlist", filename); - settings.endGroup(); + settings_.setValue("last_save_playlist", filename); Save(id == -1 ? current_id() : id, filename); } diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index b7c89983a..a9b5a9af4 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -253,6 +253,8 @@ class PlaylistManager : public PlaylistManagerInterface { PlaylistParser* parser_; PlaylistContainer* playlist_container_; + QSettings settings_; + // key = id QMap playlists_; diff --git a/src/ui/behavioursettingspage.cpp b/src/ui/behavioursettingspage.cpp index e4d15d354..234192ddc 100644 --- a/src/ui/behavioursettingspage.cpp +++ b/src/ui/behavioursettingspage.cpp @@ -134,7 +134,8 @@ void BehaviourSettingsPage::Load() { ui_->b_click_edit_inline_->setChecked( s.value("click_edit_inline", true).toBool()); - Playlist::Path path = Playlist::Path(s.value("path_type", Playlist::Path_Automatic).toInt()); + Playlist::Path path = Playlist::Path(s.value(Playlist::kPathType, + Playlist::Path_Automatic).toInt()); switch(path) { case Playlist::Path_Automatic: ui_->b_automatic_path->setChecked(true); @@ -146,7 +147,8 @@ void BehaviourSettingsPage::Load() { ui_->b_relative_path->setChecked(true); break; } - ui_->b_write_metadata->setChecked(s.value("write_metadata", true).toBool()); + ui_->b_write_metadata->setChecked(s.value(Playlist::kWriteMetadata, true).toBool()); + ui_->b_quickchange_menu->setChecked(s.value(Playlist::kQuickChangeMenu, true).toBool()); s.endGroup(); s.beginGroup(PlaylistTabBar::kSettingsGroup); @@ -204,8 +206,9 @@ void BehaviourSettingsPage::Save() { s.beginGroup(Playlist::kSettingsGroup); s.setValue("greyoutdeleted", ui_->b_grey_out_deleted_->isChecked()); s.setValue("click_edit_inline", ui_->b_click_edit_inline_->isChecked()); - s.setValue("path_type", int(path)); - s.setValue("write_metadata", ui_->b_write_metadata->isChecked()); + s.setValue(Playlist::kPathType, int(path)); + s.setValue(Playlist::kWriteMetadata, ui_->b_write_metadata->isChecked()); + s.setValue(Playlist::kQuickChangeMenu, ui_->b_quickchange_menu->isChecked()); s.endGroup(); s.beginGroup(PlaylistTabBar::kSettingsGroup); diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index fb7b36f0b..467e92b2e 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -976,6 +976,7 @@ void MainWindow::ReloadAllSettings() { library_view_->ReloadSettings(); song_info_view_->ReloadSettings(); app_->player()->engine()->ReloadSettings(); + ui_->playlist->ReloadSettings(); ui_->playlist->view()->ReloadSettings(); app_->internet_model()->ReloadSettings(); #ifdef HAVE_WIIMOTEDEV