lhstylemanager.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #include "lhstylemanager.h"
  2. #include "LHQLogAPI.h"
  3. #include <QDebug>
  4. LHStyleManager* LHStyleManager::m_instance = NULL;
  5. LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
  6. {
  7. m_nCurStyle = eWhiteStyle;
  8. }
  9. LHStyleManager::~LHStyleManager()
  10. {
  11. if(m_instance)
  12. {
  13. delete m_instance;
  14. }
  15. }
  16. LHStyleManager *LHStyleManager::Instance()
  17. {
  18. if(m_instance != NULL)
  19. {
  20. return m_instance;
  21. }
  22. m_instance = new LHStyleManager();
  23. return m_instance;
  24. }
  25. void LHStyleManager::AddWidget(QWidget *widget)
  26. {
  27. if(widget != NULL)
  28. {
  29. m_widgetList.append(widget);
  30. UpdateWidgetStyle(widget);
  31. // if(!m_widgetList.contains(widget))
  32. // {
  33. // m_widgetList.append(widget);
  34. // UpdateWidgetStyle(widget);
  35. // }else {
  36. // LH_WRITE_LOG_DEBUG("Widget already exist");
  37. // }
  38. }else {
  39. LH_WRITE_ERROR("Widget is NULL");
  40. }
  41. // qDebug() << "widget:" << widget;
  42. }
  43. void LHStyleManager::RemoveWidget(QWidget* widget)
  44. {
  45. if(widget == NULL)
  46. {
  47. return;
  48. }
  49. if(m_widgetList.contains(widget))
  50. {
  51. m_widgetList.removeOne(widget);
  52. }
  53. }
  54. void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
  55. {
  56. if(widget == NULL)
  57. {
  58. return;
  59. }
  60. QString strBasePath = QCoreApplication::applicationDirPath();
  61. QString strStylePath;
  62. QString strName = widget->objectName().toLower();
  63. if(m_nCurStyle == eWhiteStyle)
  64. {
  65. strStylePath = "white";
  66. }
  67. else if(m_nCurStyle == eBlackStyle)
  68. {
  69. strStylePath = "black";
  70. }
  71. QString strStyleFile = strBasePath + QString("/%1/%2.qss").arg(strStylePath).arg(strName);
  72. // LH_WRITE_LOG_DEBUG(QString("Set style file: %1").arg(strStyleFile));
  73. QFile file(strStyleFile);
  74. if(!file.open(QFile::ReadOnly))
  75. {
  76. LH_WRITE_ERROR(QString("Open qss file failed: %1").arg(strStyleFile));
  77. return;
  78. }
  79. // QString styleSheet = QLatin1String(file.readAll());
  80. QString styleSheet = file.readAll();
  81. widget->setStyleSheet(styleSheet);
  82. file.close();
  83. }
  84. void LHStyleManager::SetSkinStyle(SkinStyle style)
  85. {
  86. if(m_nCurStyle == style)
  87. {
  88. return;
  89. }
  90. m_nCurStyle = style;
  91. for(int i = 0; i < m_widgetList.size(); i++)
  92. {
  93. QWidget* widget = m_widgetList.at(i);
  94. if(widget == NULL) continue;
  95. UpdateWidgetStyle(widget);
  96. }
  97. emit signal_skinStyleChanged(m_nCurStyle);
  98. }