/// <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);
                    }
                }
            }
        }
        // загрузка Жанров для правки
        private void loadGenresFromFB2Files(Enums.TitleInfoEnum TitleInfoType)
        {
            FB2UnionGenres fb2g = new FB2UnionGenres();

            foreach (FB2ItemInfo Info in m_GenreFB2InfoList)
            {
                if (Info.FictionBook != null)
                {
                    IList <Genre> GenresList = TitleInfoType == Enums.TitleInfoEnum.TitleInfo
                                                ? Info.FictionBook.TIGenres : Info.FictionBook.STIGenres;
                    if (GenresList != null)
                    {
                        foreach (Genre g in GenresList)
                        {
                            if (g != null)
                            {
                                if (!WorksWithBooks.genreIsExist(GenresListView, g, fb2g))
                                {
                                    ListViewItem lvi = new ListViewItem(
                                        !string.IsNullOrEmpty(g.Name)
                                                                                ? fb2g.GetFBGenreName(g.Name) + " (" + g.Name + ")"
                                                                                : string.Empty
                                        );
                                    lvi.SubItems.Add(!string.IsNullOrEmpty(g.Math.ToString()) ? g.Math.ToString() : string.Empty);
                                    if (!string.IsNullOrEmpty(g.Name))
                                    {
                                        GenresListView.Items.Add(lvi);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        // возобновление Автокорректировки - загрузка отчета о необработанных книгах из xml-файла
        private void m_bwRenew_reNewAutoCorrecrFromFile_DoWork(object sender, DoWorkEventArgs e)
        {
            ControlPanel.Enabled = false;

            // загрузка данных из xml
            StatusTextBox.Text += "Возобновление Автокорректировки fb2 книг из xml файла:\r\n";
            StatusTextBox.Text += m_fromXmlPath + "\r\n";
            XElement xmlTree = XElement.Load(m_fromXmlPath);

            //загрузка данных о ходе сравнения
            XElement compareData = xmlTree.Element("Data");

            m_AllFiles          = Convert.ToInt32(compareData.Element("AllFiles").Value);
            m_AllDirs           = Convert.ToInt32(compareData.Element("AllDirs").Value);
            ProgressBar.Maximum = m_AllFiles;

            // заполнение списка каталогов
            StatusTextBox.Text += "Загрузка списка каталогов xml файла...\r\n";
            IEnumerable <XElement> dirs = xmlTree.Element("Dirs").Elements("Dir");

            ProgressBar.Value = 0;
            m_DirsList.Clear();
            int d = 0;

            foreach (XElement element in dirs)
            {
                m_DirsList.Add(element.Value);
                m_bw.ReportProgress(++d);
                ProgressBar.Update();
            }

            // заполнение списка обработанных файлов
            loadFileList(
                ref m_bwRenew, "Загрузка списка обработанных книг из xml файла...\r\n", ref xmlTree, "WorkingFiles", ref m_WorkingFilesList
                );
            // заполнение списка необработанных файлов
            loadFileList(
                ref m_bwRenew, "Загрузка списка необработанных книг из xml файла...\r\n", ref xmlTree, "NotWorkingFiles", ref m_NotWorkingFilesList
                );

            ControlPanel.Enabled = true;

            // Автокорректировка файлов
            StatusTextBox.Text += "Возобновление Автокорректировки книг...\r\n";
            // при пакетной обработке (не прерывать обработку на вылете корректировки, а переходим к обработке следующей книги)
            autoCorrect(
                BooksAutoCorrectProcessingModeEnum.BatchProcessing, ref m_bwRenew, ref e, ref m_NotWorkingFilesList, ref m_WorkingFilesList, true
                );

            // оздание итемов списка всех файлов и каталогов
            StatusTextBox.Text += "Отображение списка файлов с метаданными...\r\n";
            FB2UnionGenres fb2Genres = new FB2UnionGenres();

            // генерация списка файлов - создание итемов listViewSource
            if (!WorksWithBooks.generateBooksListWithMetaData(
                    m_listViewFB2Files, m_SourceRootDir, ref fb2Genres, true, false, false, this, ProgressBar, m_bwRenew, e))
            {
                e.Cancel = true;
            }
        }
        // генерация списка файлов - создание итемов listViewSource
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            m_dtStart = DateTime.Now;
            FB2UnionGenres fb2Genres = new FB2UnionGenres();

            if (!WorksWithBooks.generateBooksListWithMetaData(m_listView, m_dirPath, ref fb2Genres,
                                                              true, false, false,
                                                              this, ProgressBar, m_bw, e))
            {
                e.Cancel = true;
            }
        }
 void GenresListViewSelectedIndexChanged(object sender, EventArgs e)
 {
     // Select Группу жанра и сам Жанр в выпадающих списках по выделенному Жанру в списке
     if (GenresListView.Items.Count > 0 && GenresListView.SelectedItems.Count == 1)
     {
         ListViewItem   SelItem   = GenresListView.SelectedItems[0];
         FB2UnionGenres fb2g      = new FB2UnionGenres();
         string         GenreCode = SelItem.Text.Substring(SelItem.Text.IndexOf('(') + 1);
         GenreCode = GenreCode.Substring(0, GenreCode.Length - 1);
         string GenreGroup = fb2g.GetFBGenreGroup(GenreCode);
         GroupComboBox.Text  = GenreGroup;
         GenresComboBox.Text = SelItem.Text;
     }
 }
Beispiel #6
0
 // название жанра (код)
 public static string cyrillicGenreNameAndCode(string GenreCodes, ref FB2UnionGenres fb2g)
 {
     if (GenreCodes.IndexOf(';') != -1)
     {
         string   ret   = string.Empty;
         string[] Codes = GenreCodes.Split(';');
         foreach (string code in Codes)
         {
             string Name = fb2g.GetFBGenreName(code.Trim());
             ret += (string.IsNullOrEmpty(Name) ? "?" : Name) + " (" + code.Trim() + ")" + "; ";
             ret.Trim();
         }
         return(ret.Substring(0, ret.LastIndexOf(";")).Trim());
     }
     return(fb2g.GetFBGenreName(GenreCodes) + " (" + GenreCodes + ")");
 }
        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)
            });
        }
Beispiel #8
0
        // название жанра по его коду
        public static string cyrillicGenreName(string GenreCodes, ref FB2UnionGenres fb2g)
        {
            if (GenreCodes.IndexOf(';') != -1)
            {
                string   ret   = string.Empty;
                string[] Codes = GenreCodes.Split(';');
                foreach (string code in Codes)
                {
                    string Name = fb2g.GetFBGenreName(code.Trim());
                    ret += (string.IsNullOrEmpty(Name) ? "?" : Name) + "; ";
                    ret.Trim();
                }
                string ReturnValue = ret.Substring(0, ret.LastIndexOf(";")).Trim();
                return(ReturnValue.IndexOf(";") != 0 ? ReturnValue : GenreCodes);
            }
            string RetValue = fb2g.GetFBGenreName(GenreCodes);

            return(!string.IsNullOrEmpty(RetValue) ? RetValue : GenreCodes);
        }
Beispiel #9
0
        // генерация списка файлов с описанием из метаданных
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            m_dtStart = DateTime.Now;
            FB2UnionGenres fb2Genres = new FB2UnionGenres();

            if (!m_isCreateItems)
            {
                // отображение/скрытие метаданных данных книг в Списке Сортировщика
                if (m_listViewFB2Files.Items.Count > 0)
                {
                    ProgressBar.Maximum = m_listViewFB2Files.Items.Count;
                    if (
                        !WorksWithBooks.viewOrHideBookMetaDataLocal(
                            m_listViewFB2Files, ref fb2Genres,
                            m_isTagsView, m_bw, e
                            )
                        )
                    {
                        e.Cancel = true;
                    }
                }
            }
            else
            {
                // генерация списка файлов - создание итемов listViewSource
                if (
                    !WorksWithBooks.generateBooksListWithMetaData(
                        m_listViewFB2Files, m_dirPath, ref fb2Genres,
                        m_isTagsView, true, false, this, ProgressBar, m_bw, e
                        )
                    )
                {
                    e.Cancel = true;
                }
            }
        }