Chatterino
ChatterinoSetting.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QString>
4 #include <pajlada/settings.hpp>
5 
6 namespace chatterino {
7 
8 void _registerSetting(std::weak_ptr<pajlada::Settings::SettingData> setting);
9 
10 template <typename Type>
11 class ChatterinoSetting : public pajlada::Settings::Setting<Type>
12 {
13 public:
14  ChatterinoSetting(const std::string &path)
15  : pajlada::Settings::Setting<Type>(path)
16  {
17  _registerSetting(this->getData());
18  }
19 
20  ChatterinoSetting(const std::string &path, const Type &defaultValue)
21  : pajlada::Settings::Setting<Type>(path, defaultValue)
22  {
23  _registerSetting(this->getData());
24  }
25 
26  template <typename T2>
27  ChatterinoSetting &operator=(const T2 &newValue)
28  {
29  this->setValue(newValue);
30 
31  return *this;
32  }
33 
34  ChatterinoSetting &operator=(Type &&newValue) noexcept
35  {
36  pajlada::Settings::Setting<Type>::operator=(newValue);
37 
38  return *this;
39  }
40 
41  using pajlada::Settings::Setting<Type>::operator==;
42  using pajlada::Settings::Setting<Type>::operator!=;
43 
44  using pajlada::Settings::Setting<Type>::operator Type;
45 };
46 
53 
54 template <typename Enum>
56  : public ChatterinoSetting<typename std::underlying_type<Enum>::type>
57 {
58  using Underlying = typename std::underlying_type<Enum>::type;
59 
60 public:
62 
63  EnumSetting(const std::string &path, const Enum &defaultValue)
64  : ChatterinoSetting<Underlying>(path, Underlying(defaultValue))
65  {
66  _registerSetting(this->getData());
67  }
68 
69  template <typename T2>
70  EnumSetting<Enum> &operator=(Enum newValue)
71  {
72  this->setValue(Underlying(newValue));
73 
74  return *this;
75  }
76 
77  operator Enum()
78  {
79  return Enum(this->getValue());
80  }
81 
82  Enum getEnum()
83  {
84  return Enum(this->getValue());
85  }
86 };
87 
88 } // namespace chatterino
Definition: ChatterinoSetting.hpp:11
EnumSetting(const std::string &path, const Enum &defaultValue)
Definition: ChatterinoSetting.hpp:63
Definition: Application.cpp:48
ChatterinoSetting & operator=(Type &&newValue) noexcept
Definition: ChatterinoSetting.hpp:34
ChatterinoSetting(const std::string &path, const Type &defaultValue)
Definition: ChatterinoSetting.hpp:20
void _registerSetting(std::weak_ptr< pajlada::Settings::SettingData > setting)
Definition: ChatterinoSetting.cpp:7
Definition: ChatterinoSetting.hpp:55
Definition: Command.hpp:25
Settings which are availlable for reading and writing on the gui thread.
Definition: Settings.hpp:78
ChatterinoSetting(const std::string &path)
Definition: ChatterinoSetting.hpp:14
EnumSetting< Enum > & operator=(Enum newValue)
Definition: ChatterinoSetting.hpp:70
Enum getEnum()
Definition: ChatterinoSetting.hpp:82
ChatterinoSetting & operator=(const T2 &newValue)
Definition: ChatterinoSetting.hpp:27