1 #include "library/scanner/libraryscannerdlg.h"
2
3 #include <QLabel>
4 #include <QPushButton>
5 #include <QVBoxLayout>
6 #include <QtDebug>
7
8 #include "moc_libraryscannerdlg.cpp"
9
LibraryScannerDlg(QWidget * parent,Qt::WindowFlags f)10 LibraryScannerDlg::LibraryScannerDlg(QWidget* parent, Qt::WindowFlags f)
11 : QWidget(parent, f),
12 m_bCancelled(false) {
13 setWindowIcon(QIcon(":/images/icons/mixxx.svg"));
14
15 QVBoxLayout* pLayout = new QVBoxLayout(this);
16
17 setWindowTitle(tr("Library Scanner"));
18 QLabel* pLabel = new QLabel(tr("It's taking Mixxx a minute to scan your music library, please wait..."),this);
19 pLayout->addWidget(pLabel);
20
21 QPushButton* pCancel = new QPushButton(tr("Cancel"), this);
22 connect(pCancel,
23 &QPushButton::clicked,
24 this,
25 &LibraryScannerDlg::slotCancel);
26 pLayout->addWidget(pCancel);
27
28 QLabel* pCurrent = new QLabel(this);
29 pCurrent->setAlignment(Qt::AlignTop);
30 pCurrent->setMaximumWidth(600);
31 pCurrent->setFixedHeight(this->fontMetrics().height());
32 pCurrent->setWordWrap(true);
33 connect(this, &LibraryScannerDlg::progress, pCurrent, &QLabel::setText);
34 pLayout->addWidget(pCurrent);
35 setLayout(pLayout);
36 }
37
~LibraryScannerDlg()38 LibraryScannerDlg::~LibraryScannerDlg() {
39 }
40
slotUpdate(const QString & path)41 void LibraryScannerDlg::slotUpdate(const QString& path) {
42 //qDebug() << "LibraryScannerDlg slotUpdate" << m_timer.elapsed().formatMillisWithUnit() << path;
43 if (!m_bCancelled && m_timer.elapsed() > mixxx::Duration::fromSeconds(2)) {
44 setVisible(true);
45 }
46
47 if (isVisible()) {
48 QString status = tr("Scanning: ") + path;
49 emit progress(status);
50 }
51 }
52
slotUpdateCover(const QString & path)53 void LibraryScannerDlg::slotUpdateCover(const QString& path) {
54 //qDebug() << "LibraryScannerDlg slotUpdate" << m_timer.elapsed() << path;
55 if (!m_bCancelled && m_timer.elapsed() > mixxx::Duration::fromSeconds(2)) {
56 setVisible(true);
57 }
58
59 if (isVisible()) {
60 QString status = QString("%1: %2").arg(tr("Scanning cover art (safe to cancel)"), path);
61 emit progress(status);
62 }
63 }
64
slotCancel()65 void LibraryScannerDlg::slotCancel() {
66 qDebug() << "Cancelling library scan...";
67 m_bCancelled = true;
68 emit scanCancelled();
69 hide();
70 }
71
slotScanStarted()72 void LibraryScannerDlg::slotScanStarted() {
73 m_bCancelled = false;
74 m_timer.start();
75 }
76
slotScanFinished()77 void LibraryScannerDlg::slotScanFinished() {
78 // Raise this flag to prevent any latent slotUpdates() from showing the
79 // dialog again.
80 m_bCancelled = true;
81
82 hide();
83 }
84