From 274cffbbffa950ddf286092b52f03f76ec61a301 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 11 Sep 2012 19:28:53 +0000 Subject: slightly refactored MRA git-svn-id: http://svn.miranda-ng.org/main/trunk@1564 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/MRA/Mra.cpp | 394 ++++++++++++-------------------------------------- 1 file changed, 93 insertions(+), 301 deletions(-) (limited to 'protocols/MRA/Mra.cpp') diff --git a/protocols/MRA/Mra.cpp b/protocols/MRA/Mra.cpp index 0fefddf18e..92a361ce61 100644 --- a/protocols/MRA/Mra.cpp +++ b/protocols/MRA/Mra.cpp @@ -1,379 +1,171 @@ #include "Mra.h" - MRA_SETTINGS masMraSettings; int hLangpack; -PLUGININFOEX pluginInfoEx={ - sizeof(PLUGININFOEX), - PROTOCOL_DISPLAY_NAME_ORIGA, - PLUGIN_VERSION_DWORD, - "Provides support for Mail.ru agent Instant Messenger protocol.", - "Rozhuk Ivan", - "Rozhuk_I@mail.ru", - "© 2006-2011 Rozhuk Ivan", - "http://miranda-ng.org/", - UNICODE_AWARE, +PLUGININFOEX pluginInfoEx = { + sizeof(PLUGININFOEX), + PROTOCOL_DISPLAY_NAME_ORIGA, + __VERSION_DWORD, + "Provides support for Mail.ru agent Instant Messenger protocol.", + "Rozhuk Ivan", + "Rozhuk_I@mail.ru", + "© 2006-2011 Rozhuk Ivan", + "http://miranda-ng.org/", + UNICODE_AWARE, // {E7C48BAB-8ACE-4CB3-8446-D4B73481F497} { 0xe7c48bab, 0x8ace, 0x4cb3, { 0x84, 0x46, 0xd4, 0xb7, 0x34, 0x81, 0xf4, 0x97 } } }; -int OnModulesLoaded (WPARAM wParam,LPARAM lParam); -int OnPreShutdown (WPARAM wParam,LPARAM lParam); -void VersionConversions (); - +int OnModulesLoaded (WPARAM wParam, LPARAM lParam); +int OnPreShutdown (WPARAM wParam, LPARAM lParam); -BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID Reserved) +BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID Reserved) { - switch(dwReason){ + switch (dwReason) { case DLL_PROCESS_ATTACH: - bzero(&masMraSettings,sizeof(masMraSettings)); - masMraSettings.hInstance=hInstance; - masMraSettings.hHeap=HeapCreate(0,0,0);//GetProcessHeap(); - masMraSettings.bLoggedIn=FALSE; - masMraSettings.dwStatusMode=ID_STATUS_OFFLINE; - masMraSettings.dwDesiredStatusMode=ID_STATUS_OFFLINE; - DisableThreadLibraryCalls((HMODULE)hInstance); + bzero(&masMraSettings, sizeof(masMraSettings)); + masMraSettings.hInstance = hInstance; + masMraSettings.hHeap = HeapCreate(0, 0, 0);//GetProcessHeap(); + DisableThreadLibraryCalls(hInstance); break; + case DLL_PROCESS_DETACH: HeapDestroy(masMraSettings.hHeap); - masMraSettings.hHeap=NULL; - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - break; + masMraSettings.hHeap = NULL; } - return(TRUE); + return TRUE; } -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_PROTOCOL,MIID_LAST}; +extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = {MIID_PROTOCOL, MIID_LAST}; extern "C" MRA_API PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) { - return(&pluginInfoEx); + return &pluginInfoEx; } -extern "C" MRA_API int Load(void) +/////////////////////////////////////////////////////////////////////////////// +// Protocol instances + +static int sttCompareProtocols(const CMraProto *p1, const CMraProto *p2) { - SIZE_T dwBuffLen; - WCHAR szBuff[MAX_FILEPATH]; - LPSTR lpszFullFileName=(LPSTR)szBuff; - LPWSTR lpwszFileName; - PROTOCOLDESCRIPTOR pd={0}; + return lstrcmp(p1->m_tszUserName, p2->m_tszUserName); +} +LIST g_Instances(1, sttCompareProtocols); - mir_getLP(&pluginInfoEx); +/////////////////////////////////////////////////////////////////////////////// +static CMraProto* mraProtoInit(const char* pszProtoName, const TCHAR* tszUserName) +{ + CMraProto *ppro = new CMraProto( pszProtoName, tszUserName ); + g_Instances.insert(ppro); + return ppro; +} - // Get module name from DLL file name - if (GetModuleFileName(masMraSettings.hInstance,szBuff,MAX_FILEPATH)) - { - WCHAR sztmBuff[MAX_FILEPATH]; - if ((dwBuffLen=GetFullPathName(szBuff,MAX_FILEPATH,sztmBuff,&lpwszFileName))) - { - dwBuffLen=(lstrlenW(lpwszFileName)-4); - //lpwszFileName=L"MRA.dll"; - //dwBuffLen=3; - masMraSettings.dwModuleNameLen=(dwBuffLen