1 ///////////////////////////////////////////////////////////////////////////////
2 // LameXP - Audio Encoder Front-End
3 // Copyright (C) 2004-2015 LoRd_MuldeR <MuldeR2@GMX.de>
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version, but always including the *additional*
9 // restrictions defined in the "License.txt" file.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this program; if not, write to the Free Software Foundation, Inc.,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 // http://www.gnu.org/licenses/gpl-2.0.txt
21 ///////////////////////////////////////////////////////////////////////////////
26 #define LAMEXP_INC_CONFIG 1
31 #include <MUtils/Version.h>
34 #include <QApplication>
37 #include <QReadWriteLock>
39 ///////////////////////////////////////////////////////////////////////////////
41 ///////////////////////////////////////////////////////////////////////////////
43 static QReadWriteLock g_lamexp_version_lock
;
46 static const unsigned int g_lamexp_version_major
= VER_LAMEXP_MAJOR
;
47 static const unsigned int g_lamexp_version_minor
= (10 * VER_LAMEXP_MINOR_HI
) + VER_LAMEXP_MINOR_LO
;
48 static const unsigned int g_lamexp_version_build
= VER_LAMEXP_BUILD
;
49 static const unsigned int g_lamexp_version_confg
= VER_LAMEXP_CONFG
;
50 static const char* g_lamexp_version_rname
= VER_LAMEXP_RNAME
;
53 static int g_lamexp_demo
= -1;
56 static int g_lamexp_portable
= -1;
59 static QScopedPointer
<QDate
> g_lamexp_expiration_date
;
61 //Official web-site URL
62 static const char *g_lamexp_website_url
= "http://lamexp.sourceforge.net/";
63 static const char *g_lamexp_mulders_url
= "http://muldersoft.com/";
64 static const char *g_lamexp_support_url
= "http://forum.doom9.org/showthread.php?t=157726";
65 static const char *g_lamexp_tracker_url
= "https://github.com/lordmulder/LameXP/issues";
67 //Tool versions (expected versions!)
68 static const unsigned int g_lamexp_toolver_neroaac
= VER_LAMEXP_TOOL_NEROAAC
;
69 static const unsigned int g_lamexp_toolver_fhgaacenc
= VER_LAMEXP_TOOL_FHGAACENC
;
70 static const unsigned int g_lamexp_toolver_fdkaacenc
= VER_LAMEXP_TOOL_FDKAACENC
;
71 static const unsigned int g_lamexp_toolver_qaacenc
= VER_LAMEXP_TOOL_QAAC
;
72 static const unsigned int g_lamexp_toolver_coreaudio
= VER_LAMEXP_TOOL_COREAUDIO
;
74 ///////////////////////////////////////////////////////////////////////////////
76 ///////////////////////////////////////////////////////////////////////////////
81 unsigned int lamexp_version_major(void) { return g_lamexp_version_major
; }
82 unsigned int lamexp_version_minor(void) { return g_lamexp_version_minor
; }
83 unsigned int lamexp_version_build(void) { return g_lamexp_version_build
; }
84 unsigned int lamexp_version_confg(void) { return g_lamexp_version_confg
; }
85 const char* lamexp_version_release(void) { return g_lamexp_version_rname
; }
86 unsigned int lamexp_toolver_neroaac(void) { return g_lamexp_toolver_neroaac
; }
87 unsigned int lamexp_toolver_fhgaacenc(void) { return g_lamexp_toolver_fhgaacenc
; }
88 unsigned int lamexp_toolver_fdkaacenc(void) { return g_lamexp_toolver_fdkaacenc
; }
89 unsigned int lamexp_toolver_qaacenc(void) { return g_lamexp_toolver_qaacenc
; }
90 unsigned int lamexp_toolver_coreaudio(void) { return g_lamexp_toolver_coreaudio
; }
95 const char *lamexp_website_url(void) { return g_lamexp_website_url
; }
96 const char *lamexp_mulders_url(void) { return g_lamexp_mulders_url
; }
97 const char *lamexp_support_url(void) { return g_lamexp_support_url
; }
98 const char *lamexp_tracker_url(void) { return g_lamexp_tracker_url
; }
101 * Check for Demo (pre-release) version
103 bool lamexp_version_demo(void)
105 QReadLocker
readLock(&g_lamexp_version_lock
);
107 if(g_lamexp_demo
>= 0)
109 return (g_lamexp_demo
> 0);
113 QWriteLocker
writeLock(&g_lamexp_version_lock
);
115 if(g_lamexp_demo
< 0)
117 g_lamexp_demo
= (_strnicmp(g_lamexp_version_rname
, "Final", 5) && _strnicmp(g_lamexp_version_rname
, "Hotfix", 6)) ? (1) : (0);
120 return (g_lamexp_demo
> 0);
124 * Calculate expiration date
126 const QDate
&lamexp_version_expires(void)
128 QReadLocker
readLock(&g_lamexp_version_lock
);
130 if(!g_lamexp_expiration_date
.isNull())
132 return *g_lamexp_expiration_date
;
136 QWriteLocker
writeLock(&g_lamexp_version_lock
);
138 if(g_lamexp_expiration_date
.isNull())
140 g_lamexp_expiration_date
.reset(new QDate(MUtils::Version::app_build_date().addDays(MUTILS_DEBUG
? 7 : 30)));
143 return *g_lamexp_expiration_date
;
147 * Check for LameXP "portable" mode
149 bool lamexp_version_portable(void)
151 QReadLocker
readLock(&g_lamexp_version_lock
);
153 if(g_lamexp_portable
>= 0)
155 return (g_lamexp_portable
> 0);
159 QWriteLocker
writeLock(&g_lamexp_version_lock
);
161 if(g_lamexp_portable
< 0)
163 if(VER_LAMEXP_PORTABLE_EDITION
)
165 qWarning("LameXP portable edition!\n");
166 g_lamexp_portable
= 1;
170 const QString baseName
= QFileInfo(QApplication::applicationFilePath()).completeBaseName();
171 const int idx1
= baseName
.indexOf("lamexp", 0, Qt::CaseInsensitive
);
172 const int idx2
= baseName
.lastIndexOf("portable", -1, Qt::CaseInsensitive
);
173 g_lamexp_portable
= ((idx1
>= 0) && (idx2
>= 0) && (idx1
< idx2
)) ? (1) : (0);
177 return (g_lamexp_portable
> 0);