LibGfx: Add SystemTheme::load_system_theme(Core::ConfigFile const&)

This makes loading system themes possible via FileSystemAccessClient
(needed for the Theme Editor). :^)
This commit is contained in:
Karol Kosek 2021-08-25 22:22:07 +02:00 committed by Andreas Kling
parent 09314ad611
commit f878e4464f
Notes: sideshowbarker 2024-07-19 17:14:12 +09:00
2 changed files with 12 additions and 6 deletions
Userland/Libraries/LibGfx

View file

@ -26,15 +26,14 @@ void set_system_theme(Core::AnonymousBuffer buffer)
theme_page = theme_buffer.data<SystemTheme>();
}
Core::AnonymousBuffer load_system_theme(const String& path)
Core::AnonymousBuffer load_system_theme(Core::ConfigFile const& file)
{
auto file = Core::ConfigFile::open(path);
auto buffer = Core::AnonymousBuffer::create_with_size(sizeof(SystemTheme));
auto* data = buffer.data<SystemTheme>();
auto get_color = [&](auto& name) {
auto color_string = file->read_entry("Colors", name);
auto color_string = file.read_entry("Colors", name);
auto color = Color::from_string(color_string);
if (!color.has_value())
return Color(Color::Black);
@ -42,7 +41,7 @@ Core::AnonymousBuffer load_system_theme(const String& path)
};
auto get_metric = [&](auto& name, auto role) {
int metric = file->read_num_entry("Metrics", name, -1);
int metric = file.read_num_entry("Metrics", name, -1);
if (metric == -1) {
switch (role) {
case (int)MetricRole::TitleHeight:
@ -60,7 +59,7 @@ Core::AnonymousBuffer load_system_theme(const String& path)
};
auto get_path = [&](auto& name, auto role, bool allow_empty) {
auto path = file->read_entry("Paths", name);
auto path = file.read_entry("Paths", name);
if (path.is_empty()) {
switch (role) {
case (int)PathRole::TitleButtonIcons:
@ -102,4 +101,9 @@ Core::AnonymousBuffer load_system_theme(const String& path)
return buffer;
}
Core::AnonymousBuffer load_system_theme(String const& path)
{
return load_system_theme(Core::ConfigFile::open(path));
}
}

View file

@ -10,6 +10,7 @@
#include <AK/String.h>
#include <AK/Types.h>
#include <LibCore/AnonymousBuffer.h>
#include <LibCore/ConfigFile.h>
#include <LibGfx/Color.h>
namespace Gfx {
@ -145,7 +146,8 @@ struct SystemTheme {
Core::AnonymousBuffer& current_system_theme_buffer();
void set_system_theme(Core::AnonymousBuffer);
Core::AnonymousBuffer load_system_theme(const String& path);
Core::AnonymousBuffer load_system_theme(Core::ConfigFile const&);
Core::AnonymousBuffer load_system_theme(String const& path);
}