summaryrefslogtreecommitdiff
path: root/src/mir_app
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2017-09-12 12:14:57 +0300
committerGeorge Hazan <ghazan@miranda.im>2017-09-12 12:14:57 +0300
commit69409021aced78b31da0c9f2def7332a4c4b973e (patch)
tree3d9a6607f042acb8d44ece5f3fb08a4125a94e45 /src/mir_app
parente09448dd03e3647717166e92ee818e395041993a (diff)
Revert "Merge branch 'master' of https://github.com/miranda-ng/miranda-ng"
This reverts commit e09448dd03e3647717166e92ee818e395041993a, reversing changes made to b0f44b16bd1138de85a5d17bb42151742f9c8298.
Diffstat (limited to 'src/mir_app')
-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
6 files changed, 86 insertions, 70 deletions
diff --git a/src/mir_app/src/button.cpp b/src/mir_app/src/button.cpp
index a39b55e5ce..ba0b4e8714 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 98ea06b72c..1b31dae8f5 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);
- 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"));
+ 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"));
return 0;
}
diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp
index 1bffbfb6a3..2b0ccdde6b 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)
- Skin_PlaySound("ChatHighlight");
+ SkinPlaySound("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)
- Skin_PlaySound("ChatJoin");
+ SkinPlaySound("ChatJoin");
break;
case GC_EVENT_PART:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatPart");
+ SkinPlaySound("ChatPart");
break;
case GC_EVENT_QUIT:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatQuit");
+ SkinPlaySound("ChatQuit");
break;
case GC_EVENT_ADDSTATUS:
case GC_EVENT_REMOVESTATUS:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatMode");
+ SkinPlaySound("ChatMode");
break;
case GC_EVENT_KICK:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatKick");
+ SkinPlaySound("ChatKick");
break;
case GC_EVENT_MESSAGE:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatMessage");
+ SkinPlaySound("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)
- Skin_PlaySound("ChatAction");
+ SkinPlaySound("ChatAction");
break;
case GC_EVENT_NICK:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatNick");
+ SkinPlaySound("ChatNick");
break;
case GC_EVENT_NOTICE:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatNotice");
+ SkinPlaySound("ChatNotice");
break;
case GC_EVENT_TOPIC:
if (bInactive || !g_Settings->bSoundsFocus)
- Skin_PlaySound("ChatTopic");
+ SkinPlaySound("ChatTopic");
break;
}
}
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index f810bb6e0e..a0addf8ff5 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -453,6 +453,3 @@ 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 ec9a39feb2..963f8cd9ad 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -453,6 +453,3 @@ 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 a6a964119f..9775a42965 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,34 +66,66 @@ 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;
-MIR_APP_DLL(int) Skin_AddSound(const char *pszName, const wchar_t *pwszSection, const wchar_t *pwszDescription, const wchar_t *pwszDefaultFile, int _hLang)
+static INT_PTR ServiceSkinAddNewSound(WPARAM wParam, LPARAM lParam)
{
- if (pszName == nullptr || pwszDescription == nullptr)
+ SKINSOUNDDESCEX *ssd = (SKINSOUNDDESCEX*)lParam;
+ if (ssd->cbSize != sizeof(SKINSOUNDDESCEX) || ssd->pszName == nullptr || ssd->pszDescription == nullptr)
return 1;
SoundItem *item = new SoundItem; // due to OBJLIST
- item->name = mir_strdup(pszName);
+ item->name = mir_strdup(ssd->pszName);
item->ptszTempFile = nullptr;
- item->hLangpack = _hLang;
+ item->hLangpack = (int)wParam;
arSounds.insert(item);
- item->pwszDescription = mir_wstrdup(pwszDescription);
- item->pwszSection = mir_wstrdup((pwszSection != nullptr) ? pwszSection : L"Other");
+ 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);
+ }
if (pwszDefaultFile) {
- ptrW wszSavedValue(db_get_wsa(0, "SkinSounds", item->name));
- if (wszSavedValue == nullptr)
+ DBVARIANT dbv;
+ if (db_get_s(0, "SkinSounds", item->name, &dbv))
db_set_ws(0, "SkinSounds", item->name, pwszDefaultFile);
+ else
+ db_free(&dbv);
+ mir_free(pwszDefaultFile);
}
return 0;
}
-static int Skin_PlaySoundDefault(WPARAM wParam, LPARAM lParam)
+static int SkinPlaySoundDefault(WPARAM wParam, LPARAM lParam)
{
wchar_t *pszFile = (wchar_t*) lParam;
if (pszFile && (db_get_b(0, "Skin", "UseSound", 0) || (int)wParam == 1))
@@ -102,23 +134,25 @@ static int Skin_PlaySoundDefault(WPARAM wParam, LPARAM lParam)
return 0;
}
-MIR_APP_DLL(int) Skin_PlaySoundFile(const wchar_t *pwszFileName)
+static INT_PTR ServiceSkinPlaySoundFile(WPARAM, LPARAM lParam)
{
- if (pwszFileName == nullptr)
+ wchar_t *ptszFileName = (wchar_t*)lParam;
+ if (ptszFileName == nullptr)
return 1;
wchar_t tszFull[MAX_PATH];
- PathToAbsoluteW(pwszFileName, tszFull);
+ PathToAbsoluteW(ptszFileName, tszFull);
NotifyEventHooks(hPlayEvent, 0, (LPARAM)tszFull);
return 0;
}
-MIR_APP_DLL(int) Skin_PlaySound(const char *pszSoundName)
+static INT_PTR ServiceSkinPlaySound(WPARAM, LPARAM lParam)
{
+ char *pszSoundName = (char*)lParam;
if (pszSoundName == nullptr)
return 1;
- SoundItem tmp = { (char*)pszSoundName };
+ SoundItem tmp = { pszSoundName };
int idx = arSounds.getIndex(&tmp);
if (idx == -1)
return 1;
@@ -126,12 +160,13 @@ MIR_APP_DLL(int) Skin_PlaySound(const char *pszSoundName)
if (db_get_b(0, "SkinSoundsOff", pszSoundName, 0))
return 1;
- ptrW wszFilePath(db_get_wsa(0, "SkinSounds", pszSoundName));
- if (wszFilePath == nullptr)
- return 1;
-
- Skin_PlaySoundFile(wszFilePath);
- return 0;
+ DBVARIANT dbv;
+ if (db_get_ws(0, "SkinSounds", pszSoundName, &dbv) == 0) {
+ ServiceSkinPlaySoundFile(0, (LPARAM)dbv.ptszVal);
+ db_free(&dbv);
+ return 0;
+ }
+ return 1;
}
#define DM_REBUILD_STREE (WM_USER+1)
@@ -139,24 +174,6 @@ MIR_APP_DLL(int) Skin_PlaySound(const char *pszSoundName)
#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;
@@ -457,9 +474,14 @@ 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, Skin_PlaySoundDefault);
+ SetHookDefaultForHookableEvent(hPlayEvent, SkinPlaySoundDefault);
return 0;
}