console: Add a mechanism to allow components to add pages

Add a MainWindow signal that is emitted when a debug console is created. Relay
that signal to the Application. Add an AddPage method to the Console class that
allows components to populate pages when they receive the signal.
This commit is contained in:
Jim Broadus 2020-12-31 13:30:59 -08:00 committed by John Maguire
parent 2b99d32bee
commit 0ee64a32f6
5 changed files with 20 additions and 1 deletions

View File

@ -32,6 +32,7 @@ class QSettings;
class AlbumCoverLoader;
class Appearance;
class ApplicationImpl;
class Console;
class CoverProviders;
class CurrentArtLoader;
class Database;
@ -121,6 +122,8 @@ class Application : public QObject {
void SaveSettings(QSettings* settings);
void SettingsDialogRequested(SettingsDialog::Page page);
void NewDebugConsole(Console* console);
private slots:
void SaveSettings_();

View File

@ -77,3 +77,7 @@ QObject* Console::FindTopLevelObject(QString& name) {
if (obj->objectName() == name) return obj;
return nullptr;
}
void Console::AddPage(QWidget* page, const QString& label) {
ui_.tabWidget->addTab(page, label);
}

View File

@ -12,6 +12,8 @@ class Console : public QDialog {
public:
Console(Application* app, QWidget* parent = nullptr);
void AddPage(QWidget* page, const QString& label);
private slots:
// Database
void RunQuery();

View File

@ -487,6 +487,10 @@ MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd,
connect(ui_->action_view_stream_details, SIGNAL(triggered()),
SLOT(DiscoverStreamDetails()));
// Relay this signal to the Application
connect(this, SIGNAL(NewDebugConsole(Console*)), app_,
SIGNAL(NewDebugConsole(Console*)));
background_streams_->AddAction("Rain", ui_->action_rain);
background_streams_->AddAction("Hypnotoad", ui_->action_hypnotoad);
background_streams_->AddAction("Make it so!", ui_->action_enterprise);
@ -2741,7 +2745,11 @@ StreamDiscoverer* MainWindow::CreateStreamDiscoverer() {
return discoverer;
}
Console* MainWindow::CreateDebugConsole() { return new Console(app_, this); }
Console* MainWindow::CreateDebugConsole() {
Console* console = new Console(app_, this);
emit NewDebugConsole(console);
return console;
}
void MainWindow::ShowAboutDialog() { about_dialog_->show(); }

View File

@ -152,6 +152,8 @@ class MainWindow : public QMainWindow, public PlatformInterface {
void StopAfterToggled(bool stop);
void IntroPointReached();
void NewDebugConsole(Console* console);
private slots:
void FilePathChanged(const QString& path);