#include "lhstylemanager.h"

LHStyleManager* LHStyleManager::m_instance = NULL;

LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
{
    m_nCurStyle = eWhiteStyle;
}

LHStyleManager::~LHStyleManager()
{
    if(m_instance)
    {
        delete m_instance;
    }
}

LHStyleManager *LHStyleManager::Instance()
{
    if(m_instance != NULL)
    {
        return m_instance;
    }
    m_instance = new LHStyleManager();
    return m_instance;
}

void LHStyleManager::AddWidget(QWidget *widget)
{
    if(widget != NULL && !m_widgetList.contains(widget))
    {
        m_widgetList.append(widget);
        UpdateWidgetStyle(widget);
    }
}

void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
{
    if(widget == NULL)
    {
        return;
    }
    QString strBasePath = QCoreApplication::applicationDirPath();
    QString strStylePath;
    QString strName = widget->objectName().toLower();
    if(m_nCurStyle == eWhiteStyle)
    {
        strStylePath = "white";
    }
    else if(m_nCurStyle == eBlackStyle)
    {
        strStylePath = "black";
    }
    QString strStyleFile = strBasePath + QString("/%1/%2.qss").arg(strStylePath).arg(strName);
    QFile file(strStyleFile);
    file.open(QFile::ReadOnly);
    // QString styleSheet = QLatin1String(file.readAll());
    QString styleSheet = file.readAll();
    widget->setStyleSheet(styleSheet);
    file.close();
}

void LHStyleManager::SetSkinStyle(SkinStyle style)
{
    if(m_nCurStyle == style)
    {
        return;
    }

    m_nCurStyle = style;

    for(int i = 0; i < m_widgetList.size(); i++)
    {
        QWidget* widget = m_widgetList.at(i);
        if(widget == NULL) continue;
        UpdateWidgetStyle(widget);
    }
}