Added options to disable the notifications for the Nero AAC encoder and the WMA Decoder component, as some users may want to use LameXP without AAC and/or WMA support permanently.

This commit is contained in:
LoRd_MuldeR 2010-12-19 21:23:43 +01:00
parent fc148e5e65
commit 10cffb46e5
10 changed files with 159 additions and 38 deletions

View File

@ -1196,6 +1196,8 @@
</property>
<addaction name="actionDisableSounds"/>
<addaction name="actionDisableUpdateReminder"/>
<addaction name="actionDisableWmaDecoderNotifications"/>
<addaction name="actionDisableNeroAacNotifications"/>
</widget>
<addaction name="menuConfiguration"/>
<addaction name="actionInstallWMADecoder"/>
@ -1379,6 +1381,22 @@
<string>Install WMA Decoder</string>
</property>
</action>
<action name="actionDisableNeroAacNotifications">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Disable Nero AAC Notifications</string>
</property>
</action>
<action name="actionDisableWmaDecoderNotifications">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Disable WMA Decoder Notifications</string>
</property>
</action>
</widget>
<resources>
<include location="../res/Icons.qrc"/>
@ -1478,6 +1496,10 @@
<include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Images.qrc"/>
</resources>
<connections>
<connection>

View File

@ -25,7 +25,7 @@
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 0
#define VER_LAMEXP_BUILD 167
#define VER_LAMEXP_BUILD 170
#define VER_LAMEXP_SUFFIX TechPreview
/*

View File

@ -61,8 +61,8 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta
aboutText += "<h2>LameXP - Audio Encoder Front-end</h2>";
aboutText += QString("<b>Copyright (C) 2004-%1 LoRd_MuldeR &lt;MuldeR2@GMX.de&gt;. Some rights reserved.</b><br>").arg(max(lamexp_version_date().year(),QDate::currentDate().year()));
aboutText += QString().sprintf("<b>Version %d.%02d %s, Build %d [%s]</b><br><br>", lamexp_version_major(), lamexp_version_minor(), lamexp_version_release(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate).toLatin1().constData());
aboutText += "<nobr>Please visit the official web-site at ";
aboutText += LINK("http://mulder.dummwiedeutsch.de/") += " for news and updates!</nobr><br>";
aboutText += "<nobr>Please visit "; //the official web-site at
aboutText += LINK("http://forum.doom9.org/showthread.php?t=157726") += " for news and updates!</nobr><br>"; //LINK("http://mulder.dummwiedeutsch.de/")
aboutText += "<hr><br>";
aboutText += "<nobr><tt>This program is free software; you can redistribute it and/or<br>";
aboutText += "modify it under the terms of the GNU General Public License<br>";

View File

@ -251,9 +251,13 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
//Activate tools menu actions
actionDisableUpdateReminder->setChecked(!m_settings->autoUpdateEnabled());
actionDisableSounds->setChecked(!m_settings->soundsEnabled());
actionDisableNeroAacNotifications->setChecked(!m_settings->neroAacNotificationsEnabled());
actionDisableWmaDecoderNotifications->setChecked(!m_settings->wmaDecoderNotificationsEnabled());
connect(actionDisableUpdateReminder, SIGNAL(triggered(bool)), this, SLOT(disableUpdateReminderActionTriggered(bool)));
connect(actionDisableSounds, SIGNAL(triggered(bool)), this, SLOT(disableSoundsActionTriggered(bool)));
connect(actionInstallWMADecoder, SIGNAL(triggered(bool)), this, SLOT(installWMADecoderActionTriggered(bool)));
connect(actionDisableNeroAacNotifications, SIGNAL(triggered(bool)), this, SLOT(disableNeroAacNotificationsActionTriggered(bool)));
connect(actionDisableWmaDecoderNotifications, SIGNAL(triggered(bool)), this, SLOT(disableWmaDecoderNotificationsActionTriggered(bool)));
//Activate help menu actions
connect(actionCheckUpdates, SIGNAL(triggered()), this, SLOT(checkUpdatesActionActivated()));
@ -516,39 +520,45 @@ void MainWindow::windowShown(void)
}
//Check for AAC support
if(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe"))
if(m_settings->neroAacNotificationsEnabled())
{
if(lamexp_tool_version("neroAacEnc.exe") < lamexp_toolver_neroaac())
if(lamexp_check_tool("neroAacEnc.exe") && lamexp_check_tool("neroAacDec.exe") && lamexp_check_tool("neroAacTag.exe"))
{
QString messageText;
messageText += "<nobr>LameXP detected that your version of the Nero AAC encoder is outdated!<br>";
messageText += "The current version available is " + lamexp_version2string("?.?.?.?", lamexp_toolver_neroaac()) + " (or later), but you still have version " + lamexp_version2string("?.?.?.?", lamexp_tool_version("neroAacEnc.exe")) + " installed.<br><br>";
messageText += "You can download the latest version of the Nero AAC encoder from the Nero website at:<br>";
messageText += "<b>" + LINK(AboutDialog::neroAacUrl) + "</b><br></nobr>";
QMessageBox::information(this, "AAC Encoder Outdated", messageText);
if(lamexp_tool_version("neroAacEnc.exe") < lamexp_toolver_neroaac())
{
QString messageText;
messageText += "<nobr>LameXP detected that your version of the Nero AAC encoder is outdated!<br>";
messageText += "The current version available is " + lamexp_version2string("?.?.?.?", lamexp_toolver_neroaac()) + " (or later), but you still have version " + lamexp_version2string("?.?.?.?", lamexp_tool_version("neroAacEnc.exe")) + " installed.<br><br>";
messageText += "You can download the latest version of the Nero AAC encoder from the Nero website at:<br>";
messageText += "<b>" + LINK(AboutDialog::neroAacUrl) + "</b><br></nobr>";
QMessageBox::information(this, "AAC Encoder Outdated", messageText);
}
}
else
{
radioButtonEncoderAAC->setEnabled(false);
QString messageText;
messageText += "<nobr>The Nero AAC encoder could not be found. AAC encoding support will be disabled.<br>";
messageText += "Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!<br><br>";
messageText += "Your LameXP directory is as follows:<br>";
messageText += "<i><nobr>" + QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "</nobr></i><br><br>";
messageText += "You can download the Nero AAC encoder for free from the official Nero website at:<br>";
messageText += "<b>" + LINK(AboutDialog::neroAacUrl) + "</b><br></nobr>";
QMessageBox::information(this, "AAC Support Disabled", messageText);
}
}
else
{
radioButtonEncoderAAC->setEnabled(false);
QString messageText;
messageText += "<nobr>The Nero AAC encoder could not be found. AAC encoding support will be disabled.<br>";
messageText += "Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!<br><br>";
messageText += "Your LameXP directory is as follows:<br>";
messageText += "<i><nobr>" + QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "</nobr></i><br><br>";
messageText += "You can download the Nero AAC encoder for free from the official Nero website at:<br>";
messageText += "<b>" + LINK(AboutDialog::neroAacUrl) + "</b><br></nobr>";
QMessageBox::information(this, "AAC Support Disabled", messageText);
}
//Check for WMA support
if(!lamexp_check_tool("wmawav.exe"))
if(m_settings->wmaDecoderNotificationsEnabled())
{
QString messageText;
messageText += "<nobr>LameXP has detected that the WMA File Decoder component is not currently installed on your system.<br>";
messageText += "You won't be able to process WMA files as input unless the WMA File Decoder component is installed!</nobr>";
QMessageBox::information(this, "WMA Decoder Missing", messageText);
installWMADecoderActionTriggered(rand() % 2);
if(!lamexp_check_tool("wmawav.exe"))
{
QString messageText;
messageText += "<nobr>LameXP has detected that the WMA File Decoder component is not currently installed on your system.<br>";
messageText += "You won't be able to process WMA files as input unless the WMA File Decoder component is installed!</nobr>";
QMessageBox::information(this, "WMA Decoder Missing", messageText);
installWMADecoderActionTriggered(rand() % 2);
}
}
//Add files from the command-line
@ -585,7 +595,7 @@ void MainWindow::aboutButtonClicked(void)
void MainWindow::encodeButtonClicked(void)
{
static const __int64 oneGigabyte = 1073741824;
static const __int64 minimumFreeDiskspaceMultiplier = 222;
static const __int64 minimumFreeDiskspaceMultiplier = 2;
ABORT_IF_BUSY;
@ -596,13 +606,22 @@ void MainWindow::encodeButtonClicked(void)
return;
}
if(lamexp_free_diskspace(lamexp_temp_folder()) < (oneGigabyte * minimumFreeDiskspaceMultiplier))
__int64 currentFreeDiskspace = lamexp_free_diskspace(lamexp_temp_folder());
if(currentFreeDiskspace < (oneGigabyte * minimumFreeDiskspaceMultiplier))
{
QDir tempFolder(lamexp_temp_folder());
tempFolder.cdUp();
if(QMessageBox::warning(this, "Low Diskspace Warning", QString("<nobr>Warning: There are less than %1 GB of free diskspace available on your system's TEMP folder!</nobr><br><br>Your TEMP folder is located at:<br><i>%2</i>").arg(QString::number(minimumFreeDiskspaceMultiplier), tempFolder.path()), "Abort Process (Recommended)", "Ignore") != 1)
QStringList tempFolderParts = lamexp_temp_folder().split("/", QString::SkipEmptyParts, Qt::CaseInsensitive);
tempFolderParts.takeLast();
switch(QMessageBox::warning(this, "Low Diskspace Warning", QString("<nobr>There are less than %1 GB of free diskspace available on your system's TEMP folder.</nobr><br><nobr>It is highly recommend to free up more diskspace before proceeding with the encode!.</nobr><br><br>Your TEMP folder is located at:<br><nobr><i><a href=\"file:///%3\">%3</a></i></nobr><br>").arg(QString::number(minimumFreeDiskspaceMultiplier), tempFolderParts.join("\\")), "Abort Encoding Process", "Clean Disk Now", "Ignore"))
{
case 1:
QProcess::startDetached(QString("%1/cleanmgr.exe").arg(lamexp_known_folder(lamexp_folder_systemfolder)), QStringList() << "/D" << tempFolderParts.first());
case 0:
return;
break;
default:
QMessageBox::warning(this, "Low Diskspace", "You are proceeding with low diskspace. Problems might occur!");
break;
}
}
@ -1454,6 +1473,61 @@ void MainWindow::disableSoundsActionTriggered(bool checked)
actionDisableSounds->setChecked(!m_settings->soundsEnabled());
}
/*
* Disable Nero AAC encoder action
*/
void MainWindow::disableNeroAacNotificationsActionTriggered(bool checked)
{
if(checked)
{
if(QMessageBox::Yes == QMessageBox::question(this, "Nero AAC Notifications", "Do you really want to disable all Nero AAC Encoder notifications?", QMessageBox::Yes | QMessageBox::No, QMessageBox::No))
{
QMessageBox::information(this, "Nero AAC Notifications", "All Nero AAC Encoder notifications have been disabled.");
m_settings->neroAacNotificationsEnabled(false);
}
else
{
m_settings->neroAacNotificationsEnabled(true);
}
}
else
{
QMessageBox::information(this, "Nero AAC Notifications", "The Nero AAC Encoder notifications have been re-enabled.");
m_settings->neroAacNotificationsEnabled(true);
}
actionDisableNeroAacNotifications->setChecked(!m_settings->neroAacNotificationsEnabled());
}
/*
* Disable WMA Decoder component action
*/
void MainWindow::disableWmaDecoderNotificationsActionTriggered(bool checked)
{
if(checked)
{
if(QMessageBox::Yes == QMessageBox::question(this, "WMA Decoder Notifications", "Do you really want to disable all WMA Decoder notifications?", QMessageBox::Yes | QMessageBox::No, QMessageBox::No))
{
QMessageBox::information(this, "WMA Decoder Notifications", "All WMA Decoder notifications have been disabled.");
m_settings->wmaDecoderNotificationsEnabled(false);
}
else
{
m_settings->wmaDecoderNotificationsEnabled(true);
}
}
else
{
QMessageBox::information(this, "WMA Decoder Notifications", "The WMA Decoder notifications have been re-enabled.");
m_settings->wmaDecoderNotificationsEnabled(true);
}
actionDisableWmaDecoderNotifications->setChecked(!m_settings->wmaDecoderNotificationsEnabled());
}
/*
* Download and install WMA Decoder component
*/
void MainWindow::installWMADecoderActionTriggered(bool checked)
{
static const char *download_url = "http://www.nch.com.au/components/wmawav.exe";

View File

@ -89,6 +89,8 @@ private slots:
void outputFolderContextMenu(const QPoint &pos);
void showFolderContextActionTriggered(void);
void installWMADecoderActionTriggered(bool checked);
void disableNeroAacNotificationsActionTriggered(bool checked);
void disableWmaDecoderNotificationsActionTriggered(bool checked);
protected:
void showEvent(QShowEvent *event);

View File

@ -42,13 +42,23 @@ WaveEncoder::~WaveEncoder(void)
bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag)
{
emit messageLogged(QString("Moving file \"%1\" to \"%2\"").arg(sourceFile, outputFile));
SHFILEOPSTRUCTW fileOperation;
memset(&fileOperation, 0, sizeof(SHFILEOPSTRUCTW));
fileOperation.wFunc = FO_MOVE;
fileOperation.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_FILESONLY;
if(lamexp_temp_folder().compare(QFileInfo(sourceFile).canonicalPath(), Qt::CaseInsensitive) == 0)
{
//If the source is in the TEMP folder take shortcut and move the file
emit messageLogged(QString("Moving file \"%1\" to \"%2\"").arg(sourceFile, outputFile));
fileOperation.wFunc = FO_MOVE;
}
else
{
//...otherwise we actually copy the file in order to keep the source
emit messageLogged(QString("Copy file \"%1\" to \"%2\"").arg(sourceFile, outputFile));
fileOperation.wFunc = FO_COPY;
}
size_t srcLen = wcslen(reinterpret_cast<const wchar_t*>(sourceFile.utf16())) + 3;
wchar_t *srcBuffer = new wchar_t[srcLen];
memset(srcBuffer, 0, srcLen * sizeof(wchar_t));

View File

@ -832,9 +832,11 @@ QString lamexp_known_folder(lamexp_known_folder_t folder_id)
static const int CSIDL_LOCAL_APPDATA = 0x001c;
static const int CSIDL_PROGRAM_FILES = 0x0026;
static const int CSIDL_SYSTEM_FOLDER = 0x0025;
static const GUID GUID_LOCAL_APPDATA = {0xF1B32785,0x6FBA,0x4FCF,{0x9D,0x55,0x7B,0x8E,0x7F,0x15,0x70,0x91}};
static const GUID GUID_LOCAL_APPDATA_LOW = {0xA520A1A4,0x1780,0x4FF6,{0xBD,0x18,0x16,0x73,0x43,0xC5,0xAF,0x16}};
static const GUID GUID_PROGRAM_FILES = {0x905e63b6,0xc1bf,0x494e,{0xb2,0x9c,0x65,0xb7,0x32,0xd3,0xd2,0x1a}};
static const GUID GUID_SYSTEM_FOLDER = {0x1AC14E77,0x02E7,0x4E5D,{0xB7,0x44,0x2E,0xB1,0xAE,0x51,0x98,0xB7}};
static QLibrary *Kernel32Lib = NULL;
static SHGetKnownFolderPathFun SHGetKnownFolderPathPtr = NULL;
@ -860,6 +862,10 @@ QString lamexp_known_folder(lamexp_known_folder_t folder_id)
folderCSIDL = CSIDL_PROGRAM_FILES;
folderGUID = GUID_PROGRAM_FILES;
break;
case lamexp_folder_systemfolder:
folderCSIDL = CSIDL_SYSTEM_FOLDER;
folderGUID = GUID_SYSTEM_FOLDER;
break;
default:
return QString();
break;

View File

@ -60,7 +60,8 @@ lamexp_cpu_t;
typedef enum
{
lamexp_folder_localappdata = 0,
lamexp_folder_programfiles = 1
lamexp_folder_programfiles = 2,
lamexp_folder_systemfolder = 3
}
lamexp_known_folder_t;

View File

@ -44,6 +44,8 @@ static const char *g_settingsId_createPlaylist = "Flags/AutoCreatePlaylist";
static const char *g_settingsId_autoUpdateLastCheck = "AutoUpdate/LastCheck";
static const char *g_settingsId_autoUpdateEnabled = "AutoUpdate/Enabled";
static const char *g_settingsId_soundsEnabled = "Flags/EnableSounds";
static const char *g_settingsId_neroAacNotificationsEnabled = "Flags/EnableNeroAacNotifications";
static const char *g_settingsId_wmaDecoderNotificationsEnabled = "Flags/EnableWmaDecoderNotifications";
//Macros
#define MAKE_OPTION1(OPT,DEF) \
@ -128,3 +130,5 @@ MAKE_OPTION3(createPlaylist, true)
MAKE_OPTION2(autoUpdateLastCheck, "Never")
MAKE_OPTION3(autoUpdateEnabled, true)
MAKE_OPTION3(soundsEnabled, true)
MAKE_OPTION3(neroAacNotificationsEnabled, true)
MAKE_OPTION3(wmaDecoderNotificationsEnabled, true)

View File

@ -75,6 +75,8 @@ public:
MAKE_OPTION_DEC2(autoUpdateLastCheck);
MAKE_OPTION_DEC3(autoUpdateEnabled);
MAKE_OPTION_DEC3(soundsEnabled);
MAKE_OPTION_DEC3(neroAacNotificationsEnabled)
MAKE_OPTION_DEC3(wmaDecoderNotificationsEnabled)
//Misc
void validate(void);