mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:37:37 +00:00
Spreadsheet: Port ExportDialog to Core::Stream
This commit is contained in:
parent
3a8450ae11
commit
e9d73a6256
3 changed files with 8 additions and 13 deletions
|
@ -11,7 +11,6 @@
|
||||||
#include <AK/JsonArray.h>
|
#include <AK/JsonArray.h>
|
||||||
#include <AK/LexicalPath.h>
|
#include <AK/LexicalPath.h>
|
||||||
#include <Applications/Spreadsheet/CSVExportGML.h>
|
#include <Applications/Spreadsheet/CSVExportGML.h>
|
||||||
#include <LibCore/FileStream.h>
|
|
||||||
#include <LibCore/MemoryStream.h>
|
#include <LibCore/MemoryStream.h>
|
||||||
#include <LibCore/StandardPaths.h>
|
#include <LibCore/StandardPaths.h>
|
||||||
#include <LibGUI/Application.h>
|
#include <LibGUI/Application.h>
|
||||||
|
@ -169,7 +168,7 @@ void CSVExportDialogPage::update_preview()
|
||||||
m_data_preview_text_editor->set_text(DeprecatedString::formatted("Cannot update preview: {}", maybe_error.error()));
|
m_data_preview_text_editor->set_text(DeprecatedString::formatted("Cannot update preview: {}", maybe_error.error()));
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, Core::File& file, Workbook& workbook)
|
ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, NonnullOwnPtr<Core::Stream::File> file, DeprecatedString filename, Workbook& workbook)
|
||||||
{
|
{
|
||||||
auto wizard = GUI::WizardDialog::construct(GUI::Application::the()->active_window());
|
auto wizard = GUI::WizardDialog::construct(GUI::Application::the()->active_window());
|
||||||
wizard->set_title("File Export Wizard");
|
wizard->set_title("File Export Wizard");
|
||||||
|
@ -186,8 +185,7 @@ ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, Core::File& file,
|
||||||
if (wizard->exec() != GUI::Dialog::ExecResult::OK)
|
if (wizard->exec() != GUI::Dialog::ExecResult::OK)
|
||||||
return Error::from_string_literal("CSV Export was cancelled");
|
return Error::from_string_literal("CSV Export was cancelled");
|
||||||
|
|
||||||
auto file_stream = TRY(try_make<Core::Stream::WrappedAKOutputStream>(TRY(try_make<Core::OutputFileStream>(file))));
|
auto writer = TRY(page.make_writer(move(file)));
|
||||||
auto writer = TRY(page.make_writer(move(file_stream)));
|
|
||||||
return writer->generate();
|
return writer->generate();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -197,12 +195,7 @@ ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, Core::File& file,
|
||||||
array.append(sheet.to_json());
|
array.append(sheet.to_json());
|
||||||
|
|
||||||
auto file_content = array.to_deprecated_string();
|
auto file_content = array.to_deprecated_string();
|
||||||
bool result = file.write(file_content);
|
return file->write_entire_buffer(file_content.bytes());
|
||||||
if (!result) {
|
|
||||||
return Error::from_string_literal("Unable to save file.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return {};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (mime == "text/csv") {
|
if (mime == "text/csv") {
|
||||||
|
@ -212,7 +205,7 @@ ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, Core::File& file,
|
||||||
} else {
|
} else {
|
||||||
auto page = GUI::WizardPage::construct(
|
auto page = GUI::WizardPage::construct(
|
||||||
"Export File Format",
|
"Export File Format",
|
||||||
DeprecatedString::formatted("Select the format you wish to export to '{}' as", LexicalPath::basename(file.filename())));
|
DeprecatedString::formatted("Select the format you wish to export to '{}' as", LexicalPath::basename(filename)));
|
||||||
|
|
||||||
page->on_next_page = [] { return nullptr; };
|
page->on_next_page = [] { return nullptr; };
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ExportDialog {
|
struct ExportDialog {
|
||||||
static ErrorOr<void> make_and_run_for(StringView mime, Core::File& file, Workbook&);
|
static ErrorOr<void> make_and_run_for(StringView mime, NonnullOwnPtr<Core::Stream::File>, DeprecatedString filename, Workbook&);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,8 +68,10 @@ ErrorOr<void> Workbook::write_to_file(Core::File& file)
|
||||||
{
|
{
|
||||||
auto mime = Core::guess_mime_type_based_on_filename(file.filename());
|
auto mime = Core::guess_mime_type_based_on_filename(file.filename());
|
||||||
|
|
||||||
|
auto file_stream = TRY(Core::Stream::File::adopt_fd(file.leak_fd(), Core::Stream::OpenMode::Write));
|
||||||
|
|
||||||
// Make an export dialog, we might need to import it.
|
// Make an export dialog, we might need to import it.
|
||||||
TRY(ExportDialog::make_and_run_for(mime, file, *this));
|
TRY(ExportDialog::make_and_run_for(mime, move(file_stream), file.filename(), *this));
|
||||||
|
|
||||||
set_filename(file.filename());
|
set_filename(file.filename());
|
||||||
set_dirty(false);
|
set_dirty(false);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue