Lazy-load some of MainWindow's dialogs

This commit is contained in:
David Sansome 2010-08-27 15:42:58 +00:00
parent 59e5de1468
commit ba5fb9f552
7 changed files with 111 additions and 58 deletions

View File

@ -99,7 +99,7 @@ void LastFMService::ReloadSettings() {
} }
void LastFMService::ShowConfig() { void LastFMService::ShowConfig() {
model()->settings_dialog()->OpenAtPage(SettingsDialog::Page_Lastfm); emit OpenSettingsAtPage(SettingsDialog::Page_Lastfm);
} }
bool LastFMService::IsAuthenticated() const { bool LastFMService::IsAuthenticated() const {

View File

@ -330,7 +330,7 @@ QUrl MagnatuneService::ModifyUrl(const QUrl& url) const {
} }
void MagnatuneService::ShowConfig() { void MagnatuneService::ShowConfig() {
model()->settings_dialog()->OpenAtPage(SettingsDialog::Page_Magnatune); emit OpenSettingsAtPage(SettingsDialog::Page_Magnatune);
} }
void MagnatuneService::Download() { void MagnatuneService::Download() {

View File

@ -36,8 +36,7 @@ RadioModel::RadioModel(BackgroundThread<Database>* db_thread,
db_thread_(db_thread), db_thread_(db_thread),
merged_model_(new MergedProxyModel(this)), merged_model_(new MergedProxyModel(this)),
network_(network), network_(network),
task_manager_(task_manager), task_manager_(task_manager)
settings_dialog_(NULL)
{ {
Q_ASSERT(sServices.isEmpty()); Q_ASSERT(sServices.isEmpty());
@ -64,6 +63,7 @@ void RadioModel::AddService(RadioService *service) {
connect(service, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult))); connect(service, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)));
connect(service, SIGNAL(StreamError(QString)), SIGNAL(StreamError(QString))); connect(service, SIGNAL(StreamError(QString)), SIGNAL(StreamError(QString)));
connect(service, SIGNAL(StreamMetadataFound(QUrl,Song)), SIGNAL(StreamMetadataFound(QUrl,Song))); connect(service, SIGNAL(StreamMetadataFound(QUrl,Song)), SIGNAL(StreamMetadataFound(QUrl,Song)));
connect(service, SIGNAL(OpenSettingsAtPage(SettingsDialog::Page)), SIGNAL(OpenSettingsAtPage(SettingsDialog::Page)));
connect(service, SIGNAL(AddItemToPlaylist(RadioItem*)), SIGNAL(AddItemToPlaylist(RadioItem*))); connect(service, SIGNAL(AddItemToPlaylist(RadioItem*)), SIGNAL(AddItemToPlaylist(RadioItem*)));
connect(service, SIGNAL(AddItemsToPlaylist(PlaylistItemList)), SIGNAL(AddItemsToPlaylist(PlaylistItemList))); connect(service, SIGNAL(AddItemsToPlaylist(PlaylistItemList)), SIGNAL(AddItemsToPlaylist(PlaylistItemList)));
} }

View File

@ -22,6 +22,7 @@
#include "core/simpletreemodel.h" #include "core/simpletreemodel.h"
#include "core/song.h" #include "core/song.h"
#include "playlist/playlistitem.h" #include "playlist/playlistitem.h"
#include "ui/settingsdialog.h"
#include "widgets/multiloadingindicator.h" #include "widgets/multiloadingindicator.h"
class Database; class Database;
@ -46,9 +47,6 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
Role_Key, Role_Key,
}; };
// Initialisation
void SetSettingsDialog(SettingsDialog* settings_dialog) { settings_dialog_ = settings_dialog; }
// Needs to be static for RadioPlaylistItem::restore // Needs to be static for RadioPlaylistItem::restore
static RadioService* ServiceByName(const QString& name); static RadioService* ServiceByName(const QString& name);
@ -77,12 +75,12 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
MergedProxyModel* merged_model() const { return merged_model_; } MergedProxyModel* merged_model() const { return merged_model_; }
NetworkAccessManager* network() const { return network_; } NetworkAccessManager* network() const { return network_; }
TaskManager* task_manager() const { return task_manager_; } TaskManager* task_manager() const { return task_manager_; }
SettingsDialog* settings_dialog() const { return settings_dialog_; }
signals: signals:
void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result); void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result);
void StreamError(const QString& message); void StreamError(const QString& message);
void StreamMetadataFound(const QUrl& original_url, const Song& song); void StreamMetadataFound(const QUrl& original_url, const Song& song);
void OpenSettingsAtPage(SettingsDialog::Page);
void AddItemToPlaylist(RadioItem* item); void AddItemToPlaylist(RadioItem* item);
void AddItemsToPlaylist(const PlaylistItemList& items); void AddItemsToPlaylist(const PlaylistItemList& items);
@ -100,7 +98,6 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
MergedProxyModel* merged_model_; MergedProxyModel* merged_model_;
NetworkAccessManager* network_; NetworkAccessManager* network_;
TaskManager* task_manager_; TaskManager* task_manager_;
SettingsDialog* settings_dialog_;
}; };
#endif // RADIOMODEL_H #endif // RADIOMODEL_H

