1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 20:47:45 +00:00

Spreadsheet: Add list of recently-opened files

This commit is contained in:
Sam Atkins 2023-04-03 17:50:11 +01:00 committed by Andreas Kling
parent b85d24b1f4
commit 1e275dd942
3 changed files with 17 additions and 1 deletions

View file

@ -42,7 +42,7 @@ set(GENERATED_SOURCES
) )
serenity_app(Spreadsheet ICON app-spreadsheet) serenity_app(Spreadsheet ICON app-spreadsheet)
target_link_libraries(Spreadsheet PRIVATE LibCore LibFileSystem LibFileSystemAccessClient LibGfx LibGUI LibJS LibMain LibMarkdown LibSyntax LibWebView LibWeb) target_link_libraries(Spreadsheet PRIVATE LibConfig LibCore LibFileSystem LibFileSystemAccessClient LibGfx LibGUI LibJS LibMain LibMarkdown LibSyntax LibWebView LibWeb)
serenity_test(Writers/Test/TestXSVWriter.cpp Spreadsheet) serenity_test(Writers/Test/TestXSVWriter.cpp Spreadsheet)

View file

@ -502,6 +502,7 @@ void SpreadsheetWidget::save(String const& filename, Core::File& file)
} }
undo_stack().set_current_unmodified(); undo_stack().set_current_unmodified();
window()->set_modified(false); window()->set_modified(false);
GUI::Application::the()->set_most_recently_open_file(filename);
} }
void SpreadsheetWidget::load_file(String const& filename, Core::File& file) void SpreadsheetWidget::load_file(String const& filename, Core::File& file)
@ -521,6 +522,7 @@ void SpreadsheetWidget::load_file(String const& filename, Core::File& file)
setup_tabs(m_workbook->sheets()); setup_tabs(m_workbook->sheets());
update_window_title(); update_window_title();
GUI::Application::the()->set_most_recently_open_file(filename);
} }
void SpreadsheetWidget::import_sheets(String const& filename, Core::File& file) void SpreadsheetWidget::import_sheets(String const& filename, Core::File& file)
@ -654,6 +656,16 @@ void SpreadsheetWidget::initialize_menubar(GUI::Window& window)
file_menu.add_separator(); file_menu.add_separator();
file_menu.add_action(*m_import_action); file_menu.add_action(*m_import_action);
file_menu.add_separator(); file_menu.add_separator();
file_menu.add_recent_files_list([&](auto& action) {
if (!request_close())
return;
auto response = FileSystemAccessClient::Client::the().request_file_read_only_approved(&window, action.text());
if (response.is_error())
return;
load_file(response.value().filename(), response.value().stream());
})
.release_value_but_fixme_should_propagate_errors();
file_menu.add_action(*m_quit_action); file_menu.add_action(*m_quit_action);
auto& edit_menu = window.add_menu("&Edit"); auto& edit_menu = window.add_menu("&Edit");

View file

@ -9,6 +9,7 @@
#include "SpreadsheetWidget.h" #include "SpreadsheetWidget.h"
#include <AK/ScopeGuard.h> #include <AK/ScopeGuard.h>
#include <AK/Try.h> #include <AK/Try.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>
@ -40,6 +41,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
} }
} }
Config::pledge_domain("Spreadsheet");
app->set_config_domain(TRY("Spreadsheet"_string));
TRY(Core::System::unveil("/tmp/session/%sid/portal/filesystemaccess", "rw")); TRY(Core::System::unveil("/tmp/session/%sid/portal/filesystemaccess", "rw"));
TRY(Core::System::unveil("/tmp/session/%sid/portal/webcontent", "rw")); TRY(Core::System::unveil("/tmp/session/%sid/portal/webcontent", "rw"));
TRY(Core::System::unveil("/etc", "r")); TRY(Core::System::unveil("/etc", "r"));