lhstylemanager.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "lhstylemanager.h"
  2. LHStyleManager* LHStyleManager::m_instance = NULL;
  3. LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
  4. {
  5. m_nCurStyle = eBlackStyle;
  6. }
  7. LHStyleManager::~LHStyleManager()
  8. {
  9. if(m_instance)
  10. {
  11. delete m_instance;
  12. }
  13. }
  14. LHStyleManager *LHStyleManager::Instance()
  15. {
  16. if(m_instance != NULL)
  17. {
  18. return m_instance;
  19. }
  20. m_instance = new LHStyleManager();
  21. return m_instance;
  22. }
  23. void LHStyleManager::AddWidget(QWidget *widget)
  24. {
  25. if(widget != NULL && !m_widgetList.contains(widget))
  26. {
  27. m_widgetList.append(widget);
  28. UpdateWidgetStyle(widget);
  29. }
  30. }
  31. void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
  32. {
  33. if(widget == NULL)
  34. {
  35. return;
  36. }
  37. QString strBasePath = QCoreApplication::applicationDirPath();
  38. QString strStylePath;
  39. QString strName = widget->objectName().toLower();
  40. if(m_nCurStyle == eWhiteStyle)
  41. {
  42. strStylePath = "white";
  43. }
  44. else if(m_nCurStyle == eBlackStyle)
  45. {
  46. strStylePath = "black";
  47. }
  48. QString strStyleFile = strBasePath + QString("/%1/%2.qss").arg(strStylePath).arg(strName);
  49. QFile file(strStyleFile);
  50. file.open(QFile::ReadOnly);
  51. QString styleSheet = QLatin1String(file.readAll());
  52. widget->setStyleSheet(styleSheet);
  53. file.close();
  54. }
  55. void LHStyleManager::SetSkinStyle(SkinStyle style)
  56. {
  57. if(m_nCurStyle == style)
  58. {
  59. return;
  60. }
  61. m_nCurStyle = style;
  62. for(int i = 0; i < m_widgetList.size(); i++)
  63. {
  64. QWidget* widget = m_widgetList.at(i);
  65. if(widget == NULL) continue;
  66. UpdateWidgetStyle(widget);
  67. }
  68. }