// ============================================================================================= // ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ДЛЯ 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; } } } }
// загрузка из xml-файла в хэш таблицу данных о копиях книг private void loadListFromXML(ref BackgroundWorker bw, ref DoWorkEventArgs e, string FromXML) { XElement xmlTree = XElement.Load(FromXML); if (xmlTree != null) { XElement xmlBooks = xmlTree.Element("Books"); if (xmlBooks != null) { ProgressBar.Maximum = Convert.ToInt32(xmlBooks.Attribute("count").Value); // устанавливаем данные настройки поиска-сравнения m_textBoxAddress.Text = xmlTree.Element("SourceDir").Value; // перебор книг int i = 0; ListViewItem lvi = null; IEnumerable <XElement> Books = xmlBooks.Elements("Book"); foreach (XElement book in Books) { if ((bw.CancellationPending)) { e.Cancel = true; return; } string BookPath = book.Attribute("path").Value; string type = book.Attribute("type").Value; // в список - только существующие на диске книги и каталоги bool IsExist = false; if (type == "dir") { IsExist = Directory.Exists(BookPath) ? true : false; } else { IsExist = File.Exists(BookPath) ? true : false; } if (IsExist) { string FileName = book.Element("FileName").Value; string sForeColor = book.Element("ForeColor").Value; string sBackColor = book.Element("BackColor").Value; if (type == "dir") { if (FileName == "..") { lvi = new ListViewItem(FileName, 3); lvi.Tag = new ListViewItemType("dUp", BookPath); } else { lvi = new ListViewItem(FileName, 0); lvi.Tag = new ListViewItemType("d", BookPath); } } else { lvi = new ListViewItem(FileName, FilesWorker.isFB2File(BookPath) ? 1 : 2); lvi.Tag = new ListViewItemType("f", BookPath); } lvi.ForeColor = Color.FromName(sForeColor); lvi.BackColor = Color.FromName(sBackColor); lvi.SubItems.Add(book.Element("BookTitle").Value); lvi.SubItems.Add(book.Element("Authors").Value); lvi.SubItems.Add(book.Element("Genres").Value); lvi.SubItems.Add(book.Element("Sequence").Value); lvi.SubItems.Add(book.Element("Lang").Value); lvi.SubItems.Add(book.Element("BookID").Value); lvi.SubItems.Add(book.Element("Version").Value); lvi.SubItems.Add(book.Element("Encoding").Value); lvi.SubItems.Add(book.Element("Validation").Value); lvi.SubItems.Add(book.Element("Format").Value); lvi.SubItems.Add(book.Element("FileLength").Value); lvi.SubItems.Add(book.Element("FileCreationTime").Value); lvi.SubItems.Add(book.Element("FileLastWriteTime").Value); lvi.Checked = Convert.ToBoolean(book.Element("IsChecked").Value); m_listViewFB2Files.Items.Add(lvi); } bw.ReportProgress(++i); } m_LastSelectedItem = Convert.ToInt32(xmlTree.Element("SelectedItem").Value); MiscListView.SelectedItemEnsureVisible(m_listViewFB2Files, m_LastSelectedItem == -1 ? 0 : m_LastSelectedItem); } } }