private void SortAndLoad() { JoinedFormat = new Logic.SubtitleFormats.SubRip(); // default subtitle format string header = null; SubtitleFormat lastFormat = null; List <Subtitle> subtitles = new List <Subtitle>(); for (int k = 0; k < _fileNamesToJoin.Count; k++) { string fileName = _fileNamesToJoin[k]; try { Subtitle sub = new Subtitle(); Encoding encoding; var format = sub.LoadSubtitle(fileName, out encoding, null); if (format == null) { for (int j = k; j < _fileNamesToJoin.Count; j++) { _fileNamesToJoin.RemoveAt(j); } MessageBox.Show("Unkown subtitle format: " + fileName); return; } else { if (sub.Header != null) { header = sub.Header; } if (lastFormat == null || (lastFormat != null && lastFormat.FriendlyName == format.FriendlyName)) { lastFormat = format; } else { lastFormat = new Logic.SubtitleFormats.SubRip(); // default subtitle format } } subtitles.Add(sub); } catch (Exception exception) { for (int j = k; j < _fileNamesToJoin.Count; j++) { _fileNamesToJoin.RemoveAt(j); } MessageBox.Show(exception.Message); return; } } JoinedFormat = lastFormat; for (int outer = 0; outer < subtitles.Count; outer++) { for (int inner = 1; inner < subtitles.Count; inner++) { var a = subtitles[inner - 1]; var b = subtitles[inner]; if (a.Paragraphs.Count > 0 && b.Paragraphs.Count > 0 && a.Paragraphs[0].StartTime.TotalMilliseconds > b.Paragraphs[0].StartTime.TotalMilliseconds) { string t1 = _fileNamesToJoin[inner - 1]; _fileNamesToJoin[inner - 1] = _fileNamesToJoin[inner]; _fileNamesToJoin[inner] = t1; var t2 = subtitles[inner - 1]; subtitles[inner - 1] = subtitles[inner]; subtitles[inner] = t2; } } } listViewParts.Items.Clear(); int i = 0; foreach (string fileName in _fileNamesToJoin) { Subtitle sub = subtitles[i]; ListViewItem lvi = new ListViewItem(string.Format("{0:#,###,###}", sub.Paragraphs.Count)); if (sub.Paragraphs.Count > 0) { lvi.SubItems.Add(sub.Paragraphs[0].StartTime.ToString()); lvi.SubItems.Add(sub.Paragraphs[sub.Paragraphs.Count - 1].StartTime.ToString()); } else { lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); } lvi.SubItems.Add(fileName); listViewParts.Items.Add(lvi); i++; } JoinedSubtitle = new Subtitle(); if (JoinedFormat.FriendlyName != new SubRip().FriendlyName) { JoinedSubtitle.Header = header; } foreach (Subtitle sub in subtitles) { foreach (Paragraph p in sub.Paragraphs) { JoinedSubtitle.Paragraphs.Add(p); } } JoinedSubtitle.Renumber(1); labelTotalLines.Text = string.Format(Configuration.Settings.Language.JoinSubtitles.TotalNumberOfLinesX, JoinedSubtitle.Paragraphs.Count); }
private void SortAndLoad() { JoinedFormat = new Logic.SubtitleFormats.SubRip(); // default subtitle format string header = null; SubtitleFormat lastFormat = null; List<Subtitle> subtitles = new List<Subtitle>(); for (int k = 0; k < _fileNamesToJoin.Count; k++) { string fileName = _fileNamesToJoin[k]; try { Subtitle sub = new Subtitle(); Encoding encoding; var format = sub.LoadSubtitle(fileName, out encoding, null); if (format == null) { for (int j = k; j < _fileNamesToJoin.Count; j++) _fileNamesToJoin.RemoveAt(j); MessageBox.Show("Unkown subtitle format: " + fileName); return; } else { if (sub.Header != null) header = sub.Header; if (lastFormat == null || (lastFormat != null && lastFormat.FriendlyName == format.FriendlyName)) lastFormat = format; else lastFormat = new Logic.SubtitleFormats.SubRip(); // default subtitle format } subtitles.Add(sub); } catch (Exception exception) { for (int j = k; j < _fileNamesToJoin.Count; j++) _fileNamesToJoin.RemoveAt(j); MessageBox.Show(exception.Message); return; } } JoinedFormat = lastFormat; for (int outer = 0; outer < subtitles.Count; outer++) { for (int inner = 1; inner < subtitles.Count; inner++) { var a = subtitles[inner - 1]; var b = subtitles[inner]; if (a.Paragraphs.Count > 0 && b.Paragraphs.Count > 0 && a.Paragraphs[0].StartTime.TotalMilliseconds > b.Paragraphs[0].StartTime.TotalMilliseconds) { string t1 = _fileNamesToJoin[inner - 1]; _fileNamesToJoin[inner - 1] = _fileNamesToJoin[inner]; _fileNamesToJoin[inner] = t1; var t2 = subtitles[inner - 1]; subtitles[inner - 1] = subtitles[inner]; subtitles[inner] = t2; } } } listViewParts.Items.Clear(); int i = 0; foreach (string fileName in _fileNamesToJoin) { Subtitle sub = subtitles[i]; ListViewItem lvi = new ListViewItem(string.Format("{0:#,###,###}", sub.Paragraphs.Count)); if (sub.Paragraphs.Count > 0) { lvi.SubItems.Add(sub.Paragraphs[0].StartTime.ToString()); lvi.SubItems.Add(sub.Paragraphs[sub.Paragraphs.Count - 1].StartTime.ToString()); } else { lvi.SubItems.Add("-"); lvi.SubItems.Add("-"); } lvi.SubItems.Add(fileName); listViewParts.Items.Add(lvi); i++; } JoinedSubtitle = new Subtitle(); if (JoinedFormat.FriendlyName != new SubRip().FriendlyName) JoinedSubtitle.Header = header; foreach (Subtitle sub in subtitles) { foreach (Paragraph p in sub.Paragraphs) { JoinedSubtitle.Paragraphs.Add(p); } } JoinedSubtitle.Renumber(1); labelTotalLines.Text = string.Format(Configuration.Settings.Language.JoinSubtitles.TotalNumberOfLinesX, JoinedSubtitle.Paragraphs.Count); }