app_settings.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <QSettings>
  3. #include <QDebug>
  4. #include <QDir>
  5. #include <QVAriant>
  6. #include <memory>
  7. #include "common.h"
  8. class AppSettings
  9. {
  10. public:
  11. explicit AppSettings(const QString& file = "VideoPlayer.ini");
  12. ~AppSettings(){};
  13. public:
  14. QVariant get_general(const QString& key) const;
  15. void set_general(const QString& key, const QVariant& value);
  16. QVariant get_info(const QString& key) const;
  17. void set_info(const QString& key, const QVariant& value);
  18. QVariant get_recentfiles(const QString& key = "files") const;
  19. void set_recentfiles(const QVariant& value = QVariant::Invalid, const QString& key = "files");
  20. QVariant get_savedplaylists(const QString& key = "files") const;
  21. void set_savedplaylists(const QVariant& value = QVariant::Invalid, const QString& key = "files");
  22. private:
  23. enum SectionID
  24. {
  25. SECTION_ID_NONE = -1,
  26. SECTION_ID_GENERAL,
  27. SECTION_ID_INFO,
  28. SECTION_ID_RECENTFILES,
  29. SECTION_ID_SAVEDPLAYLISTFILES,
  30. SECTION_ID_MAX
  31. };
  32. typedef struct Section
  33. {
  34. SectionID id;
  35. const char* str;
  36. } Section;
  37. private:
  38. void print_settings() const;
  39. void set_value(SectionID id, const QString& key, const QVariant& value);
  40. void set_value(const QString& group, const QString& key, const QVariant& value);
  41. QVariant get_value(const QString& group, const QString& key) const;
  42. QVariant get_value(SectionID id, const QString& key) const;
  43. inline static QString group_key(const QString& group, const QString& key);
  44. private:
  45. std::unique_ptr<QSettings> m_pSettings;
  46. static const Section m_sections[];
  47. };