private ObservableCollection <LoginScreen> GetAvailableLoginScreens() { if (LoginScreens == null) { return(new ObservableCollection <LoginScreen>(Enumerable.Empty <LoginScreen>())); } IEnumerable <LoginScreen> result; if (ForceExtraction) { result = LoginScreens.Where(l => l.IsDownloaded); } else { result = LoginScreens.Where(l => l.IsDownloaded || l.IsExtracted); if (DisplayUnknown) { var dirs = Directory.EnumerateDirectories(String.Format("{0}{1}", Configuration.GamePath, Configuration.ThemeDirPath)); result = result.Concat(from dir in dirs where !LoginScreens.Any( l => l.Filename.Equals(String.Format("{0}.zip", dir.RegExpReplace(@"^.*\\", "")))) && !dir.Contains("parchment") select new LoginScreen() { Name = dir.RegExpReplace(@"^.*\\", ""), }); } } return(new ObservableCollection <LoginScreen>(result.OrderBy(l => l.ToString()))); }
private void PackNewThemesMenuItem_Click(object sender, RoutedEventArgs e) { var result = new List <LoginScreen>(); var dirs = Directory.EnumerateDirectories(String.Format("{0}{1}", Configuration.GamePath, Configuration.ThemeDirPath)); result.AddRange(from dir in dirs where !LoginScreens.Any( l => l.Filename.Equals(String.Format("{0}.zip", dir.RegExpReplace(@"^.*\\", "")))) && !dir.Contains("parchment") select new LoginScreen() { Name = dir.RegExpReplace(@"^.*\\", ""), }); var packager = new Packager() { UnkownLoginScreens = result }; packager.ShowDialog(); }