Moved all sound effects into Qt-style resources. Sound files can be played back directly from program memory by passing a pointer to the WAVE data into PlaySound as the first argument (and using the SND_MEMORY flag), it's just not documented very well.

This commit is contained in:
LoRd_MuldeR 2013-12-03 22:19:11 +01:00
parent 6800711b6a
commit b05a7ac3ef
20 changed files with 1262 additions and 1188 deletions

View File

@ -102,25 +102,6 @@ END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// WAVE
//
IDR_WAVE_ABOUT WAVE "res\\sounds\\uuaarrgh.wav"
IDR_WAVE_SUCCESS WAVE "res\\sounds\\success.wav"
IDR_WAVE_ERROR WAVE "res\\sounds\\error.wav"
IDR_WAVE_ABORTED WAVE "res\\sounds\\aborted.wav"
IDR_WAVE_WHAMMY WAVE "res\\sounds\\whammy.wav"
IDR_WAVE_WOOHOO WAVE "res\\sounds\\woohoo.wav"
IDR_WAVE_SHUTDOWN WAVE "res\\sounds\\shutdown.wav"
IDR_WAVE_BEEP WAVE "res\\sounds\\beep.wav"
IDR_WAVE_BEEP_LONG WAVE "res\\sounds\\beep2.wav"
IDR_WAVE_WAITING WAVE "res\\sounds\\waiting.wav"
IDR_WAVE_BLAST WAVE "res\\sounds\\blast.wav"
IDR_WAVE_TICK WAVE "res\\sounds\\tick.wav"
IDR_WAVE_DROP WAVE "res\\sounds\\drop.wav"
/////////////////////////////////////////////////////////////////////////////
//
// Icon
@ -134,7 +115,6 @@ IDI_ICON2 ICON "res\\FolderIcon.ico"
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
@ -144,4 +124,3 @@ IDI_ICON2 ICON "res\\FolderIcon.ico"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@ -412,6 +412,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClCompile Include="tmp\QRC_Icons.cpp" />
<ClCompile Include="tmp\QRC_Images.cpp" />
<ClCompile Include="tmp\QRC_Localization.cpp" />
<ClCompile Include="tmp\QRC_Sounds.cpp" />
<ClCompile Include="tmp\QRC_Tools_Decd.cpp" />
<ClCompile Include="tmp\QRC_Tools_Encd_A.cpp" />
<ClCompile Include="tmp\QRC_Tools_Encd_B.cpp" />
@ -1326,6 +1327,18 @@ del "$(TargetDir)imageformats\q???d4.dll"
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\QRC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\QRC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="res\Sounds.qrc">
<FileType>Document</FileType>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\QRC_%(Filename).cpp" -name "%(Filename)" "%(FullPath)"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RCC "$(SolutionDir)tmp\QRC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RCC "$(SolutionDir)tmp\QRC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">RCC "$(SolutionDir)tmp\QRC_%(Filename).cpp"</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\QRC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\QRC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\QRC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="LameXP.rc">

View File

