/*
    SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com>
    SPDX-License-Identifier: GPL-2.0-or-later
*/

#ifndef SCHEMESTRACKER_H
#define SCHEMESTRACKER_H

// local
#include "../windowinfowrap.h"

// Qt
#include <QObject>


namespace Latte {
namespace WindowSystem {
class AbstractWindowInterface;
class SchemeColors;
}
}

namespace Latte {
namespace WindowSystem {
namespace Tracker {

class Schemes : public QObject {
    Q_OBJECT

public:
    Schemes(AbstractWindowInterface *parent);
    ~Schemes() override;

    SchemeColors *schemeForWindow(WindowId wId);
    void setColorSchemeForWindow(WindowId wId, QString scheme);

    SchemeColors *schemeForFile(const QString &scheme);

signals:
    void colorSchemeChanged(const WindowId &wid);
    void defaultSchemeChanged();

private slots:
    void updateDefaultScheme();

private:
    void init();

private:
     AbstractWindowInterface *m_wm;

     //! scheme file and its loaded colors
     QMap<QString, Latte::WindowSystem::SchemeColors *> m_schemes;

     //! window id and its corresponding scheme file
     QMap<WindowId, QString> m_windowScheme;
};

}
}
}

#endif