#ifndef ASH_AMBIENT_AMBIENT_UI_SETTINGS_H_
#define ASH_AMBIENT_AMBIENT_UI_SETTINGS_H_
#include <optional>
#include <string>
#include "ash/ambient/ambient_constants.h"
#include "ash/ash_export.h"
#include "ash/constants/ambient_video.h"
#include "ash/webui/personalization_app/mojom/personalization_app.mojom-shared.h"
#include "base/values.h"
class PrefService;
namespace ash {
class ASH_EXPORT AmbientUiSettings {
public:
static AmbientUiSettings ReadFromPrefService(PrefService& pref_service);
AmbientUiSettings();
explicit AmbientUiSettings(personalization_app::mojom::AmbientTheme theme,
std::optional<AmbientVideo> video = std::nullopt);
AmbientUiSettings(const AmbientUiSettings&);
AmbientUiSettings& operator=(const AmbientUiSettings&);
~AmbientUiSettings();
personalization_app::mojom::AmbientTheme theme() const { return theme_; }
const std::optional<AmbientVideo>& video() const { return video_; }
bool operator==(const AmbientUiSettings& other) const;
bool operator!=(const AmbientUiSettings& other) const;
void WriteToPrefService(PrefService& pref_service) const;
std::string ToString() const;
private:
static std::optional<AmbientUiSettings> CreateFromDict(
const base::Value::Dict& dict);
bool IsValid() const;
personalization_app::mojom::AmbientTheme theme_ = kDefaultAmbientTheme;
std::optional<AmbientVideo> video_;
};
}
#endif