From 99da7ed281cda699ed51468bffe10db909487480 Mon Sep 17 00:00:00 2001 From: fengjq Date: Sat, 11 Nov 2023 16:42:53 +0800 Subject: [PATCH] Add excludeHidden_ property to the Filter class Signed-off-by: fengjq --- interfaces/kits/js/src/common/file_filter.h | 21 ++++++++++++++++ .../js/src/mod_fs/properties/listfile.cpp | 25 +++++++++++-------- 2 files changed, 36 insertions(+), 10 deletions(-) mode change 100755 => 100644 interfaces/kits/js/src/mod_fs/properties/listfile.cpp diff --git a/interfaces/kits/js/src/common/file_filter.h b/interfaces/kits/js/src/common/file_filter.h index cb7ff40df..0f6a9dfce 100644 --- a/interfaces/kits/js/src/common/file_filter.h +++ b/interfaces/kits/js/src/common/file_filter.h @@ -91,6 +91,15 @@ public: { return excludeMedia_; } + void SetHidden(const bool &hidden) + { + hidden_ = hidden; + } + + bool GetHidden() const + { + return hidden_; + } void SetHasFilter(const bool &hasFilter) { @@ -122,6 +131,9 @@ public: if (!parcel.WriteBool(excludeMedia_)) { return false; } + if (!parcel.WriteBool(hidden_)) { + return false; + } if (!parcel.WriteBool(hasFilter_)) { return false; } @@ -152,6 +164,7 @@ public: fileSizeOver_ = parcel.ReadInt64(); lastModifiedAfter_ = parcel.ReadDouble(); excludeMedia_ = parcel.ReadBool(); + hidden_ = parcel.ReadBool(); hasFilter_ = parcel.ReadBool(); return true; } @@ -164,6 +177,7 @@ public: this->fileSizeOver_ = 0; this->lastModifiedAfter_ = 0; this->excludeMedia_ = false; + this->hidden_ = false; this->hasFilter_ = false; } @@ -174,6 +188,7 @@ private: int64_t fileSizeOver_ = 0; double lastModifiedAfter_ = 0; bool excludeMedia_ = false; + bool hidden_ = false; bool hasFilter_ = false; }; @@ -218,6 +233,12 @@ public: return *this; } + FileFilterBuilder& SetHidden(const bool &hidden) + { + fileFilter_.SetHidden(hidden); + return *this; + } + FileFilterBuilder& SetHasFilter(const bool &hasFilter) { fileFilter_.SetHasFilter(hasFilter); diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp old mode 100755 new mode 100644 index e046e1745..fb4bb8dc3 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -56,27 +56,19 @@ static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) if (argv.HasProp("suffix") && !argv.GetProp("suffix").TypeIs(napi_undefined)) { vector suffixs; tie(ret, suffixs, ignore) = argv.GetProp("suffix").ToStringArray(); - if (!ret) { + if (!ret || !CheckSuffix(suffixs) || suffixs.size() == 0) { HILOGE("Failed to get suffix prop."); return false; } - if (!CheckSuffix(suffixs) || suffixs.size() == 0) { - HILOGE("Invalid suffix."); - return false; - } filter->SetSuffix(suffixs); } if (argv.HasProp("displayName") && !argv.GetProp("displayName").TypeIs(napi_undefined)) { vector displayNames; tie(ret, displayNames, ignore) = argv.GetProp("displayName").ToStringArray(); - if (!ret) { + if (!ret || displayNames.size() == 0) { HILOGE("Failed to get displayname prop."); return false; } - if (displayNames.size() == 0) { - HILOGE("Invalid displayName."); - return false; - } filter->SetDisplayName(displayNames); } if (argv.HasProp("fileSizeOver") && !argv.GetProp("fileSizeOver").TypeIs(napi_undefined)) { @@ -97,6 +89,15 @@ static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) } filter->SetLastModifiedAfter(lastModifiedAfter); } + if (argv.HasProp("hidden")) { + bool hidden = false; + tie(ret, hidden) = argv.GetProp("hidden").ToBool(false); + if (!ret) { + HILOGE("Failed to get Hidden prop."); + return false; + } + filter->SetHidden(hidden); + } return true; } @@ -242,6 +243,10 @@ static int32_t FilterFunc(const struct dirent *filename) return FILTER_DISMATCH; } + if (g_optionArgs.filter.GetHidden() && string_view(filename->d_name).find(".") == 0) { + return FILTER_DISMATCH; + } + if (g_optionArgs.countNum < g_optionArgs.listNum || g_optionArgs.listNum == 0) { if ((filename->d_type == DT_DIR && g_optionArgs.recursion) || FilterResult(*filename)) { return FILTER_MATCH; -- Gitee