QFDIcon.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #include "QFDIcon.h"
  2. #include <QFluentWidgets.h>
  3. QString QFDIcon::iconName(QFDIcon::IconType type)
  4. {
  5. switch (type) {
  6. case Data:
  7. return "Data";
  8. case Detail:
  9. return "Detail";
  10. case Expert:
  11. return "Expert";
  12. case Project:
  13. return "Project";
  14. case User:
  15. return "User";
  16. }
  17. return "Unknown";
  18. }
  19. QFDIcon::QFDIcon(IconType type, Qfw::Theme t) : FluentIconBase(""), m_theme(t), m_type(type)
  20. {
  21. iconEngine->setIconPath(iconPath());
  22. }
  23. QString QFDIcon::iconPath()
  24. {
  25. QString colorName;
  26. if (m_theme == Qfw::Theme::AUTO) {
  27. colorName = QFWIns.isDarkTheme() ? "white" : "black";
  28. } else {
  29. colorName = Qfw::ThemeString(m_theme).toLower();
  30. }
  31. return QString(":/resource/svg/%1_%2.svg").arg(iconName(m_type)).arg(colorName);
  32. }
  33. QIcon QFDIcon::icon()
  34. {
  35. return QIcon(iconEngine->clone());
  36. }
  37. QString QFDIcon::typeName() const
  38. {
  39. return iconName(m_type);
  40. }
  41. QString QFDIcon::enumName() const
  42. {
  43. QMetaEnum metaEnum = QMetaEnum::fromType<IconType>();
  44. return metaEnum.valueToKey(m_type);
  45. }
  46. FluentIconBase *QFDIcon::clone()
  47. {
  48. return new QFDIcon(m_type, m_theme);
  49. }
  50. Qfw::Theme QFDIcon::theme() const
  51. {
  52. return m_theme;
  53. }
  54. void QFDIcon::setTheme(const Qfw::Theme &theme)
  55. {
  56. m_theme = theme;
  57. iconEngine->setIconPath(iconPath());
  58. }