1
0
mirror of https://github.com/clementine-player/Clementine synced 2025-02-02 20:36:44 +01:00

Convert edit tag & settings dialog to Lazy.

This commit is contained in:
John Maguire 2016-02-12 13:15:45 +00:00
parent 589f2ff62e
commit 74e6a1744f
2 changed files with 22 additions and 32 deletions

View File

@ -172,6 +172,7 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd,
app_(app), app_(app),
tray_icon_(tray_icon), tray_icon_(tray_icon),
osd_(osd), osd_(osd),
edit_tag_dialog_(std::bind(&MainWindow::CreateEditTagDialog, this)),
global_shortcuts_(new GlobalShortcuts(this)), global_shortcuts_(new GlobalShortcuts(this)),
global_search_view_(new GlobalSearchView(app_, this)), global_search_view_(new GlobalSearchView(app_, this)),
library_view_(new LibraryViewContainer(this)), library_view_(new LibraryViewContainer(this)),
@ -182,11 +183,11 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd,
device_view_(device_view_container_->view()), device_view_(device_view_container_->view()),
song_info_view_(new SongInfoView(this)), song_info_view_(new SongInfoView(this)),
artist_info_view_(new ArtistInfoView(this)), artist_info_view_(new ArtistInfoView(this)),
settings_dialog_(std::bind(&MainWindow::CreateSettingsDialog, this)),
equalizer_(new Equalizer), equalizer_(new Equalizer),
organise_dialog_([=]() { organise_dialog_([=]() {
OrganiseDialog* dialog = new OrganiseDialog(app->task_manager()); OrganiseDialog* dialog = new OrganiseDialog(app->task_manager());
dialog->SetDestinationModel( dialog->SetDestinationModel(app->library()->model()->directory_model());
app->library()->model()->directory_model());
return dialog; return dialog;
}), }),
playlist_menu_(new QMenu(this)), playlist_menu_(new QMenu(this)),
@ -1833,7 +1834,6 @@ void MainWindow::EditTracks() {
} }
} }
EnsureEditTagDialogCreated();
edit_tag_dialog_->SetSongs(songs, items); edit_tag_dialog_->SetSongs(songs, items);
edit_tag_dialog_->show(); edit_tag_dialog_->show();
} }
@ -2218,7 +2218,6 @@ void MainWindow::AddFilesToTranscoder() {
} }
void MainWindow::ShowLibraryConfig() { void MainWindow::ShowLibraryConfig() {
EnsureSettingsDialogCreated();
settings_dialog_->OpenAtPage(SettingsDialog::Page_Library); settings_dialog_->OpenAtPage(SettingsDialog::Page_Library);
} }
@ -2271,8 +2270,6 @@ void MainWindow::CopyFilesToDevice(const QList<QUrl>& urls) {
} }
void MainWindow::EditFileTags(const QList<QUrl>& urls) { void MainWindow::EditFileTags(const QList<QUrl>& urls) {
EnsureEditTagDialogCreated();
SongList songs; SongList songs;
for (const QUrl& url : urls) { for (const QUrl& url : urls) {
Song song; Song song;
@ -2441,47 +2438,40 @@ void MainWindow::ShowCoverManager() {
cover_manager_->show(); cover_manager_->show();
} }
void MainWindow::EnsureSettingsDialogCreated() { SettingsDialog* MainWindow::CreateSettingsDialog() {
if (settings_dialog_) return; SettingsDialog* settings_dialog =
new SettingsDialog(app_, background_streams_);
settings_dialog_.reset(new SettingsDialog(app_, background_streams_)); settings_dialog->SetGlobalShortcutManager(global_shortcuts_);
settings_dialog_->SetGlobalShortcutManager(global_shortcuts_); settings_dialog->SetSongInfoView(song_info_view_);
settings_dialog_->SetSongInfoView(song_info_view_);
// Settings // Settings
connect(settings_dialog_.get(), SIGNAL(accepted()), connect(settings_dialog, SIGNAL(accepted()), SLOT(ReloadAllSettings()));
SLOT(ReloadAllSettings()));
#ifdef HAVE_WIIMOTEDEV #ifdef HAVE_WIIMOTEDEV
connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), connect(settings_dialog, SIGNAL(SetWiimotedevInterfaceActived(bool)),
wiimotedev_shortcuts_.get(), wiimotedev_shortcuts_.get(),
SLOT(SetWiimotedevInterfaceActived(bool))); SLOT(SetWiimotedevInterfaceActived(bool)));
#endif #endif
// Allows custom notification preview // Allows custom notification preview
connect(settings_dialog_.get(), connect(settings_dialog,
SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)), SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)),
SLOT(HandleNotificationPreview(OSD::Behaviour, QString, QString))); SLOT(HandleNotificationPreview(OSD::Behaviour, QString, QString)));
return settings_dialog;
} }
void MainWindow::OpenSettingsDialog() { void MainWindow::OpenSettingsDialog() { settings_dialog_->show(); }
EnsureSettingsDialogCreated();
settings_dialog_->show();
}
void MainWindow::OpenSettingsDialogAtPage(SettingsDialog::Page page) { void MainWindow::OpenSettingsDialogAtPage(SettingsDialog::Page page) {
EnsureSettingsDialogCreated();
settings_dialog_->OpenAtPage(page); settings_dialog_->OpenAtPage(page);
} }
void MainWindow::EnsureEditTagDialogCreated() { EditTagDialog* MainWindow::CreateEditTagDialog() {
if (edit_tag_dialog_) return; EditTagDialog* edit_tag_dialog = new EditTagDialog(app_);
connect(edit_tag_dialog, SIGNAL(accepted()), SLOT(EditTagDialogAccepted()));
edit_tag_dialog_.reset(new EditTagDialog(app_)); connect(edit_tag_dialog, SIGNAL(Error(QString)),
connect(edit_tag_dialog_.get(), SIGNAL(accepted()),
SLOT(EditTagDialogAccepted()));
connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)),
SLOT(ShowErrorDialog(QString))); SLOT(ShowErrorDialog(QString)));
return edit_tag_dialog;
} }
void MainWindow::ShowAboutDialog() { void MainWindow::ShowAboutDialog() {

View File

@ -250,8 +250,8 @@ signals:
void ShowErrorDialog(const QString& message); void ShowErrorDialog(const QString& message);
void ShowQueueManager(); void ShowQueueManager();
void ShowVisualisations(); void ShowVisualisations();
void EnsureSettingsDialogCreated(); SettingsDialog* CreateSettingsDialog();
void EnsureEditTagDialogCreated(); EditTagDialog* CreateEditTagDialog();
void OpenSettingsDialog(); void OpenSettingsDialog();
void OpenSettingsDialogAtPage(SettingsDialog::Page page); void OpenSettingsDialogAtPage(SettingsDialog::Page page);
void ShowSongInfoConfig(); void ShowSongInfoConfig();
@ -296,7 +296,7 @@ signals:
Application* app_; Application* app_;
SystemTrayIcon* tray_icon_; SystemTrayIcon* tray_icon_;
OSD* osd_; OSD* osd_;
std::unique_ptr<EditTagDialog> edit_tag_dialog_; Lazy<EditTagDialog> edit_tag_dialog_;
std::unique_ptr<About> about_dialog_; std::unique_ptr<About> about_dialog_;
GlobalShortcuts* global_shortcuts_; GlobalShortcuts* global_shortcuts_;
@ -314,7 +314,7 @@ signals:
SongInfoView* song_info_view_; SongInfoView* song_info_view_;
ArtistInfoView* artist_info_view_; ArtistInfoView* artist_info_view_;
std::unique_ptr<SettingsDialog> settings_dialog_; Lazy<SettingsDialog> settings_dialog_;
std::unique_ptr<AddStreamDialog> add_stream_dialog_; std::unique_ptr<AddStreamDialog> add_stream_dialog_;
std::unique_ptr<AlbumCoverManager> cover_manager_; std::unique_ptr<AlbumCoverManager> cover_manager_;
std::unique_ptr<Equalizer> equalizer_; std::unique_ptr<Equalizer> equalizer_;