// =============================================================================================
        //                          ВСПОМОГАТЕЛЬНЫЕ МЕТОДЫ И АЛГОРИТМЫ КЛАССА
        // =============================================================================================
        #region Вспомогательные методы и алгоритмы класса
        // реальное значение всех Групп и всех копий книг в этих Группах
        private void RealGroupsAndBooks(ListView lvResult, ListView lvFilesCount)
        {
            int AllGroups = 0;
            int AllBooks  = 0;

            foreach (ListViewGroup lvGroup in lvResult.Groups)
            {
                int RealBookInGroup = 0;
                if (lvGroup.Items.Count > 1)
                {
                    foreach (ListViewItem lvi in lvGroup.Items)
                    {
                        if (!lvi.Font.Strikeout)
                        {
                            ++RealBookInGroup;
                        }
                    }
                }
                if (RealBookInGroup > 1)
                {
                    AllBooks += RealBookInGroup;
                    ++AllGroups;
                }
            }
            // реальное число групп копий
            MiscListView.ListViewStatus(lvFilesCount, (int)FilesCountViewDupCollumnEnum.AllGroups, AllGroups.ToString());
            // реальное число копий книг во всех группах
            MiscListView.ListViewStatus(lvFilesCount, (int)FilesCountViewDupCollumnEnum.AllBoolsInAllGroups, AllBooks.ToString());
        }
        // удалить помеченные файлы...
        public void DeleteCheckedFiles(ref BackgroundWorker bw, ref DoWorkEventArgs e, ListView lvResult)
        {
            int i = 0;

            ListView.CheckedListViewItemCollection checkedItems = lvResult.CheckedItems;
            foreach (ListViewItem lvi in checkedItems)
            {
                // Проверить флаг на остановку процесса
                if ((bw.CancellationPending))
                {
                    e.Cancel = true;                     // Выставить окончание - по отмене, сработает событие bwcmd_RunWorkerCompleted
                    return;
                }
                else
                {
                    string sFilePath = lvi.Text;
                    if (File.Exists(sFilePath))
                    {
                        File.Delete(sFilePath);
                        MiscListView.deleteAllItemForNonExistFileWithCounter(lvResult, lvi, m_Fast);
                        m_bFilesWorked |= true;
                    }
                    bw.ReportProgress(++i);
                }
            }
        }
        // =============================================================================================
        //                  Реализация Copy/Move/Delete помеченных книг
        // =============================================================================================
        #region  еализация Copy/Move/Delete помеченных книг
        // копировать или переместить файлы в...
        public void CopyOrMoveCheckedFilesTo(ref BackgroundWorker bw, ref DoWorkEventArgs e,
                                             bool IsCopy, string SourceDir, string TargetDir,
                                             ListView lvResult, int nFileExistMode)
        {
            int i = 0;

            ListView.CheckedListViewItemCollection checkedItems = lvResult.CheckedItems;
            foreach (ListViewItem lvi in checkedItems)
            {
                // Проверить флаг на остановку процесса
                if ((bw.CancellationPending))
                {
                    e.Cancel = true;                     // Выставить окончание - по отмене, сработает событие bwcmd_RunWorkerCompleted
                    return;
                }
                else
                {
                    string FilePath = lvi.Text;
                    // есть ли такая книга на диске? Если нет - то смотрим следующую
                    Regex rx = new Regex(@"\\+");
                    FilePath = rx.Replace(FilePath, "\\");
                    if (File.Exists(FilePath))
                    {
                        string   NewPath = Path.Combine(TargetDir, Path.GetFileName(FilePath));
                        FileInfo fi      = new FileInfo(NewPath);
                        if (!fi.Directory.Exists)
                        {
                            Directory.CreateDirectory(fi.Directory.ToString());
                        }

                        if (File.Exists(NewPath))
                        {
                            if (nFileExistMode == 0)
                            {
                                File.Delete(NewPath);
                            }
                            else
                            {
                                NewPath = filesWorker.createFilePathWithSufix(NewPath, nFileExistMode);
                            }
                        }

                        if (IsCopy)
                        {
                            File.Copy(FilePath, NewPath);
                        }
                        else
                        {
                            File.Move(FilePath, NewPath);
                            MiscListView.deleteAllItemForNonExistFileWithCounter(lvResult, lvi, m_Fast);
                        }

                        m_bFilesWorked |= true;
                        bw.ReportProgress(++i);                           // отобразим данные в контролах
                    }
                }
            }
        }
