<translation type="unfinished"></translation>
</message>
<message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<source>Files Rejected</source>
<translation type="unfinished"></translation>
</message>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation>In das ausgewählte Verzeichnis kann nicht geschrieben werden. Bitte ein anderes Verzeichnis auswählen!</translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation>CDA Dateien</translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation>%1 Datei(en) wurden abgewiesen, weil es sich um CDDA Platzhalter&minus;Dateien handelt!</translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation>LameXP ist derzeit leider nicht dazu in der Lage, Audio Tracks von einer Audio&minus;CD zu extrahieren.</translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation>Es wird empfohlen %1 für diesen Zweck zu verwenden.</translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>CDA Files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 file(s) have been rejected, because they are dummy CDDA files!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>We recommend using %1 for that purpose.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sorry, LameXP cannot extract audio tracks from an Audio&minus;CD at present.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MetaInfo</name>
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 1
-#define VER_LAMEXP_BUILD 373
+#define VER_LAMEXP_BUILD 375
#define VER_LAMEXP_SUFFIX Beta-9
/*
{
QMessageBox::warning(this, tr("Access Denied"), QString("<nobr>%1<br>%2</nobr>").arg(tr("%1 file(s) have been rejected, because read access was not granted!").arg(analyzer->filesDenied()), tr("This usually means the file is locked by another process.")));
}
+ if(analyzer->filesDummyCDDA())
+ {
+ QMessageBox::warning(this, tr("CDA Files"), QString("<nobr>%1<br><br>%2<br>%3</nobr>").arg(tr("%1 file(s) have been rejected, because they are dummy CDDA files!").arg(analyzer->filesDummyCDDA()), tr("Sorry, LameXP cannot extract audio tracks from an Audio−CD at present."), tr("We recommend using %1 for that purpose.").arg("<a href=\"http://www.exactaudiocopy.de/\">Exact Audio Copy</a>")));
+ }
if(analyzer->filesRejected())
{
QMessageBox::warning(this, tr("Files Rejected"), QString("<nobr>%1<br>%2</nobr>").arg(tr("%1 file(s) have been rejected, because the file format could not be recognized!").arg(analyzer->filesRejected()), tr("This usually means the file is damaged or the file format is not supported.")));
m_filesAccepted = 0;
m_filesRejected = 0;
m_filesDenied = 0;
+ m_filesDummyCDDA = 0;
}
////////////////////////////////////////////////////////////
m_filesAccepted = 0;
m_filesRejected = 0;
m_filesDenied = 0;
+ m_filesDummyCDDA = 0;
m_inputFiles.sort();
m_filesDenied++;
return audioFile;
}
- else
+
+ if(checkFile_CDDA(readTest))
{
- readTest.close();
+ qWarning("Dummy CDDA file detected, skipping!");
+ m_filesDummyCDDA ++;
+ return audioFile;
}
+
+ readTest.close();
QProcess process;
process.setProcessChannelMode(QProcess::MergedChannels);
return 0;
}
+bool FileAnalyzer::checkFile_CDDA(QFile &file)
+{
+ file.reset();
+ QByteArray data = file.read(128);
+
+ int i = data.indexOf("RIFF");
+ int j = data.indexOf("CDDA");
+ int k = data.indexOf("fmt ");
+
+ return ((i >= 0) && (j >= 0) && (k >= 0) && (k > j) && (j > i));
+}
+
////////////////////////////////////////////////////////////
// Public Functions
////////////////////////////////////////////////////////////
unsigned int FileAnalyzer::filesRejected(void)
{
- return m_filesRejected - m_filesDenied;
+ return max(m_filesRejected - (m_filesDenied + m_filesDummyCDDA), 0);
}
unsigned int FileAnalyzer::filesDenied(void)
return m_filesDenied;
}
+unsigned int FileAnalyzer::filesDummyCDDA(void)
+{
+ return m_filesDummyCDDA;
+}
+
////////////////////////////////////////////////////////////
// EVENTS
////////////////////////////////////////////////////////////
unsigned int filesAccepted(void);
unsigned int filesRejected(void);
unsigned int filesDenied(void);
+ unsigned int filesDummyCDDA(void);
signals:
void fileSelected(const QString &fileName);
void updateSection(const QString §ion);
unsigned int parseYear(const QString &str);
unsigned int parseDuration(const QString &str);
+ bool checkFile_CDDA(QFile &file);
QStringList m_inputFiles;
const QString m_mediaInfoBin_x86;
unsigned int m_filesAccepted;
unsigned int m_filesRejected;
unsigned int m_filesDenied;
+ unsigned int m_filesDummyCDDA;
bool m_bSuccess;
};