Bläddra i källkod

Bug 1444: Custom sound for "Beep when work finishes"

https://winscp.net/tracker/1444

Source commit: 89dd34d8fbd15cbfcdf0e9ded47e15260ed5500c
Martin Prikryl 9 år sedan
förälder
incheckning
7dd3e3bd9d

+ 11 - 1
source/forms/CustomScpExplorer.cpp

@@ -1376,7 +1376,17 @@ void __fastcall TCustomScpExplorerForm::OperationComplete(
   if (GUIConfiguration->BeepOnFinish &&
       (Now() - StartTime > GUIConfiguration->BeepOnFinishAfter))
   {
-    MessageBeep(MB_OK);
+    UnicodeString BeepSound = GUIConfiguration->BeepSound;
+    DWORD Sound;
+    if (!ExtractFileExt(BeepSound).IsEmpty())
+    {
+      Sound = SND_FILENAME;
+    }
+    else
+    {
+      Sound = SND_ALIAS;
+    }
+    PlaySound(BeepSound.c_str(), NULL, Sound | SND_ASYNC);
   }
 }
 //---------------------------------------------------------------------------

+ 2 - 0
source/windows/GUIConfiguration.cpp

@@ -568,6 +568,7 @@ void __fastcall TGUIConfiguration::Default()
   FPuttySession = L"WinSCP temporary session";
   FBeepOnFinish = false;
   FBeepOnFinishAfter = TDateTime(0, 0, 30, 0);
+  FBeepSound = L"SystemDefault";
   FCopyParamCurrent = L"";
   FKeepUpToDateChangeDelay = 500;
   FChecksumAlg = L"sha1";
@@ -643,6 +644,7 @@ void __fastcall TGUIConfiguration::UpdateStaticUsage()
     KEY(DateTime, IgnoreCancelBeforeFinish); \
     KEY(Bool,     BeepOnFinish); \
     KEY(DateTime, BeepOnFinishAfter); \
+    KEY(String,   BeepSound); \
     KEY(Integer,  KeepUpToDateChangeDelay); \
     KEY(String,   ChecksumAlg); \
     KEY(Integer,  SessionReopenAutoIdle); \

+ 2 - 0
source/windows/GUIConfiguration.h

@@ -169,6 +169,7 @@ private:
   TGUICopyParamType FDefaultCopyParam;
   bool FBeepOnFinish;
   TDateTime FBeepOnFinishAfter;
+  UnicodeString FBeepSound;
   UnicodeString FDefaultPuttyPathOnly;
   UnicodeString FDefaultPuttyPath;
   TCopyParamList * FCopyParamList;
@@ -256,6 +257,7 @@ public:
   __property TGUICopyParamType DefaultCopyParam = { read = FDefaultCopyParam, write = SetDefaultCopyParam };
   __property bool BeepOnFinish = { read = FBeepOnFinish, write = FBeepOnFinish };
   __property TDateTime BeepOnFinishAfter = { read = FBeepOnFinishAfter, write = FBeepOnFinishAfter };
+  __property UnicodeString BeepSound = { read = FBeepSound, write = FBeepSound };
   __property const TCopyParamList * CopyParamList = { read = GetCopyParamList, write = SetCopyParamList };
   __property UnicodeString CopyParamCurrent = { read = FCopyParamCurrent, write = SetCopyParamCurrent };
   __property int CopyParamIndex = { read = GetCopyParamIndex, write = SetCopyParamIndex };