From e80d75abbe7aac16793f16865071a61ede307bd8 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sat, 23 Jun 2012 16:34:13 +0000 Subject: ZeroNotification: renamed to .cpp git-svn-id: http://svn.miranda-ng.org/main/trunk@567 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/ZeroNotification/main.c | 299 -------------------------------------- plugins/ZeroNotification/main.cpp | 299 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 299 insertions(+), 299 deletions(-) delete mode 100644 plugins/ZeroNotification/main.c create mode 100644 plugins/ZeroNotification/main.cpp diff --git a/plugins/ZeroNotification/main.c b/plugins/ZeroNotification/main.c deleted file mode 100644 index 7104202c68..0000000000 --- a/plugins/ZeroNotification/main.c +++ /dev/null @@ -1,299 +0,0 @@ -/* -A small Miranda plugin, by bidyut, updated by Maat. - -Original plugin idea Anders Nilsson. -His plugin NoSound can be found at: -http://anders.nilsson.net/programs/miranda - -Miranda can be found here: -http://www.miranda-im.org/ -*/ - -#include "version.h" -#include "common.h" -#include "res\resource.h" - -HINSTANCE hInst; -PLUGINLINK *pluginLink; -static HANDLE hEventSoundSettingChange, hEventStatusModeChange, hEventOptionsInitialize, hAckEvent; -CLISTMENUITEM mi; -HGENMENU noSoundMenu; -int hLangpack; - -struct CheckBoxValues_t { - DWORD style; - TCHAR *szDescr; -}; - -static const struct CheckBoxValues_t statusValues[]={ - {PF2_ONLINE, TEXT("Online")}, - {PF2_SHORTAWAY, TEXT("Away")}, - {PF2_LONGAWAY, TEXT("NA")}, - {PF2_LIGHTDND, TEXT("Occupied")}, - {PF2_HEAVYDND, TEXT("DND")}, - {PF2_FREECHAT, TEXT("Free for chat")}, - {PF2_INVISIBLE, TEXT("Invisible")}, - {PF2_OUTTOLUNCH, TEXT("Out to lunch")}, - {PF2_ONTHEPHONE, TEXT("On the phone")} -}; - -PLUGININFOEX pluginInfoEx = { - sizeof(PLUGININFOEX), - PLUGINNAME, - PLUGIN_MAKE_VERSION(VER_MAJOR, VER_MINOR, VER_RELEASE, VER_BUILD), - DESCRIPTION, - AUTHOR, - "", - COPYRIGHT, - "", - UNICODE_AWARE, //not transient - 0, - UID -}; - -__declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfoEx; -} - -static const MUUID interfaces[] = { { 0x5ce6036a, 0x8cb5, 0x4601, { 0xbc, 0x7f, 0x25, 0x4e, 0x21, 0x2a, 0x48, 0x80 } }, MIID_LAST}; -__declspec(dllexport) const MUUID * MirandaPluginInterfaces(void) -{ - return interfaces; -} - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInst = hinstDLL; - return TRUE; -} - -static void FillCheckBoxTree(HWND hwndTree,const struct CheckBoxValues_t *values,int nValues,DWORD style) -{ - TVINSERTSTRUCT tvis; - int i; - - tvis.hParent=NULL; - tvis.hInsertAfter=TVI_LAST; - tvis.item.mask=TVIF_PARAM|TVIF_TEXT|TVIF_STATE; - for(i=0;i>12==2)) flags|=tvi.lParam; - tvi.hItem=TreeView_GetNextSibling(hwndTree,tvi.hItem); - } - return flags; -} - -//Update the name on the menu -static void UpdateMenuItem() { - if (DBGetContactSettingByte(NULL,"Skin","UseSound",1)) - mi.pszName= Translate(DISABLE_SOUND); - else - mi.pszName= Translate(ENABLE_SOUND); -} - -//Called when the sound setting in the database is changed -static int SoundSettingChanged(WPARAM wParam,LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; - if(lstrcmpA(cws->szModule, "Skin") || lstrcmpA(cws->szSetting, "UseSound")) return 0; - - UpdateMenuItem(); - - mi.flags = CMIM_NAME; - CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)noSoundMenu,(LPARAM)&mi); - - return 0; -} - -static int SetNotify(const long status){ - DBWriteContactSettingByte(NULL,"Skin","UseSound", (BYTE) !(DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",DEFAULT_NOSOUND) & status)); - DBWriteContactSettingByte(NULL,"CList","DisableTrayFlash", (BYTE) (DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",DEFAULT_NOBLINK) & status)); - DBWriteContactSettingByte(NULL,"CList","NoIconBlink", (BYTE) (DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",DEFAULT_NOCLCBLINK) & status)); - - UpdateMenuItem(); - - mi.flags = CMIM_NAME; - CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)noSoundMenu,(LPARAM)&mi); - - return 0; -} - -//Called whenever a change in status is detected -static int ProtoAck(WPARAM wParam, LPARAM lParam) -{ - ACKDATA *ack=(ACKDATA*)lParam; - PROTOCOLDESCRIPTOR **protos; - - //quit if not status event - if ( ack->type == ACKTYPE_STATUS && ack->result == ACKRESULT_SUCCESS ) { - long status = 0; - int i, count; - CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM) & count, (LPARAM) & protos); - - for (i = 0; i < count; i++) { - status = status | Proto_Status2Flag(CallProtoService(protos[i]->szName, PS_GETSTATUS, 0, 0)); - } - - SetNotify(status); - - return 0; - } - - return 0; -} - -static INT_PTR CALLBACK DlgProcNoSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) -{ - DWORD test; - switch (msg) - { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOSOUND),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOSOUND),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOBLINK),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOBLINK),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); - SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); - CheckDlgButton(hwndDlg, IDC_HIDEMENU, DBGetContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",1) ? BST_CHECKED : BST_UNCHECKED); - - FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOSOUND),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",DEFAULT_NOSOUND)); - FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOBLINK),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",DEFAULT_NOBLINK)); - FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",DEFAULT_NOCLCBLINK)); - return TRUE; - case WM_COMMAND: - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - case WM_NOTIFY: - switch(((LPNMHDR)lParam)->idFrom) { - case IDC_NOSOUND: - case IDC_NOBLINK: - case IDC_NOCLCBLINK: - if (((LPNMHDR)lParam)->code==NM_CLICK) { - TVHITTESTINFO hti; - hti.pt.x=(short)LOWORD(GetMessagePos()); - hti.pt.y=(short)HIWORD(GetMessagePos()); - ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); - if(TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) { - if(hti.flags&TVHT_ONITEMSTATEICON) { - TVITEM tvi; - tvi.mask=TVIF_HANDLE|TVIF_IMAGE|TVIF_SELECTEDIMAGE; - tvi.hItem=hti.hItem; - TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - tvi.iImage=tvi.iSelectedImage=tvi.iImage==1?2:1; - TreeView_SetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } - } - } - break; - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - DBWriteContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_HIDEMENU)); - - DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOSOUND))); - DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOBLINK))); - DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOCLCBLINK))); - - test = DBGetContactSettingWord(NULL,"CList","Status",0); - SetNotify(Proto_Status2Flag(DBGetContactSettingWord(NULL,"CList","Status",0))); - return TRUE; - } - break; - } - } - return FALSE; -} -//Called when the user opened the options dialog -static int OptionsInitialize(WPARAM wParam,LPARAM lParam) -{ - OPTIONSDIALOGPAGE odp = { 0 }; - odp.cbSize = sizeof(odp); - odp.position = 100000000; - odp.hInstance = hInst; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_NOSOUND); - odp.pszTitle = PLUGINNAME_SHORT; - odp.pszTitle = LPGEN("Zero Notifications"); - odp.pszGroup = LPGEN("Plugins"); - odp.groupPosition = 100000000; - odp.pfnDlgProc = DlgProcNoSoundOpts; - Options_AddPage(wParam, &odp); - - return 0; -} - -static INT_PTR NoSoundMenuCommand(WPARAM wParam,LPARAM lParam) -{ - if (DBGetContactSettingByte(NULL,"Skin","UseSound",1)) - DBWriteContactSettingByte(NULL,"Skin","UseSound",0); -// else -// DBWriteContactSettingByte(NULL,"Skin","UseSound",1); - - return 0; -} - -int __declspec(dllexport) Load(PLUGINLINK *link) -{ - char temp[80]; - pluginLink = link; - mir_getLP(&pluginInfoEx); - - CallService(MS_SYSTEM_GETVERSIONTEXT, (WPARAM)sizeof(temp), (LPARAM)temp); - - - if (strstr(temp, "Unicode") == NULL) - { - //ReportError(TranslateT("Please update "PLUGINNAME" to ANSI Version")); //debug - return 1; - } - - - //The menu item - begin - if (!DBGetContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",1)) - { - CreateServiceFunction(PLUGINNAME_SHORT "/MenuCommand",NoSoundMenuCommand); - ZeroMemory(&mi,sizeof(mi)); - mi.cbSize=sizeof(mi); - mi.position=-0x7FFFFFFF; - mi.flags=0; - UpdateMenuItem(); - - mi.pszService = PLUGINNAME_SHORT "/MenuCommand"; - noSoundMenu = Menu_AddMainMenuItem(&mi); - } - //The menu item - end - - - //The hooks - hAckEvent = HookEvent(ME_PROTO_ACK, ProtoAck); - hEventSoundSettingChange = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SoundSettingChanged); - hEventOptionsInitialize = HookEvent(ME_OPT_INITIALISE, OptionsInitialize); - - //Uninstall info - DBWriteContactSettingString(NULL,"Uninstall",PLUGINNAME_SHORT,PLUGINNAME_SHORT); - - return 0; -} - -int __declspec(dllexport) Unload(void) -{ - UnhookEvent(hEventSoundSettingChange); - UnhookEvent(hEventOptionsInitialize); - UnhookEvent(hAckEvent); - return 0; -} diff --git a/plugins/ZeroNotification/main.cpp b/plugins/ZeroNotification/main.cpp new file mode 100644 index 0000000000..7104202c68 --- /dev/null +++ b/plugins/ZeroNotification/main.cpp @@ -0,0 +1,299 @@ +/* +A small Miranda plugin, by bidyut, updated by Maat. + +Original plugin idea Anders Nilsson. +His plugin NoSound can be found at: +http://anders.nilsson.net/programs/miranda + +Miranda can be found here: +http://www.miranda-im.org/ +*/ + +#include "version.h" +#include "common.h" +#include "res\resource.h" + +HINSTANCE hInst; +PLUGINLINK *pluginLink; +static HANDLE hEventSoundSettingChange, hEventStatusModeChange, hEventOptionsInitialize, hAckEvent; +CLISTMENUITEM mi; +HGENMENU noSoundMenu; +int hLangpack; + +struct CheckBoxValues_t { + DWORD style; + TCHAR *szDescr; +}; + +static const struct CheckBoxValues_t statusValues[]={ + {PF2_ONLINE, TEXT("Online")}, + {PF2_SHORTAWAY, TEXT("Away")}, + {PF2_LONGAWAY, TEXT("NA")}, + {PF2_LIGHTDND, TEXT("Occupied")}, + {PF2_HEAVYDND, TEXT("DND")}, + {PF2_FREECHAT, TEXT("Free for chat")}, + {PF2_INVISIBLE, TEXT("Invisible")}, + {PF2_OUTTOLUNCH, TEXT("Out to lunch")}, + {PF2_ONTHEPHONE, TEXT("On the phone")} +}; + +PLUGININFOEX pluginInfoEx = { + sizeof(PLUGININFOEX), + PLUGINNAME, + PLUGIN_MAKE_VERSION(VER_MAJOR, VER_MINOR, VER_RELEASE, VER_BUILD), + DESCRIPTION, + AUTHOR, + "", + COPYRIGHT, + "", + UNICODE_AWARE, //not transient + 0, + UID +}; + +__declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfoEx; +} + +static const MUUID interfaces[] = { { 0x5ce6036a, 0x8cb5, 0x4601, { 0xbc, 0x7f, 0x25, 0x4e, 0x21, 0x2a, 0x48, 0x80 } }, MIID_LAST}; +__declspec(dllexport) const MUUID * MirandaPluginInterfaces(void) +{ + return interfaces; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + hInst = hinstDLL; + return TRUE; +} + +static void FillCheckBoxTree(HWND hwndTree,const struct CheckBoxValues_t *values,int nValues,DWORD style) +{ + TVINSERTSTRUCT tvis; + int i; + + tvis.hParent=NULL; + tvis.hInsertAfter=TVI_LAST; + tvis.item.mask=TVIF_PARAM|TVIF_TEXT|TVIF_STATE; + for(i=0;i>12==2)) flags|=tvi.lParam; + tvi.hItem=TreeView_GetNextSibling(hwndTree,tvi.hItem); + } + return flags; +} + +//Update the name on the menu +static void UpdateMenuItem() { + if (DBGetContactSettingByte(NULL,"Skin","UseSound",1)) + mi.pszName= Translate(DISABLE_SOUND); + else + mi.pszName= Translate(ENABLE_SOUND); +} + +//Called when the sound setting in the database is changed +static int SoundSettingChanged(WPARAM wParam,LPARAM lParam) +{ + DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; + if(lstrcmpA(cws->szModule, "Skin") || lstrcmpA(cws->szSetting, "UseSound")) return 0; + + UpdateMenuItem(); + + mi.flags = CMIM_NAME; + CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)noSoundMenu,(LPARAM)&mi); + + return 0; +} + +static int SetNotify(const long status){ + DBWriteContactSettingByte(NULL,"Skin","UseSound", (BYTE) !(DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",DEFAULT_NOSOUND) & status)); + DBWriteContactSettingByte(NULL,"CList","DisableTrayFlash", (BYTE) (DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",DEFAULT_NOBLINK) & status)); + DBWriteContactSettingByte(NULL,"CList","NoIconBlink", (BYTE) (DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",DEFAULT_NOCLCBLINK) & status)); + + UpdateMenuItem(); + + mi.flags = CMIM_NAME; + CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)noSoundMenu,(LPARAM)&mi); + + return 0; +} + +//Called whenever a change in status is detected +static int ProtoAck(WPARAM wParam, LPARAM lParam) +{ + ACKDATA *ack=(ACKDATA*)lParam; + PROTOCOLDESCRIPTOR **protos; + + //quit if not status event + if ( ack->type == ACKTYPE_STATUS && ack->result == ACKRESULT_SUCCESS ) { + long status = 0; + int i, count; + CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM) & count, (LPARAM) & protos); + + for (i = 0; i < count; i++) { + status = status | Proto_Status2Flag(CallProtoService(protos[i]->szName, PS_GETSTATUS, 0, 0)); + } + + SetNotify(status); + + return 0; + } + + return 0; +} + +static INT_PTR CALLBACK DlgProcNoSoundOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + DWORD test; + switch (msg) + { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOSOUND),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOSOUND),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); + SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOBLINK),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOBLINK),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); + SetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),GWL_STYLE,GetWindowLongPtr(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); + CheckDlgButton(hwndDlg, IDC_HIDEMENU, DBGetContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",1) ? BST_CHECKED : BST_UNCHECKED); + + FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOSOUND),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",DEFAULT_NOSOUND)); + FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOBLINK),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",DEFAULT_NOBLINK)); + FillCheckBoxTree(GetDlgItem(hwndDlg,IDC_NOCLCBLINK),statusValues,sizeof(statusValues)/sizeof(statusValues[0]),DBGetContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",DEFAULT_NOCLCBLINK)); + return TRUE; + case WM_COMMAND: + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case WM_NOTIFY: + switch(((LPNMHDR)lParam)->idFrom) { + case IDC_NOSOUND: + case IDC_NOBLINK: + case IDC_NOCLCBLINK: + if (((LPNMHDR)lParam)->code==NM_CLICK) { + TVHITTESTINFO hti; + hti.pt.x=(short)LOWORD(GetMessagePos()); + hti.pt.y=(short)HIWORD(GetMessagePos()); + ScreenToClient(((LPNMHDR)lParam)->hwndFrom,&hti.pt); + if(TreeView_HitTest(((LPNMHDR)lParam)->hwndFrom,&hti)) { + if(hti.flags&TVHT_ONITEMSTATEICON) { + TVITEM tvi; + tvi.mask=TVIF_HANDLE|TVIF_IMAGE|TVIF_SELECTEDIMAGE; + tvi.hItem=hti.hItem; + TreeView_GetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); + tvi.iImage=tvi.iSelectedImage=tvi.iImage==1?2:1; + TreeView_SetItem(((LPNMHDR)lParam)->hwndFrom,&tvi); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + } + } + break; + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_APPLY: + DBWriteContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",(BYTE)IsDlgButtonChecked(hwndDlg,IDC_HIDEMENU)); + + DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoSound",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOSOUND))); + DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoBlink",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOBLINK))); + DBWriteContactSettingDword(NULL,PLUGINNAME_SHORT,"NoCLCBlink",MakeCheckBoxTreeFlags(GetDlgItem(hwndDlg,IDC_NOCLCBLINK))); + + test = DBGetContactSettingWord(NULL,"CList","Status",0); + SetNotify(Proto_Status2Flag(DBGetContactSettingWord(NULL,"CList","Status",0))); + return TRUE; + } + break; + } + } + return FALSE; +} +//Called when the user opened the options dialog +static int OptionsInitialize(WPARAM wParam,LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + odp.cbSize = sizeof(odp); + odp.position = 100000000; + odp.hInstance = hInst; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_NOSOUND); + odp.pszTitle = PLUGINNAME_SHORT; + odp.pszTitle = LPGEN("Zero Notifications"); + odp.pszGroup = LPGEN("Plugins"); + odp.groupPosition = 100000000; + odp.pfnDlgProc = DlgProcNoSoundOpts; + Options_AddPage(wParam, &odp); + + return 0; +} + +static INT_PTR NoSoundMenuCommand(WPARAM wParam,LPARAM lParam) +{ + if (DBGetContactSettingByte(NULL,"Skin","UseSound",1)) + DBWriteContactSettingByte(NULL,"Skin","UseSound",0); +// else +// DBWriteContactSettingByte(NULL,"Skin","UseSound",1); + + return 0; +} + +int __declspec(dllexport) Load(PLUGINLINK *link) +{ + char temp[80]; + pluginLink = link; + mir_getLP(&pluginInfoEx); + + CallService(MS_SYSTEM_GETVERSIONTEXT, (WPARAM)sizeof(temp), (LPARAM)temp); + + + if (strstr(temp, "Unicode") == NULL) + { + //ReportError(TranslateT("Please update "PLUGINNAME" to ANSI Version")); //debug + return 1; + } + + + //The menu item - begin + if (!DBGetContactSettingByte(NULL,PLUGINNAME_SHORT,"HideMenu",1)) + { + CreateServiceFunction(PLUGINNAME_SHORT "/MenuCommand",NoSoundMenuCommand); + ZeroMemory(&mi,sizeof(mi)); + mi.cbSize=sizeof(mi); + mi.position=-0x7FFFFFFF; + mi.flags=0; + UpdateMenuItem(); + + mi.pszService = PLUGINNAME_SHORT "/MenuCommand"; + noSoundMenu = Menu_AddMainMenuItem(&mi); + } + //The menu item - end + + + //The hooks + hAckEvent = HookEvent(ME_PROTO_ACK, ProtoAck); + hEventSoundSettingChange = HookEvent(ME_DB_CONTACT_SETTINGCHANGED, SoundSettingChanged); + hEventOptionsInitialize = HookEvent(ME_OPT_INITIALISE, OptionsInitialize); + + //Uninstall info + DBWriteContactSettingString(NULL,"Uninstall",PLUGINNAME_SHORT,PLUGINNAME_SHORT); + + return 0; +} + +int __declspec(dllexport) Unload(void) +{ + UnhookEvent(hEventSoundSettingChange); + UnhookEvent(hEventOptionsInitialize); + UnhookEvent(hAckEvent); + return 0; +} -- cgit v1.2.3