protected override bool CheckNeedUpdateOnNavigateTo(NavigationMode mode) { var source = IncrementalLoadingItems?.Source as MylistSearchSource; if (source == null) { return(true); } if (SearchOption != null) { return(!SearchOption.Equals(source.SearchOption)); } else { return(base.CheckNeedUpdateOnNavigateTo(mode)); } }
public FtpFileInfo[] GetFiles( string path, string searchPattern, SearchOption searchOption ) { Check.NotNullOrWhiteSpace(() => path); var request = this.Connect(path, WebRequestMethods.Ftp.ListDirectory); var response = (FtpWebResponse)request.GetResponse(); var files = new List <FtpFileInfo>(); var subDirectories = new List <string>(); if (searchPattern != SearchPattern) { searchPattern = searchPattern.Replace(SearchPattern, string.Empty); } this.ExecuteCommand( response.GetResponseStream(), (stream) => { try { var fileOrDirectory = stream.ReadLine(); bool isFile = Path.HasExtension(fileOrDirectory); if (isFile) { if (searchPattern.Equals(SearchPattern) || fileOrDirectory.Contains(searchPattern)) { var filePath = string.Concat( path, Path.AltDirectorySeparatorChar, fileOrDirectory ); var fileInfo = this.GetFile(filePath); Console.WriteLine(fileInfo.FullName); files.Add(fileInfo); } } else { if (searchOption.Equals(SearchOption.AllDirectories)) { var newPath = string.Concat( path, Path.AltDirectorySeparatorChar, fileOrDirectory ); subDirectories.Add(newPath); } } } catch (Exception ex) { throw new Exception(ex.Message); } } ); if (subDirectories.Count > 0) { foreach (var subDirectory in subDirectories) { var moreFiles = this.GetFiles(subDirectory, searchPattern, searchOption); files.AddRange(moreFiles); } } return(files.ToArray()); }