OSDN Git Service

Now each tool can also have a "tag" in addition to the version number.
authorLoRd_MuldeR <mulder2@gmx.de>
Mon, 11 Feb 2013 23:08:21 +0000 (00:08 +0100)
committerLoRd_MuldeR <mulder2@gmx.de>
Mon, 11 Feb 2013 23:08:21 +0000 (00:08 +0100)
src/Dialog_About.cpp
src/Global.cpp
src/Global.h
src/Thread_Initialization.cpp

index 400a1e1..9cd7474 100644 (file)
@@ -596,14 +596,14 @@ void AboutDialog::initSoftwareTab(void)
        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/"
        );
@@ -632,7 +632,7 @@ void AboutDialog::initSoftwareTab(void)
        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/"
        );
@@ -652,8 +652,8 @@ void AboutDialog::initSoftwareTab(void)
        );
        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"
        );
@@ -837,11 +837,12 @@ void AboutDialog::initLicenseTab(void)
 
 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)));
index f1f26a4..5851a1e 100644 (file)
@@ -233,6 +233,7 @@ static struct
 {
        QMap<QString, LockedFile*> *registry;
        QMap<QString, unsigned int> *versions;
+       QMap<QString, QString> *tags;
        QReadWriteLock lock;
 }
 g_lamexp_tools;
@@ -1567,12 +1568,13 @@ bool lamexp_clean_folder(const QString &folderPath)
 /*
  * 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()))
        {
@@ -1581,6 +1583,7 @@ void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned in
 
        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());
 }
 
 /*
@@ -1619,14 +1622,19 @@ const QString lamexp_lookup_tool(const QString &toolName)
 /*
  * 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
@@ -1643,7 +1651,7 @@ unsigned int lamexp_tool_version(const QString &toolName)
 /*
  * 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)
        {
@@ -1668,6 +1676,11 @@ const QString lamexp_version2string(const QString &pattern, unsigned int version
                index = result.indexOf("?", Qt::CaseInsensitive);
        }
 
+       if(tag)
+       {
+               result.replace(QChar('#'), *tag, Qt::CaseInsensitive);
+       }
+
        return result;
 }
 
@@ -2417,6 +2430,7 @@ void lamexp_finalization(void)
                }
                LAMEXP_DELETE(g_lamexp_tools.registry);
                LAMEXP_DELETE(g_lamexp_tools.versions);
+               LAMEXP_DELETE(g_lamexp_tools.tags);
        }
        
        //Delete temporary files
index f5b949c..29e5d3b 100644 (file)
@@ -119,10 +119,10 @@ int lamexp_init_ipc(void);
 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);
@@ -149,7 +149,7 @@ extern const char* LAMEXP_DEFAULT_TRANSLATION;
 
 //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);
index f301f6d..0a226c0 100644 (file)
@@ -48,9 +48,9 @@ static const double g_allowedExtractDelay = 12.0;
 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 */
        }
@@ -90,7 +90,7 @@ protected:
                                if(lockedFile)
                                {
                                        QMutexLocker lock(&s_mutex);
-                                       lamexp_register_tool(m_toolShortName, lockedFile, version);
+                                       lamexp_register_tool(m_toolShortName, lockedFile, version, &m_toolTag);
                                }
                        }
                }
@@ -109,6 +109,7 @@ private:
        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;
 
@@ -185,6 +186,7 @@ void InitializationThread::run()
        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++)
@@ -199,6 +201,7 @@ void InitializationThread::run()
                        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
                {
@@ -235,6 +238,7 @@ void InitializationThread::run()
                        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)
                        {
@@ -243,7 +247,7 @@ void InitializationThread::run()
                        
                        if(toolCpuType & cpuSupport)
                        {
-                               pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion));
+                               pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion, toolVersTag));
                                QThread::yieldCurrentThread();
                        }
                }