You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.1 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #ifndef SCREEN_RECORDER_SETTINGS_MANAGER_HPP
  2. #define SCREEN_RECORDER_SETTINGS_MANAGER_HPP
  3. #define SETTINGS_KEY_PLUGIN_DIR "plugin_dir"
  4. #define SETTINGS_KEY_OUTPUT_DIR "output_dir"
  5. #define SETTINGS_KEY_SCREEN_ENABLED "screen_enabled"
  6. #define SETTINGS_KEY_WEBCAM_ENABLED "webcam_enabled"
  7. #define SETTINGS_KEY_VIDEO_DEVICE_ID "video_device_id"
  8. #define SETTINGS_KEY_AUDIO_ENABLED "audio_enabled"
  9. #define SETTINGS_KEY_AUDIO_DEVICE_ID "audio_device_id"
  10. #define SETTINGS_DEFAULT_PLUGIN_DIR "/usr/lib/x86_64-linux-gnu/obs-plugins/"
  11. #include <iostream>
  12. #include <list>
  13. using namespace std;
  14. class SettingsEntry
  15. {
  16. public:
  17. string key;
  18. string value;
  19. };
  20. class SettingsManager
  21. {
  22. public:
  23. SettingsManager();
  24. virtual ~SettingsManager();
  25. void Update(string key, string value);
  26. void UpdateBool(string key, bool value);
  27. void Save(string key, string value);
  28. void SaveAll();
  29. string Get(string key);
  30. string GetWithDefault(string key, string defaultValue);
  31. bool GetBool(string key);
  32. bool GetBoolWithDefault(string key, bool defaultValue);
  33. private:
  34. list<SettingsEntry*> settings;
  35. void readAll();
  36. void saveAll();
  37. };
  38. #endif