diff --git a/interfaces/kits/js/src/common/file_filter.h b/interfaces/kits/js/src/common/file_filter.h index 902ecb0552a22fe6252899ec8fb14bb208575b2f..cb7ff40df4f467bc6a57a4a96a9f158f36b476eb 100644 --- a/interfaces/kits/js/src/common/file_filter.h +++ b/interfaces/kits/js/src/common/file_filter.h @@ -28,11 +28,6 @@ public: FileFilter() = default; ~FileFilter() = default; - FileFilter(std::vector suffix, std::vector displayName, - std::vector mimeType, int64_t fileSizeOver, - double lastModifiedAfter, bool excludeMedia, bool hasFilter) - : suffix_(suffix), displayName_(displayName), mimeType_(mimeType), fileSizeOver_(fileSizeOver), - lastModifiedAfter_(lastModifiedAfter), excludeMedia_(excludeMedia), hasFilter_(hasFilter) {} explicit FileFilter(std::vector suffix): suffix_(suffix) {} FileFilter(const FileFilter &filter) = default; FileFilter &operator=(const FileFilter& filter) = default; @@ -161,6 +156,17 @@ public: return true; } + void FilterClear() + { + this->suffix_.clear(); + this->displayName_.clear(); + this->mimeType_.clear(); + this->fileSizeOver_ = 0; + this->lastModifiedAfter_ = 0; + this->excludeMedia_ = false; + this->hasFilter_ = false; + } + private: std::vector suffix_ = std::vector(); std::vector displayName_ = std::vector(); @@ -170,6 +176,62 @@ private: bool excludeMedia_ = false; bool hasFilter_ = false; }; + +class FileFilterBuilder { +public: + FileFilterBuilder() = default; + ~FileFilterBuilder() = default; + + FileFilterBuilder& SetSuffix(const std::vector &suffix) + { + fileFilter_.SetSuffix(suffix); + return *this; + } + + FileFilterBuilder& SetDisplayName(const std::vector &displayName) + { + fileFilter_.SetDisplayName(displayName); + return *this; + } + + FileFilterBuilder& SetMimeType(const std::vector &mimeType) + { + fileFilter_.SetMimeType(mimeType); + return *this; + } + + FileFilterBuilder& SetFileSizeOver(const int64_t &fileSizeOver) + { + fileFilter_.SetFileSizeOver(fileSizeOver); + return *this; + } + + FileFilterBuilder& SetLastModifiedAfter(const double &lastModifiedAfter) + { + fileFilter_.SetLastModifiedAfter(lastModifiedAfter); + return *this; + } + + FileFilterBuilder& SetExcludeMedia(const bool &excludeMedia) + { + fileFilter_.SetExcludeMedia(excludeMedia); + return *this; + } + + FileFilterBuilder& SetHasFilter(const bool &hasFilter) + { + fileFilter_.SetHasFilter(hasFilter); + return *this; + } + + FileFilter Build() + { + return fileFilter_; + } + +private: + FileFilter fileFilter_; +}; } // namespace ModuleFileIO } // namespace FileManagement } // namespace OHOS diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.h b/interfaces/kits/js/src/mod_fs/properties/listfile.h index 1ae431d4a1e1a03d40a59a53911e04cad1996ae9..d4dd936a0ec8064bcbf21335af1a493ee9047e22 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.h +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.h @@ -42,14 +42,19 @@ struct NameListArg { constexpr int DEFAULT_SIZE = -1; constexpr int DEFAULT_MODIFY_AFTER = -1; struct OptionArgs { - FileFilter filter = { {}, {}, {}, DEFAULT_SIZE, DEFAULT_MODIFY_AFTER, false, false }; + FileFilter filter = FileFilterBuilder() + .SetFileSizeOver(DEFAULT_SIZE) + .SetLastModifiedAfter(DEFAULT_MODIFY_AFTER) + .Build(); int listNum = 0; int countNum = 0; bool recursion = false; std::string path = ""; void Clear() { - filter = { {}, {}, {}, DEFAULT_SIZE, DEFAULT_MODIFY_AFTER, false, false }; + filter.FilterClear(); + filter.SetFileSizeOver(DEFAULT_SIZE); + filter.SetLastModifiedAfter(DEFAULT_MODIFY_AFTER); listNum = 0; countNum = 0; recursion = false;