private bool OpenLines(IEnumerable <string> list)
        {
            var files = new List <FileImpInfo>();

            foreach (var path in list)
            {
                if (Directory.Exists(path))
                {
                    // path is a directory

                    var options = new DirectoryLoadOptions(path, SearchOption.TopDirectoryOnly,
                                                           FileTypes.Music | FileTypes.Videos | FileTypes.Pictures, string.Empty);
                    FileInfo[] fileInfos;
                    try
                    {
                        //files = Directory.GetFiles(path);
                        var directoryInfo = new DirectoryInfo(path);

                        fileInfos = directoryInfo.GetFiles();
                    }
                    catch (Exception e)
                    {
                        // doesn't matter why path choosing failed, no files available in this folder
                        var error = new ImpError(ErrorType.FailedToOpenFolder, e.Message);
                        this.mainC.EventC.ShowError(error);
                        return(true);
                    }


                    if (fileInfos.Length < 1)
                    {
                        return(true);
                    }

                    files.AddRange(options.FilterFiles(fileInfos, false));
                }
                else if (File.Exists(path))
                {
                    files.Add(new FileImpInfo(path));
                }
                else
                {
                    // File or folder could not be identified
                    var error = new ImpError(path, ErrorType.FileNotFound);
                    this.mainC.EventC.ShowError(error);
                }
            }
            if (files.Count == 1)
            {
                this.mainC.Exec(ImpCommand.OpenFile, files[0]);
            }
            else
            {
                foreach (var fileInfo in files)
                {
                    this.mainC.Exec(ImpCommand.AddFile, fileInfo);
                }
            }
            return(false);
        }
        private bool LoadSubDirectories(DirectoryLoadOptions options, string path)
        {
            DirectoryInfo[] folderinfos;
            if (StringHandler.IsSpecialFolder(path))
            {
                var specialFolder = SpecialFolderLoader.LoadSpecialFolder(path);
                folderinfos = new DirectoryInfo[specialFolder.FolderPaths.Count];
                for (int i = 0; i < specialFolder.FolderPaths.Count; i++)
                {
                    folderinfos[i] = new DirectoryInfo(specialFolder.FolderPaths[i]);
                }
            }
            else
            {
                try
                {
                    var directoryInfo = new DirectoryInfo(path);

                    folderinfos = directoryInfo.GetDirectories();
                }
                catch (Exception e)
                {
                    ImpError error = new ImpError(ErrorType.FailedToOpenFolder, e.Message);
                    mainC.EventC.ShowError(error);
                    return(true);
                }
            }


            foreach (var folderinfo in folderinfos)
            {
                AddFolderToPlayList(options, folderinfo.FullName);
            }
            return(false);
        }
        public void PrepareFolderLoader(DirectoryLoadOptions options)
        {
            if (loader != null && loader.IsAlive)
            {
                mainC.EventC.SetEvent(new EventText("Folder load already active", 1, EventType.Delayed));
                return;
            }

            ButtonAddSubFolder.IsEnabled = false;
            ButtonAddFolder.IsEnabled    = false;

            loader = new Thread(LoadDirectories);
            loader.Start(options);
        }
Esempio n. 4
0
        private bool LoadSubDirectories(DirectoryLoadOptions options, string path)
        {
            DirectoryInfo[] folderinfos;
            if (StringHandler.IsSpecialFolder(path))
            {
                var specialFolder = SpecialFolderLoader.LoadSpecialFolder(path);
                folderinfos = new DirectoryInfo[specialFolder.FolderPaths.Count];
                for (var i = 0; i < specialFolder.FolderPaths.Count; i++)
                {
                    folderinfos[i] = new DirectoryInfo(specialFolder.FolderPaths[i]);
                }
            }
            else
            {
                try
                {
                    var directoryInfo = new DirectoryInfo(path);

                    folderinfos = directoryInfo.GetDirectories();
                }
                catch (Exception e)
                {
                    var error = new ImpError(ErrorType.FailedToOpenFolder, e.Message);
                    mainC.EventC.ShowError(error);
                    return(true);
                }
            }

            if (path == options.RootPath && options.FilterOptions.HasFlag(FilterOptions.ChildFolders))
            {
                foreach (var folderinfo in folderinfos)
                {
                    if (StringHandler.FindFound(folderinfo.FullName, options.FindDirectoriesWords))
                    {
                        // Add only when going through filter
                        AddFolderToPlayList(options, folderinfo.FullName);
                    }
                }
            }
            else
            {
                foreach (var folderinfo in folderinfos)
                {
                    AddFolderToPlayList(options, folderinfo.FullName);
                }
            }

            return(false);
        }
