mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 14:02:46 +00:00 
			
		
		
		
	 3f3f45580a
			
		
	
	
		3f3f45580a
		
	
	
	
	
		
			
			Each of these strings would previously rely on StringView's char const* constructor overload, which would call __builtin_strlen on the string. Since we now have operator ""sv, we can replace these with much simpler versions. This opens the door to being able to remove StringView(char const*). No functional changes.
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include "ThemePreviewWidget.h"
 | |
| #include <AK/Array.h>
 | |
| #include <LibCore/File.h>
 | |
| #include <LibGUI/Painter.h>
 | |
| #include <LibGfx/Painter.h>
 | |
| #include <LibGfx/StylePainter.h>
 | |
| 
 | |
| namespace DisplaySettings {
 | |
| 
 | |
| ThemePreviewWidget::ThemePreviewWidget(Gfx::Palette const& palette)
 | |
|     : GUI::AbstractThemePreview(palette)
 | |
| {
 | |
|     set_fixed_size(304, 201);
 | |
| }
 | |
| 
 | |
| void ThemePreviewWidget::set_theme(String path)
 | |
| {
 | |
|     set_theme_from_file(*Core::File::open(path, Core::OpenMode::ReadOnly).release_value_but_fixme_should_propagate_errors());
 | |
| }
 | |
| 
 | |
| void ThemePreviewWidget::paint_preview(GUI::PaintEvent&)
 | |
| {
 | |
|     GUI::Painter painter(*this);
 | |
| 
 | |
|     auto active_window_rect = frame_inner_rect().shrunken(48, 100);
 | |
|     auto inactive_window_rect = active_window_rect.translated(-8, -32);
 | |
|     auto message_box = active_window_rect.shrunken(100, 60);
 | |
| 
 | |
|     Array window_group {
 | |
|         Window { active_window_rect },
 | |
|         Window { inactive_window_rect },
 | |
|         Window { message_box }
 | |
|     };
 | |
|     center_window_group_within(window_group, frame_inner_rect());
 | |
| 
 | |
|     paint_window("Inactive Window"sv, inactive_window_rect, Gfx::WindowTheme::WindowState::Inactive, inactive_window_icon());
 | |
|     paint_window("Active Window"sv, active_window_rect, Gfx::WindowTheme::WindowState::Active, active_window_icon());
 | |
|     paint_window("Alert"sv, message_box, Gfx::WindowTheme::WindowState::Highlighted, active_window_icon(), 1);
 | |
| 
 | |
|     auto draw_centered_button = [&](auto window_rect, auto text, int button_width, int button_height) {
 | |
|         Gfx::IntRect button_rect { 0, 0, button_width, button_height };
 | |
|         button_rect.center_within(window_rect);
 | |
|         Gfx::StylePainter::paint_button(painter, button_rect, preview_palette(), Gfx::ButtonStyle::Normal, false, false, false, true, false, false);
 | |
|         painter.draw_text(button_rect, text, Gfx::TextAlignment::Center, preview_palette().color(foreground_role()), Gfx::TextElision::Right, Gfx::TextWrapping::DontWrap);
 | |
|     };
 | |
| 
 | |
|     draw_centered_button(message_box, "Ok"sv, 32, 16);
 | |
| }
 | |
| 
 | |
| }
 |