view include/gui/window.h @ 242:82470f83f0c2

autotools: make windows build work also, I've added back the method I made for getting the vars as variables rather than separate files, so less clutter in tmp folders :)
author Paper <paper@paper.us.eu.org>
date Mon, 22 Jan 2024 19:06:23 -0800
parents 4d461ef7d424
children c130f47f6f48
line wrap: on
line source

#ifndef __window_h
#define __window_h
#include "core/config.h"
#include <QMainWindow>
#include <memory>

/* *could* be forward-declared, but this causes
   any file that #includes this to have to #include
   these as well due to unique_ptr */
#include <QWidget>
#include <QStackedWidget>
#include <QCloseEvent>
#include <QThread>
#include "gui/widgets/sidebar.h"

Q_DECLARE_METATYPE(std::vector<std::string>);

class PlayingThread : public QThread {
		Q_OBJECT

	public:
		PlayingThread(QObject* object = nullptr) : QThread(object) {}

	private:
		void run() override;

	signals:
		void Done(const std::vector<std::string>& files);
};

class MainWindow final : public QMainWindow {
		Q_OBJECT

	public:
		MainWindow(QWidget* parent = nullptr);
		void SetActivePage(QWidget* page);
		void CreateBars();
		void AddMainWidgets();
		void RetranslateUI();
		void AsyncSynchronize(QAction* action, QStackedWidget* stack);
		void changeEvent(QEvent* event) override;
		void showEvent(QShowEvent* event) override;
		void closeEvent(QCloseEvent* event) override;

	private:
		std::unique_ptr<QWidget> main_widget = nullptr;
		std::unique_ptr<QStackedWidget> stack = nullptr;
		std::unique_ptr<SideBar> sidebar = nullptr;

        std::unique_ptr<PlayingThread> thread = nullptr;
};

#endif // __window_h