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:
parent
09314ad611
commit
f878e4464f
Notes:
sideshowbarker
2024-07-19 17:14:12 +09:00
Author: https://github.com/krkk Commit: https://github.com/SerenityOS/serenity/commit/f878e4464fb Pull-request: https://github.com/SerenityOS/serenity/pull/9979
2 changed files with 12 additions and 6 deletions
Userland/Libraries/LibGfx
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue