Generate nicer output file names in Cue Splitter.

This commit is contained in:
LoRd_MuldeR 2011-05-29 16:57:38 +02:00
parent 0bf5982275
commit a955f791e9
4 changed files with 27 additions and 9 deletions

View File

@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 2
#define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 4
#define VER_LAMEXP_BUILD 553
#define VER_LAMEXP_PATCH 5
#define VER_LAMEXP_BUILD 554
///////////////////////////////////////////////////////////////////////////////
// Tools versions

View File

@ -281,7 +281,7 @@ bool CueImportDialog::analyzeFiles(QStringList &files)
void CueImportDialog::splitFiles(void)
{
QString baseName = QFileInfo(m_cueFileName).completeBaseName().replace(".", " ").left(42).trimmed();
QString baseName = QFileInfo(m_cueFileName).completeBaseName().replace(".", " ").simplified();
WorkingBanner *progress = new WorkingBanner(this);
CueSplitter *splitter = new CueSplitter(m_outputDir, baseName, m_model, m_fileInfo);

View File

@ -109,7 +109,7 @@ void CueSplitter::run()
AbstractDecoder *decoder = DecoderRegistry::lookup(inputFileInfo.formatContainerType(), inputFileInfo.formatContainerProfile(), inputFileInfo.formatAudioType(), inputFileInfo.formatAudioProfile(), inputFileInfo.formatAudioVersion());
if(decoder)
{
m_activeFile = QFileInfo(inputFileList.at(i)).fileName().left(54).trimmed();
m_activeFile = shortName(QFileInfo(inputFileList.at(i)).fileName());
emit fileSelected(m_activeFile);
QString tempFile = QString("%1/~%2.wav").arg(m_outputDir, lamexp_rand_str());
connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection);
@ -147,13 +147,14 @@ void CueSplitter::run()
QString albumPerformer = m_model->getAlbumPerformer();
QString albumTitle = m_model->getAlbumTitle();
//Now split all tracks
//Now split all files
for(int i = 0; i < nFiles; i++)
{
int nTracks = m_model->getTrackCount(i);
QString trackFile = m_model->getFileName(i);
int maxProgress = 0;
//Process all tracks
for(int j = 0; j < nTracks; j++)
{
int trackNo = m_model->getTrackNo(i, j);
@ -167,6 +168,7 @@ void CueSplitter::run()
continue;
}
//Setup meta info
AudioFileModel trackMetaInfo(QString().sprintf("cue://File%02d/Track%02d", i, j));
trackMetaInfo.setFileName(m_model->getTrackTitle(i, j));
trackMetaInfo.setFileArtist(m_model->getTrackPerformer(i, j));
@ -185,13 +187,16 @@ void CueSplitter::run()
trackMetaInfo.setFileDuration(static_cast<unsigned int>(abs(trackLength)));
}
QString outputFile = QString("%1/%2 - Track %3.wav").arg(m_outputDir, m_baseName, QString().sprintf("%02d", trackNo));
//Generate output file name
QString trackTitle = trackMetaInfo.fileName().isEmpty() ? QString().sprintf("Track %02d", trackNo) : trackMetaInfo.fileName();
QString outputFile = QString("%1/[%2] %3 - %4.wav").arg(m_outputDir, QString().sprintf("%02d", trackNo), m_baseName, trackTitle);
for(int n = 2; QFileInfo(outputFile).exists(); n++)
{
outputFile = QString("%1/%2 - Track %3 (%4).wav").arg(m_outputDir, m_baseName, QString().sprintf("%02d", trackNo), QString::number(n));
outputFile = QString("%1/[%2] %3 - %4 (%5).wav").arg(m_outputDir, QString().sprintf("%02d", trackNo), m_baseName, trackTitle, QString::number(n));
}
emit fileSelected(QFileInfo(outputFile).fileName());
//Call split function
emit fileSelected(shortName(QFileInfo(outputFile).fileName()));
splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, maxProgress);
if(m_abortFlag)
@ -236,7 +241,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
return;
}
QString baseName = QFileInfo(output).fileName();
QString baseName = shortName(QFileInfo(output).fileName());
QString decompressedInput = m_decompressedFiles[file];
qDebug("Input: <%s>", decompressedInput.toUtf8().constData());
@ -389,6 +394,18 @@ QString CueSplitter::indexToString(const double index) const
return time.toString(time.hour() ? "H:mm:ss.zzz" : "m:ss.zzz");
}
QString CueSplitter::shortName(const QString &longName) const
{
static const int maxLen = 54;
if(longName.length() > maxLen)
{
return QString("%1...%2").arg(longName.left(maxLen/2).trimmed(), longName.right(maxLen/2).trimmed());
}
return longName;
}
////////////////////////////////////////////////////////////
// EVENTS
////////////////////////////////////////////////////////////

View File

@ -62,6 +62,7 @@ public slots:
private:
void splitFile(const QString &output, const int trackNo, const QString &file, const double offset, const double length, const AudioFileModel &metaInfo, int &maxProgress);
QString indexToString(const double index) const;
QString shortName(const QString &longName) const;
const QString m_soxBin;
const QString m_outputDir;