Exemplo n.º 1
0
        private async Task SetFiles(string path)
        {
            _EventWaitHandle.Reset();

            Task files = Task.Run(() =>
            {
                lock (_fileLock)
                {
                    FileCache.Clear();
                    if (FilterFileExtensions == null)
                    {
                        foreach (string i in Directory.EnumerateFiles(path).OrderByNatural(e => e, StringComparer.CurrentCulture, SortOrderFile != -1))
                        {
                            FileCache.Add(Path.GetFileName(i));
                        }
                    }
                    else
                    {
                        foreach (string i in Directory.EnumerateFiles(path).OrderByNatural(e => e, StringComparer.CurrentCulture, SortOrderFile != -1))
                        {
                            if (FilterFileExtensions.Contains(PathHelper.GetFilenameExtension(i)))
                            {
                                FileCache.Add(Path.GetFileName(i));
                            }
                        }
                    }
                }
            });

            Task folders = Task.Run(() =>
            {
                lock (_folderLock)
                {
                    DirectoryCache.Clear();

                    foreach (string i in Directory.EnumerateDirectories(path).OrderByNatural(e =>
                                                                                             e, StringComparer.CurrentCulture, SortOrderFolder != -1))
                    {
                        DirectoryCache.Add(Path.GetFileName(i));
                    }
                }
            });

            await files;
            await folders;

            files.Dispose();
            folders.Dispose();

            _EventWaitHandle.Set();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Reads the <see cref="ImgFormat"/> using the file extension of the given string.
        /// </summary>
        /// <param name="path">The path or string.</param>
        /// <returns>
        /// The <see cref="ImgFormat"/> of the given string.
        /// </returns>
        public static ImgFormat GetImageFormatFromPath(string path)
        {
            string ext = PathHelper.GetFilenameExtension(path);

            if (string.IsNullOrEmpty(ext))
            {
                return(InternalSettings.Default_Image_Format);
            }

            switch (ext)
            {
            case "png":
                return(ImgFormat.png);

            case "jpg":
            case "jpeg":
            case "jpe":
            case "jfif":
                return(ImgFormat.jpg);

            case "gif":
                return(ImgFormat.gif);

            case "bmp":
                return(ImgFormat.bmp);

            case "tif":
            case "tiff":
                return(ImgFormat.tif);

            case "wrm":
            case "dwrm":
                return(ImgFormat.wrm);

            case "webp":
                return(ImgFormat.webp);
            }
            return(ImgFormat.nil);
        }
Exemplo n.º 3
0
        private void Process_ItemRenamed(RenamedEventArgs e)
        {
            if (DirectoryCache.Remove(e.OldName))
            {
                BinaryInsertDirectoryCache(e.Name, false);
                OnDirectoryRenamed(e.Name, e.OldName);
                return;
            }

            if (FilterFileExtensions != null)
            {
                // issue #4 -> files that are renamed are not added/removed from listview with extension filter
                string extOld = PathHelper.GetFilenameExtension(e.OldName);
                string extNew = PathHelper.GetFilenameExtension(e.Name);

                if (FilterFileExtensions.Contains(extOld) && !FilterFileExtensions.Contains(extNew))
                {
                    if (FileCache.Remove(e.Name))
                    {
                        OnFileRemoved(e.Name);
                    }
                    return;
                }
                else if (!FilterFileExtensions.Contains(extOld) && FilterFileExtensions.Contains(extNew))
                {
                    if (File.Exists(e.FullPath))
                    {
                        BinaryInsertFileCache(e.Name);
                    }
                    return;
                }
            }

            if (FileCache.Remove(e.OldName))
            {
                BinaryInsertFileCache(e.Name, false);
                OnFileRenamed(e.Name, e.OldName);
            }
        }
Exemplo n.º 4
0
        private void Process(object item)
        {
            _EventWaitHandle.WaitOne();

            FileSystemEventArgs e = item as FileSystemEventArgs;

            switch (e.ChangeType)
            {
            case WatcherChangeTypes.Changed:

                if (!FilterFileExtensions.Contains(PathHelper.GetFilenameExtension(e.Name)))
                {
                    return;
                }

                OnItemChanged(e.Name);
                break;

            case WatcherChangeTypes.Created:

                if (Directory.Exists(e.FullPath))
                {
                    BinaryInsertDirectoryCache(e.Name);
                    return;
                }

                if (!FilterFileExtensions.Contains(PathHelper.GetFilenameExtension(e.Name)))
                {
                    return;
                }

                if (File.Exists(e.FullPath))
                {
                    BinaryInsertFileCache(e.Name);
                }

                break;

            case WatcherChangeTypes.Deleted:

                if (DirectoryCache.Remove(e.Name))
                {
                    OnDirectoryRemoved(e.Name);
                    return;
                }

                if (!FilterFileExtensions.Contains(PathHelper.GetFilenameExtension(e.Name)))
                {
                    return;
                }

                if (FileCache.Remove(e.Name))
                {
                    OnFileRemoved(e.Name);
                }

                break;

            case WatcherChangeTypes.Renamed:
                Process_ItemRenamed(item as RenamedEventArgs);
                break;
            }
        }