private void UpdateEpisode(EpisodeEntry entry) { using (SQLiteCommand cmd = new SQLiteCommand(SQLConn)) { cmd.CommandText = @"INSERT OR REPLACE INTO episodes VALUES (@eid, @aid, @epno, @spl_epno, @english, @nihongo, @romaji, @airdate, @watched);"; SQLiteParameter[] eParams = { new SQLiteParameter("@eid", entry.eid), new SQLiteParameter("@aid", entry.aid), new SQLiteParameter("@epno", entry.epno), new SQLiteParameter("@spl_epno", entry.spl_epno), new SQLiteParameter("@english", entry.english), new SQLiteParameter("@nihongo", entry.nihongo), new SQLiteParameter("@romaji", entry.romaji), new SQLiteParameter("@airdate", entry.airdate), new SQLiteParameter("@watched", entry.watched) }; eParams[2].IsNullable = eParams[3].IsNullable = eParams[4].IsNullable = eParams[5].IsNullable = true; if (entry.epno == 0) { eParams[2].Value = null; } cmd.Parameters.AddRange(eParams); cmd.ExecuteNonQuery(); } }
public async Task <int> Handle(CreatePost request, CancellationToken cancellationToken) { var gameId = _tenant.Instance.Id; var episode = await _db.Episode .Include(e => e.Series) .Include(e => e.Status) .FirstAsync(e => e.Series.GameId == gameId && (e.Status.Name == StaticValues.Published), cancellationToken: cancellationToken); var entity = new EpisodeEntry(); var episodeEntryStatus = entity.EpisodeEntryStatusId = (await _db.EpisodeEntryStatus.FirstAsync( x => x.Name == StaticValues.Draft, cancellationToken: cancellationToken)).Id; entity.EpisodeEntryTypeId = (await _db.EpisodeEntryType.FirstAsync(x => x.Name == StaticValues.Post, cancellationToken: cancellationToken)).Id; entity.EpisodeId = episode.Id; await _db.EpisodeEntry.AddAsync(entity, cancellationToken : cancellationToken); await _db.SaveChangesAsync(cancellationToken); entity.EpisodeEntryPlayer = new Collection <EpisodeEntryPlayer>() { new EpisodeEntryPlayer() { PlayerId = _userService.GetId(), EpisodeEntryId = entity.Id } }; _db.EpisodeEntry.Update(entity); await _db.SaveChangesAsync(cancellationToken); return(entity.Id); }
public StoryPostQueryFixture() { Context = TestSpmsContextFactory.Create(); var game = Context.Game.First(); Context.Biography.Add(new Domain.Models.Biography() { Firstname = "Dan", Surname = "Taylor", Player = new Player() { AuthString = "123" }, State = new BiographyState() { Default = false, Name = "State", GameId = game.Id }, Posting = new Posting() { Name = "Starbase Gamma" } }); Context.SaveChanges(); var ipsum = new NLipsum.Core.LipsumGenerator(); var sentences = ipsum.GenerateSentences(3, new Sentence(5, 20)); var episodeEntry = new EpisodeEntry() { Title = sentences[0], Location = sentences[1], Timeline = sentences[2], Content = ipsum.GenerateLipsum(5), EpisodeId = Context.Episode.First().Id, EpisodeEntryTypeId = Context.EpisodeEntryType.First(x => x.Name == StaticValues.Post).Id, EpisodeEntryStatusId = Context.EpisodeEntryStatus.First(x => x.Name == StaticValues.Published).Id }; Context.EpisodeEntry.Add(episodeEntry); Context.SaveChanges(); var configurationProvider = new MapperConfiguration(cfg => { cfg.AddProfile <ApplicationMapper>(); }); Mapper = configurationProvider.CreateMapper(); }
private void HandleSubmit(EpisodeEntry entity, AuthorPostViewModel model) { var submitValue = model.submitpost; if (string.IsNullOrEmpty(submitValue)) { return; } if (submitValue.Equals("publish")) { entity.PublishedAt = DateTime.UtcNow; entity.EpisodeEntryStatusId = _context.EpisodeEntryStatus.First(x => x.Name == StaticValues.Published).Id; } if (submitValue.Equals("schedule")) { entity.PublishedAt = model.PostAt; entity.EpisodeEntryStatusId = _context.EpisodeEntryStatus.First(x => x.Name == StaticValues.Pending).Id; } }
private void OKButton_Click(object sender, RoutedEventArgs e) { float tempRating; int tempRuntime; switch (ResultTabControl.SelectedIndex) { case 1: int tempVotes; int tempYear; float.TryParse(MovieRating.Text, NumberStyles.Float, AppSettings.CInfo, out tempRating); int.TryParse(MovieRuntime.Text, NumberStyles.Integer, AppSettings.CInfo, out tempRuntime); int.TryParse(MovieVotes.Text, NumberStyles.Integer, AppSettings.CInfo, out tempVotes); int.TryParse(MovieYear.Text, NumberStyles.Integer, AppSettings.CInfo, out tempYear); ResultMovieData = new MovieEntry { Casts = _castList.Casts, Aired = "1969-12-31", Premiered = "1969-12-31", Code = "", Countries = MovieCountry.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), DateAdded = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Directors = MovieDirector.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), EpBookmark = 0f, FanartImages = _backdropsList.ToList(), Genres = MovieGenre.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), ImdbID = MovieImdbId.Text, LastPlayed = "1969-12-31", MPAARating = MovieMPAARating.Text, OriginalTitle = MovieOriginalTitle.Text, Outline = "", PlayCount = 0, Plot = MoviePlot.Text, PosterImages = _postersList.ToList(), Rating = tempRating, Runtime = tempRuntime, SetNames = MovieSetName.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), SortTitle = MovieSortTitle.Text, Status = "", Studios = MovieStudio.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), Tagline = MovieTagline.Text, Title = MovieTitle.Text, Top250 = 0, Trailer = MovieTrailer.Text, Votes = tempVotes, Writers = MovieWriters.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).ToList(), Year = tempYear, SelectedBackdropImage = ((MovieDBImageInfo)MovieBackdropList.SelectedItem).UrlOriginal, SelectedPosterImage = ((MovieDBPosterImage)MoviePosterList.SelectedItem).UrlOriginal }; break; case 2: float.TryParse(TvShowEpisodeRating.Text, NumberStyles.Float, AppSettings.CInfo, out tempRating); int.TryParse(TvShowEpisodeRuntime.Text, NumberStyles.Integer, AppSettings.CInfo, out tempRuntime); ResultEpisodeData = new EpisodeEntry { Title = TvShowEpisodeTitle.Text, ImdbID = TvShowEpisodeImdbId.Text, DateAdded = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Code = "", LastPlayed = "1969-12-31", Aired = TvShowEpisodeFirstAired.Text, Rating = tempRating, Runtime = tempRuntime, Directors = TvShowEpisodeDirector.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries) .ToList(), Writers = TvShowEpisodeWriter.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries) .ToList(), Plot = TvShowEpisodePlot.Text, Studios = TvShowNetwork.Text.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries) .ToList(), DisplayEpisode = ((DBTvShowEpisode)TvShowEpisodeNumber.SelectedItem).EpisodeNumber, DisplaySeason = ((DBTvShowSeason)TvShowSeason.SelectedItem).SeasonNumber, Episode = ((DBTvShowEpisode)TvShowEpisodeNumber.SelectedItem).EpisodeNumber, Season = ((DBTvShowSeason)TvShowSeason.SelectedItem).SeasonNumber, MPAARating = TvShowMpaaRating.Text, ShowTitle = TvShowTitle.Text, PosterImage = new MovieDBImageInfo { UrlOriginal = ((DBTvShowEpisode)TvShowEpisodeNumber.SelectedItem).EpisodeImageUrl }, SelectedPosterImage = ((DBTvShowEpisode)TvShowEpisodeNumber.SelectedItem).EpisodeImageUrl, Casts = _castList.Casts, Premiered = TvShowFirstAired.Text }; List <string> gStars = ((DBTvShowEpisode)TvShowEpisodeNumber.SelectedItem).GuestStars; foreach (string gStar in gStars) { ResultEpisodeData.Casts.Add(new MovieDBCast { Name = gStar }); } break; } SearchString = MediaTitleInfo.Text; AppSettings.LastSelectedSource = DataSource.SelectedIndex; DialogResult = true; }
/// <summary> /// Parses the return message of a FILE command, /// and then triggers the OnFileInfoFetched event. /// </summary> private void ParseFileData(object item, string data) { string[] info = Regex.Split(data, "\n")[1].Split('|'); AnimeEntry anime = new AnimeEntry(); EpisodeEntry episode = new EpisodeEntry(); FileEntry file = (item is HashItem) ? new FileEntry((HashItem)item) : (FileEntry)item; file.fid = int.Parse(info[0]); anime.aid = episode.aid = int.Parse(info[1]); episode.eid = file.eid = int.Parse(info[2]); file.lid = int.Parse(info[4]); file.source = info[5].FormatNullable(); file.acodec = info[6].Contains("'") ? info[6].Split('\'')[0] : info[6].FormatNullable(); file.acodec = ExtensionMethods.FormatAudioCodec(file.acodec); file.vcodec = ExtensionMethods.FormatVideoCodec(info[7].FormatNullable()); file.vres = info[8].FormatNullable(); file.length = double.Parse(info[9]); if (!string.IsNullOrEmpty(info[10]) && int.Parse(info[10]) != 0) episode.airdate = double.Parse(info[10]); file.state = int.Parse(info[11]); episode.watched = file.watched = Convert.ToBoolean(int.Parse(info[12])); if (!string.IsNullOrEmpty(info[13]) && int.Parse(info[13]) != 0) file.watcheddate = double.Parse(info[13]); anime.eps_total = !string.IsNullOrEmpty(info[14]) ? (int.Parse(info[14]) > int.Parse(info[15]) ? int.Parse(info[14]) : int.Parse(info[15])) : int.Parse(info[15]); anime.year = info[16].Contains('-') ? (info[16].Split('-')[0] != info[16].Split('-')[1] ? info[16] : info[16].Split('-')[0]) : info[16]; anime.type = info[17]; anime.romaji = info[18]; anime.nihongo = info[19].FormatNullable(); anime.english = info[20].FormatNullable(); if (Regex.IsMatch(info[21].Substring(0, 1), @"\D")) episode.spl_epno = info[21]; else episode.epno = info[21].Contains('-') ? int.Parse(info[21].Split('-')[0]) : int.Parse(info[21]); episode.english = info[22]; episode.romaji = info[23].FormatNullable(); episode.nihongo = info[24].FormatNullable(); if (int.Parse(info[3]) != 0) file.Group = new GroupEntry { gid = int.Parse(info[3]), group_name = info[25], group_abbr = info[26] }; OnFileInfoFetched(new FileInfoFetchedArgs(anime, episode, file)); }
public FileInfoFetchedArgs(AnimeEntry anime, EpisodeEntry episode, FileEntry file) { Anime = anime; Episode = episode; File = file; }
public static MylistEntry FromEpisode(EpisodeEntry entry) { MylistEntry m_entry = new MylistEntry(); TimeSpan length = TimeSpan.FromSeconds(entry.length); m_entry.OriginalEntry = entry; m_entry.ID = entry.eid; m_entry.HasChildren = entry.hasFiles; m_entry.Col0 = String.Format("{0}: {1}", (entry.spl_epno == null) ? entry.epno.ToString() : entry.spl_epno, entry.english); m_entry.Col2 = entry.watched ? "Yes" : "No"; if (entry.airdate != null) m_entry.Col3 = entry.airdate.ToDateTime(false).ToShortDateString(); m_entry.Col4 = length.ToFormattedLength(); m_entry.Col5 = entry.size.ToFormattedBytes(); return m_entry; }
private void DoWork(object sender, DoWorkEventArgs e) { List <AnimeEntry> m_aList = new List <AnimeEntry>(); double totalProcessedFiles = 0; double totalFiles = int.Parse(new XPathDocument(xmlPath).CreateNavigator().Evaluate("count(//file)").ToString()) * 2; using (XmlReader reader = XmlReader.Create(xmlPath)) { reader.ReadToFollowing("mylist"); if (reader["template"] != "mini") { Dispatcher.Invoke(new Action(delegate { MessageBox.Show("Please ensure you selected a mylist export file that used the xml-mini template.", "Invalid xml template!", MessageBoxButton.OK, MessageBoxImage.Error); })); xmlWorker.CancelAsync(); return; } // <anime> while (reader.ReadToFollowing("anime")) { while (closePending) { Thread.Sleep(500); } AnimeEntry entry = new AnimeEntry(); entry.aid = int.Parse(reader["aid"]); entry.type = reader["type"]; entry.year = reader["year"]; // <titles> reader.ReadToFollowing("default"); entry.romaji = reader.ReadElementContentAsString(); Dispatcher.BeginInvoke(new Action(delegate { importFilePath.Text = String.Format("Reading: {0}", entry.title); })); reader.ReadToFollowing("nihongo"); entry.nihongo = reader.ReadElementContentAsString().FormatNullable(); reader.ReadToFollowing("english"); entry.english = reader.ReadElementContentAsString().FormatNullable(); // </titles> // <episodes> if (!reader.ReadToFollowing("episodes")) { goto Finish; } entry.eps_total = int.Parse(reader["total"]); XmlReader episodesReader = reader.ReadSubtree(); // <episode> while (episodesReader.ReadToFollowing("episode")) { while (closePending) { Thread.Sleep(500); } EpisodeEntry episode = new EpisodeEntry(); episode.eid = int.Parse(episodesReader["eid"]); episode.airdate = episodesReader["aired"] == "-" ? null : UnixTimestamp.FromDateTime(DateTime.Parse(episodesReader["aired"], System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"))); episode.watched = Convert.ToBoolean(int.Parse(episodesReader["watched"])); if (Regex.IsMatch(episodesReader["epno"].Substring(0, 1), @"\D")) { episode.spl_epno = episodesReader["epno"]; } else { episode.epno = int.Parse(episodesReader["epno"]); } // <titles> episodesReader.ReadToDescendant("english"); episode.english = episodesReader.ReadElementContentAsString(); episodesReader.ReadToFollowing("nihongo"); episode.nihongo = episodesReader.ReadElementContentAsString().FormatNullable(); episodesReader.ReadToFollowing("romaji"); episode.romaji = episodesReader.ReadElementContentAsString().FormatNullable(); // </titles> // <files> if (!episodesReader.ReadToFollowing("files")) { goto Finish; } XmlReader filesReader = episodesReader.ReadSubtree(); // <file> while (filesReader.ReadToFollowing("file")) { while (closePending) { Thread.Sleep(500); } FileEntry file = new FileEntry(); file.fid = int.Parse(filesReader["fid"]); file.lid = int.Parse(filesReader["lid"]); file.watcheddate = filesReader["watched"] == "-" ? null : UnixTimestamp.FromDateTime(DateTime.Parse(episodesReader["watched"], System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"))); file.watched = file.watcheddate != null; file.generic = episodesReader["generic"] != null; if (!file.generic) // generic entries do not have this information { int gid = 0; if (filesReader["gid"] != null) { gid = int.Parse(filesReader["gid"]); } file.ed2k = filesReader["ed2k"]; file.length = double.Parse(filesReader["length"]); file.size = double.Parse(filesReader["size"]); file.source = filesReader["source"].FormatNullable(); file.acodec = ExtensionMethods.FormatAudioCodec(filesReader["acodec"].FormatNullable()); file.vcodec = ExtensionMethods.FormatVideoCodec(filesReader["vcodec"].FormatNullable()); file.vres = filesReader["vres"].FormatNullable(); if (gid != 0) { // <group_name> filesReader.ReadToFollowing("group_name"); string group_name = filesReader.ReadElementContentAsString(); // </group_name> // <group_abbr> filesReader.ReadToFollowing("group_abbr"); string group_abbr = filesReader.ReadElementContentAsString(); // </group_abbr> file.Group = new GroupEntry { gid = gid, group_name = group_name, group_abbr = group_abbr }; } } episode.Files.Add(file); importProgressBar.Dispatcher.BeginInvoke(new Action <double, double>((total, processed) => { importProgressBar.Value = Math.Ceiling(processed / total * 100); }), totalFiles, ++totalProcessedFiles); // </file> } // </files> filesReader.Close(); entry.Episodes.Add(episode); // </episode> } // </episodes> episodesReader.Close(); Finish: m_aList.Add(entry); // </anime> } // </mylist> } m_myList.OnEntryInserted += (aTitle) => { importProgressBar.Dispatcher.BeginInvoke(new Action(delegate { importFilePath.Text = String.Format("Writing: {0}", aTitle); importProgressBar.Value = Math.Ceiling(++totalProcessedFiles / totalFiles * 100); })); }; m_myList.InsertFromImport(m_aList); }
/// <summary> /// Parses the return message of a FILE command, /// and then triggers the OnFileInfoFetched event. /// </summary> private void ParseFileData(object item, string data) { string[] info = Regex.Split(data, "\n")[1].Split('|'); AnimeEntry anime = new AnimeEntry(); EpisodeEntry episode = new EpisodeEntry(); FileEntry file = (item is HashItem) ? new FileEntry((HashItem)item) : (FileEntry)item; file.fid = int.Parse(info[0]); anime.aid = episode.aid = int.Parse(info[1]); episode.eid = file.eid = int.Parse(info[2]); file.lid = int.Parse(info[4]); file.source = info[5].FormatNullable(); file.acodec = info[6].Contains("'") ? info[6].Split('\'')[0] : info[6].FormatNullable(); file.acodec = ExtensionMethods.FormatAudioCodec(file.acodec); file.vcodec = ExtensionMethods.FormatVideoCodec(info[7].FormatNullable()); file.vres = info[8].FormatNullable(); file.length = double.Parse(info[9]); if (!string.IsNullOrEmpty(info[10]) && int.Parse(info[10]) != 0) { episode.airdate = double.Parse(info[10]); } file.state = int.Parse(info[11]); episode.watched = file.watched = Convert.ToBoolean(int.Parse(info[12])); if (!string.IsNullOrEmpty(info[13]) && int.Parse(info[13]) != 0) { file.watcheddate = double.Parse(info[13]); } anime.eps_total = !string.IsNullOrEmpty(info[14]) ? (int.Parse(info[14]) > int.Parse(info[15]) ? int.Parse(info[14]) : int.Parse(info[15])) : int.Parse(info[15]); anime.year = info[16].Contains('-') ? (info[16].Split('-')[0] != info[16].Split('-')[1] ? info[16] : info[16].Split('-')[0]) : info[16]; anime.type = info[17]; anime.romaji = info[18]; anime.nihongo = info[19].FormatNullable(); anime.english = info[20].FormatNullable(); if (Regex.IsMatch(info[21].Substring(0, 1), @"\D")) { episode.spl_epno = info[21]; } else { episode.epno = info[21].Contains('-') ? int.Parse(info[21].Split('-')[0]) : int.Parse(info[21]); } episode.english = info[22]; episode.romaji = info[23].FormatNullable(); episode.nihongo = info[24].FormatNullable(); if (int.Parse(info[3]) != 0) { file.Group = new GroupEntry { gid = int.Parse(info[3]), group_name = info[25], group_abbr = info[26] } } ; OnFileInfoFetched(new FileInfoFetchedArgs(anime, episode, file)); }
private void DoWork(object sender, DoWorkEventArgs e) { List<AnimeEntry> m_aList = new List<AnimeEntry>(); double totalProcessedFiles = 0; double totalFiles = int.Parse(new XPathDocument(xmlPath).CreateNavigator().Evaluate("count(//file)").ToString()) * 2; using (XmlReader reader = XmlReader.Create(xmlPath)) { reader.ReadToFollowing("mylist"); if (reader["template"] != "mini") { Dispatcher.Invoke(new Action(delegate { MessageBox.Show("Please ensure you selected a mylist export file that used the xml-mini template.", "Invalid xml template!", MessageBoxButton.OK, MessageBoxImage.Error); })); xmlWorker.CancelAsync(); return; } // <anime> while (reader.ReadToFollowing("anime")) { while (closePending) Thread.Sleep(500); AnimeEntry entry = new AnimeEntry(); entry.aid = int.Parse(reader["aid"]); entry.type = reader["type"]; entry.year = reader["year"]; // <titles> reader.ReadToFollowing("default"); entry.romaji = reader.ReadElementContentAsString(); Dispatcher.BeginInvoke(new Action(delegate { importFilePath.Text = String.Format("Reading: {0}", entry.title); })); reader.ReadToFollowing("nihongo"); entry.nihongo = reader.ReadElementContentAsString().FormatNullable(); reader.ReadToFollowing("english"); entry.english = reader.ReadElementContentAsString().FormatNullable(); // </titles> // <episodes> if (!reader.ReadToFollowing("episodes")) goto Finish; entry.eps_total = int.Parse(reader["total"]); XmlReader episodesReader = reader.ReadSubtree(); // <episode> while (episodesReader.ReadToFollowing("episode")) { while (closePending) Thread.Sleep(500); EpisodeEntry episode = new EpisodeEntry(); episode.eid = int.Parse(episodesReader["eid"]); episode.airdate = episodesReader["aired"] == "-" ? null : UnixTimestamp.FromDateTime(DateTime.Parse(episodesReader["aired"], System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"))); episode.watched = Convert.ToBoolean(int.Parse(episodesReader["watched"])); if (Regex.IsMatch(episodesReader["epno"].Substring(0, 1), @"\D")) episode.spl_epno = episodesReader["epno"]; else episode.epno = int.Parse(episodesReader["epno"]); // <titles> episodesReader.ReadToDescendant("english"); episode.english = episodesReader.ReadElementContentAsString(); episodesReader.ReadToFollowing("nihongo"); episode.nihongo = episodesReader.ReadElementContentAsString().FormatNullable(); episodesReader.ReadToFollowing("romaji"); episode.romaji = episodesReader.ReadElementContentAsString().FormatNullable(); // </titles> // <files> if (!episodesReader.ReadToFollowing("files")) goto Finish; XmlReader filesReader = episodesReader.ReadSubtree(); // <file> while (filesReader.ReadToFollowing("file")) { while (closePending) Thread.Sleep(500); FileEntry file = new FileEntry(); file.fid = int.Parse(filesReader["fid"]); file.lid = int.Parse(filesReader["lid"]); file.watcheddate = filesReader["watched"] == "-" ? null : UnixTimestamp.FromDateTime(DateTime.Parse(episodesReader["watched"], System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"))); file.watched = file.watcheddate != null; file.generic = episodesReader["generic"] != null; if (!file.generic) // generic entries do not have this information { int gid = 0; if (filesReader["gid"] != null) gid = int.Parse(filesReader["gid"]); file.ed2k = filesReader["ed2k"]; file.length = double.Parse(filesReader["length"]); file.size = double.Parse(filesReader["size"]); file.source = filesReader["source"].FormatNullable(); file.acodec = ExtensionMethods.FormatAudioCodec(filesReader["acodec"].FormatNullable()); file.vcodec = ExtensionMethods.FormatVideoCodec(filesReader["vcodec"].FormatNullable()); file.vres = filesReader["vres"].FormatNullable(); if (gid != 0) { // <group_name> filesReader.ReadToFollowing("group_name"); string group_name = filesReader.ReadElementContentAsString(); // </group_name> // <group_abbr> filesReader.ReadToFollowing("group_abbr"); string group_abbr = filesReader.ReadElementContentAsString(); // </group_abbr> file.Group = new GroupEntry { gid = gid, group_name = group_name, group_abbr = group_abbr }; } } episode.Files.Add(file); importProgressBar.Dispatcher.BeginInvoke(new Action<double, double>((total, processed) => { importProgressBar.Value = Math.Ceiling(processed / total * 100); }), totalFiles, ++totalProcessedFiles); // </file> } // </files> filesReader.Close(); entry.Episodes.Add(episode); // </episode> } // </episodes> episodesReader.Close(); Finish: m_aList.Add(entry); // </anime> } // </mylist> } m_myList.OnEntryInserted += (aTitle) => { importProgressBar.Dispatcher.BeginInvoke(new Action(delegate { importFilePath.Text = String.Format("Writing: {0}", aTitle); importProgressBar.Value = Math.Ceiling(++totalProcessedFiles / totalFiles * 100); })); }; m_myList.InsertFromImport(m_aList); }