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
Notes: sideshowbarker 2024-07-17 18:46:30 +09:00
3 changed files with 17 additions and 1 deletions

View File

@ -42,7 +42,7 @@ set(GENERATED_SOURCES
)
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)

View File

@ -502,6 +502,7 @@ void SpreadsheetWidget::save(String const& filename, Core::File& file)
}
undo_stack().set_current_unmodified();
window()->set_modified(false);
GUI::Application::the()->set_most_recently_open_file(filename);
}
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());
update_window_title();
GUI::Application::the()->set_most_recently_open_file(filename);
}
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_action(*m_import_action);
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);
auto& edit_menu = window.add_menu("&Edit");

View File

@ -9,6 +9,7 @@
#include "SpreadsheetWidget.h"
#include <AK/ScopeGuard.h>
#include <AK/Try.h>
#include <LibConfig/Client.h>
#include <LibCore/ArgsParser.h>
#include <LibCore/System.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/webcontent", "rw"));
TRY(Core::System::unveil("/etc", "r"));