/// <summary> /// Формирование представления Групп с их книгами /// </summary> private void makeBookCopiesView(FB2FilesDataInGroup fb2BookList, ListView listViewFB2Files, ref StatusView sv) { Hashtable htBookGroups = new Hashtable(new FB2CultureComparer()); // хеш-таблица групп одинаковых книг ListViewGroup lvGroup = null; // группа одинаковых книг string Valid = string.Empty; foreach (BookData bd in fb2BookList) { ++sv.AllFB2InGroups; // число книг во всех группах одинаковых книг lvGroup = new ListViewGroup(fb2BookList.Group); ListViewItem lvi = new ListViewItem(bd.Path); if (FilesWorker.isFB2Archive(bd.Path)) { lvi.ForeColor = Colors.ZipFB2ForeColor; } lvi.SubItems.Add(MakeBookTitleString(bd.BookTitle)); lvi.SubItems.Add(MakeAuthorsString(bd.Authors)); lvi.SubItems.Add(MakeGenresString(bd.Genres)); lvi.SubItems.Add(bd.Lang); lvi.SubItems.Add(bd.Id); lvi.SubItems.Add(bd.Version); lvi.SubItems.Add(bd.Encoding); Valid = _fv2Validator.ValidatingFB2File(bd.Path); if (string.IsNullOrEmpty(Valid)) { Valid = "Да"; lvi.ForeColor = FilesWorker.isFB2File(bd.Path) ? Color.FromName("WindowText") : Colors.ZipFB2ForeColor; } else { Valid = "Нет"; lvi.ForeColor = Colors.FB2NotValidForeColor; } lvi.SubItems.Add(Valid); lvi.SubItems.Add(GetFileLength(bd.Path)); lvi.SubItems.Add(GetFileCreationTime(bd.Path)); lvi.SubItems.Add(FileLastWriteTime(bd.Path)); // заносим группу в хеш, если она там отсутствует AddBookGroupInHashTable(htBookGroups, lvGroup); // присваиваем группу книге listViewFB2Files.Groups.Add((ListViewGroup)htBookGroups[fb2BookList.Group]); lvi.Group = (ListViewGroup)htBookGroups[fb2BookList.Group]; listViewFB2Files.Items.Add(lvi); } }
createSubItemsWithMetaData( string FilePath, string SourceFileExt, ListViewItem Item, ref FB2UnionGenres FB2FullSortGenres, ref FB2Validator fv2Validator ) { FB2BookDescription bd = null; try { bd = new FB2BookDescription(FilePath); } catch (System.Exception ex) { Debug.DebugMessage( null, ex, "FB2NotValidateForm.createSubItemsWithMetaData(): Создание заполненных subitems для невалидных книг для Корректора." ); } string valid = bd != null ? bd.IsValidFB2Union : fv2Validator.ValidatingFB2File(FilePath); if (!string.IsNullOrEmpty(valid)) { valid = "Нет"; Item.ForeColor = Colors.FB2NotValidForeColor; } else { return(null); } return(new ListViewItem.ListViewSubItem[] { new ListViewItem.ListViewSubItem(Item, bd != null ? bd.TIBookTitle : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.TIAuthors : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? GenresWorker.cyrillicGenreName(bd.TIGenres, ref FB2FullSortGenres) : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.TISequences : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.TILang : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.DIID : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.DIVersion : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.Encoding : string.Empty), new ListViewItem.ListViewSubItem(Item, valid), new ListViewItem.ListViewSubItem(Item, SourceFileExt), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.FileLength : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.FileCreationTime : string.Empty), new ListViewItem.ListViewSubItem(Item, bd != null ? bd.FileLastWriteTime : string.Empty) }); }
// ============================================================================================= // ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ДЛЯ BACKGROUNDWORKER // ============================================================================================= #region BackgroundWorker: Вспомогательные методы private void validateFile(ListViewItem lvi, ref FB2Validator fv2Validator) { string FilePath = lvi.SubItems[0].Text; if (File.Exists(FilePath)) { string Msg = fv2Validator.ValidatingFB2File(FilePath); lvi.SubItems[(int)ResultViewDupCollumnEnum.Validate].Text = Msg == string.Empty ? "Да" : "Нет"; if (!string.IsNullOrEmpty(Msg)) { lvi.ForeColor = Colors.FB2NotValidForeColor; } else { lvi.ForeColor = FilesWorker.isFB2File(FilePath) ? Color.FromName("WindowText") : Colors.ZipFB2ForeColor; } } }
// ============================================================================================= // ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ДЛЯ BACKGROUNDWORKER // ============================================================================================= #region BackgroundWorker: Вспомогательные методы private void validateFile(ListViewItem lvi, ref FB2Validator fv2Validator) { if (WorksWithBooks.isFileItem(lvi)) { string FilePath = Path.Combine(m_SourceDir.Trim(), lvi.SubItems[0].Text); if (File.Exists(FilePath)) { string Msg = fv2Validator.ValidatingFB2File(FilePath); lvi.SubItems[(int)ResultViewCollumnEnum.Validate].Text = Msg == string.Empty ? "Да" : "Нет"; if (!string.IsNullOrEmpty(Msg)) { lvi.ForeColor = Colors.FB2NotValidForeColor; } else { lvi.ForeColor = FilesWorker.isFB2File(FilePath) ? Color.FromName("WindowText") : Colors.ZipFB2ForeColor; } } } }