示例#1
0
        /// <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)
            });
        }
示例#3
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;
                }
            }
        }
示例#4
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;
             }
         }
     }
 }