diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 35adf0cd1..b4eb37d23 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -172,6 +172,7 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd, app_(app), tray_icon_(tray_icon), osd_(osd), + edit_tag_dialog_(std::bind(&MainWindow::CreateEditTagDialog, this)), global_shortcuts_(new GlobalShortcuts(this)), global_search_view_(new GlobalSearchView(app_, 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()), song_info_view_(new SongInfoView(this)), artist_info_view_(new ArtistInfoView(this)), + settings_dialog_(std::bind(&MainWindow::CreateSettingsDialog, this)), equalizer_(new Equalizer), organise_dialog_([=]() { OrganiseDialog* dialog = new OrganiseDialog(app->task_manager()); - dialog->SetDestinationModel( - app->library()->model()->directory_model()); + dialog->SetDestinationModel(app->library()->model()->directory_model()); return dialog; }), playlist_menu_(new QMenu(this)), @@ -1833,7 +1834,6 @@ void MainWindow::EditTracks() { } } - EnsureEditTagDialogCreated(); edit_tag_dialog_->SetSongs(songs, items); edit_tag_dialog_->show(); } @@ -2218,7 +2218,6 @@ void MainWindow::AddFilesToTranscoder() { } void MainWindow::ShowLibraryConfig() { - EnsureSettingsDialogCreated(); settings_dialog_->OpenAtPage(SettingsDialog::Page_Library); } @@ -2271,8 +2270,6 @@ void MainWindow::CopyFilesToDevice(const QList& urls) { } void MainWindow::EditFileTags(const QList& urls) { - EnsureEditTagDialogCreated(); - SongList songs; for (const QUrl& url : urls) { Song song; @@ -2441,47 +2438,40 @@ void MainWindow::ShowCoverManager() { cover_manager_->show(); } -void MainWindow::EnsureSettingsDialogCreated() { - if (settings_dialog_) return; - - settings_dialog_.reset(new SettingsDialog(app_, background_streams_)); - settings_dialog_->SetGlobalShortcutManager(global_shortcuts_); - settings_dialog_->SetSongInfoView(song_info_view_); +SettingsDialog* MainWindow::CreateSettingsDialog() { + SettingsDialog* settings_dialog = + new SettingsDialog(app_, background_streams_); + settings_dialog->SetGlobalShortcutManager(global_shortcuts_); + settings_dialog->SetSongInfoView(song_info_view_); // Settings - connect(settings_dialog_.get(), SIGNAL(accepted()), - SLOT(ReloadAllSettings())); + connect(settings_dialog, SIGNAL(accepted()), SLOT(ReloadAllSettings())); #ifdef HAVE_WIIMOTEDEV - connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), + connect(settings_dialog, SIGNAL(SetWiimotedevInterfaceActived(bool)), wiimotedev_shortcuts_.get(), SLOT(SetWiimotedevInterfaceActived(bool))); #endif // Allows custom notification preview - connect(settings_dialog_.get(), + connect(settings_dialog, SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)), SLOT(HandleNotificationPreview(OSD::Behaviour, QString, QString))); + return settings_dialog; } -void MainWindow::OpenSettingsDialog() { - EnsureSettingsDialogCreated(); - settings_dialog_->show(); -} +void MainWindow::OpenSettingsDialog() { settings_dialog_->show(); } void MainWindow::OpenSettingsDialogAtPage(SettingsDialog::Page page) { - EnsureSettingsDialogCreated(); settings_dialog_->OpenAtPage(page); } -void MainWindow::EnsureEditTagDialogCreated() { - if (edit_tag_dialog_) return; - - edit_tag_dialog_.reset(new EditTagDialog(app_)); - connect(edit_tag_dialog_.get(), SIGNAL(accepted()), - SLOT(EditTagDialogAccepted())); - connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)), +EditTagDialog* MainWindow::CreateEditTagDialog() { + EditTagDialog* edit_tag_dialog = new EditTagDialog(app_); + connect(edit_tag_dialog, SIGNAL(accepted()), SLOT(EditTagDialogAccepted())); + connect(edit_tag_dialog, SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); + return edit_tag_dialog; } void MainWindow::ShowAboutDialog() { diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index ba8b5fc75..4e3fa3cf6 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -250,8 +250,8 @@ signals: void ShowErrorDialog(const QString& message); void ShowQueueManager(); void ShowVisualisations(); - void EnsureSettingsDialogCreated(); - void EnsureEditTagDialogCreated(); + SettingsDialog* CreateSettingsDialog(); + EditTagDialog* CreateEditTagDialog(); void OpenSettingsDialog(); void OpenSettingsDialogAtPage(SettingsDialog::Page page); void ShowSongInfoConfig(); @@ -296,7 +296,7 @@ signals: Application* app_; SystemTrayIcon* tray_icon_; OSD* osd_; - std::unique_ptr edit_tag_dialog_; + Lazy edit_tag_dialog_; std::unique_ptr about_dialog_; GlobalShortcuts* global_shortcuts_; @@ -314,7 +314,7 @@ signals: SongInfoView* song_info_view_; ArtistInfoView* artist_info_view_; - std::unique_ptr settings_dialog_; + Lazy settings_dialog_; std::unique_ptr add_stream_dialog_; std::unique_ptr cover_manager_; std::unique_ptr equalizer_;