diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui
index fa2e5f31..bc53f5bb 100644
--- a/gui/MainWindow.ui
+++ b/gui/MainWindow.ui
@@ -1196,6 +1196,8 @@
+
+
@@ -1379,6 +1381,22 @@
Install WMA Decoder
+
+
+ true
+
+
+ Disable Nero AAC Notifications
+
+
+
+
+ true
+
+
+ Disable WMA Decoder Notifications
+
+
@@ -1478,6 +1496,10 @@
+
+
+
+
diff --git a/src/Config.h b/src/Config.h
index 5fa117f8..2194f0e9 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -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
/*
diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp
index 6f812d0b..7ddd00c9 100644
--- a/src/Dialog_About.cpp
+++ b/src/Dialog_About.cpp
@@ -61,8 +61,8 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta
aboutText += "LameXP - Audio Encoder Front-end
";
aboutText += QString("Copyright (C) 2004-%1 LoRd_MuldeR <MuldeR2@GMX.de>. Some rights reserved.
").arg(max(lamexp_version_date().year(),QDate::currentDate().year()));
aboutText += QString().sprintf("Version %d.%02d %s, Build %d [%s]
", lamexp_version_major(), lamexp_version_minor(), lamexp_version_release(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate).toLatin1().constData());
- aboutText += "Please visit the official web-site at ";
- aboutText += LINK("http://mulder.dummwiedeutsch.de/") += " for news and updates!
";
+ aboutText += "Please visit "; //the official web-site at
+ aboutText += LINK("http://forum.doom9.org/showthread.php?t=157726") += " for news and updates!
"; //LINK("http://mulder.dummwiedeutsch.de/")
aboutText += "
";
aboutText += "This program is free software; you can redistribute it and/or
";
aboutText += "modify it under the terms of the GNU General Public License
";
diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp
index 12ab4572..2b0c0d4b 100644
--- a/src/Dialog_MainWindow.cpp
+++ b/src/Dialog_MainWindow.cpp
@@ -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 += "LameXP detected that your version of the Nero AAC encoder is outdated!
";
- 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.
";
- messageText += "You can download the latest version of the Nero AAC encoder from the Nero website at:
";
- messageText += "" + LINK(AboutDialog::neroAacUrl) + "
";
- QMessageBox::information(this, "AAC Encoder Outdated", messageText);
+ if(lamexp_tool_version("neroAacEnc.exe") < lamexp_toolver_neroaac())
+ {
+ QString messageText;
+ messageText += "LameXP detected that your version of the Nero AAC encoder is outdated!
";
+ 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.
";
+ messageText += "You can download the latest version of the Nero AAC encoder from the Nero website at:
";
+ messageText += "" + LINK(AboutDialog::neroAacUrl) + "
";
+ QMessageBox::information(this, "AAC Encoder Outdated", messageText);
+ }
+ }
+ else
+ {
+ radioButtonEncoderAAC->setEnabled(false);
+ QString messageText;
+ messageText += "The Nero AAC encoder could not be found. AAC encoding support will be disabled.
";
+ messageText += "Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!
";
+ messageText += "Your LameXP directory is as follows:
";
+ messageText += "" + QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "
";
+ messageText += "You can download the Nero AAC encoder for free from the official Nero website at:
";
+ messageText += "" + LINK(AboutDialog::neroAacUrl) + "
";
+ QMessageBox::information(this, "AAC Support Disabled", messageText);
}
- }
- else
- {
- radioButtonEncoderAAC->setEnabled(false);
- QString messageText;
- messageText += "The Nero AAC encoder could not be found. AAC encoding support will be disabled.
";
- messageText += "Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!
";
- messageText += "Your LameXP directory is as follows:
";
- messageText += "" + QDir::toNativeSeparators(QCoreApplication::applicationDirPath()) + "
";
- messageText += "You can download the Nero AAC encoder for free from the official Nero website at:
";
- messageText += "" + LINK(AboutDialog::neroAacUrl) + "
";
- QMessageBox::information(this, "AAC Support Disabled", messageText);
}
//Check for WMA support
- if(!lamexp_check_tool("wmawav.exe"))
+ if(m_settings->wmaDecoderNotificationsEnabled())
{
- QString messageText;
- messageText += "LameXP has detected that the WMA File Decoder component is not currently installed on your system.
";
- messageText += "You won't be able to process WMA files as input unless the WMA File Decoder component is installed!";
- QMessageBox::information(this, "WMA Decoder Missing", messageText);
- installWMADecoderActionTriggered(rand() % 2);
+ if(!lamexp_check_tool("wmawav.exe"))
+ {
+ QString messageText;
+ messageText += "LameXP has detected that the WMA File Decoder component is not currently installed on your system.
";
+ messageText += "You won't be able to process WMA files as input unless the WMA File Decoder component is installed!";
+ 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("Warning: There are less than %1 GB of free diskspace available on your system's TEMP folder!
Your TEMP folder is located at:
%2").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("There are less than %1 GB of free diskspace available on your system's TEMP folder.
It is highly recommend to free up more diskspace before proceeding with the encode!.
Your TEMP folder is located at:
%3
").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";
diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h
index 58cb71b9..bdb684af 100644
--- a/src/Dialog_MainWindow.h
+++ b/src/Dialog_MainWindow.h
@@ -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);
diff --git a/src/Encoder_Wave.cpp b/src/Encoder_Wave.cpp
index f4d834c9..ea9ee657 100644
--- a/src/Encoder_Wave.cpp
+++ b/src/Encoder_Wave.cpp
@@ -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(sourceFile.utf16())) + 3;
wchar_t *srcBuffer = new wchar_t[srcLen];
memset(srcBuffer, 0, srcLen * sizeof(wchar_t));
diff --git a/src/Global.cpp b/src/Global.cpp
index efcefc75..6e8b6958 100644
--- a/src/Global.cpp
+++ b/src/Global.cpp
@@ -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;
diff --git a/src/Global.h b/src/Global.h
index 6241bebf..81849019 100644
--- a/src/Global.h
+++ b/src/Global.h
@@ -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;
diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp
index deebff9a..4e70b5d6 100644
--- a/src/Model_Settings.cpp
+++ b/src/Model_Settings.cpp
@@ -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)
diff --git a/src/Model_Settings.h b/src/Model_Settings.h
index 51c1caf2..962a85d9 100644
--- a/src/Model_Settings.h
+++ b/src/Model_Settings.h
@@ -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);