summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/stdauth/src/auth.cpp8
-rw-r--r--src/core/stdfile/src/file.cpp10
-rw-r--r--src/core/stdfile/src/filerecvdlg.cpp2
-rw-r--r--src/core/stdfile/src/filexferdlg.cpp6
-rw-r--r--src/core/stdmsg/src/globals.cpp2
-rw-r--r--src/core/stdmsg/src/msgdialog.cpp4
-rw-r--r--src/core/stdmsg/src/msgs.cpp24
-rw-r--r--src/core/stdmsg/src/msgtimedout.cpp2
-rw-r--r--src/core/stduseronline/src/useronline.cpp4
-rw-r--r--src/mir_app/src/button.cpp2
-rw-r--r--src/mir_app/src/chat_opts.cpp22
-rw-r--r--src/mir_app/src/chat_tools.cpp22
-rw-r--r--src/mir_app/src/mir_app.def3
-rw-r--r--src/mir_app/src/mir_app64.def3
-rw-r--r--src/mir_app/src/sounds.cpp104
15 files changed, 101 insertions, 117 deletions
diff --git a/src/core/stdauth/src/auth.cpp b/src/core/stdauth/src/auth.cpp
index e7074b4dbb..7b5b3ae59b 100644
--- a/src/core/stdauth/src/auth.cpp
+++ b/src/core/stdauth/src/auth.cpp
@@ -68,7 +68,7 @@ static int AuthEventAdded(WPARAM, LPARAM lParam)
ptrW szUid(Contact_GetInfo(CNF_UNIQUEID, hContact));
if (dbei.eventType == EVENTTYPE_AUTHREQUEST) {
- SkinPlaySound("AuthRequest");
+ Skin_PlaySound("AuthRequest");
if (szUid)
mir_snwprintf(szTooltip, TranslateT("%s requests authorization"), szUid);
else
@@ -79,7 +79,7 @@ static int AuthEventAdded(WPARAM, LPARAM lParam)
pcli->pfnAddEvent(&cli);
}
else if (dbei.eventType == EVENTTYPE_ADDED) {
- SkinPlaySound("AddedEvent");
+ Skin_PlaySound("AddedEvent");
if (szUid)
mir_snwprintf(szTooltip, TranslateT("%s added you to their contact list"), szUid);
else
@@ -98,7 +98,7 @@ int LoadSendRecvAuthModule(void)
CreateServiceFunction(MS_AUTH_SHOWADDED, ShowAddedWindow);
HookEvent(ME_DB_EVENT_ADDED, AuthEventAdded);
- SkinAddNewSoundEx("AuthRequest", LPGEN("Alerts"), LPGEN("Authorization request"));
- SkinAddNewSoundEx("AddedEvent", LPGEN("Alerts"), LPGEN("Added event"));
+ Skin_AddSound("AuthRequest", LPGENW("Alerts"), LPGENW("Authorization request"));
+ Skin_AddSound("AddedEvent", LPGENW("Alerts"), LPGENW("Added event"));
return 0;
}
diff --git a/src/core/stdfile/src/file.cpp b/src/core/stdfile/src/file.cpp
index bc68940dd9..3d391dd7a7 100644
--- a/src/core/stdfile/src/file.cpp
+++ b/src/core/stdfile/src/file.cpp
@@ -105,7 +105,7 @@ void PushFileEvent(MCONTACT hContact, MEVENT hdbe, LPARAM lParam)
CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_FILERECV), NULL, DlgProcRecvFile, (LPARAM)&cle);
}
else {
- SkinPlaySound("RecvFile");
+ Skin_PlaySound("RecvFile");
wchar_t szTooltip[256];
mir_snwprintf(szTooltip, TranslateT("File from %s"), pcli->pfnGetContactDisplayName(hContact, 0));
@@ -443,9 +443,9 @@ int LoadSendRecvFileModule(void)
CreateServiceFunction("SRFile/OpenContRecDir", openContRecDir);
CreateServiceFunction("SRFile/OpenRecDir", openRecDir);
- SkinAddNewSoundEx("RecvFile", LPGEN("File"), LPGEN("Incoming"));
- SkinAddNewSoundEx("FileDone", LPGEN("File"), LPGEN("Complete"));
- SkinAddNewSoundEx("FileFailed", LPGEN("File"), LPGEN("Error"));
- SkinAddNewSoundEx("FileDenied", LPGEN("File"), LPGEN("Denied"));
+ Skin_AddSound("RecvFile", LPGENW("File"), LPGENW("Incoming"));
+ Skin_AddSound("FileDone", LPGENW("File"), LPGENW("Complete"));
+ Skin_AddSound("FileFailed", LPGENW("File"), LPGENW("Error"));
+ Skin_AddSound("FileDenied", LPGENW("File"), LPGENW("Denied"));
return 0;
}
diff --git a/src/core/stdfile/src/filerecvdlg.cpp b/src/core/stdfile/src/filerecvdlg.cpp
index 7a9edaad87..5f6baa2e04 100644
--- a/src/core/stdfile/src/filerecvdlg.cpp
+++ b/src/core/stdfile/src/filerecvdlg.cpp
@@ -388,7 +388,7 @@ INT_PTR CALLBACK DlgProcRecvFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
EnableWindow(GetDlgItem(hwndDlg, IDC_FILEDIR), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_FILEDIRBROWSE), FALSE);
SetDlgItemText(hwndDlg, IDC_MSG, TranslateT("This file transfer has been canceled by the other side"));
- SkinPlaySound("FileDenied");
+ Skin_PlaySound("FileDenied");
FlashWindow(hwndDlg, TRUE);
}
else if (ack->result != ACKRESULT_FILERESUME)
diff --git a/src/core/stdfile/src/filexferdlg.cpp b/src/core/stdfile/src/filexferdlg.cpp
index ed875004c1..d3499bfcb8 100644
--- a/src/core/stdfile/src/filexferdlg.cpp
+++ b/src/core/stdfile/src/filexferdlg.cpp
@@ -624,16 +624,16 @@ INT_PTR CALLBACK DlgProcFileTransfer(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
if (ack->result == ACKRESULT_DENIED) {
dat->fs = NULL; /* protocol will free structure */
- SkinPlaySound("FileDenied");
+ Skin_PlaySound("FileDenied");
SetFtStatus(hwndDlg, LPGENW("File transfer denied"), FTS_TEXT);
}
else if (ack->result == ACKRESULT_FAILED) {
dat->fs = NULL; /* protocol will free structure */
- SkinPlaySound("FileFailed");
+ Skin_PlaySound("FileFailed");
SetFtStatus(hwndDlg, LPGENW("File transfer failed"), FTS_TEXT);
}
else {
- SkinPlaySound("FileDone");
+ Skin_PlaySound("FileDone");
if (dat->send) {
dat->fs = NULL; /* protocol will free structure */
SetFtStatus(hwndDlg, LPGENW("Transfer completed."), FTS_TEXT);
diff --git a/src/core/stdmsg/src/globals.cpp b/src/core/stdmsg/src/globals.cpp
index 4675677588..661837a1b2 100644
--- a/src/core/stdmsg/src/globals.cpp
+++ b/src/core/stdmsg/src/globals.cpp
@@ -87,7 +87,7 @@ static int ackevent(WPARAM, LPARAM lParam)
msgQueue_processack(pAck->hContact, (INT_PTR)pAck->hProcess, pAck->result == ACKRESULT_SUCCESS, (char*)pAck->lParam);
if (pAck->result == ACKRESULT_SUCCESS)
- SkinPlaySound("SendMsg");
+ Skin_PlaySound("SendMsg");
}
return 0;
}
diff --git a/src/core/stdmsg/src/msgdialog.cpp b/src/core/stdmsg/src/msgdialog.cpp
index 7f418e285d..e3834976ff 100644
--- a/src/core/stdmsg/src/msgdialog.cpp
+++ b/src/core/stdmsg/src/msgdialog.cpp
@@ -1148,9 +1148,9 @@ INT_PTR CSrmmWindow::DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
// Sounds *only* for sent messages, not for custom events
if (isMessage && !isSent) {
if (GetForegroundWindow() == m_pOwner->GetHwnd())
- SkinPlaySound("RecvMsgActive");
+ Skin_PlaySound("RecvMsgActive");
else
- SkinPlaySound("RecvMsgInactive");
+ Skin_PlaySound("RecvMsgInactive");
}
if (isMessage && !isSent) {
m_lastMessage = dbei.timestamp;
diff --git a/src/core/stdmsg/src/msgs.cpp b/src/core/stdmsg/src/msgs.cpp
index 7df2891d00..1b2fa2a775 100644
--- a/src/core/stdmsg/src/msgs.cpp
+++ b/src/core/stdmsg/src/msgs.cpp
@@ -72,18 +72,18 @@ static int MessageEventAdded(WPARAM hContact, LPARAM lParam)
ShowWindow(hwnd, SW_RESTORE);
SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
SetForegroundWindow(hwnd);
- SkinPlaySound("RecvMsgActive");
+ Skin_PlaySound("RecvMsgActive");
}
else {
if (GetForegroundWindow() == GetParent(hwnd))
- SkinPlaySound("RecvMsgActive");
+ Skin_PlaySound("RecvMsgActive");
else
- SkinPlaySound("RecvMsgInactive");
+ Skin_PlaySound("RecvMsgInactive");
}
return 0;
}
/* new message */
- SkinPlaySound("AlertMsg");
+ Skin_PlaySound("AlertMsg");
char *szProto = GetContactProto(hContact);
if (szProto && (g_dat.openFlags & SRMMStatusToPf2(CallProtoService(szProto, PS_GETSTATUS, 0, 0)))) {
@@ -164,7 +164,7 @@ static int TypingMessage(WPARAM hContact, LPARAM lParam)
hContact = db_mc_tryMeta(hContact);
- SkinPlaySound((lParam) ? "TNStart" : "TNStop");
+ Skin_PlaySound((lParam) ? "TNStart" : "TNStop");
HWND hwnd = Srmm_FindWindow(hContact);
if (hwnd)
@@ -511,13 +511,13 @@ int LoadSendRecvMessageModule(void)
CreateServiceFunction(MS_MSG_SENDMESSAGEW, SendMessageCommand_W);
CreateServiceFunction(MS_MSG_READMESSAGE, ReadMessageCommand);
- SkinAddNewSoundEx("RecvMsgActive", LPGEN("Instant messages"), LPGEN("Incoming (focused window)"));
- SkinAddNewSoundEx("RecvMsgInactive", LPGEN("Instant messages"), LPGEN("Incoming (unfocused window)"));
- SkinAddNewSoundEx("AlertMsg", LPGEN("Instant messages"), LPGEN("Incoming (new session)"));
- SkinAddNewSoundEx("SendMsg", LPGEN("Instant messages"), LPGEN("Outgoing"));
- SkinAddNewSoundEx("SendError", LPGEN("Instant messages"), LPGEN("Message send error"));
- SkinAddNewSoundEx("TNStart", LPGEN("Instant messages"), LPGEN("Contact started typing"));
- SkinAddNewSoundEx("TNStop", LPGEN("Instant messages"), LPGEN("Contact stopped typing"));
+ Skin_AddSound("RecvMsgActive", LPGENW("Instant messages"), LPGENW("Incoming (focused window)"));
+ Skin_AddSound("RecvMsgInactive", LPGENW("Instant messages"), LPGENW("Incoming (unfocused window)"));
+ Skin_AddSound("AlertMsg", LPGENW("Instant messages"), LPGENW("Incoming (new session)"));
+ Skin_AddSound("SendMsg", LPGENW("Instant messages"), LPGENW("Outgoing"));
+ Skin_AddSound("SendError", LPGENW("Instant messages"), LPGENW("Message send error"));
+ Skin_AddSound("TNStart", LPGENW("Instant messages"), LPGENW("Contact started typing"));
+ Skin_AddSound("TNStop", LPGENW("Instant messages"), LPGENW("Contact stopped typing"));
InitStatusIcons();
return 0;
diff --git a/src/core/stdmsg/src/msgtimedout.cpp b/src/core/stdmsg/src/msgtimedout.cpp
index 7596198ce5..e0ce1ad97c 100644
--- a/src/core/stdmsg/src/msgtimedout.cpp
+++ b/src/core/stdmsg/src/msgtimedout.cpp
@@ -93,7 +93,7 @@ void MessageFailureProcess(TMsgQueue *item, const char* err)
}
else SendMessage(hwnd, DM_REMAKELOG, 0, 0);
- SkinPlaySound("SendError");
+ Skin_PlaySound("SendError");
ErrorDlgParam param = { err, item };
CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSGSENDERROR), hwnd, ErrorDlgProc, (LPARAM)&param);
diff --git a/src/core/stduseronline/src/useronline.cpp b/src/core/stduseronline/src/useronline.cpp
index 3ac251408d..b7ff2473b0 100644
--- a/src/core/stduseronline/src/useronline.cpp
+++ b/src/core/stduseronline/src/useronline.cpp
@@ -65,7 +65,7 @@ static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam)
pcli->pfnAddEvent(&cle);
IcoLib_ReleaseIcon(cle.hIcon, 0);
db_set_dw(cle.hContact, "UserOnline", "LastEvent", (DWORD)cle.hDbEvent);
- SkinPlaySound("UserOnline");
+ Skin_PlaySound("UserOnline");
}
}
}
@@ -117,6 +117,6 @@ int LoadUserOnlineModule(void)
HookEvent(ME_PROTO_ACK, UserOnlineAck);
HookEvent(ME_SYSTEM_MODULESLOADED, UserOnlineModulesLoaded);
HookEvent(ME_PROTO_ACCLISTCHANGED, UserOnlineAccountsChanged);
- SkinAddNewSoundEx("UserOnline", LPGEN("Alerts"), LPGEN("Online"));
+ Skin_AddSound("UserOnline", LPGENW("Alerts"), LPGENW("Online"));
return 0;
}
diff --git a/src/mir_app/src/button.cpp b/src/mir_app/src/button.cpp
index ba0b4e8714..a39b55e5ce 100644
--- a/src/mir_app/src/button.cpp
+++ b/src/mir_app/src/button.cpp
@@ -37,7 +37,7 @@ struct TTooltips
static LIST<TTooltips> lToolTips(1, NumericKeySortT);
static mir_cs csTips;
-static BOOL bModuleInitialized = FALSE;
+static bool bModuleInitialized = false;
// Used for our own cheap TrackMouseEvent
#define BUTTON_POLLID 100
diff --git a/src/mir_app/src/chat_opts.cpp b/src/mir_app/src/chat_opts.cpp
index 1b31dae8f5..98ea06b72c 100644
--- a/src/mir_app/src/chat_opts.cpp
+++ b/src/mir_app/src/chat_opts.cpp
@@ -323,17 +323,17 @@ int OptionsInit(void)
g_Settings->iWidth = db_get_dw(0, CHAT_MODULE, "roomwidth", -1);
g_Settings->iHeight = db_get_dw(0, CHAT_MODULE, "roomheight", -1);
- SkinAddNewSoundEx("ChatMessage", LPGEN("Group chats"), LPGEN("Incoming message"));
- SkinAddNewSoundEx("ChatHighlight", LPGEN("Group chats"), LPGEN("Message is highlighted"));
- SkinAddNewSoundEx("ChatAction", LPGEN("Group chats"), LPGEN("User has performed an action"));
- SkinAddNewSoundEx("ChatJoin", LPGEN("Group chats"), LPGEN("User has joined"));
- SkinAddNewSoundEx("ChatPart", LPGEN("Group chats"), LPGEN("User has left"));
- SkinAddNewSoundEx("ChatKick", LPGEN("Group chats"), LPGEN("User has kicked some other user"));
- SkinAddNewSoundEx("ChatMode", LPGEN("Group chats"), LPGEN("User's status was changed"));
- SkinAddNewSoundEx("ChatNick", LPGEN("Group chats"), LPGEN("User has changed name"));
- SkinAddNewSoundEx("ChatNotice", LPGEN("Group chats"), LPGEN("User has sent a notice"));
- SkinAddNewSoundEx("ChatQuit", LPGEN("Group chats"), LPGEN("User has disconnected"));
- SkinAddNewSoundEx("ChatTopic", LPGEN("Group chats"), LPGEN("The topic has been changed"));
+ Skin_AddSound("ChatMessage", LPGENW("Group chats"), LPGENW("Incoming message"));
+ Skin_AddSound("ChatHighlight", LPGENW("Group chats"), LPGENW("Message is highlighted"));
+ Skin_AddSound("ChatAction", LPGENW("Group chats"), LPGENW("User has performed an action"));
+ Skin_AddSound("ChatJoin", LPGENW("Group chats"), LPGENW("User has joined"));
+ Skin_AddSound("ChatPart", LPGENW("Group chats"), LPGENW("User has left"));
+ Skin_AddSound("ChatKick", LPGENW("Group chats"), LPGENW("User has kicked some other user"));
+ Skin_AddSound("ChatMode", LPGENW("Group chats"), LPGENW("User's status was changed"));
+ Skin_AddSound("ChatNick", LPGENW("Group chats"), LPGENW("User has changed name"));
+ Skin_AddSound("ChatNotice", LPGENW("Group chats"), LPGENW("User has sent a notice"));
+ Skin_AddSound("ChatQuit", LPGENW("Group chats"), LPGENW("User has disconnected"));
+ Skin_AddSound("ChatTopic", LPGENW("Group chats"), LPGENW("The topic has been changed"));
return 0;
}
diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp
index 2b0ccdde6b..1bffbfb6a3 100644
--- a/src/mir_app/src/chat_tools.cpp
+++ b/src/mir_app/src/chat_tools.cpp
@@ -280,7 +280,7 @@ BOOL DoSoundsFlashPopupTrayStuff(SESSION_INFO *si, GCEVENT *gce, BOOL bHighlight
if (bHighlight) {
gce->pDest->iType |= GC_EVENT_HIGHLIGHT;
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatHighlight");
+ Skin_PlaySound("ChatHighlight");
if (db_get_b(si->hContact, "CList", "Hidden", 0) != 0)
db_unset(si->hContact, "CList", "Hidden");
if (bInactive)
@@ -306,28 +306,28 @@ BOOL DoSoundsFlashPopupTrayStuff(SESSION_INFO *si, GCEVENT *gce, BOOL bHighlight
switch (iEvent) {
case GC_EVENT_JOIN:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatJoin");
+ Skin_PlaySound("ChatJoin");
break;
case GC_EVENT_PART:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatPart");
+ Skin_PlaySound("ChatPart");
break;
case GC_EVENT_QUIT:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatQuit");
+ Skin_PlaySound("ChatQuit");
break;
case GC_EVENT_ADDSTATUS:
case GC_EVENT_REMOVESTATUS:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatMode");
+ Skin_PlaySound("ChatMode");
break;
case GC_EVENT_KICK:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatKick");
+ Skin_PlaySound("ChatKick");
break;
case GC_EVENT_MESSAGE:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatMessage");
+ Skin_PlaySound("ChatMessage");
if (bInactive && !(si->wState & STATE_TALK)) {
si->wState |= STATE_TALK;
@@ -338,19 +338,19 @@ BOOL DoSoundsFlashPopupTrayStuff(SESSION_INFO *si, GCEVENT *gce, BOOL bHighlight
break;
case GC_EVENT_ACTION:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatAction");
+ Skin_PlaySound("ChatAction");
break;
case GC_EVENT_NICK:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatNick");
+ Skin_PlaySound("ChatNick");
break;
case GC_EVENT_NOTICE:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatNotice");
+ Skin_PlaySound("ChatNotice");
break;
case GC_EVENT_TOPIC:
if (bInactive || !g_Settings->bSoundsFocus)
- SkinPlaySound("ChatTopic");
+ Skin_PlaySound("ChatTopic");
break;
}
}
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index a0addf8ff5..f810bb6e0e 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -453,3 +453,6 @@ Hotkey_Unsubclass @457
Hotkey_Check @458
?SetStatusText@CSrmmBaseDialog@@UAEXPB_WPAUHICON__@@@Z @459 NONAME
Srmm_SetStatusText @460
+Skin_AddSound @461
+Skin_PlaySound @462
+Skin_PlaySoundFile @463
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def
index 963f8cd9ad..ec9a39feb2 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -453,3 +453,6 @@ Hotkey_Unsubclass @457
Hotkey_Check @458
?SetStatusText@CSrmmBaseDialog@@UEAAXPEB_WPEAUHICON__@@@Z @459 NONAME
Srmm_SetStatusText @460
+Skin_AddSound @461
+Skin_PlaySound @462
+Skin_PlaySoundFile @463
diff --git a/src/mir_app/src/sounds.cpp b/src/mir_app/src/sounds.cpp
index 9775a42965..a6a964119f 100644
--- a/src/mir_app/src/sounds.cpp
+++ b/src/mir_app/src/sounds.cpp
@@ -53,7 +53,7 @@ static int CompareSounds(const SoundItem* p1, const SoundItem* p2)
static OBJLIST<SoundItem> arSounds(10, CompareSounds);
-///////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////
MIR_APP_DLL(void) KillModuleSounds(int _hLang)
{
@@ -66,66 +66,34 @@ MIR_APP_DLL(void) KillModuleSounds(int _hLang)
}
}
-///////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////
-HTREEITEM FindNamedTreeItemAtRoot(HWND hwndTree, const wchar_t* name)
-{
- wchar_t str[128];
- TVITEM tvi;
- tvi.mask = TVIF_TEXT;
- tvi.pszText = str;
- tvi.cchTextMax = _countof(str);
- tvi.hItem = TreeView_GetRoot(hwndTree);
- while (tvi.hItem != nullptr) {
- SendMessage(hwndTree, TVM_GETITEM, 0, (LPARAM)&tvi);
- if (!mir_wstrcmpi(str, name))
- return tvi.hItem;
-
- tvi.hItem = TreeView_GetNextSibling(hwndTree, tvi.hItem);
- }
- return nullptr;
-}
-
-static BOOL bModuleInitialized = FALSE;
static HANDLE hPlayEvent = nullptr;
-static INT_PTR ServiceSkinAddNewSound(WPARAM wParam, LPARAM lParam)
+MIR_APP_DLL(int) Skin_AddSound(const char *pszName, const wchar_t *pwszSection, const wchar_t *pwszDescription, const wchar_t *pwszDefaultFile, int _hLang)
{
- SKINSOUNDDESCEX *ssd = (SKINSOUNDDESCEX*)lParam;
- if (ssd->cbSize != sizeof(SKINSOUNDDESCEX) || ssd->pszName == nullptr || ssd->pszDescription == nullptr)
+ if (pszName == nullptr || pwszDescription == nullptr)
return 1;
SoundItem *item = new SoundItem; // due to OBJLIST
- item->name = mir_strdup(ssd->pszName);
+ item->name = mir_strdup(pszName);
item->ptszTempFile = nullptr;
- item->hLangpack = (int)wParam;
+ item->hLangpack = _hLang;
arSounds.insert(item);
- wchar_t *pwszDefaultFile;
- if (ssd->dwFlags & SSDF_UNICODE) {
- item->pwszDescription = mir_wstrdup(ssd->pwszDescription);
- item->pwszSection = mir_wstrdup((ssd->pszSection != nullptr) ? ssd->pwszSection : L"Other");
- pwszDefaultFile = mir_wstrdup(ssd->pwszDefaultFile);
- }
- else {
- item->pwszDescription = mir_a2u(ssd->pszDescription);
- item->pwszSection = mir_a2u((ssd->pszSection != nullptr) ? ssd->pszSection : "Other");
- pwszDefaultFile = mir_a2u(ssd->pszDefaultFile);
- }
+ item->pwszDescription = mir_wstrdup(pwszDescription);
+ item->pwszSection = mir_wstrdup((pwszSection != nullptr) ? pwszSection : L"Other");
if (pwszDefaultFile) {
- DBVARIANT dbv;
- if (db_get_s(0, "SkinSounds", item->name, &dbv))
+ ptrW wszSavedValue(db_get_wsa(0, "SkinSounds", item->name));
+ if (wszSavedValue == nullptr)
db_set_ws(0, "SkinSounds", item->name, pwszDefaultFile);
- else
- db_free(&dbv);
- mir_free(pwszDefaultFile);
}
return 0;
}
-static int SkinPlaySoundDefault(WPARAM wParam, LPARAM lParam)
+static int Skin_PlaySoundDefault(WPARAM wParam, LPARAM lParam)
{
wchar_t *pszFile = (wchar_t*) lParam;
if (pszFile && (db_get_b(0, "Skin", "UseSound", 0) || (int)wParam == 1))
@@ -134,25 +102,23 @@ static int SkinPlaySoundDefault(WPARAM wParam, LPARAM lParam)
return 0;
}
-static INT_PTR ServiceSkinPlaySoundFile(WPARAM, LPARAM lParam)
+MIR_APP_DLL(int) Skin_PlaySoundFile(const wchar_t *pwszFileName)
{
- wchar_t *ptszFileName = (wchar_t*)lParam;
- if (ptszFileName == nullptr)
+ if (pwszFileName == nullptr)
return 1;
wchar_t tszFull[MAX_PATH];
- PathToAbsoluteW(ptszFileName, tszFull);
+ PathToAbsoluteW(pwszFileName, tszFull);
NotifyEventHooks(hPlayEvent, 0, (LPARAM)tszFull);
return 0;
}
-static INT_PTR ServiceSkinPlaySound(WPARAM, LPARAM lParam)
+MIR_APP_DLL(int) Skin_PlaySound(const char *pszSoundName)
{
- char *pszSoundName = (char*)lParam;
if (pszSoundName == nullptr)
return 1;
- SoundItem tmp = { pszSoundName };
+ SoundItem tmp = { (char*)pszSoundName };
int idx = arSounds.getIndex(&tmp);
if (idx == -1)
return 1;
@@ -160,13 +126,12 @@ static INT_PTR ServiceSkinPlaySound(WPARAM, LPARAM lParam)
if (db_get_b(0, "SkinSoundsOff", pszSoundName, 0))
return 1;
- DBVARIANT dbv;
- if (db_get_ws(0, "SkinSounds", pszSoundName, &dbv) == 0) {
- ServiceSkinPlaySoundFile(0, (LPARAM)dbv.ptszVal);
- db_free(&dbv);
- return 0;
- }
- return 1;
+ ptrW wszFilePath(db_get_wsa(0, "SkinSounds", pszSoundName));
+ if (wszFilePath == nullptr)
+ return 1;
+
+ Skin_PlaySoundFile(wszFilePath);
+ return 0;
}
#define DM_REBUILD_STREE (WM_USER+1)
@@ -174,6 +139,24 @@ static INT_PTR ServiceSkinPlaySound(WPARAM, LPARAM lParam)
#define DM_SHOWPANE (WM_USER+3)
#define DM_CHECKENABLED (WM_USER+4)
+static HTREEITEM FindNamedTreeItemAtRoot(HWND hwndTree, const wchar_t* name)
+{
+ wchar_t str[128];
+ TVITEM tvi;
+ tvi.mask = TVIF_TEXT;
+ tvi.pszText = str;
+ tvi.cchTextMax = _countof(str);
+ tvi.hItem = TreeView_GetRoot(hwndTree);
+ while (tvi.hItem != nullptr) {
+ SendMessage(hwndTree, TVM_GETITEM, 0, (LPARAM)&tvi);
+ if (!mir_wstrcmpi(str, name))
+ return tvi.hItem;
+
+ tvi.hItem = TreeView_GetNextSibling(hwndTree, tvi.hItem);
+ }
+ return nullptr;
+}
+
INT_PTR CALLBACK DlgProcSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HWND hwndTree = nullptr;
@@ -474,14 +457,9 @@ static int SkinSystemModulesLoaded(WPARAM, LPARAM)
int LoadSkinSounds(void)
{
- bModuleInitialized = TRUE;
-
- CreateServiceFunction("Skin/Sounds/AddNew", ServiceSkinAddNewSound);
- CreateServiceFunction(MS_SKIN_PLAYSOUND, ServiceSkinPlaySound);
- CreateServiceFunction(MS_SKIN_PLAYSOUNDFILE, ServiceSkinPlaySoundFile);
HookEvent(ME_SYSTEM_MODULESLOADED, SkinSystemModulesLoaded);
hPlayEvent = CreateHookableEvent(ME_SKIN_PLAYINGSOUND);
- SetHookDefaultForHookableEvent(hPlayEvent, SkinPlaySoundDefault);
+ SetHookDefaultForHookableEvent(hPlayEvent, Skin_PlaySoundDefault);
return 0;
}