#ifndef INCLUDEGUIGUISCENEMANAGER_H
#define INCLUDEGUIGUISCENEMANAGER_H

#include <QObject>

#include <map>

class GUI;
class Scene;

class GuiSceneManager : public QObject
{
    Q_OBJECT
private:
    explicit GuiSceneManager(QObject *parent = nullptr);
    ~GuiSceneManager();

public:
    static GuiSceneManager& getInstance() {
        static GuiSceneManager instance;
        return instance;
    }

    bool registerScene(QString scene_name, Scene* name);

    bool changeScene(QString scene_name, QString args = "");

    bool showDetachedScene(QString scene_name, QString args = "");

    bool hideDetachedScene(QString scene_name);

    bool hideMainWindow();

    bool showMainWindow();

private:
    std::map<QString, Scene*> scenes_;

    QString current_scene_;
    GUI* gui_;

signals:

public slots:
};

#endif // INCLUDEGUIGUISCENEMANAGER_H
