diff options
author | dec05eba <dec05eba@protonmail.com> | 2021-06-05 17:36:54 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2021-06-05 17:36:54 +0200 |
commit | d7a681b69153ea99f03c128fce5d297ff1f635f6 (patch) | |
tree | 83e446359b316adbe57ce618c773d27dc88a1cd6 /src/plugins | |
parent | cbcdbdbf488b73120b2b604343ac64213cdbb1f8 (diff) |
Fix incorrect times, add time to manga history
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/FileManager.cpp | 34 | ||||
-rw-r--r-- | src/plugins/NyaaSi.cpp | 2 | ||||
-rw-r--r-- | src/plugins/Soundcloud.cpp | 2 | ||||
-rw-r--r-- | src/plugins/Youtube.cpp | 2 |
4 files changed, 16 insertions, 24 deletions
diff --git a/src/plugins/FileManager.cpp b/src/plugins/FileManager.cpp index 04e284a..6532f3a 100644 --- a/src/plugins/FileManager.cpp +++ b/src/plugins/FileManager.cpp @@ -25,15 +25,6 @@ namespace QuickMedia { return ""; } - static std::filesystem::file_time_type file_get_last_modified_time(const std::filesystem::directory_entry &path, std::filesystem::file_time_type default_value) { - std::error_code err; - auto last_write_time = path.last_write_time(err); - if(err) - return default_value; - else - return last_write_time; - } - PluginResult FileManagerPage::submit(const std::string&, const std::string &url, std::vector<Tab> &result_tabs) { std::filesystem::path new_path; if(url == "..") @@ -72,18 +63,20 @@ namespace QuickMedia { } PluginResult FileManagerPage::get_files_in_directory(BodyItems &result_items) { - std::vector<std::filesystem::directory_entry> paths; + std::vector<std::pair<std::filesystem::directory_entry, time_t>> paths; try { for(auto &p : std::filesystem::directory_iterator(current_dir)) { - paths.push_back(p); + time_t last_modified_time = 0; + file_get_last_modified_time_seconds(p.path().c_str(), &last_modified_time); + paths.push_back(std::make_pair(p, last_modified_time)); } } catch(const std::filesystem::filesystem_error &err) { fprintf(stderr, "Failed to list files in directory %s, error: %s\n", current_dir.c_str(), err.what()); return PluginResult::ERR; } - std::sort(paths.begin(), paths.end(), [](const std::filesystem::directory_entry &path1, std::filesystem::directory_entry &path2) { - return file_get_last_modified_time(path1, std::filesystem::file_time_type::min()) > file_get_last_modified_time(path2, std::filesystem::file_time_type::min()); + std::sort(paths.begin(), paths.end(), [](const std::pair<std::filesystem::directory_entry, time_t> &path1, std::pair<std::filesystem::directory_entry, time_t> &path2) { + return path1.second > path2.second; }); if(current_dir != "/") { @@ -95,12 +88,12 @@ namespace QuickMedia { char time_str[128] = {0}; for(auto &p : paths) { std::error_code regular_file_err; - bool is_regular_file = p.is_regular_file(regular_file_err); + bool is_regular_file = p.first.is_regular_file(regular_file_err); if(regular_file_err) is_regular_file = true; // TODO: Check file magic number instead of extension? - const char *ext = get_ext(p.path()); + const char *ext = get_ext(p.first.path()); FileManagerMimeType file_mime_type = FILE_MANAGER_MIME_TYPE_OTHER; if(is_regular_file) { if(is_image_ext(ext)) @@ -112,11 +105,11 @@ namespace QuickMedia { if(is_regular_file && !(mime_type & file_mime_type)) continue; - auto body_item = BodyItem::create(p.path().filename().string()); + auto body_item = BodyItem::create(p.first.path().filename().string()); body_item->url = body_item->get_title(); if(file_mime_type == FILE_MANAGER_MIME_TYPE_IMAGE || file_mime_type == FILE_MANAGER_MIME_TYPE_VIDEO) { body_item->thumbnail_is_local = true; - body_item->thumbnail_url = p.path().string(); + body_item->thumbnail_url = p.first.path().string(); } else { body_item->thumbnail_is_local = true; if(is_regular_file) { @@ -128,13 +121,12 @@ namespace QuickMedia { } } - time_t last_modified_time = std::chrono::duration_cast<std::chrono::seconds>(file_get_last_modified_time(p, std::filesystem::file_time_type::min()).time_since_epoch()).count(); struct tm last_modified_tm; - localtime_r(&last_modified_time, &last_modified_tm); - strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M", &last_modified_tm); + localtime_r(&p.second, &last_modified_tm); + strftime(time_str, sizeof(time_str) - 1, "%Y %b %d, %a %H:%M", &last_modified_tm); std::error_code file_size_err; - size_t file_size = p.file_size(file_size_err); + size_t file_size = p.first.file_size(file_size_err); if(file_size_err) file_size = 0; diff --git a/src/plugins/NyaaSi.cpp b/src/plugins/NyaaSi.cpp index a8cd2b4..5d9e41b 100644 --- a/src/plugins/NyaaSi.cpp +++ b/src/plugins/NyaaSi.cpp @@ -103,7 +103,7 @@ namespace QuickMedia { struct tm time_tm; localtime_r(&unix_time, &time_tm); char time_str[128] = {0}; - strftime(time_str, sizeof(time_str) - 1, "%Y-%m-%d %H:%M", &time_tm); + strftime(time_str, sizeof(time_str) - 1, "%Y %b %d, %a %H:%M", &time_tm); return time_str; } diff --git a/src/plugins/Soundcloud.cpp b/src/plugins/Soundcloud.cpp index f4d01b6..e66f1f4 100644 --- a/src/plugins/Soundcloud.cpp +++ b/src/plugins/Soundcloud.cpp @@ -69,7 +69,7 @@ namespace QuickMedia { struct tm time_tm; localtime_r(&unix_time, &time_tm); char time_str[128] = {0}; - strftime(time_str, sizeof(time_str) - 1, "%Y-%m-%d %H:%M", &time_tm); + strftime(time_str, sizeof(time_str) - 1, "%Y %b %d, %a %H:%M", &time_tm); return time_str; } diff --git a/src/plugins/Youtube.cpp b/src/plugins/Youtube.cpp index 9b7c5ba..d9df409 100644 --- a/src/plugins/Youtube.cpp +++ b/src/plugins/Youtube.cpp @@ -157,7 +157,7 @@ namespace QuickMedia { struct tm message_tm; localtime_r(&start_time, &message_tm); char time_str[128] = {0}; - strftime(time_str, sizeof(time_str) - 1, "%a %b %d %H:%M", &message_tm); + strftime(time_str, sizeof(time_str) - 1, "%Y %b %d, %a %H:%M", &message_tm); string_replace_all(upcoming_event_text.value(), "DATE_PLACEHOLDER", time_str); scheduled_text = std::move(upcoming_event_text.value()); } |