#pragma once #include #include #include namespace scwx { namespace qt { namespace settings { class PaletteSettingsImpl; class PaletteSettings { public: explicit PaletteSettings(); ~PaletteSettings(); PaletteSettings(const PaletteSettings&) = delete; PaletteSettings& operator=(const PaletteSettings&) = delete; PaletteSettings(PaletteSettings&&) noexcept; PaletteSettings& operator=(PaletteSettings&&) noexcept; const std::string& palette(const std::string& name) const; boost::json::value ToJson() const; static std::shared_ptr Create(); static std::shared_ptr Load(const boost::json::value* json, bool& jsonDirty); friend bool operator==(const PaletteSettings& lhs, const PaletteSettings& rhs); private: std::unique_ptr p; }; } // namespace settings } // namespace qt } // namespace scwx