@ -421,6 +421,9 @@
<ClCompile Include="src\Global_Zero.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="tmp\QRC_Sounds.cpp">
<Filter>Generated Files\QRC</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\Config.h">
@ -758,7 +761,12 @@
<CustomBuild Include="res\Tools_Misc_C.qrc">
<Filter>Resources</Filter>
</CustomBuild>
<CustomBuild Include="src\Thread_CheckUpdate.h" />
<CustomBuild Include="res\Sounds.qrc">
<Filter>Resources</Filter>
</CustomBuild>
<CustomBuild Include="src\Thread_CheckUpdate.h">
<Filter>Header Files</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="ReadMe.txt" />

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@
<context>
<name>MainWindow</name>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="773"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="778"/>
<source>%n file(s) have been rejected, because read access was not granted!</source>
<translation>
<numerusform>%n file have been rejected, because read access was not granted!</numerusform>
@ -39,7 +39,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="777"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="782"/>
<source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
<translation>
<numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
@ -47,7 +47,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="781"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="786"/>
<source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
<translation>
<numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
@ -55,7 +55,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="785"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="790"/>
<source>%n file(s) have been rejected, because the file format could not be recognized!</source>
<translation>
<numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
@ -63,7 +63,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_MainWindow.cpp" line="3845"/>
<location filename="../../src/Dialog_MainWindow.cpp" line="3846"/>
<source>%n Instance(s)</source>
<translation>
<numerusform>%n Instance</numerusform>
@ -74,7 +74,7 @@
<context>
<name>ProcessingDialog</name>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="668"/>
<location filename="../../src/Dialog_Processing.cpp" line="673"/>
<source>Encoding: %n file(s) of %1 completed so far, please wait...</source>
<translation>
<numerusform>Encoding: %n file of %1 completed so far, please wait...</numerusform>
@ -82,7 +82,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="700"/>
<location filename="../../src/Dialog_Processing.cpp" line="705"/>
<source>Process was aborted by the user after %n file(s)!</source>
<translation>
<numerusform>Process was aborted by the user after %n file!</numerusform>
@ -90,7 +90,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="729"/>
<location filename="../../src/Dialog_Processing.cpp" line="731"/>
<source>Error: %1 of %n file(s) failed (%2). Double-click failed items for detailed information!</source>
<translation>
<numerusform>Error: %1 of %n file failed (%2). Double-click failed items for detailed information!</numerusform>
@ -98,7 +98,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="729"/>
<location filename="../../src/Dialog_Processing.cpp" line="731"/>
<source>%n file(s) skipped</source>
<translation>
<numerusform>%n file skipped</numerusform>
@ -106,7 +106,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="733"/>
<location filename="../../src/Dialog_Processing.cpp" line="735"/>
<source>Error: %1 of %n file(s) failed. Double-click failed items for detailed information!</source>
<translation>
<numerusform>Error: %1 of %n file failed. Double-click failed items for detailed information!</numerusform>
@ -114,7 +114,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="747"/>
<location filename="../../src/Dialog_Processing.cpp" line="749"/>
<source>All files completed successfully. Skipped %n file(s).</source>
<translation>
<numerusform>All files completed successfully. Skipped %n file.</numerusform>
@ -122,7 +122,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="1171"/>
<location filename="../../src/Dialog_Processing.cpp" line="1170"/>
<source>%n hour(s)</source>
<translation>
<numerusform>%n hour</numerusform>
@ -130,8 +130,8 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="1172"/>
<location filename="../../src/Dialog_Processing.cpp" line="1176"/>
<location filename="../../src/Dialog_Processing.cpp" line="1171"/>
<location filename="../../src/Dialog_Processing.cpp" line="1175"/>
<source>%n minute(s)</source>
<translation>
<numerusform>%n minute</numerusform>
@ -139,8 +139,8 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="1177"/>
<location filename="../../src/Dialog_Processing.cpp" line="1181"/>
<location filename="../../src/Dialog_Processing.cpp" line="1176"/>
<location filename="../../src/Dialog_Processing.cpp" line="1180"/>
<source>%n second(s)</source>
<translation>
<numerusform>%n second</numerusform>
@ -148,7 +148,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../../src/Dialog_Processing.cpp" line="1182"/>
<location filename="../../src/Dialog_Processing.cpp" line="1181"/>
<source>%n millisecond(s)</source>
<translation>
<numerusform>%n millisecond</numerusform>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -143,13 +143,13 @@
<property name="minimumSize">
<size>
<width>48</width>
<height>45</height>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>45</height>
<height>48</height>
</size>
</property>
<property name="text">

18
res/Sounds.qrc Normal file
View File

@ -0,0 +1,18 @@
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource>
<file>sounds/aborted.wav</file>
<file>sounds/beep.wav</file>
<file>sounds/beep2.wav</file>
<file>sounds/blast.wav</file>
<file>sounds/drop.wav</file>
<file>sounds/error.wav</file>
<file>sounds/shutdown.wav</file>
<file>sounds/success.wav</file>
<file>sounds/tick.wav</file>
<file>sounds/uuaarrgh.wav</file>
<file>sounds/waiting.wav</file>
<file>sounds/whammy.wav</file>
<file>sounds/woohoo.wav</file>
</qresource>
</RCC>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 9
#define VER_LAMEXP_BUILD 1495
#define VER_LAMEXP_BUILD 1499
#define VER_LAMEXP_CONFG 1348
///////////////////////////////////////////////////////////////////////////////

