Index: src/ch/FeedbackHandler.cpp =================================================================== diff -u -N -rd5c3edd0d167db9b5d47d04248820fda49499a5e -r9c71c0a84781c524c0091ee86914d5cc3bbf5190 --- src/ch/FeedbackHandler.cpp (.../FeedbackHandler.cpp) (revision d5c3edd0d167db9b5d47d04248820fda49499a5e) +++ src/ch/FeedbackHandler.cpp (.../FeedbackHandler.cpp) (revision 9c71c0a84781c524c0091ee86914d5cc3bbf5190) @@ -21,6 +21,8 @@ #include "FeedbackReplaceDlg.h" #include "FeedbackFileErrorDlg.h" #include "FeedbackNotEnoughSpaceDlg.h" +#include "ch.h" +#include "mmsystem.h" CFeedbackHandler::CFeedbackHandler() : chcore::IFeedbackHandler() @@ -35,8 +37,8 @@ ull_t CFeedbackHandler::RequestFeedback(ull_t ullFeedbackID, ptr_t pFeedbackParam) { - BOOST_ASSERT(pFeedbackParam && ullFeedbackID < eFT_LastType); - if(!pFeedbackParam || ullFeedbackID >= eFT_LastType) + BOOST_ASSERT(ullFeedbackID < eFT_LastType); + if(ullFeedbackID >= eFT_LastType) return eResult_Unknown; // if we have an action selected for this type (e.g. by selecting 'use for all items') @@ -50,6 +52,10 @@ { case eFT_FileAlreadyExists: { + BOOST_ASSERT(pFeedbackParam); + if(!pFeedbackParam) + return eResult_Unknown; + FEEDBACK_ALREADYEXISTS* pData = (FEEDBACK_ALREADYEXISTS*)pFeedbackParam; CFeedbackReplaceDlg dlg(pData->pfiSrc, pData->pfiDst); eFeedbackResult = (EFeedbackResult)dlg.DoModal(); @@ -59,6 +65,10 @@ } case eFT_FileError: { + BOOST_ASSERT(pFeedbackParam); + if(!pFeedbackParam) + return eResult_Unknown; + FEEDBACK_FILEERROR* pData = (FEEDBACK_FILEERROR*)pFeedbackParam; CFeedbackFileErrorDlg dlg(pData->pszPath, pData->ulError); eFeedbackResult = (EFeedbackResult)dlg.DoModal(); @@ -68,13 +78,43 @@ } case eFT_NotEnoughSpace: { + BOOST_ASSERT(pFeedbackParam); + if(!pFeedbackParam) + return eResult_Unknown; + FEEDBACK_NOTENOUGHSPACE* pData = (FEEDBACK_NOTENOUGHSPACE*)pFeedbackParam; CFeedbackNotEnoughSpaceDlg dlg(pData->ullRequiredSize, pData->pszSrcPath, pData->pszDstPath); eFeedbackResult = (EFeedbackResult)dlg.DoModal(); bUseForAllItems = dlg.m_bAllItems; break; } + case eFT_OperationFinished: + { + if(GetConfig().get_bool(PP_SNDPLAYSOUNDS)) + { + TCHAR* pszPath = new TCHAR[_MAX_PATH]; + GetConfig().get_string(PP_SNDFINISHEDSOUNDPATH, pszPath, _MAX_PATH); + GetApp().ExpandPath(pszPath); + PlaySound(pszPath, NULL, SND_FILENAME | SND_ASYNC); + delete [] pszPath; + } + + break; + } + case eFT_OperationError: + { + if(GetConfig().get_bool(PP_SNDPLAYSOUNDS)) + { + TCHAR* pszPath = new TCHAR[_MAX_PATH]; + GetConfig().get_string(PP_SNDERRORSOUNDPATH, pszPath, _MAX_PATH); + GetApp().ExpandPath(pszPath); + PlaySound(pszPath, NULL, SND_FILENAME | SND_ASYNC); + delete [] pszPath; + } + + break; + } default: BOOST_ASSERT(false); return eResult_Unknown;