diff include/core/session.h @ 315:34347fd2a2de

session: allow printing status messages ...!
author Paper <paper@paper.us.eu.org>
date Tue, 11 Jun 2024 14:16:40 -0400
parents ac1451035c85
children d928ec7b6a0d
line wrap: on
line diff
--- a/include/core/session.h	Tue Jun 11 13:29:45 2024 -0400
+++ b/include/core/session.h	Tue Jun 11 14:16:40 2024 -0400
@@ -4,27 +4,42 @@
 #include "core/config.h"
 #include "gui/locale.h"
 
+#include <QObject>
 #include <QElapsedTimer>
 
 #include "semver/semver.hpp"
 
 #include <atomic>
+#include <string>
 
-struct Session {
+class MainWindow;
+
+struct Session : public QObject {
+	Q_OBJECT
+
 public:
-	Session() { timer.start(); }
+	Session();
+
+	void SetMainWindow(MainWindow* window);
+
+	void SetStatusBar(const std::string& message);
+
 	/* we literally *cannot* be lying to the user by doing this */
-	void IncrementRequests() { requests++; };
-	unsigned int GetRequests() { return requests; };
-	int uptime() { return timer.elapsed(); }
+	void IncrementRequests();
+	unsigned int GetRequests();
+	int uptime();
 
 	Config config;
 	static constexpr semver::version version{PACKAGE_VERSION};
 
+signals:
+	void StatusBarChange(const std::string& message);
+
 private:
 	/* IncrementRequests() gets called by different threads */
-	std::atomic<unsigned int> requests = 0;
-	QElapsedTimer timer;
+	std::atomic<unsigned int> requests_ = 0;
+	QElapsedTimer timer_;
+	MainWindow* window_;
 };
 
 extern Session session;