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));
            }
        }
Esempio n. 2
0
        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());
        }