View File

@ -25,7 +25,6 @@
#include "../tmp/UIC_AboutDialog.h"
#include "Global.h"
#include "Resource.h"
#include "Model_Settings.h"
#include <math.h>
@ -214,12 +213,12 @@ int AboutDialog::exec()
{
if(!lamexp_play_sound_file("imageres.dll", 5080, true))
{
lamexp_play_sound(0, true, L"SystemStart");
lamexp_play_sound_alias("SystemStart", true);
}
}
else
{
lamexp_play_sound(IDR_WAVE_ABOUT, true);
lamexp_play_sound("uuaarrgh", true);
}
}
@ -291,7 +290,7 @@ void AboutDialog::tabChanged(int index, const bool silent)
//Play tick sound
if(m_settings->soundsEnabled() && (!silent))
{
lamexp_play_sound(IDR_WAVE_TICK, true);
lamexp_play_sound("tick", true);
}
//Scroll to the top

View File

@ -27,7 +27,6 @@
//LameXP includes
#include "Global.h"
#include "Resource.h"
#include "Dialog_WorkingBanner.h"
#include "Dialog_MetaInfo.h"
#include "Dialog_About.h"
@ -193,6 +192,12 @@ while(0)
} \
while(0)
#define PLAY_SOUND_OPTIONAL(NAME, ASYNC) do \
{ \
if(m_settings->soundsEnabled()) lamexp_play_sound((NAME), (ASYNC)); \
} \
while(0)
#define LINK(URL) QString("<a href=\"%1\">%2</a>").arg(URL).arg(QString(URL).replace("-", "&minus;"))
#define FSLINK(PATH) QString("<a href=\"file:///%1\">%2</a>").arg(PATH).arg(QString(PATH).replace("-", "&minus;"))
#define CENTER_CURRENT_OUTPUT_FOLDER_DELAYED QTimer::singleShot(125, this, SLOT(centerOutputFolderModel()))
@ -1095,7 +1100,7 @@ void MainWindow::dropEvent(QDropEvent *event)
(*m_droppedFileList) << event->mimeData()->urls();
if(!m_droppedFileList->isEmpty())
{
if(m_settings->soundsEnabled()) lamexp_play_sound(IDR_WAVE_DROP, true);
PLAY_SOUND_OPTIONAL("drop", true);
QTimer::singleShot(0, this, SLOT(handleDroppedFiles()));
}
}
@ -1270,7 +1275,7 @@ void MainWindow::windowShown(void)
m_settings->licenseAccepted(++iAccepted);
m_settings->syncNow();
QApplication::processEvents();
lamexp_play_sound(IDR_WAVE_WHAMMY, false);
lamexp_play_sound("whammy", false);
QMessageBox::critical(this, tr("License Declined"), tr("You have declined the license. Consequently the application will exit now!"), tr("Goodbye!"));
QFileInfo uninstallerInfo = QFileInfo(QString("%1/Uninstall.exe").arg(QApplication::applicationDirPath()));
if(uninstallerInfo.exists())
@ -1286,7 +1291,7 @@ void MainWindow::windowShown(void)
return;
}
lamexp_play_sound(IDR_WAVE_WOOHOO, false);
lamexp_play_sound("woohoo", false);
m_settings->licenseAccepted(1);
m_settings->syncNow();
if(lamexp_version_demo()) showAnnounceBox();
@ -1298,7 +1303,7 @@ void MainWindow::windowShown(void)
if(lamexp_current_date_safe() >= lamexp_version_expires())
{
qWarning("Binary has expired !!!");
lamexp_play_sound(IDR_WAVE_WHAMMY, false);
lamexp_play_sound("whammy", false);
if(QMessageBox::warning(this, tr("LameXP - Expired"), QString("%1<br>%2").arg(NOBR(tr("This demo (pre-release) version of LameXP has expired at %1.").arg(lamexp_version_expires().toString(Qt::ISODate))), NOBR(tr("LameXP is free software and release versions won't expire."))), tr("Check for Updates"), tr("Exit Program")) == 0)
{
checkForUpdates();
@ -1340,7 +1345,7 @@ void MainWindow::windowShown(void)
return;
default:
QEventLoop loop; QTimer::singleShot(7000, &loop, SLOT(quit()));
lamexp_play_sound(IDR_WAVE_WAITING, true);
lamexp_play_sound("waiting", true);
SHOW_BANNER_ARG(tr("Skipping update check this time, please be patient..."), &loop);
break;
}
@ -1543,7 +1548,7 @@ void MainWindow::encodeButtonClicked(void)
{
QStringList tempFolderParts = tempFolder.split("/", QString::SkipEmptyParts, Qt::CaseInsensitive);
tempFolderParts.takeLast();
if(m_settings->soundsEnabled()) lamexp_play_sound(IDR_WAVE_WHAMMY, false);
PLAY_SOUND_OPTIONAL("whammy", false);
QString lowDiskspaceMsg = QString("%1<br>%2<br><br>%3<br>%4<br>").arg
(
NOBR(tr("There are less than %1 GB of free diskspace available on your system's TEMP folder.").arg(QString::number(minimumFreeDiskspaceMultiplier))),
@ -1649,9 +1654,9 @@ void MainWindow::tabPageChanged(int idx, const bool silent)
}
//Play tick sound
if(m_settings->soundsEnabled() && (!silent))
if(!silent)
{
lamexp_play_sound(IDR_WAVE_TICK, true);
PLAY_SOUND_OPTIONAL("tick", true);
}
int initialWidth = this->width();
@ -3496,11 +3501,7 @@ void MainWindow::compressionTabEventOccurred(QWidget *sender, QEvent *event)
}
else if((sender == ui->labelResetEncoders) && (event->type() == QEvent::MouseButtonPress))
{
if(m_settings->soundsEnabled())
{
lamexp_play_sound(IDR_WAVE_BLAST, true);
}
PLAY_SOUND_OPTIONAL("blast", true);
EncoderRegistry::resetAllEncoders(m_settings);
m_settings->compressionEncoder(SettingsModel::MP3Encoder);
ui->radioButtonEncoderMP3->setChecked(true);
@ -4024,10 +4025,7 @@ void MainWindow::overwriteModeChanged(int id)
*/
void MainWindow::resetAdvancedOptionsButtonClicked(void)
{
if(m_settings->soundsEnabled())
{
lamexp_play_sound(IDR_WAVE_BLAST, true);
}
PLAY_SOUND_OPTIONAL("blast", true);
ui->sliderLameAlgoQuality->setValue(m_settings->lameAlgoQualityDefault());
ui->spinBoxBitrateManagementMin->setValue(m_settings->bitrateManagementMinRateDefault());

View File

@ -26,7 +26,6 @@
#include "../tmp/UIC_ProcessingDialog.h"
#include "Global.h"
#include "Resource.h"
#include "Model_FileList.h"
#include "Model_Progress.h"
#include "Model_Settings.h"
@ -113,6 +112,12 @@ while(0)
} \
while(0)
#define PLAY_SOUND_OPTIONAL(NAME, ASYNC) do \
{ \
if(m_settings->soundsEnabled()) lamexp_play_sound((NAME), (ASYNC)); \
} \
while(0)
#define IS_VBR(RC_MODE) ((RC_MODE) == SettingsModel::VBRMode)
////////////////////////////////////////////////////////////
@ -694,17 +699,14 @@ void ProcessingDialog::doneEncoding(void)
if(m_userAborted)
{
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#FFF3BA"));
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#FFFFE0"));
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/error.png"));
SET_PROGRESS_TEXT((m_succeededJobs.count() > 0) ? tr("Process was aborted by the user after %n file(s)!", "", m_succeededJobs.count()) : tr("Process was aborted prematurely by the user!"));
m_systemTray->showMessage(tr("LameXP - Aborted"), tr("Process was aborted by the user."), QSystemTrayIcon::Warning);
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
if(m_settings->soundsEnabled() && (!m_forcedAbort))
{
lamexp_play_sound(IDR_WAVE_ABORTED, false);
}
if(!m_forcedAbort) PLAY_SOUND_OPTIONAL("aborted", false);
}
else
{
@ -721,7 +723,7 @@ void ProcessingDialog::doneEncoding(void)
if(m_failedJobs.count() > 0)
{
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#FFBABA"));
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#FFF0F0"));
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/exclamation.png"));
if(m_skippedJobs.count() > 0)
@ -735,11 +737,11 @@ void ProcessingDialog::doneEncoding(void)
m_systemTray->showMessage(tr("LameXP - Error"), tr("At least one file has failed!"), QSystemTrayIcon::Critical);
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
if(m_settings->soundsEnabled()) lamexp_play_sound(IDR_WAVE_ERROR, false);
PLAY_SOUND_OPTIONAL("error", false);
}
else
{
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#E0FFE2"));
CHANGE_BACKGROUND_COLOR(ui->frame_header, QColor("#F0FFF0"));
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarNormalState);
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/accept.png"));
if(m_skippedJobs.count() > 0)
@ -753,7 +755,7 @@ void ProcessingDialog::doneEncoding(void)
m_systemTray->showMessage(tr("LameXP - Done"), tr("All files completed successfully."), QSystemTrayIcon::Information);
m_systemTray->setIcon(QIcon(":/icons/cd_add.png"));
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
if(m_settings->soundsEnabled()) lamexp_play_sound(IDR_WAVE_SUCCESS, false);
PLAY_SOUND_OPTIONAL("success", false);
}
}
@ -1123,12 +1125,9 @@ bool ProcessingDialog::shutdownComputer(void)
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
if(m_settings->soundsEnabled())
{
QApplication::setOverrideCursor(Qt::WaitCursor);
lamexp_play_sound(IDR_WAVE_SHUTDOWN, false);
PLAY_SOUND_OPTIONAL("shutdown", false);
QApplication::restoreOverrideCursor();
}
QTimer timer;
timer.setInterval(1000);
@ -1150,7 +1149,7 @@ bool ProcessingDialog::shutdownComputer(void)
progressDialog.setLabelText(text.arg(iTimeout-i));
if(iTimeout-i == 3) progressDialog.setCancelButton(NULL);
qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
lamexp_play_sound(((i < iTimeout) ? IDR_WAVE_BEEP : IDR_WAVE_BEEP_LONG), false);
PLAY_SOUND_OPTIONAL(((i < iTimeout) ? "beep" : "beep2"), false);
}
progressDialog.close();

