diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/QuickMedia.cpp | 2 | ||||
-rw-r--r-- | src/Storage.cpp | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 0c17a52..8e6f04e 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -380,7 +380,7 @@ namespace QuickMedia { exit(1); } // TODO: Make asynchronous - for_files_in_dir(content_storage_dir, [&history_body](const std::filesystem::path &filepath) { + for_files_in_dir_sort_last_modified(content_storage_dir, [&history_body](const std::filesystem::path &filepath) { Path fullpath(filepath.c_str()); Json::Value body; if(!read_file_as_json(fullpath, body)) { diff --git a/src/Storage.cpp b/src/Storage.cpp index ddfdb11..919044e 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -131,4 +131,20 @@ namespace QuickMedia { break; } } + + void for_files_in_dir_sort_last_modified(const Path &path, FileIteratorCallback callback) { + std::vector<std::filesystem::directory_entry> paths; + for(auto &p : std::filesystem::directory_iterator(path.data)) { + paths.push_back(p); + } + + std::sort(paths.begin(), paths.end(), [](const std::filesystem::directory_entry &path1, std::filesystem::directory_entry &path2) { + return path1.last_write_time() > path2.last_write_time(); + }); + + for(auto &p : paths) { + if(!callback(p.path())) + break; + } + } }
\ No newline at end of file |