From b275276585232b3c8b7bb0a6049eeb8a16c44903 Mon Sep 17 00:00:00 2001 From: Juan Pablo Fernandez Date: Thu, 12 Sep 2019 13:09:40 -0500 Subject: [PATCH 1/3] Exclude Filenames --- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ FileBrowser/FileBrowser.swift | 7 +++++++ FileBrowser/FileParser.swift | 17 +++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++++++++ 4 files changed, 40 insertions(+) create mode 100644 FileBrowser.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 examples/Sample/Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/FileBrowser.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/FileBrowser.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/FileBrowser.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/FileBrowser/FileBrowser.swift b/FileBrowser/FileBrowser.swift index aad61e3..8749fa2 100644 --- a/FileBrowser/FileBrowser.swift +++ b/FileBrowser/FileBrowser.swift @@ -14,6 +14,13 @@ open class FileBrowser: UINavigationController { let parser = FileParser.sharedInstance var fileList: FileListViewController? + + /// File names to exclude from the file browser. + open var excludesFileNames: [String]? { + didSet { + parser.excludesFileNames = excludesFileNames + } + } /// File types to exclude from the file browser. open var excludesFileExtensions: [String]? { diff --git a/FileBrowser/FileParser.swift b/FileBrowser/FileParser.swift index c0e364f..2f9770d 100644 --- a/FileBrowser/FileParser.swift +++ b/FileBrowser/FileParser.swift @@ -12,6 +12,20 @@ class FileParser { static let sharedInstance = FileParser() + var _excludesFileNames = [String]() + + /// Case sensitive + var excludesFileNames: [String]? { + get { + return _excludesFileNames + } + set { + if let newValue = newValue { + _excludesFileNames = newValue + } + } + } + var _excludesFileExtensions = [String]() /// Mapped for case insensitivity @@ -46,6 +60,9 @@ class FileParser { // Parse for filePath in filePaths { let file = FBFile(filePath: filePath) + if let excludesFileNames = excludesFileNames, excludesFileNames.contains(file.displayName) { + continue + } if let excludesFileExtensions = excludesFileExtensions, let fileExtensions = file.fileExtension , excludesFileExtensions.contains(fileExtensions) { continue } diff --git a/examples/Sample/Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/Sample/Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/examples/Sample/Sample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + From aae49d8c37f8537623b043f2f61e67e0e3480520 Mon Sep 17 00:00:00 2001 From: Juan Pablo Fernandez Date: Thu, 12 Sep 2019 13:31:08 -0500 Subject: [PATCH 2/3] Check if filename contains any of the excluded file names --- FileBrowser/FileParser.swift | 2 +- .../PreviewTransitionViewController.xib | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/FileBrowser/FileParser.swift b/FileBrowser/FileParser.swift index 2f9770d..f485ca7 100644 --- a/FileBrowser/FileParser.swift +++ b/FileBrowser/FileParser.swift @@ -60,7 +60,7 @@ class FileParser { // Parse for filePath in filePaths { let file = FBFile(filePath: filePath) - if let excludesFileNames = excludesFileNames, excludesFileNames.contains(file.displayName) { + if let excludesFileNames = excludesFileNames, excludesFileNames.contains(where: file.displayName.contains) { continue } if let excludesFileExtensions = excludesFileExtensions, let fileExtensions = file.fileExtension , excludesFileExtensions.contains(fileExtensions) { diff --git a/FileBrowser/Resources/PreviewTransitionViewController.xib b/FileBrowser/Resources/PreviewTransitionViewController.xib index 4771e6b..78ab391 100644 --- a/FileBrowser/Resources/PreviewTransitionViewController.xib +++ b/FileBrowser/Resources/PreviewTransitionViewController.xib @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -13,15 +17,15 @@ - + - - + + - + From 7a3b59c249d69bad6434635efbb99c684a7dfc28 Mon Sep 17 00:00:00 2001 From: Juan Pablo Fernandez Date: Thu, 12 Sep 2019 13:39:42 -0500 Subject: [PATCH 3/3] Updated to current swift syntax --- FileBrowser.xcodeproj/project.pbxproj | 9 +++++++-- FileBrowser/FBFile.swift | 12 ++++++------ FileBrowser/FileListSearch.swift | 4 ++-- FileBrowser/FileListTableView.swift | 6 +++--- FileBrowser/PreviewTransitionViewController.swift | 4 ++-- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/FileBrowser.xcodeproj/project.pbxproj b/FileBrowser.xcodeproj/project.pbxproj index cfa9797..9d9c276 100644 --- a/FileBrowser.xcodeproj/project.pbxproj +++ b/FileBrowser.xcodeproj/project.pbxproj @@ -259,11 +259,11 @@ TargetAttributes = { 344169531C67812400B93D28 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1030; }; 3441695D1C67812400B93D28 = { CreatedOnToolsVersion = 7.2.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1030; ProvisioningStyle = Manual; }; }; @@ -273,6 +273,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = 3441694A1C67812400B93D28; @@ -477,6 +478,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -495,6 +497,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.FileBrowser; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -506,6 +509,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.FileBrowserTests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -517,6 +521,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.FileBrowserTests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/FileBrowser/FBFile.swift b/FileBrowser/FBFile.swift index ff3869d..6ca9006 100644 --- a/FileBrowser/FBFile.swift +++ b/FileBrowser/FBFile.swift @@ -11,17 +11,17 @@ import Foundation /// FBFile is a class representing a file in FileBrowser @objc open class FBFile: NSObject { /// Display name. String. - @objc open let displayName: String + @objc public let displayName: String // is Directory. Bool. - open let isDirectory: Bool + public let isDirectory: Bool /// File extension. - open let fileExtension: String? + public let fileExtension: String? /// File attributes (including size, creation date etc). - open let fileAttributes: NSDictionary? + public let fileAttributes: NSDictionary? /// NSURL file path. - open let filePath: URL + public let filePath: URL // FBFileType - open let type: FBFileType + public let type: FBFileType open func delete() { diff --git a/FileBrowser/FileListSearch.swift b/FileBrowser/FileListSearch.swift index ede8f3a..c808be2 100644 --- a/FileBrowser/FileListSearch.swift +++ b/FileBrowser/FileListSearch.swift @@ -12,11 +12,11 @@ extension FileListViewController: UISearchBarDelegate, UISearchControllerDelegat // MARK: UISearchControllerDelegate func willPresentSearchController(_ searchController: UISearchController) { - self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0) + self.tableView.contentInset = UIEdgeInsets.init(top: 20, left: 0, bottom: 0, right: 0) } func willDismissSearchController(_ searchController: UISearchController) { - self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) + self.tableView.contentInset = UIEdgeInsets.init(top: 0, left: 0, bottom: 0, right: 0) } // MARK: UISearchBarDelegate diff --git a/FileBrowser/FileListTableView.swift b/FileBrowser/FileListTableView.swift index 2caba43..d4ff3ea 100644 --- a/FileBrowser/FileListTableView.swift +++ b/FileBrowser/FileListTableView.swift @@ -86,13 +86,13 @@ extension FileListViewController: UITableViewDataSource, UITableViewDelegate { return collation.section(forSectionIndexTitle: index) } - func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { - if (editingStyle == UITableViewCellEditingStyle.delete) { + func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { + if (editingStyle == UITableViewCell.EditingStyle.delete) { let selectedFile = fileForIndexPath(indexPath) selectedFile.delete() prepareData() - tableView.reloadSections([indexPath.section], with: UITableViewRowAnimation.automatic) + tableView.reloadSections([indexPath.section], with: UITableView.RowAnimation.automatic) } } diff --git a/FileBrowser/PreviewTransitionViewController.swift b/FileBrowser/PreviewTransitionViewController.swift index a2c5e28..c314db4 100644 --- a/FileBrowser/PreviewTransitionViewController.swift +++ b/FileBrowser/PreviewTransitionViewController.swift @@ -18,10 +18,10 @@ class PreviewTransitionViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - self.addChildViewController(quickLookPreviewController) + self.addChild(quickLookPreviewController) containerView.addSubview(quickLookPreviewController.view) quickLookPreviewController.view.frame = containerView.bounds - quickLookPreviewController.didMove(toParentViewController: self) + quickLookPreviewController.didMove(toParent: self) } }