#include "lhstylemanager.h" #include "LHQLogAPI.h" #include 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.append(widget); UpdateWidgetStyle(widget); // if(!m_widgetList.contains(widget)) // { // m_widgetList.append(widget); // UpdateWidgetStyle(widget); // }else { // LH_WRITE_LOG_DEBUG("Widget already exist"); // } }else { LH_WRITE_ERROR("Widget is NULL"); } // qDebug() << "widget:" << widget; } void LHStyleManager::RemoveWidget(QWidget* widget) { if(widget == NULL) { return; } if(m_widgetList.contains(widget)) { m_widgetList.removeOne(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); // LH_WRITE_LOG_DEBUG(QString("Set style file: %1").arg(strStyleFile)); QFile file(strStyleFile); if(!file.open(QFile::ReadOnly)) { LH_WRITE_ERROR(QString("Open qss file failed: %1").arg(strStyleFile)); return; } // 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); } emit signal_skinStyleChanged(m_nCurStyle); }