示例#1
0
        public static List<FolderSelectionItem> getEnabledAndValidFoldersForMedia(FileInfo fileInfo, bool includeReadOnly, bool skipErrorInfo)
        {
            List<FolderSelectionItem> result = new List<FolderSelectionItem>();
            List<SettingsFolder> allFolders = AllFolders;
            List<SettingsFolder> toRemove = new List<SettingsFolder>();

            // remove not enabled and if fileinfo is null all relative paths
            foreach (SettingsFolder settingsFolder in allFolders) {
                if (!settingsFolder.Enabled) {
                    toRemove.Add(settingsFolder);
                }
                else {
                    if (fileInfo == null && !Path.IsPathRooted(settingsFolder.Folder)) {
                        toRemove.Add(settingsFolder);
                    }
                }
            }

            foreach (SettingsFolder settingsFolder in allFolders) {
                if (toRemove.Contains(settingsFolder)) continue;
                string folder = settingsFolder.Folder;
                if (fileInfo != null && !Path.IsPathRooted(settingsFolder.Folder)) {
                    folder = FileUtils.ResolveRelativePath(settingsFolder.Folder, Path.GetDirectoryName(fileInfo.FullName));
                }
                if (folder != null) {
                    FolderSelectionItem newFolderSelectionItem = new FolderSelectionItem() {
                        FolderName = folder,
                        //FolderErrorInfo = getFolderErrorInfo(folder),
                        OriginalFolderName = settingsFolder.Folder,
                        WasRelative = !Path.IsPathRooted(settingsFolder.Folder),
                        DefaultForMovies = settingsFolder.DefaultForMovies,
                        DefaultForTVShows = settingsFolder.DefaultForTVShows
                    };
                    if (skipErrorInfo)
                        newFolderSelectionItem.FolderErrorInfo = FolderErrorInfo.OK;
                    else
                        newFolderSelectionItem.FolderErrorInfo = getFolderErrorInfo(folder);

                    if (!includeReadOnly) {
                        if (newFolderSelectionItem.FolderErrorInfo == FolderErrorInfo.ReadOnly ||
                            newFolderSelectionItem.FolderErrorInfo == FolderErrorInfo.Inaccessible)
                            continue;
                    }

                    result.Add(newFolderSelectionItem);
                }
            }

            return result;
        }
示例#2
0
        public void DownloadSubtitle(SubtitleItem subtitleItem, BasicMediaDetail mediaDetail, FolderSelectionItem folderSelectionItem, SubtitlesSearchType searchType, bool skipDefaults)
        {
            if (IsCanceled())
                Kill();
            if (_subtitlesDownloaderThread != null && _subtitlesDownloaderThread.IsAlive)
                return;

            _isCanceled = false;
            _status = ThreadStatus.StatusEnded;

            DownloadData downloadData = new DownloadData {
                SubtitleItem = subtitleItem,
                MediaDetail = mediaDetail,
                FolderSelectionItem = folderSelectionItem,
                SearchType = searchType,
                SkipDefaults = skipDefaults,
                StatusList = new List<SubtitleDownloadStatus>()
            };

            _subtitlesDownloaderThread = new Thread(DownloadSubtitleAsync);
            _subtitlesDownloaderThread.IsBackground = true;
            _subtitlesDownloaderThread.Name = "Subtitles Downloader Thread";
            _subtitlesDownloaderThread.Start(downloadData);
        }