Files
kaizen/src/frontend/KaizenQt.hpp
2024-08-16 00:02:14 +02:00

42 lines
1.4 KiB
C++

#pragma once
#include <EmuThread.hpp>
#include <MainWindow.hpp>
#include <SettingsWindow.hpp>
enum class CompositorCategory {
Windows, MacOS, XCB, Wayland
};
static inline CompositorCategory GetOSCompositorCategory() {
const QString platform_name = QGuiApplication::platformName();
if (platform_name == QStringLiteral("windows"))
return CompositorCategory::Windows;
else if (platform_name == QStringLiteral("xcb"))
return CompositorCategory::XCB;
else if (platform_name == QStringLiteral("wayland") ||
platform_name == QStringLiteral("wayland-egl"))
return CompositorCategory::Wayland;
else if (platform_name == QStringLiteral("cocoa") || platform_name == QStringLiteral("ios"))
return CompositorCategory::MacOS;
Util::error("Unknown Qt platform!");
return CompositorCategory::Windows;
}
class KaizenQt : public QWidget {
Q_OBJECT
public:
KaizenQt() noexcept;
void LoadTAS(const QString& path) const noexcept;
void LoadROM(const QString& path) noexcept;
void dropEvent(QDropEvent*) override;
void dragEnterEvent(QDragEnterEvent*) override;
void keyPressEvent(QKeyEvent*) override;
void keyReleaseEvent(QKeyEvent*) override;
private:
void Quit() noexcept;
void ConnectMainWindowSignalsToSlots() noexcept;
std::unique_ptr<MainWindowController> mainWindow;
std::unique_ptr<SettingsWindow> settingsWindow;
std::unique_ptr<EmuThread> emuThread;
};