Ejemplo n.º 1
0
        /// <summary>
        /// создание итема в списке для невалидной книги
        /// </summary>
        private void createNotValidateBookItem(string FilePath, FB2UnionGenres fb2g,
                                               FB2Validator fv2Validator, SharpZipLibWorker sharpZipLib)
        {
            if (File.Exists(FilePath))
            {
                string TempDir = Settings.Settings.TempDirPath;
                string FileExt = Path.GetExtension(FilePath);
                ListViewItem.ListViewSubItem[] subItems;
                if (FilesWorker.isFB2File(FilePath) || FilesWorker.isFB2Archive(FilePath))
                {
                    ListViewItem item = new ListViewItem(FilePath, FilesWorker.isFB2File(FilePath) ? 1 : 2);
                    try {
                        if (FilesWorker.isFB2File(FilePath))
                        {
                            item.ForeColor = Colors.FB2ForeColor;
                            subItems       = createSubItemsWithMetaData(FilePath, FileExt, item, ref fb2g, ref fv2Validator);
                        }
                        else
                        {
                            // для zip-архивов
                            FilesWorker.RemoveDir(TempDir);
                            sharpZipLib.UnZipFB2Files(FilePath, TempDir);
                            string [] files = Directory.GetFiles(TempDir);
                            if (FilesWorker.isFB2File(files[0]))
                            {
                                item.ForeColor = Colors.ZipFB2ForeColor;
                                subItems       = createSubItemsWithMetaData(files[0], FileExt, item, ref fb2g, ref fv2Validator);
                            }
                            else
                            {
                                item.ForeColor = Colors.BadZipForeColor;
                                subItems       = WorksWithBooks.createEmptySubItemsForItem(item);
                            }
                        }
                        if (subItems != null)
                        {
                            item.SubItems.AddRange(subItems);
                        }
                    } catch (Exception ex) {
                        Debug.DebugMessage(
                            null, ex, "FB2NotValidateForm.createNotValidateBookItem(): Создание итема в списке для невалидной книги."
                            );
                        subItems = WorksWithBooks.createEmptySubItemsForItem(item);
                        if (subItems != null)
                        {
                            item.SubItems.AddRange(subItems);
                            item.ForeColor = Colors.BadZipForeColor;
                        }
                    }

                    item.Tag       = new ListViewItemType("f", FilePath);
                    item.BackColor = Colors.FileBackColor;

                    if (subItems != null)
                    {
                        m_listViewFB2Files.Items.Add(item);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        // Обработка файлов
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            FB2Validator fv2Validator = new FB2Validator();

            m_lvResult.BeginUpdate();
            if (m_GroupAnalyzeMode == GroupAnalyzeModeEnum.AllGroup)
            {
                // все книги всех Групп
                this.Text          += ": Все книги всех Групп";
                ProgressBar.Maximum = m_lvResult.Items.Count;
                ProgressBar.Value   = 0;
                int i = 0;
                foreach (ListViewItem lvi in m_lvResult.Items)
                {
                    if ((m_bw.CancellationPending))
                    {
                        e.Cancel = true;
                        return;
                    }
                    validateFile(lvi, ref fv2Validator);
                    m_bw.ReportProgress(++i);
                    ProgressBar.Update();
                }
            }
            else
            {
                // все книги выбранной Группы
                ListView.SelectedListViewItemCollection si = m_lvResult.SelectedItems;
                this.Text += ": Все книги Группы '" + si[0].Group.Header + "'";
                if (si.Count > 0)
                {
                    // группа для выделенной книги
                    ListViewGroup lvg = si[0].Group;
                    ProgressBar.Maximum = lvg.Items.Count;
                    ProgressBar.Value   = 0;
                    int i = 0;
                    foreach (ListViewItem lvi in lvg.Items)
                    {
                        if ((m_bw.CancellationPending))
                        {
                            e.Cancel = true;
                            return;
                        }
                        validateFile(lvi, ref fv2Validator);
                        m_bw.ReportProgress(++i);
                        ProgressBar.Update();
                    }
                }
            }
            m_lvResult.EndUpdate();
        }
Ejemplo n.º 3
0
        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)
            });
        }
Ejemplo n.º 4
0
        // =============================================================================================
        //                          ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ДЛЯ 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;
                }
            }
        }
Ejemplo n.º 5
0
 // =============================================================================================
 //                          ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ ДЛЯ 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;
             }
         }
     }
 }
Ejemplo n.º 6
0
        // Обработка файлов
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            m_dtStart = DateTime.Now;
            FB2Validator fv2Validator = new FB2Validator();

            m_listView.BeginUpdate();
            if (m_booksValidateMode == BooksValidateModeEnum.CheckedBooks)
            {
                // для помеченных книг
                ListView.CheckedListViewItemCollection checkedItems = m_listView.CheckedItems;
                if (checkedItems.Count > 0)
                {
                    this.Text          += ": Помеченные книги";
                    ProgressBar.Maximum = checkedItems.Count;
                    ProgressBar.Value   = 0;
                    int i = 0;
                    foreach (ListViewItem lvi in checkedItems)
                    {
                        if ((m_bw.CancellationPending))
                        {
                            m_listView.EndUpdate();
                            e.Cancel = true;
                            return;
                        }
                        validateFile(lvi, ref fv2Validator);
                        m_bw.ReportProgress(++i);
                        ProgressBar.Update();
                    }
                }
            }
            else if (m_booksValidateMode == BooksValidateModeEnum.SelectedBooks)
            {
                // для выделенных книг
                ListView.SelectedListViewItemCollection selItems = m_listView.SelectedItems;
                this.Text += ": Выделенные книги";
                if (selItems.Count > 0)
                {
                    // группа для выделенной книги
                    ProgressBar.Maximum = selItems.Count;
                    ProgressBar.Value   = 0;
                    int i = 0;
                    foreach (ListViewItem lvi in selItems)
                    {
                        if ((m_bw.CancellationPending))
                        {
                            m_listView.EndUpdate();
                            e.Cancel = true;
                            return;
                        }
                        validateFile(lvi, ref fv2Validator);
                        m_bw.ReportProgress(++i);
                        ProgressBar.Update();
                    }
                }
            }
            else
            {
                // для всех книг
                this.Text += ": Выделенные книги";
                ListView.ListViewItemCollection lvItemColl = m_listView.Items;
                if (lvItemColl.Count > 0)
                {
                    // группа для выделенной книги
                    ProgressBar.Maximum = lvItemColl.Count;
                    ProgressBar.Value   = 0;
                    int i = 0;
                    foreach (ListViewItem lvi in lvItemColl)
                    {
                        if ((m_bw.CancellationPending))
                        {
                            m_listView.EndUpdate();
                            e.Cancel = true;
                            return;
                        }
                        validateFile(lvi, ref fv2Validator);
                        m_bw.ReportProgress(++i);
                        ProgressBar.Update();
                    }
                }
            }
            m_listView.EndUpdate();
        }