view include/core/session.h @ 343:1faa72660932

*: transfer back to cmake from autotools autotools just made lots of things more complicated than they should have and many things broke (i.e. translations)
author Paper <paper@paper.us.eu.org>
date Thu, 20 Jun 2024 05:56:06 -0400
parents d928ec7b6a0d
children
line wrap: on
line source

#ifndef MINORI_CORE_SESSION_H_
#define MINORI_CORE_SESSION_H_

#include "core/time.h"
#include "core/config.h"
#include "gui/locale.h"

#include <QObject>
#include <QElapsedTimer>

#include "semver/semver.hpp"

#include <atomic>
#include <string>
#include <random>

class MainWindow;

struct Session : public QObject {
	Q_OBJECT

public:
	Session();

	void SetMainWindow(MainWindow* window);

	void SetStatusBar(const std::string& message);

	/* we literally *cannot* be lying to the user by doing this */
	void IncrementRequests();
	unsigned int GetRequests();
	int uptime();

	Config config;

	std::mt19937 gen;

	static constexpr semver::version version{
		MINORI_VERSION_MAJOR,
		MINORI_VERSION_MINOR,
		MINORI_VERSION_PATCH,
	};

signals:
	void StatusBarChange(const std::string& message);

private:
	/* IncrementRequests() gets called by different threads */
	std::atomic<unsigned int> requests_ = 0;
	QElapsedTimer timer_;
	MainWindow* window_;
};

extern Session session;

#endif // MINORI_CORE_SESSION_H_