Преглед на файлове

UI: Save/remember stats window geometry

jp9000 преди 8 години
родител
ревизия
3d5759335c
променени са 2 файла, в които са добавени 36 реда и са изтрити 0 реда
  1. 33 0
      UI/window-basic-stats.cpp
  2. 3 0
      UI/window-basic-stats.hpp

+ 33 - 0
UI/window-basic-stats.cpp

@@ -5,6 +5,7 @@
 #include "platform.hpp"
 #include "obs-app.hpp"
 
+#include <QDesktopWidget>
 #include <QPushButton>
 #include <QScrollArea>
 #include <QVBoxLayout>
@@ -144,6 +145,38 @@ OBSBasicStats::OBSBasicStats(QWidget *parent)
 	timer.setInterval(TIMER_INTERVAL);
 	timer.start();
 	Update();
+
+	OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
+
+	const char *geometry = config_get_string(main->Config(),
+			"Stats", "geometry");
+	if (geometry != NULL) {
+		QByteArray byteArray = QByteArray::fromBase64(
+				QByteArray(geometry));
+		restoreGeometry(byteArray);
+
+		QRect windowGeometry = normalGeometry();
+		if (!WindowPositionValid(windowGeometry)) {
+			QRect rect = App()->desktop()->geometry();
+			setGeometry(QStyle::alignedRect(
+						Qt::LeftToRight,
+						Qt::AlignCenter,
+						size(), rect));
+		}
+	}
+}
+
+void OBSBasicStats::closeEvent(QCloseEvent *event)
+{
+	OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
+	if (isVisible()) {
+		config_set_string(main->Config(),
+				"Stats", "geometry",
+				saveGeometry().toBase64().constData());
+		config_save_safe(main->Config(), "tmp", nullptr);
+	}
+
+	QDialog::closeEvent(event);
 }
 
 OBSBasicStats::~OBSBasicStats()

+ 3 - 0
UI/window-basic-stats.hpp

@@ -9,6 +9,7 @@
 #include <QList>
 
 class QGridLayout;
+class QCloseEvent;
 
 class OBSBasicStats : public QDialog {
 	Q_OBJECT
@@ -51,6 +52,8 @@ class OBSBasicStats : public QDialog {
 	void Update();
 	void Reset();
 
+	virtual void closeEvent(QCloseEvent *event) override;
+
 public:
 	OBSBasicStats(QWidget *parent = nullptr);
 	~OBSBasicStats();