Config: Add support for enums

This makes it possible to use enums as the config type.
Default values are now clearer and there's no need for casts
when calling Config::Get/Set anymore.

In order to add support for enums, the common code was updated to
handle enums by using the underlying type when loading/saving settings.

A copy constructor is also provided for conversions from
`ConfigInfo<Enum>` to `ConfigInfo<underlying_type<Enum>>`
so that enum settings can still easily work with code that doesn't care
about the actual enum values (like Graphics{Choice,Radio} in DolphinQt2
which only treat the setting as an integer).
This commit is contained in:
Léo Lam
2018-05-11 22:38:44 +02:00
parent 7dca7c237e
commit 6763a3fce1
10 changed files with 87 additions and 54 deletions

View File

@ -6,11 +6,7 @@
#include <QRadioButton>
namespace Config
{
template <typename T>
struct ConfigInfo;
}
#include "Common/Config/Config.h"
class GraphicsRadioInt : public QRadioButton
{
@ -21,6 +17,6 @@ public:
private:
void Update();
const Config::ConfigInfo<int>& m_setting;
Config::ConfigInfo<int> m_setting;
int m_value;
};