summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorls <lukas.schwerdtfeger@gmail.com>2021-07-16 21:11:39 +0200
committerAndreas Kling <kling@serenityos.org>2021-07-19 18:20:34 +0200
commitfe7bacc2dfb2f83a43c072394a384bf8316c7d80 (patch)
tree390ce2fcbc985ae657a3e5cbabceec0eadb295c0
parent35b930112f1286bf24ef664090953e3d053199a4 (diff)
downloadserenity-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.cpp6
-rw-r--r--Userland/Libraries/LibGUI/FileSystemModel.cpp8
-rw-r--r--Userland/Libraries/LibGUI/FileSystemModel.h3
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;