diff options
author | ls <lukas.schwerdtfeger@gmail.com> | 2021-07-16 21:11:39 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-07-19 18:20:34 +0200 |
commit | fe7bacc2dfb2f83a43c072394a384bf8316c7d80 (patch) | |
tree | 390ce2fcbc985ae657a3e5cbabceec0eadb295c0 | |
parent | 35b930112f1286bf24ef664090953e3d053199a4 (diff) | |
download | serenity-fe7bacc2dfb2f83a43c072394a384bf8316c7d80.zip |
File Manager: Differentiate between navigation and rename errors
Adds a new on_rename_error handler and renames the old on_error handler
to on_directory_change_error in FileSystemModel. The on_rename_error
handler creates a MessageDialog with the error message.
-rw-r--r-- | Userland/Applications/FileManager/DirectoryView.cpp | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/FileSystemModel.cpp | 8 | ||||
-rw-r--r-- | Userland/Libraries/LibGUI/FileSystemModel.h | 3 |
3 files changed, 11 insertions, 6 deletions
diff --git a/Userland/Applications/FileManager/DirectoryView.cpp b/Userland/Applications/FileManager/DirectoryView.cpp index 7e2cc35013..6b72bc7bfb 100644 --- a/Userland/Applications/FileManager/DirectoryView.cpp +++ b/Userland/Applications/FileManager/DirectoryView.cpp @@ -214,7 +214,7 @@ const GUI::FileSystemModel::Node& DirectoryView::node(const GUI::ModelIndex& ind void DirectoryView::setup_model() { - m_model->on_error = [this](int, const char* error_string) { + m_model->on_directory_change_error = [this](int, const char* error_string) { auto failed_path = m_model->root_path(); auto error_message = String::formatted("Could not read {}:\n{}", failed_path, error_string); m_error_label->set_text(error_message); @@ -229,6 +229,10 @@ void DirectoryView::setup_model() on_path_change(failed_path, false, false); }; + m_model->on_rename_error = [this](int, const char* error_string) { + GUI::MessageBox::show_error(window(), String::formatted("Unable to rename file: {}", error_string)); + }; + m_model->on_complete = [this] { if (m_table_view) m_table_view->selection().clear(); diff --git a/Userland/Libraries/LibGUI/FileSystemModel.cpp b/Userland/Libraries/LibGUI/FileSystemModel.cpp index 06d1b0c97d..6e0a9530be 100644 --- a/Userland/Libraries/LibGUI/FileSystemModel.cpp +++ b/Userland/Libraries/LibGUI/FileSystemModel.cpp @@ -367,8 +367,8 @@ void FileSystemModel::set_root_path(String root_path) update(); if (m_root->has_error()) { - if (on_error) - on_error(m_root->error(), m_root->error_string()); + if (on_directory_change_error) + on_directory_change_error(m_root->error(), m_root->error_string()); } else if (on_complete) { on_complete(); } @@ -676,8 +676,8 @@ void FileSystemModel::set_data(const ModelIndex& index, const Variant& data) auto new_full_path = String::formatted("{}/{}", dirname, data.to_string()); int rc = rename(node.full_path().characters(), new_full_path.characters()); if (rc < 0) { - if (on_error) - on_error(errno, strerror(errno)); + if (on_rename_error) + on_rename_error(errno, strerror(errno)); } } diff --git a/Userland/Libraries/LibGUI/FileSystemModel.h b/Userland/Libraries/LibGUI/FileSystemModel.h index 4ad589c82b..f1984b3f3c 100644 --- a/Userland/Libraries/LibGUI/FileSystemModel.h +++ b/Userland/Libraries/LibGUI/FileSystemModel.h @@ -114,7 +114,8 @@ public: Function<void(int done, int total)> on_thumbnail_progress; Function<void()> on_complete; - Function<void(int error, const char* error_string)> on_error; + Function<void(int error, const char* error_string)> on_directory_change_error; + Function<void(int error, const char* error_string)> on_rename_error; virtual int tree_column() const override { return Column::Name; } virtual int row_count(const ModelIndex& = ModelIndex()) const override; |