Просмотр исходного кода

ThemeEditor: Add a recent files list

Sam Atkins 2 лет назад
Родитель
Сommit
200892868a

+ 1 - 1
Userland/Applications/ThemeEditor/CMakeLists.txt

@@ -28,4 +28,4 @@ set(GENERATED_SOURCES
 )
 )
 
 
 serenity_app(ThemeEditor ICON app-theme-editor)
 serenity_app(ThemeEditor ICON app-theme-editor)
-target_link_libraries(ThemeEditor PRIVATE LibCore LibGfx LibGUI LibFileSystem LibFileSystemAccessClient LibIPC LibMain)
+target_link_libraries(ThemeEditor PRIVATE LibConfig LibCore LibGfx LibGUI LibFileSystem LibFileSystemAccessClient LibIPC LibMain)

+ 16 - 1
Userland/Applications/ThemeEditor/MainWidget.cpp

@@ -285,8 +285,21 @@ ErrorOr<void> MainWidget::initialize_menubar(GUI::Window& window)
             return;
             return;
         save_to_file(result.value().filename(), result.value().release_stream());
         save_to_file(result.value().filename(), result.value().release_stream());
     })));
     })));
-
     TRY(file_menu->try_add_separator());
     TRY(file_menu->try_add_separator());
+
+    TRY(file_menu->add_recent_files_list([&](auto& action) {
+        if (request_close() == GUI::Window::CloseRequestDecision::StayOpen)
+            return;
+        auto response = FileSystemAccessClient::Client::the().request_file_read_only_approved(&window, action.text());
+        if (response.is_error())
+            return;
+        auto load_from_file_result = load_from_file(response.value().filename(), response.value().release_stream());
+        if (load_from_file_result.is_error()) {
+            GUI::MessageBox::show_error(&window, DeprecatedString::formatted("Can't open file named {}: {}", response.value().filename(), load_from_file_result.error()));
+            return;
+        }
+    }));
+
     TRY(file_menu->try_add_action(GUI::CommonActions::make_quit_action([&](auto&) {
     TRY(file_menu->try_add_action(GUI::CommonActions::make_quit_action([&](auto&) {
         if (request_close() == GUI::Window::CloseRequestDecision::Close)
         if (request_close() == GUI::Window::CloseRequestDecision::Close)
             GUI::Application::the()->quit();
             GUI::Application::the()->quit();
@@ -362,6 +375,7 @@ void MainWidget::save_to_file(String const& filename, NonnullOwnPtr<Core::File>
         m_last_modified_time = MonotonicTime::now();
         m_last_modified_time = MonotonicTime::now();
         set_path(filename.to_deprecated_string());
         set_path(filename.to_deprecated_string());
         window()->set_modified(false);
         window()->set_modified(false);
+        GUI::Application::the()->set_most_recently_open_file(filename);
     }
     }
 }
 }
 
 
@@ -657,6 +671,7 @@ ErrorOr<void> MainWidget::load_from_file(String const& filename, NonnullOwnPtr<C
 
 
     m_last_modified_time = MonotonicTime::now();
     m_last_modified_time = MonotonicTime::now();
     window()->set_modified(false);
     window()->set_modified(false);
+    GUI::Application::the()->set_most_recently_open_file(filename);
     return {};
     return {};
 }
 }
 
 

+ 4 - 0
Userland/Applications/ThemeEditor/main.cpp

@@ -9,6 +9,7 @@
  */
  */
 
 
 #include "MainWidget.h"
 #include "MainWidget.h"
+#include <LibConfig/Client.h>
 #include <LibCore/ArgsParser.h>
 #include <LibCore/ArgsParser.h>
 #include <LibCore/System.h>
 #include <LibCore/System.h>
 #include <LibFileSystem/FileSystem.h>
 #include <LibFileSystem/FileSystem.h>
@@ -27,6 +28,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
 
 
     auto app = TRY(GUI::Application::create(arguments));
     auto app = TRY(GUI::Application::create(arguments));
 
 
+    Config::pledge_domain("ThemeEditor");
+    app->set_config_domain(TRY("ThemeEditor"_string));
+
     StringView file_to_edit;
     StringView file_to_edit;
 
 
     Core::ArgsParser parser;
     Core::ArgsParser parser;