From 4163cabef5b80851dd68cc196c2d34f48539693b Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 15 Jun 2015 19:24:15 +0000 Subject: rgscan: added feature to detect previous tags (#709) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5157 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/rgscan/rgscandialog.cpp | 22 +++++++-- src/plugins/General/rgscan/rgscandialog.ui | 70 +++++++++++++++++++---------- src/plugins/General/rgscan/rgscanner.cpp | 10 ++++- src/plugins/General/rgscan/rgscanner.h | 3 +- 4 files changed, 76 insertions(+), 29 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/General/rgscan/rgscandialog.cpp b/src/plugins/General/rgscan/rgscandialog.cpp index 7b3824921..bb4c7693a 100644 --- a/src/plugins/General/rgscan/rgscandialog.cpp +++ b/src/plugins/General/rgscan/rgscandialog.cpp @@ -92,6 +92,7 @@ RGScanDialog::RGScanDialog(QList tracks, QWidget *parent) : Q restoreGeometry(settings.value("RGScanner/geometry").toByteArray()); m_ui.trackCheckBox->setChecked(settings.value("RGScanner/write_track",true).toBool()); m_ui.albumCheckBox->setChecked(settings.value("RGScanner/write_album",true).toBool()); + m_ui.skipScannedCheckBox->setChecked(settings.value("RGScanner/skip_scanned",true).toBool()); } RGScanDialog::~RGScanDialog() @@ -115,6 +116,19 @@ void RGScanDialog::on_calculateButton_clicked() delete scanner; continue; } + + if(m_ui.skipScannedCheckBox->isChecked() && !scanner->oldReplayGainInfo().isEmpty()) + { + qDebug("RGScanDialog: skipping scanned file.."); + QMap rg = scanner->oldReplayGainInfo(); + m_ui.tableWidget->setItem(i, 2, new QTableWidgetItem(tr("%1 dB").arg(rg.value(Qmmp::REPLAYGAIN_TRACK_GAIN)))); + m_ui.tableWidget->setItem(i, 3, new QTableWidgetItem(tr("%1 dB").arg(rg.value(Qmmp::REPLAYGAIN_ALBUM_GAIN)))); + m_ui.tableWidget->setItem(i, 4, new QTableWidgetItem(QString::number(rg.value(Qmmp::REPLAYGAIN_TRACK_PEAK)))); + m_ui.tableWidget->setItem(i, 5, new QTableWidgetItem(QString::number(rg.value(Qmmp::REPLAYGAIN_ALBUM_PEAK)))); + delete scanner; + continue; + } + scanner->setAutoDelete(false); m_scanners.append(scanner); connect(scanner, SIGNAL(progress(int)), m_ui.tableWidget->cellWidget(i, 1), SLOT(setValue(int))); @@ -125,7 +139,6 @@ void RGScanDialog::on_calculateButton_clicked() void RGScanDialog::onScanFinished(QString url) { - for(int i = 0; i < m_ui.tableWidget->rowCount(); ++i) { if(url != m_ui.tableWidget->item(i, 0)->data(Qt::UserRole).toString()) @@ -148,7 +161,7 @@ void RGScanDialog::onScanFinished(QString url) if(stopped) { - qDebug("RGScanDialog: all threads finished"); + qDebug("RGScanDialog: all threads are finished"); QThreadPool::globalInstance()->waitForDone(); QMultiMap itemGroupMap; //items grouped by album @@ -208,8 +221,8 @@ void RGScanDialog::onScanFinished(QString url) m_ui.tableWidget->setItem(i, 5, new QTableWidgetItem(QString::number(album_peak))); } } - if(!found) - m_ui.tableWidget->setItem(i, 3, new QTableWidgetItem(tr("Error"))); + //if(!found) + // m_ui.tableWidget->setItem(i, 3, new QTableWidgetItem(tr("Error"))); } //clear items @@ -225,6 +238,7 @@ void RGScanDialog::reject() settings.setValue("RGScanner/geometry", saveGeometry()); settings.setValue("RGScanner/write_track", m_ui.trackCheckBox->isChecked()); settings.setValue("RGScanner/write_album", m_ui.albumCheckBox->isChecked()); + settings.setValue("RGScanner/skip_scanned", m_ui.skipScannedCheckBox->isChecked()); QDialog::reject(); } diff --git a/src/plugins/General/rgscan/rgscandialog.ui b/src/plugins/General/rgscan/rgscandialog.ui index b9f562c22..ae277479c 100644 --- a/src/plugins/General/rgscan/rgscandialog.ui +++ b/src/plugins/General/rgscan/rgscandialog.ui @@ -6,8 +6,8 @@ 0 0 - 765 - 431 + 756 + 429 @@ -23,21 +23,7 @@ 6 - - - - Write track gain/peak - - - - - - - QDialogButtonBox::Close - - - - + QAbstractItemView::NoEditTriggers @@ -83,24 +69,62 @@ - + + + + + + Skip already skanned files + + + + + + + Write track gain/peak + + + + + + + Write album gain/peak + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + Calculate - + Write Tags - - - - Write album gain/peak + + + + QDialogButtonBox::Close diff --git a/src/plugins/General/rgscan/rgscanner.cpp b/src/plugins/General/rgscan/rgscanner.cpp index db80af7ce..9aafbc0cf 100644 --- a/src/plugins/General/rgscan/rgscanner.cpp +++ b/src/plugins/General/rgscan/rgscanner.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -132,6 +132,14 @@ bool RGScanner::hasValues() const return m_has_values; } +QMap RGScanner::oldReplayGainInfo() const +{ + if(!m_decoder) + return QMap(); + + return m_decoder->replayGainInfo(); +} + double RGScanner::gain() const { return m_gain; diff --git a/src/plugins/General/rgscan/rgscanner.h b/src/plugins/General/rgscan/rgscanner.h index dad5b08a7..86a8d4b99 100644 --- a/src/plugins/General/rgscan/rgscanner.h +++ b/src/plugins/General/rgscan/rgscanner.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -46,6 +46,7 @@ public: bool isRunning() const; bool isPending() const; bool hasValues() const; + QMap oldReplayGainInfo() const; double gain() const; double peak() const; QString url() const; -- cgit v1.2.3-13-gbd6f