View File

@ -24,6 +24,7 @@
#include "radioitem.h" #include "radioitem.h"
#include "core/song.h" #include "core/song.h"
#include "playlist/playlistitem.h" #include "playlist/playlistitem.h"
#include "ui/settingsdialog.h"
#include "widgets/multiloadingindicator.h" #include "widgets/multiloadingindicator.h"
class RadioModel; class RadioModel;
@ -65,6 +66,7 @@ class RadioService : public QObject {
void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result); void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result);
void StreamError(const QString& message); void StreamError(const QString& message);
void StreamMetadataFound(const QUrl& original_url, const Song& song); void StreamMetadataFound(const QUrl& original_url, const Song& song);
void OpenSettingsAtPage(SettingsDialog::Page page);
void AddItemToPlaylist(RadioItem* item); void AddItemToPlaylist(RadioItem* item);
void AddItemsToPlaylist(const PlaylistItemList& items); void AddItemsToPlaylist(const PlaylistItemList& items);

View File

@ -115,11 +115,10 @@ const char* MainWindow::kAllFilesFilterSpec =
MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidget *parent) MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidget *parent)
: QMainWindow(parent), : QMainWindow(parent),
ui_(new Ui_MainWindow), ui_(new Ui_MainWindow),
network_(network),
tray_icon_(SystemTrayIcon::CreateSystemTrayIcon(this)), tray_icon_(SystemTrayIcon::CreateSystemTrayIcon(this)),
osd_(new OSD(tray_icon_, network, this)), osd_(new OSD(tray_icon_, network, this)),
edit_tag_dialog_(new EditTagDialog),
task_manager_(new TaskManager(this)), task_manager_(new TaskManager(this)),
about_dialog_(new About),
database_(new BackgroundThreadImplementation<Database, Database>(this)), database_(new BackgroundThreadImplementation<Database, Database>(this)),
radio_model_(NULL), radio_model_(NULL),
playlist_backend_(NULL), playlist_backend_(NULL),
@ -130,12 +129,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
global_shortcuts_(new GlobalShortcuts(this)), global_shortcuts_(new GlobalShortcuts(this)),
devices_(NULL), devices_(NULL),
settings_dialog_(NULL), settings_dialog_(NULL),
add_stream_dialog_(new AddStreamDialog),
cover_manager_(NULL), cover_manager_(NULL),
equalizer_(new Equalizer), equalizer_(new Equalizer),
#ifdef HAVE_GSTREAMER
transcode_dialog_(new TranscodeDialog),
#endif
error_dialog_(new ErrorDialog), error_dialog_(new ErrorDialog),
organise_dialog_(new OrganiseDialog(task_manager_)), organise_dialog_(new OrganiseDialog(task_manager_)),
queue_manager_(new QueueManager), queue_manager_(new QueueManager),
@ -170,12 +165,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
qDebug() << t.restart() << "dbdeps: player"; qDebug() << t.restart() << "dbdeps: player";
library_ = new Library(database_, task_manager_, this); library_ = new Library(database_, task_manager_, this);
qDebug() << t.restart() << "dbdeps: library"; qDebug() << t.restart() << "dbdeps: library";
cover_manager_.reset(new AlbumCoverManager(network, library_->backend()));
qDebug() << t.restart() << "dbdeps: covermanager";
settings_dialog_.reset(new SettingsDialog); // Needs RadioModel
qDebug() << t.restart() << "dbdeps: settings dialog";
radio_model_->SetSettingsDialog(settings_dialog_.get());
qDebug() << t.restart() << "dbdeps: radiomodel";
devices_ = new DeviceManager(database_, task_manager_, this), devices_ = new DeviceManager(database_, task_manager_, this),
qDebug() << t.restart() << "dbdeps: devices"; qDebug() << t.restart() << "dbdeps: devices";
@ -201,7 +190,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
#ifdef HAVE_GSTREAMER #ifdef HAVE_GSTREAMER
if (GstEngine* engine = qobject_cast<GstEngine*>(player_->GetEngine())) { if (GstEngine* engine = qobject_cast<GstEngine*>(player_->GetEngine())) {
settings_dialog_->SetGstEngine(engine);
# ifdef ENABLE_VISUALISATIONS # ifdef ENABLE_VISUALISATIONS
visualisation_->SetEngine(engine); visualisation_->SetEngine(engine);
# endif # endif
@ -225,7 +213,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
ui_->library_view->SetLibrary(library_->model()); ui_->library_view->SetLibrary(library_->model());
ui_->library_view->SetTaskManager(task_manager_); ui_->library_view->SetTaskManager(task_manager_);
ui_->library_view->SetDeviceManager(devices_); ui_->library_view->SetDeviceManager(devices_);
settings_dialog_->SetLibraryDirectoryModel(library_->model()->directory_model());
ui_->radio_view->SetModel(radio_model_); ui_->radio_view->SetModel(radio_model_);
@ -234,8 +221,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
organise_dialog_->SetDestinationModel(library_->model()->directory_model()); organise_dialog_->SetDestinationModel(library_->model()->directory_model());
cover_manager_->Init();
qDebug() << t.restart() << "models"; qDebug() << t.restart() << "models";
// Icons // Icons
@ -277,11 +262,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(ui_->file_view, SIGNAL(MoveToLibrary(QList<QUrl>)), SLOT(MoveFilesToLibrary(QList<QUrl>))); connect(ui_->file_view, SIGNAL(MoveToLibrary(QList<QUrl>)), SLOT(MoveFilesToLibrary(QList<QUrl>)));
ui_->file_view->SetTaskManager(task_manager_); ui_->file_view->SetTaskManager(task_manager_);
// Cover manager connections
connect(cover_manager_.get(), SIGNAL(AddSongsToPlaylist(SongList)), SLOT(AddLibrarySongsToPlaylist(SongList)));
connect(cover_manager_.get(), SIGNAL(LoadSongsToPlaylist(SongList)), SLOT(LoadLibrarySongsToPlaylist(SongList)));
connect(cover_manager_.get(), SIGNAL(SongsDoubleClicked(SongList)), SLOT(LibrarySongsDoubleClicked(SongList)));
// Action connections // Action connections
connect(ui_->action_next_track, SIGNAL(triggered()), player_, SLOT(Next())); connect(ui_->action_next_track, SIGNAL(triggered()), player_, SLOT(Next()));
connect(ui_->action_previous_track, SIGNAL(triggered()), player_, SLOT(Previous())); connect(ui_->action_previous_track, SIGNAL(triggered()), player_, SLOT(Previous()));
@ -297,16 +277,16 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(ui_->action_renumber_tracks, SIGNAL(triggered()), SLOT(RenumberTracks())); connect(ui_->action_renumber_tracks, SIGNAL(triggered()), SLOT(RenumberTracks()));
connect(ui_->action_selection_set_value, SIGNAL(triggered()), SLOT(SelectionSetValue())); connect(ui_->action_selection_set_value, SIGNAL(triggered()), SLOT(SelectionSetValue()));
connect(ui_->action_edit_value, SIGNAL(triggered()), SLOT(EditValue())); connect(ui_->action_edit_value, SIGNAL(triggered()), SLOT(EditValue()));
connect(ui_->action_configure, SIGNAL(triggered()), settings_dialog_.get(), SLOT(show())); connect(ui_->action_configure, SIGNAL(triggered()), SLOT(OpenSettingsDialog()));
connect(ui_->action_about, SIGNAL(triggered()), about_dialog_.get(), SLOT(show())); connect(ui_->action_about, SIGNAL(triggered()), SLOT(ShowAboutDialog()));
connect(ui_->action_shuffle, SIGNAL(triggered()), playlists_, SLOT(ShuffleCurrent())); connect(ui_->action_shuffle, SIGNAL(triggered()), playlists_, SLOT(ShuffleCurrent()));
connect(ui_->action_open_media, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_open_media, SIGNAL(triggered()), SLOT(AddFile()));
connect(ui_->action_add_file, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_add_file, SIGNAL(triggered()), SLOT(AddFile()));
connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder())); connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder()));
connect(ui_->action_add_stream, SIGNAL(triggered()), SLOT(AddStream())); connect(ui_->action_add_stream, SIGNAL(triggered()), SLOT(AddStream()));
connect(ui_->action_cover_manager, SIGNAL(triggered()), cover_manager_.get(), SLOT(show())); connect(ui_->action_cover_manager, SIGNAL(triggered()), SLOT(ShowCoverManager()));
connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show())); connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show()));
connect(ui_->action_transcode, SIGNAL(triggered()), transcode_dialog_.get(), SLOT(show())); connect(ui_->action_transcode, SIGNAL(triggered()), SLOT(ShowTranscodeDialog()));
connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack())); connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack()));
connect(ui_->action_update_library, SIGNAL(triggered()), library_, SLOT(IncrementalScan())); connect(ui_->action_update_library, SIGNAL(triggered()), library_, SLOT(IncrementalScan()));
connect(ui_->action_rain, SIGNAL(toggled(bool)), player_, SLOT(MakeItRain(bool))); connect(ui_->action_rain, SIGNAL(toggled(bool)), player_, SLOT(MakeItRain(bool)));
@ -454,6 +434,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(radio_model_, SIGNAL(StreamError(QString)), error_dialog_.get(), SLOT(ShowMessage(QString))); connect(radio_model_, SIGNAL(StreamError(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
connect(radio_model_, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), player_, SLOT(HandleSpecialLoad(PlaylistItem::SpecialLoadResult))); connect(radio_model_, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), player_, SLOT(HandleSpecialLoad(PlaylistItem::SpecialLoadResult)));
connect(radio_model_, SIGNAL(StreamMetadataFound(QUrl,Song)), playlists_, SLOT(SetActiveStreamMetadata(QUrl,Song))); connect(radio_model_, SIGNAL(StreamMetadataFound(QUrl,Song)), playlists_, SLOT(SetActiveStreamMetadata(QUrl,Song)));
connect(radio_model_, SIGNAL(OpenSettingsAtPage(SettingsDialog::Page)), SLOT(OpenSettingsDialogAtPage(SettingsDialog::Page)));
connect(radio_model_, SIGNAL(AddItemToPlaylist(RadioItem*)), SLOT(InsertRadioItem(RadioItem*))); connect(radio_model_, SIGNAL(AddItemToPlaylist(RadioItem*)), SLOT(InsertRadioItem(RadioItem*)));
connect(radio_model_, SIGNAL(AddItemsToPlaylist(PlaylistItemList)), SLOT(InsertRadioItems(PlaylistItemList))); connect(radio_model_, SIGNAL(AddItemsToPlaylist(PlaylistItemList)), SLOT(InsertRadioItems(PlaylistItemList)));
connect(radio_model_->GetLastFMService(), SIGNAL(ScrobblingEnabledChanged(bool)), SLOT(ScrobblingEnabledChanged(bool))); connect(radio_model_->GetLastFMService(), SIGNAL(ScrobblingEnabledChanged(bool)), SLOT(ScrobblingEnabledChanged(bool)));
@ -464,11 +445,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
LastFMButtonVisibilityChanged(radio_model_->GetLastFMService()->AreButtonsVisible()); LastFMButtonVisibilityChanged(radio_model_->GetLastFMService()->AreButtonsVisible());
// Connections to the saved streams service // Connections to the saved streams service
SavedRadio* saved_radio = RadioModel::Service<SavedRadio>(); connect(RadioModel::Service<SavedRadio>(), SIGNAL(ShowAddStreamDialog()), SLOT(AddStream()));
add_stream_dialog_->set_add_on_accept(saved_radio);
connect(saved_radio, SIGNAL(ShowAddStreamDialog()),
add_stream_dialog_.get(), SLOT(show()));
qDebug() << t.restart() << "more connections"; qDebug() << t.restart() << "more connections";
@ -521,22 +498,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(global_shortcuts_, SIGNAL(SeekBackward()), player_, SLOT(SeekBackward())); connect(global_shortcuts_, SIGNAL(SeekBackward()), player_, SLOT(SeekBackward()));
connect(global_shortcuts_, SIGNAL(ShowHide()), SLOT(ToggleShowHide())); connect(global_shortcuts_, SIGNAL(ShowHide()), SLOT(ToggleShowHide()));
connect(global_shortcuts_, SIGNAL(ShowOSD()), player_, SLOT(ShowOSD())); connect(global_shortcuts_, SIGNAL(ShowOSD()), player_, SLOT(ShowOSD()));
settings_dialog_->SetGlobalShortcutManager(global_shortcuts_);
// Settings
connect(settings_dialog_.get(), SIGNAL(accepted()), SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), library_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), player_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), osd_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), ui_->library_view, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), player_->GetEngine(), SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), ui_->playlist->view(), SLOT(ReloadSettings()));
#ifdef ENABLE_WIIMOTEDEV
connect(settings_dialog_.get(), SIGNAL(accepted()), wiimotedev_shortcuts_, SLOT(ReloadSettings()));
#endif
// Add stream dialog
connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted()));
// Analyzer // Analyzer
ui_->analyzer->SetEngine(player_->GetEngine()); ui_->analyzer->SetEngine(player_->GetEngine());
@ -1140,6 +1101,7 @@ void MainWindow::EditTracks() {
} }
} }
EnsureEditTagDialogCreated();
edit_tag_dialog_->SetSongs(songs); edit_tag_dialog_->SetSongs(songs);
edit_tag_dialog_->SetTagCompleter(library_->model()->backend()); edit_tag_dialog_->SetTagCompleter(library_->model()->backend());
@ -1257,6 +1219,13 @@ void MainWindow::AddFolder() {
} }
void MainWindow::AddStream() { void MainWindow::AddStream() {
if (!add_stream_dialog_) {
add_stream_dialog_.reset(new AddStreamDialog);
connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted()));
add_stream_dialog_->set_add_on_accept(RadioModel::Service<SavedRadio>());
}
add_stream_dialog_->show(); add_stream_dialog_->show();
} }
@ -1269,8 +1238,6 @@ void MainWindow::PlaylistRemoveCurrent() {
ui_->playlist->view()->RemoveSelected(); ui_->playlist->view()->RemoveSelected();
} }
void MainWindow::PlaylistEditFinished(const QModelIndex& index) { void MainWindow::PlaylistEditFinished(const QModelIndex& index) {
if (index == playlist_menu_index_) if (index == playlist_menu_index_)
SelectionSetValue(); SelectionSetValue();
@ -1377,6 +1344,7 @@ void MainWindow::PlaylistUndoRedoChanged(QAction *undo, QAction *redo) {
} }
void MainWindow::ShowLibraryConfig() { void MainWindow::ShowLibraryConfig() {
EnsureSettingsDialogCreated();
settings_dialog_->OpenAtPage(SettingsDialog::Page_Library); settings_dialog_->OpenAtPage(SettingsDialog::Page_Library);
} }
@ -1466,3 +1434,79 @@ void MainWindow::PlaylistCopyToDevice() {
organise_dialog_->SetCopy(true); organise_dialog_->SetCopy(true);
organise_dialog_->show(); organise_dialog_->show();
} }
void MainWindow::ShowCoverManager() {
if (!cover_manager_) {
cover_manager_.reset(new AlbumCoverManager(network_, library_->backend()));
cover_manager_->Init();
// Cover manager connections
connect(cover_manager_.get(), SIGNAL(AddSongsToPlaylist(SongList)), SLOT(AddLibrarySongsToPlaylist(SongList)));
connect(cover_manager_.get(), SIGNAL(LoadSongsToPlaylist(SongList)), SLOT(LoadLibrarySongsToPlaylist(SongList)));
connect(cover_manager_.get(), SIGNAL(SongsDoubleClicked(SongList)), SLOT(LibrarySongsDoubleClicked(SongList)));
}
cover_manager_->show();
}
void MainWindow::EnsureSettingsDialogCreated() {
if (settings_dialog_)
return;
settings_dialog_.reset(new SettingsDialog);
settings_dialog_->SetLibraryDirectoryModel(library_->model()->directory_model());
#ifdef HAVE_GSTREAMER
if (GstEngine* engine = qobject_cast<GstEngine*>(player_->GetEngine())) {
settings_dialog_->SetGstEngine(engine);
}
#endif
settings_dialog_->SetGlobalShortcutManager(global_shortcuts_);
// Settings
connect(settings_dialog_.get(), SIGNAL(accepted()), SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), library_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), player_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), osd_, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), ui_->library_view, SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), player_->GetEngine(), SLOT(ReloadSettings()));
connect(settings_dialog_.get(), SIGNAL(accepted()), ui_->playlist->view(), SLOT(ReloadSettings()));
#ifdef ENABLE_WIIMOTEDEV
connect(settings_dialog_.get(), SIGNAL(accepted()), wiimotedev_shortcuts_, SLOT(ReloadSettings()));
#endif
}
void MainWindow::OpenSettingsDialog() {
EnsureSettingsDialogCreated();
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);
}
void MainWindow::ShowAboutDialog() {
if (!about_dialog_) {
about_dialog_.reset(new About);
}
about_dialog_->show();
}
void MainWindow::ShowTranscodeDialog() {
#ifdef HAVE_GSTREAMER
if (!transcode_dialog_) {
transcode_dialog_.reset(new TranscodeDialog);
}
transcode_dialog_->show();
#endif
}

