#ifndef _SETTINGS_H
#define _SETTINGS_H
#include <String.h>
#include "SettingsHandler.h"
namespace BPrivate {
extern Settings* settings;
class StringValueSetting : public SettingsArgvDispatcher {
public:
StringValueSetting(const char* name, const char* defaultValue,
const char* valueExpectedErrorString,
const char* wrongValueErrorString);
virtual ~StringValueSetting();
void ValueChanged(const char* newValue);
const char* Value() const;
virtual const char* Handle(const char* const *argv);
protected:
virtual void SaveSettingValue(Settings*);
virtual bool NeedsSaving() const;
const char* fDefaultValue;
const char* fValueExpectedErrorString;
const char* fWrongValueErrorString;
BString fValue;
};
class EnumeratedStringValueSetting : public StringValueSetting {
public:
EnumeratedStringValueSetting(const char* name, const char* defaultValue,
const char* const* values, const char* valueExpectedErrorString,
const char* wrongValueErrorString);
void ValueChanged(const char* newValue);
virtual const char* Handle(const char* const *argv);
protected:
const char* const* fValues;
};
class ScalarValueSetting : public SettingsArgvDispatcher {
public:
ScalarValueSetting(const char* name, int32 defaultValue,
const char* valueExpectedErrorString,
const char* wrongValueErrorString, int32 min = INT32_MIN,
int32 max = INT32_MAX);
void ValueChanged(int32 newValue);
int32 Value() const;
void GetValueAsString(char*) const;
virtual const char* Handle(const char* const *argv);
protected:
virtual void SaveSettingValue(Settings*);
virtual bool NeedsSaving() const;
int32 fDefaultValue;
int32 fValue;
int32 fMax;
int32 fMin;
const char* fValueExpectedErrorString;
const char* fWrongValueErrorString;
};
class HexScalarValueSetting : public ScalarValueSetting {
public:
HexScalarValueSetting(const char* name, int32 defaultValue,
const char* valueExpectedErrorString,
const char* wrongValueErrorString, int32 min = INT32_MIN,
int32 max = INT32_MAX);
void GetValueAsString(char* buffer) const;
protected:
virtual void SaveSettingValue(Settings* settings);
};
class BooleanValueSetting : public ScalarValueSetting {
public:
BooleanValueSetting(const char* name, bool defaultValue);
bool Value() const;
void SetValue(bool value);
virtual const char* Handle(const char* const *argv);
protected:
virtual void SaveSettingValue(Settings*);
};
}
using namespace BPrivate;
#endif