Serenity Operating System
at master 63 lines 1.7 kB view raw
1/* 2 * Copyright (c) 2019-2020, Jesse Buhagiar <jooster669@gmail.com> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include "MonitorWidget.h" 10#include <LibCore/Timer.h> 11#include <LibEDID/EDID.h> 12#include <LibGUI/ColorInput.h> 13#include <LibGUI/ComboBox.h> 14#include <LibGUI/RadioButton.h> 15#include <LibGUI/SettingsWindow.h> 16#include <WindowServer/ScreenLayout.h> 17 18namespace DisplaySettings { 19 20class MonitorSettingsWidget final : public GUI::SettingsWindow::Tab { 21 C_OBJECT(MonitorSettingsWidget); 22 23public: 24 ~MonitorSettingsWidget() override 25 { 26 if (m_showing_screen_numbers) 27 show_screen_numbers(false); 28 } 29 30 virtual void apply_settings() override; 31 void show_screen_numbers(bool); 32 33protected: 34 void show_event(GUI::ShowEvent& event) override; 35 void hide_event(GUI::HideEvent& event) override; 36 37private: 38 MonitorSettingsWidget(); 39 40 void create_frame(); 41 void create_resolution_list(); 42 void load_current_settings(); 43 void selected_screen_index_or_resolution_changed(); 44 45 size_t m_selected_screen_index { 0 }; 46 47 WindowServer::ScreenLayout m_screen_layout; 48 Vector<DeprecatedString> m_screens; 49 Vector<Optional<EDID::Parser>> m_screen_edids; 50 Vector<Gfx::IntSize> m_resolutions; 51 Vector<DeprecatedString> m_resolution_strings; 52 53 RefPtr<DisplaySettings::MonitorWidget> m_monitor_widget; 54 RefPtr<GUI::ComboBox> m_screen_combo; 55 RefPtr<GUI::ComboBox> m_resolution_combo; 56 RefPtr<GUI::RadioButton> m_display_scale_radio_1x; 57 RefPtr<GUI::RadioButton> m_display_scale_radio_2x; 58 RefPtr<GUI::Label> m_dpi_label; 59 60 bool m_showing_screen_numbers { false }; 61}; 62 63}