summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Applications/3DFileViewer/main.cpp39
1 files changed, 13 insertions, 26 deletions
diff --git a/Userland/Applications/3DFileViewer/main.cpp b/Userland/Applications/3DFileViewer/main.cpp
index 6a660cc9a3..97b93c73c6 100644
--- a/Userland/Applications/3DFileViewer/main.cpp
+++ b/Userland/Applications/3DFileViewer/main.cpp
@@ -36,8 +36,7 @@ class GLContextWidget final : public GUI::Frame {
public:
bool load_path(String const& fname);
- bool load_fd_and_close(int fd, String const& fname);
- bool load_file(Core::File& file, String const& fname);
+ bool load_file(Core::File& file);
void toggle_rotate_x() { m_rotate_x = !m_rotate_x; }
void toggle_rotate_y() { m_rotate_y = !m_rotate_y; }
void toggle_rotate_z() { m_rotate_z = !m_rotate_z; }
@@ -258,23 +257,12 @@ bool GLContextWidget::load_path(String const& filename)
return false;
}
- return load_file(file, filename);
+ return load_file(file);
}
-bool GLContextWidget::load_fd_and_close(int fd, String const& filename)
-{
- auto file = Core::File::construct();
-
- if (!file->open(fd, Core::OpenMode::ReadOnly, Core::File::ShouldCloseFileDescriptor::Yes) && file->error() != ENOENT) {
- GUI::MessageBox::show(window(), String::formatted("Opening \"{}\" failed: {}", filename, strerror(errno)), "Error", GUI::MessageBox::Type::Error);
- return false;
- }
-
- return load_file(file, filename);
-}
-
-bool GLContextWidget::load_file(Core::File& file, String const& filename)
+bool GLContextWidget::load_file(Core::File& file)
{
+ auto const& filename = file.filename();
if (!filename.ends_with(".obj")) {
GUI::MessageBox::show(window(), String::formatted("Opening \"{}\" failed: invalid file type", filename), "Error", GUI::MessageBox::Type::Error);
return false;
@@ -310,13 +298,12 @@ bool GLContextWidget::load_file(Core::File& file, String const& filename)
if (!bitmap_or_error.is_error())
texture_image = bitmap_or_error.release_value_but_fixme_should_propagate_errors();
} else {
- auto result = FileSystemAccessClient::Client::the().request_file(window()->window_id(), builder.string_view(), Core::OpenMode::ReadOnly);
-
- if (result.error != 0) {
+ auto response = FileSystemAccessClient::Client::the().try_request_file(window(), builder.string_view(), Core::OpenMode::ReadOnly);
+ if (response.is_error())
return false;
- }
- auto bitmap_or_error = Gfx::Bitmap::try_load_from_fd_and_close(*result.fd, *result.chosen_file);
+ auto texture_file = response.value();
+ auto bitmap_or_error = Gfx::Bitmap::try_load_from_fd_and_close(texture_file->leak_fd(), texture_file->filename());
if (!bitmap_or_error.is_error())
texture_image = bitmap_or_error.release_value_but_fixme_should_propagate_errors();
}
@@ -370,13 +357,13 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto& file_menu = window->add_menu("&File");
file_menu.add_action(GUI::CommonActions::make_open_action([&](auto&) {
- auto result = FileSystemAccessClient::Client::the().open_file(window->window_id());
-
- if (result.error != 0)
+ auto response = FileSystemAccessClient::Client::the().try_open_file(window);
+ if (response.is_error())
return;
- if (widget->load_fd_and_close(*result.fd, *result.chosen_file)) {
- auto canonical_path = Core::File::absolute_path(*result.chosen_file);
+ auto file = response.value();
+ if (widget->load_file(*file)) {
+ auto canonical_path = Core::File::absolute_path(file->filename());
window->set_title(String::formatted("{} - 3D File Viewer", canonical_path));
}
}));