diff options
Diffstat (limited to 'src/plugins/FileManager.cpp')
-rw-r--r-- | src/plugins/FileManager.cpp | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/src/plugins/FileManager.cpp b/src/plugins/FileManager.cpp index 52f9f4e..e1f3b04 100644 --- a/src/plugins/FileManager.cpp +++ b/src/plugins/FileManager.cpp @@ -23,24 +23,6 @@ namespace QuickMedia { return last_write_time; } - static std::string file_size_to_human_readable_string(size_t bytes) { - double kb = (double)bytes / 1024.0; - double mb = (double)bytes / 1024.0 / 1024.0; - double gb = (double)bytes / 1024.0 / 1024.0 / 1024.0; - char result[32]; - - if(gb >= 1.0) - snprintf(result, sizeof(result), "%.1f GiB", gb); - else if(mb >= 1.0) - snprintf(result, sizeof(result), "%.1f MiB", mb); - else if(kb >= 1.0) - snprintf(result, sizeof(result), "%.1f KiB", kb); - else - snprintf(result, sizeof(result), "%zu bytes", bytes); - - return result; - } - PluginResult FileManagerPage::submit(const std::string &title, const std::string &url, std::vector<Tab> &result_tabs) { (void)url; @@ -53,14 +35,22 @@ namespace QuickMedia { if(std::filesystem::is_regular_file(new_path)) { program->select_file(new_path); if(selection_handler) - result_tabs = selection_handler(); + result_tabs = selection_handler(this, new_path); return PluginResult::OK; } - if(!std::filesystem::is_directory(new_path)) + if(!std::filesystem::is_directory(new_path)) { + if(allow_empty_match_submit) { + program->select_file(new_path); + if(selection_handler) + result_tabs = selection_handler(this, new_path); + return PluginResult::OK; + } return PluginResult::ERR; + } current_dir = std::move(new_path); + this->title = title_prefix + current_dir.string(); BodyItems result_items; PluginResult result = get_files_in_directory(result_items); @@ -73,10 +63,16 @@ namespace QuickMedia { return PluginResult::OK; } + void FileManagerPage::on_navigate_to_page(Body*) { + if(close) + program->set_go_to_previous_page(); + } + bool FileManagerPage::set_current_directory(const std::string &path) { if(!std::filesystem::is_directory(path)) return false; current_dir = path; + title = title_prefix + current_dir.string(); return true; } |