aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/FileManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/FileManager.cpp')
-rw-r--r--src/plugins/FileManager.cpp36
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;
}