/ src / modules / alwaysontop / AlwaysOnTop / SettingsObserver.h
SettingsObserver.h
 1  #pragma once
 2  
 3  #include <unordered_set>
 4  
 5  #include <Settings.h>
 6  #include <SettingsConstants.h>
 7  
 8  class SettingsObserver
 9  {
10  public:
11      SettingsObserver(std::unordered_set<SettingId> observedSettings) :
12          m_observedSettings(std::move(observedSettings))
13      {
14          AlwaysOnTopSettings::instance().AddObserver(*this);
15      }
16  
17      virtual ~SettingsObserver()
18      {
19          AlwaysOnTopSettings::instance().RemoveObserver(*this);
20      }
21  
22      virtual void SettingsUpdate(SettingId type) {}
23  
24      bool WantsToBeNotified(SettingId type) const noexcept 
25      {
26          return m_observedSettings.contains(type);
27      }
28  
29  protected:
30      std::unordered_set<SettingId> m_observedSettings;
31  };