From 4df790a471ed9e8bc9bb3fc2d86c496942335047 Mon Sep 17 00:00:00 2001 From: Alex Anderson Date: Tue, 28 Aug 2018 07:39:50 -0700 Subject: [PATCH] UI: Make stats dockable Adds a new dock out of the stats widget. --- UI/forms/OBSBasic.ui | 27 +++++++++++++++++++++++++++ UI/window-basic-main.cpp | 11 ++++++++++- UI/window-basic-stats.cpp | 19 ++++++++++--------- UI/window-basic-stats.hpp | 2 +- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui index 87436e04d..65505b8b3 100644 --- a/UI/forms/OBSBasic.ui +++ b/UI/forms/OBSBasic.ui @@ -293,6 +293,7 @@ + @@ -1098,6 +1099,21 @@ + + + + 168 + 103 + + + + Basic.Stats + + + 2 + + + @@ -1656,6 +1672,17 @@ Basic.MainMenu.Help.Discord + + + true + + + true + + + Basic.Stats + + diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index ba4d90d9a..4977bfca8 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -289,6 +289,7 @@ OBSBasic::OBSBasic(QWidget *parent) assignDockToggle(ui->mixerDock, ui->toggleMixer); assignDockToggle(ui->transitionsDock, ui->toggleTransitions); assignDockToggle(ui->controlsDock, ui->toggleControls); + assignDockToggle(ui->statsDock, ui->toggleStats); //hide all docking panes ui->toggleScenes->setChecked(false); @@ -296,6 +297,7 @@ OBSBasic::OBSBasic(QWidget *parent) ui->toggleMixer->setChecked(false); ui->toggleTransitions->setChecked(false); ui->toggleControls->setChecked(false); + ui->toggleStats->setChecked(false); //restore parent window geometry const char *geometry = config_get_string(App()->GlobalConfig(), @@ -1573,6 +1575,10 @@ void OBSBasic::OBSInit() show(); #endif + /* setup stats dock */ + OBSBasicStats *statsDlg = new OBSBasicStats(ui->statsDock, false); + ui->statsDock->setWidget(statsDlg); + const char *dockStateStr = config_get_string(App()->GlobalConfig(), "BasicWindow", "DockState"); if (!dockStateStr) { @@ -6095,7 +6101,8 @@ void OBSBasic::on_resetUI_triggered() ui->sourcesDock, ui->mixerDock, ui->transitionsDock, - ui->controlsDock + ui->controlsDock, + ui->statsDock }; QList sizes { @@ -6111,6 +6118,7 @@ void OBSBasic::on_resetUI_triggered() ui->mixerDock->setVisible(true); ui->transitionsDock->setVisible(true); ui->controlsDock->setVisible(true); + ui->statsDock->setVisible(true); resizeDocks(docks, {cy, cy, cy, cy, cy}, Qt::Vertical); resizeDocks(docks, sizes, Qt::Horizontal); @@ -6128,6 +6136,7 @@ void OBSBasic::on_lockUI_toggled(bool lock) ui->mixerDock->setFeatures(features); ui->transitionsDock->setFeatures(features); ui->controlsDock->setFeatures(features); + ui->statsDock->setFeatures(features); } void OBSBasic::on_toggleListboxToolbars_toggled(bool visible) diff --git a/UI/window-basic-stats.cpp b/UI/window-basic-stats.cpp index b758c2f3f..db4890dd7 100644 --- a/UI/window-basic-stats.cpp +++ b/UI/window-basic-stats.cpp @@ -28,7 +28,7 @@ static void setThemeID(QWidget *widget, const QString &themeID) } } -OBSBasicStats::OBSBasicStats(QWidget *parent) +OBSBasicStats::OBSBasicStats(QWidget *parent, bool closeable) : QWidget (parent), cpu_info (os_cpu_usage_info_start()), timer (this) @@ -75,13 +75,15 @@ OBSBasicStats::OBSBasicStats(QWidget *parent) newStat("SkippedFrames", skippedFrames, 2); /* --------------------------------------------- */ - - QPushButton *closeButton = new QPushButton(QTStr("Close")); + QPushButton *closeButton = nullptr; + if(closeable) + closeButton = new QPushButton(QTStr("Close")); QPushButton *resetButton = new QPushButton(QTStr("Reset")); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addStretch(); buttonLayout->addWidget(resetButton); - buttonLayout->addWidget(closeButton); + if(closeable) + buttonLayout->addWidget(closeButton); /* --------------------------------------------- */ @@ -125,16 +127,15 @@ OBSBasicStats::OBSBasicStats(QWidget *parent) setLayout(mainLayout); /* --------------------------------------------- */ - - connect(closeButton, &QPushButton::clicked, [this] () {close();}); + if(closeable) + connect(closeButton, &QPushButton::clicked, + [this] () {close();}); connect(resetButton, &QPushButton::clicked, [this] () {Reset();}); installEventFilter(CreateShortcutFilter()); resize(800, 280); - setWindowFlags(Qt::Window | - Qt::WindowMinimizeButtonHint | - Qt::WindowCloseButtonHint); + setWindowTitle(QTStr("Basic.Stats")); setWindowIcon(QIcon(":/res/images/obs.png")); setWindowModality(Qt::NonModal); diff --git a/UI/window-basic-stats.hpp b/UI/window-basic-stats.hpp index a719b7da7..7f3e26967 100644 --- a/UI/window-basic-stats.hpp +++ b/UI/window-basic-stats.hpp @@ -55,7 +55,7 @@ class OBSBasicStats : public QWidget { virtual void closeEvent(QCloseEvent *event) override; public: - OBSBasicStats(QWidget *parent = nullptr); + OBSBasicStats(QWidget *parent = nullptr, bool closable = true); ~OBSBasicStats(); static void InitializeValues();