summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-11-30 15:36:35 +0100
committerArno <arno@disconnect.de>2017-11-30 15:36:35 +0100
commit8b611b7c69b50bf2f252903a849dd41ed685fece (patch)
treec8b88ceaacdc572f6cdd8a549520910204f07afa
parent16fc23f00d5bd8536acef56e21d01057bcf88709 (diff)
downloadBeetPlayer-8b611b7c69b50bf2f252903a849dd41ed685fece.tar.gz
BeetPlayer-8b611b7c69b50bf2f252903a849dd41ed685fece.tar.bz2
BeetPlayer-8b611b7c69b50bf2f252903a849dd41ed685fece.zip
Improve indexing dialog
Show close button and disable/enable approriate buttons while reading data.
-rw-r--r--indexerdialog.cpp31
-rw-r--r--indexerdialog.h8
-rw-r--r--indexerwidget.cpp4
-rw-r--r--indexerwidget.h4
4 files changed, 40 insertions, 7 deletions
diff --git a/indexerdialog.cpp b/indexerdialog.cpp
index c9e6ca3..1909c9e 100644
--- a/indexerdialog.cpp
+++ b/indexerdialog.cpp
@@ -9,16 +9,23 @@
IndexerDialog::IndexerDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
//indexer
mIndexer = new IndexerWidget;
+ connect(mIndexer, &IndexerWidget::indexingDone, this, &IndexerDialog::indexingCanceled);
//buttons
- QPushButton *startB = new QPushButton(tr("Start"));
- connect(startB, &QPushButton::clicked, mIndexer, &IndexerWidget::startIndexing);
- QPushButton *stopB = new QPushButton(tr("Stop"));
- connect(stopB, &QPushButton::clicked, mIndexer, &IndexerWidget::stopIndexing);
+ mStartBtn = new QPushButton(tr("Start"));
+ connect(mStartBtn, &QPushButton::clicked, mIndexer, &IndexerWidget::startIndexing);
+ connect(mStartBtn, &QPushButton::clicked, this, &IndexerDialog::indexingStarted);
+ mCancelBtn = new QPushButton(tr("Cancel"));
+ mCancelBtn->setEnabled(false);
+ connect(mCancelBtn, &QPushButton::clicked, mIndexer, &IndexerWidget::stopIndexing);
+ connect(mCancelBtn, &QPushButton::clicked, this, &IndexerDialog::indexingCanceled);
+ mCloseBtn = new QPushButton(tr("Close"));
+ connect(mCloseBtn, &QPushButton::clicked, this, &IndexerDialog::close);
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch();
- buttonLayout->addWidget(startB);
- buttonLayout->addWidget(stopB);
+ buttonLayout->addWidget(mStartBtn);
+ buttonLayout->addWidget(mCancelBtn);
+ buttonLayout->addWidget(mCloseBtn);
buttonLayout->addStretch();
//mainlayout
@@ -29,3 +36,15 @@ IndexerDialog::IndexerDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(paren
setWindowTitle(QString(tr("%1 - Indexer")).arg(qApp->applicationName()));
setMinimumWidth(768);
}
+
+void IndexerDialog::indexingStarted(){
+ mStartBtn->setEnabled(false);
+ mCancelBtn->setEnabled(true);
+ mCloseBtn->setEnabled(false);
+}
+
+void IndexerDialog::indexingCanceled(){
+ mStartBtn->setEnabled(true);
+ mCancelBtn->setEnabled(false);
+ mCloseBtn->setEnabled(true);
+}
diff --git a/indexerdialog.h b/indexerdialog.h
index 2928b08..95201e4 100644
--- a/indexerdialog.h
+++ b/indexerdialog.h
@@ -4,14 +4,22 @@
#include <QDialog>
class IndexerWidget;
+class QPushButton;
class IndexerDialog : public QDialog {
Q_OBJECT
public:
explicit IndexerDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
+ private slots:
+ void indexingStarted();
+ void indexingCanceled();
+
private:
IndexerWidget *mIndexer;
+ QPushButton *mStartBtn;
+ QPushButton *mCancelBtn;
+ QPushButton *mCloseBtn;
};
#endif // INDEXERDIALOG_H
diff --git a/indexerwidget.cpp b/indexerwidget.cpp
index ae1bd68..db1818c 100644
--- a/indexerwidget.cpp
+++ b/indexerwidget.cpp
@@ -46,6 +46,7 @@ IndexerWidget::IndexerWidget(QWidget *parent) : QWidget(parent), mMax(0) {
connect(mReader, &BeetReader::errorMsg, this, &IndexerWidget::addToError);
connect(mReader, &BeetReader::totalCount, this, &IndexerWidget::setupProgress);
connect(mReader, &BeetReader::progress, this, &IndexerWidget::progress);
+ connect(mReader, &BeetReader::indexingDone, this, &IndexerWidget::indexingDone);
//main layout
QVBoxLayout *mainLayout = new QVBoxLayout;
@@ -137,7 +138,7 @@ void BeetReader::run(){
//fetch data from file
TagLib::FileRef file(QString(s).toUtf8());
if(file.isNull()){
- QString fn = QString(s).toUtf8();
+ QString fn(s);
if(!fn.isEmpty()){
QString error = QString(tr("IsNull: %1")).arg(fn);
emit errorMsg(error);
@@ -176,6 +177,7 @@ void BeetReader::run(){
}
emit progress(total);
emit errorMsg(tr("Indexing done!"));
+ emit indexingDone();
}
void BeetReader::cancel(){
diff --git a/indexerwidget.h b/indexerwidget.h
index cd3621c..c11eaf5 100644
--- a/indexerwidget.h
+++ b/indexerwidget.h
@@ -18,6 +18,9 @@ class IndexerWidget : public QWidget {
public:
explicit IndexerWidget(QWidget *parent = 0);
+ signals:
+ void indexingDone();
+
public slots:
void startIndexing();
void stopIndexing();
@@ -45,6 +48,7 @@ class BeetReader : public QThread {
void totalCount(int count);
void progress(int cur);
void cleared();
+ void indexingDone();
private:
QString toQString(TagLib::String string);