File indexing completed on 2024-05-05 04:51:44

0001 /*
0002     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef _K3B_DATA_URL_ADDING_DIALOG_H_
0007 #define _K3B_DATA_URL_ADDING_DIALOG_H_
0008 
0009 #include <QUrl>
0010 #include <QDir>
0011 #include <QHash>
0012 #include <QList>
0013 #include <QPair>
0014 #include <QStringList>
0015 #include <QDialog>
0016 #include <QLabel>
0017 
0018 #include <KIO/Global>
0019 
0020 class QProgressBar;
0021 class QLabel;
0022 
0023 namespace K3b {
0024 
0025     class DataItem;
0026     class DirItem;
0027     class EncodingConverter;
0028     class DirSizeJob;
0029     class DataDoc;
0030 
0031     class DataUrlAddingDialog : public QDialog
0032     {
0033         Q_OBJECT
0034 
0035     public:
0036         ~DataUrlAddingDialog() override;
0037 
0038         /**
0039          * shows DataUrlAddingDialog in non-blocking fashion
0040          * (doesn't wait till dialog is closed)
0041          */
0042         static void addUrls( const QList<QUrl>& urls, DirItem* dir,
0043                             QWidget* parent = 0 );
0044 
0045         static void moveItems( const QList<DataItem*>& items, DirItem* dir,
0046                               QWidget* parent = 0 );
0047 
0048         static void copyItems( const QList<DataItem*>& items, DirItem* dir,
0049                               QWidget* parent = 0 );
0050 
0051     private Q_SLOTS:
0052         void slotStartAddUrls();
0053         void slotStartCopyMoveItems();
0054         void slotAddUrls();
0055         void slotCopyMoveItems();
0056         void reject() override;
0057         void slotDirSizeDone( bool );
0058         void updateProgress();
0059 
0060     private:
0061         DataUrlAddingDialog( const QList<QUrl>& urls, DirItem* dir, QWidget* parent = 0 );
0062         DataUrlAddingDialog( const QList<DataItem*>& items, DirItem* dir, bool copy, QWidget* parent = 0 );
0063         DataUrlAddingDialog( DirItem* dir, QWidget* parent );
0064         bool getNewName( const QString& oldName, DirItem* dir, QString& newName );
0065         bool addHiddenFiles();
0066         bool addSystemFiles();
0067         QString resultMessage() const;
0068 
0069         QProgressBar* m_progressWidget;
0070         QLabel* m_infoLabel;
0071         QLabel* m_counterLabel;
0072         EncodingConverter* m_encodingConverter;
0073 
0074         QList<QUrl> m_urls;
0075         QList< QPair<QUrl, DirItem*> > m_urlQueue;
0076         QList< QPair<DataItem*, DirItem*> > m_items;
0077         QList<QUrl> m_dirSizeQueue;
0078         QHash< DirItem*, QList<DataItem*> > m_newItems;
0079 
0080         DataDoc* m_doc;
0081         bool m_bExistingItemsReplaceAll;
0082         bool m_bExistingItemsIgnoreAll;
0083         bool m_bFolderLinksFollowAll;
0084         bool m_bFolderLinksAddAll;
0085         int m_iAddHiddenFiles;
0086         int m_iAddSystemFiles;
0087 
0088         QStringList m_unreadableFiles;
0089         QStringList m_notFoundFiles;
0090         QStringList m_nonLocalFiles;
0091         QStringList m_tooBigFiles;
0092         QStringList m_mkisofsLimitationRenamedFiles;
0093         QStringList m_invalidFilenameEncodingFiles;
0094 
0095         bool m_bCanceled;
0096         bool m_copyItems;
0097 
0098         KIO::filesize_t m_totalFiles;
0099         KIO::filesize_t m_filesHandled;
0100         DirSizeJob* m_dirSizeJob;
0101 
0102         unsigned int m_lastProgress;
0103     };
0104 }
0105 
0106 #endif