View File

@ -28,6 +28,7 @@
#include "engines/engine_fwd.h" #include "engines/engine_fwd.h"
#include "library/librarymodel.h" #include "library/librarymodel.h"
#include "playlist/playlistitem.h" #include "playlist/playlistitem.h"
#include "ui/settingsdialog.h"
class About; class About;
class AddStreamDialog; class AddStreamDialog;
@ -52,7 +53,6 @@ class PlaylistParser;
class QueueManager; class QueueManager;
class RadioItem; class RadioItem;
class RadioModel; class RadioModel;
class SettingsDialog;
class Song; class Song;
class SystemTrayIcon; class SystemTrayIcon;
class TaskManager; class TaskManager;
@ -171,6 +171,14 @@ class MainWindow : public QMainWindow, public PlatformInterface {
void SongSaveComplete(); void SongSaveComplete();
void ShowCoverManager();
void ShowAboutDialog();
void ShowTranscodeDialog();
void EnsureSettingsDialogCreated();
void EnsureEditTagDialogCreated();
void OpenSettingsDialog();
void OpenSettingsDialogAtPage(SettingsDialog::Page page);
private: private:
void SaveGeometry(); void SaveGeometry();
void AddFilesToPlaylist(bool clear_first, const QList<QUrl>& urls); void AddFilesToPlaylist(bool clear_first, const QList<QUrl>& urls);
@ -181,6 +189,8 @@ class MainWindow : public QMainWindow, public PlatformInterface {
private: private:
Ui_MainWindow* ui_; Ui_MainWindow* ui_;
NetworkAccessManager* network_;
SystemTrayIcon* tray_icon_; SystemTrayIcon* tray_icon_;
OSD* osd_; OSD* osd_;
boost::scoped_ptr<EditTagDialog> edit_tag_dialog_; boost::scoped_ptr<EditTagDialog> edit_tag_dialog_;