View File

@ -27,7 +27,6 @@
//LameXP includes
#include "Global.h"
#include "Resource.h"
#include "Thread_CheckUpdate.h"
#include "Dialog_LogView.h"
#include "Model_Settings.h"
@ -338,7 +337,7 @@ void UpdateDialog::threadFinished(void)
if(!bSuccess)
{
if(m_settings->soundsEnabled()) lamexp_play_sound(IDR_WAVE_ERROR, true);
if(m_settings->soundsEnabled()) lamexp_play_sound("error", true);
}
else
{

View File

@ -89,9 +89,9 @@ WorkingBanner::WorkingBanner(QWidget *parent)
{
m_style = new QWindowsVistaStyle();
this->setStyle(m_style);
ui->labelStatus->setStyle(m_style);
ui->progressBar->setStyle(m_style);
ui->labelStatus->setStyleSheet("background-color: rgb(255, 255, 255);");
ui->labelStatus->setStyle(m_style);
ui->labelStatus->setStyleSheet("background-color: #FFFFFF;");
}
else
{
@ -99,7 +99,6 @@ WorkingBanner::WorkingBanner(QWidget *parent)
m_working = new QMovie(":/images/Busy.gif");
m_working->setCacheMode(QMovie::CacheAll);
ui->labelWorking->setMovie(m_working);
m_working->start();
}
//Set Opacity
@ -256,9 +255,29 @@ bool WorkingBanner::winEvent(MSG *message, long *result)
void WorkingBanner::showEvent(QShowEvent *event)
{
QDialog::showEvent(event);
if(!event->spontaneous())
{
if(m_working)
{
m_working->start();
}
}
QTimer::singleShot(25, this, SLOT(windowShown()));
}
void WorkingBanner::hideEvent(QHideEvent *event)
{
QDialog::hideEvent(event);
if(!event->spontaneous())
{
if(m_working)
{
m_working->stop();
}
}
}
////////////////////////////////////////////////////////////
// SLOTS
////////////////////////////////////////////////////////////

View File

@ -69,6 +69,7 @@ protected:
virtual void closeEvent(QCloseEvent *event);
virtual bool winEvent(MSG *message, long *result);
virtual void showEvent(QShowEvent *event);
virtual void hideEvent(QHideEvent *event);
QFontMetrics *m_metrics;
QStyle *m_style;

View File

@ -197,8 +197,9 @@ bool lamexp_open_media_file(const QString &mediaFilePath);
QString lamexp_path_to_short(const QString &longPath);
__int64 lamexp_perfcounter_frequ(void);
__int64 lamexp_perfcounter_value(void);
bool lamexp_play_sound(const unsigned short uiSoundIdx, const bool bAsync, const wchar_t *alias = NULL);
bool lamexp_play_sound(const QString &name, const bool bAsync);
bool lamexp_play_sound_file(const QString &library, const unsigned short uiSoundIdx, const bool bAsync);
bool lamexp_play_sound_alias(const QString &alias, const bool bAsync);
bool lamexp_portable_mode(void);
unsigned long lamexp_process_id(const QProcess *proc);
QStringList lamexp_query_translations(void);

View File

@ -61,6 +61,7 @@
#include <QTimer>
#include <QTranslator>
#include <QUuid>
#include <QResource>
//LameXP includes
#define LAMEXP_INC_CONFIG
@ -190,6 +191,14 @@ static struct
}
g_lamexp_dwmapi;
//Sound file cache
static struct
{
QHash<const QString, const unsigned char*> *sound_db;
QReadWriteLock lock;
}
g_lamexp_sounds;
//Image formats
static const char *g_lamexp_imageformats[] = {"bmp", "png", "jpg", "gif", "ico", "xpm", NULL}; //"svg"
@ -1537,45 +1546,85 @@ bool lamexp_beep(int beepType)
/*
* Play a sound (from resources)
*/
bool lamexp_play_sound(const unsigned short uiSoundIdx, const bool bAsync, const wchar_t *alias)
bool lamexp_play_sound(const QString &name, const bool bAsync)
{
if(alias)
const unsigned char *data = NULL;
//Try to look-up the sound in the cache first
if(!name.isEmpty())
{
return PlaySound(alias, GetModuleHandle(NULL), (SND_ALIAS | (bAsync ? SND_ASYNC : SND_SYNC))) == TRUE;
}
else
QReadLocker readLock(&g_lamexp_sounds.lock);
if(g_lamexp_sounds.sound_db && g_lamexp_sounds.sound_db->contains(name))
{
return PlaySound(MAKEINTRESOURCE(uiSoundIdx), GetModuleHandle(NULL), (SND_RESOURCE | (bAsync ? SND_ASYNC : SND_SYNC))) == TRUE;
data = g_lamexp_sounds.sound_db->value(name);
}
}
//If data not found in cache, try to load from resource!
if((!data) && (!name.isEmpty()))
{
QResource resource(QString(":/sounds/%1.wav").arg(name));
if(resource.isValid() && (data = resource.data()))
{
QWriteLocker writeLock(&g_lamexp_sounds.lock);
if(!g_lamexp_sounds.sound_db)
{
g_lamexp_sounds.sound_db = new QHash<const QString, const unsigned char*>();
}
g_lamexp_sounds.sound_db->insert(name, data);
}
else
{
qWarning("Sound effect \"%s\" not found!", QUTF8(name));
}
}
//Play the sound, if availbale
if(data)
{
return PlaySound(LPCWSTR(data), NULL, (SND_MEMORY | (bAsync ? SND_ASYNC : SND_SYNC))) != FALSE;
}
return false;
}
/*
* Play a sound (from resources)
* Play a sound (system alias)
*/
bool lamexp_play_sound_alias(const QString &alias, const bool bAsync)
{
return PlaySound(QWCHAR(alias), GetModuleHandle(NULL), (SND_ALIAS | (bAsync ? SND_ASYNC : SND_SYNC))) != FALSE;
}
/*
* Play a sound (from external DLL)
*/
bool lamexp_play_sound_file(const QString &library, const unsigned short uiSoundIdx, const bool bAsync)
{
bool result = false;
HMODULE module = NULL;
QFileInfo libraryFile(library);
if(!libraryFile.isAbsolute())
{
unsigned int buffSize = GetSystemDirectoryW(NULL, NULL) + 1;
wchar_t *buffer = (wchar_t*) _malloca(buffSize * sizeof(wchar_t));
unsigned int result = GetSystemDirectory(buffer, buffSize);
if(result > 0 && result < buffSize)
const QString &systemDir = lamexp_known_folder(lamexp_folder_systemfolder);
if(!systemDir.isEmpty())
{
libraryFile.setFile(QString("%1/%2").arg(QDir::fromNativeSeparators(QString::fromUtf16(reinterpret_cast<const unsigned short*>(buffer))), library));
libraryFile.setFile(QDir(systemDir), libraryFile.fileName());
}
_freea(buffer);
}
module = LoadLibraryW(QWCHAR(QDir::toNativeSeparators(libraryFile.absoluteFilePath())));
if(module)
if(libraryFile.exists() && libraryFile.isFile())
{
result = (PlaySound(MAKEINTRESOURCE(uiSoundIdx), module, (SND_RESOURCE | (bAsync ? SND_ASYNC : SND_SYNC))) == TRUE);
if(HMODULE module = LoadLibraryW(QWCHAR(QDir::toNativeSeparators(libraryFile.canonicalFilePath()))))
{
result = (PlaySound(MAKEINTRESOURCE(uiSoundIdx), module, (SND_RESOURCE | (bAsync ? SND_ASYNC : SND_SYNC))) != FALSE);
FreeLibrary(module);
}
}
else
{
qWarning("PlaySound: File \"%s\" could not be found!", QUTF8(libraryFile.absoluteFilePath()));
}
return result;
}
@ -2202,6 +2251,7 @@ extern "C" void _lamexp_global_init_win32(void)
LAMEXP_ZERO_MEMORY(g_lamexp_wine);
LAMEXP_ZERO_MEMORY(g_lamexp_themes_enabled);
LAMEXP_ZERO_MEMORY(g_lamexp_dwmapi);
LAMEXP_ZERO_MEMORY(g_lamexp_sounds);
}
///////////////////////////////////////////////////////////////////////////////
@ -2245,6 +2295,9 @@ extern "C" void _lamexp_global_free_win32(void)
g_lamexp_log_file = NULL;
}
//Clear sound cache
LAMEXP_DELETE(g_lamexp_sounds.sound_db);
//Free CLI Arguments
LAMEXP_DELETE(g_lamexp_argv.list);
}

View File

@ -25,19 +25,6 @@
*/
#define IDI_ICON1 106
#define IDI_ICON2 107
#define IDR_WAVE_ABOUT 666
#define IDR_WAVE_SUCCESS 667
#define IDR_WAVE_ERROR 668
#define IDR_WAVE_ABORTED 669
#define IDR_WAVE_WHAMMY 670
#define IDR_WAVE_WOOHOO 671
#define IDR_WAVE_SHUTDOWN 672
#define IDR_WAVE_BEEP 673
#define IDR_WAVE_BEEP_LONG 674
#define IDR_WAVE_WAITING 675
#define IDR_WAVE_BLAST 676
#define IDR_WAVE_TICK 677
#define IDR_WAVE_DROP 678
/*
* Next default values for new objects