1 /*
2     SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org>
3     SPDX-License-Identifier: GPL-2.0-or-later
4 */
5 
6 #ifndef _K3B_AUDIO_TRACK_ADDING_DIALOG_H_
7 #define _K3B_AUDIO_TRACK_ADDING_DIALOG_H_
8 
9 #include "k3bjobhandler.h"
10 #include <QUrl>
11 #include <QStringList>
12 #include <QDialog>
13 
14 
15 class QLabel;
16 
17 namespace K3b {
18     class BusyWidget;
19     class AudioTrack;
20     class AudioDataSource;
21     class AudioDoc;
22     class AudioFileAnalyzerJob;
23 
24     class AudioTrackAddingDialog : public QDialog, public JobHandler
25     {
26         Q_OBJECT
27 
28     public:
29         AudioTrackAddingDialog( const QList<QUrl>& urls,
30                                 AudioDoc* doc,
31                                 AudioTrack* afterTrack = 0,
32                                 AudioTrack* parentTrack = 0,
33                                 AudioDataSource* afterSource = 0,
34                                 QWidget* parent = 0 );
35         ~AudioTrackAddingDialog() override;
36 
37         /**
38          * shows AudioTrackAddingDialog in non-blocking fashion
39          * (doesn't wait till dialog is closed)
40          */
41         static void addUrls( const QList<QUrl>& urls,
42                             AudioDoc* doc,
43                             AudioTrack* afterTrack = 0,
44                             AudioTrack* parentTrack = 0,
45                             AudioDataSource* afterSource = 0,
46                             QWidget* parent = 0 );
47 
48     private Q_SLOTS:
49         void slotAddUrls();
50         void slotAnalysingFinished( bool );
51         void slotCancelClicked();
52 
53     private:
54         /**
55          * @reimplemented from JobHandler
56          */
57         Device::MediaType waitForMedium( Device::Device*,
58                                          Device::MediaStates = Device::STATE_EMPTY,
59                                          Device::MediaTypes = Device::MEDIA_WRITABLE_CD,
60                                          const K3b::Msf& = K3b::Msf(),
61                                          const QString& = QString() ) override { return Device::MEDIA_UNKNOWN; }
62 
63         /**
64          * @reimplemented from JobHandler
65          */
66         bool questionYesNo( const QString&,
67                             const QString& = QString(),
68                             const KGuiItem& = KStandardGuiItem::yes(),
69                             const KGuiItem& = KStandardGuiItem::no() ) override { return false; }
70 
71         /**
72          * @reimplemented from JobHandler
73          */
74         void blockingInformation( const QString&,
75                                   const QString& = QString() ) override {}
76 
77         BusyWidget* m_busyWidget;
78         QLabel* m_infoLabel;
79 
80         QStringList m_unreadableFiles;
81         QStringList m_notFoundFiles;
82         QStringList m_nonLocalFiles;
83         QStringList m_unsupportedFiles;
84 
85         QList<QUrl> m_urls;
86 
87         AudioDoc* m_doc;
88         AudioTrack* m_trackAfter;
89         AudioTrack* m_parentTrack;
90         AudioDataSource* m_sourceAfter;
91 
92         QUrl m_cueUrl;
93 
94         bool m_bCanceled;
95 
96         AudioFileAnalyzerJob* m_analyserJob;
97     };
98 }
99 
100 #endif
101