Esempio n. 5
0
        public void PrepareFolderLoader(DirectoryLoadOptions options)
        {
            if (loader != null && !loader.IsCompleted)
            {
                mainC.EventC.SetEvent(new EventText("Folder load already active", 1, EventType.Delayed));
                return;
            }

            options.FindFilesText       = TextBoxFind.Text;
            options.FindDirectoriesText = TextBoxFindFolder.Text;
            //options.FilterOptions = ButtonFilterFolder.CurrentState == 0 ? FilterOptions.Files : FilterOptions.ChildFolders;
            options.FilterOptions = FilterOptions.Files;
            if (!string.IsNullOrWhiteSpace(options.FindDirectoriesText))
            {
                options.FilterOptions |= FilterOptions.ChildFolders;
            }

            ButtonAddSubFolder.IsEnabled = false;
            ButtonAddFolder.IsEnabled    = false;
            loader = Task.Factory.StartNew(() => LoadDirectories(options));
        }
Esempio n. 6
0
        private void AddFolderToPlayList(DirectoryLoadOptions options, string path)
        {
            if (options.SearchOption == SearchOption.AllDirectories)
            {
                if (LoadSubDirectories(options, path))
                {
                    return;
                }
                if (options.FilterOptions.HasFlag(FilterOptions.ChildFolders) && path == options.RootPath)
                {
                    return;
                }
            }

            FileInfo[] fileInfos;
            if (StringHandler.IsSpecialFolder(path))
            {
                var specialFolder = SpecialFolderLoader.LoadSpecialFolder(path);
                fileInfos = new FileInfo[specialFolder.FilePaths.Count];
                for (var i = 0; i < specialFolder.FilePaths.Count; i++)
                {
                    fileInfos[i] = new FileInfo(specialFolder.FilePaths[i]);
                }
            }
            else
            {
                try
                {
                    //files = Directory.GetFiles(path);
                    var directoryInfo = new DirectoryInfo(path);

                    fileInfos = directoryInfo.GetFiles();
                }
                catch (Exception e)
                {
                    // doesn't matter why path choosing failed, no files available in this folder
                    var error = new ImpError(ErrorType.FailedToOpenFolder, e.Message);
                    mainC.EventC.ShowError(error);
                    return;
                }
            }
            if (fileInfos.Length < 1)
            {
                return;
            }

            var files = options.FilterFiles(fileInfos, options.FilterOptions.HasFlag(FilterOptions.Files));

            IComparer <FileImpInfo> comparer;

            switch ((FileSortMode)ButtonSort.CurrentState)
            {
            case FileSortMode.Name:
                comparer = new ComparerFileName();
                break;

            case FileSortMode.Date:
                comparer = new ComparerFileDate();
                break;

            case FileSortMode.LastUsage:
                comparer = new ComparerViewThenName();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            Array.Sort(files, comparer);

            foreach (var fileInfo in files)
            {
                if (options.PlayFirstFile)
                {
                    mainC.Exec(ImpCommand.AddFile, fileInfo);

                    object[] args = { ImpCommand.OpenFile, fileInfo };
                    Dispatcher.BeginInvoke(new ExecDelegate <ImpCommand>(mainC.Exec), DispatcherPriority.Normal, args);

                    options.PlayFirstFile = false;
                }
                else
                {
                    mainC.Exec(ImpCommand.AddFile, fileInfo);
                }
            }
        }
Esempio n. 7
0
 private void LoadDirectories(DirectoryLoadOptions options)
 {
     AddFolderToPlayList(options, options.RootPath);
     Dispatcher.Invoke(FixFolderButtons);
 }