From 3ad7fecdb6458fdd6f146bed19fe643c7f93e905 Mon Sep 17 00:00:00 2001 From: saturneric Date: Tue, 7 Nov 2023 15:18:06 +0800 Subject: refactor: remove CommonUtils at core --- src/core/utils/FilesystemUtils.cpp | 59 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'src/core/utils/FilesystemUtils.cpp') diff --git a/src/core/utils/FilesystemUtils.cpp b/src/core/utils/FilesystemUtils.cpp index edf86297..84c8caf4 100644 --- a/src/core/utils/FilesystemUtils.cpp +++ b/src/core/utils/FilesystemUtils.cpp @@ -30,7 +30,7 @@ namespace GpgFrontend { -auto GetOnlyFileNameWithPath(const std::string& path) -> std::string { +auto GetOnlyFileNameWithPath(const std::string &path) -> std::string { // Create a path object from given string std::filesystem::path path_obj(path); // Check if file name in the path object has extension @@ -42,7 +42,7 @@ auto GetOnlyFileNameWithPath(const std::string& path) -> std::string { return {}; } -auto GetFileExtension(const std::string& path) -> std::string { +auto GetFileExtension(const std::string &path) -> std::string { // Create a path object from given string std::filesystem::path path_obj(path); @@ -55,4 +55,59 @@ auto GetFileExtension(const std::string& path) -> std::string { return {}; } +/** + * @brief + * + */ +auto GetFileSizeByPath(const std::filesystem::path &path, + const std::string &filename_pattern) -> int64_t { + auto dir = QDir(QString::fromStdString(path.u8string())); + QFileInfoList file_list = dir.entryInfoList( + QStringList() << QString::fromStdString(filename_pattern), QDir::Files); + qint64 total_size = 0; + + for (const QFileInfo &file_info : file_list) { + total_size += file_info.size(); + } + return total_size; +} + +/** + * @brief + * + */ +auto GetHumanFriendlyFileSize(int64_t size) -> std::string { + auto num = static_cast(size); + QStringList list; + list << "KB" + << "MB" + << "GB" + << "TB"; + + QStringListIterator i(list); + QString unit("bytes"); + + while (num >= 1024.0 && i.hasNext()) { + unit = i.next(); + num /= 1024.0; + } + return (QString().setNum(num, 'f', 2) + " " + unit).toStdString(); +} + +/** + * @brief + * + */ +void DeleteAllFilesByPattern(const std::filesystem::path &path, + const std::string &filename_pattern) { + auto dir = QDir(QString::fromStdString(path.u8string())); + + QStringList log_files = dir.entryList( + QStringList() << QString::fromStdString(filename_pattern), QDir::Files); + + for (const auto &file : log_files) { + QFile::remove(dir.absoluteFilePath(file)); + } +} + } // namespace GpgFrontend \ No newline at end of file -- cgit v1.2.3