Procházet zdrojové kódy

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

This makes loading system themes possible via FileSystemAccessClient
(needed for the Theme Editor). :^)
Karol Kosek před 4 roky
rodič
revize
f878e4464f

+ 9 - 5
Userland/Libraries/LibGfx/SystemTheme.cpp

@@ -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));
+}
+
 }

+ 3 - 1
Userland/Libraries/LibGfx/SystemTheme.h

@@ -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);
 
 }