moreAboutText += makeToolText
(
tr("LAME - OpenSource mp3 Encoder"),
- "lame.exe", "v?.??, Final-?",
+ "lame.exe", "v?.??, #-?",
tr("Released under the terms of the GNU Lesser General Public License."),
"http://lame.sourceforge.net/"
);
moreAboutText += makeToolText
(
tr("OggEnc - Ogg Vorbis Encoder"),
- "oggenc2.exe", "v?.??, aoTuV Beta-?.??",
+ "oggenc2.exe", "v?.??, aoTuV #-?.??",
tr("Completely open and patent-free audio encoding technology."),
"http://www.vorbis.com/"
);
moreAboutText += makeToolText
(
tr("Opus Audio Codec"),
- "opusenc_std.exe", "????-??-??",
+ "opusenc.exe", "????-??-??",
tr("Totally open, royalty-free, highly versatile audio codec."),
"http://www.opus-codec.org/"
);
);
moreAboutText += makeToolText
(
- tr("AC3Filter Tools - AC3/DTS Decoder"),
- "valdec.exe", "v?.??",
+ tr("Valdec from AC3Filter Tools - AC3/DTS Decoder"),
+ "valdec.exe", "v?.?.?#",
tr("Released under the terms of the GNU Lesser General Public License."),
"http://www.ac3filter.net/projects/tools"
);
QString AboutDialog::makeToolText(const QString &toolName, const QString &toolBin, const QString &toolVerFmt, const QString &toolLicense, const QString &toolWebsite, const QString &extraInfo)
{
- QString toolText, verStr(toolVerFmt);
+ QString toolText, toolTag, verStr(toolVerFmt);
if(!toolBin.isEmpty())
{
- verStr = lamexp_version2string(toolVerFmt, lamexp_tool_version(toolBin), tr("n/a"));
+ const unsigned int version = lamexp_tool_version(toolBin, &toolTag);
+ verStr = lamexp_version2string(toolVerFmt, version, tr("n/a"), &toolTag);
}
toolText += QString("<li>%1<br>").arg(NOBR(QString("<b>%1 (%2)</b>").arg(toolName, verStr)));
{
QMap<QString, LockedFile*> *registry;
QMap<QString, unsigned int> *versions;
+ QMap<QString, QString> *tags;
QReadWriteLock lock;
}
g_lamexp_tools;
/*
* Register tool
*/
-void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version)
+void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version, const QString *tag)
{
QWriteLocker writeLock(&g_lamexp_tools.lock);
if(!g_lamexp_tools.registry) g_lamexp_tools.registry = new QMap<QString, LockedFile*>();
if(!g_lamexp_tools.versions) g_lamexp_tools.versions = new QMap<QString, unsigned int>();
+ if(!g_lamexp_tools.tags) g_lamexp_tools.tags = new QMap<QString, QString>();
if(g_lamexp_tools.registry->contains(toolName.toLower()))
{
g_lamexp_tools.registry->insert(toolName.toLower(), file);
g_lamexp_tools.versions->insert(toolName.toLower(), version);
+ g_lamexp_tools.tags->insert(toolName.toLower(), (tag) ? (*tag) : QString());
}
/*
/*
* Lookup tool version
*/
-unsigned int lamexp_tool_version(const QString &toolName)
+unsigned int lamexp_tool_version(const QString &toolName, QString *tag)
{
QReadLocker readLock(&g_lamexp_tools.lock);
+ if(tag) tag->clear();
if(g_lamexp_tools.versions)
{
if(g_lamexp_tools.versions->contains(toolName.toLower()))
{
+ if(tag)
+ {
+ if(g_lamexp_tools.tags->contains(toolName.toLower())) *tag = g_lamexp_tools.tags->value(toolName.toLower());
+ }
return g_lamexp_tools.versions->value(toolName.toLower());
}
else
/*
* Version number to human-readable string
*/
-const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText)
+const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText, const QString *tag)
{
if(version == UINT_MAX)
{
index = result.indexOf("?", Qt::CaseInsensitive);
}
+ if(tag)
+ {
+ result.replace(QChar('#'), *tag, Qt::CaseInsensitive);
+ }
+
return result;
}
}
LAMEXP_DELETE(g_lamexp_tools.registry);
LAMEXP_DELETE(g_lamexp_tools.versions);
+ LAMEXP_DELETE(g_lamexp_tools.tags);
}
//Delete temporary files
LONG WINAPI lamexp_exception_handler(__in struct _EXCEPTION_POINTERS *ExceptionInfo);
void lamexp_invalid_param_handler(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t);
void lamexp_message_handler(QtMsgType type, const char *msg);
-void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version = 0);
+void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version = 0, const QString *tag = NULL);
bool lamexp_check_tool(const QString &toolName);
const QString lamexp_lookup_tool(const QString &toolName);
-unsigned int lamexp_tool_version(const QString &toolName);
+unsigned int lamexp_tool_version(const QString &toolName, QString *tag = NULL);
void lamexp_finalization(void);
QString lamexp_rand_str(void);
const QString &lamexp_temp_folder2(void);
//Auxiliary functions
bool lamexp_clean_folder(const QString &folderPath);
-const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText);
+const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText, const QString *tag = NULL);
const QString &lamexp_known_folder(lamexp_known_folder_t folder_id);
unsigned __int64 lamexp_free_diskspace(const QString &path, bool *ok = NULL);
bool lamexp_remove_file(const QString &filename);
class ExtractorTask : public QRunnable
{
public:
- ExtractorTask(const QDir &appDir, const QString &toolName, const QString &toolShortName, const QByteArray &toolHash, const unsigned int toolVersion)
+ ExtractorTask(const QDir &appDir, const QString &toolName, const QString &toolShortName, const QByteArray &toolHash, const unsigned int toolVersion, const QString &toolTag)
:
- QRunnable(), m_appDir(appDir), m_toolName(toolName), m_toolShortName(toolShortName), m_toolHash(toolHash), m_toolVersion(toolVersion)
+ QRunnable(), m_appDir(appDir), m_toolName(toolName), m_toolShortName(toolShortName), m_toolHash(toolHash), m_toolVersion(toolVersion), m_toolTag(toolTag)
{
/* Nothing to do */
}
if(lockedFile)
{
QMutexLocker lock(&s_mutex);
- lamexp_register_tool(m_toolShortName, lockedFile, version);
+ lamexp_register_tool(m_toolShortName, lockedFile, version, &m_toolTag);
}
}
}
const QDir m_appDir;
const QString m_toolName;
const QString m_toolShortName;
+ const QString m_toolTag;
const QByteArray m_toolHash;
const unsigned int m_toolVersion;
QMap<QString, QString> mapChecksum;
QMap<QString, unsigned int> mapVersion;
QMap<QString, unsigned int> mapCpuType;
+ QMap<QString, QString> mapVersTag;
//Init properties
for(int i = 0; i < INT_MAX; i++)
mapChecksum.insert(currentTool, QString::fromLatin1(g_lamexp_tools[i].pcHash));
mapCpuType.insert(currentTool, g_lamexp_tools[i].uiCpuType);
mapVersion.insert(currentTool, g_lamexp_tools[i].uiVersion);
+ mapVersTag.insert(currentTool, g_lamexp_tools[i].pcVersTag);
}
else
{
QByteArray toolHash = mapChecksum.take(toolName).toLatin1();
unsigned int toolCpuType = mapCpuType.take(toolName);
unsigned int toolVersion = mapVersion.take(toolName);
+ QString toolVersTag = mapVersTag.take(toolName);
if(toolHash.size() != 96)
{
if(toolCpuType & cpuSupport)
{
- pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion));
+ pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion, toolVersTag));
QThread::yieldCurrentThread();
}
}