/* * Copyright (c) 2020, Idan Horowitz * Copyright (c) 2021, the SerenityOS developers. * Copyright (c) 2021, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace GUI { class SettingsWindow : public GUI::Window { C_OBJECT(SettingsWindow) public: class Tab : public GUI::Widget { public: virtual void apply_settings() = 0; virtual void reset_default_values() {}; }; enum class ShowDefaultsButton { Yes, No, }; virtual ~SettingsWindow() override; template T& add_tab(StringView const& title, Args&&... args) { auto& t = m_tab_widget->add_tab(title, forward(args)...); m_tabs.append(t); return t; } private: SettingsWindow(StringView title, ShowDefaultsButton = ShowDefaultsButton::No); RefPtr m_tab_widget; NonnullRefPtrVector m_tabs; RefPtr m_ok_button; RefPtr m_cancel_button; RefPtr m_apply_button; RefPtr m_reset_button; }; }