From 5090b1bdba59cf21078555f7b4269adae2b65b90 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Tue, 22 Jun 2021 12:56:40 +0100 Subject: [PATCH] FileManager: Set file op progress window's text based on the operation --- .../FileManager/FileOperationProgress.gml | 1 + .../FileOperationProgressWidget.cpp | 34 +++++++++++++++++-- .../FileManager/FileOperationProgressWidget.h | 4 ++- .../Applications/FileManager/FileUtils.cpp | 14 ++++++-- 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/Userland/Applications/FileManager/FileOperationProgress.gml b/Userland/Applications/FileManager/FileOperationProgress.gml index c1aaada4831..f90ca68e8aa 100644 --- a/Userland/Applications/FileManager/FileOperationProgress.gml +++ b/Userland/Applications/FileManager/FileOperationProgress.gml @@ -47,6 +47,7 @@ font_weight: "Bold" text_alignment: "CenterLeft" fixed_width: 80 + name: "current_file_action_label" } @GUI::Label { diff --git a/Userland/Applications/FileManager/FileOperationProgressWidget.cpp b/Userland/Applications/FileManager/FileOperationProgressWidget.cpp index d49006b6ada..fcbf9b7eccf 100644 --- a/Userland/Applications/FileManager/FileOperationProgressWidget.cpp +++ b/Userland/Applications/FileManager/FileOperationProgressWidget.cpp @@ -5,6 +5,7 @@ */ #include "FileOperationProgressWidget.h" +#include "FileUtils.h" #include #include #include @@ -17,8 +18,9 @@ namespace FileManager { -FileOperationProgressWidget::FileOperationProgressWidget(NonnullRefPtr helper_pipe) - : m_helper_pipe(move(helper_pipe)) +FileOperationProgressWidget::FileOperationProgressWidget(FileOperation operation, NonnullRefPtr helper_pipe) + : m_operation(operation) + , m_helper_pipe(move(helper_pipe)) { load_from_gml(file_operation_progress_gml); @@ -39,6 +41,22 @@ FileOperationProgressWidget::FileOperationProgressWidget(NonnullRefPtrclose(); }; + auto& files_copied_label = *find_descendant_of_type_named("files_copied_label"); + auto& current_file_action_label = *find_descendant_of_type_named("current_file_action_label"); + + switch (m_operation) { + case FileOperation::Copy: + files_copied_label.set_text("Copying files..."); + current_file_action_label.set_text("Copying: "); + break; + case FileOperation::Cut: + files_copied_label.set_text("Moving files..."); + current_file_action_label.set_text("Moving: "); + break; + default: + VERIFY_NOT_REACHED(); + } + m_notifier = Core::Notifier::construct(m_helper_pipe->fd(), Core::Notifier::Read); m_notifier->on_ready_to_read = [this] { auto line = m_helper_pipe->read_line(); @@ -143,7 +161,17 @@ void FileOperationProgressWidget::did_progress(off_t bytes_done, off_t total_byt current_file_label.set_text(current_filename); - files_copied_label.set_text(String::formatted("Copying file {} of {}", files_done, total_file_count)); + switch (m_operation) { + case FileOperation::Copy: + files_copied_label.set_text(String::formatted("Copying file {} of {}", files_done, total_file_count)); + break; + case FileOperation::Cut: + files_copied_label.set_text(String::formatted("Moving file {} of {}", files_done, total_file_count)); + break; + default: + VERIFY_NOT_REACHED(); + } + estimated_time_label.set_text(estimate_time(bytes_done, total_byte_count)); if (total_byte_count) { diff --git a/Userland/Applications/FileManager/FileOperationProgressWidget.h b/Userland/Applications/FileManager/FileOperationProgressWidget.h index c0c4f91ac27..cb4f8152455 100644 --- a/Userland/Applications/FileManager/FileOperationProgressWidget.h +++ b/Userland/Applications/FileManager/FileOperationProgressWidget.h @@ -6,6 +6,7 @@ #pragma once +#include "FileUtils.h" #include #include @@ -18,7 +19,7 @@ public: virtual ~FileOperationProgressWidget() override; private: - explicit FileOperationProgressWidget(NonnullRefPtr helper_pipe); + FileOperationProgressWidget(FileOperation, NonnullRefPtr helper_pipe); void did_finish(); void did_error(String message); @@ -29,6 +30,7 @@ private: String estimate_time(off_t bytes_done, off_t total_byte_count); Core::ElapsedTimer m_elapsed_timer; + FileOperation m_operation; RefPtr m_notifier; RefPtr m_helper_pipe; }; diff --git a/Userland/Applications/FileManager/FileUtils.cpp b/Userland/Applications/FileManager/FileUtils.cpp index 3ccce5fa4f1..3f1df2d2ed1 100644 --- a/Userland/Applications/FileManager/FileUtils.cpp +++ b/Userland/Applications/FileManager/FileUtils.cpp @@ -133,8 +133,18 @@ void run_file_operation(FileOperation operation, Vector const& sources, auto pipe_input_file = Core::File::construct(); pipe_input_file->open(pipe_fds[0], Core::OpenMode::ReadOnly, Core::File::ShouldCloseFileDescriptor::Yes); - window->set_title("Copying Files..."); - window->set_main_widget(pipe_input_file); + switch (operation) { + case FileOperation::Copy: + window->set_title("Copying Files..."); + break; + case FileOperation::Cut: + window->set_title("Moving Files..."); + break; + default: + VERIFY_NOT_REACHED(); + } + + window->set_main_widget(operation, pipe_input_file); window->resize(320, 190); if (parent_window) window->center_within(*parent_window);