Esempio n. 4
0
        // Обработка файлов
        private void bwcmd_DoWork(object sender, DoWorkEventArgs e)
        {
            m_bFilesWorked = false;
            if (m_Fast)
            {
                m_lvResult.BeginUpdate();
            }

            switch (m_WorkMode)
            {
            case BooksWorkModeEnum.CopyCheckedBooks:
                this.Text  = "Копирование помеченных копий книг в папку " + m_TargetDir;
                this.Text += String.Format(": {0}", m_lvResult.CheckedItems.Count);
                CopyOrMoveCheckedFilesTo(ref m_bwcmd, ref e, true,
                                         m_SourceDir, m_TargetDir, m_lvResult,
                                         m_FileExistMode);
                break;

            case BooksWorkModeEnum.MoveCheckedBooks:
                this.Text  = "Перемещение помеченных копий книг в папку " + m_TargetDir;
                this.Text += String.Format(": {0}", m_lvResult.CheckedItems.Count);
                CopyOrMoveCheckedFilesTo(ref m_bwcmd, ref e, false,
                                         m_SourceDir, m_TargetDir, m_lvResult,
                                         m_FileExistMode);
                break;

            case BooksWorkModeEnum.DeleteCheckedBooks:
                this.Text  = "Удаление помеченных копий книг";
                this.Text += String.Format(": {0}", m_lvResult.CheckedItems.Count);
                DeleteCheckedFiles(ref m_bwcmd, ref e, m_lvResult);
                break;

            default:
                return;
            }

            if (!m_Fast)
            {
                // Чистка списка Групп копий книг Дубликатора от пустых итемов
                MiscListView.cleanGroupList(m_lvResult);
            }

            if (m_Fast)
            {
                m_lvResult.EndUpdate();
            }
        }
Esempio n. 5
0
        // Обработка файлов
        private void bwcmd_DoWork(object sender, DoWorkEventArgs e)
        {
            m_bFilesWorked = false;
            if (m_Fast)
            {
                m_listViewFB2Files.BeginUpdate();
            }

            this.Text += ": " + m_listViewFB2Files.CheckedItems.Count.ToString() + " книг";
            // удаление всех элементов Списка, для которых отсутствуют файлы на жестком диске для Корректора
            MiscListView.removeAllItemForNonExistFile(m_SourceDir.Trim(), m_listViewFB2Files);
            switch (m_WorkMode)
            {
            case BooksWorkModeEnum.CopyCheckedBooks:
                this.Text  = "Копирование помеченных книг в папку " + m_TargetDir;
                this.Text += String.Format(": {0}", m_listViewFB2Files.CheckedItems.Count);
                CopyOrMoveCheckedFilesTo(ref m_bwcmd, ref e, true,
                                         m_SourceDir, m_TargetDir, m_listViewFB2Files,
                                         m_FileExistMode);
                break;

            case BooksWorkModeEnum.MoveCheckedBooks:
                this.Text  = "Перемещение помеченных книг в папку " + m_TargetDir;
                this.Text += String.Format(": {0}", m_listViewFB2Files.CheckedItems.Count);
                CopyOrMoveCheckedFilesTo(ref m_bwcmd, ref e, false,
                                         m_SourceDir, m_TargetDir, m_listViewFB2Files,
                                         m_FileExistMode);
                break;

            case BooksWorkModeEnum.DeleteCheckedBooks:
                this.Text  = "Удаление помеченных книг";
                this.Text += String.Format(": {0}", m_listViewFB2Files.CheckedItems.Count);
                DeleteCheckedFiles(ref m_bwcmd, ref e, m_listViewFB2Files);
                break;

            default:
                return;
            }
            if (m_Fast)
            {
                m_listViewFB2Files.EndUpdate();
            }
        }